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