Отчет на скд со своим макетом

1. EvgeniyNP 11.04.17 14:23 Сейчас в теме
Здравствуйте!
Делаю отчет, при помощи скд собираю данные, в процедуре ПриКомпоновкеРезультата проставляю значения запроса, которые неизменны.
Загвоздка в том, что информацию нужно вывести в макет, который при помощи СКД не нарисовать.
Делаю при помощи СКД, чтобы пользователи могли делать любые отборы и могли отправлять по почте в дальнейшем.

Собственно вопрос, как и на каком этапе перехватить выполненный запрос с пользовательскими отборами и закинуть данные в свою функцию по формированию табличного документа?
По теме из базы знаний
Найденные решения
43. user633533_encantado 11 13.04.17 18:04 Сейчас в теме
Вот мой пример, на другом регистре из другой конфигурации, все работает.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход2.erf
EvgeniyNP; +1 Ответить
46. EvgeniyNP 17.04.17 13:59 Сейчас в теме
(45) Спасибо большое. Получилось. Там еще как-то влияли сохраненные настройки, которые я не заметил ранее. Ну а теперь буду обрабатывать таблицу значений и выводить свой макет.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход - копия (3).erf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 11.04.17 14:39 Сейчас в теме
(1)
проставляю значения запроса, которые неизменны.
- устанавливаете параметры программно ?
3. EvgeniyNP 11.04.17 14:44 Сейчас в теме
(2) да.

	ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;
	
	КПСПереоценки = Новый СписокЗначений; 
	КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));
	
	
	Массив = новый Массив;
	Для каждого Стр из ВернутьМассивКЭК("200") Цикл
		Массив.Добавить(Стр);	
	КонецЦикла;
	Для каждого Стр из ВернутьМассивКЭК("300") Цикл
		Массив.Добавить(Стр);	
	КонецЦикла;
	
	
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
	ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
	ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);
Показать
4. Tigreno 11.04.17 14:48 Сейчас в теме
Компонуй скд но выводи не в табличный документ а таблицу значений..... ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
А дальше формируй свой отчет по данным таблицы
5. EvgeniyNP 11.04.17 14:52 Сейчас в теме
(4) в процедуре ПриКомпоновкеРезультата я должен сделать СтандартнаяОбработка = Ложь ?

и ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений будет после проставления параметров?
6. user633533_encantado 11 11.04.17 14:57 Сейчас в теме
(5) Да, в результате получишь таблицу значений сформированную скд, после этого делай с ней что хочешь, вставляй данные в любой макет.
7. EvgeniyNP 11.04.17 15:11 Сейчас в теме
(6)я на правильном пути?
	СтандартнаяОбработка = Ложь;
	
	Настройки = КомпоновщикНастроек.Настройки;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
	ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;
	
	КПСПереоценки = Новый СписокЗначений; 
	КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));
	
	
	Массив = новый Массив;
	Для каждого Стр из ВернутьМассивКЭК("200") Цикл
		Массив.Добавить(Стр);	
	КонецЦикла;
	Для каждого Стр из ВернутьМассивКЭК("300") Цикл
		Массив.Добавить(Стр);	
	КонецЦикла;
	
	
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
	ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
	ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);
	
	ТаблицаДанных = Новый ТаблицаЗначений;
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	ПроцессорВывода.УстановитьОбъект(ТаблицаДанных);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать
8. user633533_encantado 11 11.04.17 15:33 Сейчас в теме
	   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
					   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
					   
					   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
					   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
					   
					   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
					   
					   ТаблицаЗначений =  Новый ТаблицаЗначений;
					   ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
					   ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать
9. EvgeniyNP 11.04.17 15:39 Сейчас в теме
(8) а параметры запроса, которые я устанавливаю, нужно присвоить до процессорВывода?
10. user633533_encantado 11 11.04.17 15:42 Сейчас в теме
КомпановщикМакета выполняется с настройками из компоновщикаНастроек, все параметры уже должны быть установлены в компоновщике настроек.
11. EvgeniyNP 11.04.17 15:55 Сейчас в теме
(10)вот так верно?
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;
	
	КПСПереоценки = Новый СписокЗначений; 
	КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));
	
	Массив = новый Массив;
	Для каждого Стр из ВернутьМассивКЭК("200") Цикл
		Массив.Добавить(Стр);	
	КонецЦикла;
	Для каждого Стр из ВернутьМассивКЭК("300") Цикл
		Массив.Добавить(Стр);	
	КонецЦикла;
	
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
	ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
	ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
	ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	
	ТаблицаЗначений =  Новый ТаблицаЗначений;
	ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
КонецПроцедуры
Показать
12. user633533_encantado 11 11.04.17 16:27 Сейчас в теме
13. necropunk 9 11.04.17 16:32 Сейчас в теме
(11) Вы в переменную "ПараметрыДанных" засовываете "КомпоновщикНастроек.Настройки.ПараметрыДанных", эту структуру меняете, а в макет передаете "КомпоновщикНастроек.ПолучитьНастройки()". Я не уверен, что он заново не получит настройки и не перезатрет параметры. А может быть, я просто привык использовать КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы. В общем, если не заработает - проверьте этот момент, на всякий случай.
14. user633533_encantado 11 11.04.17 16:40 Сейчас в теме
(13) Нормально все будет. ПолучитьНастройки получит копию настроек, в том числе и новые установленные до этого параметры.
15. EvgeniyNP 11.04.17 16:48 Сейчас в теме
(14) Спасибо, буду пробовать дальше
16. EvgeniyNP 12.04.17 10:42 Сейчас в теме
(14) Пробую посмотреть, что будет в таблице значений и в этой строке
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));


выскакивает выскакивает ошибка на скрине. Куда копать не подскажите?
В скд на закладке настройки, отчета нет и детальных записей тоже
Прикрепленные файлы:
17. user633533_encantado 11 12.04.17 11:06 Сейчас в теме
Он у вас не выполняется по какой-то причине, возможно обязательные параметры не установлены или просто ошибка в схеме.
Вам нужно проверить работу этой схемы с этими параметрами до того, как вы будете выполнять ее программно.
alex-l19041; +1 Ответить
18. EvgeniyNP 12.04.17 11:24 Сейчас в теме
(17)Попробовал. Добавил в настройки детальные записи и убрал из модуля все, кроме программного заполнения параметров. Все сформировалось
19. user633533_encantado 11 12.04.17 11:45 Сейчас в теме
Попробуй так:

