В процессе сопровождения конфигураций «1С:Зарплата и управление персоналом» (ЗУП) и «1С:Зарплата и кадры государственного учреждения» (ЗГУ) редакции 3.1 технические специалисты часто сталкиваются с необходимостью массовой корректировки данных. Это может быть замена устаревших статей финансирования, исправление ошибочно выбранных планов видов расчета или устранение дублирующихся элементов справочников. Для решения таких задач традиционно применяется универсальная обработка поиска и замены значений. Однако специфика расчетных конфигураций 1С накладывает жесткие ограничения на использование подобных инструментов.
В этой статье мы подробно разберем, как правильно выбрать и настроить обработку поиска и замены для управляемых форм, проанализируем критически важные настройки, которые уберегут вашу базу данных от разрушения, и рассмотрим безопасные встроенные альтернативы.
Прежде всего, давайте разграничим два похожих по названию, но принципиально разных по логике работы инструмента:
Поскольку оригинальная обработка от «1С» разрабатывалась во времена обычных форм, для работы в ЗУП 3.1 (построенной на управляемых формах) необходимо использовать адаптированную версию обработки. Ее можно легально скачать с портала ИТС или найти на специализированных партнерских ресурсах.
При использовании внешней обработки «Поиск и замена значений» в ЗУП/ЗГУ существует огромный риск нарушить логику учета и безвозвратно испортить исторические данные. Пользователи на форумах часто упоминают «волшебную галку», без активации которой запуск обработки приводит к краху расчетов.
Выясним техническую причину этого явления. В настройках обработки присутствует флаг, который обычно называется «Отключать контроль записи», «Режим разработчика» или «Проводить при записи» (в зависимости от версии обработки).
С технической точки зрения этот флаг управляет свойством ОбменДанными.Загрузка при программной записи измененных объектов базы данных. Рассмотрим два сценария работы обработки:
Если этот параметр выключен, обработка пытается перезаписать каждый измененный документ в обычном режиме. В этот момент платформа 1С запускает стандартные обработчики событий («ПередЗаписью», «ПриЗаписи», «ОбработкаПроведения»).
В ЗУП и ЗГУ это запускает лавинообразную реакцию:
Когда мы устанавливаем признак отключения контроля, обработка выполняет запись объектов с параметром ОбменДанными.Загрузка = Истина. Посмотрим на примере кода, как это работает «под капотом» платформы 1С:
// Пример логики, отрабатывающей при отключении контроля записи
НовыйОбъект = СсылкаНаДокумент.ПолучитьОбъект();
НовыйОбъект.ОбменДанными.Загрузка = Истина;
// Производится замена значения в реквизите
НовыйОбъект.СтатьяФинансирования = НоваяСтатья;
НовыйОбъект.Записать(РежимЗаписиДокумента.Запись);
В таком режиме платформа 1С записывает объект напрямую в таблицы базы данных, полностью игнорируя прикладные проверки бизнес-логики, подписки на события и алгоритмы проведения. Ссылки просто заменяются новыми значениями, не вызывая нежелательных перерасчетов за прошлые периоды.
Важное предупреждение: При записи в режиме ОбменДанными.Загрузка = Истина замена происходит только в шапке или табличной части документа, но движения по регистрам (накопления, сведений, расчета) автоматически не пересчитываются. Поэтому при замене аналитики (например, статей финансирования) необходимо обязательно выбирать для замены не только сами документы, но и соответствующие записи в регистрах, иначе возникнет рассинхронизация данных между документом и его движениями.
Поскольку ручная замена статей финансирования в документах и регистрах через «Поиск и замену значений» сопряжена с рисками, в ЗУП и ЗГУ редакции 3.1 разработчики реализовали безопасные типовые альтернативы, которые позволяют решить задачу без программирования.
Рассмотрим их подробнее:
Иногда пользователи пытаются применить обработку «Поиск и замена значений» для устранения дубликатов в справочнике ФизическиеЛица. Делать это категорически запрещено!
Проанализируем причины:
РолиФизическихЛиц или ТекущаяТарифнаяСтавкаСотрудника) возникнут некорректные записи.Для корректного слияния дублей физических лиц необходимо использовать исключительно штатный инструмент «Объединение личных карточек», расположенный в разделе Кадры. Этот механизм разработан с учетом сложной структуры взаимосвязей регистров ЗУП и корректно переносит всю расчетную историю на одно выбранное физическое лицо.