Нестандартное закрытие месяца в Бухгалтерии 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С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Налог на прибыль НДС Платные (руб)

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

7200 руб.

21.10.2017    88074    323    172    

291

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

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

14400 руб.

29.04.2020    32899    106    152    

73

Закрытие периода Оптовая торговля Розничная торговля Кассовые операции Учет доходов и расходов Бухгалтер Платформа 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 - "доходы и расходы" из журнала документов вашей ИБ (любой конфигурации 1С:Предприятие 8). Формирование отчета Кассовая книга КО-4 по данным раздела 1.

7788 руб.

15.03.2016    117143    290    158    

279

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

Закрытие месяца в конфигурации 1С:Управлении нашей фирмой — это очень важная задача, которую необходимо выполнять на постоянной основе. Однако, как зачастую бывает, важные и регулярные задачи могут быть упущены из виду. В связи с этим, нами было разработано решение для автоматического закрытия месяца в 1С:УНФ для оптимизации данного процесса.

3600 руб.

30.09.2022    8079    18    0    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dnikolaev 179 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 51 13.07.20 17:29 Сейчас в теме
Спасибо огромное за статью, очень помогла. Мне надо было исключить добавленный субсчет 44.03 из закрытия. Без вашего описания застряла бы надолго.
6. gala2009 31 11.11.20 12:44 Сейчас в теме
Добрый день!

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

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

на

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

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