|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Всем привет! Есть отчет на СКД, в нем есть параметр с типом справочник. Хочу программно установить у этого параметра параметры редактирования, а в частности параметр выбора (отбор.наименование). Когда я устанавливаю отбор для параметра в СКД на вкладке параметры, все работает. Мне необходимо установить отбор по списку значений. Вбивать все необходимые значения долго и самое главное не гибко. Вот и решил установить отбор у параметра программно. Делаю так: Создал форму отчета и в модуле формы следующий код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
В данном случае отбор в параметре не работает. Смотрел отладчиком - все устанавливается правильно. Что я делаю не так? Такое ощущение что нужно внести сделанные мною изменения в переменной СКД в основную схему компоновки данных. Такого метода я не нашел. В синтаксис-помощнике написано: ОбъектМетаданных: Отчет (MetadataObject: Report) ОсновнаяСхемаКомпоновкиДанных (MainDataCompositionSchema) Использование:Только чтение. Вообще возможно установить параметры редактирования программно или я зря стараюсь. Если возможно, то что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2013, 01:38 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
ПараметрВыбора.Значение[0].Содержит = ВидСравнениякомпоновкиДанных.Содержит ПараметрВыбора.Значение[0].ПравоеЗначение=СписокДоступныхЗначений а вообще здесь возьми лучше процедуру - она не идеально, но описана существенно лучше. http://1cskd.ru/2010/06/kak_izmenit_otbor_programmno/ ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2013, 10:43 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Программист 1с, Так не работает: Код: pascal 1. 2.
Т.к. в параметрах редактирования нет полей "Содержит" и "ПравоеЗначение". А по ссылке, там описывается как изменить программно отбор у отчета, а мне надо изменить отбор в параметрах редактирования параметра отчета. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 01:58 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
ПараметрВыбора.Значение[0].Параметр=Новый ПараметрКомпоновкиДанных(??? Может "Отбор.Наименование") Тип какой у ПараметрВыбора.Значение.Добавить()? И посмотри все его свойства. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 10:26 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Программист 1с, Тип у "ПараметрВыбора.Значение.Добавить()" - ПараметрыВыбораКомпоновкиДанных. Конструктора нет. Создал 2 параметра редактирования, один программно, а другой нет и сравнил отладчиком. Все один в один. Такое ощущение, что все мои программные изменения остаются в переменной СКД, а ОсновнаяСхемаКомпоновкиДанных остается без изменений. При просмотре методов переменной СКД нашел метод "Записать()". Все компилиться, но при запуске пишет, что такой метод не обнаружен (Сильно не пинай, я нуб). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2013, 02:16 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
_eldar_, если они точно один в один то проблема в другом. В модуле отчета процедура прикомпоновкерезультата() Там можно устанавливать параметры в текущую схему компоновки. ps Меня смущает ПараметрВыбора.Значение[0].Имя = "Отбор.Наименование"; Точно тип строка при ручном добавлении? Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2013, 17:34 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Программист 1с, В том то и дело, что мне необходимо изменить отбор у параметра при открытии отчета, а не при его компоновке. Т.е. пользователь открыв отчет, выбирает нужное значение параметра из списка значений, который(список значений) сделан программно и только затем запускает отчет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 06:04 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
_eldar_, Значит,делать свою форму для отчета, где и рулить нужными параметрами. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 06:30 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Кажется нашел. НоваяСхема = ПолучитьМакет(<ИмяСхемы>); //здесь ваши изменения. Отчет.СхемаКомпоновкиДанных = НоваяСхема; Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НоваяСхема.НастройкиПоУмолчанию); Таким образом можно менять текущую схему компоновки отчета из формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 11:44 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Программист 1с, авторНоваяСхема = ПолучитьМакет(<ИмяСхемы>); //здесь ваши изменения. Отчет.СхемаКомпоновкиДанных = НоваяСхема; Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НоваяСхема.НастройкиПоУмолчанию); Так не работает. По крайней мере в 8.2 Управляемом приложении. Воспроизвел данную проблему в новой информационной базе с одним справочником и одним отчетом для примера и выгрузил в файл 1cv8.dt(15КБ). Параметр "Номенклатура" должен вываливать список из 2-ух наименований(Принтер и Клавиатура), но не работает(. Может на данном примере получится решить эту задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 03:19 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Вечером посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 10:34 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
ТекОтчет=РеквизитФормыВЗначение("Отчет"); СКД=ТекОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); ПараметрСОтбором = СКД.Параметры.Найти("Номенклатура"); ПараметрВыбора = ПараметрСОтбором.ПараметрыРедактирования.Элементы.Найти("ПараметрыВыбора"); ПараметрВыбора.Использование = Ложь; НовыйОтбор=ПараметрВыбора.Значение.Добавить(); СписокДоступныхЗначений = СписокДоступныхЗначений(); НовыйОтбор.Имя = "Отбор.Наименование"; НовыйОтбор.Значение = СписокДоступныхЗначений; ПараметрВыбора.Использование = Истина; ЗначениеВРеквизитФормы(ТекОтчет,"Отчет"); Все работает. ps Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование В (""Принтер"", ""Клавиатура"")"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл СписокЗначений.Добавить(Выборка.Номенклатура); КонецЦикла; Возврат СписокЗначений; Как пример - здесь обычно пишут по другому. СЗ=Новый СписокЗначений; СЗ.Загрузить(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура")) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 21:31 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Программист 1с, спасибо за ответ. Но у меня не работает... Я добавил отладочные сообщения и выложил новый файл 1cv8.dt. Также добавил кнопку "Отладка", которая показывает текущие параметры выбора. Не пойму почему так, но отладчиком видно что СКД отчета при вызове процедуры "ЗначениеВРеквизитФормы" не изменяется. А можно вашу dt-шку в которой все работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 03:10 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Проверил еще так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 04:01 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Программист 1с, Такое ощущение что у нас платформы разные. У меня нет метода "Загрузить" в СпискеЗначений, только аналогичный метод "ЗагрузитьЗначения" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 07:45 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
_eldar_Программист 1с, Такое ощущение что у нас платформы разные. У меня нет метода "Загрузить" в СпискеЗначений, только аналогичный метод "ЗагрузитьЗначения" это мелочи в данном случае... суть не меняется ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 10:17 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
_eldar_Программист 1с, Такое ощущение что у нас платформы разные. У меня нет метода "Загрузить" в СпискеЗначений, только аналогичный метод "ЗагрузитьЗначения"Да - загрузитьзначения. Писал просто по памяти. Обычно набираешь пару первых символов - а "заг" - а дальше он сам ставит загрузитьзначения. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 11:56 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
_eldar_Программист 1с, спасибо за ответ. Но у меня не работает... Я добавил отладочные сообщения и выложил новый файл 1cv8.dt. Также добавил кнопку "Отладка", которая показывает текущие параметры выбора. Не пойму почему так, но отладчиком видно что СКД отчета при вызове процедуры "ЗначениеВРеквизитФормы" не изменяется. А можно вашу dt-шку в которой все работает?Странно - сейчас проверю - выложу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 11:57 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Спасибо, за интересный вопрос. Разобрался с ним до конца. &НаКлиенте Процедура ПриОткрытии(Отказ) УстановитьПараметрВыбора(); КонецПроцедуры &НаСервере Функция СписокДоступныхЗначений() СписокЗначений = Новый СписокЗначений; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование В (""Принтер"", ""Клавиатура"")"; СписокЗначений.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); Возврат СписокЗначений; КонецФункции &НаСервере Процедура УстановитьПараметрВыбора() ТекОтчет=РеквизитФормыВЗначение("Отчет") СКД=ТекОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); ПараметрСОтбором = СКД.Параметры.Найти("Номенклатура"); ПараметрВыбора = ПараметрСОтбором.ПараметрыРедактирования.Элементы.Найти("ПараметрыВыбора"); НовыйОтбор=ПараметрВыбора.Значение.Добавить(); НовыйОтбор.Имя = "Отбор.Ссылка"; НовыйОтбор.Значение = СписокДоступныхЗначений(); ПараметрВыбора.Использование = Истина; АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор); ТекОтчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); ТекОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию); ЗначениеВРеквизитФормы(ТекОтчет,"Отчет"); КонецПроцедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 16:10 |
|
СКД параметры редактирования программно (8.2 УП)
|
|||
---|---|---|---|
#18+
Этот код возволяет менять текущую схему компоновки данных в форме отчета, а не при компоновке результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 16:12 |
|
|
start [/forum/topic.php?fid=28&msg=38505992&tid=1519567]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 460ms |
0 / 0 |