Имя: Пароль:
1C
1С v8
КД 2 создание элемента справочника "На лету" (родителя)
0 live in sky dreams
 
22.07.19
16:58
Добрый день.
Есть 2 базы на 8, настраиваю конвертацию. Вопрос по перегрузке иерархических справочников.
Необходимо все переносимые элементы верхнего уровня(все, что без родителя) помещать в папку с наименованием "перегружено из базы ХХХХ". В конечной базе этих папок еще нет.

Каким образом настроить конвертацию, чтобы эти папки при необходимости создавались и прегружаемые объекты сыпались не в корень справочника-приемника, а аккурат в эту папочку?
1 garmosha
 
22.07.19
17:00
Они или есть , точнее будут или их надо создать.
В одном случае это поиск из тех что есть.
В другом это правило при загрузке - там надо написать как они появляются.
2 mistеr
 
22.07.19
17:25
(0) Я создавал группу заранее, прописывал в параметрах и писал в ПослеЗагрузки():

Если Объект.Родитель = Справочники.Номенклатура.ПустаяСсылка() Тогда
    Объект.Родитель = Параметры.ГруппаНоменклатуры;
КонецЕсли;
3 garmosha
 
22.07.19
17:27
Параметры это то что есть в источнике. В получателе , думаю, параметров нет и там надо искать кодом в правиле после загрузки.
4 mistеr
 
22.07.19
17:28
Можно совсем на лету, тогда нужно отдельное правило для группы и в ПКС родителя прописывать это правило, если элемент верхнего уровня.
5 mistеr
 
22.07.19
17:30
(3) ЕСли поставить галку "Передавать при выгрузке", будут и в получателе.
6 live in sky dreams
 
22.07.19
17:30
(1)(2)Понятно. Спасибо.
Тогда мне проще в базе - источнике во всех нужных спрравочниках посоздавать корневую группу и перенести туда элементы перед выгрузкой.
Просто в КД3 есть фишка такая, можно сделать структуру, заполнить ее свойства и передать к выгрузке. Она выгрузится с нужным типом. При загрузке все стандартно будет по полям поиска. Думал может в КД2 тоже такое есть...
7 Ёпрст
 
гуру
22.07.19
17:31
Можно вообще тупо.. в ПослеЗагрузки искать нужного родителя, если нет - создать, если есть - подставить в качестве раодителя загружаемого объекта.
Усё.
8 live in sky dreams
 
22.07.19
17:32
(4)я вот пытался реализовать что-то такое. Не допер еще...
Создал ПКС "СправочникНоменклатураГруппа", указал там поля (пока что по дефолту и источник заполнен и приемник), само ПКС указал в ПКО для "Родитель".

Как дальше сделать - чот пока не могу дотумкать... Сколько видосов и статей пересмотрел - именно на такой случай пока не наткнулся
9 live in sky dreams
 
22.07.19
17:33
(7)Ну вот пока эта мысль живет в приоритете... Но хотелось бы допереть до правильной работы с ПКС
10 garmosha
 
22.07.19
17:33
(6) так тоже самое и в кд2 есть .. структура на входе правила выгрузки и она станет каким то элементом подходящим под это правило.
11 mistеr
 
22.07.19
17:34
(6) В КД2 тоже есть
12 live in sky dreams
 
22.07.19
17:34
(10)так... а можно пример мож где какой в статье или видео? Смотрел описание обработчиков, чот не нашел куда эту структуру передавать
13 live in sky dreams
 
22.07.19
17:35
Я так понимаю, это в ПКО нужно делать в ПослеВыгрузки?
14 mistеr
 
22.07.19
17:37
(9) В ПКС

Если Источник.Родитель = Справочники.Номенклатура.ПустаяСсылка() Тогда
    Значение = Новый Структура("Код", "...");
    ИмяПКО = "ПКОДляГруппыВерхнегоУровня";
КонецЕсли;
15 Ёпрст
 
гуру
22.07.19
17:38
(6) нафига ?
Тупо можешь выгружать в качестве Родителя в ПередВыгрузкой нужное значение.
Группу можешь создать просто пустую в Источнике.
16 live in sky dreams
 
22.07.19
17:38
(14)и дальше? ВыгрузитьПоПравилу?
17 live in sky dreams
 
22.07.19
17:39
(15)Перед выгрузкой, в базе источнике, родитель не существует.. В этом вся вишка... создать его в приемнике на лету, если его нет. Если он есть - подставить в поле Родитель
18 mistеr
 
22.07.19
17:39
(16) Нет, этого достаточно.
19 garmosha
 
22.07.19
17:40
(16) структура в ПКО передается .. или просто пишется ВыгрузитьПоПравилу и параметры.
20 live in sky dreams
 
22.07.19
17:40
(18)(19)и все? Так все просто? Спасибо! Сейчас попробую
21 Ёпрст
 
гуру
22.07.19
17:41
Создаешь группу "Вася"
далее в ПКС Родитель втыкаешь
Если Источник.Родитель = Справочники.Номенклатура.ПустаяСсылка() Тогда
    Значение = Справочники.Номенклатура.НайтиПоНаименованию("Вася");
КонецЕсли;
22 garmosha
 
22.07.19
17:41
(17) а как вы написали это правило при загрузке (или что то там) так как у вас условие зависит от того есть ли данные в получателе, а по источнику вы это понять не можете.
23 Ёпрст
 
гуру
22.07.19
17:41
Ну или структуру передать в пкс
24 live in sky dreams
 
22.07.19
17:47
(22) да я пока еще в ПриЗагрузке ничего не писал
25 live in sky dreams
 
22.07.19
17:47
пока пробую со структурой
26 live in sky dreams
 
22.07.19
18:02
Да! Со структурой все получилось!
Спасибо, коллеги!
27 mikecool
 
22.07.19
18:06
(2) +1
Закон Брукера: Даже маленькая практика стоит большой теории.