Имя: Пароль:
1C
1С v8
Добавить данные о количестве контрагентов в отчет продажи УТ 10.3
0 davlen86
 
28.06.18
05:24
Доброго времени суток, уважаемые форумчане! Прошу помочи в непростой ситуации, явно кто то уже решал такую задачу, у самого не получается сделать. Собственно задача: Нужно в стандартный отчет "Продажи" УТ 10.3 добавить данные о количестве контрагентов. Вся сложность в том что отчет этот формируется с помощью Универсального отчета, если бы он был на СКД решить это гораздо проще. Делаю так в модуле отчета в процедуре УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт  добавил строчки:

УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоТТ",             "Количество(Различные ИсточникДанных.Контрагент)", "Количество ТТ");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоТТ",            "Количество ТТ",                   Ложь, "ЧЦ=10");
1 davlen86
 
28.06.18
05:28
Сначала ругалось что Номенклатура находится не в группе, для этого написал процедуру уже в модуле Универсального отчета, которая обрабатывает сформированный текст запроса перед тем как присвоить его в текст построителя отчета, чтобы появился в тексте раздел "СГРУППИРОВАТЬ ПО". Ошибка теперь не выходит, но в поле выводит совсем неправильное количество контрагентов.
2 davlen86
 
28.06.18
05:29
Подскажите плиз, как это можно сделать, что я делаю не так.
3 VladZ
 
28.06.18
05:40
Оставь типовой как есть. Сделай свой на СКД.
4 davlen86
 
28.06.18
05:46
(3) я бы с радостью. Но заказчик хочет видеть именно в типовом.
5 mehfk
 
28.06.18
05:56
Запрос корректный?
УниверсальныйОтчет.ПостроительОтчета.ПолучитьЗапрос()
6 davlen86
 
28.06.18
05:58
(5) Запрос уж слишком большой получается, кучу свойств добавляется. Сейчас попробую вытяну то что относится к количеству контрагентов.
7 davlen86
 
28.06.18
06:05
(5) Поставил точку останова в модуле формы отчета Продажи в процедуре
Процедура СформироватьОтчет(ТабличныйДокумент) Экспорт
    
    // Перед формирование отчета можно установить необходимые параметры универсального отчета.
    
    УниверсальныйОтчет.СформироватьОтчет(ТабличныйДокумент);

КонецПроцедуры // СформироватьОтчет()

Очень удивительный запрос получил в итоге:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ИсточникДанных.Контрагент КАК Контрагент,
    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Контрагент) КАК КонтрагентПредставление,
    НАЧАЛОПЕРИОДА(ИсточникДанных.Период, МЕСЯЦ) КАК ПериодМесяц,
    ИсточникДанных.Номенклатура КАК Номенклатура,
    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Номенклатура) КАК НоменклатураПредставление,
    ИсточникДанных.КоличествоОборот КАК КоличествоОборот,
    ИсточникДанных.СтоимостьОборот КАК СтоимостьОборот
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, (Контрагент В ИЕРАРХИИ(&Параметр1)) И Номенклатура В ИЕРАРХИИ(&Параметр2)) КАК ИсточникДанных

СГРУППИРОВАТЬ ПО
    ИсточникДанных.Номенклатура,
    ИсточникДанных.Контрагент,
    ИсточникДанных.КоличествоОборот,
    ИсточникДанных.СтоимостьОборот,
    НАЧАЛОПЕРИОДА(ИсточникДанных.Период, МЕСЯЦ)

УПОРЯДОЧИТЬ ПО
    СтоимостьОборот УБЫВ
ИТОГИ
    СУММА(КоличествоОборот),
    СУММА(СтоимостьОборот)
ПО
    ОБЩИЕ,
    Контрагент ИЕРАРХИЯ КАК Контрагент,
    ПериодМесяц КАК ПериодМесяц
АВТОУПОРЯДОЧИВАНИЕ

А в отчет выводятся данные Количестов ТТ, но неправильные, откуда интересно он их берет тогда.
8 davlen86
 
28.06.18
06:46
ап
9 davlen86
 
28.06.18
07:01
все оказалось довольно просто))). На будущее если кому то понадобится в модуле отчета Продажи необходимо добавить:

    УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоТТ",             "ИсточникДанных.Контрагент", "Количество ТТ");

вместо того что было написано ранее в (0),

и в модуле объекта Унив. отчет вставить код перед тем как передать текст запроса в построитель:

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"СУММА(КоличествоТТ)","Количество(Различные КоличествоТТ)");
AdBlock убивает бесплатный контент. 1Сергей