gifts2017

Перегрузка ЗИК 7.7 -> ЗУП 8.2: msxml6.dll: Недостаточно памяти для завершения операции

Опубликовал program program (prodines) в раздел Обмен - Перенос данных из 1С7.7 в 1C8.X

Один из вариантов обхода проблемы.

Мы переходили с 1С:Зарплата и Кадры 7.7 на 1С:Зарплата и Управление Персоналом 8.2

При перегрузке штатным способом данных из ЗИК 7.7 в ЗУП 8.2. возникали сообщения об ошибке примерно такого вида:

Ошибка исполнения обработчика:  ПВД_ПередОбработкойПравила_ФактическиеНачисленияИУдержания
  - msxml6.dll: Недостаточно памяти для завершения операции.

Поискав в Интернете, я нашёл рекомендацию разбить выгрузку на части - по сотрудникам:

http://forums.kuban.ru/f1040/pomogite_sovetom_oshibka_pri_konvertacii_bazy_iz_z-2217308.html

Я модифицировал правила конвертации, используемые при выгрузке из 7.7 (PrB.xml) и модифицировал обработку по выгрузке (V77Exp.ert) - добавил условие, чтобы выгружались только сотрудники, не помеченные на удаление.

Далее типовой обработкой помечал на удаление нужные порции сотрудников, и перегружал остальные. У меня получилось перегружать по 400 сотрудников за раз. Как я определил сколько сотрудников перегружать за раз? Опытным путём.

К сожалению, при такой методике не избежать всевозможных задвоений - но их оказалось несложно почистить после переноса данных. Причём задвоения происходят столько раз, сколько порций перегрузки было. Впрочем, все задвоения некритичны для правильности переноса итогов (числа не задваиваются!) - так что метод вполне работоспособен.

Суть моих исправлений очень проста. Вот пример кода:

СпрСотрудники = СоздатьОбъект("Справочник.Сотрудники");
СпрСотрудники.ВыбратьЭлементы();
    Пока СпрСотрудники.ПолучитьЭлемент()=1 Цикл
//изм.   
    Если СпрСотрудники.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли;
//конец изм.
КонецЦикла;

Т.е. достаточно поиском найти все вхождения строки СпрСотрудники = СоздатьОбъект("Справочник.Сотрудники") и добавить в нижеследующий цикл условие отбора непомеченных на удаление элементов - и всё. И даже правила обмена правятся в данном случае не в 1С - а в любом текстовом редакторе. 

Я выкладываю модифицированные: правила обмена PrB.xml и обработку по выгрузке V77Exp.ert. Оба файла следует положить в папку ExtForms конфигурации.

Конфигурация 1С:Зарплата и Кадры 7.7 должна быть версии не ниже 7.70.332.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
zik_zup_parts.zip
.zip 545,74Kb
30.10.13
18
.zip 545,74Kb 18 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Веселов Александр (aves) 06.11.13 11:40
Есть технология выгрузки без ограничений на объем. http://infostart.ru/public/144703/
2. Антон Рощин (wolfsoft) 06.11.13 12:56
(1) aves,
Публикация не активна
3. Веселов Александр (aves) 07.11.13 10:18
4. program program (prodines) 07.11.13 10:45
(3) aves, не, ну нормально - Ваша публикация продаётся за деньги, а моя - бесплатна - есть разница?
5. андрей Фил (grig_nv) 03.12.13 08:39
Спасибо за идею, хотел пометить на удаление всех уволенных, но информация о том, что на пару тысяч сотров все равно не будет работать весьма полезна. (на ночь оставлял выгрузку - утром вылетела.)
6. андрей Фил (grig_nv) 03.12.13 08:49
Кстати, можно пару примеров на что смотреть после загрузки - что задваивается?
7. program program (prodines) 03.12.13 09:25
(6) grig_nv, в основном, задваиваются только справочники. Документы "перенос данных" задваиваются по номерам - но не по содержимому (если бы по содержимому, то вся затея не имела бы смысла). Поэтому я после каждой порции переноса добавлял префикс к номерам всех документов "перенос данных", означающий номер порции переноса. Виды расчетов тоже задваивались - но это оказалось не страшней, чем задвоение справочников. В справочнике "Сотрудники" много задвоений пошло в "архив сотрудников" - таких архивных сотрудников я умышленно удалил с нарушением ссылочной целостности, а потом нашёл все битые ссылки и поудалял их обработкой. Просто все дубли - архивные сотрудники - ссылались исключительно на дубли же - искать зависимости и удалять вручную показалось муторно. В результате всё оказалось нормально, итоги не пострадали.

Пара тысяч сотров - может, и будет - кто его знает. У меня порция получилась на 400 человек - а у кого-то на другое количество может получиться. Чем меньше порций перегрузки - тем лучше - потому что сколько порций перегрузки - столько потом и дублей будет. А меня было 5 порций - и поэтому дубли "запятерились".
8. Lena Kl (elenko1) 18.02.15 00:58
Ухх, спасибо БОЛЬШОЕ, неделю с выгрузкой мучаемся, именно с такой ошибкой - да и просто нужно бы свернуть базу и передавать только работающих сотрудников на 31.12.14. Скачала, сейчас сделаю аналогичные правки в последней версии правил и обработки - посмотрим, что выйдет. В любом случае, обнадёживающе!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа