|
8.2 Программное изменение запроса СКД
| ☑ |
0
Антон Мак
08.08.11
✎
11:30
|
Эта тема уже не раз появлялась здесь, но ни в одной из них я не нашел решения.
8.2, тонкий клиент. Есть внешний отчет на СКД, на форму добавляем свои кнопочки, которые должны изменять запрос. Однако изменить первоначальный запрос никак не удается. Как это сделать?
|
|
1
Axel2009
08.08.11
✎
11:35
|
(0) зачем изменять запрос??
|
|
2
Axel2009
08.08.11
✎
11:36
|
(1)+ на 99% все можно решить без изменения запроса, но если сильно хочется через 5ую точку все сделать, тогда
коллекция СхемаКомпоновкиДанных.НаборыДанных:
НаборДанныхЗапросСхемыКомпоновкиДанных (DataCompositionSchemaDataSetQuery)
Свойства:
АвтоЗаполнениеДоступныхПолей (AutoFillAvailableFields)
Запрос (Query)
Имя (Name)
ИсточникДанных (DataSource)
Поля (Fields)
Описание:
Содержит описание набора данных схемы компоновки данных - запрос.
Поддержка отображения в XDTO; пространство имен: {. Имя типа XDTO: DataSetQuery.
|
|
3
lubja
08.08.11
✎
11:36
|
(1) видимо, имеется в виду изменение запроса от каких-либо условий
|
|
4
Wobland
08.08.11
✎
11:37
|
(1) я как-то видел такое в типовом решении, вроде в БГУ. тоже мучаюсь этим вопросом ;)
|
|
5
Inform
08.08.11
✎
11:40
|
Схема = Отчеты.<ИмяОтчета>.ПолучитьМакет("<ИмяМакета>");
Схема.НаборыДанных.<ИмяНабора>.Запрос = <НовыйТекстЗапроса>;
|
|
6
Антон Мак
08.08.11
✎
11:50
|
Проблема не в том, что я не могу получить доступ к тексту запроса, а в том, что новый текст запроса не сохраняется.
Вот как у меня сделано:
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ОтчетОбъект.ЭтотОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = НовыйТекстЗапроса;
ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");
|
|
7
Inform
08.08.11
✎
12:06
|
Т.е. после строки
ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");
ТекстЗапроса снова старый или при выводе отчета изменений не видно?
|
|
8
Inform
08.08.11
✎
12:12
|
Если только при выводе отчета не видно изменений, то скорее всего при выводе отчета схема заново инициализируется из макета и используется без твоих изменений.
В зависимости от настроек (реквизитами (формы) регулируй) попробуй в процедуре формирования отчета менять текст запроса перед:
КомпоновщикМакета.Выполнить(...)
чтобы наверняка...
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший