Имя: Пароль:
1C
1С v8
Конвертация - Из двух таблиц Источника в одну таблицу Приемника
,
0 55reg
 
18.07.18
16:37
Есть УТ 10.3 БП 3
Нужно перенести Оплаты платежными картами и оплаты сертификатами (руками до меня разделили эти оплаты на 2 табличные части Оплаты - Типовая и Гашение под серт - добавленная). У таблиц Источника разные Типы колонок - Справочники.ВидыОплат и Справочники.Номенклатура, суммы - Число. В БП это все одна таблица - Оплаты Организации.  

Внимание вопрос - как слить в одну таблицу все это хозяйство ???
Делая по очереди - затирает, НеОчищать не помогает естественно...

//КоллекцияОбъектов = Источник.ПогашениеПодарочныхСертификатов.Выгрузить();
//Для Каждого СтрокаТЧ Из Источник.ОплатаПлатежнымиКартами Цикл
  //  НоваяСтрока = КоллекцияОбъектов.Добавить();
   // ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ); // Где определять пкс объектов второй таблицы ???
//КонецЦикла;

Это помогает - но мне нужно описать правила конвертации свойств ! Так понял таблицы если их сливать должны быть с одинаковыми Типами ? А так выгружает строки без значений (красные подчеркивания в пустых строках)

Или это все не возможно ? Всем заранее спасибо за любую инфу...
1 hhhh
 
18.07.18
16:41
да, опиши правила конвертации свойств сначала
2 xxTANATORxx
 
18.07.18
16:51
емнип два отдельных правила нужно
3 hhhh
 
18.07.18
16:54
(2) нет, не нужно. просто одно правило, но в табчасти задается Приемник, а источник пусто.
4 55reg
 
18.07.18
17:01
Если кто знает - можете пример кода скинуть ? Т е я в ПКГС первой таблицы описываю пкс для обеих таблиц или как ? Так то на словах все просто - а написать то как ?
5 55reg
 
18.07.18
17:04
Например ПКС Под серт -> СуммаОплаты у меня вот такой вот еще ...
Если Строка(ОбъектКоллекции.ПодарочныйСертификат) = "Подарочный сертификат 300" Тогда
Значение = 300;
КонецЕсли;

Если Строка(ОбъектКоллекции.ПодарочныйСертификат) = "Подарочный сертификат 500" Тогда
Значение = 500;
КонецЕсли;

Если Строка(ОбъектКоллекции.ПодарочныйСертификат) = "Подарочный сертификат 1000" Тогда
Значение = 1000;
КонецЕсли;

Если Строка(ОбъектКоллекции.ПодарочныйСертификат) = "Подарочный сертификат 1500" Тогда
Значение = 1500;
КонецЕсли;
6 55reg
 
18.07.18
18:35
Выгружает но пустые строки .... Как описать правила для второй таблицы ОплатыПлатежнымиКартами...
7 hhhh
 
18.07.18
18:37
(6) наверно просто надо

ПКС -> СуммаОплаты

зачем ПодСерт ?
8 55reg
 
19.07.18
06:32
Кажется понял )) Убрал в ТаблицеИсточника все типы, Прописал там для каждой колонки -
Значение = ОбъектКоллекции.ВидОплаты;
Значение = ОбъектКоллекции.СуммаОплаты;
а в ПКГС первой таблицы что то типа такого (правда пока не получилось синтаксически оформить правильно запрос, Конвертация думает что это реквизиты шапки, а когда таблицы указываешь ругается на синтаксис, если что двумя запросами сделаю к обеим таб частям и солью в одну коллекцию попробую)
ТекущийДокумент = Источник.Ссылка;

Запрос = Новый Запрос;
    Запрос.Текст =
"ВЫБРАТЬ
|    ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.ВидОплаты,
|    ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.Сумма
|ИЗ
|    Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами
|ГДЕ
|    ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    ОтчетОРозничныхПродажахПогашение.ПодарочныхСертификатов.ПодарочныйСертификат,
|    1
|ИЗ
|    Документ.ОтчетОРозничныхПродажах.ПогашениеПодарочныхСертификатов КАК ОтчетОРозничныхПродажахПогашениеПодарочныхСертификатов
|ГДЕ
|    ОтчетОРозничныхПродажахПогашениеПодарочныхСертификатов.Ссылка = &ТекущийДокумент";

Запрос.УстановитьПараметр("ТекущийДокумент", ТекущийДокумент);

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

    
    КоллекцияОбъектов = Новый ТаблицаЗначений();
    КоллекцияОбъектов.Колонки.Добавить("ВидОплаты");
    КоллекцияОбъектов.Колонки.Добавить("Сумма");
    
    Пока Выборка.Следующий() Цикл
    
        СтрокаТаблицы = КоллекцияОбъектов.Добавить();
        
        СтрокаТаблицы.ВидОплаты = Выборка.ВидОплаты;
        СтрокаТаблицыЗП.Сумма = Выборка.Сумма;
    
    КонецЦикла;
9 Optan
 
19.07.18
06:51
(0) В ПВД собери две ТЧ в 1 используя свои преобразования как, например, в (5).

В ПКО для составного реквизита ТЧ в событии "Перед выгрузкой" управляй переменной "ИмяПКО" в зависимости от типа значения. Либо сразу при заполнении ТЧ все преобразовывай единообразно.

У тебя для ТЧ=ПогашениеПодарочныхСертификатов в колонке Номенклатура в БП что будет стоять?
10 55reg
 
19.07.18
07:03
Опять касяк какой то ! Такое ощущение что запрос ничего не выдает ! А как это проверить !? В консоли запросов все формируется


Ошибка в обработчике события ПередОбработкойВыгрузки группы свойств
    ПКО                    =  ОтчетОРозничныхПродажах  (Документ: Отчет о розничных продажах)
    ПКГС                   =  46  (--> Оплата)
    Объект                 =  Отчет о розничных продажах ЗВС00000110 от 18.07.2018 20:03:55  (Документ объект: Отчет о розничных продажах)
    Обработчик             =  ПередОбработкойВыгрузкиГруппыСвойств
    ОписаниеОшибки         =  Поле объекта не обнаружено (ВидОплаты)
    ПозицияМодуля          =  (28)
    КСообщенияОбОшибках    =  48
11 55reg
 
19.07.18
07:09
(9) В БП3 - ТипОплатыОрганизации (Это все работает но по отдельности) Да, описывал конечно как нужно конвертировать из УТ Тип Номенклатура в Тип Вид оплат для БП.

У меня все выгружало но затирало друг друга т е или серт или оплаты )

Как описать, без отдельного ПКС, в ПКГС ОДНОЙ таблицы для двух, как нужно конвертировать Номенклатуру в вид оплаты я незнаю в этом и проблема...

Увы про ПВД и дальше ничего не понял ... Видимо еще мало опыта.
ps
Неделя к концу мотивации все меньше и меньше этим заниматься - проще такую же табличную часть в БП добавить )))
12 Мимохожий Однако
 
19.07.18
07:19
Попробуй запросом получить одну таблицу из двух в источнике
13 55reg
 
19.07.18
07:23
Лучшая работа в мире, лучшая работа в жизни!
Ярость (2014)

зы

Всем огромное спасибо за поддержку ! Под конец сам себя перемудрил. Да, в итоге запросом получил - и передал в Коллекцию (почти так как описывал выше только синтаксис нужно подправить и логику)
Чуть позже отпишу как точно нужно писать, вдруг кому то пригодиться !