Рассказали в статье - как доработать распределение косвенных расходов в 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 = 'Распределить косвенные расходы по базе, основанной на произвольных коэффициентах'")+ СтрЗаменить(Строка(Процессор.Счет),".","");

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

                Правило.БазаРаспределения.ТекстЗапроса = СтрЗаменить(
                    Правило.БазаРаспределения.ТекстЗапроса,
                    "ИмяБазыРаспределения",
                    Правило.БазаРаспределения.Имя);

            КонецПроцедуры
        
    

А в процедуре ДобавитьПравилоКосвенныеРасходыПоНастройкев конце добавляем текст, чтобы при использовании нашей базы распределения использовалась ранее добавленная процедура.

       //+ КРОН обработка добавленной базы распределения
                Если БазаРаспределения = Перечисления.БазыРаспределенияКосвенныхРасходов.ПроизвольнаяБаза  Тогда
                        ДобавитьПравилоМетодПроизвольнаяБаза(
                            Процессор,
                            ОтборНастройки,
                            БазаРаспределения,
                            ВРазрезеПодразделений,
                            Ссылка);
                КонецЕсли;
                //-КРОН

Результат для пользователя будет выглядеть следующим образом.

Примечание: Данные в примерах произвольные и не имеют прикладного смысла. Все совпадения случайны.

В настройке учетной политики у счета указываем наш способ распределения расходов.

Заполняем базу распределения:

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

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

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

По оборотно-сальдовой ведомости видно, что счет закрылся полностью.

Совет: Использование отдельной роли для документа позволяет разграничить доступ между бухгалтером и сотрудником, который вводит данные базы.

Вывод

Доработанная конфигурация позволяет использовать динамичную произвольную базу распределения косвенных расходов без изменения учетной политики. Это удобно для организаций с нестандартными требованиями учета затрат.

Комментарии (0)