Что делать при ошибке "Данные Отпусков Карточки Сотрудника" во время обновления ЗУП 3.1.20.71?

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

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

Анализ причины ошибки

Чтобы понять суть проблемы, проанализируем изменения в релизе. Начиная с версий 3.1.20, разработчики 1С ввели новые регистры сведений для оптимизации хранения и отображения информации об отпусках, в частности, в личной карточке Т-2. Ключевым в нашем случае является регистр сведений Данные отпусков карточки сотрудника.

В процессе обновления конфигурации система запускает фоновую процедуру, которая пытается заполнить этот новый регистр на основании уже существующих в базе документов — Отпуск, Больничный лист и других, влияющих на остатки отпусков. Ошибка "Запись с такими ключевыми полями существует!" возникает в тот момент, когда программа пытается создать в новом регистре запись, которая дублирует уже созданную по ключевым полям (например, по сотруднику и периоду). Чаще всего это происходит из-за "проблемных" документов из прошлых периодов. Это могут быть:

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

Пошаговое решение проблемы

Поскольку ошибка связана с конкретными данными, универсального патча для нее может не быть. Однако существует проверенный способ, который позволяет обойти проблему и успешно завершить обновление. Рассмотрим его по шагам.

  1. Определение проблемного документа.

    Самый сложный этап — найти тот самый документ, который вызывает конфликт. Обычно в тексте ошибки или в журнале регистрации можно найти ссылку на объект, вызвавший проблему. Если явного указания нет, придется действовать методом анализа. В обсуждаемом случае система "заткнулась" на документе Больничный лист 2018 года. Ищите документы, связанные с отпусками или их отменой, за прошлые периоды, особенно те, которые исправлялись.

  2. Временная пометка документа на удаление.

    После того как вы нашли предполагаемый "проблемный" документ, откройте его и пометьте на удаление. Важно: не удаляйте его окончательно! Нам нужно лишь временно исключить его из обработки при обновлении базы данных.

  3. Повторный запуск обновления.

    Запустите процесс обновления конфигурации заново (F5 в режиме Конфигуратора). Поскольку проблемный документ теперь помечен на удаление, обработчики обновления его проигнорируют, и процесс должен завершиться успешно.

  4. Снятие пометки на удаление и перепроведение документа.

    После успешного завершения обновления вернитесь в режим "Предприятие". Найдите ваш документ, снимите с него пометку на удаление и заново проведите его. Теперь, когда структура базы данных уже обновлена, проведение документа будет выполнено по новым алгоритмам. Это гарантирует, что в новый регистр Данные Отпусков Карточки Сотрудника будут корректно записаны все необходимые сведения из этого документа.

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

← На главную