Имя: Пароль:
1C
1С v8
Помогите пожалуйста с выгрузкой результата запроса в табличную часть документа.
0 MihaSerb
 
14.02.13
06:11
Есть запрос с полем себестоимость, необходимо что бы при проведении документа расходная накладная при добавлении соответствующей номенклатуры появлялась в колонке цена себестоимость товара.



Мои попытки реализовать.

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ОбъектДок = Ссылка.Товары.ПолучитьОбъект();
СтрТабЧасти = ОбъектДок.Товары.Добавить();
СтрТабЧасти.Цена = ВыборкаДетальныеЗаписи.Себестоимость;

КонецЦикла;
1 Godofsin
 
14.02.13
06:20
Читайте СП
2 Godofsin
 
14.02.13
06:21
Табличная часть (Tabular section)
Загрузить (Load)
Синтаксис:

Загрузить(<Таблица>)
Параметры:

<Таблица> (обязательный)

Тип: ТаблицаЗначений.
Таблица значений, откуда загружается табличная часть. Колонки таблиц совмещаются по именам.
Описание:

Загружает табличную часть из таблицы значений. При этом все прежние строки табличной части удаляются. При загрузке значения в колонках табличной части заполняются значениями из колонок таблицы значений с совпадающими именами.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:

Состав.Загрузить(ТаблицаСостава);
3 FoxFox
 
14.02.13
06:22
Все смешалось.. Так при проведении документа или при выборе номенклатуры в тч?
Для ВыборкаДетальныеЗаписи.Следующий() не Выгрузить(), а Выбрать().
Ссылка.Товары.ПолучитьОбъект() - получить объект табличной части?..
4 Godofsin
 
14.02.13
06:22
поле "себестоимость" обозвать "цена"
5 Godofsin
 
14.02.13
06:26
ОбъектДок = Ссылка.ПолучитьОбъект()
6 MihaSerb
 
14.02.13
06:26
При выборе номенклатуры.
7 Godofsin
 
14.02.13
06:26
вариант (2)  вам не подходит, сори
8 kosts
 
14.02.13
06:33
(6) Если при выборе номенклатуры, то похоже, что это в форме документа. Тогда не нужно получать объект (он уже есть).


//   ОбъектДок = Ссылка.Товары.ПолучитьОбъект();
СтрТабЧасти = Товары.Добавить();
СтрТабЧасти.Номенклатура = ?;
СтрТабЧасти.Цена = ВыборкаДетальныеЗаписи.Себестоимость;
9 MihaSerb
 
14.02.13
06:41
Что то у меня все равно не получается может у меня с запросом какие-то косяки.

Гляньте пожалуйста если не затруднит.


Запрос.Текст = "ВЫБРАТЬ
                    |    РасходнаяНакладнаяТовары.Номенклатура,
                    |    СРЕДНЕЕ(ТоварыНаСкладеОстатки.СуммаОстаток / ТоварыНаСкладеОстатки.КоличествоОстаток) КАК Себестоимость,
                    |    СУММА(РасходнаяНакладнаяТовары.Сумма) КАК Сумма,
                    |    СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
                    |    РасходнаяНакладнаяТовары.Склад,
                    |    СУММА(ТоварыНаСкладеОстатки.КоличествоОстаток) КАК КоличествоОстаток,
                    |    СУММА(ТоварыНаСкладеОстатки.СуммаОстаток) КАК СуммаОстаток
                    |ПОМЕСТИТЬ ДокТЧ
                    |ИЗ
                    |    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
                    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки КАК ТоварыНаСкладеОстатки
                    |        ПО РасходнаяНакладнаяТовары.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура
                    |ГДЕ
                    |    РасходнаяНакладнаяТовары.Ссылка = &Ссылка
                    |
                    |СГРУППИРОВАТЬ ПО
                    |    РасходнаяНакладнаяТовары.Номенклатура,
                    |    РасходнаяНакладнаяТовары.Склад";

     Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         
     СтрТабЧасти = Товары.Добавить();
     СтрТабЧасти.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
     СтрТабЧасти.Цена = ВыборкаДетальныеЗаписи.Себестоимость;
     
     КонецЦикла;

Мне необходимо посчитать цену(себестоимость) товара которая берется из ресурсов регистра накопления(Сумма, Количество) и при создании документа расходная накладная при добавлении номенклатуры автоматически выставлялась цена.
10 kosts
 
14.02.13
06:47
(9) Есть группировка по складу, зачем? Мы получим номенклатуру и себестоимость по каждому складу.
Тут либо в запросе убрать склад, либо отбор в запросе по складу.

Если есть соединение, то практически всегда есть возможность получить Null, а так же есть вероятность деления на 0 - это нужно специально обработать.
11 kosts
 
14.02.13
06:48
Ну и не нужно тащить колонки в запросе которые не будут потом использованы. В запросе по факту можно оставить всего 2 колонки.
12 kosts
 
14.02.13
06:49
Возможно в документе есть склад, может быть "себестоимость" нужно именно по этому складу? Или по всем?
13 kosts
 
14.02.13
06:52
А вот рассмотрел РасходнаяНакладнаяТовары.Склад, возможно так тебе нужно:


СтрТабЧасти.Склад = ВыборкаДетальныеЗаписи.Склад;


Тогда склад в запросе может быть
14 kosts
 
14.02.13
06:55
(9) В условие соединения еще тогда видимо нужно добавить и склад тоже.
15 MihaSerb
 
14.02.13
06:55
У меня склад в запросе для дальнейшего использования, я контроль остатков в процедуре позже осуществляю.
16 Гефест
 
14.02.13
06:57
Твой запрос ничего не выбирает, а помещает данные в ВТ
17 kosts
 
14.02.13
07:03
(16) Точнее выбирает, но не возвращает :), а я проглядел...
18 MihaSerb
 
14.02.13
07:08
Тоесть мне надо создать другой запрос к временной таблице и из него брать данные для выгрузки в табличную часть?
19 kosts
 
14.02.13
07:09
(18) Попробуй убери ПОМЕСТИТЬ ДокТЧ
20 kosts
 
14.02.13
07:11
Для удобства в консоле запросов создай правильный запрос, который возвращает, то что нужно, затем уже вставляй его в программу.