Имя: Пароль:
1C
1С v8
Создание ПКО
,
0 Alex1979rak
 
26.12.12
11:28
Добрый день, уважаемые коллеги.
Ситуация.
Есть конфа-источник: бухия УСНО (7.70.190). В ней есть документ "ПриказОПриемеНаРаботу".
Есть также конфа-приемник: ЗУП 8 (2.5.59.2). В ней есть документ "ПриемНаРаботуВОрганизацию"
Задача. По максимуму перенести указанные документы из 7-ки в 8-ку.
Делаю ПКО "ПриемНаРаботу" в КД 2. Реквизиты шапки переносятся нормально. А вот табличную часть "РаботникиОрганизации" дока в ЗУПе не знаю как правильно заполнять. Ведь табл.части в семерочном доке нет и она в ПКО источника - пустое значение.
Подскажите, пожалуйста, куда копать?
1 BlackSeaCat
 
26.12.12
11:30
Гм! Всю жизни считал, что ПКО - это приходный кассовый ордер.
2 Alex1979rak
 
26.12.12
11:31
ПКО - правило конвертации объекта.
3 Guk
 
26.12.12
11:33
я бы копал в сторону формирования в ПВД источника данных и передачи его в ПКО...
4 Alex1979rak
 
26.12.12
11:36
(3) Такая мысль у меня была. Но как это правильно сделать?
5 batman69
 
26.12.12
11:36
(2) Умный?
6 Andy13
 
26.12.12
11:38
Создай табличную часть из данных 7.7
Или в ПВД, или в обработчике "ПередВыгрузкой" - ИсходящиеДанные.
7 Guk
 
26.12.12
11:40
(4) так в ПВД заполняешь объект ВыборкаДанных, указываешь ПКО, которое будет использовано и все...
8 Alex1979rak
 
26.12.12
11:45
(6) Если это ИсходящиеДанные, то я должен в этот параметр поместить таблицу значений?
9 Andy13
 
26.12.12
11:47
(8) Не. СписокЗначений. В списке значений одно из значений будет ТаблицейЗначений с представлением-именем табличной части.
10 Andy13
 
26.12.12
11:48
(9)+ В ПКГС для всех ПКС указываешь в источнике - получить из внешних данных.
11 Alex1979rak
 
26.12.12
11:50
(9) а пример можешь привести? а то как-то не совсем понятно
(10) это я понял. спасибо.
12 Andy13
 
26.12.12
11:51
(11) Щас пороюсь...
13 Абыр
 
26.12.12
11:52
(0)
1) В ПКО "ПриемНаРаботу" создаете ПКГС для табличной части приемника. Т.е. источник у вас будет пустой, получатель - видимо, ТЧ "РаботникиОрганизации". Соответственно в ПКГС у вас будут ПКС для реквизитов ТЧ приемника с пустым источником.
2) В ПКГС в обработчике "Перед обработкой" пишете
КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений");
КоллекцияОбъектов.НоваяКолонка("ИмяРеквизитаТЧПолучателя");
и т.д. Т.е. программно создаете в 7ке табличную часть. Имена колонок ТЗ должны совпадать с именами реквизитов ТЧ получателя. И в этом же обработчике заполняется ТЗ как вам надо
3) Не забывайте указывать ПКО для ПКС в ПКГС)
14 Alex1979rak
 
26.12.12
11:54
(13) спасибо. пробую.
15 Andy13
 
26.12.12
11:58
Не ИсходящиеДанные, а ВходящиеДанные.
Ошибся...
16 Andy13
 
26.12.12
11:59
Нашел пример из конвертации ТиС в УТ
17 Andy13
 
26.12.12
12:03
Перенос ГТД

Перед выгрузкой:

Разделы = СоздатьОбъект("ТаблицаЗначений");
Разделы.НоваяКолонка("СтавкаНДС");
Разделы.НоваяКолонка("СтавкаПошлины");
Разделы.НоваяКолонка("СуммаНДС");
Разделы.НоваяКолонка("СуммаПошлины");
Разделы.НоваяКолонка("ТаможеннаяСтоимость");
Разделы.НоваяКолонка("НДСВВалюте");
Разделы.НоваяКолонка("ПошлинаВВалюте");
Разделы.НоваяКолонка("ТаможеннаяСтоимостьВВалютеРеглУчета");

ТабЧасть = СоздатьОбъект("ТаблицаЗначений");    
Источник.ВыгрузитьТабличнуюЧасть(ТабЧасть);
ТабЧасть.Свернуть("СтавкаПошлины,СтавкаНДС","СуммаНДСВал,СуммаНДСРуб,СуммаПошлиныВал,СуммаПошлиныРуб,ТаможеннаяСтоимость");
ТабЧасть.ВыбратьСтроки();

Если ТабЧасть.КоличествоСтрок() > 0 Тогда
   Пока ТабЧасть.ПолучитьСтроку() = 1 Цикл    
        Разделы.НоваяСтрока();
        Разделы.НДСВВалюте = Источник.НДСВВалюте;
        Разделы.ПошлинаВВалюте = Источник.ПошлинаВВалюте;
        Разделы.СтавкаНДС = ТабЧасть.СтавкаНДС;
        Разделы.СтавкаПошлины = ТабЧасть.СтавкаПошлины;        
        Разделы.СуммаНДС = ?(Источник.ПошлинаВВалюте = 1,ТабЧасть.СуммаНДСВал,ТабЧасть.СуммаНДСРуб);    
        Разделы.СуммаПошлины = ?(Источник.ПошлинаВВалюте = 1,ТабЧасть.СуммаПошлиныВал,ТабЧасть.СуммаПошлиныРуб);                
        Разделы.ТаможеннаяСтоимость = ТабЧасть.ТаможеннаяСтоимость;
        Разделы.ТаможеннаяСтоимостьВВалютеРеглУчета = 1;
    КонецЦикла;
    ВходящиеДанные = СоздатьОбъект("СписокЗначений");
    ВходящиеДанные.ДобавитьЗначение(Разделы, "Разделы");
КонецЕсли;

Для всей ТЧ "Разделы" установлена галочка "Получить из входящих данных".

В ПКГС "Перед обработкой":
Если ТипЗначенияСтр(ВходящиеДанные) = "СписокЗначений" Тогда
   КоллекцияОбъектов = ВходящиеДанные.Получить("Разделы");
КонецЕсли;
18 Andy13
 
26.12.12
12:05
Суть простая, делаешь таблицу значений повторяющую табличную часть по структуре, заполняешь, пихаешь в список значений.
Зачем в ПКГС доп.проверка на список значений, не знаю. У меня и так срабатывало.
19 Абыр
 
26.12.12
12:10
(18) Проверка из-за
Если ТабЧасть.КоличествоСтрок() > 0 Тогда
т.е. у вас при пустой табличной части список значений создаваться не будет.
20 Alex1979rak
 
26.12.12
12:28
Доп.вопрос. А нужно ли для ПКГС установить флаг "Получить из входящих данных"?