Вопрос № 94591: Здравствуйте коллеги.
Подскажите такую вещь, есть ли внешне компоненты для 1С при помощи которых можно было бы работать файлами Exel как например с текстовымим или *.dbf.
Если таковые имеются буду очень благодарен за ссылку на них....Вопрос № 94599: Уважаемые эксперты подскажите пожалуста.
Есть ли какие-то компоненты Для работы с RAR архивами через 1С 7.7.
Если есть будь те так добры ссылочку или название...Вопрос № 94617: Добрый день! Подскажыте пожалуйста как можно организовать систему синхронизации БД через интернет, или онлайн режим доступа к одной ИБ с двух разних концов страны. Думал сделать через УРБД, но монопольный режим не подходит, так как очень много пользо...Вопрос № 94661: Доброго времени суток . Помогите а то бошка уже кругом идёт . Как собрать данные из ТЗ
в XLS (1C комлексная 7.7)...Вопрос № 94671: Добрый день!
Можно ли для списка документов добавить отбор по значениям в табличной части документа?
Заранее большое спасибо! (Пишу в 1С:Предприятии 8)...Вопрос № 94717: Подскажите как подключить сканер Штрих-Кода в конфигурации ИТРП: Производственная конфигурация 2002 Стандарт. т.к. в данной конфиге нет обработки для подключения в отличии от 1С ТиС....
Вопрос № 94.591
Здравствуйте коллеги.
Подскажите такую вещь, есть ли внешне компоненты для 1С при помощи которых можно было бы работать файлами Exel как например с текстовымим или *.dbf.
Если таковые имеются буду очень благодарен за ссылку на них.
Отвечает: Strawberry
Здравствуйте, Трифанюк Александр Дмитриевич!
Имеются подключаем Excel как внешннее преложение и пользуя basic пользуем данные ячеек
Например:
Попытка
Excel = СоздатьОбъект("Excel.Application");
Исключение
Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.","!");
Возврат;
КонецПопытки;
Excel.Workbooks.Open(Сокрлп(ИмяФайла));
Книга = Excel.ActiveWorkbook;
//
Строк = Excel.Cells.CurrentRegion.Rows.Count;
//
Для ТекСтрока = 1 По Строк Цикл
СуммаБезНДС = Число(Excel.Cells(ТекСТрока, СтлбСуммаБезНДС).Value);
Ед = ВРЕГ(Строка(Excel.Cells(ТекСТрока, СтлбЕд).Value));
КонецЦикла;
Удачи в начинаниях
--------- Мальчик-извращенец прочел деду Морозу с табуретки всего Пастернака!
Ответ отправил: Strawberry (статус: 8-ой класс)
Ответ отправлен: 10.07.2007, 12:39 Оценка за ответ: 5 Комментарий оценки: Очень корошо просто очень. VB я знаю.
Отвечает: DERL.KG
Здравствуйте, Трифанюк Александр Дмитриевич!
Я не слышал о таких компонентах, поскольку 1С сама может обращаться к файлам Еxcell через OLE.
objExcel = CreateObject("Excel.Application");
objExcel.Visible = 0;
objExcel.Workbooks.Open("C:111.xls");
...
и т.д.
а изучить объектную модель Excell можете в справке VBA, либо этим способом
http://www.kb.mista.ru/article.php?id=382
Ответ отправил: DERL.KG (статус: 4-ый класс)
Ответ отправлен: 10.07.2007, 13:30 Оценка за ответ: 5 Комментарий оценки: Спасибо мне уже подсказали.
Отвечает: Катунин Роман Владимирович
Здравствуйте, Трифанюк Александр Дмитриевич!
Для работы с файлами Excel никакая внешняя компонента не нужна. С Word Excel и другими компонентами Office работуют средствами OLE. Инициализации OLE-объекта Excel из 1с осуществляется созданием объекта "Excel.Application" .
МодЕкс = СоздатьОбъект("Excel.Application");
Вся работа с Excel в 1с проводится методами и свойстваи VBA.
А внешних компонент думаю не существует.
Ответ отправил: Катунин Роман Владимирович (статус: 1-ый класс)
Ответ отправлен: 10.07.2007, 16:40 Оценка за ответ: 5 Комментарий оценки: Спасибо уже знаю
Отвечает: Dmitry Stashenko
Здравствуйте, Трифанюк Александр Дмитриевич!
Так не нужны внешние компоненты. Достаточно подключить объект Excel и работать с ним.
Получение данных из Excel.
Доступ из 1С к Excel производится посредством OLE. Например, код
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
позволит нам получить доступ через переменную "Эксель" к запущенному приложению Excel. А далее уже можно получить доступ к книге (файлу), листу и ячейке с данными. Далее примеры кода.
Открытие книги (файла):
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
ПутьКФайлу - полный путь к файлу книги Excel.
Выбор листа книги для работы с ним:
Лист = Книга.WorkSheets(НомерЛиста);
или
Лист = Книга.WorkSheets(ИмяЛиста);
НомерЛиста - номер листа в книге, ИмяЛиста - имя листа в книге.
Получение значения ячейки листа:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
Важно: не забывайте поле выполнения нужных действий добавлять код Эксель.Quit(); , иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.
Вывод данных в Excel.
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Открытие существующей книги описано выше, а для создания новой книги нужно использовать следующий код:
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();
Так как при создании книги в Excel автоматически создаются листы (Сервис->Параметры->Общие->Листов в новой книге), то нужно лишь произвести выбор листа, с которым будет вестись работа:
Лист = Книга.WorkSheets(НомерЛиста);
либо добавить в книгу новый лист, если необходимо:
Лист = Книга.Sheets.Add();
Следующим шагом будет установка значения ячейки:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
И в конце нужно произвести запись созданной книги:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
ПутьКФайлу - полный путь к файлу книги Excel (включая имя).
Важно: не забывайте, что в имени файлов не должно содержаться символов / : * ? " > < |.
Ответ отправил: Dmitry Stashenko (статус: 6-ой класс)
Ответ отправлен: 11.07.2007, 10:18
Вопрос № 94.599
Уважаемые эксперты подскажите пожалуста.
Есть ли какие-то компоненты Для работы с RAR архивами через 1С 7.7.
Если есть будь те так добры ссылочку или название
Отправлен: 10.07.2007, 13:32
Вопрос задал: Vikentiev (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: DERL.KG
Здравствуйте, Vikentiev!
Опять вам нужны компоненты...
Зачем компоненты, когда 1С может выполнять командную строку с помощью процедуры КомандаСистемы()
а RAR может работать в командном (консольном) режиме.
Справку по консольному режиму почитайте в файле rar.txt (User's Manual 32-bit console version)
Затем формируйте командную строку с нужными вам параметрами.
К примеру
КомандаСистемы("Rar.exe m -ag[DDMMYYYY] -ep1 -pэтопароль -sfx Архив ФайлДляАрхивирования.txt");
Ответ отправил: DERL.KG (статус: 4-ый класс)
Ответ отправлен: 10.07.2007, 13:49 Оценка за ответ: 5 Комментарий оценки: Приятно было прочитать "Опять вам нужны компоненты..." Очень нравится работать с FORMEX. А с КомандаСистемы() еще не разбирался. Буду Пробовать. Спасибо за ответ
Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Vikentiev!
Можно использовать:
КомандаСистемы("Строка команды") - запускает команду через DOS
или
ЗапуститьПриложение("СтрокаКоманды") - запуск приложения выполняется непосредственно, минуя командный интерпретатор
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 9-ый класс)
Ответ отправлен: 10.07.2007, 13:58 Оценка за ответ: 4 Комментарий оценки: спасибо
Ну что ж вы все так любите внешние компоненты :) А чем не подходит КомандаСистемы()? Запускаетет rar.exe с ключиками командной строки, и все.
Удачи.
Ответ отправил: Dmitry Stashenko (статус: 6-ой класс)
Ответ отправлен: 11.07.2007, 10:21 Оценка за ответ: 4 Комментарий оценки: Спасибо что откликнулись.
Вопрос № 94.617
Добрый день! Подскажыте пожалуйста как можно организовать систему синхронизации БД через интернет, или онлайн режим доступа к одной ИБ с двух разних концов страны. Думал сделать через УРБД, но монопольный режим не подходит, так как очень много пользователей(может кто знает как отключить монопольний при автообмене). Помогите пожалуйста!
Отправлен: 10.07.2007, 15:19
Вопрос задал: WSubchak (статус: Посетитель)
Всего ответов: 7 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Андрей Тимофеев
Здравствуйте, WSubchak!
Монопольный режим необходим только в том случае если вы меня в центральной базе конфигурацию и загружаете ее в перефирийную случае загрузки одних лишь данных в монопольный режиме нет необходимости.
Удачи.
Ответ отправил: Андрей Тимофеев (статус: 4-ый класс)
Ответ отправлен: 10.07.2007, 15:27 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: DERL.KG
Здравствуйте, WSubchak!
Если скорость интернета хорошая на обоих концах,
то открывать VPN и через терминалку...
Ответ отправил: DERL.KG (статус: 4-ый класс)
Ответ отправлен: 10.07.2007, 15:29 Оценка за ответ: 4 Комментарий оценки: Очень признателен за ответ, но сис.админ говорит, що ето не самий оптимальный вариант: разные провайдеры, возможны потери даних, и если в цент. офисе проблемы - вся работа стоит у всех.
Отвечает: Татьяна Ласовская
Здравствуйте, WSubchak!
По поводу VPN и терминалки - работали полгода: центральный офис Беларусь, второй - Крым, без выходных, 12-часовой рабочий день. Все нормально, потерь данных не было, работало как часики, несмотря на то, что разные провайдеры. Простои были только в связи с пропаданием интернета в Крыму, но это проблемы провайдера.
Чтобы окончательно определиться, вам надо ответить для себя на вопрос: нужно ли обеим вашим точкам актуальное состояние базы в любой момент времени?
Этот вопрос самый главный, а не мнение сисадмина, которого ради интересов дела можно и поменять (ИМХО "разные провайдеры, возможны потери данных" - это отмазки и нежелание (неумение?) работать). Если ответ "ДА" - то ваш вариант только VPN и терминалка. А проблема "если в цент. офисе проблемы - вся работа стоит у всех" - решается установкой резервного сервера и его соответствующей настройкой.
С моей точки зрения вариант с УРИБ менее предпочтителен и в том случае, если ведутся работы по настройке конфигурации. Возможно, я предвзято отношусь к УРИБ, но считаю, что если есть возможность использовать VPN и терминалку - то надо этот способ и выбирать. Работа в реальном режиме времени с базой, минимум проблем с внесением изменений в конфигурацию - я думаю, это все же лучше, чем дискретный обмен информацией, да и работает УРИБ не идеально, сбои бывают, знаю по собственному опыту.
Ответ отправила: Татьяна Ласовская (статус: 7-ой класс)
Ответ отправлен: 10.07.2007, 16:20 Оценка за ответ: 5 Комментарий оценки: Спасибо за очень раскрытый ответ. Наверно ето самое подходяще решение, тем более что я ОЧЕНЬ часто модифицирую конфу. Канал есть, сервера тоже не проблема, будем двигатся в етом направление!
Отвечает: Катунин Роман Владимирович
Здравствуйте, WSubchak!
При наличии стабильного инетканала возможно организовать терминальный доступ к базе 1с и не только к ней. За неимением такого канала синхронизацию придется писать самому. Формат пересылаемых данных зависит только от вашего выбора (txt, XML, DBF). Для УРБД однозначно необходим монопольный режим и отключить его возможности нет. Для репликации баз данных существует довольно распространенная разработка под названием МОД (менеджер обмена данными). Он может работает, если я не ошибаюсь и в не монопольном режиме.
Ответ отправил: Катунин Роман Владимирович (статус: 1-ый класс)
Ответ отправлен: 10.07.2007, 16:48 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ!
Отвечает: Натаров Петр Леонидович
Здравствуйте, WSubchak!
Монопольный режим требуется только тогда, когда изменилась конфигурация. А если обмениваешься только данными, никого выкидывать не надо
Ответ отправил: Натаров Петр Леонидович (статус: 1-ый класс)
Ответ отправлен: 10.07.2007, 17:31 Оценка за ответ: 4 Комментарий оценки: Спасибо!
Отвечает: Ромашов Евгений Николаевич
Здравствуйте, WSubchak!
в 7.7 если мне память не изменяет только через монопольный режим,
вроде бы в 8.1 обмен возможен в момент выполнения программы
Ответ отправил: Ромашов Евгений Николаевич (статус: 3-ий класс)
Ответ отправлен: 11.07.2007, 05:04 Оценка за ответ: 3 Комментарий оценки: Да нет, в 7.7 обмен даными возможен без монопольного а в раздельном, но мне ето не подходит так как я часто меняю конфу.
А что конкретно надо сделать? В смысле, есть центральная база, и есть куча локальных баз, растыканых по всей стране? И надо организовать слив информации из локалок в общую? Если да, то можно попробовать по фтп или хттп протоколам. То есть локально пользователь формирует документ (элемент справочника и т.д., все, что нужно для отправки) и по кнопочке какой (или прямо в процедуре ПриЗакрытии() ) осуществляется пересылка. В каком виде - решать вам, можно dbf, можно xml. А в центральной базе по кнопочке принять
( или опять таки ПриНачалеРаботыСистемы() или в ОбработкеОжидания() ) принимаются данные из присланных файликов.
Если заинтересовало, могу конкретно примеры дать, у меня такая база рабочая есть. Есть база центрального офиса и база магазина. Они абсолютно разные. Залив доков, справочников и т.д. происходит выше описанным способом. Причем раньше работали по фтп, теперь по хттп. Понадежней, как оказалось.
Удачи
Ответ отправил: Dmitry Stashenko (статус: 6-ой класс)
Ответ отправлен: 11.07.2007, 10:32 Оценка за ответ: 4 Комментарий оценки: Очень хорошое решение, но боюсь будут глюки, когда пользователя на разних концах базы продают тот самый товар.
Вопрос № 94.661
Доброго времени суток . Помогите а то бошка уже кругом идёт . Как собрать данные из ТЗ в XLS (1C комлексная 7.7)
Отвечает: Татьяна Ласовская
Здравствуйте, Скиридомов Андрей Викторович!
Саыме простой вариант - написать маленький отчетик с выводом ТЗ, а затем результат отчетика сохранить в формате XLS.
Еще можно ТЗ выгружать в CSV-файл с разделителями-запятыми (построчно) - это обычный текстовый файл, который Excel распознает и открывает.
Если нужно строго в формат XLS - тогда только через OLE с использованием VBA for applications.
Ответ отправила: Татьяна Ласовская (статус: 7-ой класс)
Ответ отправлен: 10.07.2007, 21:29
Отвечает: DERL.KG
Здравствуйте, Скиридомов Андрей Викторович!
Тут возможны 3 варианта:
1) Создать отчет из ТЗ и программно сохранить в эксель.
2) Работать с эксель через ОЛЕ (наиболее сложный вариант)
3) Найти в инете внешнюю компоненту Admin1C.dll, в ней есть процедура которая сохраняет ТЗ в XLS (если не найдете, могу выслать дайте тока адрес)
Удачи...
Ответ отправил: DERL.KG (статус: 4-ый класс)
Ответ отправлен: 11.07.2007, 07:58
Отвечает: Dmitry Stashenko
Здравствуйте, Скиридомов Андрей Викторович!
Чего надо сделать-то? Есть таблица значений, и надо из нее выгрузить данные в Excel ? Тогда можно либо сформировать обычную печатную форму и сохранить ее как xls, либо выгрузить данные прямо в excel.
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Открытие существующей книги описано выше, а для создания новой книги нужно использовать следующий код:
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();
Так как при создании книги в Excel автоматически создаются листы (Сервис->Параметры->Общие->Листов в новой книге), то нужно лишь произвести выбор листа, с которым будет вестись работа:
Лист = Книга.WorkSheets(НомерЛиста);
либо добавить в книгу новый лист, если необходимо:
Лист = Книга.Sheets.Add();
Следующим шагом будет установка значения ячейки:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
И в конце нужно произвести запись созданной книги:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
ПутьКФайлу - полный путь к файлу книги Excel (включая имя).
Важно: не забывайте, что в имени файлов не должно содержаться символов / : * ? " > < |.
Ответ отправил: Dmitry Stashenko (статус: 6-ой класс)
Ответ отправлен: 11.07.2007, 10:42
Вопрос № 94.671
Добрый день!
Можно ли для списка документов добавить отбор по значениям в табличной части документа?
Заранее большое спасибо! (Пишу в 1С:Предприятии 8)
Отвечает: Яна
Здравствуйте, Petrov Stas!
Это можно сделать с помощью запроса. Найти все номера (или ссылки) документов, которые удовлетворяют условию по строке табличной части, а затем установить отбор по номеру (ссылке).
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 10.07.2007, 22:06 Оценка за ответ: 3
Отвечает: Ромашов Евгений Николаевич
Здравствуйте, Petrov Stas!
критерий отбора надо попробывать сделать
Ответ отправил: Ромашов Евгений Николаевич (статус: 3-ий класс)
Ответ отправлен: 11.07.2007, 05:01 Оценка за ответ: 1
Вопрос № 94.717
Подскажите как подключить сканер Штрих-Кода в конфигурации ИТРП: Производственная конфигурация 2002 Стандарт. т.к. в данной конфиге нет обработки для подключения в отличии от 1С ТиС.
Отвечает: svsrus
Здравствуйте, Емельянов Андрей Александрович!
Зависит от модели сканера ШК, как подключается и т.д. Чтобы "привинтить" сканер ШК к 1С, нужен драйвер, который загружается в 1С как внешняя компонента (ВК). Наиболее распространенные драйверы для работы со сканерами от Атола (www.atol.ru)и Штрих-М (www.shtrih-m.ru). Драйвера можете скачать с указанных сайтов. Вместе с ними идут примеры подключения сканера к 1С. Я лично предпочитаю атоловские драйвера. Выбор конечно за Вами.
Подключаем ВК в глобальном модуле (Атол):
/// Подключаем Атоловский драйвер для сканера штрих-кода
Если НазваниеИнтерфейса() = "Касса" Тогда
Если ЗагрузитьВнешнююКомпоненту("Scaner1C.DLL")<>0 Тогда
Scaner = СоздатьОбъект("AddIn.Scaner45"); // Создание объекта сканера из внешней компоненты
Scaner.УстройствоВключено = 1;
Scaner.АвтоВыключение = 1;
Scaner.ПосылкаДанных = 1;
Scaner.СтараяВерсия = 0;
Иначе
Сообщить("Внешняя компонента сканера штрих-кода - Scaner1C.DLL не найдена.
|Работа со сканером штрих-кода не возможна.
|Обратитесь к программисту.");
КонецЕсли;
КонецЕсли;
Теперь события от сканера будут доступны из метода ОбработкаВнешнегоСобытия() в глобальном модуле:
// Процедура обработки данных от сканнера ШК
//
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные);
Scaner.EventNumber=Число(Данные);
Scaner.УстройствоВключено = 0;
ОткрытьФормуМодально("Отчет",Scaner.Данные,"ExtFormsКассаОплата.ert");// Открываем форму, куда передаем данные со сканера ШК
Scaner.УстройствоВключено = 1;
Scaner.УдалитьСообщение();
Scaner.ПосылкаДанных = 1;
КонецПроцедуры
Подробно примеры рассмотрены в тестовой конфигурации идущей с драйверами.
Ответ отправил: svsrus (статус: 6-ой класс)
Ответ отправлен: 11.07.2007, 10:32
Отвечает: Dmitry Stashenko
Здравствуйте, Емельянов Андрей Александрович!
Сканеры разные бывают. У нас например подключается в клавиатурный разъем, а уже в него подключается клавиатура. То есть он работает как стандартное устройство ввода. Соответственно абсолютно никаких дополнительных штуковин не надо. Конкретизируйте, пожалуйста, ваш вариант, постараемся помочь.
Ответ отправил: Dmitry Stashenko (статус: 6-ой класс)
Ответ отправлен: 11.07.2007, 10:46