Версия для печати темы (https://pro1c.org.ua/index.php?s=9e18f726d403f55943ed0dc46ca13ee0&showtopic=6192)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Запрос к подчиненному справочнику.

Автор: Flexy 30.01.12, 16:20

Всем привет. 1С .7.7 Торговля.
Есть Справочник Контрагенты и есть подчиненный ему справочник КатегорииКонтрагентов с реквизитом "категория" (тип: СправочникКатегории).
Выбрать запросом Контрагентов, которые являются Владельцами этих категорий я могу.
Реально ли Запросом отобрать Контрагентов которые не являются Владельцами?Т.е. у которых вообще нет катгорий?
Я в 8-ке это сделал за 5 минут.В 7-ке над этой задачей сижу уже 3 день.

Заранее Спасибо.

Автор: Стрелок 30.01.12, 16:38

Цитата(Flexy @ 30.01.12, 17:20) *
Всем привет. 1С .7.7 Торговля.
Есть Справочник Контрагенты и есть подчиненный ему справочник КатегорииКонтрагентов с реквизитом "категория" (тип: СправочникКатегории).
Выбрать запросом Контрагентов, которые являются Владельцами этих категорий я могу.
Реально ли Запросом отобрать Контрагентов которые не являются Владельцами?Т.е. у которых вообще нет катгорий?
Я в 8-ке это сделал за 5 минут.В 7-ке над этой задачей сижу уже 3 день.

Заранее Спасибо.



Вопрос - зачем запросом? Можно и выборкой (иногда в разы быстрее получается). думаю и просто запросом можно. надо пробовать но я бы копал в сторону типа такого

Контрагент=Справочник.Контрагенты.ТекущийЭлемент, Справочник.КатегорииКонтрагентов.Владелец;

Автор: Flexy 30.01.12, 16:42

Цитата(Стрелок @ 30.01.12, 16:38) http://pro1c.org.ua/index.php?act=findpost&pid=42769
Контрагент=Справочник.Контрагенты.ТекущийЭлемент, Справочник.КатегорииКонтрагентов.Владелец;

Так тоже пробовал.Выводит всех Контров.

Автор: Voha74 30.01.12, 17:30

А попробовать в запросе выбрать Контрагент=Справочник.Контрагенты.ТекущийЭлемент и поставить условие только те у которых пустоезначение(КатегорииКонтрагентов).. может так,,?

Автор: 5_kopeek 30.01.12, 17:33

Если сходу, то можно так:

//*******************************************
Функция КвоКатегорий(ТекКонтрагент)
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ПроверкаКатегорий)
    |КатегорииКонтрагентов = Справочник.КатегорииКонтрагентов.ТекущийЭлемент;
    |Владелец = Справочник.КатегорииКонтрагентов.Владелец;
    |Группировка КатегорииКонтрагентов;
    |Условие(Владелец = ТекКонтрагент);
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат -1;
    КонецЕсли;

    Если Запрос.Группировка(1) = 0 Тогда  
        Возврат 0;
    КонецЕсли;
    Возврат 1;
КонецФункции

//*******************************************
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Контрагент = Справочник.Контрагенты.ТекущийЭлемент;
    |Группировка Контрагент Без групп;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");
    Пока Запрос.Группировка(1) = 1 Цикл
        Если КвоКатегорий(Запрос.Контрагент)=0 Тогда
            Таб.ВывестиСекцию("Контрагенты");
        КонецЕсли; // КвоКатегорий(Запрос.Контрагент)=0
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры


Но будет ли быстрее?..

Автор: Flexy 30.01.12, 17:42

Цитата(5_kopeek @ 30.01.12, 17:33) *
Если сходу, то можно так:

Но будет ли быстрее?..

Спасибо.
Обязательно попробую этот способ.Но Имхаеться мне, что он не оптимален.
Но все равно мне очень интересно, реально ли получить нужные мне данные с помощью одного только запроса, Без написания доп. функций и тупого перебора.
Либо в 7-ке язык запросов не позволяет выполнить столь не сложную задачу? smile.gif

Автор: Стрелок 30.01.12, 18:21

Цитата(Flexy @ 30.01.12, 18:42) http://pro1c.org.ua/index.php?act=findpost&pid=42775
Если сходу, то можно так:

//*******************************************
Функция КвоКатегорий(ТекКонтрагент)
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ПроверкаКатегорий)
    |КатегорииКонтрагентов = Справочник.КатегорииКонтрагентов.ТекущийЭлемент;
    |Владелец = Справочник.КатегорииКонтрагентов.Владелец;
    |Группировка КатегорииКонтрагентов;
    |Условие(Владелец = ТекКонтрагент);
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат -1;
    КонецЕсли;

    Если Запрос.Группировка(1) = 0 Тогда  
        Возврат 0;
    КонецЕсли;
    Возврат 1;
КонецФункции

//*******************************************
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Контрагент = Справочник.Контрагенты.ТекущийЭлемент;
    |Группировка Контрагент Без групп;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");
    Пока Запрос.Группировка(1) = 1 Цикл
        Если КвоКатегорий(Запрос.Контрагент)=0 Тогда
            Таб.ВывестиСекцию("Контрагенты");
        КонецЕсли; // КвоКатегорий(Запрос.Контрагент)=0
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры


Но будет ли быстрее?..


Запрос в цикле? За это убивать надо


Кстати, на заметку ВСЕМ (и автору темы в свете моего предложения из предыдущего поста)

Если у вас есть список значений (именно список элементов а не группа справочника) по которому надо поставить условие в запросе то конструкция

Условие (СписокУсловий.Принадлежит(РеквизитЗапроса)<>0);

работает на порядок быстрее чем стандартная

Условие (РеквизитЗапроса в СписокУсловий);

Автор: 5_kopeek 30.01.12, 20:07

Цитата(Стрелок @ 30.01.12, 18:21) *
Запрос в цикле? За это убивать надо

Согласна. Убивайте.

Автор: Pepe 30.01.12, 20:34

Цитата(5_kopeek @ 30.01.12, 20:07) *
Согласна. Убивайте.

Убить запрос или... Не понял. offtopchik.gif icon_smiley131.gif

Автор: nysysimara 31.01.12, 8:07

предлагаю свой вариант, потратила конечно не 5мин, а где-то 10-15
проверен на аналогичном справочнике и подчиненном ему - работает
первый запрос - выдает тех Контрагентов, у которых есть подчиненные КатегорииКонтрагентов, но реквизит Категории пустой,
а второй - тех Контрагентов, у которых НЕТ подчиненных КатегорииКонтрагентов

Перем СпрПодч;

//*******************************************
Функция НаличиеПодчСпр(Владелец)  
    СпрПодч.ИспользоватьВладельца(Владелец);
    Возврат СпрПодч.ВыбратьЭлементы();
КонецФункции //НаличиеПодчСпр

//*******************************************
Процедура Сформировать()
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Владелец    = Справочник.КатегорииКонтрагентов.Владелец;
    |Категории    = Справочник.КатегорииКонтрагентов.Категории;
    |Группировка Владелец без групп;
    |Условие(ПустоеЗначение(Категории)=1);
    |"//}}ЗАПРОС
;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");
    Пока Запрос.Группировка(1) = 1 Цикл  
        пВладелец = Запрос.Владелец;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
    
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    СпрПодч = СоздатьОбъект("Справочник.КатегорииКонтрагентов");

    Запрос2 = СоздатьОбъект("Запрос");
    ТекстЗапроса2 =
    "//{{ЗАПРОС(Сформировать2)
    |Владелец    = Справочник.Контрагенты.ТекущийЭлемент;
    |Группировка Владелец без групп;
    |Условие(НаличиеПодчСпр(Владелец)=0);
    |"//}}ЗАПРОС
