Привет.Знаю, название темы завернул ТИС 7.7 Стоит задача видеть количество категорий товаров торговых точек торговых агентов с возможностью развернуть контрагентами. Из того, что мне пришло в голову и я пробовал: Запросом к Расходной выбирал, Торгового агента, Контрагента и Товар. Потом в группировке по товару выбирал его категории. Потом по каждому Торговому в ТЗ сворачивал его категории. В другой ТЗ считал количество-торговых точек торгового. В общем получлось сложно и геморно.Может кто подскажет более оптимальное решение. И пока что не представляю каким макаром можно посчитать кол-во торговых точек по категориям. Видеть нужно такое на выходе.
Делаем одну ТЗ с колонками: Агент|Товар|Категория|Контрагент|КвоКонтрагентов Вася1|Това1|Категори1|Контраген1|1 Вася2|Това2|Категори2|Контраген2|1 Вася6|Това4|Категори4|Контраген3|1
А потом из этой ТЗ путем свёртки получаем любые варианты.
Блин.Не получается.Быть может что-то еще не так делаю?
//Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ТорговыйАгент = Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент; |Контрагент = Документ.РасходнаяНакладная.Контрагент; |Товар = Документ.РасходнаяНакладная.Товар; |Группировка ТорговыйАгент без групп; |Группировка Контрагент без групп; |Группировка Товар без групп; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Пока Запрос.Группировка(3) = 1 Цикл // Заполнение полей Товар
ТЗ.НоваяСтрока(); ТЗ.Товар = Запрос.Товар;
СпрКатегорий.ИспользоватьВладельца(Запрос.Товар); СпрКатегорий.ВыбратьЭлементы(); Пока СпрКатегорий.ПолучитьЭлемент() = 1 Цикл Если СпрКатегорий.Категория.ПометкаУдаления() = 1 Тогда Продолжить; Иначе
Flexy, в тему я еще широко и глубоко не вникла. Бросилось в глаза, что функции в запросе не используете, а все суммируете при обходе запроса. Посмотрите через конструктор запроса - там есть функция счетчик - кажется так. и то что вижу, можно сделать только запросом + при обходе присоединять вертикальную секцию (категория) (недавно подобную структуру делала, даже тема была заведена).
Сообщение отредактировал Домовик - 16.05.12, 16:23
Функция счетчик считает только те значения, у которых тип = число.Хотя в СП написано, что она должна считать количество записей в выборке. У меня нет проблемы в том, что бы присоединить секцию. Проблема в том, что я не могу посчитать Количество Торговых Точек торгового агента в разрезе категорий товаров. Еще раз объясню популярно: Надо видеть что у Торгового Агента Васи Отработано По Категории А1 - 20 точек, по категории Б1 - 5 точек и т.д. ТЗ как писали выше я уже имею.Но она не сворачивается, как мне надо.
счетчик можно заменить таким или похожим способом.(нулевстрока="") в верхних группировках - плюсуюет, т е показывает итоговые суммы. все бы хорошо, если бы еще группировкой сделать категорию. но это подчиненный справочник к Товару ...
Еще, если не по ЗАпросу, а по коду обхода Запроса. То привести таблицу к виду, кот указал Ardi, можно где-то так
Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл
Пока Запрос.Группировка(3) = 1 Цикл
СпрКатегорий.ИспользоватьВладельца(Запрос.Товар); СпрКатегорий.ВыбратьЭлементы(); Пока СпрКатегорий.ПолучитьЭлемент() = 1 Цикл Если СпрКатегорий.Категория.ПометкаУдаления() = 1 Тогда Продолжить; Иначе
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!