Имя: Пароль:
1C
1С v8
Конвертация.Перенос из запроса в реквизит таб. части.
0 servicenn
 
02.11.16
20:01
День добрый, может кто сталкивался. Переносится документ реализация в бухгалтерию 3.0 . Нужно перенести себестоимость чтобы она попала в колонку СебестоимостьПриемник табличной части реализации в приёмнике. В источнике себестоимость определяется запросом .  Как лучше сделать? Может вариант через параметр?
1 Aleksey
 
02.11.16
20:05
Зачем? в ПГКС переназначь Коллекцию
2 Aleksey
 
02.11.16
20:07
*ПКГС, т.е. стань на папочку товары и там в перед обработкой заполни КоллекцияОбъектов

КоллекцияОбъектов - Неопределено. Если в теле обработчика определить коллекцию (присвоив данной переменной значение, например, описывающее табличную часть или набор движений, например, типа ТаблицаЗначений), то стандартное получение коллекции выполняться не будет.
3 yzimin
 
02.11.16
20:07
Если обмен с БП 3.0 настроен через EnterpriseData, то в пакете XDTO для Документ.РеализацияТоваровУслуг.Товары.Строка" есть поле "Себестоимость". В него пишите, в БП 3.0 возможно уже реализована обработка этого поля.
4 servicenn
 
02.11.16
20:10
(3)раньше обмен был через обычные обработки с кодом
5 servicenn
 
02.11.16
20:10
(2) щас попробую
6 servicenn
 
02.11.16
20:12
(2) Может есть короткий пример?
7 servicenn
 
02.11.16
20:15
А если такой вариант , в пкс источник не указываем(получаем из запроса) приёмник реквизит таб части СебестоимостьПриемник, значение = ...., сюда ставим данные из запроса, в обработчике перед выгрузкой, не пройдёт такой вариант?
8 servicenn
 
02.11.16
20:18
там есть такая перменная объект коллекции
9 servicenn
 
02.11.16
20:20
(2) в справке по обработчикам есть пример, попробую разобраться
Пример:
ТабличнаяЧасть = СоздатьОбъект("ТаблицаЗначений");
ТабличнаяЧасть.НоваяКолонка("Количество");
ТабличнаяЧасть.НоваяКолонка("Номенклатура");
ТабличнаяЧасть.НоваяКолонка("Сумма");

Рег = СоздатьОбъект("Регистр.Обороты");
Рег.ВыбратьДвиженияДокумента(Источник);
Пока Рег.ПолучитьДвижение() = 1 Цикл
НомерСтроки = Рег.НомерСтроки();
ТабличнаяЧасть.НоваяСтрока();
ТабличнаяЧасть.Количество  = Рег.РасходКво;
ТабличнаяЧасть.Номенклатура = Рег.ТМЦ;
ТабличнаяЧасть.Сумма = Рег.РасходСумма;
КонецЦикла;
ТабличнаяЧасть.Свернуть("Номенклатура", "Количество, Сумма");
ВходящиеДанные = СоздатьОбъект("СписокЗначений");
ВходящиеДанные.ДобавитьЗначение(ТабличнаяЧасть, "Услуги");
10 Aleksey
 
02.11.16
20:35
(7) мне не нравиться. По сути по каждой строки каждого документа дергаем запрос. Проще один раз на документ.
Хотя зависит где это себестоимость хранится. Допускаю что можно и вначале заполнит соответсвие товар - себестоимость и пользоваться при выгрузки этим соответсвием
11 Aleksey
 
02.11.16
20:37
(9) ТОлько у тебя не входящие данные, а коллекция объектов. Например


Запрос=новый Запрос;
Запрос.Текст="
|ВЫБРАТЬ
|    подзапрос.Номенклатура,
|    подзапрос.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
|    подзапрос.СуммаОборот КАК Сумма,
|    подзапрос.КоличествоОборот КАК Количество
|ИЗ
|    (ВЫБРАТЬ
|        ВЫБОР
|            КОГДА ХозрасчетныйОбороты.Счет.Код = ""004.01""
|                ТОГДА ХозрасчетныйОбороты.Субконто2
|            ИНАЧЕ ХозрасчетныйОбороты.Субконто1
|        КОНЕЦ КАК Номенклатура,
|        ВЫБОР
|            КОГДА ХозрасчетныйОбороты.Счет.Код = ""004.01""
|                ТОГДА ХозрасчетныйОбороты.Субконто3
|            ИНАЧЕ ХозрасчетныйОбороты.Субконто2
|        КОНЕЦ КАК Склад,
|        ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот,
|        ХозрасчетныйОбороты.КоличествоОборот КАК КоличествоОборот
|    ИЗ
|        РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, , , , , ) КАК ХозрасчетныйОбороты
|    ГДЕ
|        ХозрасчетныйОбороты.Регистратор = &Регистратор) КАК подзапрос
|ГДЕ
|    подзапрос.Склад = &Субконто2    
|";

Запрос.УстановитьПараметр("Регистратор",Источник);
Запрос.УстановитьПараметр("Субконто2",Параметры.Склад);
КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();


что типа такого
12 servicenn
 
02.11.16
20:42
(11)ага,подробно ,колонки выгрузки из запроса соответствуют колонкам в табличной части приёмника. А больше нигде не надо ни какаких галочек ставить или что либо прописывать?
13 servicenn
 
02.11.16
20:45
(11)буду пробовать
14 Aleksey
 
02.11.16
20:51
(12) Ну в крайнем случае пропишешь в ПКС
Значение=ОбъектКоллекции.ЕдиницаИзмерения;

P.S> ОбъектКоллекции - ссылка на выгружаемый объект коллекции. Например, строка табличной части или запись регистра или строка таблицы значений или строка результата запроса и т.д.
15 servicenn
 
02.11.16
20:57
(14) спасибо ,сначала с коллекцией объектов попробую
16 servicenn
 
02.11.16
22:20
(9) СУПЕР! РАБОТАЕТ ,ПОКА ПОПРОБОВАЛ ТЕСТОВЫЙ ЗАПРОС

Запрос=новый Запрос;
Запрос.Текст="
    |ВЫБРАТЬ
    |БУРеализацияТМЦУслугВГОТовары.Номенклатура,
    |БУРеализацияТМЦУслугВГОТовары.Цена,
    |БУРеализацияТМЦУслугВГОТовары.СуммаНДС,
    |БУРеализацияТМЦУслугВГОТовары.НомерГТД,
    |500 КАК сумма,
    |БУРеализацияТМЦУслугВГОТовары.Количество,
    |БУРеализацияТМЦУслугВГОТовары.КоличествоМест,
    |БУРеализацияТМЦУслугВГОТовары.СтавкаНДС,
    |БУРеализацияТМЦУслугВГОТовары.ДокументПартии,
    |БУРеализацияТМЦУслугВГОТовары.ЕдиницаХранения,
    |БУРеализацияТМЦУслугВГОТовары.СтранаПроисхождения,
    |2000 как СебестоимостьФУДТ_ЭР

    |ИЗ
    |Документ.БУРеализацияТМЦУслугВГО.Товары КАК БУРеализацияТМЦУслугВГОТовары
    |ГДЕ
    |БУРеализацияТМЦУслугВГОТовары.Ссылка = &Ссылка "
    ;
    
    Запрос.УстановитьПараметр("ссылка",Источник);
    КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();
17 servicenn
 
02.11.16
22:22
Дальше сделаю , рабочий запрос вытяну себестоимость из регистра и левым соединением присоеденю к этому и заменю.
18 Alexor
 
02.11.16
22:23
Не забудь только что если себестоимость у тебя =0 то будет списывать по партии. Если себестоимость =0 то 0.01 выгружай.