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

10.09.15

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

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

Скачать файлы

Наименование Файл Версия Размер
Скрипт обмена РИБ
.js 9,07Kb
56
.js 1.1 9,07Kb 56 Скачать
Архив (версия 2)
.zip 434,82Kb
4
.zip 2 434,82Kb 4 Скачать
Архив (версия 2) для платформы x64
.zip 463,59Kb
5
.zip 2 463,59Kb 5 Скачать

Суть скрипта проста: подключиться к ИБ (с использованием 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

См. также

SALE! 20%

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

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121542    670    389    

709

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7249    21    6    

38

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3489    11    1    

33

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177712    1073    0    

848

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99329    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18095    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28078    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23589    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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) Алексей, у вас всё так же стабильно работает с ком коннектором? просто думаю попробовать ваш метод из-за возникновения ошибок когда происходит пробитие чека в момент синхронизации.
Оставьте свое сообщение