Доброго дня, уважаемые коллеги!
В данной статье изложен процесс подключения торгового оборудования с типом «Электронные весы» к 1С: БП 3.0.106.101. Новичкам в этой области статья поможет получить первичную информацию об 1С:БПО.
В типовых программных продуктах 1С (Бухгалтерия, Управление торговлей, Комплексная автоматизации и т.д.) имеется подсистема, отвечающая за подключение оборудования и его работу, называемая "1С:БПО" (Библиотека подключаемого оборудования). В 1С:БПО имеются такие же релизы, как и в других конфигурациях. Система БПО внедрена в типовые конфигурации и обновляется автоматически при обновлении типовой конфигурации. Для просмотра версии БПО необходимо в режиме Предприятия конкретной конфигурации открыть "Функции для технического специалиста" и выбрать регистр сведений "Версии подсистем"
В нашем примере стоит задача внедрить оборудование "Электронные весы" в 1С:БП 3.0.106.101. В 1С:БП 3.0.106.101 внедрена подсистема версии 1С:БПО 3.1.2.16.
В 1С:БП 3.0.106.101 в «принципе» отключена возможность работы торгового оборудования (ТО) с типом «Электронные весы». Отключение связано с тем, что 1С:БП служит для ведения бухгалтерского и налогового учета, составления отчетности и отправки ее в налоговые органы.
Немного истории БПО.
В 1С:БПО младшей редакции, например, 2.1.6.16, функционал подключения этого вида ТО был урезан, но его можно было довольно легко включить, добавив некоторое перечисление со значение «ЭлектронныеВесы» в один из общих модулей. После этого можно полноценно пользоваться типовым функционалом подсистемы БПО по данному типу оборудования без каких-либо проблем. Причем за функционал по получению данных с ТО (как по Весам, так и вроде по другим видам ТО) отвечал модуль «МенеджерОборудованияКлиент».
Сейчас же в редакции 1С:БПО 3.1 функционал сильно изменили:
- добавили Подсистемы, отвечающие за конкретный вид ТО;
- разделили процедуры/функции общего модуля «МенеджерОборудованияКлиент» на общие модули, отвечающие за свой вид ТО;
- и самое главное, теперь в 1С:БП нельзя «просто» подключить использование вида ТО «Электронные весы», как это делалось в 1С:БПО 2.1. Разработчик создал новую Подсистему по данному виду ТО (и по каждому другому виду ТО), включил в неё все объекты, отвечающие за неё и решил, что в 1С:БП такая подсистема не нужна.
Вся информация, изложенная далее, будет соответствовать описанию релиза БПО 3.1.2.16. В этом описании есть вся подробная информация по внедрению БПО для каждого типа торгового оборудования, а также переходу с редакции 2.1. Данное описание можно найти в дистрибутиве установки 1С:БПО, в который входят документы:
- Порядок внедрения БПО.html
- Применение функционала БПО в конфигурациях.html
Но это все «лирика», приступаем к делу…)))
1. Включаем возможность использовать в настройках подключаемого оборудования тип ТО «Электронные весы».
Для этого необходимо добавить код в процедуру «ДоступныеТипыОборудования» общего модуля «МенеджерОборудованияВызовСервераПереопределяемый»:
СписокТиповОборудования.Добавить(Перечисления.ТипыПодключаемогоОборудования.ЭлектронныеВесы);
2. Добавляем в ветку «Общие модули» общие модули, относящие к типу ТО «Электронные весы»
- ОборудованиеВесовоеОборудованиеКлиент
- ОборудованиеВесовоеОборудованиеВызовСервера
- ОборудованиеВесовоеОборудованиеКлиентСервер
3. В событиях форму объекта (Справочника, Документа и т.д.) добавляем процедуры подключения и отключения ТО.
- В событии формы «ПриОткрытии»
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить("ЭлектронныеВесы");
ОповещенияПриПодключении = Новый ОписаниеОповещения("ПодключитьОборудованиеЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПоТипу(ОповещенияПриПодключении, УникальныйИдентификатор, ПоддерживаемыеТипыВО);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт
Если Не РезультатВыполнения.Результат Тогда
ТекстСообщения = НСтр( "ru = 'При подключении оборудования произошла ошибка:""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
Сообщить(ТекстСообщения);
//Иначе
//ТекстСообщения = НСтр("ru = 'Оборудование подключено.'" );
//Сообщить(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
- В событии формы «ПриЗакрытии»
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить("ЭлектронныеВесы");
ОповещенияПриПодключении = Новый ОписаниеОповещения("ОтключитьОборудованиеЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьОтключениеОборудованияПоТипу(ОповещенияПриПодключении, УникальныйИдентификатор, ПоддерживаемыеТипыВО);
КонецПроцедуры
&НаКлиенте
Процедура ОтключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт
Если Не РезультатВыполнения.Результат Тогда
ТекстСообщения = НСтр( "ru = 'При отключении оборудования произошла ошибка: ""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
Сообщить(ТекстСообщения);
//Иначе
// ТекстСообщения = НСтр("ru = 'Оборудование отключено.'" );
// Сообщить(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
4. В процедуру действия кнопки «ПолучитьВес» на форме для получения веса необходимо добавить следующий код
&НаКлиенте
Процедура ПолучитьВес(Команда)
ЭтаФорма.Доступность = Ложь; // При необходимости можно заблокировать интерфейс пользователя.
ОповещениеПриЗавершении = Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект);
ОборудованиеВесовоеОборудованиеКлиент.НачатьПолученияВесаСЭлектронныхВесов(ОповещениеПриЗавершении, УникальныйИдентификатор, Неопределено, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, Параметры) Экспорт
ЭтаФорма.Доступность = Истина; // При необходимости разблокируем интерфейс пользователя.
Если РезультатВыполнения.Результат Тогда
ТекстСообщения = "Вес получен: " + РезультатВыполнения.Вес;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); Иначе
ТекстСообщения = НСтр("ru = 'При выполнении операции получения веса произошла ошибка:""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%", РезультатВыполнения.ОписаниеОшибки);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
Послесловие:
Для тестов были взяты напольные платформенные Весы с индикатором НВТ-9 с подключением по COM-порту. Драйверы весов получил от разработчика в виде файл zip, проблемы с установкой драйверов не возникло. На что стоит обратить внимание - так это разрядность платформы на клиенте, где будут использоваться данные весы и в этом плане только х32.
При тесте подключения оборудования в настройках экземпляра оборудования Электронных весов 1С:БП «намертво» зависает, если выбран не тот порт подключения в настройках.
Во вложении включено Расширение для 1С:БП 3.0.106.101 со всеми доработками, которые были описаны в статье, а также приложение для тестов COM-порта оборудования. Приложение по проверке COM-порта интуитивно понятно: указываем порт, битность, скорость и нажимаем кнопку «Начать тест».