#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
Результат = Новый Массив;
Результат.Добавить("ТипРасходов");
Результат.Добавить("ВариантРаспределенияРасходовУпр");
Результат.Добавить("ВариантРаспределенияРасходовРегл");
Результат.Добавить("ВариантРаспределенияРасходовНУ");
Результат.Добавить("ТипЗначения; ТипЗначения");
Результат.Добавить("ВидДеятельностиРасходов");
Результат.Добавить("ВариантРаздельногоУчетаНДС");
Результат.Добавить("ПризнаютсяВРасходахНДД");
СтатьиРасходовЛокализация.ДополнитьБлокируемыеРеквизитыОбъекта(Результат);
Возврат Результат;
КонецФункции
Функция ПолучитьРеквизитыСтатьиРасходов(Знач СтатьяРасходов) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| СтатьиРасходов.СпособРаспределенияПоНаправлениямДеятельности КАК СпособРаспределения,
| СтатьиРасходов.ТипЗначения КАК ТипЗначения,
| СтатьиРасходов.СтатьяРасходов КАК СтатьяРасходов
|ИЗ
| ПланВидовХарактеристик.СтатьиРасходов КАК СтатьиРасходов
|ГДЕ
| СтатьиРасходов.Ссылка = &СтатьяРасходов
|");
Запрос.УстановитьПараметр("СтатьяРасходов", СтатьяРасходов);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СпособРаспределения = Выборка.СпособРаспределения;
ТребуетсяСпособРаспределения = Не Выборка.ТипЗначения.СодержитТип(Тип("СправочникСсылка.НаправленияДеятельности"));
ТипЗначения = Выборка.ТипЗначения;
СтатьяРасходовРаспределение = Выборка.СтатьяРасходов;
Иначе
СпособРаспределения = Справочники.СпособыРаспределенияПоНаправлениямДеятельности.ПустаяСсылка();
ТребуетсяСпособРаспределения = Ложь;
ТипЗначения = Неопределено;
СтатьяРасходовРаспределение = ПланыВидовХарактеристик.СтатьиРасходов.ПустаяСсылка();
КонецЕсли;
СтруктураРеквизитов = Новый Структура("СпособРаспределения, ТребуетсяСпособРаспределения, ТипЗначения",
СпособРаспределения,
ТребуетсяСпособРаспределения,
ТипЗначения);
СтруктураРеквизитов.Вставить("СтатьяРасходов", СтатьяРасходовРаспределение);
Возврат СтруктураРеквизитов;
КонецФункции
Функция ПолучитьПравилоРаспределения(СтатьяРасходов) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| СтатьиРасходов.ПравилоРаспределенияНаСебестоимость КАК ПравилоРаспределения
|ИЗ
| ПланВидовХарактеристик.СтатьиРасходов КАК СтатьиРасходов
|ГДЕ
| СтатьиРасходов.Ссылка = &СтатьяРасходов
| И (СтатьиРасходов.ВариантРаспределенияРасходовУпр = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаСебестоимостьТоваров)
| ИЛИ СтатьиРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаСебестоимостьТоваров))
|");
Запрос.УстановитьПараметр("СтатьяРасходов", СтатьяРасходов);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ПравилоРаспределения = Выборка.ПравилоРаспределения;
Иначе
ПравилоРаспределения = Неопределено;
КонецЕсли;
Возврат ПравилоРаспределения;
КонецФункции
Процедура ЗаполнитьСписокХозяйственныхОпераций(СписокОпераций, ВариантРаспределенияРасходовУпр = Неопределено, ВариантРаспределенияРасходовРегл = Неопределено) Экспорт
СписокОпераций.Очистить();
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.АвансовыйОтчет, НСтр("ru = 'Прочие расходы подотчетного лица'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика, НСтр("ru = 'Услуги сторонних организаций'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПрочиеРасходы, НСтр("ru = 'Выдача денежных средств на прочие расходы'"));
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнутреннееПотребление") Тогда
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию, НСтр("ru = 'Внутреннее потребление товаров'"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьКачествоТоваров") Тогда
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПорчаТоваров, НСтр("ru = 'Изменение стоимости испорченного товара'"));
КонецЕсли;
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПересортицаТоваров, НСтр("ru = 'Изменение стоимости при пересортице'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.СписаниеТоваров, НСтр("ru = 'Списания недостач товаров'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.РеализацияКлиенту, НСтр("ru = 'Реализация услуг и прочих активов'"));
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнеоборотныеАктивы2_2")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьВнеоборотныеАктивы2_4") Тогда
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПринятиеКУчетуОС, НСтр("ru = 'Принятие к учету ОС'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ИзменениеПараметровАмортизацииОС, НСтр("ru = 'Изменение параметров ОС'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.СписаниеОС, НСтр("ru = 'Списание ОС'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПринятиеКУчетуНМА, НСтр("ru = 'Принятие к учету НМА'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ИзменениеПараметровАмортизацииНМА, НСтр("ru = 'Изменение параметров НМА'"));
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.СписаниеНМА, НСтр("ru = 'Списание НМА'"));
КонецЕсли;
Если ВариантРаспределенияРасходовУпр = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности
ИЛИ ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности Тогда
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.СписаниеДебиторскойЗадолженности, НСтр("ru = 'Списание задолженности партнеров'"));
Если ПолучитьФункциональнуюОпцию("ИспользоватьОплатуПлатежнымиКартами") Тогда
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ОтчетБанкаПоОперациямЭквайринга, НСтр("ru = 'Эквайринговая комиссия'"));
КонецЕсли;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьРетроБонусыКлиентов") Тогда
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ОтражениеПремииКлиентаРетроБонус, НСтр("ru = 'Отражение премий клиентам (ретро-бонусы)'"));
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьЗаполнениеАналитик(Объект, Реквизиты = "", НепроверяемыеРеквизиты = Неопределено, Отказ = Ложь,
ДополнительныеПараметры = Неопределено) Экспорт
Ошибки = Новый Структура;
Ошибки.Вставить("СписокОшибок", Новый Массив);
Ошибки.Вставить("ГруппыОшибок", Новый Соответствие);
Ошибки.Вставить("ПрефиксОбъекта", ?(ТипЗнч(Объект)=Тип("ФормаКлиентскогоПриложения"), "", "Объект."));
МассивОбработки = Новый Массив;
Если ТипЗнч(Реквизиты) = Тип("Массив") Тогда
МассивОбработки = Реквизиты;
Иначе
МассивОбработки.Добавить(Реквизиты);
КонецЕсли;
Для Каждого ЭлементМассива Из МассивОбработки Цикл
Если ТипЗнч(ЭлементМассива) = Тип("Структура") Тогда
ПроверкаЗаполненияАналитикТЧОбъекта(Объект,
ЭлементМассива,
НепроверяемыеРеквизиты,
Ошибки,
ДополнительныеПараметры);
Иначе
ЭтоОбъектНаФорме = Ложь;
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура")
И ДополнительныеПараметры.Свойство("ЭтоОбъектНаФорме")Тогда
ЭтоОбъектНаФорме = ДополнительныеПараметры.ЭтоОбъектНаФорме;
КонецЕсли;
ПроверкаЗаполненияАналитикОбъекта(Объект, ЭлементМассива, НепроверяемыеРеквизиты, Ошибки, ЭтоОбъектНаФорме);
КонецЕсли;
КонецЦикла;
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура")
И ДополнительныеПараметры.Свойство("ПрограммнаяПроверка") Тогда
ДополнительныеПараметры.Вставить("Ошибки", Ошибки);
Иначе
Если Ошибки.СписокОшибок.Количество() <> 0 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция СтатьиСОбязательнымЗаполнениемАналитики(МассивСтатей) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Статьи.Ссылка КАК Ссылка
|ИЗ
| ПланВидовХарактеристик.СтатьиРасходов КАК Статьи
|ГДЕ
| Статьи.Ссылка В (&МассивСтатей)
| И Статьи.КонтролироватьЗаполнениеАналитики");
Запрос.УстановитьПараметр("МассивСтатей", МассивСтатей);
Результат = Запрос.Выполнить();
СписокСтатей = Новый Массив;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
СписокСтатей.Добавить(Выборка.Ссылка);
КонецЦикла;
Возврат СписокСтатей;
КонецФункции
Функция ЗаблокированныеСтатьиРасходов() Экспорт
ЗаблокированныеСтатьи = Новый СписокЗначений;
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.СебестоимостьПродаж);
Если ПолучитьФункциональнуюОпцию("БазоваяВерсия") Тогда
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.КурсовыеРазницы);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.НачисленныйНДСПриВыкупеМногооборотнойТары);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ПогрешностьРасчетаСебестоимости);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ПрибыльУбытокПрошлыхЛет);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.РазницыСтоимостиВозвратаИФактическойСтоимостиТоваров);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ФормированиеРезервовПоСомнительнымДолгам);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.НДСНалоговогоАгента);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("УправлениеТорговлей") Тогда
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ДоначислениеИмущественныхНалоговИАмортизации);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.СторноПроизводственныхЗатрат);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ПроизводственныеРасходыПрошлыхПериодов);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.РасходыПриСписанииОС);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.РасходыПриПродажеОС);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ВыбытиеМатериальныхЦенностей);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ПродажаМатериальныхЦенностей);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.ДолгосрочныеАктивыКПродаже);
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют") Тогда
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.КурсовыеРазницы);
ЗаблокированныеСтатьи.Добавить(ПланыВидовХарактеристик.СтатьиРасходов.РасходыПриКонвертацииВалюты);
КонецЕсли;
СтатьиРасходовЛокализация.ДополнитьСписокЗаблокированныхСтатей(ЗаблокированныеСтатьи);
Возврат ЗаблокированныеСтатьи;
КонецФункции
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
Настройки.ПриНачальномЗаполненииЭлемента = Истина;
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
#Область ВыбытияТоваровВПрошлыхПериодах
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ВыбытияТоваровВПрошлыхПериодах";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Выбытия товаров в прошлых периодах'", КодыЯзыков);
Элемент.Код = "000000012";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область ДоначислениеИмущественныхНалоговИАмортизации
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ДоначислениеИмущественныхНалоговИАмортизации";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Доначисление имущественных налогов и амортизации'", КодыЯзыков);
Элемент.Код = "000000011";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.ПрочиеРасходы");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область КурсовыеРазницы
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "КурсовыеРазницы";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Курсовые разницы'", КодыЯзыков);
Элемент.Код = "000000003";
Элемент.ТипЗначения = Новый ОписаниеТипов("ПеречислениеСсылка.АналитикаКурсовыхРазниц");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ПрочаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область НачисленныйНДСПриВыкупеМногооборотнойТары
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "НачисленныйНДСПриВыкупеМногооборотнойТары";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Начисленный НДС при выкупе многооборотной тары'", КодыЯзыков);
Элемент.Код = "000000005";
Элемент.ТипРасходов = Перечисления.ТипыРасходов.ПродажаТоваров;
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Партнеры");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область НДСНалоговогоАгента
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "НДСНалоговогоАгента";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'НДС Налогового агента'", КодыЯзыков);
Элемент.Код = "000000009";
Элемент.ТипРасходов = Перечисления.ТипыРасходов.ЗакупкаТоваров;
Элемент.ТипЗначения = Новый ОписаниеТипов("ДокументСсылка.ПриобретениеТоваровУслуг");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаСебестоимостьТоваров;
Элемент.ПравилоРаспределенияНаСебестоимость = Перечисления.ПравилаРаспределенияНаСебестоимостьТоваров.ПропорциональноСебестоимости;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область ПогрешностьРасчетаСебестоимости
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ПогрешностьРасчетаСебестоимости";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Погрешность расчета себестоимости'", КодыЯзыков);
Элемент.Код = "000000002";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область ПрибыльУбытокПрошлыхЛет
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ПрибыльУбытокПрошлыхЛет";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Прибыль (убыток) прошлых лет'", КодыЯзыков);
Элемент.Код = "000000007";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ПрочаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область РазницыСтоимостиВозвратаИФактическойСтоимостиТоваров
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "РазницыСтоимостиВозвратаИФактическойСтоимостиТоваров";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Разницы стоимости возврата и фактической стоимости товаров'", КодыЯзыков);
Элемент.Код = "000000004";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область РасходыЛизинговыеПлатежи
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "РасходыЛизинговыеПлатежи";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Расходы по лизинговым платежам за вычетом сумм амортизации'", КодыЯзыков);
Элемент.Код = "000000015";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область РасходыНаПлатон
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "РасходыНаПлатон";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Расходы на ""Платон""'", КодыЯзыков);
Элемент.Код = "000000013";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область РасходыПриКонвертацииВалюты
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "РасходыПриКонвертацииВалюты";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Расходы при конвертации валюты'", КодыЯзыков);
Элемент.Код = "000000014";
Элемент.ТипЗначения = Новый ОписаниеТипов("ПеречислениеСсылка.АналитикаКурсовыхРазниц");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ПрочаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область СебестоимостьПродаж
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "СебестоимостьПродаж";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Себестоимость продаж'", КодыЯзыков);
Элемент.Код = "000000001";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область ТорговыйСбор
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ТорговыйСбор";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Торговый сбор'", КодыЯзыков);
Элемент.Код = "000000010";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Склады");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область ФормированиеРезервовПоСомнительнымДолгам
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ФормированиеРезервовПоСомнительнымДолгам";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Формирование резервов по сомнительным долгам'", КодыЯзыков);
Элемент.Код = "000000008";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Организации");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область ОтклонениеВСтоимостиТоваров
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ОтклонениеВСтоимостиТоваров";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Отклонение в стоимости товаров'", КодыЯзыков);
Элемент.Код = "000000016";
Элемент.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности");
Элемент.ВариантРаспределенияРасходовРегл = Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности;
Элемент.ВидДеятельностиРасходов = Перечисления.ВидыДеятельностиРасходов.ОсновнаяДеятельность;
ДополнитьЭлементСтатьиРасходов(Элемент);
#КонецОбласти
#Область СторноПроизводственныхЗатрат
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "СторноПроизводственныхЗатрат";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Сторно производственных затрат'", КодыЯзыков);
Элемент.Код = "000000017";
#КонецОбласти
#Область ПроизводственныеРасходыПрошлыхПериодов
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ПроизводственныеРасходыПрошлыхПериодов";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Производственные расходы прошлых периодов'", КодыЯзыков);
Элемент.Код = "000000018";
#КонецОбласти
#Область РасходыПриСписанииОС
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "РасходыПриСписанииОС";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Расходы, связанные со списанием ОС'", КодыЯзыков);
Элемент.Код = "000000019";
#КонецОбласти
#Область ВыбытиеМатериальныхЦенностей
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ВыбытиеМатериальныхЦенностей";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Выбытие материальных ценностей'", КодыЯзыков);
Элемент.Код = "000000021";
#КонецОбласти
#Область ПродажаМатериальныхЦенностей
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ПродажаМатериальныхЦенностей";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Продажа материальных ценностей'", КодыЯзыков);
Элемент.Код = "000000023";
#КонецОбласти
#Область РасходыПриПродажеОС
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "РасходыПриПродажеОС";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Расходы, связанные с продажей ОС'", КодыЯзыков);
Элемент.Код = "000000020";
#КонецОбласти
#Область ДолгосрочныеАктивыКПродаже
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ДолгосрочныеАктивыКПродаже";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Долгосрочные активы к продаже'", КодыЯзыков);
Элемент.Код = "000000022";
#КонецОбласти
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Функция СоответствиеСтатейВариантамРаспределения() Экспорт
СоответствиеСтатейВариантамРаспределения = Новый Соответствие;
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.КурсовыеРазницы, Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.НачисленныйНДСПриВыкупеМногооборотнойТары, Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.ПогрешностьРасчетаСебестоимости, Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.ПрибыльУбытокПрошлыхЛет, Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.РазницыСтоимостиВозвратаИФактическойСтоимостиТоваров, Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.СебестоимостьПродаж, Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.ФормированиеРезервовПоСомнительнымДолгам, Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
СоответствиеСтатейВариантамРаспределения.Вставить(ПланыВидовХарактеристик.СтатьиРасходов.НДСНалоговогоАгента, Перечисления.ВариантыРаспределенияРасходов.НаСебестоимостьТоваров);
Возврат СоответствиеСтатейВариантамРаспределения;
КонецФункции
Функция СоответствиеСтатейТипамРасходов() Экспорт
СоответствиеСтатейТипамРасходов = Новый Соответствие;
Возврат СоответствиеСтатейТипамРасходов;
КонецФункции
Функция ТипыДокументовСтатейРаспределяемыхНаПродажу() Экспорт
МассивТиповДокументов = Новый Массив;
МассивДокументов = СписокДокументовДляСтатейРаспределяемыхНаПродажу().ВыгрузитьЗначения();
Для каждого МетаданныеДокумента Из МассивДокументов Цикл
МассивТиповДокументов.Добавить("ДокументСсылка." + МетаданныеДокумента.Имя);
КонецЦикла;
ТипыДокументовСтрокой = СтрСоединить(МассивТиповДокументов, ",");
Возврат Новый ОписаниеТипов(ТипыДокументовСтрокой);
КонецФункции
Функция ИдентификаторыДокументовСтатейРаспределяемыхНаПродажу() Экспорт
МассивИдентификаторов = Новый Массив;
Для каждого МетаданныеДокумента Из СписокДокументовДляСтатейРаспределяемыхНаПродажу() Цикл
Если Не ПравоДоступа("Чтение", МетаданныеДокумента.Значение) ИЛИ Не МетаданныеДокумента.Пометка Тогда
Продолжить;
КонецЕсли;
МассивИдентификаторов.Добавить(ОбщегоНазначения.ИдентификаторОбъектаМетаданных(МетаданныеДокумента.Значение));
КонецЦикла;
Возврат МассивИдентификаторов;
КонецФункции
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыСервер.ОбработкаПолученияДанныхВыбораПВХСтатьиРасходов(ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область СлужебныеПроцедурыИФункцииЗаполненияАналитик
Функция ИменаРеквизитовСтатьиИАналитики(СтрокаРеквизитов, НепроверяемыеРеквизиты = Неопределено, ПрефиксТабличнойЧасти = "")
Если ПустаяСтрока(СтрокаРеквизитов) Тогда
Если НепроверяемыеРеквизиты <> Неопределено Тогда
НепроверяемыеРеквизиты.Добавить(ПрефиксТабличнойЧасти + "АналитикаРасходов");
КонецЕсли;
Возврат Новый Структура("СтатьяРасходов", "АналитикаРасходов");
КонецЕсли;
СтруктураОбработки = Новый Структура(СтрокаРеквизитов);
СтруктураВозврата = Новый Структура;
ПредыдущийКлюч = Неопределено;
Для Каждого КлючИЗначение Из СтруктураОбработки Цикл
Если ПредыдущийКлюч = Неопределено Тогда
ПредыдущийКлюч = КлючИЗначение.Ключ;
Иначе
СтруктураВозврата.Вставить(ПредыдущийКлюч, КлючИЗначение.Ключ);
ПредыдущийКлюч = Неопределено;
Если НепроверяемыеРеквизиты <> Неопределено Тогда
НепроверяемыеРеквизиты.Добавить(ПрефиксТабличнойЧасти + КлючИЗначение.Ключ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат СтруктураВозврата;
КонецФункции
Процедура ПроверкаЗаполненияАналитикОбъекта(Объект, Реквизиты, НепроверяемыеРеквизиты, Ошибки, ЭтоОбъектНаФорме)
ДанныеОбъекта = Объект;
МассивСтатей = Новый Массив;
СтруктураРеквизитов = ИменаРеквизитовСтатьиИАналитики(Реквизиты, НепроверяемыеРеквизиты);
Если ЭтоОбъектНаФорме И ТипЗнч(Объект) = Тип("Структура")
И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект, "Объект") Тогда
ДанныеОбъекта = Объект.Объект;
КонецЕсли;
Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
Статья = ДанныеОбъекта[КлючИЗначение.Ключ];
Если ЗначениеЗаполнено(Статья) Тогда
МассивСтатей.Добавить(Статья);
КонецЕсли;
КонецЦикла;
ОбязательныеСтатьи = СтатьиСОбязательнымЗаполнениемАналитики(МассивСтатей);
Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
Статья = ДанныеОбъекта[КлючИЗначение.Ключ];
Аналитика = ДанныеОбъекта[КлючИЗначение.Значение];
Если Не (ОбязательныеСтатьи.Найти(Статья) = Неопределено
Или ЗначениеЗаполнено(Аналитика)) Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(
Ошибки,
Ошибки.ПрефиксОбъекта + КлючИЗначение.Значение,
НСтр("ru='Аналитика расходов не заполнена'"), "");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПроверкаЗаполненияАналитикТЧОбъекта(Объект,
Реквизиты,
НепроверяемыеРеквизиты,
Ошибки,
ДополнительныеПараметры = Неопределено)
ОбщийМассивСтатей = Новый Массив;
Для Каждого ОписаниеТЧ Из Реквизиты Цикл
ИмяТЧ = ОписаниеТЧ.Ключ;
СтруктураРеквизитов = ИменаРеквизитовСтатьиИАналитики(ОписаниеТЧ.Значение, НепроверяемыеРеквизиты, ИмяТЧ + ".");
Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
МассивСтатей = Объект[ИмяТЧ].ВыгрузитьКолонку(КлючИЗначение.Ключ);
Для Каждого Статья Из МассивСтатей Цикл
ОбщийМассивСтатей.Добавить(Статья);
КонецЦикла;
КонецЦикла;
КонецЦикла;
ОбязательныеСтатьи = СтатьиСОбязательнымЗаполнениемАналитики(ОбщийМассивСтатей);
Для Каждого ОписаниеТЧ Из Реквизиты Цикл
ИмяТЧ = ОписаниеТЧ.Ключ;
ТЧ = Объект[ИмяТЧ];
Если ТипЗнч(ТЧ) = Тип("ТаблицаЗначений")
И ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
ТабличнаяЧасть = Неопределено;
ПредставлениеТЧ = ДополнительныеПараметры.ПредставлениеТЧ;
ПредставленияРеквизитов = ДополнительныеПараметры.ПредставленияРеквизитов;
Иначе
МетаданныеОбъекта = Объект.Метаданные();
ТабличнаяЧасть = МетаданныеОбъекта.ТабличныеЧасти.Найти(ИмяТЧ);
ПредставлениеТЧ = ТабличнаяЧасть.Синоним;
ПредставленияРеквизитов = Неопределено;
КонецЕсли;
СтруктураРеквизитов = ИменаРеквизитовСтатьиИАналитики(ОписаниеТЧ.Значение, Неопределено, ИмяТЧ + ".");
Для Индекс = 0 По ТЧ.Количество() - 1 Цикл
СтрокаТЧ = ТЧ[Индекс];
Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
Если ТабличнаяЧасть = Неопределено Тогда
ПредставлениеРеквизита = ПредставленияРеквизитов[КлючИЗначение.Значение];
Иначе
ПредставлениеРеквизита = ТабличнаяЧасть.Реквизиты.Найти(КлючИЗначение.Значение).Синоним;
КонецЕсли;
Статья = СтрокаТЧ[КлючИЗначение.Ключ];
Аналитика = СтрокаТЧ[КлючИЗначение.Значение];
Если Не (ОбязательныеСтатьи.Найти(Статья) = Неопределено
Или ЗначениеЗаполнено(Аналитика)) Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(
Ошибки,
Ошибки.ПрефиксОбъекта + ИмяТЧ + "[%1]." + КлючИЗначение.Значение,
СтрШаблон(НСтр("ru='Не заполнено поле ""%1"" в строке %2 списка ""%3""'"),
ПредставлениеРеквизита, СтрокаТЧ.НомерСтроки, ПредставлениеТЧ),
ИмяТЧ,
Индекс,
СтрШаблон(НСтр("ru='Не заполнено поле ""%1"" в строке %2 списка ""%3""'"),
ПредставлениеРеквизита, СтрокаТЧ.НомерСтроки, ПредставлениеТЧ));
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ДополнитьЭлементСтатьиРасходов(Элемент)
Если Не ЗначениеЗаполнено(Элемент.ТипРасходов) Тогда
Элемент.ТипРасходов = Перечисления.ТипыРасходов.ПрочиеРасходы;
КонецЕсли;
Если Не ЗначениеЗаполнено(Элемент.ВариантРаспределенияРасходовУпр) Тогда
Элемент.ВариантРаспределенияРасходовУпр = Элемент.ВариантРаспределенияРасходовРегл;
КонецЕсли;
Если Не ЗначениеЗаполнено(Элемент.ВариантРаспределенияРасходовНУ) Тогда
Элемент.ВариантРаспределенияРасходовНУ = Элемент.ВариантРаспределенияРасходовРегл;
КонецЕсли;
Элемент.ВариантРаздельногоУчетаНДС = Перечисления.ВариантыРаздельногоУчетаНДС.ИзДокумента;
Элемент.ПринятиеКНалоговомуУчету = Истина;
СтатьиРасходовЛокализация.ПриНачальномЗаполненииЭлемента(Элемент);
УказатьГФУПредопределеннойСтатьи(Элемент);
КонецПроцедуры
Процедура УказатьГФУПредопределеннойСтатьи(СтатьяРасходов)
УказаннаяСтатья = Неопределено;
Если Не СтатьяРасходов.ГруппаФинансовогоУчета.Пустая() Тогда
УказаннаяСтатья = СтатьяРасходов.ГруппаФинансовогоУчета;
КонецЕсли;
Если Не СтатьяРасходов.ГруппаФинансовогоУчетаРегл.Пустая() Тогда
УказаннаяСтатья = СтатьяРасходов.ГруппаФинансовогоУчетаРегл;
КонецЕсли;
Если Не СтатьяРасходов.ГруппаФинансовогоУчетаНУ.Пустая() И УказаннаяСтатья = Неопределено Тогда
УказаннаяСтатья = СтатьяРасходов.ГруппаФинансовогоУчетаНУ;
КонецЕсли;
Если УказаннаяСтатья = Неопределено Тогда
ШаблонНаименования = НСтр("ru = 'Настройки счетов для статьи расходов ""%1""'");
НаименованиеГФУ = СтрШаблон(ШаблонНаименования, СтатьяРасходов.Наименование);
ГФУ = Справочники.ГруппыФинансовогоУчетаДоходовРасходов.СоздатьЭлемент();
ГФУСсылка = Справочники.ГруппыФинансовогоУчетаДоходовРасходов.ПолучитьСсылку();
ГФУ.УстановитьСсылкуНового(ГФУСсылка);
ГФУ.Наименование = НаименованиеГФУ;
ГФУ.Расходы = Истина;
ГФУ.Доходы = Ложь;
ШаблонОписания = НСтр("ru = 'Служебная группа настроек финансового учета доходов/расходов для счетов учета предопределенной статьи расходов ""%1""'");
ГФУ.Описание = СтрШаблон(ШаблонОписания, СтатьяРасходов.Наименование);
ГФУ.ОбменДанными.Загрузка = Истина;
ГФУ.Записать();
СтатьяРасходов.ГруппаФинансовогоУчета = ГФУСсылка;
СтатьяРасходов.ГруппаФинансовогоУчетаРегл = ГФУСсылка;
СтатьяРасходов.ГруппаФинансовогоУчетаНУ = ГФУСсылка;
Иначе
Если СтатьяРасходов.ГруппаФинансовогоУчета.Пустая() Тогда
СтатьяРасходов.ГруппаФинансовогоУчета = УказаннаяСтатья;
КонецЕсли;
Если СтатьяРасходов.ГруппаФинансовогоУчетаРегл.Пустая() Тогда
СтатьяРасходов.ГруппаФинансовогоУчетаРегл = УказаннаяСтатья;
КонецЕсли;
Если СтатьяРасходов.ГруппаФинансовогоУчетаНУ.Пустая() Тогда
СтатьяРасходов.ГруппаФинансовогоУчетаНУ = УказаннаяСтатья;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Функция СписокДокументовДляСтатейРаспределяемыхНаПродажу()
СписокВозврата = Новый СписокЗначений;
СписокВозврата.Добавить(Метаданные.Документы.РеализацияТоваровУслуг,, Истина);
СписокВозврата.Добавить(Метаданные.Документы.АктВыполненныхРабот,, Истина);
СписокВозврата.Добавить(Метаданные.Документы.ОтгрузкаТоваровКлиенту,, ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5"));
СписокВозврата.Добавить(Метаданные.Документы.ЗаказКлиента,, ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов"));
Возврат СписокВозврата;
КонецФункции
#КонецОбласти
#КонецЕсли