Переход со старых версий программного обеспечения на новые — это всегда ответственный и технологически сложный процесс. При переносе накопленных данных из редакции «1С:Зарплата и Управление Персоналом 2.5» (на обычных формах) в современную редакцию «1С:Зарплата и Управление Персоналом 3.1» пользователи часто сталкиваются с техническими сбоями. Одним из наиболее частых и неприятных препятствий является ошибка уникальности записей при загрузке регистра остатков отпусков.
В этой статье мы подробно разберем, почему возникает ошибка с текстом Запись с такими ключевыми полями существует! : НачальныеОстаткиОтпусков, проанализируем её техническую природу и рассмотрим пошаговые инструкции по её устранению различными методами.
Для начала разберем природу возникновения данной ошибки. В процессе переноса данных (который выполняется либо напрямую через COM-соединение, либо посредством выгрузки/загрузки XML-файла) программа создает специальный документ «Перенос данных» с кодом «ОстОтп» (Остатки отпусков). Этот документ при проведении делает записи в регистр сведений Начальные остатки отпусков в новой базе ЗУП 3.1.
Регистр сведений Начальные остатки отпусков имеет строго определенную структуру. Уникальность его записей в системе обеспечивается набором так называемых ключевых полей (измерений). К ним относятся:
Сотрудники).Если алгоритмы переноса считывают из старой базы ЗУП 2.5 сведения, которые при конвертации формируют две или более строки с абсолютно одинаковыми значениями во всех этих четырех полях для одного человека, платформа выдает системную ошибку транзакции: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует!. Запись пакета данных прерывается, и перенос останавливается.
Рассмотрим подробнее основные причины, из-за которых в исходной базе 1С:ЗУП 2.5 возникают подобные дубли:
Фактические отпуска организаций. Если в нем присутствуют некорректные записи, сделанные вручную, или «зависшие» движения от удаленных документов, это напрямую повлияет на некорректный расчет остатков при переносе.---
Самый правильный и методологически верный путь — исправить информацию непосредственно в базе-источнике, чтобы перенос прошел в автоматическом режиме без сбоев. Проанализируем, как это сделать по шагам.
Шаг 1. Идентификация проблемного сотрудника.
Внимательно изучите текст ошибки в окне выгрузки/загрузки. Там обязательно будет указан конкретный сотрудник, вид отпуска и рабочий период. Например, в сообщении:
НачальныеОстаткиОтпусков: ФИО, Основной, 31.08.2013 0:00:00, 01.09.2012 0:00:00 (Номер строки: 2)
программа явно сообщает, что проблема возникла по сотруднику "ФИО" для "Основного" отпуска за период с 01.09.2012 по 31.08.2013.
Шаг 2. Проверка справочника сотрудников.
Откройте базу ЗУП 2.5. Перейдите в справочник Сотрудники и выполните поиск по фамилии проблемного человека. Убедитесь, что у вас нет задвоенных карточек сотрудников. Если обнаружены дубли, необходимо воспользоваться типовой обработкой Поиск и замена дубликатов для объединения некорректных элементов справочника.
Шаг 3. Анализ регистра «Фактические отпуска организаций».
Перейдите в меню Операции -> Регистры сведений -> Фактические отпуска организаций. Настройте отбор по нашему проблемному сотруднику. Внимательно изучите все записи регистра, особенно те, которые приходятся на период, указанный в ошибке. Если вы обнаружите дублирующиеся строки или документы-регистраторы, которые вызывают сомнения (например, дважды проведенный приказ на один и тот же отпуск), распроведите лишние документы или аккуратно удалите дублирующиеся записи непосредственно из регистра.
Шаг 4. Проведение тестирования и исправления.
Перед повторной выгрузкой обязательно запустите базу ЗУП 2.5 в режиме «Конфигуратор» и выполните процедуру «Тестирование и исправление» (меню Администрирование -> Тестирование и исправление...). Установите флажки:
После успешного завершения проверок повторите попытку переноса данных в ЗУП 3.1.
---
Если ошибка возникает по единичному сотруднику, а сроки перехода ограничены, тратить время на исправление старой базы бывает нецелесообразно. Рассмотрим альтернативный, гарантированно рабочий вариант — отключение переноса остатков отпусков по всей базе и занесение их вручную.
Разберем данный алгоритм по шагам:
Перенос данных с кодом ОстОтп).Главное -> См. также -> Остатки отпусков (в зависимости от настроек интерфейса данный пункт также может находиться в разделе Кадры).Ввод остатков отпусков (или воспользуйтесь формой ввода начальной штатной расстановки).Этот способ является наиболее безопасным, так как гарантирует, что в новой базе данные по остаткам отпусков будут абсолютно корректными и выверенными вручную расчетной службой предприятия.
---
Если перенос данных осуществляется не через прямое COM-подключение к базе, а посредством выгрузки данных в файл формата XML с последующим импортом, мы можем прибегнуть к ручной корректировке выгруженного файла данных. Этот метод требует аккуратности, но позволяет решить проблему быстро без изменения исходной базы.
Рассмотрим, как локализовать и устранить дубль непосредственно в XML-файле:
data.xml).Ctrl + F.01.09.2012).
<РегистрСведенийЗапись.НачальныеОстаткиОтпусков>
<Сотрудник>Иванов Иван Иванович</Сотрудник>
<ВидЕжегодногоОтпуска>Основной</ВидЕжегодногоОтпуска>
<РабочийГодНачало>2012-09-01</РабочийГодНачало>
<РабочийГодОкончание>2013-08-31</РабочийГодОкончание>
<КоличествоДней>28</КоличествоДней>
</РегистрСведенийЗапись.НачальныеОстаткиОтпусков>
<РегистрСведенийЗапись...> до закрывающего тега </РегистрСведенийЗапись...>) и аккуратно удалите его из файла с помощью клавиши Delete.Универсальный обмен данными XML, указав путь к нашему отредактированному файлу. Загрузка пройдет без ошибок, так как дублирующая запись была ликвидирована.---
Иногда корни проблемы лежат в ошибках самих правил конвертации данных, которые поставляются фирмой «1С» в составе релизов. Разработчики регулярно оптимизируют механизмы переноса данных и исправляют выявленные баги.
Перед тем как приступать к переносу, настоятельно рекомендуем выполнить следующие подготовительные шаги:
Соблюдение этих простых рекомендаций и использование описанных в статье методик позволит вам успешно преодолеть технические сложности при миграции данных и обеспечить надежный старт работы в новой конфигурации!