|
Идентификация схемы компоновки данных | ☑ | ||
---|---|---|---|---|
0
rowvg
naïve
21.09.21
✎
16:10
|
Подскажите, пожалуйста, как можно идентифицировать схему компоновки данных в обработчике ПриКомпоновкеРезультата(). У меня в отчете их две и мне нужно в коде различать какая текущая?
|
|||
1
acht
21.09.21
✎
16:12
|
(0) Очевидно, что в схамах есть какие-то известные различия, которые можно проверить программно.
|
|||
2
rowvg
naïve
21.09.21
✎
16:15
|
(1) имя набора данных можно проверять
Но может ест более изящный способ? |
|||
3
acht
21.09.21
✎
16:26
|
(2) Что такое "изящество"?
|
|||
4
pechkin
21.09.21
✎
16:28
|
если это уф, то там нельзя никак схему подменить
|
|||
5
rowvg
naïve
21.09.21
✎
16:29
|
(4) Я меняю, проблема только с параметрами и отборами. Загружаются по умолчанию пустые.
|
|||
6
rowvg
naïve
21.09.21
✎
16:30
|
(3) ИмяСхемы = СхемаКомпоновкиДанных.Имя;
|
|||
7
Pro-tone
21.09.21
✎
16:30
|
(0) в метаданных отчета прописана основная СКД, отладчиком при компоновке понять какая там в свойстве его если подменяется, хотя большой вопрос можно ли ее подменить вообще
|
|||
8
acht
21.09.21
✎
16:31
|
(4) > нельзя никак схему подменить.
ОтчетОбъект = Отчеты.МойОтчет.Создать(); ОтчетОбъект.СхемаКомпоновкиДанных = МояСхемаКомпоновкиДанных; ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(МоиНастройки); ОтчетОбъект.СкомпоноватьРезультат(Результат, Расшифровка); Ой =) |
|||
9
polosov
21.09.21
✎
16:31
|
(4) Это когда стало нельзя?
|
|||
10
pechkin
21.09.21
✎
16:31
|
(5) а как ты меняешь?
|
|||
11
polosov
21.09.21
✎
16:32
|
+(4) А, ты имел в виду в этом событии?
|
|||
12
pechkin
21.09.21
✎
16:32
|
(9) ну кроме как (8), но это немного другое
|
|||
13
acht
21.09.21
✎
16:32
|
Тут кстати ливингстар подобным страдал - пробрасывал информацию в обработчик...
|
|||
14
rowvg
naïve
21.09.21
✎
16:33
|
(10)
СхемаКомпоновкиДанных = ПолучитьМакет("МояСхема"); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки(); КомплновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомплновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); |
|||
15
acht
21.09.21
✎
16:33
|
(6) У схемы нет ни имени ни иденфтиикатора.
|
|||
16
acht
21.09.21
✎
16:34
|
(14) Это все где происходит - в ПриКомпоновкеРезультата?
|
|||
17
pechkin
21.09.21
✎
16:34
|
можно имя основного варианта использовать
|
|||
18
acht
21.09.21
✎
16:35
|
(17) Чем отличается от (2)?
|
|||
19
polosov
21.09.21
✎
16:35
|
(14) Ну так добавь в отчет реквизит и пиши туда "Схема1" или "Схема2" в момент выбора схемы.
|
|||
20
rowvg
naïve
21.09.21
✎
16:36
|
(16) да
(17) его и использую, но это хардкор |
|||
21
Малыш Джон
21.09.21
✎
16:36
|
(14) >>СхемаКомпоновкиДанных = ПолучитьМакет("МояСхема");
ну вот такой способ идентификации чем не нравится? |
|||
22
acht
21.09.21
✎
16:36
|
(20) > да
Поздравляю, ты знаешь, что это за схема. |
|||
23
polosov
21.09.21
✎
16:37
|
(22) Человеку похоже пообедать пора )
|
|||
24
rowvg
naïve
21.09.21
✎
16:38
|
(22) да, но это некрасиво потому что хардкор
|
|||
25
rowvg
naïve
21.09.21
✎
16:39
|
(23) << Человеку похоже пообедать пора )
Еще раз, это не красиво |
|||
26
polosov
21.09.21
✎
16:40
|
У человека передоз "Чистого кода", он хардкор с хардкодом путает. Срочно за чтение ЖКК!
|
|||
27
Малыш Джон
21.09.21
✎
16:40
|
(25) какой ты эстет...
|
|||
28
1Сергей
21.09.21
✎
16:40
|
Эстетам не место в индустрии)
|
|||
29
acht
21.09.21
✎
16:40
|
(24) Расскажи, пожадуйста - что ты хочешь. Дай определение "идентифицировать схему компоновки данных в обработчике ПриКомпоновкеРезультата()", исходное положение какое-нибудь.
К накрашенным ресничкам потом аппелировать будешь. |
|||
30
rowvg
naïve
21.09.21
✎
16:41
|
(26) Объясни по-человечески как узнать имя текущей схемы. нет времени читать ЖКК.
|
|||
31
acht
21.09.21
✎
16:42
|
(30) > нет времени
Нет времени объяснять, извини. |
|||
32
ДенисЧ
21.09.21
✎
16:42
|
(30) Некогда мотор заводить, ехать надо!
|
|||
33
polosov
21.09.21
✎
16:42
|
Специально проверил, не пятница ли сегодня.
|
|||
34
acht
21.09.21
✎
16:44
|
А вообще любопытное сочетаение - "это не красиво" и "нет времени" =)
|
|||
35
polosov
21.09.21
✎
16:46
|
(30) У тебя схемы будут часто меняться? Почему не оставить хардкодом?
|
|||
36
Малыш Джон
21.09.21
✎
16:48
|
(35) ну видимо два отчета в одном, и нужно по условию либо один, либо другой компоновать
|
|||
37
pechkin
21.09.21
✎
16:49
|
лучше передать нужные параметры в свойства настроек. к схеме не привязываться
|
|||
38
polosov
21.09.21
✎
16:51
|
(36) Так это я понимаю. Просто человек в эстетике боль испытывает, когда встречает в коде
ПолучитьМакет("МояСхема"); Хочет "ПолучитьМакет(МояСхемаВПараметре)", наверное |
|||
39
rowvg
naïve
21.09.21
✎
16:51
|
У меня схемы в отчете меняются, причем первый раз меняется только схема, а Процессор вывода не работает, чтобы пользователь мог сделать настройки отчета с новой схемой. При повторном нажатии нельзя допустить установку той же схемы, иначе загрузятся настройки по умолчанию.
В общем сделал вот так: Если СхемаКомпоновкиДанных.ИсточникиДанных[0].Имя = "ИсточникДанных2" Тогда КонецЕсли; |
|||
40
polosov
21.09.21
✎
16:53
|
(39) "Сюжет за-эээ-кручивается"(с)
|
|||
41
rowvg
naïve
21.09.21
✎
16:55
|
(38) ПолучитьМакет("МояСхема"); возвращает схему компоновки данных, а мне как раз перед ПолучитьМакет("МояСхема"); нужно понять какая сейчас схема текущая, и в зависимости от этого уже устанавливать новую схему или нет.
|
|||
42
acht
21.09.21
✎
16:55
|
(39) > иначе загрузятся настройки по умолчанию.
Почему ты их берешь из схемы, а не из компоновщика? |
|||
43
rowvg
naïve
21.09.21
✎
16:57
|
Я делаю вот так
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки(); А как можно еще? |
|||
44
acht
21.09.21
✎
17:00
|
(43) Ну, то есть то, что пользователь там на клиенте в настроках компоновки - в отборах, в параметрах, в там структуре накликал, просто берешь и выбрасываешь. Зачем ты с ним так?
|
|||
45
acht
21.09.21
✎
17:02
|
Чой-то это начинает перерастать за рамки консультации на форуме...
Давай-ка с https://uc1.1c.ru/course/1s-predpriyatie-8-3-mehanizm-sistemy-komponovki-dannyh-dlya-nachinayuschih-i-professionalov/#toc начнем? |
|||
46
rowvg
naïve
21.09.21
✎
17:04
|
(44) Потому что меня поставили в такие условия. Пользователь не хочет перед построением отчета знать что у него получится, а я не могу два разных набора данных с разными группировками разместить в одной схеме.
|
|||
47
rowvg
naïve
21.09.21
✎
17:08
|
46+ Понимаю и осознаю что вся схема лажа, но мне нужно в одном отчете отображать различные данные с разной структурой, а пользователь не хочет задумываться о том какие отборы он делает. Поэтому если получили противоречивый набор данных то обнуляю их настройки и прошу заполнить заново.
|
|||
48
pechkin
21.09.21
✎
17:11
|
Настройки можно отвязать от схемы. Вернее привязать к 3 схеме. А применять потом. Главное чтобы имена полей совпадали
|
|||
49
hhhh
21.09.21
✎
17:12
|
(47) делай через варианты отчета. Каждому пользователю свой вариант. Даже можешь регистр сведений забацать: пользователь - вариант отчета
|
|||
50
rowvg
naïve
21.09.21
✎
17:14
|
Спасибо, попробую
|
|||
51
rowvg
naïve
21.09.21
✎
17:16
|
Думал про варианты. Но никто не хочет ничего менять, все хотят чтобы осталось все как есть и к ним никто не подходил.
|
|||
52
rowvg
naïve
21.09.21
✎
17:17
|
Вот мой код и он работает
СтандартнаяОбработка = Ложь; ВыводимОтчет = Ложь; Если СхемаКомпоновкиДанных.ИсточникиДанных[0].Имя = "ИсточникДанных2" Тогда ВыводимОтчет = Истина; КонецЕсли; Если СхемаКомпоновкиДанных.ИсточникиДанных[0].Имя = "ИсточникДанных1" Тогда СхемаКомпоновкиДанных = ПолучитьМакет("МояСхема"); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КонецЕсли; НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки(); КомплновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомплновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); Если ВыводимОтчет Тогда ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецЕсли; |
|||
53
ДенисЧ
21.09.21
✎
17:28
|
(52) Not hired. Next please
|
|||
54
acht
21.09.21
✎
17:33
|
(52) Эээээ.. там в начале кто-то что-то про красоту и изящество говорил?
|
|||
55
hhhh
21.09.21
✎
17:35
|
(51) так и сделайте, у каждого свой вариант, и запретить им там менять. Жестко для пользователя устанавливать имя варианта.
|
|||
56
ДенисЧ
21.09.21
✎
17:39
|
(54) А разве это не красиво и не изящно? Не... Ты не ценитель Малевича...
|
|||
57
rowvg
naïve
22.09.21
✎
08:21
|
(55) С вариантом, наверное, не получится. И вот почему. Варианты определяются в настройках схемы компоновки данных, то есть они задают различные группировки для уже определенных наборов данных, полей, ресурсов. параметров. А в моем случае я имею дело, по сути, с двумя различными отчетами. Во втором отчете ресурсы только название имеют такое же, а заполняются совершенно по - другому, плюс есть ресурсы и поля из других наборов данных, которых нет в первом отчете.
То есть у меня задача сделать не различные варианты представления одних и тех же данных, а совместить в одном отчете два разных отчета. |
|||
58
rowvg
naïve
22.09.21
✎
08:26
|
(54, 56) Человек можно простить жадность, трусость, даже подлость в какой - то мере. Но тролли достойны только презрения. acht и ДенисЧ, западло быть такими как вы.
|
|||
59
rowvg
naïve
22.09.21
✎
08:33
|
57+ Если с вариантами работать, то тогда нужно описывать универсальный набор данных, который включает в себя данные двух отчетов одновременно, причем через ВЫБОР КОГДА...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |