|
Программное создание СКД | ☑ | ||
---|---|---|---|---|
0
Momus
16.12.19
✎
16:10
|
Создаю СКД на основе запроса вида "выбрать *, ДопПоле из ...". Затем инициализирую компоновщик настроек на основе созданного СКД. Как убрать мое поле ДопПоле из доступных элементов отбора компоновщика настроек? Какого-то свойства или метода для этого не нашел. ДопПоле необходимо для дальнейших вычислений.
|
|||
1
Momus
16.12.19
✎
16:12
|
Еще момент: при создании СКД на основе запроса использую АвтоЗаполнениеДоступныхПолей, т.к. заранее с каким объектом имеем дело (известно что это регистр сведений или накопления).
|
|||
2
Momus
16.12.19
✎
16:20
|
Если бы не условие (1), то убрал бы при добавлении набора данных. А так не знаю как можно сделать...
|
|||
3
fisher
16.12.19
✎
16:20
|
ПолеНабораДанныхСхемыКомпоновкиДанных.ОграничениеИспользования
|
|||
4
Momus
16.12.19
✎
16:26
|
да, так бы и сделал как в (3) но с автозаполнением не знаю как. В какой момент происходит автозаполнение, чтобы его перехватить и исправить?
Делаю так: СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных = "local"; НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.ИсточникДанных = "ИсточникДанных1"; НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; НаборДанных.Запрос = ТекстЗапроса; НаборДанных.Имя = "НаборДанных1"; АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); |
|||
5
Радим1987
16.12.19
✎
16:29
|
НаборДанных.Поля[0].ОграничениеИспользование
|
|||
6
Momus
16.12.19
✎
16:32
|
(5) инициализация СКД, как я понял, происходит в последней строке кода выше. До этого наборданных не заполнен, если я правильно понял о чем идет речь.
|
|||
7
Радим1987
16.12.19
✎
16:35
|
(6) наверное тут СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
|
|||
8
Momus
16.12.19
✎
16:37
|
(7) хм, тогда не инициализация СКД, а заполнение(?), применение(?) заданных настроек. В любом случае при добавлении набора данных полей нет.
|
|||
9
Momus
16.12.19
✎
16:39
|
Думаю для компоновщика настроек нужно использовать отдельную схему без дополнительных полей. ДопПоле нужно потом, после применения отбора.
|
|||
10
fisher
16.12.19
✎
16:42
|
Хм... Ну, я бы попробовал нужное поле добавить вручную с ограничением (только одно это поле) и посмотрел на результат после автозаполнения настроек.
|
|||
11
fisher
16.12.19
✎
16:45
|
Еще идея. Можно не включать автозаполнение настроек, а запрос генерить с фигурными скобками из которых все настройки и заполнятся.
|
|||
12
Радим1987
16.12.19
✎
16:49
|
(10) Это прокатит
|
|||
13
Радим1987
16.12.19
✎
16:50
|
СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных инициализация здесь, дальше просто заполняем свойства
|
|||
14
Momus
16.12.19
✎
16:56
|
(10), (12) Прокатило)
(5), (13) честно говоря не понял как сделать. При добавлении набора данных из свойств заполнено только НаборДанных.ИсточникДанных = "ИсточникДанных1"; НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; НаборДанных.Запрос = ТекстЗапроса; НаборДанных.Имя = "НаборДанных1"; НаборДанных.Поля - пустая. После КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); они заполнены, но сделать уже ничего нельзя. |
|||
15
Радим1987
16.12.19
✎
17:09
|
ТекстЗапроса =
"ВЫБРАТЬ | """" КАК ДопПоле"; СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных = "local"; НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.ИсточникДанных = "ИсточникДанных1"; НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; НаборДанных.Запрос = ТекстЗапроса; НаборДанных.Имя = "НаборДанных1"; Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); Поле.ПутьКДанным = "ДопПоле"; Поле.Заголовок = "ДопПоле"; Поле.ОграничениеИспользования.Условие = Истина; АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); КонецПроцедуры |
|||
16
Momus
16.12.19
✎
17:13
|
(15) это я сделал и проверил - работает. Но спасибо)
(14) это ответ на предыдущие ваши сообщения. Я подумал, что где-то что-то упустил и при автозаполнении поля набора данных где-то можно перехватить |
|||
17
Радим1987
16.12.19
✎
17:18
|
НаборДанныхЗапросСхемыКомпоновкиДанных (DataCompositionSchemaDataSetQuery)
АвтоЗаполнениеДоступныхПолей (AutoFillAvailableFields) Использование: Чтение и запись. Описание: Тип: Булево. Указывает на необходимость автоматического заполнения доступных полей на основании текста запроса. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
18
Радим1987
16.12.19
✎
17:18
|
Наверное придется без автозаполнения
|
|||
19
Momus
16.12.19
✎
17:24
|
(18) да нет же, все ок.
(10) решает мою проблему. Добавил фиктивное поле в запросе (иначе не работает) и все сработало. Видимо у нас небольшое недопонимание возникло :) |
|||
20
Радим1987
16.12.19
✎
17:28
|
(19) А почему тогда у меня не работает
|
|||
21
Momus
16.12.19
✎
17:30
|
(20) думаю из-за свойства "Поле".
Поле.Поле = "ДопПоле"; |
|||
22
Радим1987
16.12.19
✎
17:33
|
Ааа блин точно.
|
|||
23
Dzenn
гуру
16.12.19
✎
18:11
|
Я прошу прощения, но что за задача такая замороченная, что нужно собирать СКД программно?
|
|||
24
Алексей_Р
17.12.19
✎
04:02
|
(23) Если у Вас возникают такие вопросы, значит Вам это не нужно)
|
|||
25
Momus
17.12.19
✎
09:24
|
(23) есть огромная самописная база, большую часть которую занимают регистры. Необходима обработка для удаления данных независимых регистров сведений, а также нужна возможность удалять данные регистров, подчиненных регистратору. Часто возникают задвоения продажи при обмене с РИБ (Розница 2.1). В регистрах присутствуют движения как от чека ККМ, так и от ОРП.
|
|||
26
fisher
17.12.19
✎
10:20
|
(23) Любой универсальный инструмент, где целевые виды объектов не предопределены.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |