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