Отборы в отчётах. Нюансы работы компоновщика настроек.

0. Яков Коган (Yashazz) 2231 14.08.16 11:09 Сейчас в теме
Открытие отчёта с предустановленным отбором, показанным пользователю. Изменение любых настроек в процессе работы отчёта. Взаимосвязи настроек.

Перейти к публикации

Комментарии
1. Валерий Гайдабура (director04) 3511 16.08.16 07:28 Сейчас в теме
До сей статьи каша в голове (по поводу отборов компоновки данных) была, но не очень густая.
После прочтений половины (до конца не дошел - голова закружилась и мысль убежала на переферию) каша в голове загустела, и появилось раздражение ....
На мой взгляд, статье не хватает систематичности и пунктуальности.

Автор и другие читари, могут со мною не согласится. У каждого свое мнение.
HystriX; dj_serega; корум; Lisena_Xitrena; kasper076; myr4ik07; Makushimo; Solovyeff; dabu-dabu; alest; sigmov; SuhoffGV; rozer; Сурикат; the1; mszsuz; Yashazz; Alien_job; A56; +19 Ответить
18. Михаил Звонилов (StudentM) 11 09.02.18 20:09 Сейчас в теме
(1) Валерий, в первом комментарии, я бы поблагодарил бы автора за поднятие такой важной и интересной темы! А разбираться с настройками СКД следует "с карандашом и калькулятором", т.е. постепенно и тщательно. В том числе с привлечением отладчика, СП, ИТС (Руководство разработчика), книг Проф Разработка и книг Елены Юрьевны Хрусталёвой (например, Разработка сложных отчётов Глава 3 Справочник разработчика - Настройки отчета).
2. Яков Коган (Yashazz) 2231 16.08.16 10:28 Сейчас в теме
Так я и сам соглашусь. Только - в чём беда - любое увеличение систематичности приводит к необходимости раскатать это на вдвое-втрое больший объём, или оставить некоторые вещи неосвещёнными совсем. Ну и пришлось бы гораздо больше копипастить общедоступные ресурсы, а я этого не люблю и потому пропустил.

Сам понимаю, что каша. Подступался несколько раз, довёл хотя бы до такого вида.

А вот про пунктуальность не понял, поясните.
3. Максим Гончаров (maxx) 614 16.08.16 20:24 Сейчас в теме
Может блок - схемы или mind-карты добавить
4. Яков Коган (Yashazz) 2231 16.08.16 21:26 Сейчас в теме
(3) maxx, как вариант, можно) Я хотел, кстати, графическую схемку набросать об этом всём, но - честно - просто не успел. Выходные кончились(( Авось осилю чуть позже...
5. Дмитрий К (SuhoffGV) 17.08.16 15:26 Сейчас в теме
(3) maxx, Или популярные кейсы описать. Читать очень тяжело.
6. Ivan Kovtun (i.kovtun) 131 19.08.16 20:58 Сейчас в теме
Мне кажется, нужно всегда с mind-карты начинать. Во вступлении нужно определить цели статьи, сформулировать задачи. Затем расписать пути решения, входящие в них этапы. Подвести итоги и сделать выводы. Все как всегда: завязка, развязка, кульминация:) Кстати, если таким образом подойти к предмету, тогда у разделов появятся "говорящие" заголовки, а не номера.
И еще, мне также кажется, что лучше не злоупотреблять сложноподчиненными предложениями, это сбивает темп чтения. Не стоит заворачивать неоформленную мысль в одно длинное предложение. Лучше пару минут подумать и написать несколько простых фраз.
7. Яков Коган (Yashazz) 2231 21.08.16 10:38 Сейчас в теме
(6) i.kovtun, насчёт неоформленной мысли не совсем понял. Если я нечто пишу, следовательно, имею целиком и полностью оформленную мысль. К длине и сложности выстраиваемых предложений это не имеет ни малейшего отношения.

Что до остального, то:
1. Это не статья как таковая. Это заметки.
2. Чем, на ваш взгляд, цели отличаются от задач?
3. Пути решения и их этапы - это практика. Вы предлагаете выкинуть теорию и демонстрировать "голые" примеры?
8. Алексей Апанасович (Aphanas) 116 01.10.16 17:30 Сейчас в теме
Автор, нужен ВЫВОД. Вывода нет, непонятно о чем разговор. Я ньюансы знаю, интересно только к чему ты пришел.
9. Яков Коган (Yashazz) 2231 01.10.16 21:57 Сейчас в теме
(8) Aphanas, не может быть никакого единого вывода. Это всё равно, что спросить "какой вывод из 1С?" Ну вот, я для себя сделал вывод, что эта часть системы весьма разветвлённая, местами избыточная и переусложнённая, и недостаточно документирована и снабжена примерами. Так пойдёт?))
10. ффф ыыы (zqzq) 17 03.10.16 08:37 Сейчас в теме
Как-то сумбурно. Хотелось бы разбить на подразделы: 1.1. Конкретная задача - 1.2. Код решения - 1.3. Теоретическое объяснение решения.

Например, если нужно из текущего отчета открыть другой отчет и передать туда параметр(ы) с возможностью изменения я поступаю просто:
	Парам = Новый Структура;
	Парам.Вставить("КлючВарианта", "Основной"); 
	Парам.Вставить("КлючНазначенияИспользования", "РасшифровкаИз");
   
	НоваяФорма = ПолучитьФорму("Отчет.НекийОтчет.Форма", Парам, ЭтаФорма);
		
	//Передаём в новую форму период отчета (так, чтобы отображался пользователю)
	НоваяФорма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(
		НоваяФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
		Новый ПараметрКомпоновкиДанных("ПериодОтчета")).ИдентификаторПользовательскойНастройки).Значение 
		= ЭтаФорма.Отчет.КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных
		.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета")).Значение;	
		
	НоваяФорма.Открыть();	
	НоваяФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);	
Показать
Может, не по фен-шую, зато работает и есть не просит.


Lisena_Xitrena; +1 Ответить
11. Максим Кузнецов (Makushimo) 152 03.10.16 14:14 Сейчас в теме
очень тяжело читать.
Заметки или теория, но текст мертвый, как латынь.
12. Олег Веселов (sml) 37 19.05.17 09:44 Сейчас в теме
ДД, Процедура ИзменитьСКД() в каком месте вызывается?
13. Александр Чернышов (HEKPOH) 66 19.05.17 11:51 Сейчас в теме
14. Имя Фамилия (dctvghbdtn) 07.06.17 11:20 Сейчас в теме
Посоветуйте пожалуйста как поступить.

Есть отчет в ЗУП, Табель учета рабочего времени. Подписывает его Руководитель. Программа ставит руководителя предприятия. Нас это не устраивает.

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

Просто на форму отчета вынести реквизит нельзя. Т.к. это общая форма для всех отчетов, а сам отчет формируется в модуле объекта отчета.

Было принято решение добавить этот параметр в СКД программно и потом его уже обрабатывать, по аналогии с параметром Ответственный того же отчета.

Параметр допустим называется Руководитель.

В СКД вроде как бы все хорошо добавляется на начальном этапе, но потом все затирается, не пойму где. :(

Добавил в общую форму ФормаОтчета в процедуру ПередЗагрузкойПользовательскихНастроекНаСервере код:

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

Показать


На форме появляется параметр, в СКД он как бы тоже есть, но при формировании отчета параметр пропадает и при нажатии кнопки Настройка тоже из интерфейса исчезает. :(
15. IrinaKostroma (IrinaKostroma) 12.09.17 19:41 Сейчас в теме
Молодец, что написал! Критиковать легко, а хоть какие то свои мысли и заметки написать не каждый может
StudentM; +1 Ответить
16. Олег Николаев (o.nikolaev) 222 01.11.17 20:58 Сейчас в теме
Шикарная статья! Спасибо!
17. oleg kaminskiy (leshiy26) 142 12.01.18 23:07 Сейчас в теме
Для себя выделил:
- Пользовательские настройки - программно не трогаем. На то они и пользовательские.
- Если нужно заполнить какие-то настройки / отборы программно - используем событие формы ПриОбновленииСоставаПользовательскихНастроекНаСервере(), заполняем напрямую Отчет.КомпоновщикНастроек.Настройки.
- Если нужно открыть форму с заполненными настройками- передаем значения в параметрах
20. PerlAmutor IC (PerlAmutor) 25 12.04.18 11:42 Сейчас в теме
(17)
ПриОбновленииСоставаПользовательскихНастроекНаСервере

Это событие вызывается при каждом чихе. Пытался заполнять пользовательские настройки по этому события через ПередЗаполнениемПанелиБыстрыхНастроек / ПослеЗаполненияПанелиБыстрыхНастроек в модуле отчета. В итоге это событие вызывается при нажатии на кнопку "Настройки" формы отчета, при смене вкладок этой формы, при закрытии этой формы настроек. И при этом фактически пользователь не меняет ни одну из настроек. Если в обработчике этого события идет тяжелый запрос к БД, то понятно к чему это все приводит.
Пробовал ставить настройки в событии ПриЗагрузкеВариантаНаСервере, настройки пользователя ставятся ровно 1 раз до выхода из формы. Затем они всегда перезаполняются поверх этих настроек повторно из пользовательских сохраненных в прошлый раз. С одной стороны логично, что пользователю могут не нравится предустановленные изначально параметры и т.д. А с другой - хочется контролировать то, что он там навыбирал и поправить в случае необходимости.
19. Яков Коган (Yashazz) 2231 10.02.18 18:45 Сейчас в теме
На самом деле если нужно открыть форму с такими настройками, чтобы было видно пользователю, например, форму динамического списка, то это именно пользовательские настройки надо делать, добавлять туда элементы отбора или сам отбор. В этом смысле Настройки или Отбор ничего не покажут юзеру, их не видно. И вообще они очень непрозрачно накладываются друг на друга.
В своё время общался с Белоусовым на эту тему, он так прямо и сказал, что доделывали платформу в несколько заходов, поэтому получилась дикая неоднозначность и путаница, но теперь уж как есть (((
Оставьте свое сообщение