// Функция, при необходимости, подключает торговое оборудование и устанавливает // необходимые параметры. // // Параметры: // Вид - <ПеречислениеСсылка.ВидыТорговогоОборудования> // - Вид подключаемого оборудования. // // Клиент - <*> // - Клиент, для которого осуществляется подключение. // // Возвращаемое значение: // <ПеречислениеСсылка.ТООшибки*> - Результат работы функции. // Функция ПодключитьОборудование(Вид, Клиент) Результат = мНетОшибки; ПоследняяОшибка = мНетОшибки; ТО = ПолучитьТО(); Клиенты = ПолучитьПараметрСервераТО("Клиенты", "Соответствие"); СтруктураПоиска = Новый Структура("Вид", Вид); СтрокиТО = ТО.НайтиСтроки(СтруктураПоиска); Если СтрокиТО.Количество() = 0 Тогда Запрос = Новый Запрос( "ВЫБРАТЬ РАЗРЕШЕННЫЕ | РегТО.Идентификатор КАК Идентификатор, | РегТО.Модель.Наименование КАК Наименование, | РегТО.Модель КАК Модель, | РегТО.Параметры КАК Параметры |ИЗ | РегистрСведений.ТорговоеОборудование КАК РегТО |ГДЕ | РегТО.Вид = &Вид | И РегТО.Компьютер = &Компьютер | И РегТО.Подключено |"); Если Вид = ПЕречисления.ВидыТорговогоОборудования.ФискальныйРегистратор Тогда Запрос.Текст = Запрос.Текст + " | И РегТО.КассаККМ = &КассаККМ"; КонеЦесли; Запрос.УстановитьПараметр("Вид" , Вид); Запрос.УстановитьПараметр("Компьютер", ПолучитьИмяКомпьютераТО()); Если Вид = ПЕречисления.ВидыТорговогоОборудования.ФискальныйРегистратор Тогда КассаККМ =Клиент.КассаККМ; Если НЕ ЗначениеЗаполнено(Клиент.КассаККМ) Тогда КассаККМ = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнаяКассаККМ"); КонецЕсли; попытка Запрос.УстановитьПараметр("КассаККМ" , КассаККМ); исключение Запрос.УстановитьПараметр("КассаККМ" , неопределено); Конецпопытки; КонецЕсли; СтрокиТО = Запрос.Выполнить().Выгрузить(); СтрокаТО = Неопределено; Для Каждого СтрокаТО Из СтрокиТО Цикл Идентификатор = СтрокаТО.Идентификатор; Наименование = СтрокаТО.Наименование; Обработка = Неопределено; Параметры = ?(ПустаяСтрока(СтрокаТО.Параметры), Новый Структура(), ЗначениеИзСтрокиВнутр(СтрокаТО.Параметры)); Модель = СтрокаТО.Модель.Модель; мМодельПодключаемогоТО = Модель; Результат = РаботаСТорговымОборудованием.ПолучитьОбработкуОбслуживанияТО(СтрокаТО.Модель, Обработка); Если ЗначениеЗаполнено(Результат) Тогда Ошибка = ПолучитьТекстОшибкиТО(Результат); Сообщить(мМодельПодключаемогоТО + ": " + Ошибка, СтатусСообщения.Важное); ПоследняяОшибка = Результат; Продолжить; КонецЕсли; Объект = Неопределено; Результат = Обработка.СоздатьОбъектДрайвера(Объект, Модель, Параметры); Если ЗначениеЗаполнено(Результат) Тогда Ошибка = ПолучитьТекстОшибкиТО(Результат); Сообщить(мМодельПодключаемогоТО + ": " + Ошибка, СтатусСообщения.Важное); ПоследняяОшибка = Результат; Продолжить; КонецЕсли; текКассаККМ = Неопределено; Если Объект.Параметры.Свойство("КассаККМ",текКассаККМ) Тогда текКассаККМ = ПолучитьКассуККМ(СтрокаТО.Идентификатор); Объект.Параметры.Вставить("КассаККМ",текКассаККМ); КонецЕсли; Результат = Обработка.Подключить(Объект); Если ЗначениеЗаполнено(Результат) Тогда мОписаниеОшибки = Объект.ОписаниеОшибки; Ошибка = ПолучитьТекстОшибкиТО(Результат); Сообщить(мМодельПодключаемогоТО + ": " + Ошибка, СтатусСообщения.Важное); ПоследняяОшибка = Результат; Продолжить; КонецЕсли; Оборудование = ТО.Добавить(); Оборудование.Вид = Вид; Оборудование.Ссылки = 1; Оборудование.Идентификатор = Идентификатор; Оборудование.Наименование = Наименование; Оборудование.Обработка = Обработка; Оборудование.Объект = Объект; Оборудование.ИмяИсточникаВнешнегоСобытия = Обработка.ПолучитьИмяИсточникаВнешнегоСобытия(Объект); СообщенияКлиента = Клиенты[Клиент]; Сообщения = Обработка.ПолучитьОписаниеСобытий(Объект); Сообщения.Колонки.Добавить("Идентификатор"); Сообщения.Колонки.Добавить("Источник"); Сообщения.Колонки.Добавить("Вид"); Сообщения.ЗаполнитьЗначения(Идентификатор, "Идентификатор"); Сообщения.ЗаполнитьЗначения(Оборудование.ИмяИсточникаВнешнегоСобытия, "Источник"); Сообщения.ЗаполнитьЗначения(Вид, "Вид"); Если НЕ ЗначениеЗаполнено(СообщенияКлиента) Тогда Клиенты[Клиент] = Сообщения; Иначе Для Каждого СтрокаТаблицыИсточника Из Сообщения Цикл СтрокаТаблицыПриемника = Клиенты[Клиент].Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника); КонецЦикла; КонецЕсли; КонецЦикла; Иначе СтрокаТО = Неопределено; Для Каждого СтрокаТО Из СтрокиТО Цикл Если СтрокаТО.Ссылки = 0 Тогда текКассаККМ = Неопределено; Если СтрокаТО.Объект.Параметры.Свойство("КассаККМ",текКассаККМ) Тогда текКассаККМ = ПолучитьКассуККМ(СтрокаТО.Идентификатор); СтрокаТО.Объект.Параметры.Вставить("КассаККМ",текКассаККМ); КонецЕсли; мМодельПодключаемогоТО = СтрокаТО.Объект.Модель; Результат = СтрокаТО.Обработка.Подключить(СтрокаТО.Объект); Если ЗначениеЗаполнено(Результат) Тогда мОписаниеОшибки = СтрокаТО.Объект.ОписаниеОшибки; Ошибка = ПолучитьТекстОшибкиТО(Результат); Сообщить(мМодельПодключаемогоТО + ": " + Ошибка, СтатусСообщения.Важное); ПоследняяОшибка = Результат; Продолжить; КонецЕсли; СтрокаТО.ИмяИсточникаВнешнегоСобытия = СтрокаТО.Обработка.ПолучитьИмяИсточникаВнешнегоСобытия(СтрокаТО.Объект); КонецЕсли; СообщенияКлиента = Клиенты[Клиент]; Сообщения = СтрокаТО.Обработка.ПолучитьОписаниеСобытий(СтрокаТО.Объект); Сообщения.Колонки.Добавить("Идентификатор"); Сообщения.Колонки.Добавить("Источник"); Сообщения.Колонки.Добавить("Вид"); Сообщения.ЗаполнитьЗначения(СтрокаТО.Идентификатор, "Идентификатор"); Сообщения.ЗаполнитьЗначения(СтрокаТО.ИмяИсточникаВнешнегоСобытия, "Источник"); Сообщения.ЗаполнитьЗначения(СтрокаТО.Вид, "Вид"); Если НЕ ЗначениеЗаполнено(СообщенияКлиента) Тогда Клиенты[Клиент] = Сообщения; Иначе Для Каждого СтрокаТаблицыИсточника Из Сообщения Цикл СтрокаТаблицыПриемника = Клиенты[Клиент].Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника); КонецЦикла; КонецЕсли; СтрокаТО.Ссылки = СтрокаТО.Ссылки + 1; КонецЦикла; КонецЕсли; Возврат ПоследняяОшибка; КонецФункции // ПодключитьОборудование()