[СКД] Данные нижеприведенного запроса по контактной информации контрагентов выводятся с помощью СКД в табличный документ.

1. Владимир Евтушенко (allgorhythm) 23.12.16 15:20 Сейчас в теме
1. Как отобразить колонку АДРЕС в группировках?

ВЫБРАТЬ
	Контрагенты.Ссылка КАК Контрагент,
	КонтактнаяИнформация.Вид КАК ВидКонтакта,
	КонтактнаяИнформация.Тип КАК ТипКонтакта,
	КонтактнаяИнформация.Представление КАК ПредставлениеКонтакта
ИЗ
	Справочник.Контрагенты КАК Контрагенты
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
		ПО (КонтактнаяИнформация.Объект = Контрагенты.Ссылка)
...Показать Скрыть


При группировке данных по контрагентам отчет выводится в виде




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




2. Следующий запрос выводит в отчет, построенный на основе СКД, список авансовых отчетов..

ВЫБРАТЬ
	АвансовыйОтчет.Номер,
	АвансовыйОтчет.Дата,
	АвансовыйОтчет.СуммаДокумента
ИЗ
	Документ.АвансовыйОтчет КАК АвансовыйОтчет
...Показать Скрыть


Получается отчет виде


Дата Номер Сумма документа
09.06.09 00000000002 2 400,00
19.06.09 00000000003 401 000,00
13.11.09 00000000004 1 200,00


Каким образом сделать так, чтобы номер выводился в отчет без лидирующих нулей?


Дата Номер Сумма документа
09.06.09 2 2 400,00
19.06.09 3 401 000,00
13.11.09 4 1 200,00
Ответы
2. Владимир Евтушенко (allgorhythm) 23.12.16 22:53 Сейчас в теме
Второй пункт я сделал сам,
в принципе это - не сложно,
делаем форму отчета,
в ней сами прописываем команду Сформировать и
в ней пишем код ниже:

&НаКлиенте
Процедура Сформировать(Команда)
	Для Ном=1 По Результат.ВысотаТаблицы Цикл
		Область = Результат.Область("R"+Ном+"C2");
		Пока Найти(Область.Текст, "0") Цикл
			Область.Текст = СтрЗаменить(Область.Текст, 0, "");
		КонецЦикла
	КонецЦикла;	
	          
КонецПроцедуры
...Показать Скрыть
3. Денис Ан (Denis_CFO) 4 24.12.16 05:58 Сейчас в теме
(2) боюсь при таком подходе у вас будут выводится номера не верные... Вы же все нули заменяете... У вас из 101 номера 11 получится....
4. Денис Ан (Denis_CFO) 4 24.12.16 06:11 Сейчас в теме
(2)
&НаКлиенте
Процедура Сформировать(Команда)
    Для Ном=1 По Результат.ВысотаТаблицы Цикл
        Область = Результат.Область("R"+Ном+"C2");
        Пока Лев(Область.Текст, 1) = "0" Цикл
                 Область.Текст = Сред(Область.Текст, 2);
        КонецЦикла
    КонецЦикла;    
КонецПроцедуры
...Показать Скрыть
5. Владимир Евтушенко (allgorhythm) 25.12.16 17:41 Сейчас в теме
(4) Да. Нолики не теряются,
выкладываю нормальный код по этому вопросу.


&НаКлиенте
Процедура Сформировать(Команда)
	СформироватьСРВ();	
	Для Ном=1 По Результат.ВысотаТаблицы Цикл
	    Область = Результат.Область("R"+Ном+"C2");
	    Пока Лев(Область.Текст, 1) = "0" Цикл
	             Область.Текст = Сред(Область.Текст, 2);
		КонецЦикла
	КонецЦикла;	
	          
КонецПроцедуры

&НаСервере
Процедура СформироватьСРВ()
	Результат.Очистить();
	СКД = РеквизитФормыВЗначение("Отчет",Тип("ОтчетОбъект")).ПолучитьСКД(); 
	КомпМак = Новый КомпоновщикМакетаКомпоновкиДанных;
	ПроцКД = Новый ПроцессорКомпоновкиДанных;
	ПроцКД.Инициализировать(КомпМак.Выполнить(СКД, СКД.НастройкиПоУмолчанию));
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.ОтображатьПроцентВывода = Ложь;
	ПроцессорВывода.УстановитьДокумент(Результат);
	ПроцессорВывода.Вывести(ПроцКД, Ложь);
	
КонецПроцедуры
...Показать Скрыть


В модуле объекта
Функция ПолучитьСКД() Экспорт
 возврат ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КонецФункции // ПолучитьМакет() Экспорт()
...Показать Скрыть
Оставьте свое сообщение