Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 01:43

Отбор по статусу документа УниверсальномОтчёте

Автор keramik, 19 авг 2015, 22:55

0 Пользователей и 1 гость просматривают эту тему.

keramik

Добрый вечер, 1С 8.2, "Управление торговлей", редакция 10.3 (10.3.7.9).

Как ограничить отбираемые данные по статусу документа в отчёте, который создан при помощи УниверсальногоОтчёта?

У документов, которые пойдут в отчёт могут быть статусы "В работе" и "Выполнен", нас интересует только "Выполнен". В обычном отчёте получилось это сделать, добавив в запрос условие:
|АС_ПродажиОбороты.Регистратор.Состояние = ЗНАЧЕНИЕ(Перечисление.СостояниеЗаказНаряда.Выполнен)
но в отчёте, который был создан используя УниверсальныйОтчёт у меня пока не получилось сделать ограничение по статусу.
Вот процедура, которая отчёт создаёт:

Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт

// Настройка общих параметров универсального отчета

// Содержит название отчета, которое будет выводиться в шапке.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";
УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);

// Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;

// Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах";
УниверсальныйОтчет.ИмяРегистра = "АС_Продажи";

УниверсальныйОтчет.ДобавитьПолеРесурс("ЦенаБезНДС", "СтоимостьБезНДСОборот / ВЫБОР КОГДА КоличествоОборот = 0 ТОГДА 1 ИНАЧЕ КоличествоОборот КОНЕЦ", Нстр("ru='Цена без НДС';lv='Cena bez PVN'"));
УниверсальныйОтчет.ДобавитьПолеРесурс("Цена", "СтоимостьОборот / ВЫБОР КОГДА КоличествоОборот = 0 ТОГДА 1 ИНАЧЕ КоличествоОборот КОНЕЦ", Нстр("ru='Цена';lv='Cena'"));

// Заполнение начальных настроек универсального отчета
УниверсальныйОтчет.УстановитьНачальныеНастройки(Истина);

УниверсальныйОтчет.ДобавитьПоказатель("СтоимостьБезНДСОборот",          "Pārdošanas summa bez PVN", Истина);
УниверсальныйОтчет.ДобавитьПоказатель("СтоимостьОборот",          "Pārdošanas summa ar PVN", Истина);

УниверсальныйОтчет.ДобавитьПоказатель("КоличествоОборот", "Daudzums", Ложь);

УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Контрагент", "Контрагент");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СтоимостьБезНДС", "Summa bez PVN");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Стоимость", "Summa ar PVN");

// Добавление предопределенных группировок строк отчета.
// Необходимо вызывать для каждой добавляемой группировки строки.
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Контрагент");

// Добавление предопределенных отборов отчета.
// Необходимо вызывать для каждого добавляемого отбора.
УниверсальныйОтчет.ДобавитьОтбор("Контрагент");

КонецПроцедуры // УстановитьНачальныеНастройки()


Пробовал вставить в неё запрос свой, но он игнорируется программой :(
Запрос был такого типа:
ТекстЗапроса = "ВЫБРАТЬ
   | АС_ПродажиОбороты.Контрагент КАК Контрагент,
   | АС_ПродажиОбороты.СтоимостьБезНДСОборот КАК СтоимостьБезНДС,
   | АС_ПродажиОбороты.СтоимостьОборот КАК Стоимость
   |{ВЫБРАТЬ
   | Контрагент.*}
   |ИЗ
   | РегистрНакопления.АС_Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК АС_ПродажиОбороты
   |{ГДЕ
   | (АС_ПродажиОбороты.Регистратор.Состояние = ЗНАЧЕНИЕ(Перечисление.СостояниеЗаказНаряда.Выполнен))}
   |{УПОРЯДОЧИТЬ ПО
   | Контрагент.*}
   |ИТОГИ
   | СУММА(СтоимостьБезНДС),
   | СУММА(Стоимость)
   |ПО
   | ОБЩИЕ
   |{ИТОГИ ПО
   | Контрагент.*}";

keramik

Вышеупомянутая процедура находится в модуле отчёта АС_Продажи.

vitasw

Должен быть или свой текст запроса или "УниверсальныйОтчет.ИмяРегистра = "АС_Продажи";" Если есть оба, то ваш текст запроса херится. Откройте любой типовой отчет с произвольным текстом запроса и посмотрите как он работает. Где у вас косяк по приведенному коду определить невозможно.

keramik

Значит, где-то есть ещё запрос, который я пока не нашёл.
Походу, именно в "УниверсальныйОтчёт" и есть этот запрос, который выводит данные в таблицу.
Нашёл процедуру в модуле АС_УниверсальныйОтчет:
Процедура УстановитьНачальныеНастройкиПоМетаданнымРегистра(ИмяРегистра)

МетаданныеРегистра = Метаданные.РегистрыНакопления.Найти(ИмяРегистра);

Если МетаданныеРегистра = Неопределено Тогда

Возврат;

КонецЕсли;

Обороты = МетаданныеРегистра.ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты;

ОписаниеПолейВыборки = "";
ОписаниеПолейВыборкиПостроитель = "";
ОписаниеИсточниковЗапроса = "";
ОписаниеОтборовРезультатаЗапроса = "";
ОписаниеУпорядочиванияРезультатаЗапроса = "";
ОписаниеИтогиЗапроса = "";
ОписаниеИтогиЗапросаПостроитель = "";

Если ИспользоватьСвойстваИКатегории Тогда

Запрос = Новый Запрос(
"ВЫБРАТЬ
| НазначенияСвойствКатегорийОбъектов.Ссылка,
| НазначенияСвойствКатегорийОбъектов.Предопределенный,
| НазначенияСвойствКатегорийОбъектов.ТипЗначения
|ИЗ
| ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов КАК НазначенияСвойствКатегорийОбъектов
|ГДЕ
| НазначенияСвойствКатегорийОбъектов.ПометкаУдаления = ЛОЖЬ
| И НазначенияСвойствКатегорийОбъектов.ЭтоГруппа = ЛОЖЬ");

РезультатЗапросаНазначенияСвойствКатегорийОбъектов = Запрос.Выполнить();
ВыборкаНазначенияСвойствКатегорийОбъектов = РезультатЗапросаНазначенияСвойствКатегорийОбъектов.Выбрать();

КонецЕсли;

Для каждого Измерение из МетаданныеРегистра.Измерения Цикл

ОписаниеПолейВыборки = ОписаниеПолейВыборки + ?(ОписаниеПолейВыборки = "", "", ",") + "
| ИсточникДанных." + Измерение.Имя + " КАК " + Измерение.Имя + ",
| ПРЕДСТАВЛЕНИЕ(ИсточникДанных." + Измерение.Имя + ") КАК " + Измерение.Имя + "Представление";

ОписаниеПолейВыборкиПостроитель = ОписаниеПолейВыборкиПостроитель + ?(ОписаниеПолейВыборкиПостроитель = "", "", ",") + "
| " + Измерение.Имя + ".*";

ОписаниеИсточниковЗапроса = ОписаниеИсточниковЗапроса + ?(ОписаниеИсточниковЗапроса = "", "", ",") + "
| " + Измерение.Имя + ".* КАК " + Измерение.Имя;

ОписаниеУпорядочиванияРезультатаЗапроса = ОписаниеУпорядочиванияРезультатаЗапроса + ?(ОписаниеУпорядочиванияРезультатаЗапроса = "", "", ",") + "
| " + Измерение.Имя + ".*";

ОписаниеИтогиЗапросаПостроитель = ОписаниеИтогиЗапросаПостроитель + ?(ОписаниеИтогиЗапросаПостроитель = "", "", ",") + "
| " + Измерение.Имя + ".*";


мСтруктураПредставлениеПолей.Вставить(Измерение.Имя, Измерение.Представление());

Если ИспользоватьСвойстваИКатегории Тогда

МассивНазначений = Новый Массив;

Для каждого ТипИзмерения из Измерение.Тип.Типы() Цикл

ВыборкаНазначенияСвойствКатегорийОбъектов.Сбросить();

Пока ВыборкаНазначенияСвойствКатегорийОбъектов.Следующий() Цикл

Если ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры И
ТипИзмерения = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") ИЛИ
ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры И
ВыборкаНазначенияСвойствКатегорийОбъектов.ТипЗначения.СодержитТип(ТипИзмерения) И
МассивНазначений.Найти(ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка) = Неопределено Тогда

МассивНазначений.Добавить(ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка);

КонецЕсли;

КонецЦикла;

КонецЦикла;

Для каждого Назначение из МассивНазначений Цикл

ДобавитьСвойстваИКатегорииДляПоля("ИсточникДанных." + Измерение.Имя, Измерение.Имя, Измерение.Представление(), Назначение);

КонецЦикла;

КонецЕсли;

Если мИспользоватьПараметрыАвтомобиля Тогда
ДобавитьПараметрыАвтомобиляДляПоля("ИсточникДанных." + Измерение.Имя, Измерение.Имя, Измерение.Представление());
КонецЕсли;

КонецЦикла;

// Свойства и категории поля "Регистратор"
Если ИспользоватьСвойстваИКатегории Тогда

МассивНазначений = Новый Массив;

Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 0
| ИсточникДанных.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления." + ИмяРегистра + " КАК ИсточникДанных");

РезультатЗапроса = Запрос.Выполнить();

Для каждого ТипРегистратора из РезультатЗапроса.Колонки.Регистратор.ТипЗначения.Типы() Цикл

ВыборкаНазначенияСвойствКатегорийОбъектов.Сбросить();

Пока ВыборкаНазначенияСвойствКатегорийОбъектов.Следующий() Цикл

Если ВыборкаНазначенияСвойствКатегорийОбъектов.ТипЗначения.СодержитТип(ТипРегистратора) И
МассивНазначений.Найти(ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка) = Неопределено Тогда

МассивНазначений.Добавить(ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка);

КонецЕсли;

КонецЦикла;

КонецЦикла;

Для каждого Назначение из МассивНазначений Цикл

//мВсеПоЛатышски - выводить все тексты на латышском не зависимо от интерфейса пользователя
Если мВсеПоЛатышски Тогда
ДобавитьСвойстваИКатегорииДляПоля("ИсточникДанных.Регистратор", "Регистратор", "Kustības dokuments (reģistrators)", Назначение);
Иначе
ДобавитьСвойстваИКатегорииДляПоля("ИсточникДанных.Регистратор", "Регистратор", Нстр("lv='Kustības dokuments (reģistrators)';ru='Документ движения (регистратор)';en='Документ движения (регистратор)'"), Назначение);
КонецЕСли;

КонецЦикла;

КонецЕсли;

Если мМассивПоляГруппировка <> Неопределено Тогда

Для каждого ПолеГруппировка из мМассивПоляГруппировка Цикл

ПолеВыборки = СтрЗаменить(?(ПолеГруппировка.Выражение = Неопределено, "%ПолеВыборки%", ПолеГруппировка.Выражение), "%ПолеВыборки%", "ИсточникДанных." + ПолеГруппировка.Родитель + "." + ПолеГруппировка.ПутьКДанным);
ИсточникЗапроса = СтрЗаменить(?(ПолеГруппировка.Выражение = Неопределено, "%ПолеВыборки%", ПолеГруппировка.Выражение), "%ПолеВыборки%", ПолеГруппировка.Родитель + "." + ПолеГруппировка.ПутьКДанным);

ОписаниеПолейВыборки = ОписаниеПолейВыборки + ?(ОписаниеПолейВыборки = "", "", ",") + "
| " + ПолеВыборки + " КАК " + ПолеГруппировка.Имя + ",
| ПРЕДСТАВЛЕНИЕ(" + ПолеВыборки + ") КАК " + ПолеГруппировка.Имя + "Представление";

ОписаниеПолейВыборкиПостроитель = ОписаниеПолейВыборкиПостроитель + ?(ОписаниеПолейВыборкиПостроитель = "", "", ",") + "
| " + ПолеГруппировка.Имя + ".*";

ОписаниеИсточниковЗапроса = ОписаниеИсточниковЗапроса + ?(ОписаниеИсточниковЗапроса = "", "", ",") + "
| (" + ИсточникЗапроса + ").* КАК " + ПолеГруппировка.Имя;

ОписаниеУпорядочиванияРезультатаЗапроса = ОписаниеУпорядочиванияРезультатаЗапроса + ?(ОписаниеУпорядочиванияРезультатаЗапроса = "", "", ",") + "
| " + ПолеГруппировка.Имя + ".*";

ОписаниеИтогиЗапросаПостроитель = ОписаниеИтогиЗапросаПостроитель + ?(ОписаниеИтогиЗапросаПостроитель = "", "", ",") + "
| " + ПолеГруппировка.Имя + ".*";

мСтруктураПредставлениеПолей.Вставить(ПолеГруппировка.Имя, ПолеГруппировка.Представление);

ДокументыДобавлен = Ложь;

Если ИспользоватьСвойстваИКатегории И ПолеГруппировка.Тип <> Неопределено И ТипЗнч(ПолеГруппировка.Тип) = Тип("ОписаниеТипов") Тогда

МассивНазначений = Новый Массив;

Для каждого ТипГруппировки из ПолеГруппировка.Тип.Типы() Цикл

ВыборкаНазначенияСвойствКатегорийОбъектов.Сбросить();

Пока ВыборкаНазначенияСвойствКатегорийОбъектов.Следующий() Цикл

Если ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры И
ТипГруппировки = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") ИЛИ
ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры И
ВыборкаНазначенияСвойствКатегорийОбъектов.ТипЗначения.СодержитТип(ТипГруппировки) И
МассивНазначений.Найти(ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка) = Неопределено Тогда

МассивНазначений.Добавить(ВыборкаНазначенияСвойствКатегорийОбъектов.Ссылка);

КонецЕсли;

КонецЦикла;

КонецЦикла;

Для каждого Назначение из МассивНазначений Цикл

ДобавитьСвойстваИКатегорииДляПоля("ИсточникДанных." + ПолеГруппировка.Родитель + "." + ПолеГруппировка.ПутьКДанным, ПолеГруппировка.Имя, ПолеГруппировка.Представление, Назначение);

КонецЦикла;

КонецЕсли;

Если мИспользоватьПараметрыАвтомобиля Тогда
ДобавитьПараметрыАвтомобиляДляПоля("ИсточникДанных." + ПолеГруппировка.Родитель + "." + ПолеГруппировка.ПутьКДанным, ПолеГруппировка.Имя, ПолеГруппировка.Представление);
КонецЕсли;

УстановитьСвязьПолей(ПолеГруппировка.Имя, ПолеГруппировка.Родитель);

КонецЦикла;

мМассивПоляГруппировка = Неопределено;

КонецЕсли;

Для каждого Ресурс Из МетаданныеРегистра.Ресурсы Цикл

Если Обороты Тогда

ОписаниеПолейВыборки = ОписаниеПолейВыборки + ?(ОписаниеПолейВыборки = "", "", ",") + "
| ИсточникДанных." + Ресурс.Имя + "Оборот КАК " + Ресурс.Имя + "Оборот";

ОписаниеПолейВыборкиПостроитель = ОписаниеПолейВыборкиПостроитель + ?(ОписаниеПолейВыборкиПостроитель = "", "", ",") + "
| " + Ресурс.Имя + "Оборот";

ОписаниеОтборовРезультатаЗапроса = ОписаниеОтборовРезультатаЗапроса + ?(ОписаниеОтборовРезультатаЗапроса = "", "", ",") + "
| ИсточникДанных." + Ресурс.Имя + "Оборот КАК " + Ресурс.Имя + "Оборот";

ОписаниеИтогиЗапроса = ОписаниеИтогиЗапроса + ?(ОписаниеИтогиЗапроса = "", "", ",") + "
| СУММА(" + Ресурс.Имя + "Оборот)";

ОписаниеУпорядочиванияРезультатаЗапроса = ОписаниеУпорядочиванияРезультатаЗапроса + ?(ОписаниеУпорядочиванияРезультатаЗапроса = "", "", ",") + "
| " + Ресурс.Имя + "Оборот";

ДобавитьПоказатель(Ресурс.Имя + "Оборот", Ресурс.Представление(), Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"));

//мВсеПоЛатышски - выводить все тексты на латышском не зависимо от интерфейса пользователя
Если мВсеПоЛатышски Тогда
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Оборот", Ресурс.Представление() + " (apgrozījums)");
Иначе
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Оборот", Ресурс.Представление() + НСтр("lv=' (apgrozījums)';ru=' (оборот)';en=' (оборот)'"));
КонецЕСли;

Иначе

ОписаниеПолейВыборки = ОписаниеПолейВыборки + ?(ОписаниеПолейВыборки = "", "", ",") + "
| ИсточникДанных." + Ресурс.Имя + "НачальныйОстаток КАК " + Ресурс.Имя + "НачальныйОстаток,
| ИсточникДанных." + Ресурс.Имя + "Приход КАК " + Ресурс.Имя + "Приход,
| ИсточникДанных." + Ресурс.Имя + "Расход КАК " + Ресурс.Имя + "Расход,
| ИсточникДанных." + Ресурс.Имя + "КонечныйОстаток КАК " + Ресурс.Имя + "КонечныйОстаток,
| ИсточникДанных." + Ресурс.Имя + "Оборот КАК " + Ресурс.Имя + "Оборот";

ОписаниеПолейВыборкиПостроитель = ОписаниеПолейВыборкиПостроитель + ?(ОписаниеПолейВыборкиПостроитель = "", "", ",") + "
| " + Ресурс.Имя + "НачальныйОстаток,
| " + Ресурс.Имя + "Приход,
| " + Ресурс.Имя + "Расход,
| " + Ресурс.Имя + "КонечныйОстаток,
| " + Ресурс.Имя + "Оборот";

ОписаниеОтборовРезультатаЗапроса = ОписаниеОтборовРезультатаЗапроса + ?(ОписаниеОтборовРезультатаЗапроса = "", "", ",") + "
| ИсточникДанных." + Ресурс.Имя + "НачальныйОстаток КАК " + Ресурс.Имя + "НачальныйОстаток,
| ИсточникДанных." + Ресурс.Имя + "Приход КАК " + Ресурс.Имя + "Приход,
| ИсточникДанных." + Ресурс.Имя + "Расход КАК " + Ресурс.Имя + "Расход,
| ИсточникДанных." + Ресурс.Имя + "КонечныйОстаток КАК " + Ресурс.Имя + "КонечныйОстаток,
| ИсточникДанных." + Ресурс.Имя + "Оборот КАК " + Ресурс.Имя + "Оборот";

ОписаниеИтогиЗапроса = ОписаниеИтогиЗапроса + ?(ОписаниеИтогиЗапроса = "", "", ",") + "
| СУММА(" + Ресурс.Имя + "НачальныйОстаток),
| СУММА(" + Ресурс.Имя + "Приход),
| СУММА(" + Ресурс.Имя + "Расход),
| СУММА(" + Ресурс.Имя + "КонечныйОстаток),
| СУММА(" + Ресурс.Имя + "Оборот)";

ОписаниеУпорядочиванияРезультатаЗапроса = ОписаниеУпорядочиванияРезультатаЗапроса + ?(ОписаниеУпорядочиванияРезультатаЗапроса = "", "", ",") + "
| " + Ресурс.Имя + "НачальныйОстаток,
| " + Ресурс.Имя + "Приход,
| " + Ресурс.Имя + "Расход,
| " + Ресурс.Имя + "КонечныйОстаток,
| " + Ресурс.Имя + "Оборот";

//мВсеПоЛатышски - выводить все тексты на латышском не зависимо от интерфейса пользователя
Если мВсеПоЛатышски Тогда
ДобавитьПоказатель(Ресурс.Имя + "НачальныйОстаток", "Sāk. atlikums", Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "Приход", "Saņemšana", Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "Расход", "Izdevumi", Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "КонечныйОстаток", "Beig. atlikums", Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "Оборот", "Apgrozījums", Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());

мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "НачальныйОстаток", Ресурс.Представление() + " (sāk. atl.)");
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Приход", Ресурс.Представление() + " (ieņēmumi)");
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Расход", Ресурс.Представление() + " (izdevumi)");
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "КонечныйОстаток", Ресурс.Представление() + " (beig. atl.)");
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Оборот", Ресурс.Представление() + " (apgrozījums)");
Иначе
ДобавитьПоказатель(Ресурс.Имя + "НачальныйОстаток", Нстр("lv='Sāk. atlikums';ru='Нач. остаток';en='Нач. остаток'"), Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "Приход", НСтр("lv='Saņemšana';ru='Приход';en='Приход'"), Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "Расход", НСтр("lv='Izdevumi';ru='Расход';en='Расход'"), Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "КонечныйОстаток", НСтр("lv='Beig. atlikums';ru='Кон. остаток';en='Кон. остаток'"), Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());
ДобавитьПоказатель(Ресурс.Имя + "Оборот", НСтр("lv='Apgrozījums';ru='Оборот';en='Оборот'"), Истина, "ЧЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.Разрядность, "ЧГ=0") + " ; ЧДЦ = " + Формат(Ресурс.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти, "ЧГ=0"), Ресурс.Имя, Ресурс.Представление());

мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "НачальныйОстаток", Ресурс.Представление() + НСтр("lv=' (sāk. atl.)';ru=' (нач. ост.)';en=' (нач. ост.)'"));
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Приход", Ресурс.Представление() + НСтр("lv=' (ieņēmumi)';ru=' (приход)';en=' (приход)'"));
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Расход", Ресурс.Представление() + НСтр("lv=' (izdevumi)';ru=' (расход)';en=' (расход)'"));
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "КонечныйОстаток", Ресурс.Представление() + НСтр("lv=' (beig. atl.)';ru=' (кон. ост.)';en=' (кон. ост.)'"));
мСтруктураПредставлениеПолей.Вставить(Ресурс.Имя + "Оборот", Ресурс.Представление() + НСтр("lv=' (apgrozījums)';ru=' (оборот)';en=' (оборот)'"));
КонецЕСли;

КонецЕсли;

КонецЦикла;

Если мМассивПоляРесурс <> Неопределено Тогда

Для каждого ПолеРесурс из мМассивПоляРесурс Цикл

ОписаниеПолейВыборки = ОписаниеПолейВыборки + ?(ОписаниеПолейВыборки = "", "", ",") + "
| " + ПолеРесурс.ПутьКДанным + " КАК " + ПолеРесурс.Имя;

ОписаниеПолейВыборкиПостроитель = ОписаниеПолейВыборкиПостроитель + ?(ОписаниеПолейВыборкиПостроитель = "", "", ",") + "
| " + ПолеРесурс.Имя;

ОписаниеОтборовРезультатаЗапроса = ОписаниеОтборовРезультатаЗапроса + ?(ОписаниеОтборовРезультатаЗапроса = "", "", ",") + "
| " + ПолеРесурс.ПутьКДанным + " КАК " + ПолеРесурс.Имя;

ОписаниеУпорядочиванияРезультатаЗапроса = ОписаниеУпорядочиванияРезультатаЗапроса + ?(ОписаниеУпорядочиванияРезультатаЗапроса = "", "", ",") + "
| " + ПолеРесурс.Имя;

Если ПолеРесурс.Итог = Неопределено Тогда

ОписаниеИтогиЗапроса = ОписаниеИтогиЗапроса + ?(ОписаниеИтогиЗапроса = "", "", ",") + "
| СУММА(" + ПолеРесурс.Имя + ")";

Иначе

ОписаниеИтогиЗапроса = ОписаниеИтогиЗапроса + ?(ОписаниеИтогиЗапроса = "", "", ",") + "
| " + ПолеРесурс.Итог + " КАК " + ПолеРесурс.Имя;

КонецЕсли;

мСтруктураПредставлениеПолей.Вставить(ПолеРесурс.Имя, ПолеРесурс.Представление);

КонецЦикла;

мМассивПоляРесурс = Неопределено;

КонецЕсли;

ОписаниеПолейВыборки = "ВЫБРАТЬ РАЗРЕШЕННЫЕ" + ОписаниеПолейВыборки + ?(ОписаниеПолейВыборки = "", "", ",") + "
| ИсточникДанных.Регистратор КАК Регистратор,
| ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Регистратор) КАК РегистраторПредставление,
| ИсточникДанных.Период КАК Период,
| НачалоПериода(ИсточникДанных.Период, День) КАК ПериодДень,
| НачалоПериода(ИсточникДанных.Период, Неделя) КАК ПериодНеделя,
| НачалоПериода(ИсточникДанных.Период, Декада) КАК ПериодДекада,
| НачалоПериода(ИсточникДанных.Период, Месяц) КАК ПериодМесяц,
| НачалоПериода(ИсточникДанных.Период, Квартал) КАК ПериодКвартал,
| НачалоПериода(ИсточникДанных.Период, Полугодие) КАК ПериодПолугодие,
| НачалоПериода(ИсточникДанных.Период, Год) КАК ПериодГод
| //ПОЛЯ_СВОЙСТВА
| //ПОЛЯ_КАТЕГОРИИ
| //ПОЛЯ_АВТОСЕРВИС";

ОписаниеПолейВыборкиПостроитель = "
|{ВЫБРАТЬ" + ОписаниеПолейВыборкиПостроитель + ?(ОписаниеПолейВыборкиПостроитель = "", "", ",") + "
| Регистратор.* КАК Регистратор,
| Период КАК Период,
| ПериодДень,
| ПериодНеделя,
| ПериодДекада,
| ПериодМесяц,
| ПериодКвартал,
| ПериодПолугодие,
| ПериодГод
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
| //ПСЕВДОНИМЫ_АВТОСЕРВИС
|}";

Если Обороты Тогда

ОписаниеИсточниковЗапроса = "
|ИЗ РегистрНакопления." + ИмяРегистра + ".Обороты(&ДатаНач, &ДатаКон, Регистратор {&Периодичность}, {" +
ОписаниеИсточниковЗапроса + "}) КАК ИсточникДанных
|//СОЕДИНЕНИЯ
|//СОЕД_АВТОСЕРВИС";

Иначе

ОписаниеИсточниковЗапроса = "
|ИЗ РегистрНакопления." + ИмяРегистра + ".ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор {&Периодичность},, {" +
ОписаниеИсточниковЗапроса + "}) КАК ИсточникДанных
|//СОЕДИНЕНИЯ
|//СОЕД_АВТОСЕРВИС";

КонецЕсли;

ОписаниеОтборовРезультатаЗапроса = "
|{ГДЕ" + ОписаниеОтборовРезультатаЗапроса + ?(ОписаниеОтборовРезультатаЗапроса = "", "", ",") + "
| ИсточникДанных.Регистратор.* КАК Регистратор,
| ИсточникДанных.Период КАК Период,
| НачалоПериода(ИсточникДанных.Период, День) КАК ПериодДень,
| НачалоПериода(ИсточникДанных.Период, Неделя) КАК ПериодНеделя,
| НачалоПериода(ИсточникДанных.Период, Декада) КАК ПериодДекада,
| НачалоПериода(ИсточникДанных.Период, Месяц) КАК ПериодМесяц,
| НачалоПериода(ИсточникДанных.Период, Квартал) КАК ПериодКвартал,
| НачалоПериода(ИсточникДанных.Период, Полугодие) КАК ПериодПолугодие,
| НачалоПериода(ИсточникДанных.Период, Год) КАК ПериодГод
| //УСЛОВИЯ_СВОЙСТВА
| //УСЛОВИЯ_КАТЕГОРИИ
| //УСЛОВИЯ_АВТОСЕРВИС
|}";

ОписаниеУпорядочиванияРезультатаЗапроса = "
|{УПОРЯДОЧИТЬ ПО" + ОписаниеУпорядочиванияРезультатаЗапроса + ?(ОписаниеУпорядочиванияРезультатаЗапроса = "", "", ",") + "
| Регистратор.*,
| Период,
| ПериодДень,
| ПериодНеделя,
| ПериодДекада,
| ПериодМесяц,
| ПериодКвартал,
| ПериодПолугодие,
| ПериодГод
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
| //ПСЕВДОНИМЫ_АВТОСЕРВИС
|}";

ОписаниеИтогиЗапроса = "
|ИТОГИ" + ОписаниеИтогиЗапроса + "
| //ИТОГИ_СВОЙСТВА
| //ИТОГИ_КАТЕГОРИИ
| //ИТОГИ_АВТОСЕРВИС
|ПО
| ОБЩИЕ";

ОписаниеИтогиЗапросаПостроитель = "
|{ИТОГИ ПО" + ОписаниеИтогиЗапросаПостроитель + ?(ОписаниеИтогиЗапросаПостроитель = "", "", ",") + "
| Регистратор.*,
| Период,
| ПериодДень,
| ПериодНеделя,
| ПериодДекада,
| ПериодМесяц,
| ПериодКвартал,
| ПериодПолугодие,
| ПериодГод
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
| //ПСЕВДОНИМЫ_АВТОСЕРВИС
|}";

ТекстЗапроса =
ОписаниеПолейВыборки +
ОписаниеПолейВыборкиПостроитель +
ОписаниеИсточниковЗапроса +
ОписаниеОтборовРезультатаЗапроса +
ОписаниеУпорядочиванияРезультатаЗапроса +
ОписаниеИтогиЗапроса +
ОписаниеИтогиЗапросаПостроитель;

ТекстПоля = "";

Если ИспользоватьСвойстваИКатегории Тогда

ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса);

КонецЕсли;

Если мИспользоватьПараметрыАвтомобиля Тогда

ДобавитьВТекстЗапросаПараметрыАвтосервиса(ТекстЗапроса);

КонецЕСли;

ПостроительОтчета.Текст = ТекстЗапроса;

ОтборПериодичность = ПостроительОтчета.Отбор.Найти("Периодичность");

Если ОтборПериодичность <> Неопределено Тогда

ПостроительОтчета.Отбор.Удалить(ПостроительОтчета.Отбор.Индекс(ОтборПериодичность));

КонецЕсли;
 
УстановитьПредставленияПолей(мСтруктураПредставлениеПолей, ПостроительОтчета);
УстановитьТипыЗначенийСвойствДляОтбора();

КонецПроцедуры // УстановитьНачальныеНастройкиПоМетаданнымРегистра()


vitasw

Причем тут запрос в Универсальном отчете! Вы неправильно настраиваете свой отчет. Из-за того, что вы неправильно настроили свой отчет - универсальный не может вывести то, что вы ожидаете.
P.S. Хотя ошибки в схеме универсального отчета тоже не исключаю, т.к. объекты с префиксов "АС_" - это явно что-то кем-то дописанное и к типовому функционалу не относится.

keramik

Понятно, буду смотреть, как правильно настроить :)
Да, это дополненная конфигурация предыдущим разработчиком.
Добавлено: 20 авг 2015, 14:48


Наметился некоторый прогресс. Основываясь на отчёте о Валовой прибыли собрал отчёт для Продаж. Но пока только названия колонок и само название отчёта выводятся. Данные почему-то не отображаются:

Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт

// Настройка общих параметров универсального отчета
// Содержит название отчета, которое будет выводиться в шапке.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";
УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);

УниверсальныйОтчет.мВсеПоЛатышски = Истина;

// Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;

// Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах";
УниверсальныйОтчет.ИмяРегистра = "АС_Продажи";

// Дополнительные параметры, переданные из отчета, вызвавшего расшифровку.
// Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована
// для реализации специфичных для данного отчета параметрических настроек.

// Описание исходного текста запроса.
ТекстЗапроса =
"ВЫБРАТЬ
| АС_ПродажиОбороты.Период КАК Период,
| АС_ПродажиОбороты.Регистратор КАК Регистратор,
| АС_ПродажиОбороты.Контрагент КАК Контрагент,
| АС_ПродажиОбороты.СтоимостьОборот КАК Стоимость,
| АС_ПродажиОбороты.СтоимостьБезНДСОборот КАК СтоимостьБезНДС
|{ВЫБРАТЬ
| Период,
| Регистратор.*,
| Контрагент.*,
| Стоимость,
| СтоимостьБезНДС}
|ИЗ
| РегистрНакопления.АС_Продажи.Обороты(, , Регистратор, ) КАК АС_ПродажиОбороты
|ГДЕ
| АС_ПродажиОбороты.Регистратор.Состояние = ЗНАЧЕНИЕ(Перечисление.СостояниеЗаказНаряда.Выполнен)
|
|СГРУППИРОВАТЬ ПО
| АС_ПродажиОбороты.Контрагент,
| АС_ПродажиОбороты.Период,
| АС_ПродажиОбороты.Регистратор,
| АС_ПродажиОбороты.СтоимостьОборот,
| АС_ПродажиОбороты.СтоимостьБезНДСОборот
|
|УПОРЯДОЧИТЬ ПО
| Контрагент
|ИТОГИ
| СУММА(Стоимость),
| СУММА(СтоимостьБезНДС)
|ПО
| Период,
| Регистратор,
| Контрагент";

// Инициализация текста запроса построителя отчета
УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;

// Представления полей отчета.
// Необходимо вызывать для каждого поля запроса.
// УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить(<ИмяПоля>, <ПредставлениеПоля>);
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Контрагент");   
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Регистратор"); 
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Период");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СтоимостьБезНДС");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Стоимость");

// Добавление показателей
// Необходимо вызывать для каждого добавляемого показателя.
// УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>);
УниверсальныйОтчет.ДобавитьПоказатель("Контрагент", НСтр("lv='Kontrahents';ru='Контрагент';en='Контрагент'"), Истина);
УниверсальныйОтчет.ДобавитьПоказатель("СтоимостьБезНДС", НСтр("lv='Bez PVN';ru='Без НДС';en='Без НДС'"), Истина, "ЧЦ=15; ЧДЦ=2");
УниверсальныйОтчет.ДобавитьПоказатель("Стоимость", НСтр("lv='Ar PVN';ru='С НДС';en='С НДС'"), Истина, "ЧЦ=15; ЧДЦ=2");

// Добавление предопределенных группировок строк отчета.
// Необходимо вызывать для каждой добавляемой группировки строки.
// УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Контрагент");
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Регистратор");
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Период");

// Добавление предопределенных отборов отчета.
// Необходимо вызывать для каждого добавляемого отбора.
// УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьОтбор("Контрагент");
УниверсальныйОтчет.ДобавитьОтбор("Регистратор");
УниверсальныйОтчет.ДобавитьОтбор("Период");

// Установка представлений полей
УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);

// Установка типов значений свойств в отборах отчета
УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора();

// Заполнение начальных настроек универсального отчета
УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);

КонецПроцедуры // УстановитьНачальныеНастройки()


продолжу разбираться, как вывести даннные.
Добавлено: 20 авг 2015, 14:53


При этом, если раскоментить строку УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;

то какие-то данные по работам выводятся.

vitasw

УниверсальныйОтчет.ДобавитьПоказатель - для добавления, грубо говоря ресурсов. чего влепили контрагента?

keramik

Блин, вот я голова варёная. Отбор делал по августу, а в августе нет ни одного документа со статусом "Выполнен" :)
Получилось вывести отчёт, не совсем красиво пока что, но прогресс есть.

Подправил запрос, чтобы учитывался период:
|ИЗ
| РегистрНакопления.АС_Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК АС_ПродажиОбороты

   
Добавлено: 20 авг 2015, 15:03


Цитата: vitasw от 20 авг 2015, 14:59
УниверсальныйОтчет.ДобавитьПоказатель - для добавления, грубо говоря ресурсов. чего влепили контрагента?
иначе не выводится нигде контрагент :( В приложении скрин с результатом отчёта.

vitasw

Контрагент не выводится потому-что нет секции Итоги построителя.
должно быть что-то типа:
|{ИТОГИ ПО
   |   Контрагент.*,
   |   Регистратор.*,
...
а итоги по запросу - не нужны.

keramik

Спасибо, буду ковырять запрос, чтобы выводить данные так как хочу.
Добавлено: 21 авг 2015, 11:34


Пока что не получается вывести данные в отчёт, подскажите может что-нибудь упустил. Ниже код процедуры:
Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт

// Настройка общих параметров универсального отчета

// Содержит название отчета, которое будет выводиться в шапке.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";
УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);

// Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;

// Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах";
УниверсальныйОтчет.ИмяРегистра = "АС_Продажи";

УниверсальныйОтчет.мИспользоватьПараметрыАвтомобиля = истина;

УниверсальныйОтчет.мВсеПоЛатышски = Истина;

ТекстЗапроса = "ВЫБРАТЬ
               | АС_ПродажиОбороты.Контрагент,
               | АС_ПродажиОбороты.Регистратор,
               | АС_ПродажиОбороты.СтоимостьБезНДСОборот КАК СтоимостьБезНДС,
               | АС_ПродажиОбороты.СтоимостьОборот КАК Стоимость
               |{ВЫБРАТЬ
               | Контрагент.*,
               | Регистратор.*,
               | СтоимостьБезНДС,
               | Стоимость}
               |ИЗ
               | РегистрНакопления.АС_Продажи.Обороты(&ДатаНач {(&ДатаНач)}, &ДатаКон {(&ДатаКон)}, Регистратор, ) КАК АС_ПродажиОбороты
               |ГДЕ
               | АС_ПродажиОбороты.Регистратор.Состояние = ЗНАЧЕНИЕ(Перечисление.СостояниеЗаказНаряда.Выполнен)
               |{ИТОГИ ПО
               | Контрагент.*,
   | СтоимостьБезНДС,
               | Стоимость}";
УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
// Заполнение начальных настроек универсального отчета
УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);

УниверсальныйОтчет.ДобавитьПоказатель("СтоимостьБезНДС",          "Pārdošanas summa bez PVN", Истина);
УниверсальныйОтчет.ДобавитьПоказатель("Стоимость",          "Pārdošanas summa ar PVN", Истина);

УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Контрагент", "Kontrahēnts");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СтоимостьБезНДС", "Summa bez PVN");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Стоимость", "Summa ar PVN");

// Добавление предопределенных группировок строк отчета.
// Необходимо вызывать для каждой добавляемой группировки строки.
// УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Контрагент");

// Добавление предопределенных отборов отчета.
// Необходимо вызывать для каждого добавляемого отбора.
// УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьОтбор("Контрагент");

// Добавление предопределенных полей порядка отчета.
// Необходимо вызывать для каждого добавляемого поля порядка.
// УниверсальныйОтчет.ДобавитьПорядок(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьПорядок("СтоимостьБезНДС");
УниверсальныйОтчет.ДобавитьПорядок("Стоимость");

КонецПроцедуры // УстановитьНачальныеНастройки()

При этом на ячейку с суммой в отчёте можно нажимать и предлагаются варианты расшифровки, но вот данных в ней нет никаких, кроме контрагента.
В приложении скрин с примером.
Добавлено: 21 авг 2015, 12:39


Получилось вывести данные, добавил в запросе самом условие суммировать значение стоимости и стоимости без НДС :zebzdr:
Добавлено: 21 авг 2015, 13:07


Ещё вопрос уточняющий, как скрыть из расшифровки поля Стоимость и СтоимостьБезНДС?
В приложении скрин расшифровки с полями.
Пробовал в процедуре прописать:
//УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СтоимостьБезНДС", "Summa bez PVN", Ложь);
//УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Стоимость", "Summa ar PVN", Ложь);

но тогда программа выкидывает сообщение "Too many actual parameters".
Добавлено: 21 авг 2015, 13:08


В процедуре условия раскоментированы.
Добавлено: 21 авг 2015, 13:20


Методом научного тыка вычислил, что в запросе вызывались эти Стоимость и СтоимостьБезНДС, а затем по ним же делал итоги. Удалил их и получилось нормально. Вот код запроса окончательный:
ВЫБРАТЬ
               | АС_ПродажиОбороты.Период,
               | АС_ПродажиОбороты.Регистратор,
               | АС_ПродажиОбороты.Цех,
               | АС_ПродажиОбороты.Контрагент,
               | АС_ПродажиОбороты.Автомобиль,
               | АС_ПродажиОбороты.ВидРемонта,
               | АС_ПродажиОбороты.Номенклатура,
               | СУММА(АС_ПродажиОбороты.СтоимостьОборот) КАК Стоимость,
               | СУММА(АС_ПродажиОбороты.СтоимостьБезНДСОборот) КАК СтоимостьБезНДС
               |{ВЫБРАТЬ
               | Период,
               | Регистратор.*,
               | Цех.*,
               | Контрагент.*,
               | Автомобиль.*,
               | ВидРемонта.*,
               | Номенклатура.*
               | Стоимость,
               | СтоимостьБезНДС}
               |ИЗ
               | РегистрНакопления.АС_Продажи.Обороты(&ДатаНач {(&ДатаНач)}, &ДатаКон {(&ДатаКон)}, Регистратор, ) КАК АС_ПродажиОбороты
               |ГДЕ
               | АС_ПродажиОбороты.Регистратор.Состояние = ЗНАЧЕНИЕ(Перечисление.СостояниеЗаказНаряда.Выполнен)
               |
               |СГРУППИРОВАТЬ ПО
               | АС_ПродажиОбороты.Период,
               | АС_ПродажиОбороты.Регистратор,
               | АС_ПродажиОбороты.Цех,
               | АС_ПродажиОбороты.Контрагент,
               | АС_ПродажиОбороты.Автомобиль,
               | АС_ПродажиОбороты.ВидРемонта,
               | АС_ПродажиОбороты.Номенклатура
               |{ИТОГИ ПО
               | Период,
               | Регистратор.*,
               | Цех.*,
               | Контрагент.*,
               | Автомобиль.*,
               | ВидРемонта.*,
               | Номенклатура.*}

Добавлено: 21 авг 2015, 14:42


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

Похожие темы (5)

Рейтинг@Mail.ru

Поиск