xmlTSDGalery/CommonModules/ИнтеграцияПодсистемБПО/Ext/Module.bsl
kykaevv 88098aa86f Initial commit: конфигурация ТСД с обменом УНФ.
Включает перемещение по ячейкам, стикеровку МП, синхронизацию справочников и обработку кодов маркировки.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 12:50:57 +03:00

206 lines
13 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Подсистема "Библиотека подключаемого оборудования".
// ОбщийМодуль.ИнтеграцияПодсистемБПО.
//
// Серверные процедуры и функции интеграции с БСП:
// - Подписка на события БСП;
// - Обработка событий БСП;
// - Определение списка возможных подписок в БСП;
// - Вызов методов БСП, на которые выполнена подписка.
//
////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// Определяет события, на которые подписана эта библиотека.
//
// Параметры:
// Подписки - Структура
//
Процедура ПриОпределенииПодписокНаСобытияБСП(Подписки) Экспорт
// БазоваяФункциональность
Подписки.ПриДобавленииПодсистем = Истина;
Подписки.ПриДобавленииПараметровРаботыКлиентаПриЗапуске = Истина;
Подписки.ПриДобавленииОбработчиковУстановкиПараметровСеанса = Истина;
// ВнешниеКомпоненты
Подписки.ПриОпределенииИспользуемыхВнешнихКомпонент = Истина;
// РегламентныеЗадания
Подписки.ПриОпределенииНастроекРегламентныхЗаданий = Истина;
КонецПроцедуры
// См. ИнтеграцияПодсистемБСП.ПриОпределенииИспользуемыхВнешнихКомпонент.
//
Процедура ПриОпределенииИспользуемыхВнешнихКомпонент(Компоненты) Экспорт
МенеджерОборудования.ЗаполнитьИспользуемыеВнешниеКомпоненты(Компоненты);
КонецПроцедуры
#Область БазоваяФункциональность
// См. ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистем.
//
Процедура ПриДобавленииПодсистем(МодулиПодсистем) Экспорт
МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыБПО");
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
//
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
Если ОбщегоНазначенияБПО.РазделениеВключено()
И Не ОбщегоНазначенияБПО.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияБПО.ИспользуетсяБСП() Тогда
Параметры.Вставить("ИменаПодсистем", ОбщегоНазначенияБПОПовтИсп.ИменаПодсистем());
Если Параметры.Свойство("ТекущаяДатаНаКлиенте") Тогда
ДатаСеанса = ТекущаяДатаСеанса();
Параметры.Вставить("ПоправкаКВремениСеанса", ДатаСеанса - Параметры.ТекущаяДатаНаКлиенте);
Иначе
Параметры.Вставить("ПоправкаКВремениСеанса", 0);
КонецЕсли;
КонецЕсли;
ИдентификаторОбсужденияРаспределеннойФискализации = Неопределено;
Если ОбщегоНазначенияБПО.ИспользуетсяРаспределеннаяФискализация() Тогда
МодульРаспределеннаяФискализация = ОбщегоНазначенияБПО.ОбщийМодуль("РаспределеннаяФискализация");
ИдентификаторОбсужденияРаспределеннойФискализации = МодульРаспределеннаяФискализация.ПодключениеСистемыВзаимодействия();
КонецЕсли;
ВерсияБСП = ОбщегоНазначенияБПО.ВерсияБСП();
Параметры.Вставить("ВерсияБСП", ВерсияБСП);
Параметры.Вставить("ВерсияБиблиотеки", МенеджерОборудования.ВерсияБиблиотеки());
Параметры.Вставить("ИдентификаторОбсужденияРаспределеннойФискализации", ИдентификаторОбсужденияРаспределеннойФискализации);
Параметры.Вставить("СоответствиеТиповОборудования", МенеджерОборудования.СоответствиеТиповОборудования());
Параметры.Вставить("ДоступныеТипыОборудования", МенеджерОборудования.ДоступныеТипыОборудования(Истина));
УстановитьПривилегированныйРежим(Истина);
РабочееМесто = ПараметрыСеанса.РабочееМестоКлиента; // требуется прямое обращение к параметру сеанса
ПараметрыРабочегоМеста = МенеджерОборудования.ПараметрыРабочегоМестаПриЗапуске(РабочееМесто);
Параметры.Вставить("ПараметрыРабочегоМеста", ПараметрыРабочегоМеста);
ОборудованиеДляПереустановки = МенеджерОборудования.МакетыДляПереустановкиДрайверов(РабочееМесто);
Параметры.Вставить("ОборудованиеДляПереустановки", ОборудованиеДляПереустановки);
Параметры.Вставить("ПараметрыЛогированияОперацийСОборудованием", Неопределено);
Если ОбщегоНазначенияБПО.ИспользуетсяПодсистемаЛогирования() Тогда
МодульЛогированиеОперацийБПО = ОбщегоНазначенияБПО.ОбщийМодуль("ЛогированиеОперацийБПО");
ПараметрыЛогирования = МодульЛогированиеОперацийБПО.ПараметрыЛогированияОперацийСОборудованием();
Параметры.ПараметрыЛогированияОперацийСОборудованием = ПараметрыЛогирования;
КонецЕсли;
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиента.
//
Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПереименованийОбъектовМетаданных.
//
Процедура ПриДобавленииПереименованийОбъектовМетаданных(Итог) Экспорт
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса.
//
Процедура ПриДобавленииОбработчиковУстановкиПараметровСеанса(Обработчики) Экспорт
Обработчики.Вставить("РабочееМестоКлиента",
"МенеджерОборудованияВызовСервера.УстановитьПараметрыСеансаПодключаемогоОборудования");
КонецПроцедуры
// Вызов этой процедуры необходимо разместить в модуле сеанса в процедуре УстановкаПараметровСеанса
// согласно документации.
//
// Параметры:
// ИменаПараметровСеанса - Массив - устанавливаемые идентификаторы параметров сеанса
//
Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса) Экспорт
Если ИменаПараметровСеанса <> Неопределено Тогда
Для Каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
Если ИмяПараметра = "РабочееМестоКлиента" Тогда
МенеджерОборудованияВызовСервера.УстановитьПараметрыСеансаПодключаемогоОборудования(ИмяПараметра, Неопределено);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
// Вызов этой процедуры необходимо выполнить после обновления БПО, если не используется БСП
Процедура ОбновлениеИнформационнойБазыБПО() Экспорт
РегистрыСведений.ЗначенияЕМРЦ.ЗаполнитьЗначенияРегистраЕМРЦ();
МенеджерОборудования.ОбновитьПоставляемыеДрайвера();
МенеджерОборудования.ОбновитьУстановленныеДрайвера();
ОбновлениеИнформационнойБазыБПО.ОбновитьШаблоныЭтикетокИЦенников();
ОбновлениеИнформационнойБазыБПО.ОбновитьПараметрыРегистрацииОборудования();
ОбновлениеИнформационнойБазыБПО.УстановитьСрокХраненияОпераций()
КонецПроцедуры
#КонецОбласти
#Область РегламентныеЗадания
// Вызывается из процедуры РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий
// для установки доступности регламентного задания, определяет зависимость от функциональных опций.
//
// Параметры:
// Настройки - ТаблицаЗначений
// ФункциональнаяОпция - ОбъектМетаданныхФункциональнаяОпция
Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки, ФункциональнаяОпция = Неопределено) Экспорт
КонецПроцедуры
#КонецОбласти
#Область РегламентныеЗаданияТехнологияСервиса
// См. ОчередьЗаданийПереопределяемый.ПриПолученииСпискаШаблонов
Процедура ПриПолученииСпискаШаблонов(ШаблоныЗаданий) Экспорт
КонецПроцедуры
// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков
Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти