Переносил данные в 2-х базах, примерно одинаковых размеров и состава видов начислений. Одна база перенеслась без проблем стандартными средствами, а вот со второй базой вдоволь намучился.
Первая ошибка проявилась в общем модуле ЗарплатаКадры в процедуре УстановитьРеквизитыВПодчиненныхПодразделениях.
Разбираться не стал и просто закомментировал в этом модуле строки в конце процедуры:
//Пока ВыборкаПодразделений.Следующий() Цикл // ПодразделениеОбъект = ВыборкаПодразделений.Ссылка.ПолучитьОбъект(); // Попытка // ПодразделениеОбъект.Заблокировать(); // Исключение // ТекстИсключенияЗаписи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( // НСтр("ru = 'Не удалось изменить подчиненное подразделение %1 при записи %2. // |Возможно, подразделение редактируется другим пользователем'"), // ПодразделениеОбъект.Наименование, // ?(ИсточникДанных = Неопределено, НСтр("ru = 'всех подразделений'"), ИсточникДанных.Наименование)); // ВызватьИсключение ТекстИсключенияЗаписи; // КонецПопытки; // // ЗаполнитьПодчиненноеПодразделение(ПодразделениеОбъект, СтрокаСтруктурныеЕдиницы.Ключ); // Если ИсточникДанных <> Неопределено И ВыполняетсяЗаписьОрганизации Тогда // Если Не ИсточникДанных.ЕстьОбособленныеПодразделения И ПодразделениеОбъект.ОбособленноеПодразделение Тогда // ПодразделениеОбъект.ОбособленноеПодразделение = Ложь; // КонецЕсли; // КонецЕсли; // // ПодразделениеОбъект.ДополнительныеСвойства.Вставить("ОбработкаЗаписиРодителя", Истина); // ПодразделениеОбъект.ОбменДанными.Загрузка = Истина; // ПодразделениеОбъект.Записать(); //КонецЦикла;
Эту ошибку проскочил и наткнулся на "Номер года в литерале типа Дата превышает 3999". Ссылался на объект Перенос данных с префиксом "РОтп". Т.е. при переносе реестр отпусков. Как уж только я не искал эту дату. Накатал отчетик и просмотрел в семерке все документы по датам (нашел парочку, дату подправил, но не помогло). Потом просмотрел все кадровые и не кадровые документы с реквизитами Начало и Окончание. В этих реквизитах тоже дат не обнаружил. Закомментировать и проскочить этот объект в обработке УниверсальныйОбменДаннымиXML не получилось, т.к. проблемная дата закралась не в дате самого документа Перенос данных, а в регистре, регистратором которого выступает этот документ.
Пришлось вытаскивать правила обмена и править их. Находятся в ЗУП-е в общих макетах "ЗарплатаКадрыПереносДанныхИзЗиК23". Выгружаем данные, которые являются архивом, распаковываем и загружаем xml файл в конфигурацию Конвертация данных. Там есть алгоритм РеестрОтпусковВыгрузить. Я решил что раз такое дело, то обойдусь без реестра и вышел из выполнения данной процедуры.
Выгрузил правила, выгрузил модуль обработки, снова все запаковал и запихнул обратно в конфигурацию. Почему не захотел выгружать из ЗиК просто обработкой по правилам, а потом загружать в ЗУП? Потому что не очень хотел разбираться в куче параметров, которые сопровождают правила выгрузки. Что там указывать, какие даты и т.д. не совсем понятно.
В общем кое как данные загрузились и даже без предупреждения об ошибках. Но почему-то без начальной задолженности. Пришлось все таки делать выгрузку из ЗиК с помощью обработки и правил выгруженных из ЗУП-а.
Открыл в ЗиК обработку, загрузил правила, попробовал установить в параметрах даты на конец года. Поставил галку для выгрузи только задолженности по зарплате. При выгрузке получил ошибку:
Ошибка получения значения свойств объекта
Объект: Иванов Иван Иванович , свойство: Физическое лицо
Ошибка получения значения свойств объекта
Объект: Иванов Иван Иванович , свойство: Уточнение наименования
Посмотрел в правила конвертации как там выгружается справочник сотрудников. Действительно там прописано, что данные свойства должны выгружаться, но этих свойств у сотрудников в ЗиК нет, они есть только в ЗУП.
В итоге плюнул окончательно на все и полез напрямую править обработку выгрузки из 7-ки. Какие там вносил мелкие поправки по процедурам приводить не стану. У каждого своя специфика будет.
Я тоже очень долго ковырялся, но всё таки наковырял.
я добавил вот такой код в обработку выгрузки, в функцию РеестрОтпусковВыгрузить().
Если ПустоеЗначение(ТаблицаОтпуск.ДатаС) = 0 Тогда
Если ТаблицаОтпуск.ДатаС > Дата(2017,12,31) Тогда
Сообщить(Строка(Сотрудник)+" "+ТаблицаОтпуск.ДатаС+" "+ТаблицаОтпуск.Документ);
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(ТаблицаОтпуск.ДатаПо) = 0 Тогда
Если ТаблицаОтпуск.ДатаПо > Дата(2017,12,31) Тогда
Сообщить(Строка(Сотрудник)+" "+ТаблицаОтпуск.ДатаПо+" "+ТаблицаОтпуск.Документ);
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(ТаблицаОтпуск.ПериодС) = 0 Тогда
Если ТаблицаОтпуск.ПериодС > Дата(2017,12,31) Тогда
Сообщить(Строка(Сотрудник)+" "+ТаблицаОтпуск.ПериодС+" "+ТаблицаОтпуск.Документ);
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(ТаблицаОтпуск.ПериодПо) = 0 Тогда
Если ТаблицаОтпуск.ПериодПо > Дата(2017,12,31) Тогда
Сообщить(Строка(Сотрудник)+" "+ТаблицаОтпуск.ПериодПо+" "+ТаблицаОтпуск.Документ);
КонецЕсли;
КонецЕсли;
Оказалось что в приказе на отпуск дата окончания отпуска был 7010 год вместо 2010.
Отправить комментарий