Переход с устаревших версий 1С:Комплексная автоматизация на современные редакции часто сопряжен с трудностями при переносе кадровой истории. Одной из наиболее частых проблем является ситуация, когда данные в регистрах фактически присутствуют (загружены документом Перенос данных), но отчет Личная карточка (Т-2) их «не видит» или отображает неполную информацию. Давайте разберем, почему это происходит и как исправить ситуацию массово, не прибегая к ручному перевыбору каждого сотрудника.
При использовании Помощника перехода или универсальной выгрузки данных через XML, информация попадает в базу напрямую через объекты Перенос данных. Однако система 1С:КА 2.4 устроена сложнее: для корректного формирования кадровой отчетности недостаточно просто создать запись в регистре сведений.
Когда вы открываете документ Перенос данных и вручную перевыбираете сотрудника, происходит системное событие записи, которое инициирует:
Т-2.Если данные загружены программно «в обход» этих событий, отчеты не могут корректно считать информацию, так как внутренние связи в регистрах не были проиндексированы или пересчитаны при записи.
Так как перевыбирать вручную более тысячи сотрудников нецелесообразно, нам потребуется автоматизировать процесс «перезаписи» строк в документах Перенос данных. Рассмотрим пошагово, как это реализовать.
Нам необходимо написать скрипт, который переберет все документы Перенос данных, содержащие кадровые сведения, и программно выполнит перезапись движений. Мы будем использовать объект ДокументОбъект.ПереносДанных.
Для начала создадим внешнюю обработку, которая будет искать нужные нам документы. Посмотрим пример логики обхода табличной части:
// Пример логики для массовой актуализации
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.ПереносДанных ГДЕ Проведен = ИСТИНА";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбъектДок = Результат.Ссылка.ПолучитьОбъект();
// Проходим по табличным частям, где хранятся данные регистров
Для Каждого ТЧ Из ОбъектДок.ДанныеРегистров Цикл
// Принудительная имитация активности записи
// Для некоторых регистров может потребоваться перевыбор сотрудника
// через установку значения в колонке
КонецЦикла;
ОбъектДок.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
Если написание собственного кода кажется избыточным, можно воспользоваться штатной Групповой обработкой справочников и документов. Для этого:
НСИ и администрирование.Документ.ПереносДанных.Изменить реквизит.Сотрудник, и установите его значение в Выражение, которое просто присваивает текущее значение (например, Объект.Сотрудник).Важно помнить, что выполнение такой операции приведет к массовой записи документов, поэтому перед началом процесса обязательно создайте резервную копию базы данных.
После выполнения массовой записи данных через обработку, рекомендуется запустить процедуру Пересчет итогов в конфигураторе (раздел Администрирование -> Тестирование и исправление). Это гарантирует, что регистры накопления, на которых строится отчет Т-2, будут приведены в соответствие с актуальными записями.
Также проанализируйте регистры сведений, такие как Состояние сотрудников. Иногда отчет Т-2 опирается на «актуальное состояние» работника. Если при переносе были пропущены записи в этом регистре, никакие манипуляции с документом Перенос данных не помогут. Убедитесь, что для каждого сотрудника есть актуальная запись, определяющая его текущий статус в организации.
Всегда тестируйте любые автоматизированные правки сначала на тестовой копии базы. Массовая перезапись документов вызывает активное формирование движений по регистрам, что создает высокую нагрузку на SQL-сервер и может заблокировать работу пользователей на время выполнения обработки.
Следуя этим шагам, вы сможете успешно актуализировать данные в личных карточках Т-2, обеспечив соответствие между историческими данными, перенесенными из 1С:КА 1.1, и требованиями современной системы 1С:КА 2.4.