Так как полноценная интеграция в настоящий момент недоступна из-за невозможности получить ЭЦП, а до 1 марта нужно получить УИН на каждое изделие в остатках, я вспомнил, что давно занимался эмуляцией движений мыши и клавиатуры для имитации действий пользователя. Тогда задача ввода остатков распадается на несколько этапов:
1. Получаем остатки из учетной системы (те данные, которые необходимо вносить в ГИИС)
2. Для каждого изделия имитируем действие пользователя, который забивает изделие через личный кабинет
3. После регистрации получаем в личном кабинете УИН и копируем его в учетную систему
4. Печатаем бирку с datamatrix кодом и этим УИН
Для имитации действий пользователя нам понадобится "двигать" мышь и "нажимать" кнопки на клавиатуре. Для этого нужны будут функции WinAPI. Работу с ними подсмотрел тут: infostart.ru/1c/articles/18636/
Подгружаем API функции:
ЗагрузитьВнешнююКомпоненту("dynwrapx.dll");
Wrap = СоздатьОбъект("DynamicWrapperX");
Wrap.Register("user32.DLL", "SetCursorPos", "i=hh");
Wrap.Register("user32.DLL", "mouse_event", "i=uuuup");
Wrap.Register("user32.DLL", "keybd_event", "i=bbup");
Делаем процедуру, которая может переместить мышь в нужное место (на этапе подбора координат) или переместить и кликнуть в рабочем режиме
Процедура Клик(X,Y,Кликать=0)
Wrap.SetCursorPos(X,Y);
Сервис.Пауза(5);
Если Кликать=1 Тогда
Wrap.mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Сервис.Пауза(5);
Wrap.mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
КонецЕсли;
КонецПроцедуры
Паузу делаем с помощью библиотеки Formex (Объект Сервис оттуда)
Передачу данных между 1С и личным кабинетом делаем с помощью буфера обмена
objHTM = СоздатьОбъект("htmlfile");
objHTM.ParentWindow.ClipboardData.Setdata("Text", СокрЛП(Текст));//Запись в буфер
Текст=objHTM.ParentWindow.ClipboardData.Getdata("text");//Чтение из буфера
Вставка в браузер идет с помощью эмуляции Ctrl+V:
Wrap.keybd_event(VK_CONTROL,0,0,0);//Ctrl
Сервис.Пауза(5);
Wrap.keybd_event(86,0,0,0);//V
Сервис.Пауза(50);
Wrap.keybd_event(86,0,KEYEVENTF_KEYUP,0);
Сервис.Пауза(5);
Wrap.keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
Чтение УИН из браузера делается сначала двойным кликом по тому месту, где написан УИН, потом эмуляцией копирования:
Wrap.keybd_event(VK_CONTROL,0,0,0);//Ctrl
Сервис.Пауза(5);
Wrap.keybd_event(67,0,0,0);//C
Сервис.Пауза(50);
Wrap.keybd_event(67,0,KEYEVENTF_KEYUP,0);
Сервис.Пауза(5);
Wrap.keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
Между действиями приходится вставлять паузы чтобы приложения успевали отработать команды, а браузер подгрузить те вещи, которые меняются в зависимости от введенных значений.
Писал все это в семерке, так как учетная система на ней, но понимаю, что в восьмерке все будет точно так же кроме команды создания объектов. Ну и работой с буфером обмена.
Подобную вещь можно организовать с помощью автокликера, но кликаньей прямо из 1С интересней тем, что мы можем обрабатывать изделий последовательно. Сканируем ШК, запускам процедуру шаманства в личном кабинете, получаем УИН, формируем бирку с ним и сразу печатаем.
На картинках отмечено то, что заполняет программа в личном кабинете. Ну и сама форма обработки, которая в данном виде просто показывает, что таким образом можно взаимодействовать 1С с браузером.
Обработка тестировалась в 1С Предприятия 7.7.027.