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

Заполняем базу распределения:
Привычным способом закрываем месяц:
После закрытия формируем стандартные справки-расчеты, которые учитывают внесенную нами базу распределения:
Сформированные проводки закрытия счета по нашей базе распределения можно проконтролировать в карточке счета:

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


