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