|
СКД: как снять защиту с одной колонки в отчете? | ☑ | ||
---|---|---|---|---|
0
tenikov
10.08.11
✎
17:11
|
Нужно дать пользователю возможность редактировать только значения только одной колонки отчета, построенного с использованием СКД.
Как это сделать? Подскажите, плз. |
|||
1
Икогнито
10.08.11
✎
17:18
|
руками и многими буковками
|
|||
2
mzelensky
10.08.11
✎
17:20
|
(0) ну, по идее: формируешь отчет и выводишь пользователю, а потом получаешь область колонки и изменяешь нужный параметр.
Я как-то так делал (правда это НЕ СКД): Область = ТабДок.Область( , 6, , 6); //выделил ВСЮ 6-ю колонку Область.Видимость=ложь; |
|||
3
tenikov
10.08.11
✎
17:25
|
(2) ну так и я могу :)
как в СКД получить область, зная идентификатор колонки отчета? |
|||
4
mzelensky
10.08.11
✎
17:40
|
(3) ну так а что мешает так сделать??? или ты не знаешь порядковый номер нужной колонки???
|
|||
5
tenikov
10.08.11
✎
17:43
|
(4) по условию считается, что не знаю (пользователь может менять порядок либо не выводить эту колонку совсем).
|
|||
6
mzelensky
10.08.11
✎
17:45
|
(5) что ты там за условия такие выполняешь :) ?
Ну проверяешь поля, которые выводятся в СКД...если среди выводимых есть НУЖНО, то запоминаешь его порядковый номер и потом -> (2) Ток я не пойму, а как указывается с какой именно колонки защиту снимать??? или снимать нужно все-таки для определенной? |
|||
7
tenikov
10.08.11
✎
17:54
|
(6) по условию задачи, которую я сам себе придумал :)
В число полей схемы СКД входит пользовательское поле "Примечание". Пользователь может менять порядок вывода колонок в настройках (стандартный механизм СКД) или не выводить некоторые поля совсем. Как в случае вывода поля "Примечание" в отчет понять номер его колонки в табличном документе? |
|||
8
jump if zero
10.08.11
✎
18:18
|
Процедура СформироватьОтчет()
Схема=СхемаКомпоновкиДанных; КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки=КомпоновщикМакета.Выполнить(Схема,КомпоновщикНастроек.Настройки); ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент ; ПроцессорВывода.ОтображатьПроцентВывода=Истина; ЭлементыФормы.Результат.Очистить(); ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат); ПроцессорВывода.НачатьВывод(); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ПроцессорВывода.ЗакончитьВывод(); Область = ЭлементыФормы.Результат.НайтиТекст("Продажа"); Если ТипЗнч(Область)=Тип("Неопределено") Тогда Сообщить("Значение не найдено!"); Иначе ИмяОбласти = Область.Имя; ИмяОбласти2 = СтрЗаменить(ИмяОбласти,"R1","R100"); ОбластьБезЗащиты = ЭлементыФормы.Результат.Область(Область.Имя +":"+ ИмяОбласти2 ); ОбластьБезЗащиты.Защита =Ложь; КонецЕсли; КонецПроцедуры |
|||
9
tenikov
11.08.11
✎
11:35
|
(8) оно, спасибо. допилил до:
Область = ДокументРезультат.НайтиТекст("Примечание"); Если ТипЗнч(Область)=Тип("Неопределено") Тогда Иначе НомерКолонки = Область.Лево; Область = ДокументРезультат.Область( , НомерКолонки, , НомерКолонки); Область.Защита = Ложь; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |