====== Возможности подключения к серверу (для программиста 1C) ====== Внимание! Подключаемая компонента поддерживает только 32-битные версии платформы 1С. В данном руководстве представлены описания функций и свойств компоненты **AddIn_1CToWebServer.dll**, которая используется для подключения 1С Предприятие 8.2(3) к ПО "Сервер ВЕСЫ АВТО". Обратите внимание, в папка Examples которая идет вместе с дистрибутивом, выложены примеры конфигураций для подключения к ПО Сервер ВЕСЫ АВТО. ===== Основные функции: ===== **ОткрытьСерверВесы** (<АдресСервера>)\\ Подключиться к Серверу Весов\\ <АдресСервера> – сетевой путь (IP адрес) к компьютеру, где установлен драйвер. Если подключение локально, то пустая строка "Возвращает 1-если успешно, 0-неудачно" Для 1С версии 8.x удаленное подключение не работает, только локально <АдресСервера> = ""\\ Для удаленного подключения используйте компоненту **[[http://docuwiki.vesysoft.ru/doku.php?id=manager:1cweb|AddIn_1CToWebServer.dll]]** и дополнительное **[[http://vesysoft.ru/docuwiki/doku.php?id=manager:web|ПО "WEB Сервер ВЕСЫ АВТО"]]** **Пример подключения Add1CServerVesy.dll из макета:**\\ Попытка глВесы = Неопределено; ПодключитьВнешнююКомпоненту("ОбщийМакет.ВнешняяКомпонентаСерверАвто1","ServerAuto",ТипВнешнейКомпоненты.Native); глВесы = Новый("AddIn.ServerAuto.Add1CServerVesy"); глВесы.Включен = 1; глВесы.ОткрытьСерверВесы(Сервер); Возврат Истина; Исключение Сообщить("ВНИМАНИЕ!! Ошибка вызова глВесы1.ОткрытьСерверВесы('"+Сервер+"')"); глВесы = Неопределено; Возврат Ложь; КонецПопытки; **ЗакрытьСерверВесы** ()\\ Процедура закрытия сервера весов. Запускать можно несколько раз подряд. **СерверОткрыт**\\ Функция возвращает 1, если сервер весов успешно открыт. **ВключитьСобытия**()\\ Включить генерирование внешнего события **UpdateMassa**. для обработки событий сервера используется процедура **//ОбработкаВнешнегоСобытия//**(Источник,Событие,Данные); источник **UpdateMassa**. **ВключитьСобытия**()\\ Включить генерирование внешнего события **UpdateMassa**. для обработки событий сервера используется процедура //**ОбработкаВнешнегоСобытия**(Источник,Событие,Данные)//; источник **Add1CServerVesy**. **По умолчанию включено**. **Пример обработчика:** Процедура ВнешнееСобытие(Источник, Событие, Данные) Если (Источник = "Add1CServerVesy") Тогда Если Событие = "UpdateMassa" Тогда ИначеЕсли Событие = "UpdatefSTABIL" Тогда ИначеЕсли Событие = "UpdateFreq" Тогда ИначеЕсли Событие = "UpdateStateVesyName" Тогда ИначеЕсли Событие = " UpdateCamRecognTS" Тогда ИначеЕсли Событие = "UpdateCamNumbTS" Тогда ИначеЕсли Событие = "UpdateCamNumbPricep" Тогда ИначеЕсли Событие = "UpdateAutoVsv" Тогда ИначеЕсли Событие = "UpdateShit1" Тогда ИначеЕсли Событие = "UpdateShit2" Тогда ИначеЕсли Событие = " UpdateCam1RecognTS" Тогда ИначеЕсли Событие = " UpdateCam2RecognTS " Тогда ИначеЕсли Событие = " UpdateCam3RecognTS " Тогда ИначеЕсли Событие = " UpdateCam4RecognTS " Тогда КонецЕсли; КонецПроцедуры **ОтключитьСобытия**()\\ Отключить генерирование внешнего события **Update…** **Масса**\\ Функция возвращает значение массы. **Частота**\\ Функция возвращает частоту пакетов, посылаемых весовым индикатором в компьютер. **УстановитьНоль**()\\ Послать команду установки нуля на весовой индикатор. **Ноль**\\ Функция возвращает флаг "Ноль" (значение 1 или 0). **Стабил** //вызывается перед взвешиванием, для проверки//\\ Функция возвращает флаг "Стабильность" (значение 1 или 0). **ИмяВесов**\\ Функция возвращает имя весов. **ЭмуляцияПоказаний**\\ Функция возвращает 1 если включен режим эмуляции. **ВходПользователя** (<ИмяПользователя>)\\ Регистрирует вход пользователя в базу событий Сервера Весы <ИмяПользователя> – Строка. Имя пользователя, подключившегося к весам. **ВыходПользователя** (<ИмяПользователя>)\\ Регистрирует выход пользователя в базу событий Сервера Весы <ИмяПользователя> – Строка. Имя пользователя, подключившегося к весам. **ИмяСостоянияВесов**\\ Возвращает строку сокращенного наименования состояния весов **РасшифровкаСостоянияВесов**\\ Возвращает строку расшифровки состояния весов ===== Функции контроля взвешивания: ===== **ЗафиксироватьВзвешивание**(, <МАССА>, <ИмяПользователя>); ОБЯЗАТЕЛЬНО ДЛЯ ИСПОЛЬЗОВАНИЯ Устанавливает флаг контроля, и сообщает Серверу о том, что взвешивание произведено.\\ Следующая за ней команда **ЗаписатьДокументВзвешивания**.\\ **GUIDДокумента** – уникальный идентификатор взвешивания. Если пуст, то заполняется новым значением.\\ **МАССА** – масса взвешенного груза.\\ **ИмяПользователя** – Строка. Имя пользователя. **ПослеВзвешиванияНеСъезжал**() вызывается перед взвешиванием, для проверки съехал ли транспорт с весов.\\ Функция возвращает флаг “ПослеВзвешиванияНесъезжал” (значение 1 или 0) **ВзвешиваниеНеСНоля**() вызывается перед взвешиванием, для проверки было ли обнуление весов перед заездом транспорта.\\ Функция возвращает флаг “ВзвешиваниеНеСНоля ” (значение 1 или 0) ===== Функции выгрузки документа взвешивания в дублирующий журнал Сервера Весы: ===== **ЗаписатьДокументВзвешивания**(, <КодТипаВзвешивания>, <ТипВзвешивания>,<НомерДокумента>,<ДатаДокумента>,<ВремяДокумента>,<КодОтправитель>,<Отправитель>,<КодПолучатель>,<Получатель>,<КодПунктОтправления>,<ПунктОтправления>,<КодПунктНазначения>,<ПунктНазначения>,<КодГруз>,<Груз>,<КодВодитель>,<Водитель>,<НомерНакладной>,<ДатаНакладной>,<ТараПоДокументу>,<БруттоПоДокументу>,<НеттоПоДокументу>,<КодМаркаТС>,<МаркаТС>,<НомерТС,РегионТС>, <НомерПрицепа>,<РегионПрицепа>,<ИмяПользователя>, ТАРА>, ДатаТарирования>, <ВремяТарирования>,<БРУТТО>,<ДатаБрутирования>, <ВремяБрутирования>, <НЕТТО>, <флагУдален>)\\ Создает или обновляет в базе взвешиваний запись о взвешивании с заполненными полями. Если GUID (уникальный идентификатор взвешивания) не найден создает новую запись, иначе обновляет существующую **GUIDДокумента** – уникальный идентификатор взвешивания, тип строка GUID. Если пустой, создается при первой записи сервером Firebird.\\ **ТипВзвешивания** – Строки - наименование типа взвешивания.\\ **НомерДокумента** – Номер документа.\\ **ДатаДокумента** – дата документа.\\ **ВремяДокумента** – время документа.\\ **КодОтправителя, Отправитель** – Код и наименование Контрагенты\\ **КодПолучатель, Получатель** – Код и наименование Контрагенты\\ **КодПунктОтправления, ПунктОтправления** – Код и наименование Пункты или МестаХранения\\ **Код ПунктНазначения, ПунктНазначения** – Код и наименование Пункты или МестаХранения.\\ **Код Груз, Груз** – Код и наименование Номенклатура.\\ **КодВодитель, Водитель** – Код и ФИО водителя.\\ **НомерНакладной** – строка НомерНакладной.\\ **ДатаНакладной** – Дата накладной.\\ **ТараПоДокументу** – тара по документу.\\ **БруттоПоДокументу** – брутто по документу.\\ **НеттоПоДокументу** – нетто по документу.\\ **Код МаркаТС, МаркаТС** – Код и наименование Марки ТС.\\ **НомерТС,РегионТС** – Гос.номер и регион ТС.\\ **НомерПрицепа** – Гос. Номер прицепа\\ **РегионПрицепа** – регион прицепа.\\ **ИмяПользователя** – Строка. Имя пользователя.\\ **ТипТары** – Строка. Характер значения тары– “взвешивание”или “вручную”.\\ **ТАРА, ДатаТарирования,ВремяТарирования** – Строка масса тары, дата и время тарирования\\ **ТипБрутто** – Строка. Характер значения брутто– “взвешивание”или “вручную”.\\ **БРУТТО, ДатаБрутирования,ВремяБрутирования** – Строка масса брутто, дата и время брутир.\\ **НЕТТО** – Масса НЕТТО.\\ **флагУдален** – признак флага удален (‘1’ – удален, ‘0’ – не удален). **поля <Код..> используются в базе взвешиваний для ведения справочников.** **ЗаписатьПараметрДокументаВзвешивания**(, <ИмяПоля>,<Значение>)\\ Создает или обновляет в базе взвешиваний запись о взвешивании Обновляет значение указанного поля.\\ Если GUID (уникальный идентификатор взвешивания) не найден создает новую запись, иначе обновляет существующую\\ **GUIDДокумента** – уникальный идентификатор взвешивания, тип строка GUID. Если пустой, создается при первой записи сервером Firebird. **ЗаписатьСобытие**(<ТипСобытия>,<Описание>,<Пользователь>)\\ Создает в фискальном журнале событий записать о дополнительном событии. Регистрация текущим временем.\\ <**ТипСобытия**>– метка (целое число) указывающая на тип события \\ 41 - Внешнее событие\\ <**Описание**> – Строка. Описание события\\ <**Пользователь**>– Строка. Имя пользователя\\ ===== Функции работы с видеокамерами: ===== //JPG полном размере//\\ **ПолучитьФотоКамеры1**();\\ //JPG в размере окна//\\ **ПолучитьФотоПоРазмеруКамеры1**(<Ширина>,<Высота>);\\ //БМП в полном размере//\\ **ПолучитьФотоБМПКамеры1**();\\ //БМП в размере окна//\\ **ПолучитьФотоБМППоРазмеруКамеры1**(<Ширина>,<Высота>); **Пример Сохранения фото в файл:**\\ БинДанные = ТекущиеВесы.ПолучитьФотоКамеры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 //----------------------------------------------------------------------------- // Алгоритм загрузки новых взвешиваний из Сервера Весы //----------------------------------------------------------------------------- Процедура ОбработкаОжиданияВК() //----------------------------------------------------------------- Если КоличествоНовыхАвтоВзвешиваний1 <> глВесы.КоличествоНовыхАвтоВзвешиваний Тогда КоличествоНовыхАвтоВзвешиваний1 = глВесы.КоличествоНовыхАвтоВзвешиваний; Если (глВесы1.АвтовзвешиваниеВыбрано = 0) и (КоличествоНовыхАвтоВзвешиваний1>0) Тогда глВесы.ВыбратьАвтоВзвешивание(); АвтовзвешиваниеВыбрано1 = -1; КонецЕсли; КонецЕсли; //----------------------------------------------------------------- Если АвтовзвешиваниеВыбрано1 <> глВесы1.АвтовзвешиваниеВыбрано Тогда АвтовзвешиваниеВыбрано1 = глВесы1.АвтовзвешиваниеВыбрано; Если (АвтовзвешиваниеВыбрано1 = 1) и (КоличествоНовыхАвтоВзвешиваний1>0) Тогда СоздатьАвтоВзвешивание(); // процедура чтения параметров и создания записи о взвешивании и сохранения КоличествоНовыхАвтоВзвешиваний1 = -1; КонецЕсли; КонецЕсли; ПодключитьОбработчикОжидания("ОбработкаОжиданияВК", 0.2, Истина); КонецПроцедуры