====== Возможности подключения к серверу (для программиста 1C WEB компонента) ======
Внимание! Подключаемая компонента поддерживает только 32-битные версии платформы 1С.
===== Регистрация и подключение библиотеки =====
**Регистрация библиотеки AddIn_1CToWebServer.dll - reg.bat:**\\
@ECHO OFF
REM The following directory is for .NET 4.0
set DOTNETFX4=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
set PATH=%PATH%;%DOTNETFX4%
echo ---------------------------------------------------
regasm.exe "AddIn_1CToWebServer.dll" /tlb /codebase
echo ---------------------------------------------------
\\
Регистрации библиотеки производится от имени Администратора. В примере “Тест ВК WEB сервера” регистрация производится автоматически при первом запуске программы.
**Пример подключения компоненты AddIn_1CToWebServer.dll:**\\
Если глВесы1 = Неопределено Тогда
Если не ПодключитьВнешнююКомпоненту("AddIn.1CToWebServer") Тогда
Сообщить("Компоненту AddIn.1CToWebServerне удалось подключить, требуется инициализация!!!");
Возврат Ложь;
Иначе
Попытка
глВесы1 = Новый("AddIn.1CToWebServer");
//Сообщить("Компонента AddIn.1CToWebServer загружена");
Возврат Истина;
Исключение
глВесы1 = Неопределено;
Сообщить("Не удалось загрузить компоненту");
Сообщить(""+ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецЕсли;
КонецЕсли;
===== Основные функции: =====
**ОткрытьСерверВесы**(<АдресСервера>, )\\
Подключиться к WEB Серверу АВТО.\\
<АдресСервера> – сетевой путь (IP адрес) к компьютеру, где установлен WEB сервер
(например 192.168.10.122:8090)
- логическое значение режим отладки.
После запуска включается цикл опроса сервера **(Включен = 1)** . Если WEB-Сервер по указанному адресу откликнулся, то проверить состояние можно с помощью свойства **СерверОткрыт = 1**
**ЗакрытьСерверВесы**()\\
Закрыть соединение с сервером.\\
После запуска выключается цикл опроса сервера **(Включен = 0)** . Проверить состояние можно с помощью свойства **СерверОткрыт = 0**
**Включен**\\
Свойство - флаг состояния активности цикла опроса WEB-сервера **Включен=1** – цикл включен
**СерверОткрыт**\\
Свойство - флаг состояния подключения к WEB-серверу **СерверОткрыт=1** – сервер открыт
===== Внешние события компоненты: =====
**Источник = "1CToWebServer"**
//Наименования событий//\\
**Событие = "error"** - ошибка\\
**Событие = "ServerOpen"** - сервер открыт\\
**Данные – Адрес Сервера**\\
**Событие = "ServerClose"** – сервер закрыт\\
**Данные – Адрес Сервера**
**Событие = "Start"** – старт цикла опроса\\
**Событие = "Stop"** – остановка цикла опроса WEB сервера\\
**Событие = "ServerUpdateParam"** – принят обновлен очередной пакет с параметрами\\
**Событие = "ServerUpdatePhoto"**– приняты обновлены фотоснимки с камер
//События оборудования ВЕСЫ//\\
**Событие = UpdateMassa** – изменено значение массы\\
**Событие = UpdateFreq** – изменено значение частоты передачи с весового индикатора\\
**Событие = UpdatefSTABIL** – изменено состояние стабильности\\
**Событие = UpdateStateVesyName** – изменено состояние весов\\
**Событие = UpdateAutoVsv AutoVsv_UpdateDateTime** – изменено значение даты последнего автовзвешивания\\
**Событие = UpdateAutoVsvSelect** – автовзвешивание загружено
//События системы распознавания//\\
**Событие = UpdateCamRecognTS** – изменилось состояние номер найден (для всех камер)\\
**Событие = UpdateCamNumbTS** – изменилось значение найденного номера транспорта (для всех камер)\\
**Событие = UpdateCamNumbPricep** – изменилось значение найденного номера прицепа (для всех камер)\\
**Событие = UpdateCam1RecognTS** – изменилось значение найденного номера транспорта в камере 1\\
**Событие = UpdateCam2RecognTS** – изменилось значение найденного номера транспорта в камере 2\\
**Событие = UpdateCam3RecognTS** – изменилось значение найденного номера транспорта в камере 3\\
**Событие = UpdateCam4RecognTS** – изменилось значение найденного номера транспорта в камере 4
===== Свойства и команды оборудования - ВЕСЫ: =====
**Масса**\\
Функция возвращает значение массы.
**Частота**\\
Функция возвращает частоту пакетов, посылаемых весовым индикатором в компьютер
**УстановитьНоль**()\\
Послать команду установки нуля на весовой индикатор.
**Ноль**\\
Функция возвращает флаг “Ноль” (значение 1 или 0)
**Стабил** //вызывается перед взвешиванием, для проверки//\\
Функция возвращает флаг “Стабильность” (значение 1 или 0)
**ИмяВесов**\\
Функция возвращает имя весов
**ЭмуляцияПоказаний**\\
Свойство, возвращает 1 если включен режим эмуляции
**ВходПользователя** (<ИмяПользователя>)\\
Регистрирует вход пользователя в базу событий Сервера Весы
<ИмяПользователя> – Строка. Имя пользователя, подключившегося к весам
**ВыходПользователя** (<ИмяПользователя>)\\
Регистрирует выход пользователя в базу событий Сервера Весы
<ИмяПользователя> – Строка. Имя пользователя, подключившегося к весам
**ИмяСостоянияВесов**\\
Возвращает строку сокращенного наименования состояния весов
**РасшифровкаСостоянияВесов**\\
Возвращает строку расшифровки состояния весов
===== Функции контроля взвешивания: =====
**ЗафиксироватьВзвешивание**(, <МАССА>, <ИмяПользователя>);\\
(ОБЯЗАТЕЛЬНО ДЛЯ ИСПОЛЬЗОВАНИЯ)
Устанавливает флаг контроля, и сообщает Серверу о том, что взвешивание произведено.\\
Следующая за ней команда **ЗаписатьДокументВзвешивания**.\\
**GUIDДокумента** – уникальный идентификатор взвешивания. Если пуст, то заполняется новым значением.
**МАССА** – масса взвешенного груза\\
**ИмяПользователя** – Строка. Имя пользователя.
**ПослеВзвешиванияНеСъезжал**() //вызывается перед взвешиванием, для проверки съехал ли транспорт с весов.//\\
Функция возвращает флаг "ПослеВзвешиванияНесъезжал" (значение 1 или 0)
**ВзвешиваниеНеСНоля**() //вызывается перед взвешиванием, для проверки было ли обнуление весов перед заездом транспорта.//\\
Функция возвращает флаг "ВзвешиваниеНеСНоля" (значение 1 или 0)
===== Функции выгрузки документа взвешивания в дублирующий журнал Сервера Весы: =====
**ЗаписатьДокументВзвешивания**(, <КодТипаВзвешивания>, <ТипВзвешивания>,<НомерДокумента>,<ДатаДокумента>,<ВремяДокумента>,<КодОтправитель>,<Отправитель>,<КодПолучатель>,<Получатель>,<КодПунктОтправления>,<ПунктОтправления>,<КодПунктНазначения>,<ПунктНазначения>,<КодГруз>,<Груз>,<КодВодитель>,<Водитель>,<НомерНакладной>,<ДатаНакладной>,<ТараПоДокументу>,<БруттоПоДокументу>,<НеттоПоДокументу>,<КодМаркаТС>,<МаркаТС>,<НомерТС,РегионТС>,
<НомерПрицепа>,<РегионПрицепа>,<ИмяПользователя>, ТАРА>, ДатаТарирования>, <ВремяТарирования>,<БРУТТО>,<ДатаБрутирования>, <ВремяБрутирования>, <НЕТТО>, <флагУдален>)\\
Создает или обновляет в базе взвешиваний запись о взвешивании с заполненными полями.\\
Если GUID (//уникальный идентификатор взвешивания//) не найден создает новую запись, иначе обновляет существующую\\
**GUIDДокумента** – уникальный идентификатор взвешивания, тип строка GUID. Если пустой, создается при первой записи сервером Firebird.\\
**ТипВзвешивания** – Строки - наименование типа взвешивания.\\
**НомерДокумента** – Номер документа.\\
**ДатаДокумента** – дата документа.\\
**ВремяДокумента** – время документа.\\
**КодОтправителя, Отправитель** – Код и наименование Контрагенты.\\
**КодПолучатель, Получатель** – Код и наименование Контрагенты.\\
**КодПунктОтправления, ПунктОтправления** – Код и наименование Пункты или МестаХранения.\\
**Код ПунктНазначения, ПунктНазначения** – Код и наименование Пункты или МестаХранения.\\
**Код Груз, Груз** – Код и наименование Номенклатура.\\
**КодВодитель, Водитель** – Код и ФИО водителя.\\
**НомерНакладной** – строка НомерНакладной.\\
**ДатаНакладной** – Дата накладной.\\
**ТараПоДокументу** – тара по документу.\\
**БруттоПоДокументу** – брутто по документу.\\
**НеттоПоДокументу** – нетто по документу.\\
**Код МаркаТС, МаркаТС** – Код и наименование Марки ТС.\\
**НомерТС,РегионТС** – Гос.номер и регион ТС.\\
**НомерПрицепа** – Гос. Номер прицепа.\\
**РегионПрицепа** – регион прицепа.\\
**ИмяПользователя** – Строка. Имя пользователя.\\
**ТипТары** – Строка. Характер значения тары – “взвешивание” или “вручную”.\\
**ТАРА, ДатаТарирования,ВремяТарирования** – Строка масса тары, дата и время тарирования.\\
**ТипБрутто** – Строка. Характер значения брутто – “взвешивание” или “вручную”.\\
**БРУТТО, ДатаБрутирования,ВремяБрутирования** – Строка масса брутто, дата и время брутирования.\\
**НЕТТО** – Масса НЕТТО.\\
**флагУдален** – признак флага удален (‘1’ – удален, ‘0’ – не удален).\\
**поля <Код..> используются в базе взвешиваний для ведения справочников.**
**ЗаписатьПараметрДокументаВзвешивания**(, <ИмяПоля>,<Значение>)\\
Создает или обновляет в базе взвешиваний запись о взвешивании\\
Обновляет значение указанного поля.\\
Если GUID (уникальный идентификатор взвешивания) не найден создает новую запись, иначе обновляет существующую\\
**GUIDДокумента** – уникальный идентификатор взвешивания, тип строка GUID. Если пустой, создается при первой записи сервером Firebird.
**ЗаписатьСобытие**(<ИсточникСобытия>,<Описание>)\\
Создает в фискальном журнале событий записать о дополнительном событии. Регистрация с текущим временем.\\
Возвращает 1-если успешно, 0-неудачно\\
<ИсточникСобытия> – метка (целое число) указывающая на источник события\\
2 - Оператор\\
3 - Взвешивание\\
4 - Программа\\
5 - Администрирование\\
<Описание> – Строка. Описание события
===== Функции работы с видеокамерами: =====
//JPG полном размере//\\
**ПолучитьФотоКамеры1**();
//JPG в размере окна//\\
**ПолучитьФотоПоРазмеруКамеры1**(<Ширина>,<Высота>);
//БМП в полном размере//\\
**ПолучитьФотоБМПКамеры1**();
//БМП в размере окна//\\
**ПолучитьФотоБМППоРазмеруКамеры1**(<Ширина>,<Высота>);
**Пример Сохранения фото в файл:**
БинДанные = Base64Значение(ТекущиеВесы.ПолучитьФотоКамеры1())
Фото1 = Новый Картинка(БинДанные);
Фото1.Записать(КаталогИБ+ "\PHOTO\"+GUIDДокументаВзвешивания + "_PHOTO_"+НомерВзв+"1.jpg");
===== Функции системы распознавания номеров: =====
//флаг номер найден//\\
**КамераНайденНомер** свойство возвращает – 1, если номер найден
//Получить НомерТС//\\
**КамераНомерТС** возвращает строку с номером
//Получить РегионТС//\\
**КамераРегионТС** возвращает строку с регионом
//Получить НомерПрицепа//\\
**КамераНомерПрицеп** возвращает строку с номером
//Получить РегионПрицепа//\\
**КамераРегионПрицеп** возвращает строку с регионом
===== Функции оборудования УДВВ и контроля проезда транспорта: =====
**РасшифровкаСостоянияПроезда**\\
Строка расшифровка текущего состояния проезда
**СобытиеНомерВКамере1**\\
Возвращает 0 или 1. Событие – стабильное распознавание номера в камере 1
**СобытиеНомерВКамере2**\\
Возвращает 0 или 1. Событие – стабильное распознавание номера в камере 2
**СобытиеНомерВКамере3**\\
Возвращает 0 или 1. Событие – стабильное распознавание номера в камере 3
**СобытиеНомерВКамере4**\\
Возвращает 0 или 1. Событие – стабильное распознавание номера в камере 4
**СобытиеДатчик1**\\
Возвращает 0 или 1. Событие – сработал датчик 1
**СобытиеДатчик2**\\
Возвращает 0 или 1. Событие – сработал датчик 2
**РазрешитьПроезд**\\
Возвращает 0 или 1. Флаг – проезд разрешен
**РазрешитьПроезд1**\\
Возвращает 0 или 1. Флаг – проезд разрешен в направлении 1
**РазрешитьПроезд2**\\
Возвращает 0 или 1. Флаг – проезд разрешен в направлении 2
**УДВВ_Частота**\\
Возвращает частоту обмена с устройством ввода-вывода
**УДВВ_СостояниеВыходы**\\
Состояние выходов устройства ввода-вывода
**УДВВ_СостояниеВходы**\\
Состояние входов устройства ввода-вывода
**УДВВ_УстановитьВыход(int NBit, int _Value)**\\
Команда установки значения выхода, нужного бита
**УстановитьРазрешитьПроезд()**\\
Команда установить флаг проезд разрешен
**УстановитьРазрешитьПроезд1()**\\
Команда установить флаг проезд разрешен в направлении 1
**УстановитьРазрешитьПроезд2()**\\
Команда установить флаг проезд разрешен в направлении 2
===== Функции загрузки автоматических взвешиваний, создаваемых Сервером ВЕСЫ Авто: =====
Сервер Весы Авто при переходе в автоматический режим создает записи взвешиваний независимо от 1С. Данный набор функций позволяют последовательно скопировать данные автовзвешивания начиная с первой с помощью последовательности команд:\\
1. Анализ количество новых автовзвешиваний:
Если ГлВесы.КоличествоНовыхАвтоВзвешиваний > 0 Тогда
2. Выбрать первое
ГлВесы.ВыбратьАвтоВзвешивание()
3. Дождаться когда будет выбрано
Если ГлВесы.АвтовзвешиваниеВыбрано = 1 Тогда
4. Читать параметры выбранного автовзвешивания в новый документ:
GUIDДокументаВзвешивания = ГлВесы.ПолучитьПараметрАвтоВзвешивания("CODE");
ДатаДок = ГлВесы.ПолучитьПараметрАвтоВзвешивания("DATE");
ВремяДок = ГлВесы.ПолучитьПараметрАвтоВзвешивания("TIME");
***** и т.д.
5. Записать новое взвешивание:
ГлВесы.ЗаписатьДокументВзвешивания(…
После этого сбрасывается **ГлВесы.АвтовзвешиваниеВыбрано = 0**, далее по новой.
//флаг состояние режима автовзвешивания//\\
**РежимАвтоВзвешивания** – возвращает 0 или 1
//команда установить режим автовзвешивания//\\
**УстановитьРежимАвтоВзвешивания(Режим)**
<Режим> – 0 или 1
//количество незагруженных автовзвешиваний//\\
**КоличествоНовыхАвтоВзвешиваний** – возвращает целое число от 0 и больше.
//Команда выброра первого автовзвешивания//\\
**ВыбратьАвтоВзвешивание()** – результат не возвращает
//флаг готовности для загрузки выбранного автовзвешивания//\\
**АвтовзвешиваниеВыбрано** – возвращает 0 или 1
//получить параметр загруженного автовзвешивания//\\
**ПолучитьПараметрАвтоВзвешивания(ИмяПараметра)**
<ИмяПараметра> – 0 или 1
//Получить фото первого отвеса загруженного автовзвешивания//\\
**ПолучитьФОТОАвтоВзвешОтвес1(НомерФото)**
<НомерФото> – номер камеры 1, 2, 3 или 4
//Получить фото второго отвеса загруженного автовзвешивания//\\
**ПолучитьФОТОАвтоВзвешОтвес2(НомерФото)**
<НомерФото> – номер камеры 1, 2, 3 или 4
//-----------------------------------------------------------------------------
// Алгоритм загрузки новых взвешиваний из Сервера Весы
//-----------------------------------------------------------------------------
Процедура ОбработкаОжиданияВК()
//-----------------------------------------------------------------
//----- Загрузка автовзвешиваний, фоновый процесс -----------------
//-----------------------------------------------------------------
Если (ДатаВремяАвтоВзвешивания <> Компонента.ДатаВремяАвтоВзвешивания) Тогда
ДатаВремяАвтоВзвешивания = Компонента.ДатаВремяАвтоВзвешивания;
АвтоВзвешиваниеВыбрано_ = Компонента.АвтоВзвешиваниеВыбрано;
Если (Компонента.КоличествоНовыхАвтоВзвешиваний > 0) Тогда
Если (АвтоВзвешиваниеВыбрано_ = 0)
Тогда Компонента.ВыбратьАвтоВзвешивание()
Иначе СоздатьАвтоВзвешивание();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если АвтоВзвешиваниеВыбрано_ <> Компонента.АвтоВзвешиваниеВыбрано Тогда
АвтоВзвешиваниеВыбрано_ = Компонента.АвтоВзвешиваниеВыбрано;
Если (АвтоВзвешиваниеВыбрано_ = 1) и (Компонента.КоличествоНовыхАвтоВзвешиваний>0) ТОгда
СоздатьАвтоВзвешивание();
КонецЕсли;
КонецЕсли;
ПодключитьОбработчикОжидания("ОбработкаОжиданияВК", 0.2, Истина);
КонецПроцедуры