Имя: Пароль:
1C
1С v8
БП 2.0 Запрос к таблице объекта (в обычных формах)
0 YurAnt
 
20.09.13
08:04
Доброго времени суток, господа - форумчане...
Видимо пятница... туплю похоже уже.
Формы обычные, Док "ОтражениеЗарплатыВРегУчете", Модуль формы, хочу оттуд запросом выбрать таблицу ОтражениеВУчете.

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

В итоге, ошибок не выдает, но:
Результат[0] = Неопределено. Док-т даже записан (хотя пожалуй будет правильнее сделать выгрузку из таблицы с формы (т.е. до того момента когда док-т будет записан, но это уже другая история... пока даже из записанного не выгружает) ((
собственно в чем я натупил?

Благодарен за любые советы, с ув. Yurant.
1 YurAnt
 
20.09.13
08:09
перебрал бы так... в цикле строки, но хочу левым соединением к ним цеплять номенклатурные группы (они в свою очередь тоже будут запросом выгребаться, а за запросы в цикле... сами понимаете пожизненный цих с гвоздями.
2 catena
 
20.09.13
08:16
Результат = Запрос.Выполнить().Выгрузить();?
3 YurAnt
 
20.09.13
08:21
catena, спасибо вам =)
сижу типизацию колонок ковыряю, а ведь вот как чуял, что ошибка наиглупейшая...)
4 YurAnt
 
20.09.13
08:37
хм, однако... вместо таблицы вернул 1 строку Результат[0]
Свойство = Количество
Значение = 231
Тип = Число
5 catena
 
20.09.13
08:44
(4)Потому что ВТ. Чтобы вернул таблицу, надо еще выборку сделать.

"ВЫБРАТЬ
    |   ТаблЗнч.СчетДт,
    |   ТаблЗнч.Сумма
    |ПОМЕСТИТЬ ТаблИсточника
    |ИЗ
    |     &ТаблЗнч КАК ТаблЗнч
|;
|Выбрать * из ТаблИсточника";
6 ИС-2
 
naïve
20.09.13
08:55
для получения именно выборки надо убрать  
|ПОМЕСТИТЬ ТаблИсточника

либо (5), что более верно
7 catena
 
20.09.13
08:58
(6)Не получится тут убирать ВТ, выборку из таблицы значений можно только через вт сделать :)
8 YurAnt
 
20.09.13
09:07
Тааак) Уже интереснее)

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


Так, ко 2й таблице я не могу прицепить левое соединение, поскольку она не понимает колонок 1й, а если цеплять к 1й, то видим вот это:
"При выборе данных из объекта в запросе не могут присутствовать соединения и объединения"
9 YurAnt
 
20.09.13
09:07
ко 2й выборке*
10 YurAnt
 
20.09.13
09:17
Вроде взлетело... разбираюсь правильно ли сделал.

Функция ПолучитьТаблицуНоменклатурныхГрупп() Экспорт
    МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
      
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.УстановитьПараметр("ТаблЗнч", ОтражениеВУчете);
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТаблЗнч.СчетДт,
                   |    ТаблЗнч.СубконтоДт1,
                   |    ТаблЗнч.СубконтоДт2,
                   |    ТаблЗнч.СубконтоДт3,
                   |    ТаблЗнч.СчетКт,
                   |    ТаблЗнч.СубконтоКт1,
                   |    ТаблЗнч.СубконтоКт2,
                   |    ТаблЗнч.СубконтоКт3,
                   |    ТаблЗнч.Сумма,
                   |    ТаблЗнч.ОтражениеВУСН,
                   |    ТаблЗнч.ВидРасчета,
                   |    ТаблЗнч.Физлицо,
                   |    ТаблЗнч.ВидНачисленияПоСт255НК,
                   |    ТаблЗнч.ВидНачисленияУдержания,
                   |    ТаблЗнч.ПодразделениеДт,
                   |    ТаблЗнч.ПодразделениеКт,
                   |    ТаблЗнч.СуммаПР,
                   |    ТаблЗнч.СуммаВР,
                   |    ТаблЗнч.СуммаНУ
                   |ПОМЕСТИТЬ ТаблИсточника
                   |ИЗ
                   |    &ТаблЗнч КАК ТаблЗнч";
    Запрос.Выполнить().Выгрузить();    
    Запрос.Текст = "ВЫБРАТЬ
                   |    АктОбОказанииПроизводственныхУслугУслуги.НоменклатурнаяГруппа
                   |ИЗ
                   |    ТаблИсточника КАК ТаблИсточника
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктОбОказанииПроизводственныхУслуг.Услуги КАК АктОбОказанииПроизводственныхУслугУслуги
                   |        ПО ТаблИсточника.ПодразделениеДт = АктОбОказанииПроизводственныхУслугУслуги.Ссылка.ПодразделениеЗатрат";
    Результат = Запрос.Выполнить().Выгрузить();
    //
    Для Каждого Строка Из Результат Цикл
        Если ЗначениеЗаполнено(Строка.НоменклатурнаяГруппа) Тогда
            Сообщить(Строка.НоменклатурнаяГруппа);
        КонецЕсли;
    КонецЦикла;
    
    Возврат Результат;    
КонецФункции
11 YurAnt
 
20.09.13
09:24
добавил описание таблицы во 2м случае.
12 Rovan
 
гуру
20.09.13
09:26
(10) можно делать все в 1 Выполнить() разделив тексты запроса ";"
13 catena
 
20.09.13
09:40
+(12)и без менеджера временных таблиц :)
14 YurAnt
 
20.09.13
09:59
(13) поправил =)