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

Публикация № 1235650

Учет и отчетность - Закрытие периода - Закрытие периода

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

Хотел бы рассказать вам об интересном опыте решения задачи по доработке штатного закрытия месяца (по 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. dnikolaev 164 16.05.20 19:26 Сейчас в теме
да..! сталкивался год назад с подобной задачей.

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

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

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

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


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



Показать



Как то странно это все работает что не подставляй сумма не изменна
С закрытием месяца первый раз сталкиваюсь поэтому пока слабо понимаю куда грести ....
Оставьте свое сообщение

См. также

"Секреты" закрытия месяца в 1С:ERP

Закрытие периода v8 ERP2 Россия БУ НУ Бесплатно (free)

В рамках данной статьи мне хотелось обобщить в одном месте накопленную информацию по закрытию периода в 1С:ERP. Цель – дать консультанту, внедряющему регламентированный учет и расчет себестоимости в 1С:ERP, инструмент, с помощью которого он сможет понять, на основании чего в Закрытии месяца появляются те или иные операции, какие регистры анализирует система, какие действия должны быть выполнены по результатам.

22.01.2020    17083    0    1СERP    42    

Расчет себестоимости по средней: не так все просто, как кажется на первый взгляд

Закрытие периода Учетная политика Управление торговлей Бухгалтерия v8::БУ v8::ОУ БП2.0 УТ10 БП3.0 УТ11 Россия БУ УУ Бесплатно (free)

Статья предназначена для специалистов по внедрению 1С и бухгалтеров, у которых возникают следующие вопросы: Бухгалтерия 3.0,2.0 закрытие месяца операция Корректировка стоимости номенклатуры Управление торговлей 11.4 и 10.3, разные величины себестоимости при одинаковых списаниях по средней. И что нужно сделать, чтобы эти цифры были равны.

29.12.2019    5625    0    aurumm    3    

Своя операция в закрытии месяца? Легко!

Закрытие периода Закрытие периода Закрытие периода v8 ERP2 1С:Франчайзи, автоматизация бизнеса Россия БУ Бесплатно (free)

Иногда приходится сталкиваться с задачей включения в пункты закрытия месяца своих операций. В данной статье будет показано – как с минимальными изменениями конфигурации, а также использованием расширений решить такую задачу.

04.09.2018    12415    0    Shmell    3    

Закрытие месяца (Управление торговлей 11) - решение проблемы ненулевой себестоимости при отсутствии товара

Закрытие периода Оптовая торговля Оптовая торговля v8::ОУ УТ11 Россия УУ Бесплатно (free)

Часто при запуске процедуры "Закрытие месяца" выскакивает ошибка следующего содержания: "По номенклатуре ... обнаружен некорректный остаток в регистре "Себестоимость товаров"" и обработка прекращается на пункте "Расчет себестоимости". Данная статья посвящена методам борьбы с указанной ошибкой.

12.12.2016    31436    0    Mortiferus    17    

Разгон РАУЗ в 1С УПП 1.3 (платформа 8.2)

Закрытие периода Производство готовой продукции (работ, услуг) Производство готовой продукции (работ, услуг) v8 УПП1 Россия БУ НУ Бесплатно (free)

В статье рассматривается вопрос повышения быстродействия расчета себестоимости в конфигурации 1С УПП 1.3 при включенном режиме РАУЗ и наличии большого количества материальных затрат. Глубокого погружения в теорию тут ждать не стоит, для этого есть другие хорошо написанные книги и статьи. Тут будет рассмотрен метод "по быстрому".

07.10.2014    28692    0    DNSokol    56    

Автоматическое перепроведение документов в Бухгалтерии 3.0

Закрытие периода Закрытие периода Закрытие периода v8 БП2.0 БУ Бесплатно (free)

Регламентное задание позволяет запускать перепроведение документов по расписанию. Разрабатывалось в Бухгалтерии КОРП 3.0.32.7

06.09.2014    21884    0    kholkin    7    

МиниКейс "Закрытие месяца в УПП без остановки работы системы (Партионный учёт)"

Распределенная БД (УРИБ, УРБД) Закрытие периода Закрытие периода Закрытие периода v8 1cv8.cf БУ Бесплатно (free)

Предлагается схема закрытия месяца на предприятии с круглосуточной работой в 1С. Используются обработки, которые доступны на infostart.ru.

24.02.2013    23610    0    axxell    7    

Бухгалтерам редактирующим "Закрытие месяца" в Бухгалтерии 2.0 посвящается...

Закрытие периода Закрытие периода Управленческий учет (прочее) Бухгалтерский учет Закрытие периода v8 БП2.0 БУ Бесплатно (free)

С переводом Бухгалтерии с редакции 1.6 на 2.0 появился один интересный но мало описанный момент работы бухгалтера, ведущего бухгалтерский и налоговый учет на производстве. Этот момент также характерен для бухгалтеров перенесших привычки ведения учета из "семерки" в "восьмерку". Момент этот - РУЧНАЯ КОРРЕКТИРОВКА движений "Регламентных операций" закрытия месяца. Итогом этих действий бывает ошибка при закрытии 20-х и 90-х счетов: "Нарушена последовательность регламентных операций. Ожидается изменение результатов выполнения операции "Закрытие счетов 20, 23, 25, 26" за Сентябрь 2011 г. Необходимо выполнить повторно эту операцию (меню "Операции" - "Закрытие месяца")."

18.12.2011    33201    0    wjickey    27    

Поиск ошибок реализации

Закрытие периода Закрытие периода Анализ учета Закрытие периода v8 УПП1 БУ НУ Бесплатно (free)

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

24.06.2011    11955    0    Alex Y    6    

Демонстрация расчета себестоимости в 1С:Комплексная автоматизация 8

Закрытие периода Закрытие периода Закрытие периода v8 КА1 Бесплатно (free)

Скринкаст с демонстрацией действий по расчету себестоимости готовой продукции/услуг в 1С:Комплексная автоматизация 8

23.04.2010    35006    0    ИТ-Терминал    15    

Внешняя обработка по закрытию счетов

Закрытие периода Закрытие периода Закрытие периода v8 БП2.0 Россия БУ НУ Бесплатно (free)

Бывает, возникает необходимость использования данной обработки тогда, когда стандартная не подходит (особенно удобно использовать для распределенных баз данных).

06.11.2009    8694    0    maria7777777    18    

Закрытие 23 сч в соответствии с ПБУ 10/99 "Расходы организации" и в соотв. со ст.318, 319 Налогового Кодекса

Закрытие периода v8 БП2.0 Россия Бесплатно (free)

Распределение при закрытии месяца вспомогательного производства.

03.07.2009    14120    0    popkovsf65    22    

Отчет для поиска несписанных партий в УТ

Поиск данных Анализ учета Закрытие периода Закрытие периода Учет ТМЦ Закрытие периода Учет ТМЦ v8 УТ10 Бесплатно (free)

Позволяет найти, какие партии не списались за указанный период.

21.05.2009    12856    0    kstukov    3    

Закрытие регистров накопления на определённую дату - доработанная

Сервисные утилиты Обработка документов Закрытие периода v8 1cv8.cf Украина Россия Бесплатно (free)

Автоматическое формирование документа "Корректировка записей регистров", закрывающего определенные регистры накопления "под ноль"

10.01.2009    11069    0    VoShk    5    

Автоматическая генерация "Отчёта за смену" по "Реализации товаров и услуг".

Обработка документов Закрытие периода Закрытие периода Учет ТМЦ Управленческие Закрытие периода Учет ТМЦ v8 БП2.0 БУ НУ Бесплатно (free)

Автоматическая генерация "Отчёта за смену" по "Реализации товаров и услуг" для БП1.6. Создаёт отчёт за смену на начало периода, затем шерстит реализацию за указанный период. Для всех позиций со счётом учёта 43 создаёт запись в отчёте за смену. Это может пригодиться для производственных организаций, которые используют торговлю, и которым ненужно отображение реальных производственных движений в бухгалтерии. Также есть возможность откорректировать в реализации счета учёта товаров, если таковые менялись со времени последней выгрузки из торговли например. Обработка сделана для одной организации с одним складом, кстати имеет смысл подхимичить событие "ПриОткрытии" и подставить нужные организации и склады Это первая моя поделка, поэтому жду советов/рекомендаций.

26.08.2008    9281    0    MaratL    9    

Закрытие регистров накопления на определенную дату с отбором по измерениям

Обработка документов Сервисные утилиты Закрытие периода v8 1cv8.cf Бесплатно (free)

Автоматическое формирование документа "Корректировка записей регистров", закрывающего определенный регистр накопления "под ноль" с фильтром по измерениям.

31.03.2008    20440    0    sibshaman    18    

Бухгалтерская обработка: закрытие счетов

Закрытие периода Закрытие периода Обработка документов Закрытие периода v8 БП2.0 БУ НУ Бесплатно (free)

Обработка позволяет закрыть любой счет. Аналогична такой же для версии 7.7

28.03.2008    16884    0    ars    14