Как корректно настроить закрытие счета 20 по трем субконто в 1С 7.7

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет
← На главную

При доработке процедуры закрытия месяца в платформе 1С 7.7 разработчики часто сталкиваются с ситуацией, когда проводки по списанию затрат со счета 20 «Основное производство» формируются не по всей аналитике. Например, если на счете задано три субконто (Виды номенклатуры, Подразделения и Статьи затрат на производство), списываться сумма может только по двум из них, оставляя третье пустым или нескорректированным.

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

Причина 1. Неполный обход субконто в объекте «БухгалтерскиеИтоги»

Проанализируем типовую структуру выборки итогов. Для того чтобы сформировать проводку с заполнением всех трех субконто по кредиту счета 20, мало просто добавить настройку фильтрации через ИспользоватьСубконто(). Необходима трехуровневая вложенность циклов обхода аналитики.

Если в коде объявлены три субконто:


БухИт20 = СоздатьОбъект("БухгалтерскиеИтоги"); 
БухИт20.ИспользоватьСубконто(ВидыСубконто.ВидыНоменклатуры,,,); 
БухИт20.ИспользоватьСубконто(ВидыСубконто.Подразделения,,,); 
БухИт20.ИспользоватьСубконто(ВидыСубконто.СтатьиЗатратНаПроизводство,,,); 
БухИт20.ВыполнитьЗапрос(ДатаНач, ДатаКон, Сч20,,,,,);

То и получение данных должно происходить последовательно через три вложенных цикла с вызовом методов ВыбратьСубконто() и ПолучитьСубконто() для каждого уровня аналитики.

Структура корректного обхода выглядит следующим образом:


БухИт20.ВыбратьСубконто(ВидыСубконто.ВидыНоменклатуры); 
Пока БухИт20.ПолучитьСубконто(ВидыСубконто.ВидыНоменклатуры) = 1 Цикл 

    БухИт20.ВыбратьСубконто(ВидыСубконто.Подразделения); 
    Пока БухИт20.ПолучитьСубконто(ВидыСубконто.Подразделения) = 1 Цикл 

        БухИт20.ВыбратьСубконто(ВидыСубконто.СтатьиЗатратНаПроизводство); 
        Пока БухИт20.ПолучитьСубконто(ВидыСубконто.СтатьиЗатратНаПроизводство) = 1 Цикл 

            СуммаСписания = БухИт20.СКД(); 
            Если СуммаСписания <> 0 Тогда 
                Операция.НоваяПроводка(); 
                Операция.НомерЖурнала = "ФР"; 
                Операция.СодержаниеПроводки = "Списание счета 20"; 
                Операция.Дебет.Счет = Сч90_4; 
                Операция.Дебет.ВидыНоменклатуры = БухИт20.Субконто(ВидыСубконто.ВидыНоменклатуры); 
                
                Операция.Кредит.Счет = Сч20; 
                Операция.Кредит.ВидыНоменклатуры = БухИт20.Субконто(ВидыСубконто.ВидыНоменклатуры); 
                Операция.Кредит.Подразделения = БухИт20.Субконто(ВидыСубконто.Подразделения); 
                Операция.Кредит.СтатьиЗатратНаПроизводство = БухИт20.Субконто(ВидыСубконто.СтатьиЗатратНаПроизводство); 
                
                Операция.Сумма = глОкругление(СуммаСписания, ДатаДок); 
            КонецЕсли; 

        КонецЦикла; 
    КонецЦикла; 
КонецЦикла;

Причина 2. Ошибка количества параметров в функциях незавершенного производства

При попытке передать в функцию расчета незавершенного производства (НЗП) третье субконто система может выдать синтаксическую ошибку при компиляции модуля:

Слишком много фактических параметров

Выясним причину этой ошибки. Она означает, что сама функция ОстатокНезавершенногоПроизводства(), объявленная в модуле документа или глобальном модуле, принимает только два входящих аргумента. Например:


Функция ОстатокНезавершенногоПроизводства(ВидНом, Подразд)
    // Логика расчета
КонецФункции

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

  1. Найдем определение функции ОстатокНезавершенногоПроизводства в модуле.
  2. Добавим в заголовок функции третий параметр: Функция ОстатокНезавершенногоПроизводства(ВидНом, Подразд, СтатьяЗатрат).
  3. Добавим группировку по статьям затрат в текст запроса, который собирает данные по документу НезавершенноеПроизводство:
    
    |ВидНоменклатуры = Документ.НезавершенноеПроизводство.ВидНоменклатуры; 
    |Подразделение = Документ.НезавершенноеПроизводство.Подразделение; 
    |СтатьяЗатрат = Документ.НезавершенноеПроизводство.СтатьяЗатрат; 
    |Группировка ВидНоменклатуры; 
    |Группировка Подразделение; 
    |Группировка СтатьяЗатрат;
    
  4. Скоординируем вызов функции с передаваемыми значениями из итогов.

Причина 3. Особенности работы оборотных субконто

Проанализируем методическую сторону вопроса. В конфигурациях 1С 7.7 субконто Статьи затрат на производство (или статьи общехозяйственных/общепроизводственных расходов) на счетах затрат часто настраивается со специальным признаком — Только обороты (оборотное субконто).

Рассмотрим важные нюансы работы с оборотными субконто:

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

← На главную