При ведении учета в программе «1С:Бухгалтерия государственного учреждения» (БГУ), редакция 1.0, бухгалтеры часто сталкиваются со сложными процедурами закрытия месяца. Одной из наиболее распространенных и неприятных проблем является сбой при проведении документа Закрытие производственных счетов. Программа прерывает операцию и выводит в окно сообщений критическую ошибку следующего вида:
ЗакрытиеПроизводственныхСчетов.МодульОбъекта(743)}: Получение элемента по индексу для значения не определено
Особенно сильно это запутывает пользователя, когда за одни месяцы закрытие производственных счетов проходит абсолютно гладко, а в другие — стабильно выдает ошибку. В этой статье мы подробно разберем техническую природу данного сбоя, проанализируем основные причины его возникновения и рассмотрим пошаговый алгоритм локализации и исправления ошибок в учете.
Прежде чем переходить к бухгалтерским деталям, разберем, что происходит «под капотом» программы. Текст ошибки «Получение элемента по индексу для значения не определено» означает, что во время выполнения кода на строке 743 программа обратилась к переменной, которая должна была содержать коллекцию данных (например, таблицу значений, массив или структуру), но на самом деле эта переменная оказалась пустой и приняла системное значение Неопределено.
Для наглядности рассмотрим пример кода, аналогичный тому, который выполняется внутри документа:
// Программа пытается получить таблицу распределения затрат
ТаблицаБазыРаспределения = ПолучитьТаблицуБазы(ПараметрыРаспределения);
// Если база распределения не найдена, переменная будет равна Неопределено
// Попытка обратиться к первой строке таблицы [0] вызывает критическую ошибку
ПерваяСтрокаБазы = ТаблицаБазыРаспределения[0];
В контексте закрытия счетов группы 109 (затраты на изготовление готовой продукции, выполнение работ, услуг) программа на шаге 743 пытается рассчитать пропорции для распределения накладных или общехозяйственных расходов. Если алгоритм не находит базу для распределения или сталкивается с некорректной аналитикой, расчетный запрос возвращает пустоту, вызывая сбой выполнения всего документа.
---
На основе практического опыта работы с БГУ 1.0 и анализа структуры метаданных конфигурации, мы можем выделить четыре главные причины возникновения этой ошибки.
В учетной политике учреждения для общепроизводственных (счет 109.71) и общехозяйственных (счет 109.81) затрат задаются конкретные правила распределения. Косвенные расходы могут распределяться пропорционально различным показателям:
109.61);Если в проблемном месяце накладные расходы на счетах 109.71 или 109.81 накопились, но физически отсутствует сама база распределения на счете 109.61 (например, в текущем месяце не было прямых затрат по аналогичному КФО или КПС, либо не было выручки), то внутренний запрос документа возвращает пустое значение. Программа пытается распределить сумму, но делить её не на что, из-за чего происходит аварийное завершение работы кода.
Для корректного сопоставления прямых и косвенных расходов программа жестко ориентируется на аналитику. На счетах группы 109 субконто должны быть заполнены строго определенным образом:
Если при отражении первичных документов (например, начислении зарплаты сотрудникам производства или списании материалов) субконто были перепутаны местами, заполнены некорректно или оставлены пустыми, внутренние механизмы сопоставления «сходят с ума». Программа ожидает увидеть в первом субконто элемент справочника Номенклатура, а обнаруживает там Виды затрат. При попытке построить дерево распределения код обращается по неверным индексам аналитики, что приводит к сбою.
В релизах линейки 1.0.36 присутствовала зарегистрированная ошибка разработчиков «1С». Она возникала, когда в карточке номенклатурной группы для метода распределения стоимости было выбрано значение «Ручное определение частей стоимости». Если в течение месяца учреждение выпускало не всю продукцию из этой группы, алгоритм закрытия не мог составить корректный массив распределения. Обращение к отсутствующим элементам массива приводило именно к этой ошибке.
Иногда обороты по дебету и кредиту счетов производства содержат расхождения в классификационных признаках счетов (КПС) или кодах экономической классификации (КЭК/КОСГУ). Например, если прямые затраты отражены по одному КПС, а выпуск продукции или накладные расходы — по другому, программа не сможет связать их в единую цепочку распределения.
---
Рассмотрим детально, как локализовать и устранить проблему собственными силами без привлечения программистов.
Прежде всего проверим, как именно программа должна распределять затраты в соответствии с настройками вашей системы. Для этого выполним следующие действия:
Сформируем Оборотно-сальдовую ведомость по счету 109 за сбойный месяц. В настройках отчета обязательно выставим максимальную детализацию по субконто: КФО, КПС, КЭК, Номенклатура и Виды затрат. Проанализируем полученные данные:
109.61. Если на счете 109.61 пусто, а на 109.71/109.81 есть затраты — программа не сможет провести закрытие. В этом случае необходимо либо временно скорректировать учетную политику (выбрать распределение вручную или по объему выпуска), либо отразить прямые затраты на счете 109.61.В БГУ встроен мощный инструмент автоматической проверки ведения учета. Запустим его, чтобы программа сама нашла скрытые ошибки в проводках:
Если стандартный анализ учета не дал результатов, выяснить точную причину поможет запуск базы в режиме отладки:
ЗакрытиеПроизводственныхСчетов.743 (или воспользуемся поиском по коду, если номер строки немного отличается в вашем релизе).Неопределено. Проанализируем запрос, формирующий эту переменную, — это сразу укажет на конкретную пустую аналитику или отсутствующую настройку в базе данных.---
Проанализируем еще одну очень важную рекомендацию, касающуюся методологии учета. Согласно изменениям в инструкциях по бухгалтерскому учету государственных учреждений, если ваше учреждение является бюджетным или автономным, порядок закрытия затрат может существенно отличаться:
Для услуг, финансовое обеспечение которых осуществляется за счет субсидий на выполнение государственного (муниципального) задания (КФО 4) или приносящей доход деятельности (КФО 2), накладные и общехозяйственные расходы зачастую должны списываться напрямую на финансовый результат (счет 401.20). В таком случае использовать документ Закрытие производственных счетов вообще не требуется! Вместо него необходимо применять документ «Списание затрат по услугам», который корректно закроет 109 счет без построения сложных производственных баз распределения.
Рекомендуем согласовать этот момент с учетной политикой вашего ведомства и учредителя.
---
Мы детально разобрали, как исправить ошибку получения элемента по индексу при закрытии производственных счетов в БГУ 1.0. Подведем краткий итог наших действий: