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

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

Мы переходили с 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.

8 Comments

  1. aves

    Есть технология выгрузки без ограничений на объем. http://infostart.ru/public/144703/

    Reply
  2. wolfsoft

    (1) aves,

    Публикация не активна
    Reply
  3. aves

    (2) теперь активна

    Reply
  4. prodines

    (3) aves, не, ну нормально — Ваша публикация продаётся за деньги, а моя — бесплатна — есть разница?

    Reply
  5. grig_nv

    Спасибо за идею, хотел пометить на удаление всех уволенных, но информация о том, что на пару тысяч сотров все равно не будет работать весьма полезна. (на ночь оставлял выгрузку — утром вылетела.)

    Reply
  6. grig_nv

    Кстати, можно пару примеров на что смотреть после загрузки — что задваивается?

    Reply
  7. prodines

    (6) grig_nv, в основном, задваиваются только справочники. Документы «перенос данных» задваиваются по номерам — но не по содержимому (если бы по содержимому, то вся затея не имела бы смысла). Поэтому я после каждой порции переноса добавлял префикс к номерам всех документов «перенос данных», означающий номер порции переноса. Виды расчетов тоже задваивались — но это оказалось не страшней, чем задвоение справочников. В справочнике «Сотрудники» много задвоений пошло в «архив сотрудников» — таких архивных сотрудников я умышленно удалил с нарушением ссылочной целостности, а потом нашёл все битые ссылки и поудалял их обработкой. Просто все дубли — архивные сотрудники — ссылались исключительно на дубли же — искать зависимости и удалять вручную показалось муторно. В результате всё оказалось нормально, итоги не пострадали.

    Пара тысяч сотров — может, и будет — кто его знает. У меня порция получилась на 400 человек — а у кого-то на другое количество может получиться. Чем меньше порций перегрузки — тем лучше — потому что сколько порций перегрузки — столько потом и дублей будет. А меня было 5 порций — и поэтому дубли «запятерились».

    Reply
  8. elenko1

    Ухх, спасибо БОЛЬШОЕ, неделю с выгрузкой мучаемся, именно с такой ошибкой — да и просто нужно бы свернуть базу и передавать только работающих сотрудников на 31.12.14. Скачала, сейчас сделаю аналогичные правки в последней версии правил и обработки — посмотрим, что выйдет. В любом случае, обнадёживающе!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *