Имя: Пароль:
1C
1С v8
Предельная длина запроса, когда уже черт ногу сломит?
0 karabas11
 
04.09.16
16:00
1. 5000 строк 100% (1)
2. 100 строк 0% (0)
3. 300 строк 0% (0)
4. 500 строк 0% (0)
5. 1000 строк 0% (0)
Всего мнений: 1

от какой длины запроса у вас волосы дыбом встают?
1 Джинн
 
04.09.16
16:02
Проблема не в длине, проблема в структуре.
2 mkalimulin
 
04.09.16
16:04
(0) Ты их читаешь что-ли?
3 Горогуля
 
04.09.16
16:05
мне двух строк хватит. семёрочного запроса
4 shuhard
 
04.09.16
16:07
(0) ты ещё зарплату себе по строчками потребуй

5000 строк
5 DDwe
 
04.09.16
16:21
5000 строк фигня...
6. Свой вариант
6 Pahomich
 
04.09.16
16:24
Краткость - сестра таланта
7 karabas11
 
04.09.16
16:38
(4) хорошая идея. как я не догадался.
8 Бородатый Админ
 
04.09.16
16:42
Если умные люди разбивают запрос на части и хотя бы где-то помечают, что и где они делали, то основная длина запроса не так уж и важна. А если в запросе однобуквенные переменные и непонятные условия, то и десять строк будет будут более чем достаточны.
9 DailyLookingOnA Sunse
 
04.09.16
16:44
Ну, длина. Программное формирование хуже.
А вот из типовой новые веяния:

    СхемаЗапроса = Новый СхемаЗапроса;
    СхемаЗапроса.УстановитьТекстЗапроса(Форма.Список.ТекстЗапроса);
    Источники = СхемаЗапроса.ПакетЗапросов[0].Операторы[0].Источники;
    Для Индекс = 0 По Источники.Количество() - 1 Цикл
        Если Источники[Индекс].Источник.ИмяТаблицы = "Справочник.ВнешниеПользователи" Тогда
            Источники.Удалить(Индекс);
        КонецЕсли;
    КонецЦикла;
    Форма.Список.ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
10 Горогуля
 
04.09.16
16:46
(9) ух ты! они удаляют элементы коллекции прямым обходом
11 Горогуля
 
04.09.16
16:47
(8) конструктор пожирает полезные комментарии
12 DailyLookingOnA Sunse
 
