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