![]() |
![]() |
![]() |
|
Программное формирование СКД, автозаполнение полей набора данных | ☑ | ||
---|---|---|---|---|
0
YV
26.04.11
✎
22:38
|
Создаю СКД программно
СКД = Новый СхемаКомпоновкиДанных(); // Создаем пустой источник данных СКД (без него не будет работать набор данных) ИсточникДанныхСКД = СКД.ИсточникиДанных.Добавить(); ИсточникДанныхСКД.Имя = "ИсточникДанныхСКД"; ИсточникДанныхСКД.СтрокаСоединения = ""; ИсточникДанныхСКД.ТипИсточникаДанных = "Local"; // Создаем набор данных СКД типа "Запрос" ТипНаборДанныхЗапросСКД = Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"); НаборДанныхЗапросСКД = СКД.НаборыДанных.Добавить(ТипНаборДанныхЗапросСКД); НаборДанныхЗапросСКД.Имя = "ОстаткиТоваров"; НаборДанныхЗапросСКД.ИсточникДанных = "ИсточникДанныхСКД"; НаборДанныхЗапросСКД.АвтоЗаполнениеДоступныхПолей = Истина; // Задаем текст запроса НаборДанныхЗапросСКД.Запрос = "ВЫБРАТЬ | ОстаткиТоваровОстатки.Склад, | ОстаткиТоваровОстатки.Номенклатура, | ОстаткиТоваровОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки"; Соответственно устанавливаю свойство "АвтоЗаполнениеДоступныхПолей" набора данных в "Истина". Поля не заполняються. Подскажите пожалуйста, что еще нужно сделать для автоматического заполнения полей? Нагуглил такой вариант ИсточникДоступныхНастроекКД = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); КомпоновщикНастроекСКД = Новый КомпоновщикНастроекКомпоновкиДанных(); КомпоновщикНастроекСКД.Инициализировать(ИсточникДоступныхНастроекКД); но он не помогает. |
|||
1
acsent
26.04.11
✎
22:40
|
зачем програмно создавать?
|
|||
2
YV
26.04.11
✎
22:43
|
(1) Хочу понять как это работает.
|
|||
3
YV
26.04.11
✎
22:44
|
(2)+ Чисто в учебных целях. В реальной работе естественно создавать все программно - изврат.
|
|||
4
acsent
26.04.11
✎
22:46
|
(3) Как проверяешь что не заполняются?
|
|||
5
YV
26.04.11
✎
22:47
|
(4) Через отладчик, посмотреть свойство
СКД.НаборыДанных.ОстаткиТоваров.Поля |
|||
6
Nexux
27.04.11
✎
00:09
|
а если: НаборДанныхЗапросСКД.Запрос =
"ВЫБРАТЬ * ИЗ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки"; ? |
|||
7
YV
27.04.11
✎
06:49
|
(6) Текст запроса здесь не играет роли. В интерактивном режиме все заполняет, независимо от текста запроса.
|
|||
8
Рэйв
27.04.11
✎
07:08
|
(0)Когда то давно делал тоже в учебных целях вывод на печать расходной накладной.
Может пригодится. |
|||
9
luns
27.04.11
✎
07:14
|
(0) подя надо самому добавлять. автозаполнения недостаточно.
вот пример: http://luns-it.ru/2010/03/пример-программной-работы-с-компонов/ возможно поможет |
|||
10
YV
27.04.11
✎
09:00
|
(8)(9) Спасибо
(9) Жаль конечно если так. Больно уж много нужно дозаполнять. |
|||
11
Defender aka LINN
27.04.11
✎
09:15
|
(10) А если Автозаполнение ПОСЛЕ текста запроса установить?
З.Ы. Автозаполнение - зло :) |
|||
12
YV
27.04.11
✎
09:29
|
(11) Пробовал, не помогает. Как я понял установка значения для этого свойства не выполняет никаких действий. Нужно вызвать какой-то метод.
А пройтись по уже заполненным полям и скорректировать их проще, чем создавать все поля с нуля. Но скорее всего придется все-таки добавлять поля самому. Тем более что в типовых тоже вроде так. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |