IE 2018

Конвертация данных. Произвольная иерархия справочника

Обмен - Перенос данных из 1C8 в 1C8

Конвертация произвольная иерархия

11
Источник: Бухгалтерский учет ред. 4.5 платформы 7.7. Приемник: Бухгалтерия предприятия 3.0. Задача: При загрузке справочника «Номенклатура» в приемнике, все элементы поместить в папку «Товары» с сохранением имеющейся иерархии в 7.7.

К примеру, такая задача может возникнуть, когда справочник необходимо разбить по папкам в зависимости от счетов в 7.7. Элементы 10-го счета нужно поместить в папку «Материалы», а элементы счета 41 в папку «Товары».

Решение: Создать ПКО «Номенклатура». В ПКС «Родитель» в процедуре «Перед выгрузкой» прописать следующее:

Это означает, что если у текущего элемента в момент выгрузки нет родителя, то значит выгрузка дошла до элемента самого верхнего уровня и что необходимо указать свою иерархию. Необходимо создать ПКО «Номенклатура_Родитель» с пустым источником и приемником справочник Номенклатура.

Т.к. мы знаем, что это группа, то достаточно создать 2 ПКС «Наименование» и «ЭтоГруппа». В процедуре «Перед выгрузкой» указать значение наименования как

А в ПКС «ЭтоГруппа»:

Также в ПКО «Номенклатура» необходимо указать поля поиска «Наименование, Родитель, ЭтоГруппа». Дальше уже по мере необходимости.

Ну и результат будет уже такой, как и задумали.

 

 

11

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. Marik 61 10.04.18 08:17 Сейчас в теме
Думаю не будет работать это решение

1. Поиск идет по наименованию - не лучшее решение
2. Предполагаю что уникальность кодов в справочнике Приемник установлен в "во всем справочнике", т.е., придется еще генерировать код "Автоматически генерировать код или номер, если не задан". Это значит мы отказываемся от поиска по коду, которая априори лучшее решение.

Вот мое решение, чуть другое, но проблема таже
1. Есть 1С Бухгалтерия 77, в котором есть 3 справочника: Товары,Номенклатура,Материалы
2. Есть 1С Бухгалтерия 81., в котором есть только ОДИН справочник Номенклатура
3. Надо из семерки перебросит элементы всех трех справочников с сохранением иерархии каждой из них в восьмерку в определенные папки (Товары в ТОВАРЫ, Материалы в МАТЕРИАЛЫ и т.д.)

1. Указываем ПКО для справочников Товары,Материалы,Номенклатура, где приемником будет выступать один на всех справочник Номенклатура. ПКС оставляем в удобном виде, а именно: поиск по коду,родителю и группе


2. В каждом ПКС для каждого ПКО для кода и родителя прописываем следующее:
для кода

чтобы привести длину и формат кода под длину и формат кода приемника

для родителя

здесь для верхнего уровня записей в источнике мы задаем выражение. при загрузке обработка автоматически, если запись является элементов верхнего уровня, запишет ее по указанному в выражении адресу. для остальных подчиненных записей идет стандартный алгоритм поиска и записи в группу.

ну сам код для процедуры УстановитьКод


И последнее, чтобы не было коллизей, я в обязательном порядке делаю перенумерацию в справочниках Источника, чтобы не было пересечений в Приемнике
вот код
	Счетчик = 99;
	Спр = СоздатьОбъект("Справочник.Номенклатура");
	Спр.ВыбратьЭлементы();
	Пока Спр.ПолучитьЭлемент()=1 Цикл
		Счетчик = Счетчик+1;
		Рез = Строка(Счетчик);
		Пока СтрДлина(Рез)<7 Цикл
			Рез = "0"+Рез;
		КонецЦикла;
		Спр.Код = Рез;
		Спр.Записать();
	КонецЦикла;
	
	Счетчик = 299;
	Спр = СоздатьОбъект("Справочник.Материалы");
	Спр.ВыбратьЭлементы();
	Пока Спр.ПолучитьЭлемент()=1 Цикл
		Счетчик = Счетчик+1;
		Спр.Код = Счетчик;
		Спр.Записать();
	КонецЦикла;

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


здесь я раскидываю записи в каждом справочнике в своем уникальном диапазоне, так чтобы в Приемнике они не затерли уже существующие записи. Таким образом можно надежно перебросить записи разных справочников в один справочник и в указанную группу
MSK_Step; sergio199; +2 Ответить
2. Marik 61 10.04.18 08:22 Сейчас в теме
Поправка - я хотел сказать, что решение не универсальное, а не
не будет работать
3. MSK_Step 17 11.04.18 11:30 Сейчас в теме
Больше таких статей на инфостарте, полезно, кратко, наглядно - все по делу. ++
Оставьте свое сообщение