Суть скрипта проста: подключиться к ИБ (с использованием COMConnector) и выполнить обмен данными. Никаких лишних окон не открывается, обмен выполняется быстро. Кассы построены на Intel Atom D2500HN с 2Гб ОЗУ; скрипт на такой кассе выполняется ~12 сек (в зависимости от размера сообщений).
Предполагалось использовать в планировщике заданий Windows. Можно выставить расписание в малым интервалом времени. При этом скрипт самостоятельно будет отслеживать собственную активность. Повторый запуск скрипта прервется сразу, если не завершен предыдуший процесс.
Скрипт пишет подробный лог выполняемых действий в отдельный файл. Предусмотрено перемещение лога "в архив" при достижении размера лог-файла определенного размера (по-умолчанию 512000 байт).
Общее описание алгоритма работы:
- Скрипт запускается;
- Проверяет: завершен ли предыдущий сеанс работы или нет. Если завершен, скрипт продолжит работу. Иначе - прекращаем какие-либо дальнейшие действия, останавливаем скрипт;
- Подключается к ИБ (с использованием COMConnector);
- Выполняет процедуры обмена (по узлам плана обмена ПоМагазину);
- Отключается от базы;
В боевой работе не долго, всего пару дней. Ошибок не появлялось.
Продавцы довольны - нет лишних окошек на экране. Управленцы и финансовая служба - счастливы; сведения с периферии приходят вовремя.
Настроить скрипт просто. Откройте файл скрипта с помощью любого текстового редактора и укажите свои настройки:
- cRetailIB_ConnSTR - строка подключения к периферийной ИБ. Укажите путь к базе, имя пользователя и пароль;
- iLogMaxSize - параметр, указывающий на максимальный размер лог-файла (в байтах).
- 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