Как исправить ошибку "Индекс находится за пределами массива" при заполнении документа "Начисление зарплаты и взносов" в 1С ЗГУ 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Налоговый учет
← На главную

Мы рассмотрим распространенную ошибку "Индекс находится за пределами массива", которая возникает в системе 1С Зарплата и кадры государственного учреждения (ЗГУ) при попытке заполнить документ "Начисление зарплаты и взносов". Эта проблема может серьезно затруднить работу бухгалтерии, особенно в период расчета заработной платы. Разберем шаги по диагностике, временные обходные пути и окончательное решение, предоставленное фирмой "1С".

Суть проблемы: ошибка "Индекс находится за пределами массива"

Пользователи, работающие в 1С ЗГУ версии 3.1.22.25 на платформе 8.3.20.1789, столкнулись с ошибкой при перезаполнении или первичном заполнении документа "Начисление зарплаты и взносов". Ошибка проявляется как сообщение: "Ошибка выполнения фонового задания ДлительныеОперации.ВыполнитьСКонтекстомКлиента с идентификатором [...] по причине Индекс находится за границами массива". Более детально, системная ошибка указывает на следующие модули и строки:


{ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль(2996)}:ЗаполнитьЗначенияСвойств(НоваяСтрока, РаспределениеСтрокиНДФЛ[0]);
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(15400)}:БухучетНДФЛ = ОтражениеЗарплатыВБухучетеРасширенный.ВыполнитьОтражениеНДФЛВБухучете(ИсходныеДанные);
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(10014)}:ВыполнитьОтражениеНДФЛВБухучете;
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(694)}:РассчитатьЗарплатуСлужебный;
{ОбщийМодуль.РасчетЗарплатыРасширенный.Модуль(2146)}:МенеджерРасчета.РассчитатьЗарплату;
{Документ.НачислениеЗарплаты.МодульМенеджера(411)}:ДанныеЗаполнения = РасчетЗарплатыРасширенный.ДанныеДляЗаполненияТаблицДокумента(ОписаниеДокумента, Организация, МесяцНачисления, ДополнительныеПараметры);
{(1)}:Документы.НачислениеЗарплаты.ПодготовитьДанныеДляЗаполнения(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5267)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1284)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1274)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

Из анализа трассировки стека вызовов мы видим, что проблема возникает в модуле ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль, конкретно при попытке заполнения значений свойств из массива РаспределениеСтрокиНДФЛ[0]. Это указывает на проблему с распределением НДФЛ в бухгалтерском учете.

Первичная диагностика и уточнение условий возникновения ошибки

Для определения истинной причины проблемы, мы провели ряд тестов:

  1. Проверка количества сотрудников: Изначально предполагалось, что ошибка может быть связана с большим количеством сотрудников (например, 1800). Однако, при заполнении документа за месяц май, указывая подразделение всего с двумя сотрудниками, ошибка повторялась. Это опровергло гипотезу о зависимости от общего количества обрабатываемых данных.
  2. Метод заполнения документа: Было обнаружено, что если документ "Начисление зарплаты и взносов" заполнять не кнопкой "Заполнить", а через "Подбор" по конкретным сотрудникам, то начисления и НДФЛ по обоим сотрудникам рассчитывались корректно, и ошибка не возникала. Это стало ключевой подсказкой для временного обходного пути.
  3. Контекст работы: В программе давно и активно работают, и в предыдущих месяцах (например, в апреле) и даже первоначально в мае все расчеты производились без проблем. Проблема появилась внезапно, что часто указывает на последствия обновлений или изменения в данных.

Причиной ошибки, по всей видимости, стало то, что программа не могла корректно распределить НДФЛ из-за пустого "места получения дохода" при автоматическом заполнении. При использовании "Подбора", это поле устанавливалось корректно.

Официальное подтверждение проблемы от 1С

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


{ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль(2599)}: ЗаполнитьЗначенияСвойств(НоваяСтрока, РаспределениеСтрокиНДФЛ[0]);
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(15414)}: БухучетНДФЛ = ОтражениеЗарплатыВБухучетеРасширенный.ВыполнитьОтражениеНДФЛВБухучете(ИсходныеДанные);
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(10028)}: ВыполнитьОтражениеНДФЛВБухучете;

Было объявлено, что "1С" выпустит исправительный патч или включит исправление в ближайший релиз.

Временный обходной путь

До момента установки официального исправления, мы можем использовать следующий обходной путь для заполнения документа "Начисление зарплаты и взносов":

  1. Не использовать кнопку "Заполнить": Избегайте использования стандартной кнопки "Заполнить" в документе "Начисление зарплаты и взносов".
  2. Использовать "Подбор" сотрудников: Вместо этого, заполняйте табличную часть документа, используя функционал "Подбор". Мы можем набрать всех необходимых сотрудников через форму подбора, и документ должен будет отработать корректно.

Этот метод позволяет корректно установить необходимые данные, включая "место получения дохода", тем самым минуя логику, содержащую ошибку в стандартном автоматическом заполнении.

Официальное исправление проблемы

Фирма "1С" оперативно выпустила обновление, устраняющее данную ошибку. Ошибка была исправлена в версии 3.1.22.48 конфигураций "Зарплата и управление персоналом" и "Зарплата и кадры государственного учреждения" (ПРОФ, КОРП и базовая версии), которая вышла 16 мая 2022 года. После обновления до этой версии, пользователи подтвердили, что заполнение документа "Начисление зарплаты и взносов" через кнопку "Заполнить" стало работать корректно, и исходная ошибка "Индекс находится за пределами массива" больше не возникала.

Важный момент после обновления: возможные новые ошибки

Мы обратим внимание на один важный аспект, который может возникнуть после обновления. После перехода на релиз 3.1.22.48, один из пользователей столкнулся с новой ошибкой при проведении документа "Начисление зарплаты и взносов" (также связанной с "ДлительныеОперации"). Однако, как выяснилось, эта новая ошибка не была связана с исправленной проблемой, а была вызвана собственными некорректными настройками нового начисления, добавленного пользователем.

В частности, в настройках нового начисления (надбавки) в "Учете времени" была ошибочно установлена галочка на "основном" времени вместо "дополнительного". После исправления этой настройки, все документы стали проводиться без проблем. Этот случай подчеркивает важность тщательной проверки всех недавно добавленных или измененных настроек начислений и других элементов системы после обновлений, так как они могут влиять на логику расчетов и вызывать ошибки, не связанные напрямую с исправленными багами конфигурации.

Выводы и рекомендации

Итак, если вы столкнулись с ошибкой "Индекс находится за границами массива" при заполнении документа "Начисление зарплаты и взносов" в 1С ЗГУ 3.1.22.25, мы рекомендуем следующие действия:

  1. Используйте обходной путь: До обновления конфигурации, воспользуйтесь методом заполнения документа через "Подбор" сотрудников.
  2. Обновите конфигурацию: Главным и окончательным решением является обновление вашей конфигурации 1С ЗГУ до версии 3.1.22.48 или выше. Это устранит корневую причину проблемы.
  3. Проверьте настройки после обновления: После обновления, если возникают новые ошибки, особенно при проведении документов, тщательно проверяйте настройки всех недавно введенных начислений, удержаний и других учетных параметров, так как они могут быть причиной новых проблем, не связанных с исходным исправленным багом.

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

← На главную