Нестандартное закрытие месяца в Бухгалтерии 3.0

14.05.20

Задачи пользователя - Закрытие периода

Хотел бы рассказать вам об интересном опыте решения задачи по доработке штатного закрытия месяца (по 20,23,25,26 счету) в Бухгалтерии 3.0 и Корп.

Нестандартное закрытие месяца на Бухгалтерии 3.0.

 

Хотел бы рассказать вам об интересном опыте решения задачи по доработке штатного закрытия месяца (по 20,23,25,26 счету) в Бухгалтерии 3.0 и Корп.

Исторически сложилось, что у клиента 25 счет распределялся таким же образом, как 26 (т.е. не в пределах подразделения, а по всем подразделениям, где есть нужная база распределения, кроме того – на часть номенклатурных групп, по которым распределяются затраты на 20 счете, не должны распределяться затраты со счета 25. Все это было реализовано в 1С: Бухгалтерии 2.0 и потом этот код был без изменений перенесен в бухгалтерию 3.0.

Однако с течением времени меняется все, в том числе механизмы закрытия месяца в бухгалтерии 3 и учетная политика… И старые механизмы перестали заполнять необходимые дополнительные регистры, и потребовалось адаптировать штатные механизмы бухгалтерии 3.0 для подобного поведения регламентной операции «Закрытие 20,23,25,26 счета».

Итак, передо мной открылась замечательная перспектива дописывания графа затрат, ребер, вершин и прочей высшей математики в приложении 1с. Однако, с момента появления этого механизма, 1с внес множество усовершенствований, в частности, сделал программный интерфейс, с помощью которого можно дорабатывать поведение процедуры закрытия месяца для различных ситуаций, происходящих на клиентских базах. В результате изучения партнерского форума и кода конфигурации «Бухгалтерия 3.0», в частности, был обнаружен общий модуль «ПравилаРаспределенияРасходовМодификацияКонфигурации», содержащий процедуру:

Процедура ПриДобавленииПравилПоСчету(Процессор) Экспорт

В оригинале, она выглядит так:

Процедура ПриДобавленииПравилПоСчету(Процессор) Экспорт
    
    // Для поиска предопределенного правила, подлежащего модификации, можно использовать Имя предопределенных правил.
    // При этом анализировать следует части имени, предшествующую первому символу "."
    // Подробнее см. комментарий в ПравилаРаспределенияРасходов.НовыеПравилаРаспределения()
    
    // Пример модификации правила, позволяющей распределять расходы, учтенные на счете 25, аналогично общехозяйственным:
    // без ограничения направлений распределения подразделениями, в которых учтены расходы на счете 25.
    
    // <начало примера>
    //Если Процессор.КлассСчетов <> "КосвенныеРасходы" Тогда
    //    Возврат;
    //КонецЕсли;
    //
    //Если Процессор.Закрытие.Направление <> "КалькуляционныйСчет" Тогда
    //    Возврат;
    //КонецЕсли;
    //
    //ИмяМодифицируемогоПравила = "МетодОплатаТруда";
    //
    //Для Каждого Правило Из Процессор.Правила Цикл
    //    
    //    ЭлементыИмени = СтрРазделить(Правило.Имя, ".");
    //    Если Не ЗначениеЗаполнено(ЭлементыИмени) Или ЭлементыИмени[0] <> ИмяМодифицируемогоПравила Тогда
    //        Продолжить;
    //    КонецЕсли;
    //    
    //    Правило.ПоляИсточника.Удалить("Подразделение");
    //    
    //КонецЦикла;
    // <конец примера>

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

Как видим, там приведен хороший пример, как сделать распределение 25 счета по аналогии с 26-м (т.е. не учитывая подразделения!!!).

Я проверил, этот код действительно работает и делает то что надо – из 25 счета второй 26.

Однако перед нами стоит еще одна задача – сделать так, чтобы наши затраты 25 (и только 25) счета не распределялись на некоторые, отмеченные галками «не распр.25» номенклатурные группы. Изыскания в отладчике принесли информацию, что в процедуру «ПриДобавленииПравилПоСчету» передается структура «Процессор» с таблицей «Правила», в каждой из строк которой есть запрос, определяющий базу распределения по каждому из правил, он в виде текста хранится в реквизите «Правило.БазаРаспределения.ТекстЗапроса». Т.е. если мы хотим поменять базу распределения, то нужно поменять этот самый запрос. Например, так:

        НайденныйСчет = Неопределено;
        
        Если Правило.ОтборРасходов.Свойство("Счет",НайденныйСчет)Тогда
            Если
НайденныйСчет = Счет25 Тогда
               Если
Найти(Правило.БазаРаспределения.ТекстЗапроса,"ПрямыеРасходы.НоменклатурнаяГруппа.НеРаспр25 = ЛОЖЬ") = 0 Тогда
                  
Правило.БазаРаспределения.ТекстЗапроса = СтрЗаменить( Правило.БазаРаспределения.ТекстЗапроса,
                      "СГРУППИРОВАТЬ ПО","
                            |ГДЕ 
                            |  ПрямыеРасходы.НоменклатурнаяГруппа.НеРаспр25 = ЛОЖЬ
                            |
                            |СГРУППИРОВАТЬ ПО");
                КонецЕсли;
             КонецЕсли;
        КонецЕсли;

В разкомментированном примере из типовой конфигурации добавляем условие, что если счет – это счет 25 и в запросе еще нет условия по галке, то добавляем это условие. Проверка на наличие условия в запросе нужна, так как процедура может вызываться более одного раза, и, если это условие не вставить – запрос может быть испорчен. Такая настройка позволяет распределить 25 счет только на те номенклатурные группы, у которых не стоит галка «НеРаспр25».

Полная текстовка процедуры:

Процедура ПриДобавленииПравилПоСчету(Процессор) Экспорт
    
    Если
Процессор.КлассСчетов <> "КосвенныеРасходы" Тогда
        Возврат;
    КонецЕсли;
    
    Если
Процессор.Закрытие.Направление <> "КалькуляционныйСчет" Тогда
        Возврат;
    КонецЕсли;
    
    
ИмяМодифицируемогоПравила = "МетодОплатаТруда";
    
    
Счет25 = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы;
    
    Для Каждого
Правило Из Процессор.Правила Цикл
        
        
ЭлементыИмени = СтрРазделить(Правило.Имя, ".");
        Если Не
ЗначениеЗаполнено(ЭлементыИмени) Или ЭлементыИмени[0] <> ИмяМодифицируемогоПравила Тогда
            Продолжить;
        КонецЕсли;
        
        
НайденныйСчет = Неопределено;
        
        Если
Правило.ОтборРасходов.Свойство("Счет",НайденныйСчет)Тогда
            Если
НайденныйСчет = Счет25 Тогда
                Если
Найти(Правило.БазаРаспределения.ТекстЗапроса,"ПрямыеРасходы.НоменклатурнаяГруппа.НеРаспр25 = ЛОЖЬ") = 0 Тогда
                  
Правило.БазаРаспределения.ТекстЗапроса = СтрЗаменить( Правило.БазаРаспределения.ТекстЗапроса,
                      
"СГРУППИРОВАТЬ ПО","
                            |ГДЕ 
                            |  ПрямыеРасходы.НоменклатурнаяГруппа.НеРаспр25 = ЛОЖЬ
                            |
                            |СГРУППИРОВАТЬ ПО");
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;


        Правило.ПоляИсточника.Удалить("Подразделение");
        
    КонецЦикла;
КонецПроцедуры

Однако вскрылась еще одна интересная особенность распределения затрат: оказывается, база распределения, расчет которой мы так замечательно поправили, рассчитывается не для счета затрат (как было бы логично исходя из отдельных правил для 25 и 26 счета в таблице правил), а для способа распределения (в нашем случае это «Оплата труда»). Т.е. при такой настройке у нас 26 счет тоже не распределится на номенклатурные группы с галкой «НеРаспр25», что нас, конечно же, не устраивает.  Решение этого вопроса мне подсказала коллега (Спасибо тебе, Мартьянова Екатерина!) – нужно сделать для 26 счета отдельный способ распределения в регистре сведений «Методы распределения общепроизводственных и общехозяйственных затрат»:

И назначить ему базу распределения – отдельные статьи прямых затрат, а в список статей прямых затрат набрать те же статьи, которые входят в предыдущую базу распределения (в данном случае все статьи с видом «Оплата труда». Вуаля – теперь 25 счет распределяется по базе распределения, описанной нашим доработанным запросом, а 26 по аналогичной, но другой базе распределения, где никаких условий по галке уже нет.

Таким вот нехитрым способом можно добиваться нестандартного закрытия месяца с помощью встроенных механизмов Бухгалтерии 3.0.

Закрытие месяца Бухгалтерия Нестандартное Доработка

См. также

Помощник закрытия месяца

Закрытие периода Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

В современных конфигурациях УТ 11, КА 2, ERP 2 и их аналогах присутствует механизм закрытия периода. Но при ошибках учета закрыть период корректно становится практически невозможно! Давайте попробуем разобраться, как можно устранить ошибки и закрыть корректно месяц!

9000 руб.

20.03.2018    69845    266    58    

292

Обработка "Списание доходов будущих периодов" и расширение

Учет доходов и расходов Закрытие периода Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение регламентирует учет доходов будущих периодов(ДБП) в организации: сохраняет подробную информацию о объекте ДБП. По окончании месяца на основе введенной информации формируются проводки списания ДБП, отчеты для бухгалтерского и налогового учета. Подходит как для различных версий Бухгалтерии 8.3, так и для ERP и КА.

5500 руб.

09.10.2020    18710    40    18    

36

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27372    79    146    

59

Автоматическое закрытие месяца в УНФ

Закрытие периода Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Закрытие месяца в Управлении нашей фирмой — это очень важная задача, которую надо выполнять регулярно. Как обычно, все важное и регулярное делать мы почему-то забываем =)

3600 руб.

30.09.2022    7234    12    0    

11

Исправление ошибки закрытия месяца "Обнаружены ненулевые остатки по суммам при нулевом остатке по количеству в регистре себестоимости по организации". УТ 11.4,УТ 11.5, КА 2.4,КА 2.5, ERP 2.4, ERP 2.5, КА 2 Казахстан, Управление торговлей 3 для Казахстана

Закрытие периода Корректировка данных Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    22318    299    35    

71

Помощник исправления развернутого сальдо по видам запасов и ГТД

Закрытие периода Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Обработка позволяет исправить развернутое сальдо по видам запасов, которое осталось после штатной обработки перепроведения документов. Подходит для конфигураций: УТ 11, КА 2, ERP

2400 руб.

15.07.2017    62537    143    45    

140

SALE! 20%

Заполнение документа "Корректировка регистров" произвольными данными

Закрытие периода Корректировка данных Платформа 1С v8.3 Система компоновки данных 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 1920 руб.

13.07.2015    50162    171    29    

121
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dnikolaev 177 16.05.20 19:26 Сейчас в теме
да..! сталкивался год назад с подобной задачей.

решил так. добавил к 25 счету субсчет 25.02 (без аналитики подразделений).. просто статьи затрат
и где то в общем модуле прописал что 25.02 относится к общехозяйственным затратам..
и он стал размазываться на 20 при закрытии. по аналогии с 26.. пропорционально выпуску.
в регламентированной отчетности. прибыль - везде все подхватило тоже.
2. German_Tagil 42 18.05.20 10:51 Сейчас в теме
Добрый день! Пытаюсь распределить 25 счет без подразделений и ничего не изменяется
3. user1114962 87 18.05.20 12:53 Сейчас в теме
(2)
Добрый день! Пытаюсь распределить 25 счет без подразделений и ничего не изменяется
Добрый день! Расскажите подробнее, что именно меняли и что сделать именно сделать пытаетесь? если просто сделать распределение затрат 25 счета без учета подразделений, надо просто разкомментировать типовое наполнение процедуры Процедура ПриДобавленииПравилПоСчету(Процессор) Экспорт, и если у Вас база распределения не оплата труда - заменить в ней "Оплату труда" на соответствующую базу.
4. German_Tagil 42 18.05.20 14:34 Сейчас в теме
(3) Это я уже понял. Разкомментировал, прописал Базу "МетодОтдельныестатьипрямыхзатрат"

текст процедуры

&ВМЕСТО("ПриДобавленииПравилПоСчету")
Процедура СН_ПриДобавленииПравилПоСчету(Процессор)
    
        
        Если Процессор.КлассСчетов <> "КосвенныеРасходы" Тогда
            Возврат;
        КонецЕсли;
        
        Если Процессор.Закрытие.Направление <> "КалькуляционныйСчет" Тогда
            Возврат;
        КонецЕсли;
        
        ИмяМодифицируемогоПравила = "МетодОтдельныестатьипрямыхзатрат";
        
        Счет25 = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы;
        
        Для Каждого Правило Из Процессор.Правила Цикл
            
            ЭлементыИмени = СтрРазделить(Правило.Имя, ".");
            Если Не ЗначениеЗаполнено(ЭлементыИмени) Или ЭлементыИмени[0] <> ИмяМодифицируемогоПравила Тогда
                Продолжить;
            КонецЕсли;
            
            НайденныйСчет = Неопределено;
            
            Если Правило.ОтборРасходов.Свойство("Счет",НайденныйСчет)Тогда
                Если НайденныйСчет = Счет25 Тогда
            
                      Правило.БазаРаспределения.ТекстЗапроса = СтрЗаменить( Правило.БазаРаспределения.ТекстЗапроса,
                          "СГРУППИРОВАТЬ ПО","
                                |ГДЕ 
                                |  ПрямыеРасходы.НоменклатурнаяГруппа
                                |
                                |СГРУППИРОВАТЬ ПО");

                КонецЕсли;
            КонецЕсли;


            Правило.ПоляИсточника.Удалить("Подразделение");
            
        КонецЦикла;
    КонецПроцедуры



Показать



Как то странно это все работает что не подставляй сумма не изменна
С закрытием месяца первый раз сталкиваюсь поэтому пока слабо понимаю куда грести ....
5. Lusha_28 47 13.07.20 17:29 Сейчас в теме
Спасибо огромное за статью, очень помогла. Мне надо было исключить добавленный субсчет 44.03 из закрытия. Без вашего описания застряла бы надолго.
6. gala2009 30 11.11.20 12:44 Сейчас в теме
Добрый день!

работает ли ваша доработка(относительно закрытия на отдельные НГ), если 25 счет закрывается по выручке?

достаточно ли в Процедура ПриДобавленииПравилПоСчету
изменить
ИмяМодифицируемогоПравила = "МетодОплатаТруда";

на

ИмяМодифицируемогоПравила = "МетодВыручка"; ?

если 25 закрывается на прямые затраты, то изменение на ИмяМодифицируемогоПравила = "МетодПрямыеЗатраты";
помогло
но с выручкой не получается, закрывается пропорционально ном.группам на 90.01, и в том числе на НГ с отметкой не распр
7. uvdfeo 1 30.06.21 14:47 Сейчас в теме
Добрый день! Из распределения 25 счета надо исключить Подразделение, в настройках учета указано Не распределять, но не работает. Помогите пожалуйста с запросом в ПриДобавленииПравилПоСчету. Спасибо.
Прикрепленные файлы:
8. slavik27 88 03.05.22 18:53 Сейчас в теме
Можете подсказать
Вы упомянули, что что-то по поводу алгоритма закрытия пишут в партнерском форуме - там как-то детально рассматривают этот механизм закрытия, чтобы было понятно как дорабатывать?
9. user1114962 87 04.05.22 19:53 Сейчас в теме
(8) Ну относительно детально. Главным образом приводили примеры, как решить конкретную задачу. Мне в свое время хватило, но и самому разбираться много пришлось.
10. slavik27 88 05.05.22 18:06 Сейчас в теме
Оставьте свое сообщение