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