|
ТЧ документа загрузить в запрос , 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) тоже так подумал, если форма перегружена
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |