Имя: Пароль:
1C
1С v8
выборка из ТЧ запросом
0 vux13
 
08.12.23
14:18
всем привет
платформа 8.3.22.2239
подскажите вот хочу сделать выборку из ТЧ объекта, но ошибка
или я что-то не понимаю или что-то не работает

вот код:
в ТЧ колонки: НомерСтроки(число), Покупатель(Ссылка), Ключ(число), СчетФактура(булево)

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


Ошибка при вызове метода контекста (Выполнить)
{ВнешняяОбработка.DM_Обработка1.Форма.Форма.Форма(30)}:    РезультатЗапроса = Запрос.Выполнить();
{ВнешняяОбработка.DM_Обработка1.Форма.Форма.Форма(5)}:    Результат = ЗапросКТЧ();  
по причине:
{(8, 2)}: Неверные параметры "ТабЧасть"
<<?>>&ТабЧасть КАК ТабЧасть

по причине:
{(8, 2)}: Неверные параметры "ТабЧасть"
<<?>>&ТабЧасть КАК ТабЧасть
1 mikecool
 
08.12.23
14:20
нельзя передавать табчасть
2 inkvizitr
 
08.12.23
14:20
(0) так работать не будет, логичнее в запросе выбрать ТЧ, а в параметр подставить ссылку на документ
3 mikecool
 
08.12.23
14:21
(2) зависит от точки вызова... а если док не записан?
4 inkvizitr
 
08.12.23
14:21
(2) пример:

"ВЫБРАТЬ
|    АвизоМПЗИсходящееТовары.Ссылка КАК Ссылка,
|    АвизоМПЗИсходящееТовары.НомерСтроки КАК НомерСтроки,
|    АвизоМПЗИсходящееТовары.Номенклатура КАК Номенклатура,
|    АвизоМПЗИсходящееТовары.Количество КАК Количество,
|    АвизоМПЗИсходящееТовары.СчетУчета КАК СчетУчета
|ИЗ
|    Документ.АвизоМПЗИсходящее.Товары КАК АвизоМПЗИсходящееТовары
|ГДЕ
|    АвизоМПЗИсходящееТовары.Ссылка = &Ссылка"
5 shuhard
 
08.12.23
14:22
(2) ТЧ обработки =)
6 inkvizitr
 
08.12.23
14:22
(3) если док не записан, то ТЧ выгружаешь в ТЗ и подставляешь в параметр запроса
7 mikecool
 
08.12.23
14:23
(6) и конечно не зная контекста бросился на амбразуру )
8 mikecool
 
08.12.23
14:23
имхо - снова ИИ кто то натравил на форум
9 vux13
 
08.12.23
14:24
(1) а как тогда передать ?
(2) не понял как это сделать, документа как бы нет, есть только обработка с табличной частью, в неё помещаются данные, эти данные выбрать запросом
10 inkvizitr
 
08.12.23
14:24
(7) Запрос.Установитьпараметр("Товары", Объект.Товары.Выгрузить());

"ВЫБРАТЬ
|    АвизоМПЗИсходящееТовары.Ссылка КАК Ссылка,
|    АвизоМПЗИсходящееТовары.НомерСтроки КАК НомерСтроки,
|    АвизоМПЗИсходящееТовары.Номенклатура КАК Номенклатура,
|    АвизоМПЗИсходящееТовары.Количество КАК Количество,
|    АвизоМПЗИсходящееТовары.СчетУчета КАК СчетУчета
|ИЗ
|    &Товары КАК АвизоМПЗИсходящееТовары"
11 inkvizitr
 
08.12.23
14:28
у незаписанного документа получить данные

Выгрузка = ЭтотОбъект.Объект.Товары.Выгрузить()
12 inkvizitr
 
08.12.23
14:31
(8)  ты тут походу местный Алешка в кавычках, везде вставляешь свои 5 копеек не по делу
13 lEvGl
 
08.12.23
14:35
а давно это из объектной тч запросом выбирать нельзя?
14 inkvizitr
 
08.12.23
14:39
(13) из слов автора, документ заполняется и не сохраняется, собственно объект получается пустой
15 lEvGl
 
08.12.23
14:43
(14) не, не ссылка, именно объект. и у тса же обработка, а не документ. но без разницы, хоть в справочнике ТЧ, ее всегда можно было параметром в запрос кинуть
16 vux13
 
08.12.23
14:44
(11) так сделал, но сейчас другая ошибка:
Поле объекта не обнаружено (НомерСтроки)
{ВнешняяОбработка.DM_Обработка1.Форма.Форма.Форма(36)}:        ПокупателиСтруктура.НомерСтроки = Выборка.НомерСтроки;
{ВнешняяОбработка.DM_Обработка1.Форма.Форма.Форма(5)}:    Результат = ЗапросКТЧ();

и если посмотреть отладчиком в РезультатЗапроса.Выбрать(), то там значение - "ошибка чтения значения"
17 inkvizitr
 
08.12.23
14:48
(16) посмотри в отладке как называются у тебя колонки в таблице значений, есть ли там такая колонка номер строки?
18 inkvizitr
 
08.12.23
14:49
(16) и я правильно понимаю, ты делал как то ват так
"ВЫБРАТЬ
|    АвизоМПЗИсходящееТовары.Ссылка КАК Ссылка,
|    АвизоМПЗИсходящееТовары.НомерСтроки КАК НомерСтроки,
|    АвизоМПЗИсходящееТовары.Номенклатура КАК Номенклатура,
|    АвизоМПЗИсходящееТовары.Количество КАК Количество,
|    АвизоМПЗИсходящееТовары.СчетУчета КАК СчетУчета
|ПОМЕСТИТЬ ВТ
|ИЗ
|    Документ.АвизоМПЗИсходящее.Товары КАК АвизоМПЗИсходящееТовары
|ГДЕ
|    АвизоМПЗИсходящееТовары.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТ.Ссылка КАК Ссылка,
|    ВТ.НомерСтроки КАК НомерСтроки,
|    ВТ.Номенклатура КАК Номенклатура,
|    ВТ.Количество КАК Количество,
|    ВТ.СчетУчета КАК СчетУчета
|ИЗ
|    ВТ КАК ВТ"
19 inkvizitr
 
08.12.23
14:50
(18) т.е. после первого пакетного запроса который у тебя называется   |ПОМЕСТИТЬ ВТ_ТабЧасть ты создал второй пакет и от туда выводишь данные?
20 inkvizitr
 
08.12.23
14:51
(16) и еще вопрос зачем ты используешь Новый МенеджерВременныхТаблиц; если у тебя даже параметры не передаются в твою функцию
21 inkvizitr
 
08.12.23
14:53
(16) пришли синтаксис того, чего у тебя сейчас получилось
22 inkvizitr
 
08.12.23
14:54
(18) Извиняюсь, вот так должно что то получиться

"ВЫБРАТЬ
|    АвизоМПЗИсходящееТовары.Ссылка КАК Ссылка,
|    АвизоМПЗИсходящееТовары.НомерСтроки КАК НомерСтроки,
|    АвизоМПЗИсходящееТовары.Номенклатура КАК Номенклатура,
|    АвизоМПЗИсходящееТовары.Количество КАК Количество,
|    АвизоМПЗИсходящееТовары.СчетУчета КАК СчетУчета
|ПОМЕСТИТЬ ВТ
|ИЗ
|    &Товары КАК АвизоМПЗИсходящееТовары
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТ.Ссылка КАК Ссылка,
|    ВТ.НомерСтроки КАК НомерСтроки,
|    ВТ.Номенклатура КАК Номенклатура,
|    ВТ.Количество КАК Количество,
|    ВТ.СчетУчета КАК СчетУчета
|ИЗ
|    ВТ КАК ВТ"
23 vux13
 
08.12.23
14:58
(22) да спасибо, вот так всё заработало, нужно же было из ВТ_ТабЧасть вторым пакетом выбирать