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