Не смотря на скепсис некоторых участников обсуждения, предыдущий "простой перенос справочников" оказался востребован, при том, что в нем не имелось никаких настроек. Впрочем, это был один из первых моих опытов программирования под 8.1.
Так получилось, что подвернулся клиент, попросивший сделать перенос справочников уже под 8.2. Воспользовавшись случаем, сделал обработку универсальной, добавив возможность настройки переноса, когда требуется переносить данные между неидентичными справочниками.
Структура сопоставления выгруженного справочника с имеющимися в базе настраивается в обработке загрузки на соответствующей закладке. При выборе пользователем сопоставляемого справочника, обработка будет пытаться автоматически сопоставить реквизиты справочника с выгружаемыми данными. Эту настройку можно менять вручную.
Структура сопоставления выгруженного справочника с имеющимися в базе может быть сохранена и автоматически загружена в следующий раз, при переносе такого же справочника. Имя файла структуры сопоставления автоматически будет присвоено такое же, как имя файла переноса справочника, для которого производится настройка, только с расширением ini.
В реализации под 8.1 возможность вызова обработок выгрузки-загрузки из состава конфигурации.
В качестве примера такого вызова реализована пакетная выгрузка справочников из 8.1.
Под 8.2 реализована лишь загрузка со всеми настройками, как и в 8.1. Это не конвертация, а отдельная реализация на управляемых формах. (Кстати, моя первая прога на 8.2, так что поздравьте и не пинайте)
При необходимости использования выгрузки в составе конфигурации без открытия формы, достаточно вставить следующий код:
ОбработкаВыгрузки=ВнешниеОбработки.Создать(ИмяФайлаОбработки);
ОбработкаВыгрузки.ИмяСправочника=ИмяСправочника;
ОбработкаВыгрузки.ИмяФайла=ИмяФайла;
ОбработкаВыгрузки.ВыгрузитьСправочник(ЭлементыФормы.Индикатор);
Индикатор может в параметрах отсутствовать. Это также может быть индикатор с какой-то другой формы.
При необходимости использования загрузки в составе конфигурации без открытия формы, нужно вставить следующий код:
ОбработкаЗагрузки=ВнешниеОбработки.Создать(ИмяФайлаОбработки);
ОбработкаВыгрузки.УстановитьИмяФайла(ИмяФайлаПереносаСправочника);
ОбработкаВыгрузки.ЗагрузитьСправочник(ЭлементыФормы.Индикатор);
Метод УстановитьИмяФайла попытается найти для файла переноса сохраненную структуру сопоставления, и если таковая имеется в каталоге переноса, то загрузит ее.
Если сохраненная структура сопоставления в каталоге переноса отсутствует, то сопоставит выгруженный справочник с имеющимися в базе автоматически.
Возможно использовать реквизиты обработки:
ОбработкаВыгрузки.РежимДобавления
Значения от 0 до 3, соответствуют режимам отработки ситуации, когда в базе имеются элементы справочника с таким же кодом, как у загружаемых.
0 - не добавлять новые элементы
1 - добавлять с новым кодом
2 - изменять имеющиеся
3 - воспринимать, как ошибку
ОбработкаВыгрузки.ТолькоПроверка
Перед загрузкой, обработка выполняет проверку соответствия загружаемых данных со структурой справочника и данными базы. При значении ИСТИНА обработка выполнит лишь проверку, не меняя состав справочников.
ОбработкаВыгрузки.ИгнорироватьОшибки
Если этот параметр выставить в ЛОЖЬ, то обработка будет загружать данные, не смотря на встретившиеся ошибки при проверке. В противном случае, обработка отменит загрузку, если на этапе проверки будут выявлены проблемы.