Рассказали в статье - как доработать распределение косвенных расходов в 1С:Бухгалтерии предприятия для использования динамичной базы без изменения учетной политики
В 1С:Бухгалтерии базой для распределения косвенных расходов могут быть:
Объем выпуска
Плановая себестоимость выпуска
Оплата труда
Материальные затраты
Выручка от реализации услуг
Прямые затраты
Отдельные статьи прямых затрат
Собственная база распределения (произвольные показатели, описывающие деятельность предприятия)
У некоторых организаций есть потребность распределять косвенные расходы пропорционально базе, учет которой в бухгалтерии не ведется. Например, такой базой распределения могут служить машиночасы, затраченные для производства вида работ, у организаций, производственная деятельность которых тесно связана с работой спецтехники.
Такие особенности учета не являются прихотью бухгалтеров, они описаны отраслевыми инструкциями, отказаться от такого распределения нет возможности.
В данной ситуации могла бы подойти «Собственная база распределения», но она задается в учетной политике организации, то есть подразумевается, что значения этой базы статичны и меняются очень редко.
А что делать, если значения базы для распределения меняются каждый месяц? Устанавливать каждый месяц новую учетную политику из-за динамичной базы распределения нерационально. Тем более, что за внесение информации о показателях распределения, может отвечать сотрудник, который не должен иметь доступ к изменению учетной политики.
В такой ситуации единственным решением является доработка конфигурации. Рассмотрим доработку конфигурации на примере «бухгалтерии предприятия КОРП, редакция 3.0 (3.0.184.26)» (подойдет и для обычной бухгалтерии такой же версии.
Перечень необходимых изменений1. В перечисление БазыРаспределенияКосвенныхРасходовнужно добавить новое значение КРОН_ПроизвольнаяБаза

2. В функциях Пояснение, ПредставлениеДательныйПадеж, ПредставлениеРодительныйПадеж модуля менеджера этого перечисления нужно добавить описание нашего нового значения:
Функция Пояснение(Значение) Экспорт ВидРасходов = ВидРасходовОтборЗатрат(Значение); Если ВидРасходов <> Неопределено Тогда Возврат СтрШаблон(НСтр("ru = 'Суммы затрат по статьям с видом %1, учтенные на калькуляционных счетах'"), ВидРасходов); ИначеЕсли Значение = ОбъемВыпуска Тогда Возврат НСтр("ru = 'Количество выпущенной продукции (услуг)'"); ИначеЕсли Значение = ПлановаяСебестоимость Тогда Возврат НСтр("ru = 'Плановая себестоимость выпущенной продукции (оказанных услуг)'"); ИначеЕсли Значение = Выручка Тогда Возврат НСтр("ru = 'Выручка от реализации выпущенной продукции (услуг). |В базу распределения включается только та часть выручки, которая может быть сопоставлена с деятельностью, затраты на которую учитываются на калькуляционных счетах'"); ИначеЕсли Значение = ВыручкаОтРеализацииУслуг Тогда Возврат НСтр("ru = 'Выручка от реализации любых услуг'"); ИначеЕсли Значение = ПрямыеЗатраты Тогда Возврат СтрШаблон(НСтр("ru = 'Суммы затрат, учтенные на калькуляционных счетах'")); ИначеЕсли Значение = ОтдельныеСтатьиПрямыхЗатрат Тогда Возврат СтрШаблон(НСтр("ru = 'Суммы затрат по статьям из перечня, учтенные на калькуляционных счетах'")); ИначеЕсли Значение = СобственнаяБазаРаспределения Тогда Возврат НСтр("ru = 'Произвольные показатели, описывающие деятельность предприятия'"); //+КРОН пояснение для добавленного значения базы распределения ИначеЕсли Значение = КРОН_ПроизвольнаяБаза Тогда Возврат НСтр("ru = 'Произвольные показатели, описывающие деятельность предприятия (вводятся ежемесячно)'"); //-КРОН Иначе Возврат ""; КонецЕсли; КонецФункции
Функция ПредставлениеДательныйПадеж(Значение) Экспорт Если Значение = ОбъемВыпуска Тогда Возврат НСтр("ru = 'объему выпуска'"); ИначеЕсли Значение = ПлановаяСебестоимость Тогда Возврат НСтр("ru = 'плановой себестоимости выпуска'"); ИначеЕсли Значение = ОплатаТруда Тогда Возврат НСтр("ru = 'суммам прямых затрат на оплату труда'"); ИначеЕсли Значение = МатериальныеЗатраты Тогда Возврат НСтр("ru = 'суммам прямых материальных затрат'"); ИначеЕсли Значение = ПрямыеЗатраты Тогда Возврат НСтр("ru = 'суммам всех прямых затрат'"); ИначеЕсли Значение = ОтдельныеСтатьиПрямыхЗатрат Тогда Возврат НСтр("ru = 'суммам прямых затрат по отдельным статьям'"); ИначеЕсли Значение = Выручка Тогда Возврат НСтр("ru = 'выручке'"); ИначеЕсли Значение = ВыручкаОтРеализацииУслуг Тогда Возврат НСтр("ru = 'выручке от реализации услуг'"); //+КРОН представление в дательном падеже //добавленного значения базы распределения ИначеЕсли Значение = КРОН_ПроизвольнаяБаза Тогда Возврат НСтр("ru = 'Своей базе распределения'"); //-КРОН Иначе Возврат ""; КонецЕсли; КонецФункции
Функция ПредставлениеРодительныйПадеж(Значение) Экспорт Если Возврат НСтр("ru = 'объема выпуска'"); ИначеЕсли Значение = ПлановаяСебестоимость Тогда Возврат НСтр("ru = 'плановой себестоимости выпуска'"); ИначеЕсли Значение = ОплатаТруда Тогда Возврат НСтр("ru = 'прямых затрат на оплату труда'"); ИначеЕсли Значение = МатериальныеЗатраты Тогда Возврат НСтр("ru = 'прямых материальных затрат'"); ИначеЕсли Значение = ПрямыеЗатраты Тогда Возврат НСтр("ru = 'прямых затрат'"); ИначеЕсли Значение = ОтдельныеСтатьиПрямыхЗатрат Тогда Возврат НСтр("ru = 'прямых затрат по отдельным статьям'"); ИначеЕсли Значение = Выручка Тогда Возврат НСтр("ru = 'выручки'"); ИначеЕсли Значение = ВыручкаОтРеализацииУслуг Тогда Возврат НСтр("ru = 'выручки от реализации услуг'"); //+КРОН представление в родительном падеже //добавленного значения базы распределения ИначеЕсли Значение = КРОН_ПроизвольнаяБаза Тогда Возврат НСтр("ru = 'Своей базы распределения'"); //-КРОН Иначе Возврат ""; КонецЕсли; КонецФункции
3. Для ежемесячного занесения данных о значениях базы распределения нужно создать новый документ КРОН_БазаДляРаспределенияКосвенныхЗатрат

4. Для работы с документом, нужно либо добавить его в существующую подсистему, либо создать новую. Также необходимо создать роль для работы с документом.
5. В общий модуль ПравилаРаспределенияРасходовдобавляем процедуру:
//+КРОН запрос данных для добавленной базы распределения Процедура ДобавитьПравилоМетодПроизвольнаяБаза(Процессор, ОтборРасходов, МетодРасчета, ВРазрезеПодразделений, Ссылка) Правило = ДобавитьПравилоМетодРасчета(Процессор, ОтборРасходов, МетодРасчета, ВРазрезеПодразделений, Ссылка); Правило.Наименование = НСтр("ru = 'Распределить косвенные расходы по базе, основанной на произвольных коэффициентах'")+ СтрЗаменить(Строка(Процессор.Счет),".",""); // Используется одинаковый запрос, // в качестве параметра передается метод расчета Правило.БазаРаспределения.ПараметрыЗапроса.Вставить("МетодРасчета", МетодРасчета); Правило.БазаРаспределения.ПараметрыЗапроса.Вставить("СчетЗатрат"+СтрЗаменить(Строка(Процессор.Счет),".",""), Процессор.Счет); Правило.БазаРаспределения.Имя = "БазаРаспределения_" + ОбщегоНазначения.ИмяЗначенияПеречисления(МетодРасчета)+СтрЗаменить(Строка(Процессор.Счет),".",""); // Выпуск продукции - это всегда ОсновнаяСистемаНалогообложения // "ИмяБазыРаспределения" будет заменено на фактическое имя Правило.БазаРаспределения.ТекстЗапроса = "ВЫБРАТЬ | ЗНАЧЕНИЕ(Перечисление.ВидыДеятельностиДляНалоговогоУчетаЗатрат.ОсновнаяСистемаНалогообложения) КАК ВидДеятельности, | БазыДляРаспределенияКосвенныхЗатрат.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство) КАК Счет, | БазыДляРаспределенияКосвенныхЗатрат.Ссылка.Подразделение КАК Подразделение, | БазыДляРаспределенияКосвенныхЗатрат.База КАК База, | БазыДляРаспределенияКосвенныхЗатрат.Ссылка.СчетЗатрат КАК СчетЗатрат, | ЗНАЧЕНИЕ(Справочник.ВидыРемонтовОС.ПустаяСсылка) КАК ВидРемонтаОС |ПОМЕСТИТЬ ИмяБазыРаспределения |ИЗ | Документ.КРОН_БазаДляРаспределенияКосвенныхЗатрат.БазаРаспределения КАК БазыДляРаспределенияКосвенныхЗатрат |ГДЕ | БазыДляРаспределенияКосвенныхЗатрат.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода | И БазыДляРаспределенияКосвенныхЗатрат.Ссылка.Организация = &Организация | И НЕ БазыДляРаспределенияКосвенныхЗатрат.Ссылка.ПометкаУдаления | И БазыДляРаспределенияКосвенныхЗатрат.Ссылка.Проведен | И БазыДляРаспределенияКосвенныхЗатрат.Ссылка.СчетЗатрат = &СчетЗатрат"+СтрЗаменить(Строка(Процессор.Счет),".","")+" | |ИНДЕКСИРОВАТЬ ПО | ВидДеятельности, | Подразделение"; Правило.БазаРаспределения.ТекстЗапроса = СтрЗаменить( Правило.БазаРаспределения.ТекстЗапроса, "ИмяБазыРаспределения", Правило.БазаРаспределения.Имя); КонецПроцедуры
А в процедуре ДобавитьПравилоКосвенныеРасходыПоНастройкев конце добавляем текст, чтобы при использовании нашей базы распределения использовалась ранее добавленная процедура.
//+ КРОН обработка добавленной базы распределения Если БазаРаспределения = Перечисления.БазыРаспределенияКосвенныхРасходов.ПроизвольнаяБаза Тогда ДобавитьПравилоМетодПроизвольнаяБаза( Процессор, ОтборНастройки, БазаРаспределения, ВРазрезеПодразделений, Ссылка); КонецЕсли; //-КРОН
Результат для пользователя будет выглядеть следующим образом.
Примечание: Данные в примерах произвольные и не имеют прикладного смысла. Все совпадения случайны.
В настройке учетной политики у счета указываем наш способ распределения расходов.

Заполняем базу распределения:
Привычным способом закрываем месяц:

После закрытия формируем стандартные справки-расчеты, которые учитывают внесенную нами базу распределения:

Сформированные проводки закрытия счета по нашей базе распределения можно проконтролировать в карточке счета:

По оборотно-сальдовой ведомости видно, что счет закрылся полностью.
Совет: Использование отдельной роли для документа позволяет разграничить доступ между бухгалтером и сотрудником, который вводит данные базы.
Вывод
Доработанная конфигурация позволяет использовать динамичную произвольную базу распределения косвенных расходов без изменения учетной политики. Это удобно для организаций с нестандартными требованиями учета затрат.
