|   |   | 
| 
 | Оптимизация типового запроса ут 10 | ☑ | ||
|---|---|---|---|---|
| 0
    
        aptomilov 16.05.21✎ 06:39 | 
        Уже пришлось перейти на новый сервак  
 сервер 1С и сервер скуль разделены на ssd дисках запрос выполняется почти минуту. Строчек в документе 700. Документ Отчет о розничных продажах. Магазинов 20 шт и когда заканчивается рабочий день начинается коллапс. На старом серваке этот же запрос выполнялся по 5 минут. Запрос типовой. Вопрос как можно соптимизировать сие чудо а может есть какие другие решения данного вопроса. ///////////////////////////////////// ВЫБРАТЬ СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента, ПартииТоваровНаСкладах.Номенклатура, ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования, ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата, ПартииТоваровНаСкладах.Склад, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, ПартииТоваровНаСкладах.СерияНоменклатуры, ПартииТоваровНаСкладах.Качество, ПартииТоваровНаСкладах.Заказ, ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество, ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость, ПартииТоваровНаСкладах.СтатусПартии, ВЫБОР КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ЧислоСерияНоменклатуры, ВЫБОР КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КОНЕЦ КАК ЧислоДокументОприходования, ВЫБОР КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК ЧислоЗаказ, ВЫБОР КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ЧислоСтатусПартии ИЗ РегистрСведений.СписанныеТовары КАК СписанныеТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки( &Дат, Номенклатура В (ВЫБРАТЬ РегистрСведений.СписанныеТовары.Номенклатура ИЗ РегистрСведений.СписанныеТовары ГДЕ РегистрСведений.СписанныеТовары.Регистратор = &Ссылка) И (Склад В (ВЫБРАТЬ РегистрСведений.СписанныеТовары.Склад ИЗ РегистрСведений.СписанныеТовары ГДЕ РегистрСведений.СписанныеТовары.Регистратор = &Ссылка) ИЛИ Склад = &ПустойСклад)) КАК ПартииТоваровНаСкладах ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры И (ВЫБОР КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА СписанныеТовары.Качество = &ПустоеКачество ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество КОНЕЦ КОНЕЦ) И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад) И (ВЫБОР КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1 ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2 ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3 ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4 ИНАЧЕ ИСТИНА КОНЕЦ) И (ВЫБОР КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА ТОГДА ВЫБОР КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии ТОГДА ВЫБОР КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО) ТОГДА ЛОЖЬ ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ КОНЕЦ ИНАЧЕ ИСТИНА КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ ИНАЧЕ ИСТИНА КОНЕЦ КОНЕЦ) И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры ИЛИ СписанныеТовары.КодОперацииПартииТоваров = &КодРезервирование) ГДЕ СписанныеТовары.Регистратор = &ОсновнойДокумент УПОРЯДОЧИТЬ ПО ЧислоСерияНоменклатуры, ЧислоДокументОприходования, ЧислоЗаказ, ЧислоСтатусПартии, ДокументОприходованияДата, ДокументОприходования ИТОГИ ПО НомерСтрокиДокумента | |||
| 1
    
        ДенисЧ 16.05.21✎ 06:50 | 
        Для начала выдерни все внутренние запросы в временные таблицы (опционально проиндексируй).
 А потом смотри план запроса. | |||
| 2
    
        ASV 16.05.21✎ 12:16 | 
        ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата,
 убрать | |||
| 3
    
        ASV 16.05.21✎ 12:20 | 
        добавить ВЫРАЗИТЬ
 ВЫРАЗИТЬ(СписанныеТовары.Регистратор КАК Документ.ОтчетОККК) = &ОсновнойДокумент ВЫРАЗИТЬ(РегистрСведений.СписанныеТовары.Регистратор КАК Документ.ОтчетОККК) = &Ссылка | |||
| 4
    
        RomanYS 16.05.21✎ 12:21 | 
        Запрос конечно можно пооптимизировать... но в данной ситуации имхо нужно думать о переносе списания партий в оффлайн-режим. Возможно даже в УТ10 есть что-то типовое     | |||
| 5
    
        RomanYS 16.05.21✎ 12:32 | 
        (3) Это должно что-то ускорить? Сомневаюсь     | |||
| 6
    
        Timon1405 16.05.21✎ 12:32 | 
        (3) выражать нужно получение реквизитов от составной ссылки. сама ссылка суть строка из 36 символов, не нужно её никуда выражать.
 вот (2) - потенциальный источник проблем. лечится архитектурно: заведение отдельного регистра с реквизитами документов и соединением с ним. посмотреть реализацию можно в УТ11. | |||
| 7
    
        hhhh 16.05.21✎ 12:45 | 
        еще советуют ИЛИ убрать и заменить на объединение запросов. Вот это вообще какая-то фигня
 И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад) И (ВЫБОР КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1 ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2 ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3 ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4 ИНАЧЕ ИСТИНА КОНЕЦ) | |||
| 8
    
        braynt 16.05.21✎ 15:59 | 
        Запрос.Текст =
 "ВЫБРАТЬ * |ПОМЕСТИТЬ СписанныеТовары |ИЗ | РегистрСведений.СписанныеТовары КАК СписанныеТовары |ГДЕ | СписанныеТовары.Регистратор = &ОсновнойДокумент | |ИНДЕКСИРОВАТЬ ПО |Склад, |Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента, | ПартииТоваровНаСкладах.Номенклатура, | ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования, | ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата, | ПартииТоваровНаСкладах.Склад, | ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, | ПартииТоваровНаСкладах.СерияНоменклатуры, | ПартииТоваровНаСкладах.Качество, | ПартииТоваровНаСкладах.Заказ, | ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество, | ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость, | ПартииТоваровНаСкладах.СтатусПартии, | ВЫБОР | КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры | ТОГДА 0 | ИНАЧЕ 1 | КОНЕЦ КАК ЧислоСерияНоменклатуры, | ВЫБОР | КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО | ТОГДА 0 | ИНАЧЕ ВЫБОР | КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования | ТОГДА 0 | ИНАЧЕ 1 | КОНЕЦ | КОНЕЦ КАК ЧислоДокументОприходования, | ВЫБОР | КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО | ТОГДА 0 | ИНАЧЕ ВЫБОР | КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ КАК ЧислоЗаказ, | ВЫБОР | КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ КАК ЧислоСтатусПартии |ИЗ | СписанныеТовары КАК СписанныеТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки( | &Дат, | Номенклатура В | (ВЫБРАТЬ | СписанныеТовары.Номенклатура | ИЗ | СписанныеТовары | ГДЕ | СписанныеТовары.Регистратор = &Ссылка)" + ?(ВестиПартионныйУчетПоСкладам, " | И (Склад В | (ВЫБРАТЬ | СписанныеТовары.Склад | ИЗ | СписанныеТовары | ГДЕ | СписанныеТовары.Регистратор = &Ссылка) ИЛИ Склад = &ПустойСклад)", "") + ") КАК ПартииТоваровНаСкладах | ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура | И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры | И (ВЫБОР | КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество | ТОГДА ИСТИНА | ИНАЧЕ ВЫБОР | КОГДА СписанныеТовары.Качество = &ПустоеКачество | ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый | ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество | КОНЕЦ | КОНЕЦ) | " + ?(ВестиПартионныйУчетПоСкладам, "И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)", "") + " | И (ВЫБОР | КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус | ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус | ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус | ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус | ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус | ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру | ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1 | ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2 | ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3 | ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4 | ИНАЧЕ ИСТИНА | КОНЕЦ) | | И (ВЫБОР | КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА | ТОГДА ВЫБОР | КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии | ТОГДА ВЫБОР | КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО) | ТОГДА ЛОЖЬ | ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ | КОНЕЦ | ИНАЧЕ ИСТИНА | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии | ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ | ИНАЧЕ ИСТИНА | КОНЕЦ | КОНЕЦ) | И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры | ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры) |ГДЕ | СписанныеТовары.Регистратор = &ОсновнойДокумент | |УПОРЯДОЧИТЬ ПО | ЧислоСерияНоменклатуры, | ЧислоДокументОприходования, | ЧислоЗаказ, | ЧислоСтатусПартии" + ?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобственные, " Убыв", "") + ", | ДокументОприходованияДата" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ", | ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + " |ИТОГИ ПО | НомерСтрокиДокумента"; | |||
| 9
    
        ndrv 16.05.21✎ 19:54 | 
        (0), (8)
 "ВЫБРАТЬ * |ПОМЕСТИТЬ СписанныеТовары |ИЗ | РегистрСведений.СписанныеТовары КАК СписанныеТовары |ГДЕ | СписанныеТовары.Регистратор = &ОсновнойДокумент | |ИНДЕКСИРОВАТЬ ПО |Склад, |Номенклатура |; | //////////////////////////////////////////////////////////////////////////////// --- |ИЗ | СписанныеТовары КАК СписанныеТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки( | &Дат, | (Номенклатура, Склад) В (Выбрать Номенклатура, Склад ИЗ СписанныеТовары) | |||
| 11
    
        RomanYS 16.05.21✎ 19:58 | 
        (9) нельзя, склад пустой может быть     | |||
| 12
    
        rsv 16.05.21✎ 20:24 | 
        (0) в условиях джойна куча кейсов ( выбор когда)     | |||
| 13
    
        Ivan_495 naïve 16.05.21✎ 20:26 | 
        а где блокировки на уровне записей?     | |||
| 14
    
        Ivan_495 naïve 16.05.21✎ 20:50 | 
        что за бред
 ИЗ РегистрСведений.СписанныеТовары КАК СписанныеТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки( &Дат, Номенклатура В (ВЫБРАТЬ РегистрСведений.СписанныеТовары.Номенклатура ИЗ РегистрСведений здесь циклит | |||
| 15
    
        RomanYS 16.05.21✎ 21:41 | 
        (14) Это не бред. Использовать отборы в параметрах ВТ - почти обязательное правило. Конкретно без этого точно будет хуже, если конечно они каждый день весь ассортимент не продают.     | |||
| 16
    
        Ivan_495 naïve 16.05.21✎ 21:55 | 
        ну хотя бы в вт сначала отобранную номенклатуру положить , а вообще профайле смотреть надо.     | |||
| 17
    
        RomanYS 16.05.21✎ 22:10 | 
        (16) Ну это уже много раз выше предложили. Другой вопрос насколько эффективно, движения с отбором по регистратору по идее и так должны быстро читаться. Не факт что создать ВТ и читать из неё будет прямо заметно быстрее, но выглядит логично. Основные тормоза в соединении. И не факт что запрос удастся ускорить на порядок, а ускорение в 2-3 раза всех проблем не решит, поэтому выход в (4)     | |||
| 18
    
        xXeNoNx 16.05.21✎ 22:14 | 
        (15) А использование подзапросов в запросе прямо идеально, так?     | |||
| 19
    
        Ivan_495 naïve 16.05.21✎ 22:14 | 
        если в join ах действительно много отборов, убирать отборы и смотреть скорость     | |||
| 20
    
        xXeNoNx 16.05.21✎ 22:16 | 
        (17) ну ну..., соединение с подзапрсом будет идеально читаться, а про ошибки оптимизатора при соединении с подзапросом слыхали?     | |||
| 21
    
        xXeNoNx 16.05.21✎ 22:17 | 
        (15) >> Конкретно без этого точно будет хуже - ой не факт     | |||
| 22
    
        Ivan_495 naïve 16.05.21✎ 22:18 | 
        узнать как работает оптимизатор 1с можно только в профайлере     | |||
| 23
    
        Ivan_495 naïve 16.05.21✎ 22:19 | 
        либо упрощая запросик     | |||
| 24
    
        xXeNoNx 16.05.21✎ 22:21 | 
        (22) в чем мысль?     | |||
| 25
    
        Ivan_495 naïve 16.05.21✎ 22:22 | 
        пусть (0) профайлер покажет     | |||
| 26
    
        Ivan_495 naïve 16.05.21✎ 22:24 | 
        и фигню про которую (7) пишет убрать     | |||
| 27
    
        RomanYS 16.05.21✎ 22:29 | 
        (18) 1. "Прочитать" таблицу остатков целиком в среднем явно большее зло. 
 2. Использование временной таблицы от подзапроса к ней вроде не освобождает. Мне как бы чтение много раз из базы тоже не нравится на подсознательном уровне, но в данном случае сомневаюсь что это решит проблему. (20) где здесь соединение с подзапросом? | |||
| 28
    
        RomanYS 16.05.21✎ 22:33 | 
        (21) В среднем будет хуже, если у тебя остатков по десятку тысяч позиций, а в накладной десяток позиций - точно будет медленнее без отбора. В данном конкретном случае может и не быть медленнее, если в этой рознице за день в  среднем продается 50-100% ассортимента     | |||
| 29
    
        Ivan_495 naïve 16.05.21✎ 22:33 | 
        нужно сделать запрос , как в (9) потом сохранить его в вт и уже с этой маленкой вт играться с отборами, тогда все будет летать     | |||
| 30
    
        xXeNoNx 16.05.21✎ 22:34 | 
        (27) Соединение с виртуальной таблицей посмотри как разворачивается + твои отборы этой виртуальной таблицей
 1. Никто не говорит что читать нужно всю таблицу остатков 2. Использование временной таблицы освобождает от соединения с подзапросом, подзапросом...., | |||
| 31
    
        xXeNoNx 16.05.21✎ 22:38 | 
        (28) -> (30) Соединение с виртуальной таблицей остатков(считай с подзапросом) отбор обязательно нужен. но никак не в соединении     | |||
| 32
    
        Ivan_495 naïve 16.05.21✎ 22:44 | 
        запрос ТС может обрабатывать миллиарды строк, после отбора по номенклатуре и помещения этого отбора в вт , мы уже работаем с таблицей в 700 строк ))     | |||
