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

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

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

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

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