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