Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Менеджер временных таблиц и конструктор запроса

Менеджер временных таблиц и конструктор запроса
Я
   tciban
 
15.10.20 - 14:34
Коллеги! Сделал менеджер временных таблиц, сделал запрос в конструкторе, описал в нем втшку сделал запрос. Второй раз не дает открыть в конструкторе! Говорит нет таких полей у вас! А я рассчитываю еще в 4 запросах использовать эту таблицу. Мне их как в конструкторе менять? Помогите тупому!!! Ну не может же быть, что бы все врукопашную!
   ДенисЧ
 
1 - 15.10.20 - 14:45
А ты как делал?
Запрос = Новый Запрос;
Запрос.МЕнеджерВременныхТаблиц = Новый менеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ Ссылка ПОМЕСТИТЬ Вт ИЗ Справочник.Номенклатура";
Запрос.Выполнить();
Запрос.Текст = "ВЫБРАТЬ Первые 1 Ссылка ИЗ вт УПОРЯДОЧИТЬ ПО Ссылка.Наименование";
Запрос.Выполнить();

По такой схеме? Тогда конструктор не увидит точно.
   tciban
 
2 - 15.10.20 - 14:48
да, по такой именно. Неужели никак? Ну все же сталкивались такой проблемой, неужели все так плохо?
   Mihasya
 
3 - 15.10.20 - 14:51
копи-пасте ))
   tciban
 
4 - 15.10.20 - 14:52
От жеж блин!
   tciban
 
5 - 15.10.20 - 14:54
Копипаста не канает. Суть дела - я получаю договоры с кучей условий в ГДЕ А потом из этой таблицы в разных запросах получаю всякое по разным ГДЕ, соединения делаю. Это обработка если что, не отчет. По разным кнопочкам разное делает
   ДенисЧ
 
6 - 15.10.20 - 14:54
(2) Почему плохо? Ты предлагаешь в конфигуратор встроить противоестественный интеллект?
А вдруг текст запроса на вт будет лежать во внешнем файле? Откуда конструктор узнает, что там взбредёт в голову, не выполняя запроса?
   tciban
 
7 - 15.10.20 - 14:57
(6) Ладно, ругать древние технологии 1С уже скучно. Просто конструктор запросов забывает описание временной таблицы. А мог бы где нибудь хранить Еж же всякие секции с фигурными скобками в запросах и т.п. Для этого ии не нужен
   ДенисЧ
 
8 - 15.10.20 - 15:00
(7) Исчо раз. В тексте пишу 
текстДокумент = Новый текстовыйДокумент;
текстДокумент.Прочитать(ПутьКФайлуКоторыйВвелПОльзователь);
Запрос.Текст = текстДокумент.ПолучитьТекст();
Запрос.Выполнить();

Что должен запомнить конструктор?
   Жан Пердежон
 
9 - 15.10.20 - 15:02
(0) Причем тут конструктор, если ты вт в другом запросе создаешь? Или ты не в курсе про пакетные запросы?
   mistеr
 
10 - 15.10.20 - 15:04
(0) Соедини 4 запроса в один пакетный запрос.
   fisher
 
11 - 15.10.20 - 15:05
(2) Все плохо. Поэтому все изо всех сил стараются не использовать менеджеры временных таблиц.
(5) И зачем тебе тут менеджеры временных таблиц? Или ты это в толстом клиенте делаешь и держишь соединение с БД всю дорогу работы с обработкой?
   tciban
 
12 - 15.10.20 - 15:07
(11) Ваще то да, в толстом клиенте :)
Запомоился, в обычных формах работаю.

Хотел ускорить работу обработки. просто то одно надо прорисовать в табличке, то другое. Но все на основе заранее отобранных договоров.
   tciban
 
13 - 15.10.20 - 15:11
Кстати, все не так плохо. Открыть не дает только там где группировка и агрегатные функции. Если просто отбор по ГДЕ - все работает в конструкторе
   fisher
 
14 - 15.10.20 - 15:15
(12) Ну, такое... Лучше вытаскивай отобранные договора на клиента и передавай их в каждый запрос вместо того, чтобы держать их во временной таблице и удерживать все это время соединение с БД.
Не миллионы же их там у тебя. Если реально очень много, то проще дублировать их отбор в каждом запросе. Да, некрасиво и накладные расходы. Но удержание временной таблицы на сервере - тоже такой себе костыль.
Исторически менеджеры временных таблиц появились до того, как появились пакетные запросы. Как только появились - использование менеджеров минимизировалось.
   tciban
 
15 - 15.10.20 - 15:23
(14) отобранных договоров порядка 17 с половиной тыс. Получение их запросом - порядка 1200 мс в среднем. Повторять в каждом запросе - ну так себе. Была идея держать в ТЗ и грузить ее в каждый запрос в втшку, но интересно насколько это дольше использования менеджера временных таблиц?
   Вафель
 
16 - 15.10.20 - 16:19
если хочешь через точку, то нужно выразить делать
   fisher
 
17 - 15.10.20 - 16:30
(15) Неприятная ситуация. По возможности - избегайте этого :)
   mistеr
 
18 - 15.10.20 - 16:44
(14) Я так и не понял, какие аргументы за то, чтобы таскать одни и те же данные с клиента на сервер и обратно много раз. Сплошные минусы.
   fisher
 
19 - 15.10.20 - 17:05
(18) А держать временную таблицу на сервере БД пока открыта форма - сплошные плюсы?
   tciban
 
20 - 16.10.20 - 07:49
(18) (19) Видимо лучшим выходом будет получить один раз и держать в памяти массив
   vi0
 
21 - 16.10.20 - 08:01
(0)
вместо "ВЫБРАТЬ Первые 1 Ссылка ИЗ вт"
делай "ВЫБРАТЬ Первые 1 вт.Ссылка ИЗ вт"
   TormozIT
 
22 - 23.10.20 - 22:53
Я в своей толстой консоли запросов убрал бесконечное удержание менеджера https://www.hostedredmine.com/issues/887410 . Внутри есть ссылка на предысторию (одну из). В итоге больше часа держать менеджер временных таблиц на продуктивном сервере по факту - плохо. Однако вразумительного объяснения этому даже разработчики платформы не дали, хотя рассказали, что делали тесты на эту тему и они подтверждают это мнение.
   Ёпрст
 
23 - 23.10.20 - 23:09
(0)
втыкаешь типа того в каждый текст запроса

|ВЫБРАТЬ
|    ЗНАЧЕНИЕ(Справочник.Вася.ПустаяССылка) КАК Вася,
|    ЗНАЧЕНИЕ(Справочник.Федя.ПустаяССылка) КАК Федя,
|       0 Как Матрёна,
|       """" как Маша
|Поместить ТвояТабличка
|; 

далее твой текст запроса. Усё, в конструкторе творишь, че надо, потом, через ТекстЗапроса=Сред(ТекстЗапроса,Стрнайти(ТекстЗапроса,";")+1);
имеешь свой текст..
Поля задаешь какие были в твоей таблике в менеджере.
   Ёпрст
 
24 - 23.10.20 - 23:09
с нужными типами
   МимохожийОднако
 
25 - 24.10.20 - 07:56
Табличная часть в обработке не поможет?
   ILM
 
26 - 24.10.20 - 11:36
А разве экспортную переменную объявить МВТ в обработке это плохо?

Текст модуля :
Перем МВТ Экспорт;
Перем ПервыйРаз Экспорт;


Процедура ЗаполнитьСписокДоговоров();

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

Функция2();
Функция3();
Функция4();
Процедуры1();
Процедуры2();
Процедуры3();

МВТ = новый МенеджерВременныхТаблиц;
ПервыйРаз = Истина;

ЗаполнитьСписокДоговоров();

==========

А потом везде используешь переменную МВТ и обращаешься в запросах к своей таблице ВТ, ну или как советуют сделай пакет запросов.
   Конструктор1С
 
27 - 25.10.20 - 04:41
(26) это плохо. МВТ может жить долго и бесконтрольно
   Конструктор1С
 
28 - 25.10.20 - 04:43
(0) наверно пытаешься через точку обращаться к полям полей ВТ?
   TormozIT
 
29 - 25.10.20 - 06:44
(26) На всякий случай если в (22) не увидел ссылку, дам прямую http://devtool1c.ucoz.ru/forum/2-1071-1
   Провинциальный 1сник
 
30 - 25.10.20 - 08:02
(22) "больше часа держать менеджер временных таблиц на продуктивном сервере по факту - плохо"
Почему? МВТ это всего лишь некий список-перечень временных таблиц, созданных на sql-сервере, и деструктор, который при вызове удаляет временные таблицы с сервера. Кому мешают лишние временные таблицы? Место в tempdb занимают разве что - так это мелочь..
 
 Рекламное место пустует
   Надо работать
 
31 - 25.10.20 - 08:41
(30) ничего себе мелочь. На больших базах уложить темпдб неоптимальными запросами - плевое дело
   Надо работать
 
32 - 25.10.20 - 08:43
(22) круто, давно ждали эту фишку
   Провинциальный 1сник
 
33 - 25.10.20 - 08:44
(31) Так речь не об неоптимальных запросах, а о простаивающих временных таблицах, не влияющих на производительность
   TormozIT
 
34 - 25.10.20 - 10:06
(30) Я же написал в (22) что сама 1С не может вразумительно объяснить это явление, но есть много свидетельств, что деградация происходит и на опытах самой 1С также воспроизводилась. Точные условия не обозначаются. https://partners.v8.1c.ru/forum/topic/1423290#m_1423290
   Конструктор1С
 
35 - 25.10.20 - 10:41
(33) temoDB не резиновая. Часто под неё выделяют отдельный шустрый SSD, объем которого относительно небольшой
   Конструктор1С
 
36 - 25.10.20 - 10:45
если тебе нужно долго удерживать временную таблицу, это попахивает кривой архитектурой. К тому за время существования ВТ исходные данные могут на сто раз стать невалидными. Идеальная ВТ, как и идеальная блокировка, должна жить как можно меньше
   Провинциальный 1сник
 
37 - 25.10.20 - 18:32
(34) Помню, в sql2000 был документированный баг с временными таблицами, когда они физически не удалялись, а лишь помечались как неактивные в контексте сессии, в результате каждое следующее создание временной таблицы было всё более тормозным. В 1с7 это было критично настолько, что даже специальный костыль придумали в 1с++ для обхода бага, чтобы периодически делался реконнект к серверу для очистки контекста временных таблиц. Но в более новых sql вроде бы этого бага нет..


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.