| 33
    
        xXeNoNx 16.05.21✎ 22:53 | 
        (32) врятли
 ГДЕ СписанныеТовары.Регистратор = &ОсновнойДокумент | |||
| 34
    
        RomanYS 16.05.21✎ 22:58 | 
        (32) вроде для этого и нужен отбор в параметрах виртуальной таблицы. 
 (31) о, хоть понятно стало про какие подзапросы идёт речь. Именно что не в соединении а параметрах. Ладно, что-то я запутался что вы предлагаете. Против (8) я не возражаю, сам бы так сделал. Но на порядок это не ускорит (33) кстати по идее это условие как раз правильнее в соединение засунуть, хотя оптимизатор наверняка это сам разруливает | |||
| 35
    
        Cthulhu 16.05.21✎ 23:15 | 
        https://its.1c.ru/db/metod8dev#content:5842:hdoc
 (не один пункт причем) | |||
| 36
    
        xXeNoNx 16.05.21✎ 23:19 | 
        (34) Вынос запроса к вирт таблице остатков в подзапрос, вычисление полей соединений заранее, не в параметрах соединения     | |||
| 37
    
        xXeNoNx 16.05.21✎ 23:23 | 
        (36) подзапрос = ВТ     | |||
| 38
    
        RomanYS 16.05.21✎ 23:41 | 
        (36) я только "за", только не очень очевидно что им как вычислить заранее.
 Кстати в статье от 2013 года утверждается, что (8) даёт ускорение почти на порядок https://infostart.ru/1c/articles/191732/ | |||
| 39
    
        RomanYS 16.05.21✎ 23:59 | 
        (36) В актуальной УПП кстати как раз остатки собираются в ВрТ без какого-либо вычисления полей, дальнейшее соединение - чисто как в (0). И (8) там тоже нет.     | |||
| 40
    
        aptomilov 17.05.21✎ 07:54 | 
        По (4) да там есть в уч политике  проводить партии сразу или потом, если потом то проведение партий не исполнятся и запрос тоже.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |