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

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

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



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

Контрагент=Справочник.Контрагенты.ТекущийЭлемент, Справочник.КатегорииКонтрагентов.Владелец;
Flexy
Цитата(Стрелок @ 30.01.12, 16:38) необходимо зарегистрироваться для просмотра ссылки
Вопрос - зачем запросом? Можно и выборкой (иногда в разы быстрее получается). думаю и просто запросом можно. надо пробовать но я бы копал в сторону типа такого

Выборкой я пробовал.Ооооочень долго перебирает.
Да и у меня уже чисто спортивный интерес сделать это именно запросом.
Цитата(Стрелок @ 30.01.12, 16:38) необходимо зарегистрироваться для просмотра ссылки
Контрагент=Справочник.Контрагенты.ТекущийЭлемент, Справочник.КатегорииКонтрагентов.Владелец;

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

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

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

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

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


Но будет ли быстрее?..
Flexy
Цитата(5_kopeek @ 30.01.12, 17:33) необходимо зарегистрироваться для просмотра ссылки
Если сходу, то можно так:

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

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



Тогда прямые запросы вам в руки. Очень быстро летает

Кстати вот что подумалось

1. первым запросом получаем список всех контрагентов у которых есть категории
2. вторым запросом получаем всех остальных (не вошедших в первый запрос)

Цитата(5_kopeek @ 30.01.12, 18:33) необходимо зарегистрироваться для просмотра ссылки
Если сходу, то можно так:

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

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

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

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


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


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


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

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

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

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

Условие (РеквизитЗапроса в СписокУсловий);
5_kopeek
Цитата(Стрелок @ 30.01.12, 18:21) необходимо зарегистрироваться для просмотра ссылки
Запрос в цикле? За это убивать надо

Согласна. Убивайте.
Pepe
Цитата(5_kopeek @ 30.01.12, 20:07) необходимо зарегистрироваться для просмотра ссылки
Согласна. Убивайте.

Убить запрос или... Не понял. offtopchik.gif icon_smiley131.gif
nysysimara
предлагаю свой вариант, потратила конечно не 5мин, а где-то 10-15
проверен на аналогичном справочнике и подчиненном ему - работает
первый запрос - выдает тех Контрагентов, у которых есть подчиненные КатегорииКонтрагентов, но реквизит Категории пустой,
а второй - тех Контрагентов, у которых НЕТ подчиненных КатегорииКонтрагентов
Перем СпрПодч;

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

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

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

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

    Таб = СоздатьОбъект("Таблица");
    Пока Запрос2.Группировка(1) = 1 Цикл
        пВладелец = Запрос2.Владелец;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");  
    
КонецПроцедуры
vadim007
Цитата(Стрелок @ 30.01.12, 18:21) необходимо зарегистрироваться для просмотра ссылки
Кстати, на заметку ВСЕМ (и автору темы в свете моего предложения из предыдущего поста)
Если у вас есть список значений (именно список элементов а не группа справочника) по которому надо поставить условие в запросе то конструкция
Условие (СписокУсловий.Принадлежит(РеквизитЗапроса)<>0);
работает на порядок быстрее чем стандартная
Условие (РеквизитЗапроса в СписокУсловий);

У меня также замечание: осторожнее с выражением "на порядок". На порядок выше - это в 10 раз! Так ли это на самом деле в данном случае?
Вот интересная статься на эту тему: необходимо зарегистрироваться для просмотра ссылки
Или на форуме: необходимо зарегистрироваться для просмотра ссылки
Стрелок
Цитата(vadim007 @ 31.01.12, 9:30) необходимо зарегистрироваться для просмотра ссылки
У меня также замечание: осторожнее с выражением "на порядок". На порядок выше - это в 10 раз! Так ли это на самом деле в данном случае?
Вот интересная статься на эту тему: необходимо зарегистрироваться для просмотра ссылки
Или на форуме: необходимо зарегистрироваться для просмотра ссылки



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

Цитата(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, 8:58) необходимо зарегистрироваться для просмотра ссылки
Внешняя функция в запросе здорово его тормозит

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

ЗЫ: замер делала с помощью
МиллиCек0 = _GetPerformanceCounter(); //в начале процедуры сформировать
Сообщить("выполнено за "+окр((_GetPerformanceCounter()-МиллиCек0)*0.001)+"сек"); //в конце процедуры
Стрелок
Цитата(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
ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |КатегорииКонтрагентов = Справочник.КатегорииКонтрагентов.ТекущийЭлемент;
    |Владелец = Справочник.КатегорииКонтрагентов.Владелец;
    |Контрагенты  = Справочник.Контрагенты .ТекущийЭлемент;
    |Группировка Контрагенты  без групп;
    |Условие(Контрагенты  <> Владелец);
    |"//}}ЗАПРОС
;
Стрелок
Цитата(g789 @ 31.01.12, 11:55) необходимо зарегистрироваться для просмотра ссылки
ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |КатегорииКонтрагентов = Справочник.КатегорииКонтрагентов.ТекущийЭлемент;
    |Владелец = Справочник.КатегорииКонтрагентов.Владелец;
    |Контрагенты  = Справочник.Контрагенты .ТекущийЭлемент;
    |Группировка Контрагенты  без групп;
    |Условие(Контрагенты  <> Владелец);
    |"//}}ЗАПРОС
;



выводит все записи справочника "Контрагенты"
Flexy
Цитата(nysysimara @ 31.01.12, 8:07) необходимо зарегистрироваться для просмотра ссылки
предлагаю свой вариант, потратила конечно не 5мин, а где-то 10-15

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

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

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

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


Простите, Вы пробуете на реальной базе то что пишете или так - "с листа" копируете на форум?
nysysimara
Flexy, найдете оптимальное решение - похвастайтесь.
(тоже стало интересно)
g789
Цитата(Стрелок @ 31.01.12, 12:42) необходимо зарегистрироваться для просмотра ссылки
Простите, Вы пробуете на реальной базе то что пишете или так - "с листа" копируете на форум?

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


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

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

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


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

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

в таблице значение колонка счётчика заполнена для всех контрагентов
g789
Цитата(Стрелок @ 31.01.12, 14:37) необходимо зарегистрироваться для просмотра ссылки
Очень сомневаюсь


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


причем тут таблица значений, в приведенном коде используются группировки запроса - там где нет элементов во второй группировке значение счетчика - 1, а если что - то есть, то счетчик больше.

Цитата(Стрелок @ 31.01.12, 14:37) необходимо зарегистрироваться для просмотра ссылки
Очень сомневаюсь

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

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


в моем запросе нет "Без Итогов"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.