Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Предельная длина запроса, когда уже черт ногу сломит?

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

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

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

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

    
    ТекстЗапросаВременныеТаблицы = СтрСоединить(ВременныеТаблицы, РазделительЗапросов);
    ТекстЗапросаРезультирующиеВыборки = СтрСоединить(РезультирующиеВыборки, РазделительЗапросов);
    
    ОписаниеТекстаЗапроса.Вставить("Текст", ТекстЗапросаВременныеТаблицы + РазделительЗапросов + ТекстЗапросаРезультирующиеВыборки);
    ОписаниеТекстаЗапроса.Вставить("КоличествоВременныхТаблиц", ВременныеТаблицы.Количество());
    
    Возврат ОписаниеТекстаЗапроса;
   DailyLookingOnASunse
 
13 - 04.09.16 - 16:53
(10)
Чего "ух", там по смыслу один элемент, можно было бы и Прервать в цикл добавить.
   Горогуля
 
14 - 04.09.16 - 16:54
(13) СхемаЗапроса.ПакетЗапросов[0].Операторы[0].Источники - это тут один элемент?
   Горогуля
 
15 - 04.09.16 - 16:55
(12) гы. это работает?
РазделительЗапросов = "
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////" + Символы.ПС;

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


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