отчет шахматка в УТ 10.3

  • Автор темы rubi
  • Дата начала
R

rubi

Гость
#1
Всем здравствуйте. У меня возникла проблема с созданием отчета шахматка в УТ10.3. Суть отчета в том, что в строках идет номенклатура, а в столбцах склады (соответственно, в столбцах количество, стоимость и т.д., это не так важно). Проблема именно с выводом отчета, т.е. использую стандартные методы Присоединить() и Вывести() и получаю "некрасивый" отчет, где секция количества и стоимости товара на складе смещена вниз относительно строки. К тому же, мне нужно чтобы имя склада выводилось в шапке, а получается, что в строках. Просто хотелось бы, идя по выборке из запроса, добавлять при необходимости колонки склада и заносить в нужные колонки (т.е. на пересечениях колонок и строк) данные.
код формирования отчета такой:

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

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

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

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

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

ВыборкаДетали = Результат.Выбрать();
ТаблицаСкладов = Новый ТаблицаЗначений;
ТаблицаСкладов.Колонки.Добавить("Склад");
Пока ВыборкаДетали.Следующий() Цикл
СкладУжеЕсть = Ложь;
КолонкаСклада = 0;
Для Инт = 0 По ТаблицаСкладов.Количество()-1 Цикл
Если ТаблицаСкладов[Инт].Склад = ВыборкаДетали.Склад Тогда
СкладУжеЕсть = Истина;
КонецЕсли;
КонецЦикла;
Если СкладУжеЕсть = Ложь Тогда
ОбластьСклады.Параметры["Склад"] = ВыборкаДетали.Склад;
ОбластьСклады.Параметры["ХарактеристикаНоменклатуры"] = ВыборкаДетали.ХарактеристикаНоменклатуры;
ОбластьСклады.Параметры["Сумма"] = "12345";
ОбластьДетальныхЗаписей.Присоединить(ОбластьСклады);
СтрокаСклада = ТаблицаСкладов.Добавить();
СтрокаСклада.Склад = ВыборкаДетали.Склад;
ОбластьДетальныхЗаписей.Параметры["Номенклатура"]= ВыборкаДетали.Номенклатура;
ТабДок.Вывести(ОбластьДетальныхЗаписей);

Иначе

ОбластьДетальныхЗаписей.Параметры["Номенклатура"]= ВыборкаДетали.Номенклатура;
ОбластьСклады.Параметры["ХарактеристикаНоменклатуры"] = ВыборкаДетали.ХарактеристикаНоменклатуры;
ОбластьСклады.Параметры["Сумма"] = "1234";
ТабДок.Вывести(ОбластьДетальныхЗаписей);
КонецЕсли;
КонецЦикла;

ТабДок.Показать("Шахматка");


Может быть есть какой-то пример по формированию шахматки. Все-таки, отчет распространенный. Или подскажите, как лучше его формировать.
 

Вложения

unknown181538

НеГуру
28.12.2008
1 417
0
#2
У вас областями являются щелые строки. Попробуйте задать отдельные ячейки. Т.е. обастью "детали" сделать только левые 5 ячеек.
 
R

rubi

Гость
#3
Большое спасибо за совет. В итоге причина была в том, что область Склады присоединялась к области Детали, и присоединялась, начиная с верхней строчки области Склады. Надо было присоединять к области заголовок.