Включает перемещение по ячейкам, стикеровку МП, синхронизацию справочников и обработку кодов маркировки. Co-authored-by: Cursor <cursoragent@cursor.com>
1160 lines
73 KiB
Plaintext
1160 lines
73 KiB
Plaintext
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
#Область Системные
|
||
|
||
// Возвращает номер версии библиотеки подключаемого оборудования.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка.
|
||
//
|
||
Функция ВерсияБиблиотеки() Экспорт
|
||
|
||
ВерсияБиблиотекиБПО = "3.2.620";
|
||
Возврат ВерсияБиблиотекиБПО;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает список доступных типов оборудования.
|
||
//
|
||
// Параметры:
|
||
// ВключаяНеиспользуемые - Булево - по умолчанию Ложь, неиспользуемые не должны выводиться для выбора пользователем
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из ПеречислениеСсылка.ТипыПодключаемогоОборудования - Массив доступных типов подключаемого оборудования в конфигурации.
|
||
//
|
||
Функция ДоступныеТипыОборудования(ВключаяНеиспользуемые = Ложь) Экспорт
|
||
|
||
Возврат МенеджерОборудованияПовтИсп.ДоступныеТипыОборудования(ВключаяНеиспользуемые);
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает доступность добавление новых драйверов.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево.
|
||
//
|
||
Функция ДоступноДобавлениеНовыхДрайверов() Экспорт
|
||
|
||
#Если МобильноеПриложениеСервер Тогда
|
||
Результат = Ложь;
|
||
#Иначе
|
||
Результат = Истина;
|
||
ДобавлениеНовыхДрайверовДоступно = Результат;
|
||
СтандартнаяОбработка = Истина;
|
||
МенеджерОборудованияВызовСервераПереопределяемый.ДоступноДобавлениеНовыхДрайверов(ДобавлениеНовыхДрайверовДоступно, СтандартнаяОбработка);
|
||
Результат = ?(СтандартнаяОбработка, Результат, ДобавлениеНовыхДрайверовДоступно);
|
||
#КонецЕсли
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает доступность сетевого оборудования.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево.
|
||
//
|
||
Функция ДоступноСетевоеОборудование() Экспорт
|
||
|
||
#Если МобильноеПриложениеСервер Тогда
|
||
Результат = Ложь;
|
||
#Иначе
|
||
Результат = Истина;
|
||
СетевоеОборудованиеДоступно = Результат;
|
||
СтандартнаяОбработка = Истина;
|
||
МенеджерОборудованияВызовСервераПереопределяемый.ДоступноСетевоеОборудование(СетевоеОборудованиеДоступно, СтандартнаяОбработка);
|
||
Результат = ?(СтандартнаяОбработка, Результат, СетевоеОборудованиеДоступно);
|
||
#КонецЕсли
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает доступность инкассации в форме управление фискальным устройством.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево.
|
||
//
|
||
Функция ДоступноИнкассацияВУправлениеФискальнымУстройством() Экспорт
|
||
|
||
Результат = Ложь;
|
||
ИнкассацияДоступна = Результат;
|
||
СтандартнаяОбработка = Истина;
|
||
МенеджерОборудованияВызовСервераПереопределяемый.ДоступноИнкассацияВУправлениеФискальнымУстройством(ИнкассацияДоступна, СтандартнаяОбработка);
|
||
Результат = ?(СтандартнаяОбработка, Результат, ИнкассацияДоступна);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Ведется учет ИСМП в конфигурации
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - Ведется учет ИСМП в конфигурации
|
||
//
|
||
Функция ВедетсяУчетПродукцииИСМП() Экспорт
|
||
|
||
СтандартнаяОбработка = Истина;
|
||
УчетПродукцииИСМП = Ложь;
|
||
МенеджерОборудованияВызовСервераПереопределяемый.ВедетсяУчетПродукцииИСМП(УчетПродукцииИСМП, СтандартнаяОбработка);
|
||
Результат = ?(Не СтандартнаяОбработка, УчетПродукцииИСМП, Ложь);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает список доступных типов общедоступного оборудования.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из ПеречислениеСсылка.ТипыПодключаемогоОборудования - Массив доступных типов подключаемого оборудования в конфигурации.
|
||
//
|
||
Функция ДоступныеТипыОбщедоступногоОборудования() Экспорт
|
||
|
||
СписокТиповОборудования = Новый Массив;
|
||
СтандартнаяОбработка = Истина;
|
||
|
||
МенеджерОборудованияВызовСервераПереопределяемый.ДоступныеТипыСетевогоОборудования(СписокТиповОборудования, СтандартнаяОбработка);
|
||
|
||
Если СтандартнаяОбработка Тогда
|
||
СписокТиповОборудования.Очистить();
|
||
Если ОбщегоНазначенияБПО.ИспользуетсяЧекопечатающиеУстройства() Тогда
|
||
СписокТиповОборудования.Добавить(Перечисления.ТипыПодключаемогоОборудования.ККТ);
|
||
КонецЕсли;
|
||
Если ОбщегоНазначенияБПО.ИспользуютсяОблачныеККТ() Тогда
|
||
СписокТиповОборудования.Добавить(Перечисления.ТипыПодключаемогоОборудования.ОблачнаяККТ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Возврат СписокТиповОборудования;
|
||
|
||
КонецФункции
|
||
|
||
Функция ДрайверПоставляетсяВКонфигурации(ИдентификаторУстройства) Экспорт
|
||
|
||
Результат = ИдентификаторУстройства.ДрайверОборудования.Предопределенный
|
||
И Не ИдентификаторУстройства.ДрайверОборудования.СнятСПоддержки;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбновлениеДрайверов
|
||
|
||
// Обновить поставляемые драйвера БПО.
|
||
//
|
||
Процедура ОбновитьПоставляемыеДрайвера() Экспорт
|
||
|
||
МодулиОбновления = Новый Массив();
|
||
Если ОбщегоНазначенияБПО.ИспользуетсяУстройстваВвода() Тогда
|
||
МодулиОбновления.Добавить(ОбщегоНазначенияБПО.ОбщийМодуль("ОборудованиеУстройстваВвода"));
|
||
КонецЕсли;
|
||
Если ОбщегоНазначенияБПО.ИспользуетсяЧекопечатающиеУстройства() Тогда
|
||
МодулиОбновления.Добавить(ОбщегоНазначенияБПО.ОбщийМодуль("ОборудованиеЧекопечатающиеУстройства"));
|
||
КонецЕсли;
|
||
Если ОбщегоНазначенияБПО.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодулиОбновления.Добавить(ОбщегоНазначенияБПО.ОбщийМодуль("ОборудованиеПлатежныеСистемы"));
|
||
КонецЕсли;
|
||
Если ОбщегоНазначенияБПО.ИспользуетсяДисплеиПокупателя() Тогда
|
||
МодулиОбновления.Добавить(ОбщегоНазначенияБПО.ОбщийМодуль("ОборудованиеДисплеиПокупателя"));
|
||
КонецЕсли;
|
||
Если ОбщегоНазначенияБПО.ИспользуетсяВесовоеОборудование() Тогда
|
||
МодулиОбновления.Добавить(ОбщегоНазначенияБПО.ОбщийМодуль("ОборудованиеВесовоеОборудование"));
|
||
КонецЕсли;
|
||
ДрайвераОборудования = НоваяТаблицаПоставляемыхДрайверовОборудования();
|
||
Для Каждого МодульОбновления Из МодулиОбновления Цикл
|
||
МодульОбновления.ОбновитьПоставляемыеДрайвера(ДрайвераОборудования);
|
||
КонецЦикла;
|
||
|
||
Справочники.ДрайверыОборудования.ПриНачальномЗаполненииЭлементов(ДрайвераОборудования);
|
||
|
||
УдалитьУстаревшиеДрайвера();
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обновить установленные драйвера.
|
||
//
|
||
Процедура ОбновитьУстановленныеДрайвера() Экспорт
|
||
|
||
ТипыДрайверов = ТипыДрайверовОбязательныхКОбновлению();
|
||
УстановитьФлагОбновленияПоТипам(ТипыДрайверов);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Записывает изменения в переданном объекте.
|
||
// Для использования в обработчиках обновления.
|
||
//
|
||
// Параметры:
|
||
// Данные - Произвольный - объект, набор записей или менеджер константы, который
|
||
// необходимо записать.
|
||
// РегистрироватьНаУзлахПлановОбмена - Булево - включает регистрацию на узлах планов обмена при записи объекта.
|
||
// ВключитьБизнесЛогику - Булево - включает бизнес-логику при записи объекта.
|
||
//
|
||
Процедура ЗаписатьДанные(Знач Данные, Знач РегистрироватьНаУзлахПлановОбмена = Ложь, Знач ВключитьБизнесЛогику = Ложь) Экспорт
|
||
|
||
Данные.ОбменДанными.Загрузка = Не ВключитьБизнесЛогику;
|
||
Если Не РегистрироватьНаУзлахПлановОбмена Тогда
|
||
Данные.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
|
||
Данные.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
|
||
КонецЕсли;
|
||
|
||
Данные.Записать();
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устанавливает признак необходимости переустановки оборудования для подключаемого оборудования на рабочем месте.
|
||
//
|
||
// Параметры:
|
||
// РабочееМесто - СправочникСсылка.РабочиеМеста.
|
||
// ДрайверОборудования - СправочникСсылка.ДрайверыОборудования.
|
||
// Признак - Булево - требуется переустановить драйвер
|
||
//
|
||
Процедура УстановитьПризнакПереустановкиДрайвера(РабочееМесто, ДрайверОборудования, Признак) Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
Запрос = Новый Запрос(
|
||
"ВЫБРАТЬ
|
||
| ПодключаемоеОборудование.Ссылка
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
|ГДЕ
|
||
| ПодключаемоеОборудование.РабочееМесто = &РабочееМесто
|
||
| И ПодключаемоеОборудование.ДрайверОборудования = &ДрайверОборудования
|
||
| И НЕ ПодключаемоеОборудование.ТребуетсяПереустановка = &ТребуетсяПереустановка");
|
||
|
||
Запрос.УстановитьПараметр("РабочееМесто", РабочееМесто);
|
||
Запрос.УстановитьПараметр("ДрайверОборудования", ДрайверОборудования);
|
||
Запрос.УстановитьПараметр("ТребуетсяПереустановка", Признак);
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект();
|
||
СправочникОбъект.ТребуетсяПереустановка = Признак;
|
||
ЗаписатьДанные(СправочникОбъект)
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обновить установленные драйвера по справочнику подключаемого оборудования.
|
||
//
|
||
// Параметры:
|
||
// ТипОборудования - ПеречислениеСсылка.ТипыПодключаемогоОборудования
|
||
Процедура ОбновитьУстановленныеДрайвераПоТипу(ТипОборудования) Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
Запрос = Новый Запрос("ВЫБРАТЬ
|
||
| ПодключаемоеОборудование.Ссылка
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
|ГДЕ
|
||
| (ПодключаемоеОборудование.ТипОборудования = &ТипОборудования)");
|
||
|
||
Запрос.УстановитьПараметр("ТипОборудования", ТипОборудования);
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект();
|
||
СправочникОбъект.ТребуетсяПереустановка = Истина;
|
||
ЗаписатьДанные(СправочникОбъект)
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает таблицу поставляемых в библиотеке драйверов
|
||
//
|
||
// Возвращаемое значение:
|
||
// см. НоваяТаблицаПоставляемыхДрайверовОборудования
|
||
Функция ПоставляемыеДрайверы() Экспорт
|
||
|
||
Возврат МенеджерОборудованияПовтИсп.ПоставляемыеДрайверы();
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
|
||
#Область РаботаСОборудованием
|
||
|
||
// Возвращает список подключенного в справочнике ПО по установленному отбору
|
||
//
|
||
// Параметры:
|
||
// Отбор - см. МенеджерОборудованияКлиентСервер.СписокОборудованияОтбор.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из Структура.
|
||
//
|
||
Функция СписокОборудования(Отбор) Экспорт
|
||
|
||
Возврат Справочники.ПодключаемоеОборудование.СписокОборудования(Отбор);
|
||
|
||
КонецФункции
|
||
|
||
// Функция возвращает структуру с данными устройства.
|
||
//
|
||
// Параметры:
|
||
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование.
|
||
// КодЯзыка - Неопределено, Строка -
|
||
//
|
||
// Возвращаемое значение:
|
||
// см. Справочники.ПодключаемоеОборудование.ДанныеУстройства
|
||
//
|
||
Функция ДанныеУстройства(Идентификатор, КодЯзыка = Неопределено) Экспорт
|
||
|
||
Возврат Справочники.ПодключаемоеОборудование.ДанныеУстройства(Идентификатор, КодЯзыка);
|
||
|
||
КонецФункции
|
||
|
||
// Функция возвращает по идентификатору устройства его параметры
|
||
//
|
||
// Параметры:
|
||
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование.
|
||
//
|
||
// Возвращаемое значение:
|
||
// - Произвольный
|
||
// - Структура
|
||
//
|
||
Функция ПараметрыУстройства(Идентификатор) Экспорт
|
||
|
||
Возврат Справочники.ПодключаемоеОборудование.ПараметрыУстройства(Идентификатор);
|
||
|
||
КонецФункции
|
||
|
||
// Процедура предназначена для сохранения параметров устройства
|
||
// в реквизит Параметры типа хранилище значения в элементе справочника.
|
||
//
|
||
// Параметры:
|
||
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование.
|
||
// Параметры - Структура - параметры устройства.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево.
|
||
//
|
||
Функция СохранитьПараметрыУстройства(Идентификатор, Параметры) Экспорт
|
||
|
||
Возврат Справочники.ПодключаемоеОборудование.СохранитьПараметрыУстройства(Идентификатор, Параметры);
|
||
|
||
КонецФункции
|
||
|
||
// Функция возвращает структуру с данными драйвера.
|
||
//
|
||
// Параметры:
|
||
// ИдентификаторДрайвера - СправочникСсылка.ДрайверыОборудования - идентификатор драйвера.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура.
|
||
//
|
||
Функция ДанныеДрайвераОборудования(ИдентификаторДрайвера) Экспорт
|
||
|
||
Возврат Справочники.ДрайверыОборудования.ДанныеДрайвераОборудования(ИдентификаторДрайвера);
|
||
|
||
КонецФункции
|
||
|
||
// Функция возвращает драйвера по типу оборудования
|
||
//
|
||
// Параметры:
|
||
// ТипОборудования - ПеречислениеСсылка.ТипыПодключаемогоОборудования - типы подключаемого оборудования.
|
||
// ТолькоДоступные - Булево - признак только доступных драйверов.
|
||
// СнятыеСПоддержкиДрайвера - Булево - признак отображения снятых с поддержки драйверов.
|
||
// РекомендуемоеИспользование - Булево - признак отображения рекомендуемых к использованию драйверов.
|
||
//
|
||
// Возвращаемое значение:
|
||
// СписокЗначений.
|
||
//
|
||
Функция ДрайверыПоТипуОборудования(ТипОборудования, ТолькоДоступные = Истина, СнятыеСПоддержкиДрайвера = Ложь, РекомендуемоеИспользование = Ложь) Экспорт
|
||
|
||
Возврат Справочники.ДрайверыОборудования.ДрайверыПоТипуОборудования(ТипОборудования, ТолькоДоступные, СнятыеСПоддержкиДрайвера, РекомендуемоеИспользование);
|
||
|
||
КонецФункции
|
||
|
||
// Функция создает запись в справочнике о новом драйвере.
|
||
//
|
||
// Параметры:
|
||
// ПараметрыСоздания - см. МенеджерОборудованияКлиентСервер.ПараметрыСозданияНовогоДрайвера
|
||
//
|
||
// Возвращаемое значение:
|
||
// СправочникСсылка.ДрайверыОборудования.
|
||
//
|
||
Функция СоздатьДрайверОборудования(ПараметрыСоздания) Экспорт
|
||
|
||
Возврат Справочники.ДрайверыОборудования.СоздатьНовыйЭлемент(ПараметрыСоздания);
|
||
|
||
КонецФункции
|
||
|
||
// Функция создает запись в справочнике о новом драйвере.
|
||
//
|
||
// Параметры:
|
||
// ПараметрыСоздания - см. МенеджерОборудованияКлиентСервер.ПараметрыСозданияНовогоПодключаемогоОборудования
|
||
//
|
||
// Возвращаемое значение:
|
||
// СправочникСсылка.ПодключаемоеОборудование.
|
||
//
|
||
Функция СоздатьПодключаемоеОборудование(ПараметрыСоздания) Экспорт
|
||
|
||
Возврат Справочники.ПодключаемоеОборудование.СоздатьНовыйЭлемент(ПараметрыСоздания);
|
||
|
||
КонецФункции
|
||
|
||
// Получить параметры подключения в XML
|
||
//
|
||
// Параметры:
|
||
// Параметры - Структура - Параметры подключения.
|
||
// ТипОборудования - Строка - Тип оборудования
|
||
// Возвращаемое значение:
|
||
// Строка -
|
||
//
|
||
Функция ПолучитьПараметрыXML(Параметры, ТипОборудования = Неопределено) Экспорт
|
||
|
||
Результат = "";
|
||
|
||
Если Параметры <> Неопределено Тогда
|
||
|
||
ЗаписьXML = Новый ЗаписьXML;
|
||
ЗаписьXML.УстановитьСтроку("UTF-8");
|
||
ЗаписьXML.ЗаписатьОбъявлениеXML();
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameters");
|
||
|
||
Если Не ПустаяСтрока(ТипОборудования) Тогда
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameter");
|
||
ЗаписьXML.ЗаписатьАтрибут("Name", "EquipmentType");
|
||
ЗаписьXML.ЗаписатьАтрибут("Value", XMLСтрока(ТипОборудования));
|
||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||
КонецЕсли;
|
||
|
||
Для Каждого Параметр ИЗ Параметры Цикл
|
||
Если Лев(Параметр.Ключ, 2) = "P_" Тогда
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameter");
|
||
ЗаписьXML.ЗаписатьАтрибут("Name", Сред(Параметр.Ключ, 3));
|
||
ЗаписьXML.ЗаписатьАтрибут("Value", XMLСтрока(Параметр.Значение));
|
||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||
Результат = ЗаписьXML.Закрыть();
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Получить параметры подключения из XML
|
||
//
|
||
// Параметры:
|
||
// ПараметрыXML - Строка - Параметры подключения в XML.
|
||
// Возвращаемое значение:
|
||
// Структура -
|
||
//
|
||
Функция ЗагрузитьПараметрыXML(ПараметрыXML) Экспорт
|
||
|
||
Параметры = Новый Структура();
|
||
|
||
Если НЕ ПустаяСтрока(ПараметрыXML) Тогда
|
||
|
||
ЧтениеXML = Новый ЧтениеXML;
|
||
ЧтениеXML.УстановитьСтроку(ПараметрыXML);
|
||
ЧтениеXML.ПерейтиКСодержимому();
|
||
|
||
Если ЧтениеXML.Имя = "Parameters" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
|
||
Пока ЧтениеXML.Прочитать() Цикл
|
||
Если ЧтениеXML.Имя = "Parameter" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
|
||
ПараметрИмя = ЧтениеXML.ЗначениеАтрибута("Name");
|
||
ПараметрЗначение = ЧтениеXML.ЗначениеАтрибута("Value");
|
||
Если ПараметрИмя <> "EquipmentType" Тогда
|
||
ПараметрИмя = "P_" + ПараметрИмя;
|
||
Параметры.Вставить(ПараметрИмя, ПараметрЗначение);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Параметры приложения для драйвера.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка
|
||
//
|
||
Функция ПараметрыПриложенияДляДрайвера() Экспорт
|
||
|
||
ПриложениеНазвание = "1C:Connected Equipment Library, ver 3.2";
|
||
ПриложениеВерсия = ВерсияБиблиотеки();
|
||
|
||
ЗаписьXML = Новый ЗаписьXML;
|
||
ЗаписьXML.УстановитьСтроку("UTF-8");
|
||
ЗаписьXML.ЗаписатьОбъявлениеXML();
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("ApplicationSettings");
|
||
ЗаписьXML.ЗаписатьАтрибут("ApplicationName", XMLСтрока(ПриложениеНазвание));
|
||
ЗаписьXML.ЗаписатьАтрибут("ApplicationVersion", XMLСтрока(ПриложениеВерсия));
|
||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||
Результат = ЗаписьXML.Закрыть();
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ЕМРЦ
|
||
|
||
// Получает цену ЕМРЦ из данных информационной базы на дату.
|
||
//
|
||
// Параметры:
|
||
// ОсобенностьУчета - ПеречислениеСсылка.ВидыМаркированнойПродукцииБПО - тип маркированной продукции для проверки цены.
|
||
// Период - Дата - дата проверки цены.
|
||
// ЕМРЦ - Число - значение ЕМРЦ.
|
||
//
|
||
Процедура ПолучитьЦенуЕМРЦ(ОсобенностьУчета, Период = Неопределено, ЕМРЦ = 0) Экспорт
|
||
// ++ Локализация
|
||
РегистрыСведений.ЗначенияЕМРЦ.ПолучитьЦенуЕМРЦ(Перечисления.ВидыМаркированнойПродукцииБПО.Табак, Период, ЕМРЦ);
|
||
// -- Локализация
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ПлатежныеОперации
|
||
|
||
// Проверяет были ли совершены сторнирования по документу основания.
|
||
//
|
||
// Параметры:
|
||
// ДокументОснования - ОпределяемыйТип.ОснованиеФискальнойОперацииБПО - документ основание.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево
|
||
//
|
||
Функция ВозможнаОтменаОплатыПоЧеку(ДокументОснования) Экспорт
|
||
|
||
Если ОбщегоНазначенияБПО.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемы = ОбщегоНазначенияБПО.ОбщийМодуль("ОборудованиеПлатежныеСистемы");
|
||
Возврат МодульОборудованиеПлатежныеСистемы.ВозможнаОтменаОплатыПоЧеку(ДокументОснования);
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ПодключениеОборудования
|
||
|
||
// Добавить на форму список подключаемого оборудования
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения
|
||
// ТипыОборудования - см. МенеджерОборудованияКлиентСервер.ПараметрыТипыОборудования
|
||
Процедура ПриСозданииНаСервере(Форма, ТипыОборудования) Экспорт
|
||
|
||
ПодключаемоеОборудование = ПодключаемоеОборудованиеНаФорме(Форма);
|
||
Если ЕстьПодключаемоеОборудование() Тогда
|
||
ПодключаемоеОборудование.ТипыПО = ТипыОборудования;
|
||
Отбор = МенеджерОборудованияКлиентСервер.СписокОборудованияОтбор();
|
||
Отбор.ТипыПО = ТипыОборудования;
|
||
РабочееМестоКлиентаНаСервере = МенеджерОборудованияВызовСервера.РабочееМестоКлиента();
|
||
Если ЗначениеЗаполнено(РабочееМестоКлиентаНаСервере) Тогда
|
||
ПодключаемоеОборудование.СписокОборудования = СписокОборудования(Отбор);
|
||
Иначе
|
||
ПодключаемоеОборудование.ТребуетсяЗапросСпискаОборудованияНаКлиенте = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Проверяет существует ли в базе подключаемое оборудование, и возвращает
|
||
// Истина если в справочнике Подключаемое оборудование отсутствует хотя бы один элемент.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево
|
||
Функция ЕстьПодключаемоеОборудование() Экспорт
|
||
|
||
Если ОбщегоНазначенияБПО.РазделениеВключено()
|
||
И Не ОбщегоНазначенияБПО.ДоступноИспользованиеРазделенныхДанных() Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
|
||
| ПодключаемоеОборудование.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование";
|
||
|
||
Результат = Запрос.Выполнить();
|
||
Возврат Не Результат.Пустой();
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область УстаревшиеПроцедурыИФункции
|
||
|
||
#Область Интеграция
|
||
|
||
// Устарела: следует использовать ИнтеграцияПодсистемБПО.ПриОпределенииНастроекРегламентныхЗаданий.
|
||
// Вызывается из процедуры РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий
|
||
// для установки доступности регламентного задания, определяет зависимость от функциональных опций.
|
||
//
|
||
// Параметры:
|
||
// Настройки - ТаблицаЗначений
|
||
// ФункциональнаяОпция - ОбъектМетаданныхФункциональнаяОпция
|
||
Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки, ФункциональнаяОпция) Экспорт
|
||
|
||
ИнтеграцияПодсистемБПО.ПриОпределенииНастроекРегламентныхЗаданий(Настройки, ФункциональнаяОпция);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устарела: следует использовать ИнтеграцияПодсистемБПО.ПриПолученииСпискаШаблонов.
|
||
// См. ОчередьЗаданийПереопределяемый.ПриПолученииСпискаШаблонов
|
||
Процедура ПриПолученииСпискаШаблонов(ШаблоныЗаданий) Экспорт
|
||
|
||
ИнтеграцияПодсистемБПО.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устарела: следует использовать ИнтеграцияПодсистемБПО.ПриОпределенииПсевдонимовОбработчиков.
|
||
// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков
|
||
Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт
|
||
|
||
ИнтеграцияПодсистемБПО.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
// Функция возвращает драйвера по типу оборудования
|
||
//
|
||
// Параметры:
|
||
// ТипОборудования - ПеречислениеСсылка.ТипыПодключаемогоОборудования - типы подключаемого оборудования.
|
||
// ТолькоДоступные - Булево - признак только доступных драйверов.
|
||
// СнятыеСПоддержкиДрайвера - Булево - признак отображения снятых с поддержки драйверов.
|
||
// РекомендуемоеИспользование - Булево - признак отображения рекомендуемых к использованию драйверов.
|
||
//
|
||
// Возвращаемое значение:
|
||
// СписокЗначений.
|
||
//
|
||
Функция ДрайвераПоТипуОборудования(ТипОборудования, ТолькоДоступные = Истина, СнятыеСПоддержкиДрайвера = Ложь, РекомендуемоеИспользование = Ложь) Экспорт
|
||
|
||
Возврат ДрайверыПоТипуОборудования(ТипОборудования, ТолькоДоступные, СнятыеСПоддержкиДрайвера, РекомендуемоеИспользование);
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныйПрограммныйИнтерфейс
|
||
|
||
#Область ТипыОборудования
|
||
|
||
// Структура типа оборудования
|
||
//
|
||
// Параметры:
|
||
// ТипОборудования - ПеречислениеСсылка.ТипыПодключаемогоОборудования -
|
||
// Возвращаемое значение:
|
||
// Структура
|
||
//
|
||
Функция ПараметрыТипыОборудования(ТипОборудования = Неопределено) Экспорт
|
||
|
||
ТипыОборудования = МенеджерОборудованияПовтИсп.ПараметрыТипыОборудования();
|
||
ТипыОборудования = ОбщегоНазначенияБПО.СкопироватьРекурсивно(ТипыОборудования); // Структура
|
||
|
||
Если ЗначениеЗаполнено(ТипОборудования) Тогда
|
||
ИмяЗначенияПеречисления = ОбщегоНазначенияБПО.ИмяЗначенияПеречисления(ТипОборудования);
|
||
Если ТипыОборудования.Свойство(ИмяЗначенияПеречисления) Тогда
|
||
ТипыОборудования[ИмяЗначенияПеречисления] = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Возврат ТипыОборудования;
|
||
|
||
КонецФункции
|
||
|
||
// Формирования массива типов оборудования
|
||
//
|
||
// Параметры:
|
||
// ТипыОборудования - Структура, Массив, Строка - тип оборудования.
|
||
// Возвращаемое значение:
|
||
// Массив из ОпределяемыйТип.ТипыПодключаемогоОборудования
|
||
//
|
||
Функция МассивТиповОборудования(ТипыОборудования) Экспорт
|
||
|
||
МассивТипов = Новый Массив();
|
||
Если ТипЗнч(ТипыОборудования) = Тип("Строка") Тогда
|
||
|
||
ТипыВМассиве = СтрРазделить(ТипыОборудования, ",", Ложь);
|
||
Для Каждого ТипОборудования Из ТипыВМассиве Цикл
|
||
МассивТипов.Добавить(ТипОборудованияПоСтроке(ТипОборудования));
|
||
КонецЦикла;
|
||
|
||
ИначеЕсли ТипЗнч(ТипыОборудования) = Тип("Массив") Тогда
|
||
|
||
ДоступныеТипыОборудования = ДоступныеТипыОборудования(Истина);
|
||
Для Каждого ТипОборудования Из ТипыОборудования Цикл
|
||
|
||
Если ТипЗнч(ТипОборудования) = Тип("Строка") Тогда
|
||
МассивТипов.Добавить(ТипОборудованияПоСтроке(ТипОборудования));
|
||
ИначеЕсли ДоступныеТипыОборудования.Найти(ТипОборудования) <> Неопределено Тогда
|
||
МассивТипов.Добавить(ТипОборудования);
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
ИначеЕсли ТипЗнч(ТипыОборудования) = Тип("Структура") Тогда
|
||
|
||
СоответствиеТипов = СоответствиеТиповОборудования();
|
||
Для каждого Тип Из ТипыОборудования Цикл
|
||
|
||
Если Тип.Значение Тогда
|
||
МассивТипов.Добавить(СоответствиеТипов[Тип.Ключ]);
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат МассивТипов;
|
||
|
||
КонецФункции
|
||
|
||
// Получить соответствие типов оборудования
|
||
//
|
||
// Возвращаемое значение:
|
||
// Соответствие -
|
||
//
|
||
Функция СоответствиеТиповОборудования() Экспорт
|
||
|
||
Возврат МенеджерОборудованияПовтИсп.СоответствиеТиповОборудования();
|
||
|
||
КонецФункции
|
||
|
||
// Получить тип оборудования по строке
|
||
//
|
||
// Параметры:
|
||
// ТипОборудования - Строка - тип оборудования.
|
||
// Возвращаемое значение:
|
||
// ПеречислениеСсылка.ТипыПодключаемогоОборудования -
|
||
//
|
||
Функция ТипОборудованияПоСтроке(ТипОборудования) Экспорт
|
||
|
||
Соответствие = СоответствиеТиповОборудования();
|
||
Возврат Соответствие.Получить(ТипОборудования);
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает массив прочих типов оборудования, не входящих в БПО
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из ПеречислениеСсылка.ТипыПодключаемогоОборудования
|
||
//
|
||
Функция ДоступныеТипыНесертифицированногоОборудования() Экспорт
|
||
|
||
ТипыОборудования = Новый Массив();
|
||
ТипыОборудования.Добавить(Перечисления.ТипыПодключаемогоОборудования.Несертифицируемое);
|
||
|
||
|
||
Возврат ТипыОборудования;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
// Заполняет данные о макетах
|
||
//
|
||
// Параметры:
|
||
// ИмяДрайвера - Строка-
|
||
// ИмяМакетаДрайвера - Строка-
|
||
// МакетДоступен - Булево-
|
||
// ШаблонЛокализации - Строка-
|
||
// КодЯзыка - Строка-
|
||
//
|
||
Процедура ЗаполнитьДанныеМакетов(ИмяДрайвера, ИмяМакетаДрайвера, МакетДоступен, ШаблонЛокализации, КодЯзыка = "") Экспорт
|
||
|
||
ИмяМакетаДрайвера = ?(ПустаяСтрока(ИмяМакетаДрайвера), ИмяДрайвера, ИмяМакетаДрайвера);
|
||
ИмяМакетаДрайвераПатч = ИмяМакетаДрайвера + "_fix";
|
||
МакетДрайвера = Метаданные.ОбщиеМакеты.Найти(ИмяМакетаДрайвера);
|
||
МакетДрайвераПатч = Метаданные.ОбщиеМакеты.Найти(ИмяМакетаДрайвераПатч);
|
||
|
||
Если МакетДрайвераПатч <> Неопределено И МакетДрайвераПатч.ТипМакета = Метаданные.СвойстваОбъектов.ТипМакета.ВнешняяКомпонента Тогда
|
||
МакетДоступен = Истина;
|
||
Если Не ПустаяСтрока(КодЯзыка) Тогда // Проверяем файл с наличием локализации
|
||
МакетШаблонЛокализации = ИмяМакетаДрайвераПатч + "_" + КодЯзыка;
|
||
МакетШаблон = Метаданные.ОбщиеМакеты.Найти(МакетШаблонЛокализации);
|
||
Если МакетШаблон <> Неопределено И МакетШаблон.ТипМакета = Метаданные.СвойстваОбъектов.ТипМакета.ТекстовыйДокумент Тогда
|
||
ШаблонЛокализации = ПолучитьОбщийМакет(МакетШаблонЛокализации).ПолучитьТекст();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
ИмяМакетаДрайвера = ИмяМакетаДрайвераПатч;
|
||
ИначеЕсли МакетДрайвера <> Неопределено И МакетДрайвера.ТипМакета = Метаданные.СвойстваОбъектов.ТипМакета.ВнешняяКомпонента Тогда
|
||
МакетДоступен = Истина;
|
||
Если Не ПустаяСтрока(КодЯзыка) Тогда // Проверяем файл с наличием локализации
|
||
МакетШаблонЛокализации = ИмяМакетаДрайвера + "_" + КодЯзыка;
|
||
МакетШаблон = Метаданные.ОбщиеМакеты.Найти(МакетШаблонЛокализации);
|
||
Если МакетШаблон <> Неопределено И МакетШаблон.ТипМакета = Метаданные.СвойстваОбъектов.ТипМакета.ТекстовыйДокумент Тогда
|
||
ШаблонЛокализации = ПолучитьОбщийМакет(МакетШаблонЛокализации).ПолучитьТекст();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Иначе // Проверяем наличие драйвера по маске типа "*_ru"
|
||
Если ПустаяСтрока(КодЯзыка) Тогда
|
||
КодЯзыка = ТекущийЯзык().КодЯзыка;
|
||
КонецЕсли;
|
||
ИмяМакетаДрайвера = ИмяМакетаДрайвера + "_" + КодЯзыка;
|
||
МакетШаблон = Метаданные.ОбщиеМакеты.Найти(ИмяМакетаДрайвера);
|
||
МакетДоступен = МакетШаблон <> Неопределено И МакетШаблон.ТипМакета = Метаданные.СвойстваОбъектов.ТипМакета.ВнешняяКомпонента;
|
||
КонецЕсли;
|
||
|
||
ИмяМакетаДрайвера = "ОбщийМакет." + ИмяМакетаДрайвера;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Заполняет данные об используемых внешних компонентах
|
||
//
|
||
// Параметры:
|
||
// Компоненты - ТаблицаЗначений
|
||
Процедура ЗаполнитьИспользуемыеВнешниеКомпоненты(Компоненты) Экспорт
|
||
|
||
Если ОбщегоНазначенияБПО.ПодсистемаСуществует("СтандартныеПодсистемы.ГенерацияШтрихкода") Тогда
|
||
НоваяСтрока = Компоненты.Добавить();
|
||
НоваяСтрока.Идентификатор = "Barcode";
|
||
НоваяСтрока.ОбновлятьАвтоматически = Истина;
|
||
КонецЕсли;
|
||
|
||
Если ОбщегоНазначенияБПО.ПодсистемаСуществует("ПоддержкаОборудования.ЭлектронныеСертификаты") Тогда
|
||
МодульЭлектронныеСертификатыНСПККлиентСервер = ОбщегоНазначенияБПО.ОбщийМодуль("ЭлектронныеСертификатыНСПККлиентСервер");
|
||
ОписаниеКомпоненты = МодульЭлектронныеСертификатыНСПККлиентСервер.ОписаниеКомпоненты();
|
||
НоваяСтрока = Компоненты.Добавить();
|
||
НоваяСтрока.Идентификатор = ОписаниеКомпоненты.ИмяОбъекта;
|
||
НоваяСтрока.ОбновлятьАвтоматически = Истина;
|
||
КонецЕсли;
|
||
|
||
// добавить драйверы оборудования которое присутсвует в справочнике подключаемое оборудование
|
||
ИдентификаторыДрайверов = МенеджерОборудованияПовтИсп.ИдентификаторыДрайверов();
|
||
Для Каждого Идентификатор Из ИдентификаторыДрайверов Цикл
|
||
НоваяСтрока = Компоненты.Добавить();
|
||
НоваяСтрока.Идентификатор = Идентификатор;
|
||
НоваяСтрока.ОбновлятьАвтоматически = Истина;
|
||
КонецЦикла
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает пустую таблицу поставляемых драйверов оборудования.
|
||
//
|
||
// Возвращаемое значение:
|
||
// ТаблицаЗначений:
|
||
// * ТипОборудования - ПеречислениеСсылка.ТипыПодключаемогоОборудования - тип оборудования
|
||
// * Наименование - Строка - наименование оборудования
|
||
// * ИдентификаторОбъекта - Строка - уникальный идентификатор объекта
|
||
// * ИмяДрайвера - Строка - внутреннее имя драйвера
|
||
// * ИмяМакетаДрайвера - Строка - имя макета драйвера, если оно отличается от имени драйвера
|
||
// * ВерсияДрайвера - Строка
|
||
// * СнятСПоддержки - Булево - признак того, что драйвер снят с поддержки
|
||
// * СпособПодключения - ПеречислениеСсылка.СпособПодключенияДрайвера
|
||
// * ЛокальныйРежим - Булево - признак локальности драйвера
|
||
// * СетевойРежим - Булево - признак работы в сетевом режиме
|
||
// * СерверныйРежим - Булево
|
||
// * БезопасноеПодключение - Булево - Подключение драйвера в отдельном потоке
|
||
// * РекомендуемоеИспользование - Булево - Драйвер рекомендован к использованию
|
||
//
|
||
Функция НоваяТаблицаПоставляемыхДрайверовОборудования() Экспорт
|
||
|
||
ДрайвераОборудования = Новый ТаблицаЗначений;
|
||
// Общие свойства.
|
||
ДрайвераОборудования.Колонки.Добавить("ТипОборудования" , Новый ОписаниеТипов("ПеречислениеСсылка.ТипыПодключаемогоОборудования"));
|
||
ДрайвераОборудования.Колонки.Добавить("Наименование" , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0)));
|
||
ДрайвераОборудования.Колонки.Добавить("ИдентификаторОбъекта", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0)));
|
||
ДрайвераОборудования.Колонки.Добавить("ИмяДрайвера" , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0)));
|
||
ДрайвераОборудования.Колонки.Добавить("ИмяМакетаДрайвера" , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0)));
|
||
ДрайвераОборудования.Колонки.Добавить("ВерсияДрайвера" , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0)));
|
||
ДрайвераОборудования.Колонки.Добавить("СнятСПоддержки" , Новый ОписаниеТипов("Булево"));
|
||
ДрайвераОборудования.Колонки.Добавить("СпособПодключения" , Новый ОписаниеТипов("ПеречислениеСсылка.СпособПодключенияДрайвера"));
|
||
ДрайвераОборудования.Колонки.Добавить("БезопасноеПодключение" , Новый ОписаниеТипов("Булево"));
|
||
ДрайвераОборудования.Колонки.Добавить("РекомендуемоеИспользование" , Новый ОписаниеТипов("Булево"));
|
||
// Параметры работы
|
||
ДрайвераОборудования.Колонки.Добавить("ЛокальныйРежим", Новый ОписаниеТипов("Булево"));
|
||
ДрайвераОборудования.Колонки.Добавить("СетевойРежим" , Новый ОписаниеТипов("Булево"));
|
||
ДрайвераОборудования.Колонки.Добавить("СерверныйРежим", Новый ОписаниеТипов("Булево"));
|
||
Возврат ДрайвераОборудования;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает массив содержащий имена макетов для переустановки драйверов, для которых требуется переустановка,
|
||
// а так же снимает флаг признака переустановки у найденных элементов.
|
||
//
|
||
// Параметры:
|
||
// РабочееМесто - СправочникСсылка.РабочиеМеста - Текущее рабочее место
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из Структура - имена макетов внешних компонент, которые требуется переустановить
|
||
Функция МакетыДляПереустановкиДрайверов(РабочееМесто) Экспорт
|
||
|
||
ОборудованиеДляПереустановки = Новый Массив();
|
||
|
||
// Переустановить драйверы помеченные флагом для переустановки.
|
||
Если ЗначениеЗаполнено(РабочееМесто) Тогда
|
||
СписокОтбор = МенеджерОборудованияКлиентСервер.СписокОборудованияОтбор();
|
||
СписокОтбор.РабочееМесто = РабочееМесто;
|
||
СписокОборудования = СписокОборудования(СписокОтбор);
|
||
ДрайверыОборудования = Новый Массив();
|
||
Для Каждого Оборудование Из СписокОборудования Цикл
|
||
Если Оборудование.ПодключениеИзМакета И Оборудование.МакетДоступен И Оборудование.ТребуетсяПереустановка Тогда
|
||
ОписаниеОборудованияДляПереустановки = Новый Структура();
|
||
ОписаниеОборудованияДляПереустановки.Вставить("ИмяМакетаДрайвера", Оборудование.ИмяМакетаДрайвера);
|
||
ОписаниеОборудованияДляПереустановки.Вставить("Наименование", Оборудование.Наименование);
|
||
ОписаниеОборудованияДляПереустановки.Вставить("Версия", Оборудование.ВерсияДрайвера);
|
||
ОписаниеОборудованияДляПереустановки.Вставить("МакетДоступен", Оборудование.МакетДоступен);
|
||
ОписаниеОборудованияДляПереустановки.Вставить("ПодключениеИзМакета", Оборудование.ПодключениеИзМакета);
|
||
ОборудованиеДляПереустановки.Добавить(ОписаниеОборудованияДляПереустановки);
|
||
ДрайверыОборудования.Добавить(Оборудование.ДрайверОборудования);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
УстановитьПризнакПереустановкиДрайверовПоРабочемуМесту(
|
||
РабочееМесто,
|
||
ДрайверыОборудования,
|
||
Ложь);
|
||
КонецЕсли;
|
||
|
||
Возврат ОборудованиеДляПереустановки;
|
||
|
||
КонецФункции
|
||
|
||
|
||
// Установить флаг обновления по переданным типам подключаемого оборудования
|
||
//
|
||
// Параметры:
|
||
// ТипыОборудования - Массив из ПеречислениеСсылка.ТипыПодключаемогоОборудования
|
||
//
|
||
Процедура УстановитьФлагОбновленияПоТипам(ТипыОборудования) Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
Запрос = Новый Запрос("ВЫБРАТЬ
|
||
| ПодключаемоеОборудование.Ссылка
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
|ГДЕ
|
||
| (ПодключаемоеОборудование.ТипОборудования В (&ТипыОборудования))");
|
||
|
||
Запрос.УстановитьПараметр("ТипыОборудования", ТипыОборудования);
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект();
|
||
СправочникОбъект.ТребуетсяПереустановка = Истина;
|
||
ЗаписатьДанные(СправочникОбъект);
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
#Область РабочиеМеста
|
||
|
||
Функция ПараметрыРабочегоМестаПриЗапуске(РабочееМесто) Экспорт
|
||
|
||
ПараметрыРабочегоМеста = МенеджерОборудованияКлиентСервер.НовыеПараметрыРабочегоМеста();
|
||
ПараметрыРабочегоМеста.Рабочееместо = РабочееМесто;
|
||
Если ЗначениеЗаполнено(РабочееМесто) Тогда
|
||
ЗаполнитьЗаписанныеРеквизитыРабочегоМеста(РабочееМесто, ПараметрыРабочегоМеста.ЗаписанныеРеквизитыПоиска);
|
||
КонецЕсли;
|
||
ЗаполнитьАктуальныеРеквизитыРабочегоМеста(ПараметрыРабочегоМеста.АктуальныеРеквизитыПоиска);
|
||
Возврат ПараметрыРабочегоМеста;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаполнитьЗаписанныеРеквизитыРабочегоМеста(РабочееМесто, РеквизитыРабочегоМеста) Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
Если ЗначениеЗаполнено(РабочееМесто) Тогда
|
||
Реквизиты = ОбщегоНазначенияБПО.ЗначенияРеквизитовОбъекта(РабочееМесто, "Код, ИмяКомпьютера, MACАдрес, MACАдреса");
|
||
РеквизитыРабочегоМеста.MACАдреса = Реквизиты.MACАдреса.Выгрузить().ВыгрузитьКолонку("Адрес");
|
||
РеквизитыРабочегоМеста.ИмяКомпьютера = Реквизиты.ИмяКомпьютера;
|
||
РеквизитыРабочегоМеста.ИдентификаторКлиента = Реквизиты.Код;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗаполнитьАктуальныеРеквизитыРабочегоМеста(РеквизитыРабочегоМеста) Экспорт
|
||
|
||
Если РеквизитыРабочегоМеста = Неопределено Тогда
|
||
РеквизитыРабочегоМеста = МенеджерОборудованияКлиентСервер.НовыеРеквизитыПоискаРабочегоМеста();
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(РеквизитыРабочегоМеста.ИмяКомпьютера) Тогда
|
||
ИмяКомпьютера = ОбщегоНазначенияБПО.ИмяКомпьютераКлиента();
|
||
РеквизитыРабочегоМеста.ИмяКомпьютера = ИмяКомпьютера;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(РеквизитыРабочегоМеста.ИдентификаторКлиента) Тогда
|
||
ИдентификаторКлиента = МенеджерОборудованияКлиентСервер.ИдентификаторКлиентаДляРабочегоМеста();
|
||
РеквизитыРабочегоМеста.ИдентификаторКлиента = ИдентификаторКлиента;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОбновитьРеквизитыРабочегоМеста(РабочееМесто, АктуальныеРеквизитыРабочегоМеста) Экспорт
|
||
|
||
Если Не ЗначениеЗаполнено(РабочееМесто) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
РеквизитыРабочегоМеста = МенеджерОборудованияКлиентСервер.НовыеРеквизитыПоискаРабочегоМеста();
|
||
ЗаполнитьЗаписанныеРеквизитыРабочегоМеста(РабочееМесто, РеквизитыРабочегоМеста);
|
||
РеквизитыДляЗаписи = Новый Структура;
|
||
|
||
Если ЗначениеЗаполнено(АктуальныеРеквизитыРабочегоМеста.ИмяКомпьютера)
|
||
И АктуальныеРеквизитыРабочегоМеста.ИмяКомпьютера <> РеквизитыРабочегоМеста.ИмяКомпьютера Тогда
|
||
РеквизитыДляЗаписи.Вставить("ИмяКомпьютера", АктуальныеРеквизитыРабочегоМеста.ИмяКомпьютера);
|
||
КонецЕсли;
|
||
|
||
Если АктуальныеРеквизитыРабочегоМеста.MACАдреса.Количество() > 0
|
||
И Не ОбщегоНазначенияБПОКлиентСервер.МассивыСовпадают(
|
||
АктуальныеРеквизитыРабочегоМеста.MACАдреса, РеквизитыРабочегоМеста.MACАдреса) Тогда
|
||
РеквизитыДляЗаписи.Вставить("MACАдреса", АктуальныеРеквизитыРабочегоМеста.MACАдреса);
|
||
КонецЕсли;
|
||
|
||
Если РеквизитыДляЗаписи.Количество() > 0 Тогда
|
||
ОбъектРабочееМесто = РабочееМесто.ПолучитьОбъект();
|
||
Если РеквизитыДляЗаписи.Свойство("Код") Тогда
|
||
ОбъектРабочееМесто.Код = РеквизитыДляЗаписи.Код;
|
||
КонецЕсли;
|
||
Если РеквизитыДляЗаписи.Свойство("ИмяКомпьютера") Тогда
|
||
ОбъектРабочееМесто.ИмяКомпьютера = РеквизитыДляЗаписи.ИмяКомпьютера;
|
||
КонецЕсли;
|
||
Если РеквизитыДляЗаписи.Свойство("MACАдреса") Тогда
|
||
ОбъектРабочееМесто.MACАдреса.Очистить();
|
||
Для Каждого MACАдрес Из РеквизитыДляЗаписи.MACАдреса Цикл
|
||
НовыйАдрес = ОбъектРабочееМесто.MACАдреса.Добавить();
|
||
НовыйАдрес.Адрес = MACАдрес;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Если ОбъектРабочееМесто.ПроверитьЗаполнение() Тогда
|
||
ОбъектРабочееМесто.Записать();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
Процедура УдалитьУстаревшиеДрайвера()
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ДрайверыОборудования.Ссылка КАК Ссылка,
|
||
| ДрайверыОборудования.Представление КАК Представление
|
||
|ИЗ
|
||
| Справочник.ДрайверыОборудования КАК ДрайверыОборудования
|
||
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
| ПО ДрайверыОборудования.Ссылка = ПодключаемоеОборудование.ДрайверОборудования
|
||
|ГДЕ
|
||
| ДрайверыОборудования.ТипОборудования = ЗНАЧЕНИЕ(Перечисление.ТипыПодключаемогоОборудования.ПустаяСсылка)
|
||
| И ПодключаемоеОборудование.Ссылка ЕСТЬ NULL";
|
||
|
||
Результат = Запрос.Выполнить();
|
||
Если Результат.Пустой() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Выборка = Результат.Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
УстаревшийДрайверОбъект = Выборка.Ссылка.ПолучитьОбъект();
|
||
Попытка
|
||
УстаревшийДрайверОбъект.Заблокировать();
|
||
УстаревшийДрайверОбъект.ОбменДанными.Загрузка = Истина;
|
||
УстаревшийДрайверОбъект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
|
||
УстаревшийДрайверОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
|
||
УстаревшийДрайверОбъект.Удалить();
|
||
Исключение
|
||
ТекстОшибки = СтрШаблон(НСтр("ru = 'Не удается заблокировать удаляемый драйвер %1.'",
|
||
ОбщегоНазначенияБПО.КодОсновногоЯзыка()), Выборка.Представление);
|
||
ОбщегоНазначенияБПО.ЗаписатьОшибкуВЖурналРегистрации(ТекстОшибки);
|
||
КонецПопытки;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПодключаемоеОборудованиеНаФорме(Форма)
|
||
|
||
ЗначенияСвойств = Новый Структура("ПодключаемоеОборудованиеБПО", Null);
|
||
ЗаполнитьЗначенияСвойств(ЗначенияСвойств, Форма);
|
||
|
||
Результат = ЗначенияСвойств.ПодключаемоеОборудованиеБПО;
|
||
|
||
Если ТипЗнч(Результат) <> Тип("Структура") Тогда
|
||
Если Результат = Null Тогда
|
||
ДобавляемыеРеквизиты = Новый Массив;
|
||
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПодключаемоеОборудованиеБПО", Новый ОписаниеТипов));
|
||
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
|
||
КонецЕсли;
|
||
|
||
Результат = Новый Структура;
|
||
Результат.Вставить("СписокОборудования", Новый Массив());
|
||
Результат.Вставить("ТребуетсяЗапросСпискаОборудованияНаКлиенте", Ложь);
|
||
Результат.Вставить("ТипыПО", ПараметрыТипыОборудования());
|
||
|
||
Форма.ПодключаемоеОборудованиеБПО = Результат;
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Устанавливает признак необходимости переустановки оборудования для подключаемого оборудования на рабочем месте.
|
||
//
|
||
// Параметры:
|
||
// РабочееМесто - СправочникСсылка.РабочиеМеста.
|
||
// ДрайверыОборудования - Массив из СправочникСсылка.ДрайверыОборудования.
|
||
// Признак - Булево - требуется переустановить драйвер
|
||
//
|
||
Процедура УстановитьПризнакПереустановкиДрайверовПоРабочемуМесту(РабочееМесто, ДрайверыОборудования, Признак) Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
Запрос = Новый Запрос(
|
||
"ВЫБРАТЬ
|
||
| ПодключаемоеОборудование.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
|ГДЕ
|
||
| (ПодключаемоеОборудование.РабочееМесто = &РабочееМесто ИЛИ ПодключаемоеОборудование.ТипПодключения = ЗНАЧЕНИЕ(Перечисление.ТипыПодключенияОборудования.ОбщийДоступ))
|
||
| И ПодключаемоеОборудование.ДрайверОборудования В(&ДрайверыОборудования)
|
||
| И ПодключаемоеОборудование.ТребуетсяПереустановка <> &ТребуетсяПереустановка");
|
||
|
||
Запрос.УстановитьПараметр("РабочееМесто", РабочееМесто);
|
||
Запрос.УстановитьПараметр("ДрайверыОборудования", ДрайверыОборудования);
|
||
Запрос.УстановитьПараметр("ТребуетсяПереустановка", Признак);
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект();
|
||
СправочникОбъект.ТребуетсяПереустановка = Признак;
|
||
ЗаписатьДанные(СправочникОбъект)
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает массив типов оборудования которые необходимо переустановить при обновлении
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из ПеречислениеСсылка.ТипыПодключаемогоОборудования
|
||
//
|
||
Функция ТипыДрайверовОбязательныхКОбновлению()
|
||
|
||
Результат = Новый Массив();
|
||
Результат.Добавить(Перечисления.ТипыПодключаемогоОборудования.ККТ);
|
||
Результат.Добавить(Перечисления.ТипыПодключаемогоОборудования.ПринтерЭтикеток);
|
||
Результат.Добавить(Перечисления.ТипыПодключаемогоОборудования.СканерШтрихкода);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецЕсли
|