Имя: Пароль:
1C
1С v8
Вопрос по конвертации
0 Aleksey1989
 
07.05.13
08:54
Добрый день. Подскажите, пжл, как можно решить следующую задачу. Есть документ-источник с табличной частью и документ-приемник. В зависимости от того, сколько строк в табличной части документа-источника должно создаваться соответствующее количество документов-приемника. Т.е. если в табличной части документа-источника 2 строки, то в результате конвертации должно будет создаться 2 документа-приемника.
1 Wobland
 
07.05.13
08:56
перебираешь строки ТЧ и выгружаешь по правилу
2 ДенисЧ
 
07.05.13
08:56
ВыгрузитьПоПравилу() - великая штука...
3 zippygrill
 
07.05.13
09:02
с выгрузитьПоПравилу() вроде можно.
4 Aleksey1989
 
07.05.13
09:05
Спасибо всем за ответы, буду искать описание процедуры "ВыгрузитьПоПравилу".
5 Wobland
 
07.05.13
09:07
(4) найдёшь, расскажи. то, что я видел в документации, не соответствует тому, что у меня сейчас реально работает
6 Aleksey1989
 
07.05.13
09:15
(5) Я нашел идентичную ситуацию на http://www.streetrsorel.ru/1c/210995.htm, в справке к конфигурации "Конвертация данных" не могу ничего найти по этой процедуре.
7 Defender aka LINN
 
07.05.13
09:17
Можно через произвольную выборку сделать
8 х86
 
07.05.13
10:10
(6)пипец, еще один клон? походу только ленивый не копирует мисту
9 Aleksey1989
 
07.05.13
13:19
Что-то не получается у меня. Как я делаю:
1. Создал новое ПКО ПКО_доработка, в котором не указывал источника, а указал только приемника.
2. Добавил ПКС для номера и даты, у всех выставил галочку "Получить из входящих данных".
3. В правилах выгрузки данных создал правило выгрузки данных "ПКО_доработка", в событии "Перед выгрузкой" которого добавил следующий код:
 Для Каждого Строка Из Объект.РасшифровкаПлатежа Цикл
   
   ВходящиеДанные = Новый Структура;
   ВходящиеДанные.Вставить("Номер",Объект.Номер);
   ВходящиеДанные.Вставить("Дата",Объект.Дата);

   ВыгрузитьПоПравилу(,,ВходящиеДанные,,"ПКО_доработка");
   
КонецЦикла;

При попытки выгрузить данные из конфигурации-источника вылетает следующая ошибка:
Ошибка получения свойства объекта из входящих данных
   ПКО                    =  ПКО_доработка  (:)
   ПКС                    =  1  (--> Номер)
   Объект                 =  Приходный кассовый ордер 20120109001 от 09.01.2012 12:00:00  (Приходный кассовый ордер)
   СвойствоПриемника      =  Номер  (Строка)
   ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
   ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8270)
   КодСообщения           =  68

Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1682)}: Ошибка получения свойства объекта из входящих данных
   ПКО                    =  ПКО_доработка  (:)
   ПКС                    =  1  (--> Номер)
   Объект                 =  Приходный кассовый ордер 20120109001 от 09.01.2012 12:00:00  (Приходный кассовый ордер)
   СвойствоПриемника      =  Номер  (Строка)
   ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
   ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8270)
   КодСообщения           =  68
10 Aprobator
 
07.05.13
13:24
навскидку - ВходящиеДанные точно 3, а не 4 параметр?
11 Wobland
 
07.05.13
13:25
(10) сбегал проверил уже. третий
12 Wobland
 
07.05.13
13:25
а вот что выгружается - непонятно
13 mkanaev
 
07.05.13
13:29
(0) как вариант можно оьезличить приемник и делать из входящих данных на стороне приемника
14 Aprobator
 
07.05.13
16:20
(9) в ПВД указал, что выборка произвольная?
15 Aleksey1989
 
07.05.13
17:26
(14) Нет, стандартную оставил. Попробую с произвольной.
16 AlexTim03
 
07.05.13
17:33
(9)
Насколько помню с курсов, ты в ПКО заполняешь именно Исходящие данные, в ПКС, если надо обратиться, обращаешься к ВходящимДанным. Это они и будут. Проверь этот вариант
17 Aleksey1989
 
08.05.13
09:36
В документации написано:
"Установка флажка "Получить значение из входящих данных" означает то, что конвертируемое значение будет получено не из объекта-источника, а из параметра ВходящиеДанные (данный параметр следует инициализировать в обработчиках событий правила конвертации объектов). "
Как инициализировать этот параметр?
18 Wobland
 
08.05.13
09:49
Оплаты=СоздатьОбъект("ТаблицаЗначений");
Оплаты.НоваяКолонка("СуммаОплаты");
ВходящиеДанные=СоздатьОбъект("СписокЗначений");
ВходящиеДанные.ДобавитьЗначение(Оплаты, "Оплата");
ВыгрузитьПоПравилу(док, , ВходящиеДанные, , "ОтчетОРозничныхПродажах");
19 Wobland
 
08.05.13
09:50
+(18) в приёмнике есть ТЧ Оплата, ТЗ Оплаты совпадает по структуре с ТЧ
20 Aleksey1989
 
08.05.13
09:51
(18) Этот код будет прописан в правилах выгрузки данных, я правильно понимаю?
21 Wobland
 
08.05.13
09:51
(20) у меня это в ПВД
22 Бледно Золотистый
 
08.05.13
09:57
(20) на mykod.info есть методичка по конвертации, там вроде был пример похожий на твой.
23 Aleksey1989
 
08.05.13
10:15
(21) А в документации сказано, что эта структура должна быть инициализированна в ПКО, а не в ПВД:
"(данный параметр следует инициализировать в обработчиках событий правила конвертации объектов)"
(22) Спасибо за ссылку!
24 Wobland
 
08.05.13
10:38
(23) наверное, я её плохо читал. поэтому у меня всё работает в ПВД ;)
25 kortun
 
08.05.13
10:50
(16) ты не прав, в ПКС нужно также обращаться к ИсходящимДанным
26 Aleksey1989
 
08.05.13
11:33
(24) Если следовать этой логике, то у меня должно быть вообще все супер-хорошо, т.к. я ее вообще не читал :)
27 Aprobator
 
08.05.13
12:11
(24) +100500 походу я тоже ее плохо читал. Но пофиг где инициализируются ВходящиеДанные. Это можно делать в ПКО, а можно в том месте, откуда вызывается правило. Это может быть как ПВД, так и ПКС которое ссылается на данное правило. Только там оно инициализируется как ИсходящиеДанные.
28 Aprobator
 
08.05.13
12:11
+(27) в смысле в ПКС как ИсходящиеДанные.
Ошибка? Это не ошибка, это системная функция.