Попытка
 МакетКомпоновки = КомпоновщикМакета.Выполнить(....
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
20. EvgeniyNP 12.04.17 11:49 Сейчас в теме
(19)я решил посмотреть что лежит в компоновщикенастроек и обнаружилось, что ДатаНачала и ДатаОкончания, которые заполняются через период с типом СтандартныйПериод (&Период.ДатаНачала и &Период.ДатаОкончания) и счета, которые заполняются через выражение БухгалтерскийУчетПовтИсп.ПолучитьМассивСчетов("17.01,17.03,17.07,17.34"), не заполнены. хочу сейчас их заполнить тоже в модуле.
21. EvgeniyNP 12.04.17 13:33 Сейчас в теме
(19)
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;


Параметры проставил, но это не помогло.
Попытка-Исключение выдала :
{ВнешнийОтчет.Отчетдоходрасход.МодульОбъекта(33)}: Ошибка при вызове метода контекста (Выполнить): Ошибка компоновки макета: Ошибка генерации макета: Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений
22. user633533_encantado 11 12.04.17 14:08 Сейчас в теме
Так какая структура отчета у тебя, покажи настройки скд ?
23. EvgeniyNP 12.04.17 14:32 Сейчас в теме
(22)вот такие. в выбранных полях ничего нет
Прикрепленные файлы:
24. user633533_encantado 11 12.04.17 14:44 Сейчас в теме
На закладке настройка у тебя нет ни одной группировки, что ты собираешься выводить ?
25. EvgeniyNP 12.04.17 14:50 Сейчас в теме
(24)я там детальные записи делал, не помогло
26. user633533_encantado 11 12.04.17 14:52 Сейчас в теме
Ну не знаю, что ты там делал, но с такими настройками конечно работать не будет.
27. EvgeniyNP 12.04.17 14:54 Сейчас в теме
(26)я сейчас добавил детальные записи, та же ошибка.
добавил группировку и в выбранные поля добавил сумму. не помогло.
28. user633533_encantado 11 12.04.17 14:55 Сейчас в теме
Покажи настройки и поля в группировке.
29. EvgeniyNP 12.04.17 15:34 Сейчас в теме
(28)какие именно настройки показать?
30. user633533_encantado 11 12.04.17 16:10 Сейчас в теме
В настройках скд, что на закладке "Настройки"
31. EvgeniyNP 12.04.17 16:22 Сейчас в теме
(30)вот
Прикрепленные файлы:
32. user633533_encantado 11 12.04.17 16:23 Сейчас в теме
(31) И что, при программном выводе та же ошибка ?
33. EvgeniyNP 12.04.17 16:30 Сейчас в теме
34. Ганс 12.04.17 16:35 Сейчас в теме
Что за макет такой, который не нарисовать на СКД, можно картиночку?

Может где-то пропустил, какая конфигурация? Можете сам файл прикрепить или хотя бы файл со схемой!
36. EvgeniyNP 12.04.17 16:47 Сейчас в теме
(34) Конфа БГУ 2.
Вот отчет. Наметки макета в нем можно увидеть
Прикрепленные файлы:
МФТИ_Отчетдоходрасход.erf
35. user633533_encantado 11 12.04.17 16:38 Сейчас в теме
37. Ганс 12.04.17 17:18 Сейчас в теме
К сожалению БГУ под рукой нет...
Вариант такой: попробуйте создать форму для этого отчёта, параметры заполняйте при открытии, затем в настройках убедитесь что они все заполнены, если не формируется, поэксперементируйте с конструктором настроек(добавте/уберите поля), так или иначе вы должны сперва заставить сформироваться отчёт в обычном режиме и только после этого переделывать его на программный(по факту, код у вас вроде рабочий) (БГУ будет только завтра, если не победите, может что дельное смогу подсказать...)
42. EvgeniyNP 13.04.17 17:53 Сейчас в теме
38. user633533_encantado 11 12.04.17 18:04 Сейчас в теме
Я заменил регистр и убрал все параметры у меня заработало, тоже бгу нет под рукой.
39. EvgeniyNP 13.04.17 10:43 Сейчас в теме
(38)в смысле убрал параметры?
40. user633533_encantado 11 13.04.17 11:30 Сейчас в теме
У тебя в отчете много параметров разных, я упростил запрос, убрал все эти параметры, которые есть у тебя и все заработало.
41. EvgeniyNP 13.04.17 17:53 Сейчас в теме
(40) я максимально упростил запрос, избавился от всех параметров, но это не помогло.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход - копия (2).erf
43. user633533_encantado 11 13.04.17 18:04 Сейчас в теме
Вот мой пример, на другом регистре из другой конфигурации, все работает.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход2.erf
EvgeniyNP; +1 Ответить
44. EvgeniyNP 14.04.17 09:07 Сейчас в теме
(43) а в какой конфе смотреть?
45. user633533_encantado 11 14.04.17 09:35 Сейчас в теме
46. EvgeniyNP 17.04.17 13:59 Сейчас в теме
(45) Спасибо большое. Получилось. Там еще как-то влияли сохраненные настройки, которые я не заметил ранее. Ну а теперь буду обрабатывать таблицу значений и выводить свой макет.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход - копия (3).erf
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот