Предистория:
Дело было так, начиная с лета 2014 года или даже ранее, начал пробовать переносы данных из ЗУП 2.5 в ЗУП 3.0.
Процесс этот, мягко сказать, непростой и очень, очень долгий. То лезут ошибки при выгрузке некоторых разделов, то нехватка памяти и все, стоим чешем репу.
Даже исправив ошибки, начинать нужно все сначала, а это может быть с десяток часов выгрузки.
Приходилось выгружать правила переноса данных из ЗУП 3.0, делается путем сохранения в конфигураторе общего макета "ЗарплатаКадрыПереносДанныхИзЗУП25" в файл xml.
Потом в этом файле при помощи "продвинутого" текстового редактора делать замену текста "ОПД_" на "ОбъектыПереносаДанных.".
Открывать обработку "Универсальный обмен данными в формате XML", грузить в нее правила. Задавать дату начала событий. Отмечать галочками, что требуется выгрузить. Жать выгрузить.
Загружать вручную полученные файлы в ЗУП 3.0.
Что же теперь происходит?
Ошибки так же появляются.
Выгрузка файла правил и попытка совершить все как раньше не выходит. 1С поменяли состав параметров в правилах выгрузки данных.
Теперь недостаточно задать дату начала, теперь нужно задавать параметр "ДатаНачалаПереносаРасчетныхДанных" и "ПереноситьНачисленияПредыдущейПрограммы", но они недоступны.
Да, можно загрузить правила в КД, там исправить, выгрузить обратно, потом в "Универсальный обмен данными в формате XML" задать их.
Муторно все проделывать вновь и вновь при обновлениях правил переноса в ЗУП 3.0 с выходом новых версий.
В конечном счете прочувствовав еще ранее всю прелесть выгрузки данных из ЗУП 2.5 посредством вызова "Универсальный обмен данными в формате XML" напрямую и то что в этом случае можно запустить несколько экземпляров ЗУП 2.5, в каждом выгружать разные разделы учета независимо друг от друга, решил что что-то нужно менять и сделал представленную здесь обработку.
Кстати, параллельно выгружать разделы в разных экземплярах ЗУП 2.5 значительно сокращает время, так как позволяет нагрузить процессор по полной программе, а не одно ядро как это делает типовой процесс выгрузки, выгружая раздел за разделом.
Я запускаю 4-6 экземпляров одновременно и i7 процессор прекрасно все перемолачивает, главное, что памяти дофига оперативной.
Что нужно?
- качаем обработку
- выгружаем правила переноса данных из ЗУП 3.0 (общий макет "ЗарплатаКадрыПереносДанныхИзЗУП25")
- запускаем обработку в ЗУП 2.5
- указываем ей файл с правилами
- указываем каталог куда необходимо произвести выгрузку
- указываем дату на которую переносятся данные (можно указать только первое число любого месяца)
- нажимаем кнопку "Загрузить разделы выгрузки данных из правил"
- отмечаем требующиеся разделы учета
- жмем кнопку "Выгрузить данные"
- загружаем вручную данные в ЗУП 3.0 посредством обработки "Универсальный обмен данными в формате XML"
Стоит упомянуть как отмечаются разделы и как они выгружаются на диск.
Если внутри раздела отмечены все подразделы, то раздел выгружается в один файл.
Если внутри раздела отмечены не все подразделы, то каждый отмеченный подраздел выгрузится в отдельный файл.
Что за имена файлов на выходе?
Например:
- +1900.01 - 01 - 2015.02.11 - ОбщиеОбъекты.xml
- +1900.01 - 01.01 - 2015.02.13 - Организации.xml
"+" - в начале говорит, о том что выгрузка завершилась успешно или же по крайней мере не с критической ошибкой времени выполнения, в любом случае нужно поглядывать в список сообщений выводимых в процессе выгрузки данных.
На рисунке выше видно, что раздел "07" пришлось выгружать по частям, так как подраздел "07.5" "помирает" на нехватке памяти.
Придется базу мучать во время выгрузки на серваке 1С х64, так как в файловом варианте труба просто.
UPD 20/04/2015
Похоже 1С решили забить на правила переноса данных в части полного переноса данных и кинули силы на переработку правил в сторону переноса остатков без истории, ни кадровой, ни учетной...
Добавил возможность произвести выгрузку данных в упрощенном режиме (чуть более чем полностью не переносится почти ничего из предыдущих периодов, так сказать перенос остатков и немного данных о среднем заработке).
Для упрощенного режима добавил флажок "Упрощенный перенос данных", при установленном флажке необходимо указать дату с которой начинается эксплуатация ЗУП 3.0.
При упрощенном переносе в название фала в начале перед датой добавлется фраза "Упрощенный перенос - ".
Если флажок снят, то используется полный перенос данных (то что 1С посчитала достаточным), при этом необходимо указать год начиная с которого переносятся учетные данные.
ВАЖНО!!!
Если вы после устранения ошибок в базе данных, не уверены, что достаточно переносить только тот раздел, где возникла ошибка и была устранена, то переносите все разделы или перенесите тот где исправляли, но понимая, что это для целей тестового переноса данных. Каждому собственно самому решать, что и как правильно.
UPD 2015/08/24
Подправил момент связанный с выгрузкой по одному сотруднику, теперь параметр передается в правила выгрузки корректно, но так или иначе необходимо исправить и сами правила выгрузки, чтобы не цеплялись все физики засветившиеся в регистрах СтраховыеВзносыСведенияОДоходах, НДФЛСведенияОДоходах.
Алгоритм: "ФизическиеЛица_ВременнаяТаблица"
Алгоритмы = ВидСубконто;
Параметры = ИсходящиеДанные;
Запросы = ВходящиеДанные;
ПринудительноОбновитьВременнуюТаблицу = Источник;
ФизическиеЛица_ВременнаяТаблица = Неопределено;
Если ЗначениеЗаполнено(ПринудительноОбновитьВременнуюТаблицу) = 0 Тогда
ФизическиеЛица_ВременнаяТаблица = ОбъектыПереносаДанных.Структура_Получить(Параметры.ВременноеХранилище, "ФизическиеЛица_ВременнаяТаблица");
КонецЕсли;
Если ФизическиеЛица_ВременнаяТаблица = Неопределено Тогда
Запрос = Новый Запрос;
Если Параметры.ПереноситьНачисленияПредыдущейПрограммы Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ДатаНачалаПереносаРасчетныхДанных", Параметры.ДатаНачалаПереносаРасчетныхДанных);
Запрос.УстановитьПараметр("Сотрудник", Параметры.СотрудникДляОтладки);
Запрос.УстановитьПараметр("ПоВсемСотрудникам", Параметры.СотрудникДляОтладки.Пустая());
Запрос.УстановитьПараметр("ФизическоеЛицо", Параметры.ФизическоеЛицоДляОтладки);
Запрос.УстановитьПараметр("ПоВсемФизическимЛицам", Параметры.ФизическоеЛицоДляОтладки.Пустая());
Запрос.Текст = Запросы.ФизическиеЛица_ВременнаяТаблица.Текст;
Запрос.Выполнить();
Иначе
Запрос.МенеджерВременныхТаблиц = ОбъектыПереносаДанных.ВыполнитьАлгоритм("РаботникиОрганизации_ВременнаяТаблица", Параметры.Алгоритмы, Параметры, Запросы);
Запрос.УстановитьПараметр("ДатаСреза", Параметры.МесяцНачалаЭксплуатации);
Запрос.УстановитьПараметр("НачалогоГода", НачалоГода(Параметры.МесяцНачалаЭксплуатации));
// { добавлено, Фелькер И.В. 2015.08.24
Запрос.УстановитьПараметр("ПоВсемФизическимЛицам", Параметры.ФизическоеЛицоДляОтладки.Пустая());
// } добавлено
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СтраховыеВзносыСведенияОДоходах.ФизЛицо КАК Физлицо
|ПОМЕСТИТЬ ВТФизическиеЛица
|ИЗ
| РегистрНакопления.СтраховыеВзносыСведенияОДоходах КАК СтраховыеВзносыСведенияОДоходах
|ГДЕ
| СтраховыеВзносыСведенияОДоходах.Период МЕЖДУ &НачалогоГода И &ДатаСреза
// { добавлено, Фелькер И.В. 2015.08.24
| И &ПоВсемФизическимЛицам
// } добавлено
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| НДФЛСведенияОДоходах.ФизЛицо
|ИЗ
| РегистрНакопления.НДФЛСведенияОДоходах КАК НДФЛСведенияОДоходах
|ГДЕ
| НДФЛСведенияОДоходах.Период МЕЖДУ &НачалогоГода И &ДатаСреза
// { добавлено, Фелькер И.В. 2015.08.24
| И &ПоВсемФизическимЛицам
// } добавлено
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВТРаботникиОрганизации.Сотрудник.Физлицо
|ИЗ
| ВТРаботникиОрганизации КАК ВТРаботникиОрганизации";
Запрос.Выполнить();
КонецЕсли;
ФизическиеЛица_ВременнаяТаблица = Запрос.МенеджерВременныхТаблиц;
ОбъектыПереносаДанных.Структура_Установить(Параметры.ВременноеХранилище, "ФизическиеЛица_ВременнаяТаблица", ФизическиеЛица_ВременнаяТаблица);
КонецЕсли;
Субконто = ФизическиеЛица_ВременнаяТаблица;
UPD 2019/10/24
Добавлен отбор по организации.
Сняты ряд ограничений по выгрузке из конфигураций отличных от ЗУП 2.5. Можно выгружать данные из ЗУП 2.5 ПРОФ и КОРП, УПП и КА.