04.09.16
16:48
Вот еще красиво:

    ОписаниеТекстаЗапроса = Новый Структура("Текст, КоличествоВременныхТаблиц");
    
    ОбъединяемыеЗапросы = Новый Массив;
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_83_1_1());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_83_1_2_б());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_83_1_2_в());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_83_1_2_г());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_83_1_2_е());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_83_1_2_з());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_84_2());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_84_10());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_85_1_1());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_85_1_3());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_85_2_1());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел1_275_85_2_2());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел2_3729У_2_1());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел2_3729У_2_2());
    ОбъединяемыеЗапросы.Добавить(ТекстЗапросаРезультатКонтроля_Раздел2_3729У_2_3());
    
    СхемаЗапроса = Новый СхемаЗапроса;
    ВременныеТаблицы = Новый Массив;
    РезультирующиеВыборки = Новый Массив;
    УничтожениеОбщихВременныхТаблиц = Новый Массив;
    
    ШаблонПрефиксаТаблиц = "ЗапросКонтроля%1_";
    ИндексОбъединяемогоЗапроса = 0;
    Для Каждого ОбъединяемыйЗапрос Из ОбъединяемыеЗапросы Цикл
        ПрефиксТаблиц = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПрефиксаТаблиц, ИндексОбъединяемогоЗапроса);
        СхемаЗапроса.УстановитьТекстЗапроса(ОбъединяемыйЗапрос);
        
        ИменаВременныхТаблиц = Новый Соответствие;
        
        Для Каждого ПодзапросОбъединяемогоЗапроса Из СхемаЗапроса.ПакетЗапросов Цикл
            Если Не ПустаяСтрока(ПодзапросОбъединяемогоЗапроса.ТаблицаДляПомещения) Тогда // Временная таблица подзапроса
                УточнитьИменаВременныхТаблицВЗапросе(ПодзапросОбъединяемогоЗапроса, ИменаВременныхТаблиц, ПрефиксТаблиц);
                
                ИменаВременныхТаблиц.Вставить(ПодзапросОбъединяемогоЗапроса.ТаблицаДляПомещения, ПрефиксТаблиц + ПодзапросОбъединяемогоЗапроса.ТаблицаДляПомещения);
                ПодзапросОбъединяемогоЗапроса.ТаблицаДляПомещения = ИменаВременныхТаблиц[ПодзапросОбъединяемогоЗапроса.ТаблицаДляПомещения];
                ВременныеТаблицы.Добавить(ПодзапросОбъединяемогоЗапроса.ПолучитьТекстЗапроса());
            Иначе // Результирующая таблица подзапроса
                УточнитьИменаВременныхТаблицВЗапросе(ПодзапросОбъединяемогоЗапроса, ИменаВременныхТаблиц, ПрефиксТаблиц);
                
                РезультирующиеВыборки.Добавить(ПодзапросОбъединяемогоЗапроса.ПолучитьТекстЗапроса());
            КонецЕсли;
        КонецЦикла;
        
        ИндексОбъединяемогоЗапроса = ИндексОбъединяемогоЗапроса + 1;
    КонецЦикла;
    
    РазделительЗапросов = "
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////" + Символы.ПС;
    
    ТекстЗапросаВременныеТаблицы = СтрСоединить(ВременныеТаблицы, РазделительЗапросов);
    ТекстЗапросаРезультирующиеВыборки = СтрСоединить(РезультирующиеВыборки, РазделительЗапросов);
    
    ОписаниеТекстаЗапроса.Вставить("Текст", ТекстЗапросаВременныеТаблицы + РазделительЗапросов + ТекстЗапросаРезультирующиеВыборки);
    ОписаниеТекстаЗапроса.Вставить("КоличествоВременныхТаблиц", ВременныеТаблицы.Количество());
    
    Возврат ОписаниеТекстаЗапроса;
13 DailyLookingOnA Sunse
 
04.09.16
16:53
(10)
Чего "ух", там по смыслу один элемент, можно было бы и Прервать в цикл добавить.
14 Горогуля
 
04.09.16
16:54
(13) СхемаЗапроса.ПакетЗапросов[0].Операторы[0].Источники - это тут один элемент?
15 Горогуля
 
04.09.16
16:55
(12) гы. это работает?

РазделительЗапросов = "
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////" + Символы.ПС;

{ВнешняяОбработка.фирменнаяНакладная.Форма.Форма.Форма(3,6)}: Пропущен символ '"' (двойная кавычка)
    |<<?>> (Проверка: Сервер)
16 mkalimulin
 
04.09.16
17:34
(14) Элементов может быть много, но они не повторяются.
17 xReason
 
04.09.16
18:36
(16) ну сколько там элементов и как сильно упала производительность из-за отсутствие прервать?
А если это будет последний элемент, то что будет быстрее прервать или завершение цикла?
18 xReason
 
04.09.16
18:37
(10) А как надо?
19 romix
 
04.09.16
20:04
(11)  Кстати да, их же можно сохранять. Например, в начале и конце, для каждого пакета запросов. Думаю может в 1С написать запрос в поддержку...
20 romix
 
04.09.16
20:19
Сожно было бы также сохранять комментарии для уникальных строк запроса.
21 kumena
 
04.09.16
20:28
я писал запросы, которые в конструкторе семь тысяч строчек. могу сказать, что надо структурировать запросы, тогда в них сложно будет заблудиться.
22 Бородатый Админ
 
04.09.16
20:31
(19) Тогда лучше пусть вообще "жрут" комментарии вместе с текстом запроса и соотносят с полями.