Обмен данными РИБ средствами COMConnector (файловый вариант ИБ)

10.09.15

Разработка - Инструментарий разработчика

Долгое время искал решение, которое позволило бы выполнять обмен данными на периферийном узле, без запуска отдельного сеанса. Дело даже не в отдельном сеансе, а в постоянно мешающем окошке, которое нельзя свернуть.
Эта публикация - итог не продолжительных экспериментов с COMConnector и JS.
* Вторая версия реализована на AutoIT

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Скрипт обмена РИБ
.js 9,07Kb ver:1.1
56
56 Скачать (1 SM) Купить за 1 850 руб.
Архив (версия 2)
.zip 434,82Kb ver:2
4
4 Скачать (1 SM) Купить за 1 850 руб.
Архив (версия 2) для платформы x64
.zip 463,59Kb ver:2
5
5 Скачать (1 SM) Купить за 1 850 руб.

Суть скрипта проста: подключиться к ИБ (с использованием COMConnector) и выполнить обмен данными. Никаких лишних окон не открывается, обмен выполняется быстро.  Кассы построены на Intel Atom D2500HN с 2Гб ОЗУ; скрипт на такой кассе выполняется ~12 сек (в зависимости от размера сообщений). 

Предполагалось использовать в планировщике заданий Windows. Можно выставить расписание в малым интервалом времени. При этом скрипт самостоятельно будет отслеживать собственную активность. Повторый запуск скрипта прервется сразу, если не завершен предыдуший процесс.

Скрипт пишет подробный лог выполняемых действий в отдельный файл. Предусмотрено перемещение лога "в архив" при достижении размера лог-файла определенного размера (по-умолчанию 512000 байт).

Общее описание алгоритма работы:

  1. Скрипт запускается;
  2. Проверяет: завершен ли предыдущий сеанс работы или нет. Если завершен, скрипт продолжит работу. Иначе - прекращаем какие-либо дальнейшие действия, останавливаем скрипт;
  3. Подключается к ИБ (с использованием COMConnector);
  4. Выполняет процедуры обмена (по узлам плана обмена ПоМагазину);
  5. Отключается от базы;

В боевой работе не долго, всего пару дней. Ошибок не появлялось.

Продавцы довольны - нет лишних окошек на экране. Управленцы и финансовая служба - счастливы; сведения с периферии приходят вовремя.

Настроить скрипт просто. Откройте файл скрипта с помощью любого текстового редактора и укажите свои настройки:

  1. cRetailIB_ConnSTR - строка подключения к периферийной ИБ. Укажите путь к базе, имя пользователя и пароль;
  2. iLogMaxSize - параметр, указывающий на максимальный размер лог-файла (в байтах).
  3. sLogfileName - имя лог-файла (можете заменить на другое, которое больше нравится). 

Скрипт должен находится в папке, в которую имеет доступ пользователь, от имено которого будет закускаться задание (задается в планировщике Windows). Лог-файл будет создаваться в той же папке.

Обновление от 11.09.2013. Добавлена обработка ошибок при установке соединения с ИБ. 

Обновление от 10.09.2015. Полностью переработан скрипт.
Реализован на AutoIT. В первой версии не хватало информативности для пользователя и кое каких сервисных функций.

Функции скрипта (версия 2):

  • Запуск процедуры ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы;
  • Проверка на обновление конфигурации БД;
  • Применение изменений конфигурации БД;
  • Информирование пользователя (показывает текущее состояние);
  • Работа с параметрами командной строки;
  • Настройка через файл *.ini;
  • Самостоятельно определяет возможность запуска (проверяет работающие процессы Windows);
  • Ведет подробный журнал работы (в текстовом файле)

Если изменилась конфигурация базы данных, но изменения не приняты, пользователю будет предложено завершить активные сеансы и разрешить программе применить изменения. Диалог позволяет отказаться от принятия измененний.

Настроить программу просто. Откройте любым текстовым редактором файл RetailExchange.ini и установите ваши значения

  • LogfileName - Имя файла, в который будет записываться журнал работы. Файл будет создан в папке с программой;
  • RetailIBConn - Строка подключения к базе данных. Проверял только на файловой версии. Строка должна выглядеть так: File=D:\Retail\;Usr=ИмяПользователяДляОбмена;Pwd=ПарольПользователяДляОбмена;
  • V8exePath - Пусть к исполняемому файлу актуальной версии платформы. Пример:"C:\Program Files\1cv8\8.3.6.2014\bin\1cv8.exe"
  • ComConnectorObj - Строка с наименованием COMConnector. Например: V83.COMConnector
  • ArcLogfileName - Строка с шаблоном имени файла, в который будет помещены устаревшие записи журнала работы. Желательно оставить что-то подобное retail_exchange_DDMMYYYY_log.old. Важно в имени иметь символы даты DDMMYYYY. Не проверял как будет вести себя программа без них :-)
  • LogMaxSize - Значение, которое устанавливает максимальный размер журнала работы (в байтах). Пример: 512000
  • PIDFileExt - Строка, устанавливает расширение для файла-флага. Пример: pid
  • ShowTrayTip - Параметр устанавливает режим уведомлений для пользователя. Если значение 1, то уведомления будут показываться
  • UpdateRS - Параметр разрешает запуск процедуры ЗапасыСервер.ОбновлениеРегистраСведенийИнформативныеОстаткиТоваровДляМагазинов(). Если значение 1, то перед обменом данными будет обновлен РС
  • ApplyCfg - Параметр разрешение на первый запуск клиентского приложения после применения изменений конфигурации. Если значение 1, то после применения изменений будет запущено клиентское приложение. Эта опция проверялась не достаточно хорошо. Поэтому, используйте на свой страх и риск.

Программа принимает параметры командной строки: ShowTrayTip, UpdateRS, ApplyCfg. Достаточно указать эти ключевые слова в командной строке, программа их примет при работе.Параметры командной строки имеют приоритет перед параметрами, указанными в *.ini.
Например: RetailExchange.exe ShowTrayTip UpdateRS

Кто желает доработать под себя эту простую утилиту, добро пожаловавать на GitHub

Компилятор и все необходимое для сборки можно найти на официальном сайте AutoIT

js Обмен Розница Скрипт Администрирование Обмен данными Windows WScript AutoIT

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    172075    964    403    

924

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    14572    109    46    

108

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    17344    43    15    

75

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    27366    96    48    

138

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11955    45    33    

67

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    191342    1153    0    

920

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18113    7    32    

42

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1153    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sam013 06.09.13 13:32 Сейчас в теме
Скачал попробовал.
Что то делает, но файл выгрузки не формируется.

[06.09.2013 13:30:42] Сформирован новый лог-файл
[06.09.2013 13:30:42] Старт обработки.
[06.09.2013 13:30:42] Создан новый PID-файл: 908
[06.09.2013 13:30:42] Попытка подключения к информационной базе по строке подключения File=D:\DEV\1CGB\work2;Usr=Obmen;Pwd=123;
[06.09.2013 13:30:47] Выполнение процедуры ОбновлениеРегистраСведенийИнформативныеОстаткиТоваровДляМагазинов
[06.09.2013 13:30:47] Выполнение процедуры обмена. Этот узел: Розница, редакция 2.0 (МВ )
[06.09.2013 13:30:47] Освобождение области памяти, отведенной под v8ComConnector
[06.09.2013 13:30:47] Удален PID-файл D:\temp\Obmen\908.pid
[06.09.2013 13:30:47] Обработка завершена.

В ручном режиме обмен работает, файл формирует
2. Liris 39 06.09.13 14:01 Сейчас в теме
(1)
Может не настроены регламентные задания? Сниму скрины своих настроек, покажу как настроено у меня.
3. sam013 06.09.13 14:12 Сейчас в теме
(2)
Настроены.
Скриншот прилагаю.
Прикрепленные файлы:
4. Liris 39 06.09.13 17:05 Сейчас в теме
(3) Думаю, мне понятно, почему у тебя не выполняется выгрузка. Ты запускаешь в Центральной ноде? Или в периферийной? Теоретически, должно работать в обоих случаях, но на Центральной ноде я не проверял, только на базе магазина работает.
В плане обмена периферийной базы должно быть два элемента:
- предопределенный элемент, узел текущей базы. Эта нода игнорируется скриптом при выгрузке;
- второй элемент, узел центральной базы данных. Это тот узел, изменения по которому должны выгружаться

В логе видно, что выгрузка не происходила, сообщения о выполнении обмена не вывелось. Вот пример моего процесса:
[06.09.2013 20:00:00] Старт обработки.
[06.09.2013 20:00:00] Создан новый PID-файл: 3960
[06.09.2013 20:00:00] Попытка подключения к информационной базе по строке подключения
[06.09.2013 20:00:04] Выполнение процедуры ОбновлениеРегистраСведенийИнформативныеОстаткиТоваровДляМагазинов
[06.09.2013 20:00:05] Выполнение процедуры обмена. Этот узел: Новосибирск - РОЙЯЛ ПАРК ТРК (A1 )
[06.09.2013 20:00:05] Вызов процедуры ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы. Узел КПЕ Розница (РБ )
[06.09.2013 20:00:17] Освобождение области памяти, отведенной под v8ComConnector
[06.09.2013 20:00:17] Удален PID-файл D:\1CScripts\3960.pid

Обрати внимание на строку "Вызов процедуры ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы". Для обмена выбран узел центральной базы. По алгоритму работы скрипта, это может быть любой узел, кроме текущей базы.
В твоем логе нет сообщения об инициализации процедуры обмена "ВыполнитьОбменДаннымиДля....". Значит, в твоем плане обмена ПоМагазину только один узел.

Если что-то упустил, дай знать. Интересно разобраться, почему у тебя не работает.
У меня заработало на всех магазинах. Не потребовалось предварительной подготовки ИБ.
5. Liris 39 09.09.13 13:43 Сейчас в теме
(3)Проблему решил.
Наименования узлов, периферийного и центрального, имели одинаковое имя. Переделал скрипт, чтобы сравнивал по коду узла.
6. kuza_87 28 01.11.13 20:32 Сейчас в теме
(5) При подключении к ИБ произошла ошибка. Описание ошибки: Неверные или отсутствующие параметры соединения с информационной базой
Прикрепленные файлы:
скриптОбменаГБ.js
7. Liris 39 02.11.13 05:25 Сейчас в теме
(6) Добрый день, коллега.
Посмотрел приложенный скрипт. Как предложение:
1) переложить базу в папку с коротким путём;
2) убедиться, что база открывается в обычном режиме под указанным пользователем;
3) убедиться, что правильно настроили роли для пользователя: право внешнего соединения и полные права для обмена;
4) полный доступ на папку, в которой работает скрипт.
8. Liris 39 02.11.13 05:33 Сейчас в теме
(6) Приложите файл журнала (лог-файл).
Какая версия платформы?
Какая ОС?
9. kuza_87 28 02.11.13 06:46 Сейчас в теме
Платформа 8.3.3, ОС - Win7

[02.11.2013 09:45:30] Сформирован новый лог-файл
[02.11.2013 09:45:30] Старт обработки.
[02.11.2013 09:45:30] Удален PID-файл G:\install\1с\Работа алисон\автосервис\1920.pid
[02.11.2013 09:45:30] Создан новый PID-файл: 5504
[02.11.2013 09:45:30] Попытка подключения к информационной базе по строке подключения
[02.11.2013 09:45:31] При подключении к ИБ произошла ошибка. Описание ошибки: Неверные или отсутствующие параметры соединения с информационной базой
[02.11.2013 09:45:31] Скрипт завершает работу из-за ошибки
10. Liris 39 02.11.13 07:11 Сейчас в теме
(9) Предполагаю, версия Платформы всему виной.
Найдите в скрипте строку v8ComConnector = WScript.CreateObject("V82.COMConnector");
Вместо V82 напишите V83, запишите изменения и попробуйте запустить скрипт повторно.
11. bio.ejiki 09.03.17 06:27 Сейчас в теме
(10) Алексей, у вас всё так же стабильно работает с ком коннектором? просто думаю попробовать ваш метод из-за возникновения ошибок когда происходит пробитие чека в момент синхронизации.
Оставьте свое сообщение