При переходе на новые версии программных продуктов 1С пользователи часто сталкиваются с неожиданным поведением стандартных механизмов. Одной из наиболее резонансных проблем в ветке конфигурации 1С:Зарплата и управление персоналом 3.1.8 стал полный отказ функционала расшифровки в отчетах. Рассмотрим подробно, почему это происходит, какой внутренний механизм системы был нарушен и как привести программу в рабочее состояние.
Ситуация, когда при двойном клике по ячейке отчета (например, в «Полном своде начислений, удержаний и выплат») ничего не происходит или контекстное меню оказывается пустым, напрямую связана с критической программной ошибкой, зарегистрированной под номером 30164914. Проанализируем, почему это затронуло именно ветку 3.1.8.
В этой версии разработчики предприняли попытку глобального изменения механизма работы Системы компоновки данных (СКД). Изменения коснулись стандартной подсистеме «Варианты отчетов», которая отвечает за формирование интерфейса и обработку действий пользователя в отчетах. В результате «оптимизации» кода в релизах 3.1.8.110–3.1.8.113 возникла коллизия: алгоритм не мог корректно определить доступные поля расшифровки для текущего варианта отчета.
Важно понимать, что проблема не ограничивалась только «Сводом». Мы можем наблюдать аналогичное поведение в следующих формах:
Как показывает практика и подтверждают сообщения специалистов, никакие манипуляции с платформой (например, переход на 8.3.12 или 8.3.13) не решают проблему, так как ошибка заложена в самом программном коде конфигурации. Проанализируем последовательность действий для исправления ситуации:
30164914.Рассмотрим пример того, как система обрабатывает расшифровку на уровне кода в исправленных версиях. Процедура обработки расшифровки в модуле управляемого приложения теперь корректно инициализирует параметры выбора:
Процедура ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыВыбора = Новый Структура("ИсточникДанных, ПолеРасшифровки", ЭтотОбъект, Расшифровка);
ОтчетыСервер.ОткрытьФормуВыбораПоляРасшифровки(ПараметрыВыбора);
КонецПроцедуры
Переход на версию 3.1.8 принес не только проблемы с отчетами. Если вы планируете обновление, нам стоит рассмотреть еще несколько критических моментов, которые могут потребовать ручного вмешательства или особого контроля.
1. Потеря или замена лицевых счетов сотрудников
В ветке 3.1.8 был реализован переход на новую структуру хранения истории лицевых счетов. Теперь данные хранятся в специализированном регистре сведений с поддержкой периодичности. Разберем ситуацию: при конвертации данных алгоритм может ошибочно выбрать не последний актуальный счет, а первый созданный в базе. Это приведет к тому, что при формировании Ведомость в банк реквизиты сотрудника окажутся неверными.
2. Расчет НДФЛ в межрасчетных документах
Посмотрим на поведение документов Отпуск и Больничный лист. В ранних сборках 3.1.8 наблюдались проблемы с расчетом налога, если у сотрудника были перерасчеты за прошлые периоды. Налог мог распределяться «рваными» частями (положительные и отрицательные суммы), что создавало колоссальные трудности при формировании отчета 6-НДФЛ.
3. Начисление взносов по договорам ГПХ
Выясним причину жалоб на расчеты с договорниками. Если дата акта по договору ГПХ не совпадает с последним днем месяца, документ Начисление зарплаты и взносов мог игнорировать такие начисления при расчете страховых взносов. Это требует тщательной проверки каждого документа после обновления.
Если по каким-то причинам мгновенное обновление до 137-го релиза невозможно, проанализируем варианты обхода ошибки:
3.1.7, так как они используют более старые механизмы обращения к данным, которые не подверглись «сломанной» оптимизации.СтандартныеОбработки.УправлениеОтчетами, сохраняют часть функционала расшифровки.Рассмотрим, как может выглядеть фрагмент кода в расширении для восстановления работоспособности (упрощенный пример):
&Вместо("ПриКомпоновкеРезультата")
Процедура Ист_ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Принудительно включаем использование расшифровки
ЭтотОбъект.РезультатОтчета.ИспользованиеРасшифровки = Истина;
ПродолжитьВызов(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка);
КонецПроцедуры
Подводя итог, можно сказать, что ветка 3.1.8 стала переходным этапом, в котором внедрялись масштабные изменения в ядро системы. Если вы столкнулись с тем, что «Полный свод» не расшифровывается, единственным стабильным решением является обновление до релиза 3.1.8.137 или выше.
Перед обновлением мы рекомендуем выполнить следующие действия:
Помните, что работа с программными продуктами 1С требует комплексного подхода: решение одной технической проблемы (как с расшифровкой свода) может потребовать проверки смежных участков учета, особенно в таких чувствительных областях, как расчет заработной платы и налогов.