Имя: Пароль:
1C
1С v8
Произвольный алгоритм правила выгрузки данных в КД 2.0
,
0 D_E_S2
 
07.06.12
16:15
Возможно ли сделать следующее?
Имею объект в конфигурации (справочник), который загружается с помощью произвольного алгоритма правила выгрузки данных.
Имеется другой объект (тоже справочник), у которого есть табличная часть и один из реквизитов табличной части первый объект.
Второй объект так же загружается через произвольный алгоритм.
Проблема с переносом данных в табличную часть. Если в настройке ПКО не указать ПКС для ссылочного значения, то данные вообще по этому реквизиту ТЧ не выгружаются. Если указать ПКС, которые настроены для первого объекта, то не понятно что нужно передавать в "Источник данных".
1 andrewks
 
07.06.12
16:21
ВходящиеДанные + ВыгрузитьПоПравилу спасут отца русской демократии
2 D_E_S2
 
07.06.12
16:39
Не понятно. Сейчас для переноса реквизитов простых типов я информацию передаю через ИсходящиеДанные, заполняя их в структуру. Как применить параметр ВходящиеДанные?
3 D_E_S2
 
07.06.12
16:41
Т.е. допустим я заполню всю необходимую информацию во ВходящиеДанные, а где я вызову ВыгрузитьПоПравилу используя эти данные?
4 andrewks
 
07.06.12
16:44
в ПВД ПередВыгрузкой, а потом Отказ = истина
5 D_E_S2
 
07.06.12
16:48
В ПВД для какого объекта первого или второго, у которого первый в ТЧ?
6 andrewks
 
07.06.12
16:53
итак, начнём с начала.

у тебя два вида объекта, для каждого из них есть соответствующее ПКО. так?

у тебя есть два ПВД с произвольными алгоритмами выгрузки данных. так?

в чём проблема?  если тебе нужно выгрузить реквизит из объекта №1, который является ссылкой на объект №2, просто укажи в ПКС соответствующее объекту №2 ПКО.
7 D_E_S2
 
07.06.12
17:12
//// Объект №1
Об_1 - заполняю только наименование (в ПКС указано для "Наименование" - из вх.данных).

процедура выгрузки (работает как нужно):

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

ИсхД = Новый Структура("Наименование", Выборка.ИмяЭлемента);

ВыгрузитьПоПравилу(,, ИсхД,, "Об_1");

КонецЦикла;

//// Объект №2

Об_2, заполняю наименование и ТЧ "Состав" с реквизитом "ЭлементСостава" (тип Спр. ссылка Об_1).

В ПКС так же указываю приемник "Наименование" и приемник-группа табличная часть "Состав". В группе "Состав" добавляю приемник ЭлементСостава, с правилом конвертации "Об_1" .

Делаю процедуру выгрузки (выгрузка которой не происходит из-за ошибок, при отключенной ПКГС - все работает):

Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() Цикл

ИсхД = Новый Структура;

ИсхД.Вставить("Наименование", Выборка.ИмяОбъекта2);

ВыборкаСостава = Выборка.Выбрать();

ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить("ЭлементСостава");

Пока ВыборкаСостава.Следующий() Цикл

НовСтр = ТЗ.Добавить();
НовСтр.ЭлементСостава = Новый Структура("Наименование", ВыборкаСостава.ИмяОбъекта1);

КонецЦикла;

ИсхД.Вставить("Состав", ТЗ);

ВыгрузитьПоПравилу(,, ИсхД,, "Об_2");

КонецЦикла;
8 D_E_S2
 
07.06.12
17:14
Т.е. получается, что при выгрузке Об№2 мне нужно выгрузить еще и все входящие в его состав Об№1 и как-то при заполнении ТЧ их туда сопоставить.
9 mc lammer
 
08.06.12
09:24
в ПКО  Об2,  ПКС табличной части приемника в обработчике "ПередОбработкой"
напиши

КоллекцияОбъектов = Источник.Состав;
10 mc lammer
 
08.06.12
09:26
в ТЗ состава передавай ссылки на ОБ1,   назначь ПКС реквизита ЭлементСостава   ПКО Об1.
Основная теорема систематики: Новые системы плодят новые проблемы.