Почему не считаются вычеты на детей в 1С:ЗиК 7.7 после обновления до 371 релиза

Программист 1С v7.7 Налоговый учет IT и автоматизация бизнеса
← На главную

При обновлении конфигурации 1С:Зарплата и Кадры 7.7 (ЗиК) с достаточно старых версий (например, с 351 на 371) пользователи часто сталкиваются с тем, что программа перестает рассчитывать стандартные налоговые вычеты на детей. Проблема проявляется в том, что справочник Виды вычетов оказывается пустым или заполненным некорректно: в нем отсутствуют новые коды (126–149), а старые (114–125) более не применяются согласно законодательству. Рассмотрим подробнее, почему это происходит и как восстановить работоспособность системы.

Разбор причины возникновения проблемы

В платформе 1С 7.7 процесс обновления состоит из двух этапов: объединения метаданных (замена md-файла) и выполнения регламентных процедур в режиме «Предприятие». За второй этап отвечает обработка ОбновлениеИБ.ert. Если при первом запуске после обновления md-файла эта обработка не отработала до конца или была пропущена, служебные справочники не будут приведены в актуальное состояние.

Проанализируем ситуацию: начиная с 360-х релизов, логика расчета НДФЛ в ЗиК существенно изменилась. Программа теперь ориентируется не просто на код вычета, а на его внутренний идентификатор. Если вы добавите код «126» в справочник вручную просто текстом, расчет не заработает, так как программа «ищет» за кодом скрытую связь с алгоритмом (например, идентификатор Детский1).

Существует мнение, что обновления нужно накатывать строго последовательно, не «перескакивая» через релизы. В 7.7 это не совсем так: процедура ОбновлениеРелиза() в коде обработки обновления обычно содержит блоки для каждого пропущенного этапа. Однако, если база имеет накопленные ошибки в данных (например, документы без номеров или битые ссылки), обработка может «споткнуться» и прекратить работу, не дойдя до заполнения справочника вычетов.

Способ 1: Принудительный запуск обновления через константу

Если мы выяснили, что справочники пусты, попробуем заставить программу выполнить обновление заново. Для этого нам нужно «обмануть» систему, заставив её думать, что текущая база данных еще не обновлена до 371 релиза.

  1. Откроем программу в режиме «Предприятие».
  2. Перейдем в меню «Операции» — «Константы».
  3. Найдем константу Номер релиза.
  4. Изменим её значение на более старое, например, 7.70.351.
  5. Закроем программу и запустим её снова. При запуске система сравнит номер в константе с номером в конфигурации и предложит выполнить обновление информационной базы. Соглашаемся и дожидаемся завершения процесса.

После этого проверим справочник Виды вычетов. Если регламентные процедуры отработали корректно, он заполнится автоматически.

Способ 2: Перенос данных из чистой базы с помощью Tranref.ert

Если принудительное обновление не помогает или база выдает ошибки, мы можем воспользоваться методом прямого переноса справочника из эталонной базы. Нам понадобится «чистая» (пустая) база ЗиК того же 371 релиза. Разберем этот процесс по шагам.

  1. Создадим новую пустую папку и развернем в ней типовую конфигурацию 371 релиза. При первом запуске она сама сформирует правильный справочник вычетов.
  2. Воспользуемся стандартной обработкой tranref.ert (Перенос справочников), которая обычно находится в дополнительных материалах к релизам или в папке ExtForms.
  3. В «чистой» базе запустим обработку и выгрузим справочник Виды вычетов в файл.
  4. В нашей рабочей базе запустим ту же обработку в режиме загрузки. Важно: в настройках загрузки следует установить флажок «Замещать существующие объекты», чтобы программа корректно обновила идентификаторы и параметры уже существующих кодов.

Способ 3: Программное восстановление идентификаторов

Для продвинутых пользователей и программистов рассмотрим вариант восстановления кодов через программный код. Мы можем вызвать процедуры, заложенные разработчиками 1С, непосредственно из внешней обработки. Проанализируем структуру обработки ОбновлениеИБ.ert. В ней нас интересуют функции, отвечающие за актуализацию законодательных данных.

Пример кода для вызова во внешней обработке:


// Создаем объект обработки обновления
Обновление = СоздатьОбъект("Обработка");
Обновление.УстановитьФорму("ОбновлениеИБ");

// Вызываем последовательно процедуры заполнения для разных периодов
// Эти процедуры пропишут коды и свяжут их с алгоритмами расчета
Обновление.ЗаполнитьКодыДоходов2016();
Обновление.ЗаполнитьИдентификаторыВычетов();
Обновление.ОписатьВычеты2017();
Обновление.ОписатьВычеты2018();

Предупреждение("Справочник вычетов успешно актуализирован!");

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

Проверка результата и важные нюансы

После выполнения любого из описанных выше способов, необходимо убедиться, что вычеты начали применяться. Рассмотрим, на что обратить внимание:

В завершение отметим: ситуация с «пропавшими» вычетами в 371 релизе — это следствие перехода на новые форматы отчетности 2-НДФЛ и 6-НДФЛ. Тщательный контроль за составом справочника Виды вычетов позволит избежать доначислений налога и претензий со стороны налоговой инспекции.

← На главную