;
    Если Запрос2.Выполнить(ТекстЗапроса2) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");
    Пока Запрос2.Группировка(1) = 1 Цикл
        пВладелец = Запрос2.Владелец;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");  
    
КонецПроцедуры

Автор: vadim007 31.01.12, 8:30

Цитата(Стрелок @ 30.01.12, 18:21) http://pro1c.org.ua/index.php?act=findpost&pid=42778
Или на форуме: http://pro1c.org.ua/redirect.php?http://bigimotoff.livejournal.com/247740.html

Автор: Стрелок 31.01.12, 8:58

Цитата(vadim007 @ 31.01.12, 9:30) http://pro1c.org.ua/index.php?act=findpost&pid=42804
Или на форуме: http://pro1c.org.ua/redirect.php?http://bigimotoff.livejournal.com/247740.html



Советую проверить. ЧТо такое "на порядок" я в курсе

Цитата(nysysimara @ 31.01.12, 9:07) *
предлагаю свой вариант, потратила конечно не 5мин, а где-то 10-15
проверен на аналогичном справочнике и подчиненном ему - работает
первый запрос - выдает тех Контрагентов, у которых есть подчиненные КатегорииКонтрагентов, но реквизит Категории пустой,
а второй - тех Контрагентов, у которых НЕТ подчиненных КатегорииКонтрагентов
Перем СпрПодч;

//*******************************************
Функция НаличиеПодчСпр(Владелец)  
    СпрПодч.ИспользоватьВладельца(Владелец);
    Возврат СпрПодч.ВыбратьЭлементы();
КонецФункции //НаличиеПодчСпр

//*******************************************
Процедура Сформировать()
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Владелец    = Справочник.КатегорииКонтрагентов.Владелец;
    |Категории    = Справочник.КатегорииКонтрагентов.Категории;
    |Группировка Владелец без групп;
    |Условие(ПустоеЗначение(Категории)=1);
    |"//}}ЗАПРОС
;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");
    Пока Запрос.Группировка(1) = 1 Цикл  
        пВладелец = Запрос.Владелец;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
    
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    СпрПодч = СоздатьОбъект("Справочник.КатегорииКонтрагентов");

    Запрос2 = СоздатьОбъект("Запрос");
    ТекстЗапроса2 =
    "//{{ЗАПРОС(Сформировать2)
    |Владелец    = Справочник.Контрагенты.ТекущийЭлемент;
    |Группировка Владелец без групп;
    |Условие(НаличиеПодчСпр(Владелец)=0);
    |"//}}ЗАПРОС
;
    Если Запрос2.Выполнить(ТекстЗапроса2) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");
    Пока Запрос2.Группировка(1) = 1 Цикл
        пВладелец = Запрос2.Владелец;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");  
    
КонецПроцедуры


Внешняя функция в запросе здорово его тормозит

Автор: nysysimara 31.01.12, 9:32

Цитата(Стрелок @ 31.01.12, 8:58) *
Внешняя функция в запросе здорово его тормозит

специально проверила:
в справочнике (который владелец) 3100 позиций
в ДБФе отрабатывает за 3 секунды

ЗЫ: замер делала с помощью
МиллиCек0 = _GetPerformanceCounter(); //в начале процедуры сформировать
Сообщить("выполнено за "+окр((_GetPerformanceCounter()-МиллиCек0)*0.001)+"сек"); //в конце процедуры

Автор: Стрелок 31.01.12, 10:13

Цитата(nysysimara @ 31.01.12, 10:32) *
специально проверила:
в справочнике (который владелец) 3100 позиций
в ДБФе отрабатывает за 3 секунды

ЗЫ: замер делала с помощью
МиллиCек0 = _GetPerformanceCounter(); //в начале процедуры сформировать
Сообщить("выполнено за "+окр((_GetPerformanceCounter()-МиллиCек0)*0.001)+"сек"); //в конце процедуры



На таком количестве и такая функция - возможно. Но если у вас будет 10000-15000 элементов-владельцев и функция чуть посложнее? Кроме того я сказал обобщённо а не в применении к текущему запросу или теме

Процедура Сформировать() 
    МиллиCек0 = _GetPerformanceCounter(); //в начале процедуры сформировать

    Запрос=СоздатьОбъект("Запрос");
    ТекстЗапроса="
    |Обрабатывать НеПомеченныеНаУдаление;
    |Контрагент=Справочник.АгентыКлиента.Владелец;
    |Группировка Контрагент без групп;
    |Без Итогов;";
    
    Запрос.Выполнить(ТекстЗапроса);
    ТЗ_=СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗ_);
    
    Список=СоздатьОбъект("СписокЗначений");
    ТЗ_.Выгрузить(Список,,,"Контрагент");
    
    ТекстЗапроса="
    |Обрабатывать НеПомеченныеНаУдаление;
    |Контрагент=Справочник.Контрагенты.ТекущийЭлемент;
    |Группировка Контрагент без групп;  
    |Условие (Список.Принадлежит(Контрагент)=0);
    |Без Итогов;";
    
    Запрос.Выполнить(ТекстЗапроса);
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗ);
    //ТЗ.ВыбратьСтроку();
    
    Сообщить("выполнено за "+окр((_GetPerformanceCounter()-МиллиCек0)*0.001)+"сек"); //в конце процедуры

КонецПроцедуры

время выполнения 3 сек.Количество элементов в справочнике "Контрагенты" - 5500.

Процедура Сформировать()
    МиллиCек0 = _GetPerformanceCounter(); //в начале процедуры сформировать

    СпрКонтрагенты=СоздатьОбъект("Справочник.Контрагенты");
    СпрАгенты=СоздатьОбъект("Справочник.АгентыКлиента");
    СписокКонтрагентов=СоздатьОбъект("СписокЗначений");
    СпрКонтрагенты.ВыбратьЭлементы();
    Пока СпрКонтрагенты.ПолучитьЭлемент()=1 Цикл  
        Если (СпрКонтрагенты.ЭтоГруппа()=1) или (СпрКонтрагенты.ПометкаУдаления()=1) Тогда
            Продолжить;
        КонецЕсли;    
        СпрАгенты.ИспользоватьВладельца(СпрКонтрагенты.ТекущийЭлемент());
        Если СпрАгенты.ВыбратьЭлементы(1)=0 Тогда
            СписокКонтрагентов.ДобавитьЗначение(СпрКонтрагенты.ТекущийЭлемент());
        КонецЕсли;    
    КонецЦикла;
    
    Сообщить("выполнено за "+окр((_GetPerformanceCounter()-МиллиCек0)*0.001)+"сек"); //в конце процедуры

КонецПроцедуры


время выполнения 3 сек.Количество элементов в справочнике "Контрагенты" - 5500.

Автор: g789 31.01.12, 10:55

ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |КатегорииКонтрагентов = Справочник.КатегорииКонтрагентов.ТекущийЭлемент;
    |Владелец = Справочник.КатегорииКонтрагентов.Владелец;
    |Контрагенты  = Справочник.Контрагенты .ТекущийЭлемент;
    |Группировка Контрагенты  без групп;
    |Условие(Контрагенты  <> Владелец);
    |"//}}ЗАПРОС
;

Автор: Стрелок 31.01.12, 10:59

Цитата(g789 @ 31.01.12, 11:55) *
ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |КатегорииКонтрагентов = Справочник.КатегорииКонтрагентов.ТекущийЭлемент;
    |Владелец = Справочник.КатегорииКонтрагентов.Владелец;
    |Контрагенты  = Справочник.Контрагенты .ТекущийЭлемент;
    |Группировка Контрагенты  без групп;
    |Условие(Контрагенты  <> Владелец);
    |"//}}ЗАПРОС
;



выводит все записи справочника "Контрагенты"

Автор: Flexy 31.01.12, 12:23

Цитата(nysysimara @ 31.01.12, 8:07) *
предлагаю свой вариант, потратила конечно не 5мин, а где-то 10-15

Спасибо.На моей базе Ваш вариант работает быстрее, чем просто выборка.

Все равно хочу сделать этот только запросом.Без использования функций и т.д., Т.к. база довольно большая, и есть шанс, что все же выбирать будет еще быстрее.
Но городить прямые запросы ради одной обработки, как-то облом...

Автор: g789 31.01.12, 12:25

тогда так, только долго.

       Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Влад = Справочник.Контрагенты.ТекущийЭлемент, Справочник.КатегорииКонтрагентов .Владелец;
    |категория= Справочник.КатегорииКонтрагентов .категория;
    |Функция СК = Счётчик();
    |Группировка Влад без групп;
    |Группировка категория без групп;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
        Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Влад
        Если Запрос.СК = 1 Тогда
            Таб.ВывестиСекцию("Влад");    
        КонецЕсли;
    КонецЦикла;

Автор: Стрелок 31.01.12, 12:42

Цитата(g789 @ 31.01.12, 13:25) *
тогда так, только долго.
       Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Влад = Справочник.Контрагенты.ТекущийЭлемент, Справочник.КатегорииКонтрагентов .Владелец;
    |категория= Справочник.КатегорииКонтрагентов .категория;
    |Функция СК = Счётчик();
    |Группировка Влад без групп;
    |Группировка категория без групп;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
        Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Влад
        Если Запрос.СК = 1 Тогда
            Таб.ВывестиСекцию("Влад");    
        КонецЕсли;
    КонецЦикла;


Простите, Вы пробуете на реальной базе то что пишете или так - "с листа" копируете на форум?

Автор: nysysimara 31.01.12, 14:02

Flexy, найдете оптимальное решение - похвастайтесь.
(тоже стало интересно)

Автор: g789 31.01.12, 14:21

Цитата(Стрелок @ 31.01.12, 12:42) *
Простите, Вы пробуете на реальной базе то что пишете или так - "с листа" копируете на форум?

Представьте себе на реальной, на моей - работает. Только у меня другие справочники. ( в моем случае Клиенты и подчиненный МенеджерыКлиентов)

Автор: Стрелок 31.01.12, 14:37

Цитата(g789 @ 31.01.12, 15:21) *
Представьте себе на реальной, на моей - работает. Только у меня другие справочники. ( в моем случае Клиенты и подчиненный МенеджерыКлиентов)


Очень сомневаюсь

вот ваш запрос в конфигурации моего клиента

|Обрабатывать НеПомеченныеНаУдаление;
|Влад = Справочник.Контрагенты.ТекущийЭлемент, Справочник.АгентыКлиента.Владелец;
|Агент= Справочник.АгентыКлиента.ТекущийЭлемент;
|Функция СК = Счётчик();
|Группировка Влад без групп;
|Группировка Агент без групп;
|Без Итогов;";


вот обработка результатов запроса

Запрос.Выполнить(ТекстЗапроса);
ТЗ=СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ);
ТЗ.ВыбратьСтроку();

в таблице значение колонка счётчика заполнена для всех контрагентов

Автор: g789 31.01.12, 16:17

Цитата(Стрелок @ 31.01.12, 14:37) http://pro1c.org.ua/index.php?act=findpost&pid=42872
Очень сомневаюсь

вот ваш запрос в конфигурации моего клиента

|Обрабатывать НеПомеченныеНаУдаление;
|Влад = Справочник.Контрагенты.ТекущийЭлемент, Справочник.АгентыКлиента.Владелец;
|Агент= Справочник.АгентыКлиента.ТекущийЭлемент;
|Функция СК = Счётчик();
|Группировка Влад без групп;
|Группировка Агент без групп;
|Без Итогов;";


в моем запросе нет "Без Итогов"

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua