|   |   | 
| 
 | Менеджер временных таблиц и конструктор запроса | ☑ | ||
|---|---|---|---|---|
| 0
    
        tciban 15.10.20✎ 14:34 | 
        Коллеги! Сделал менеджер временных таблиц, сделал запрос в конструкторе, описал в нем втшку сделал запрос. Второй раз не дает открыть в конструкторе! Говорит нет таких полей у вас! А я рассчитываю еще в 4 запросах использовать эту таблицу. Мне их как в конструкторе менять? Помогите тупому!!! Ну не может же быть, что бы все врукопашную!     | |||
| 1
    
        ДенисЧ 15.10.20✎ 14:45 | 
        А ты как делал?
 Запрос = Новый Запрос; Запрос.МЕнеджерВременныхТаблиц = Новый менеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ Ссылка ПОМЕСТИТЬ Вт ИЗ Справочник.Номенклатура"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ Первые 1 Ссылка ИЗ вт УПОРЯДОЧИТЬ ПО Ссылка.Наименование"; Запрос.Выполнить(); По такой схеме? Тогда конструктор не увидит точно. | |||
| 2
    
        tciban 15.10.20✎ 14:48 | 
        да, по такой именно. Неужели никак? Ну все же сталкивались такой проблемой, неужели все так плохо?     | |||
| 3
    
        Mihasya 15.10.20✎ 14:51 | 
        копи-пасте ))     | |||
| 4
    
        tciban 15.10.20✎ 14:52 | 
        От жеж блин!     | |||
| 5
    
        tciban 15.10.20✎ 14:54 | 
        Копипаста не канает. Суть дела - я получаю договоры с кучей условий в ГДЕ А потом из этой таблицы в разных запросах получаю всякое по разным ГДЕ, соединения делаю. Это обработка если что, не отчет. По разным кнопочкам разное делает     | |||
| 6
    
        ДенисЧ 15.10.20✎ 14:54 | 
        (2) Почему плохо? Ты предлагаешь в конфигуратор встроить противоестественный интеллект? 
 А вдруг текст запроса на вт будет лежать во внешнем файле? Откуда конструктор узнает, что там взбредёт в голову, не выполняя запроса? | |||
| 7
    
        tciban 15.10.20✎ 14:57 | 
        (6) Ладно, ругать древние технологии 1С уже скучно. Просто конструктор запросов забывает описание временной таблицы. А мог бы где нибудь хранить Еж же всякие секции с фигурными скобками в запросах и т.п. Для этого ии не нужен     | |||
| 8
    
        ДенисЧ 15.10.20✎ 15:00 | 
        (7) Исчо раз. В тексте пишу 
 текстДокумент = Новый текстовыйДокумент; текстДокумент.Прочитать(ПутьКФайлуКоторыйВвелПОльзователь); Запрос.Текст = текстДокумент.ПолучитьТекст(); Запрос.Выполнить(); Что должен запомнить конструктор? | |||
| 9
    
        Жан Пердежон 15.10.20✎ 15:02 | 
        (0) Причем тут конструктор, если ты вт в другом запросе создаешь? Или ты не в курсе про пакетные запросы?     | |||
| 10
    
        mistеr 15.10.20✎ 15:04 | 
        (0) Соедини 4 запроса в один пакетный запрос.     | |||
| 11
    
        fisher 15.10.20✎ 15:05 | 
        (2) Все плохо. Поэтому все изо всех сил стараются не использовать менеджеры временных таблиц.
 (5) И зачем тебе тут менеджеры временных таблиц? Или ты это в толстом клиенте делаешь и держишь соединение с БД всю дорогу работы с обработкой? | |||
| 12
    
        tciban 15.10.20✎ 15:07 | 
        (11) Ваще то да, в толстом клиенте :)
 Запомоился, в обычных формах работаю. Хотел ускорить работу обработки. просто то одно надо прорисовать в табличке, то другое. Но все на основе заранее отобранных договоров. | |||
| 13
    
        tciban 15.10.20✎ 15:11 | 
        Кстати, все не так плохо. Открыть не дает только там где группировка и агрегатные функции. Если просто отбор по ГДЕ - все работает в конструкторе     | |||
| 14
    
        fisher 15.10.20✎ 15:15 | 
        (12) Ну, такое... Лучше вытаскивай отобранные договора на клиента и передавай их в каждый запрос вместо того, чтобы держать их во временной таблице и удерживать все это время соединение с БД.
 Не миллионы же их там у тебя. Если реально очень много, то проще дублировать их отбор в каждом запросе. Да, некрасиво и накладные расходы. Но удержание временной таблицы на сервере - тоже такой себе костыль. Исторически менеджеры временных таблиц появились до того, как появились пакетные запросы. Как только появились - использование менеджеров минимизировалось. | |||
| 15
    
        tciban 15.10.20✎ 15:23 | 
        (14) отобранных договоров порядка 17 с половиной тыс. Получение их запросом - порядка 1200 мс в среднем. Повторять в каждом запросе - ну так себе. Была идея держать в ТЗ и грузить ее в каждый запрос в втшку, но интересно насколько это дольше использования менеджера временных таблиц?     | |||
| 16
    
        Вафель 15.10.20✎ 16:19 | 
        если хочешь через точку, то нужно выразить делать     | |||
| 17
    
        fisher 15.10.20✎ 16:30 | 
        (15) Неприятная ситуация. По возможности - избегайте этого :)     | |||
| 18
    
        mistеr 15.10.20✎ 16:44 | 
        (14) Я так и не понял, какие аргументы за то, чтобы таскать одни и те же данные с клиента на сервер и обратно много раз. Сплошные минусы.     | |||
| 19
    
        fisher 15.10.20✎ 17:05 | 
        (18) А держать временную таблицу на сервере БД пока открыта форма - сплошные плюсы?     | |||
| 20
    
        tciban 16.10.20✎ 07:49 | 
        (18) (19) Видимо лучшим выходом будет получить один раз и держать в памяти массив     | |||
| 21
    
        vi0 16.10.20✎ 08:01 | 
        (0) 
 вместо "ВЫБРАТЬ Первые 1 Ссылка ИЗ вт" делай "ВЫБРАТЬ Первые 1 вт.Ссылка ИЗ вт" | |||
| 22
    
        TormozIT гуру 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 | 
        Табличная часть в обработке не поможет?     | |||
| 26
    
        ILM гуру 24.10.20✎ 11:36 | 
        А разве экспортную переменную объявить МВТ в обработке это плохо?
 Текст модуля : Перем МВТ Экспорт; Перем ПервыйРаз Экспорт; Процедура ЗаполнитьСписокДоговоров(); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МВТ; Запрос.Текст = "ВЫБРАТЬ Ссылка ПОМЕСТИТЬ Вт ИЗ Справочник.Номенклатура"; Запрос.Выполнить(); КонецПроцедуры; Функция2(); Функция3(); Функция4(); Процедуры1(); Процедуры2(); Процедуры3(); МВТ = новый МенеджерВременныхТаблиц; ПервыйРаз = Истина; ЗаполнитьСписокДоговоров(); ========== А потом везде используешь переменную МВТ и обращаешься в запросах к своей таблице ВТ, ну или как советуют сделай пакет запросов. | |||
| 27
    
        Конструктор1С 25.10.20✎ 04:41 | 
        (26) это плохо. МВТ может жить долго и бесконтрольно     | |||
| 28
    
        Конструктор1С 25.10.20✎ 04:43 | 
        (0) наверно пытаешься через точку обращаться к полям полей ВТ?     | |||
| 29
    
        TormozIT гуру 25.10.20✎ 06:44 | 
        (26) На всякий случай если в (22) не увидел ссылку, дам прямую http://devtool1c.ucoz.ru/forum/2-1071-1     | |||
| 30
    
        Провинциальный 1сник 25.10.20✎ 08:02 | 
        (22) "больше часа держать менеджер временных таблиц на продуктивном сервере по факту - плохо"
 Почему? МВТ это всего лишь некий список-перечень временных таблиц, созданных на sql-сервере, и деструктор, который при вызове удаляет временные таблицы с сервера. Кому мешают лишние временные таблицы? Место в tempdb занимают разве что - так это мелочь.. | |||
| 31
    
        Надо работать 25.10.20✎ 08:41 | 
        (30) ничего себе мелочь. На больших базах уложить темпдб неоптимальными запросами - плевое дело     | |||
| 32
    
        Надо работать 25.10.20✎ 08:43 | 
        (22) круто, давно ждали эту фишку     | |||
| 33
    
        Провинциальный 1сник 25.10.20✎ 08:44 | 
        (31) Так речь не об неоптимальных запросах, а о простаивающих временных таблицах, не влияющих на производительность     | |||
| 34
    
        TormozIT гуру 25.10.20✎ 10:06 | 
        (30) Я же написал в (22) что сама 1С не может вразумительно объяснить это явление, но есть много свидетельств, что деградация происходит и на опытах самой 1С также воспроизводилась. Точные условия не обозначаются. https://partners.v8.1c.ru/forum/topic/1423290#m_1423290     | |||
| 35
    
        Конструктор1С 25.10.20✎ 10:41 | 
        (33) temoDB не резиновая. Часто под неё выделяют отдельный шустрый SSD, объем которого относительно небольшой     | |||
| 36
    
        Конструктор1С 25.10.20✎ 10:45 | 
        если тебе нужно долго удерживать временную таблицу, это попахивает кривой архитектурой. К тому за время существования ВТ исходные данные могут на сто раз стать невалидными. Идеальная ВТ, как и идеальная блокировка, должна жить как можно меньше     | |||
| 37
    
        Провинциальный 1сник 25.10.20✎ 18:32 | 
        (34) Помню, в sql2000 был документированный баг с временными таблицами, когда они физически не удалялись, а лишь помечались как неактивные в контексте сессии, в результате каждое следующее создание временной таблицы было всё более тормозным. В 1с7 это было критично настолько, что даже специальный костыль придумали в 1с++ для обхода бага, чтобы периодически делался реконнект к серверу для очистки контекста временных таблиц. Но в более новых sql вроде бы этого бага нет..     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |