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

Повторяющиеся значения в отчете

Автор stelgi, 04 мая 2018, 15:43

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

stelgi

Учусь работать в 1с 8.2. Пишу базу по заданию. Вот есть задание сделать отчет, данные беру из регистра накопления. Но в результате выдает повторяющиеся значения, хотя их быть не должно.Ткань1 и Ткань3 были проведены через документ только 1 раз


KOI8-R

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

stelgi

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

Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);

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

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
ОбластьНаименование = Макет.ПолучитьОбласть("Наименование");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

ВыборкаОбщийИтог.Следующий(); // Общий итог
ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());

ВыборкаНаименование = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаНаименование.Следующий() Цикл
ОбластьНаименование.Параметры.Заполнить(ВыборкаНаименование);
ТабДок.Вывести(ОбластьНаименование, ВыборкаНаименование.Уровень());

ВыборкаДетальныеЗаписи = ВыборкаНаименование.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);

alex0402

Цитата: stelgi от 04 мая 2018, 16:14|ИЗ
| РегистрНакопления.РегистрВыпускаПродукции КАК РегистрВыпускаПродукции

Цитата: stelgi от 04 мая 2018, 16:14|ИТОГИ
| СУММА(Расход_Красителя)
из этого делаю вывод, что нужен приход. Для этого существует виртуальная таблица Обороты
Спасибо за Сказать спасибо

KOI8-R

А зачем вам вообще соединение? Вы же в любом случае все данные из виртуальных таблиц тащите?
Почему просто вот так не устроило?
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РегистрВыпускаПродукцииОбороты.ВыработкаТканиПриход КАК Выработка,
| РегистрВыпускаПродукцииОбороты.Код.РасходКрасителя КАК Расход_Красителя,
| РегистрВыпускаПродукцииОбороты.Код.Наименование КАК Наименование
|ИЗ
| РегистрНакопления.РегистрВыпускаПродукции.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК РегистрВыпускаПродукцииОбороты "

stelgi

Спасибо большое за помощь всем. Я разобрался.

Теги:

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

Рейтинг@Mail.ru

Поиск