Доброе время суток.
Изучаю Конвертацию Данных и параллельно переношу, из справочников 7.7 "Номенклатура","Материалы" и "Объекты Строительства" в 8 УТ справочник "Номенклатура", все перенеслось, вот только получилась каша, где элементы из Материалов и т.д., нужно сортировать по папкам, то есть 3 папки("Номенклатура","Материалы","Объекты Строительства") а как сделать, не знаю.
Поставил код на событие перед выгрузкой на ПКО реквизита "Родитель"
НаименованиеГруппы = "ОбъектыСтроительства";
Если Истичник.Родитель.Пустая() И Истичник.Наименование <> НаименованиеГруппы Тогда
Значение = Новый Структура;
Значение.Вставить("Наименование",НаименованиеГруппы);
Значение.Вставить("ПометкаУдаления",Ложь);
Значение.Вставить("ЭтаГруппа",Истина);
Значение.Вставить("Родитель",Справочники.ОбъектыСтроительства.ПустаяСсылка());
КонецЕсли;
Но выдает ошибку, понял что нужно писать на 7ке, а тут я не понял, написать точно также?
Если да то все равно ругается... что делать подскажите плс...
Изучаю Конвертацию Данных и параллельно переношу, из справочников 7.7 "Номенклатура","Материалы" и "Объекты Строительства" в 8 УТ справочник "Номенклатура", все перенеслось, вот только получилась каша, где элементы из Материалов и т.д., нужно сортировать по папкам, то есть 3 папки("Номенклатура","Материалы","Объекты Строительства") а как сделать, не знаю.
Поставил код на событие перед выгрузкой на ПКО реквизита "Родитель"
НаименованиеГруппы = "ОбъектыСтроительства";
Если Истичник.Родитель.Пустая() И Истичник.Наименование <> НаименованиеГруппы Тогда
Значение = Новый Структура;
Значение.Вставить("Наименование",НаименованиеГруппы);
Значение.Вставить("ПометкаУдаления",Ложь);
Значение.Вставить("ЭтаГруппа",Истина);
Значение.Вставить("Родитель",Справочники.ОбъектыСтроительства.ПустаяСсылка());
КонецЕсли;
Но выдает ошибку, понял что нужно писать на 7ке, а тут я не понял, написать точно также?
Если да то все равно ругается... что делать подскажите плс...
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я это исправил
Ошибки такие:
Значение.Вставить("ПометкаУдаления",Ложь<<?>>);
{(9)}: Переменная не определена (Ложь)
Значение.Вставить("ЭтаГруппа",Истина<<?>>);
{(10)}: Переменная не определена (Истина)
Значение.Вставить("Родитель",Справочники<<?>>.ОбъектыСтроительства.ПустаяСсылка());
{(11)}: Переменная не определена (Справочники)
Значение.Вставить("Родитель",Справочники.ОбъектыСтроительства.ПустаяСсылка()<<?>>);
{(11)}: Неопознанный оператор
<<?>>КонецЕсли;
Ошибки такие:
Значение.Вставить("ПометкаУдаления",Ложь<<?>>);
{(9)}: Переменная не определена (Ложь)
Значение.Вставить("ЭтаГруппа",Истина<<?>>);
{(10)}: Переменная не определена (Истина)
Значение.Вставить("Родитель",Справочники<<?>>.ОбъектыСтроительства.ПустаяСсылка());
{(11)}: Переменная не определена (Справочники)
Значение.Вставить("Родитель",Справочники.ОбъектыСтроительства.ПустаяСсылка()<<?>>);
{(11)}: Неопознанный оператор
<<?>>КонецЕсли;
НаименованиеГруппы = "ОбъектыСтроительства";
Если (ПустаяСтрока(Источник.Родитель) = 1) И (Источник.Наименование <> НаименованиеГруппы) Тогда
Значение = СоздатьОбъект("СписокЗначений");
Значение.ДобавитьЗначение("Наименование",НаименованиеГруппы);
Значение.ДобавитьЗначение("ПометкаУдаления",0);
Значение.ДобавитьЗначение("ЭтаГруппа",1);
Значение.ДобавитьЗначение("Родитель",ПолучитьПустоеЗначение("Справочники.ОбъектыСтроительства"));
КонецЕсли;
В принципе все перенес, вот только без групп вообще...что не так я сделал
как сделать так, чтобы определённые элементы ложились в приёмнике в специальную папку, которой нет в источнике?
ставишь у св-ва Родитель ПКО с название, например, ГруппаНоменклатуры
в зависимости от условий, заполняешь Исходящие данные нужными тебе значениями. например, ПередВыгрузкой:
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("Наименование", "Оборудование (объекты основных средств)");
Значение = "1";
в ПКО ГруппаНоменклатуры ставишь: источник - пусто, приёмник - спр.Номенклатура
нужным св-вам ставишь галки "получать из вход.данных", + почитай в справке про КлючВыгружаемыхДанных
ставишь у св-ва Родитель ПКО с название, например, ГруппаНоменклатуры
в зависимости от условий, заполняешь Исходящие данные нужными тебе значениями. например, ПередВыгрузкой:
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("Наименование", "Оборудование (объекты основных средств)");
Значение = "1";
в ПКО ГруппаНоменклатуры ставишь: источник - пусто, приёмник - спр.Номенклатура
нужным св-вам ставишь галки "получать из вход.данных", + почитай в справке про КлючВыгружаемыхДанных
и ещё нужно уточнение: внутри этих виртуальных папок "Номенклатура","Материалы","Объекты Строительства" должна быть сохранена иерархия, как в базе-источнике, или ты хочешь всю номенклатуру ложить непосредственно в папку "Номенклатура", материалы - в "Материалы", и т .д.
итак, тебе понадобится следующее:
в ПКО "Объекты Строительства" в ПКС св-ва Родитель в обработчике ПередВыгрузкой, где ты проверяешь на определённые условия, во-первых, убирай галку "получать из вход.данных", во-вторых, условие проверяй так:
Если ПустоеЗначение(Источник.Родитель)=1 Тогда
// значит, достигли верхнего уровня иерархии
здесь тебе нужно проманипулировать именем ПКО, по которому будет выгружено свойство:
ИмяПКО - имя правила конвертации, по которому производится преобразование значения свойства. Может быть выбрано в зависимости от каких-либо условий.
в ПКО "Объекты Строительства" в ПКС св-ва Родитель в обработчике ПередВыгрузкой, где ты проверяешь на определённые условия, во-первых, убирай галку "получать из вход.данных", во-вторых, условие проверяй так:
Если ПустоеЗначение(Источник.Родитель)=1 Тогда
// значит, достигли верхнего уровня иерархии
здесь тебе нужно проманипулировать именем ПКО, по которому будет выгружено свойство:
ИмяПКО - имя правила конвертации, по которому производится преобразование значения свойства. Может быть выбрано в зависимости от каких-либо условий.
далее: заводишь специальное ПКО для "виртуальных" папок, например, называешь его "НоменклатураСпецПапка", источник - пустой, приёмник - Спр.Номенклатура, в ПередВыгрузкой пишешь:
КлючВыгружаемыхДанных = "_" + ВходящиеДанные.Получить("Наименование")
далее определяешь у него ПКС:
Наименование - с галкой "получать из вход.данных" + с галкой поиска
Родитель - с галкой поиска, в ПередВыгрузкой пишешь:
Значение = ПолучитьПустоеЗначение();
ЭтоГруппа - с галкой поиска, в ПередВыгрузкой пишешь:
Значение = 1;
КлючВыгружаемыхДанных = "_" + ВходящиеДанные.Получить("Наименование")
далее определяешь у него ПКС:
Наименование - с галкой "получать из вход.данных" + с галкой поиска
Родитель - с галкой поиска, в ПередВыгрузкой пишешь:
Значение = ПолучитьПустоеЗначение();
ЭтоГруппа - с галкой поиска, в ПередВыгрузкой пишешь:
Значение = 1;
далее, тебе остаётся только при возникновении условия Если ПустоеЗначение(Источник.Родитель)=1 Тогда
явно указать ПКО для этого св-ва:
ИмяПКО="НоменклатураСпецПапка";
и заполнить исходящие данные:
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("Наименование", "Объекты строительства");
Значение = "1";
ну, и таким макаром - в каждом ПКС Родитель у номенклатуры, материалов и объектов стр-ва.
при этом ПКО "НоменклатураСпецПапка" у тебя будет одно
вроде, всё. пробуй, отпишись по результату
явно указать ПКО для этого св-ва:
ИмяПКО="НоменклатураСпецПапка";
и заполнить исходящие данные:
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("Наименование", "Объекты строительства");
Значение = "1";
ну, и таким макаром - в каждом ПКС Родитель у номенклатуры, материалов и объектов стр-ва.
при этом ПКО "НоменклатураСпецПапка" у тебя будет одно
вроде, всё. пробуй, отпишись по результату
алее, тебе остаётся только при возникновении условия Если ПустоеЗначение(Источник.Родитель)=1 Тогда
явно указать ПКО для этого св-ва:
ИмяПКО="НоменклатураСпецПапка";
и заполнить исходящие данные:
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("Наименование", "Объекты строительства");
Значение = "1";
ну, и таким макаром - в каждом ПКС Родитель у номенклатуры, материалов и объектов стр-ва.
при этом ПКО "НоменклатураСпецПапка" у тебя будет одно
вроде, всё. пробуй, отпишись по результату
Показатьявно указать ПКО для этого св-ва:
ИмяПКО="НоменклатураСпецПапка";
и заполнить исходящие данные:
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("Наименование", "Объекты строительства");
Значение = "1";
ну, и таким макаром - в каждом ПКС Родитель у номенклатуры, материалов и объектов стр-ва.
при этом ПКО "НоменклатураСпецПапка" у тебя будет одно
вроде, всё. пробуй, отпишись по результату
Ну как результаты?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот