Имя: Пароль:
1C
 
ТЧ документа загрузить в запрос
, , SeaJikS
0 Ilnazio
 
30.03.22
10:41
Добрый день. Знаю что тут очевидное и простое решение до которого допереть не могу.
Нам надо 2 ТЧ 2-х документов соединить: реализация и возврат, все это происходит в обработке заполнения возврата, ссылки на док еще нет, но его ТЧ уже заполнена, ссылка на тч реализации есть, его можно запросом прям взять, а вот тч возврата я хз как без описания его колонок взять.. помогите плиз
1 Гипервизор
 
30.03.22
10:50
(0) Выгрузить в ТЗ. А ТЧ в возврате откуда заполнена? Задача какая?
2 acht
 
30.03.22
10:51
(0) https://www.1c-uc3.ru/zapros-sod-den.html
4. Практическая работа с языком запросов
    - Работа с запросами на встроенном языке Платформы 8
        - Временные таблицы и пакетные запросы
3 acht
 
30.03.22
10:52
(1) > Выгрузить в ТЗ
ТЧ можно сразу в параметр
4 Ilnazio
 
30.03.22
10:53
(1) Типовым способом в обработке заполнения. Задача следующая: добавилась новая колонка номенклатура поставщика. Возврат создается на основе реализации. В реализации данная номенклатура есть, надо ее заполнить и в возврате
5 Ilnazio
 
30.03.22
10:53
(3) а как описать колонки в запросе, понятно что параметром в запросе будет ТЗ
6 Ilnazio
 
30.03.22
10:55
(1) https://programmist1s.ru/kak-pomestit-tablitsu-v-zapros-1s/
Вот как тут по сути надо сделать, НО они описывают колонку номенклатуры и дают ей тип. Неужели надо всю ТЧ возврата так описать?
7 acht
 
30.03.22
10:56
(5) >  понятно что параметром в запросе будет ТЗ
Нет. ТЧ. Можно. Сразу. В. Параметр.
8 Ёпрст
 
30.03.22
10:58
(5) она уже будет типизирована и можно пихать тч, а не тз.
9 Ilnazio
 
30.03.22
10:58
можешь пожалуйста пример запроса привести, не понимаю как без данные брать в запросе в таком случае без описания колонок. Я так понимаю запрос должен знать какие колонки ему с ТЗ приходят в параметре
10 mikecool
 
30.03.22
10:59
(5) я не парюсь в конструкторе, а пишу сразу что то типа
Выбрать * Из &ТЧ Как ТЧ
и уже это открываю в конструкторе, а потом руками колонки дописываю
11 Ilnazio
 
30.03.22
11:00
(10) Понял, попробую. Если что я не пиндос, просто с впн сижу :D
12 Ilnazio
 
30.03.22
11:03
(10) в конфе нельзя же повторно описывать колонки
13 Said_We
 
30.03.22
15:53
(12) А чего в запросе описывать собрался?
Описание типа колонок необходимо для самой ТЗ, когда передаешь её параметром в запрос.
В запросе просто используешь, только те, которые тебе нужны. Конструктор запроса не может знать какие колонки будут переданы в ТЗ, поэтому допускает любые.
Если лень ручками писать, то возьми запросом из похожей таблицы в конфигураторе - не важно какой, ТЧ документа РС или ещё что.
Далее ручками меняешь на "ИЗ &ТЗ как ..." и обязательно ПОМЕСТИТЬ, так как напрямую с данными из ТЗ работать нельзя их сначала надо поместить во внутреннюю таблицу менеджера временных таблиц.
14 Said_We
 
30.03.22
16:00
Описание типа колонок в самом запросе я встречал только в случае, если сама ТЗ заполняется из какого-то внешнего источника данных.
Что бы не писать для каждой колонки её тип описание, квалификатор и т.д. Просто структура берется из живых данных с условием "ГДЕ ЛОЖЬ". И выгружается в ТЗ. Так как запрос пустой, то и ТЗ будет пустая, но все колонки будут такого же типа что и в структуре данных.
Далее эта ТЗ как-то заполняется и параметром обратно в запрос.
15 serverstar
 
30.03.22
16:10
(10) да, только не забыть поместить в виртуальную таблицу

Выбрать *
ПОМЕСТИТЬ ВтТЧ
Из &ТЧ
Как ТЧ
16 mikecool
 
30.03.22
16:13
(12) ты о чем? может все таки пиндос? ))
17 Aleksandr N
 
30.03.22
17:01
(16) Наверное, об этом:
КолонкаТаблицыЗначений (ValueTableColumn)
ТипЗначения (ValueType)
Использование:
Только чтение.
18 Kassern
 
30.03.22
17:06
"ТЧ документа загрузить в запрос" Все же очень просто. Выгружаем ТЧ в ТЗ. Далее создаем в запросе временную таблицу и указываем нужные поля. В имени таблицы указываем наш параметр с ТЗ (&ТЗ например). Ничего сложного. Единственное, нужно обратить внимание, чтобы типы были указаны у ТЗ, в случае заполнения из ТЧ, такой проблемы не будет. Так же нельзя группировать данные в этой временной таблице, но после уже - пожалуйста
19 lodger
 
30.03.22
17:11
(10) есть ещё дешевле рецепт, если работаем с ТЗ из ТЧ.
просто выбираем ТЧ первой таблицей, пихаем в ВТ, и работаем с этими ВТ как душе угодно.
потом сохраняемся, выходим из конструктора и перепишем "Из Документ.ИмяДокумент.ИмяТЧ Как ТЧ" на "Из &ТЧ Как ТЧ"
20 Ilnazio
 
30.03.22
17:13
(19) точно так же пробовал, хз где не то жмякнул)
21 lodger
 
30.03.22
17:15
(20) в первом запросе пакета нельзя производить манипуляции с данными.
22 lodger
 
30.03.22
17:15
(21) при помещении в ВТ из ТаблицыЗначения
23 Ilnazio
 
30.03.22
17:39
Как вообще с этими данными что-то делать, если там стоит "выбрать *". О каких данных речь тады вообще
24 acht
 
30.03.22
17:51
Точно - пиндос.
25 Said_We
 
30.03.22
18:01
(23) "если там стоит "выбрать *"" - значит выбрать все данные что есть и не важно какие.
26 Ilnazio
 
30.03.22
21:41
(24) ты шо китаец,аа?
27 acht
 
31.03.22
08:35
(26) Люблю путешествовать
28 mikecool
 
31.03.22
10:21
(18) не надо промежуточного ТЗ, как писали ранее - ТЧ спокойно помещается в запрос
29 hhhh
 
31.03.22
12:03
(28) не получится. у него "ссылки на док еще нет". Поэтому только через ТЗ.
30 Kassern
 
31.03.22
12:08
(28) конечно помещается, но только там будут данные записанные в базу, А вот если нужно работать с изменением ТЧ перед записью дока, то приходится работать с ВТ и помещением ТЧ в ТЗ.
31 acht
 
31.03.22
12:13
(29) Да йепичская сила, что ж вы в в эту таблицу значений уперлись.

Запрос = Новый Запрос("выбрать * из &таблица поместить таблица");
Запрос.УстановитьПараметр("таблица", ДокументОбъект.ИмяТабличнойЧасти);

И все. ДокументОбъект.ТабличнаяЧасть имеет тип "ДокументТабличнаяЧасть.МойДокумент.ИмяТабличнойЧасти";
32 Kassern
 
31.03.22
12:14
(31) а давно можно ТЧ помещать во временную таблицу, вроде как раньше ругалось, приходилось ТЧ.Выгрузить() Делать
33 Kassern
 
31.03.22
12:14
?
34 acht
 
31.03.22
12:17
(32) Давно.

https://its.1c.ru/db/pubqlang/content/74/hdoc

Временная таблица может быть создана как на основе таблиц базы данных, так и на основе внешнего источника данных. В качестве внешнего источника могут выступать:
  * таблица значений,
  * табличная часть,
  * результат запроса.

Е. Ю. Хрусталева
Язык запросов «1С:Предприятия 8
Версия издания от 05.09.2013.
35 Kassern
 
31.03.22
12:18
(31) только что протестил на внешней обработке:
Неверные параметры "ТЗ"
<<?>>&ТЗ КАК ТЗ
Это если помещаю в параметр саму табличную часть, а не ТЗ
36 Kassern
 
31.03.22
12:22
Вот кусок кода во внешней обработке:
    НовСтрока=Объект.ТЧ.Добавить();
    НовСтрока.Колонка1="Тест";
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ТЗ.Колонка1 КАК Колонка1
                 |ПОМЕСТИТЬ Проверка
                 |ИЗ
                 |    &ТЗ КАК ТЗ
                 |;
                 |
                 |////////////////////////////////////////////////////////////////////////////////
                 |ВЫБРАТЬ
                 |    Проверка.Колонка1 КАК Колонка1
                 |ИЗ
                 |    Проверка КАК Проверка";
    Запрос.УстановитьПараметр("ТЗ",Объект.ТЧ);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить(Выборка.Колонка1)
    КонецЦикла;
Если же я напишу: Запрос.УстановитьПараметр("ТЗ",Объект.ТЧ.Выгрузить()); - то все отработает.
37 mikecool
 
31.03.22
12:23
(36) что то кони стали хромать )))
вчера делал как товарищ в (31) пишет - работает
38 Kassern
 
31.03.22
12:29
(37) я тестил на платформе 8.3.19.1264
39 Kassern
 
31.03.22
12:30
ну и на управляемых формах. В общем имхо лучше помещать ТЗ и не переживать за ошибку параметров
40 acht
 
31.03.22
12:30
(36) 8.3.18.1520

Документ = Документы.БольничныйЛист.СоздатьДокумент();
Таблица = Документ.Начисления;
Таблица.Добавить();
Таблица.Добавить();
Таблица.Добавить();

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

Найди 10 различий.
41 acht
 
31.03.22
12:32
(39) > управляемых формах
Браво. Какого типа у тебя "Объект.ТЧ"?
42 Kassern
 
31.03.22
12:34
(41) Коллекция скорее всего.
43 Kassern
 
31.03.22
12:35
(41) проверил РеквизитФормыВЗначение("Объект").ТЧ, так канает.
44 acht
 
31.03.22
12:35
(42) ДанныеФормыКоллекция, если уж точнее. А речь - про табличную часть объекта.
45 acht
 
31.03.22
12:35
(43) Ну вот =)
46 Kassern
 
31.03.22
12:37
только вот какой практический смысл получать из реквизита формы значение, когда можно тупо Выгрузить()? Сильно на быстродействие будет влиять при обычно ТЧ в 10-100 позиций?
47 acht
 
31.03.22
12:46
Это все происходит не в форме, а в модуле документа в ОбработкаЗаполнения.
48 Kassern
 
31.03.22
12:52
(47) я в общем спросил, есть ли большая разница в быстродействии запроса при двух вариантах помещения ТЧ. По поводу ТЧ у меня больше вопросов нет, просто раньше за правило взял выгружать в ТЗ перед помещением в запрос.
49 acht
 
31.03.22
12:56
(48) В контексте форме с TЗ будет быстрее и проще. Получение объекта - дорогая операция, она затащит все табличные части, всю шапку, скомпилирует модуль, выполнит секцию инициализации..
50 acht
 
31.03.22
12:58
А по выполнению запроса разницы нет. Оно достаточно умное - передает на сервер только колонкки, которые указаны в ВЫБРАТЬ и даже по-моему умеет в РАЗЛИЧНЫЕ и ПЕРВЫЕ
51 Kassern
 
31.03.22
13:09
(49) тоже так подумал, если форма перегружена
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.