Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Функция счетчик не срабатывает в первом коде
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
inna.innainna84
Процедура ПечатьПоКатегориям()     
    Перем Запрос,ТекстЗапроса, Таб;  

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

    Запрос.ВНачалоВыборки();
    Пока Запрос.Группировка(1) = 1 Цикл    
          Таб.ВывестиСекцию("КатегорияТовара");         
    КонецЦикла;  
    

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


На печате Ставлю Запрос.КолТТ
Добрый подскажите пожалуйста как просчитать колвоТТ по выбраной категории товаров и почему Счетчик считает колво документов, если ему указано просчитать Контрагентов?
Во втором коде счетчик считает верно. Что я делаю не так?

ЗапросКлиенты= СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Считалочка)  
    |Клиент = Справочник.Контрагенты.ТекущийЭлемент;    
    |Группировка Клиент без групп упорядочить по Клиент.Наименование;
    |Условие(Клиент в ВыбКлиент);
    |Условие(Клиент в МФВыбКлиенты);
    |Функция Колвокл = Счётчик (Клиент);
    |"//}}ЗАПРОС
;
Acid
В первом запросе у вас закомментирована строка с Контрагентом.
inna.innainna84
нет есть только ниже |Контрагент= Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент,Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент; Acid @ Сегодня, 16:05 необходимо зарегистрироваться для просмотра ссылки ,
Acid
Цитата(inna.innainna84 @ 25.11.16, 16:14) необходимо зарегистрироваться для просмотра ссылки
Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная бла бла

Правильно. Это комментируете, а предыдущую наоборот.
inna.innainna84
Убала закоммет.контрагента Счеткик все также считает колво строк документе Acid @ Сегодня, 17:07 необходимо зарегистрироваться для просмотра ссылки ,
Acid
Какая стоит задача?
inna.innainna84
Посчитать количество Контрагентов которые приобрели данную категорию товара.Acid @ Сегодня, 17:36 необходимо зарегистрироваться для просмотра ссылки ,
Sharzem

 ! 

необходимо зарегистрироваться для просмотра ссылки: 16
 
Acid
У вас запрос привязан к Товару, поэтому получаете детальные записи.
igmig65
Да у вас в 1 запросе группировки 2, и счетчик покажет ко-во входов во 2 группировку, когда будете на 1 группировке, то-есть при получении итогов по 1 группировке получите счетчик - итог входов во 2, на этом уровне. По-моему так.
Цитата
Посчитать количество Контрагентов которые приобрели данную категорию товара.

А зачем тогда контрагента получаете ч-з документы. а не регистр, та строка что закомментирована-разкоментируйте, а следующую закомментируйте, вот тут вы получите итоги по контрагенту, но, тогда попадут все документы, участвующие в движениях, если нужно, то добавьте условие по виду документа.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.