powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Отчет шахматка в УТ10.3
8 сообщений из 8, страница 1 из 1
Отчет шахматка в УТ10.3
    #35926911
rubi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте. У меня возникла проблема с созданием отчета шахматка в УТ10.3. Суть отчета в том, что в строках идет номенклатура, а в столбцах склады (соответственно, в столбцах количество, стоимость и т.д., это не так важно). Проблема именно с выводом отчета, т.е. использую стандартные методы Присоединить() и Вывести() и получаю "некрасивый" отчет. Просто хотелось бы, идя по выборке из запроса, добавлять при необходимости колонки склада и заносить в нужные колонки (т.е. на пересечениях колонок и строк) данные.
код формирования отчета такой:

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

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

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

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

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

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

Иначе

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

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


Может быть есть какой-то пример по формированию шахматки. Все-таки, отчет распространенный. Или подскажите, как лучше его формировать.
Картинка с результатом и макетом прикреплены.
...
Рейтинг: 0 / 0
Отчет шахматка в УТ10.3
    #35926964
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кури мехнизм компоновки данных.
Там такой отчет минут за 5 настраивается.
Или используй хотя бы ПостроительОтчета.
В мире 1С 8 не принято строить шахматки тупыми методами 7.7.
...
Рейтинг: 0 / 0
Отчет шахматка в УТ10.3
    #35927194
rubi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сисой,

так я бы и не против, вроде как. Просто здесь для меня ринципиальным является вид конечной таблицы отчета. Т.е. такие вещи, как напримр, ширина колонок и др. Это можно как то настроить?
...
Рейтинг: 0 / 0
Отчет шахматка в УТ10.3
    #35927285
serge_b77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По мере выборки и получится,то что получилось.
А отчет весьма распостраненный.В 7.7 его тоже получают методом присоединения,только в начале строится шапка,со всеми складами запроса (смотри ТиС 9.2).
В 8.1 все намного проще:в компоновке настраивается такой отчет.Для продвинутого пользователя - можно и макет свой сделать.
...
Рейтинг: 0 / 0
Отчет шахматка в УТ10.3
    #35927433
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rubiСисой,

так я бы и не против, вроде как. Просто здесь для меня ринципиальным является вид конечной таблицы отчета. Т.е. такие вещи, как напримр, ширина колонок и др. Это можно как то настроить?

Да, в СКД настраивается ширина колонок.
...
Рейтинг: 0 / 0
Отчет шахматка в УТ10.3
    #35927657
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если без СКД, то этот запрос гарантирует "полную" шахматку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
ВЫБРАТЬ
	ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,  0 ) КАК КонОст,
	ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,  0 ) КАК Приход,
	ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,  0 ) КАК Расход,
	ВложенныйЗапрос.Склад КАК Склад,
	ВложенныйЗапрос1.Номенклатура КАК Номенклатура
ИЗ
	(ВЫБРАТЬ РАЗЛИЧНЫЕ
		ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад
	ИЗ
		РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаОконч, , , ) КАК ТоварыНаСкладахОстаткиИОбороты) КАК ВложенныйЗапрос
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаОконч, , , ) КАК ТоварыНаСкладахОстаткиИОбороты
			ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
				ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура
			ИЗ
				РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаОконч, , , ) КАК ТоварыНаСкладахОстаткиИОбороты) КАК ВложенныйЗапрос1
			ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВложенныйЗапрос1.Номенклатура
		ПО ТоварыНаСкладахОстаткиИОбороты.Склад = ВложенныйЗапрос.Склад
ИТОГИ
	СУММА(КонОст),
	СУММА(Приход),
	СУММА(Расход)
ПО
	Номенклатура,
	Склад
...
Рейтинг: 0 / 0
Отчет шахматка в УТ10.3
    #35933432
rubi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,
спасибо большое, подошло и очень помогло. Я этот запрос поместил в сводную таблицу (просто так внешний вид больше подходит). Но группировку там сделал по складам (т.е. в строках номенклатура, колонки - склады и детализация колонок складов - коност, приход и расход). Так вот, вопрос в том, что можно ли как то убрать из детализации часть колонок (напр, приход и расход), а оставить только итоги по ним?
...
Рейтинг: 0 / 0
Отчет шахматка в УТ10.3
    #35933455
rubi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, кстати, а в сводной таблице можно регулировать ширину колонок. И если можно, то подскажите пожайлуста как.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Отчет шахматка в УТ10.3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]