Нестандартное закрытие месяца в Бухгалтерии 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.

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

См. также

Анализ расхождений выручки НДС и Налога на прибыль в декларациях (БП 3.0 ПРОФ и КОРП, КА 2, ЕRP)

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

Каждый бухгалтер не раз сталкивался с требованием от налоговой инспекции пояснить расхождения в показателях декларации по Налогу на прибыль («Доходы от реализации» + «Внереализационные доходы») и налоговой базой по НДС за год. Являются ли ошибкой подобные расхождения? Как пояснить налоговой их причину? Отчет «Анализ расхождений выручки НДС и Налога на прибыль в декларациях» поможет найти все расхождения.

7200 руб.

21.10.2017    84603    267    171    

260

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

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

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

14400 руб.

29.04.2020    28544    86    147    

61

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

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

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

9000 руб.

20.03.2018    70788    269    58    

295

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

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

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

5500 руб.

09.10.2020    18907    41    18    

38

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

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

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

3600 руб.

30.09.2022    7392    14    0    

13

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

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

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

2400 руб.

15.07.2017    62772    146    45    

142

Книга доходов и расходов и кассовая книга для 1С 8.х любой конфигурации для предприятий на УСН, ПСН, ЕСХН

Закрытие периода Оптовая торговля Розничная торговля Кассовые операции Учет доходов и расходов Платформа 1С v8.3 Бухгалтерский учет 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:CRM ПРОФ, КОРП Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Гостиничный бизнес Пищевая промышленность Россия Бухгалтерский учет Налоговый учет ЕНВД ЕСХН ИП, ПБОЮЛ, КФХ Налог на прибыль НДС УСН Платные (руб)

Внешняя обработка для ведения в электронной форме КУДиР - книги учёта доходов и расходов для предприятий на УСН, ПСН, ЕСХН. Заполнение раздела 1 - "доходы и расходы" из журнала документов вашей ИБ (любой конфигурации 1С:Предприятие 8). Формирование отчета Кассовая книга КО-4 по данным раздела 1.

7788 руб.

15.03.2016    115714    285    157    

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

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

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

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

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


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



Показать



Как то странно это все работает что не подставляй сумма не изменна
С закрытием месяца первый раз сталкиваюсь поэтому пока слабо понимаю куда грести ....
5. Lusha_28 48 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 93 03.05.22 18:53 Сейчас в теме
Можете подсказать
Вы упомянули, что что-то по поводу алгоритма закрытия пишут в партнерском форуме - там как-то детально рассматривают этот механизм закрытия, чтобы было понятно как дорабатывать?
9. user1114962 87 04.05.22 19:53 Сейчас в теме
(8) Ну относительно детально. Главным образом приводили примеры, как решить конкретную задачу. Мне в свое время хватило, но и самому разбираться много пришлось.
10. slavik27 93 05.05.22 18:06 Сейчас в теме
Оставьте свое сообщение