Имя: Пароль:
1C
1С v8
Вставить результаты запроса в ТЧ документа
, ,
0 pt_denis
 
05.08.14
09:48
Ребята, только начал учить 1с программирование. Мне нужно вставить результат запроса:

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


В ТабличнуюЧасть РасходнойНакладной, а именно ВыборкаДетальныеЗаписи.УчетнаяЦена в РасходнаяНакладная.ПереченьТМЦ.УчетнаяЦена.

Не подскажете как это сделать, может пример дайте какой-то что бы разобрать. До этого я я делал методом Запрос.Выполнить().Выгрузить(), но тут так нельзя...
1 Godofsin
 
05.08.14
09:51
.НайтиСтроки()
2 Wobland
 
05.08.14
09:51
>но тут так нельзя...
аллах запрещает?
3 _fvadim
 
05.08.14
09:53
Почему нельзя, можно. Перебираешь и добавляешь по одной.
А вообще - ТЧ.Загрузить
4 salvator
 
05.08.14
09:53
Соединить ТЧ документа в запросе с регистром.
Вывести поле с ценой.
Загрузить полученную таблицу значений в документ.
5 dj_serega
 
05.08.14
09:54
(0) сделай ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить(); и будет можно.
6 pt_denis
 
05.08.14
10:00
(2) Ну потомучто я в запросе не соеденил ТЧ с расчетом.
(4) Ну я так делал раньше, а если через мой запрос?
(3) Можно пример?
7 Wobland
 
05.08.14
10:02
(6) а тебе зачем соединять?
8 Wobland
 
05.08.14
10:02
(7) ну ладно, соединяй
9 pt_denis
 
05.08.14
10:05
(7) Ну до этого я подобный запрос, делал так запросом брал данные из ТЧ соединял с регистром, делал расчет и потом выгружал в таблицу. Извините, пока я умею только так =)
Ну а если по данному примеру запроса, возможно как то выгрузить только в колонку ТЧ УчетнаяЦена или как-то по другому вписать?
10 salvator
 
05.08.14
10:15
(9) Можно.
Тогда тебе надо использовать метод, указанный в (1)
11 patria0muerte
 
05.08.14
10:22
(0) Можешь попробовать ТЧ документа запихать во временную таблицу, в запросе рассчитать нужные данные и выгрузить обратно в ТЧ...
Примерно так
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТЧ", ТЧ.Выгрузить());
Запрос.Текст =
|ВЫБРАТЬ
|ТЧ.ТМЦ
|ПОМЕСТИТЬ ВТ
|ИЗ &ТЧ КАК ТЧ;
|ВЫБРАТЬ
|ВТ.ТМЦ
|    ВЫБОР
|       КОГДА ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) = 0
|                ИЛИ ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, |0) = 0
|            ТОГДА 0
|        ИНАЧЕ ТМЦОстатки.СуммаОстаток / |ТМЦОстатки.КоличествоОстаток
|    КОНЕЦ КАК УчетнаяЦена
|ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ |РегистрНакопления.ТМЦ.Остатки КАК ТМЦОстатки ПО ВТ.ТМЦ = |ТМЦОстатки.ТМЦ;


Как то так...
12 Strogg
 
05.08.14
10:28
Выборка = Запрос.Выполнить().Выбрать();
Для Каждого Стр Из ПереченьТМЦ Цикл
  Если Выборка.НайтиСледующий(Стр.ТМЦ,"ТМЦ") Тогда
   Стр.УчетнаяЦена = Выборка.УчетнаяЦена;
  Иначе
   Стр.УчетнаяЦена = 0;
  КонецЕсли;
КонецЦикла;
-----
следующий способ :)
13 pt_denis
 
05.08.14
10:29
(10) и как этот метод будет выглядеть?
Извините я не прошу написать код под мою конфу, но хотя бы какой то пример разобрать.
То есть я в Выборке найду строки, а потом надо выгрузить их в ТЧ?
14 patria0muerte
 
05.08.14
10:36
(13) Там имеется ввиду, что ты идешь по выборке и ищешь строки в ТЧ по Выборка.ТМЦ и в них подставляешь Выборка.УчетнаяЦена...
СтруктураПоиска = Новый СТруктура();
СтруктураПоиска.Вставить("ТМЦ");
Пока Выборка.Следующий Цикл
СтруктураПоиска.ТМЦ = Выборка.ТМЦ
МассивНайденныхСтрок = ТЧ.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаТаблицы Из МассивНайденныхСтрок Цикл
СтрокаТаблицы.ЦчетнаяЦена = Выборка.УчетнаяЦена
КонецЦикла;

КонецЦикла;

Собственно в (12) почти тоже самое, только ровно наоборот...
16 salvator
 
05.08.14
10:38
(11) Зачем делать запрос к ТЗ, если можно сделать запрос к ТЧ?
(13) В синтаксис-помощнике забанили что ли, не пойму?
17 pt_denis
 
05.08.14
10:39
(12) (14) Спасибо
18 patria0muerte
 
05.08.14
10:41
(16) Предполагаю, что данная процедура выполняется где то в модуле формы, при интерактивной работе. Поэтому если мы обратимся в запросе к РасходнаяНакладнаяПереченьТМЦ - там же данные не те, что у нас в данный момент при работе с формой. Или я не прав?
19 patria0muerte
 
05.08.14
10:42
+(18) А непосредственно к ТЧ вроде бы в запросе нельзя обратиться, если мне память не изменяет...