![]() |
![]() |
![]() |
|
Изменить текст выведенной ячейки табличного документа | ☑ | ||
---|---|---|---|---|
0
ZloyProger
30.07.12
✎
09:11
|
Доброго времени суток всем!
Столкнулся с проблемой изменения текста в уже выведенной ячейке таблиного документа. //ТабДок - результириющий табличный документ, тип - ПолеТабличногоДокумента, расположен на форме обработки //СтрокаОтдел - строка макета, для вывода итогов по отделам, собственно с ней и есть проблема - в ней надо указать текст из нижележащего уровня группировки( //Начало - строка макета, для вывода начальной инфы по отделам //Муж - строка макета для вывода по мужчинам //Жен -//- по женщинам Собственно текст. ТабДок = ЭлементыФормы.ПолеТДТикеты; Макет = ПолучитьМакет("МойМакет"); Шапка = Макет.ПолучитьОбласть("Шапка"); СтрокаОтдел = Макет.ПолучитьОбласть("СтрокаОтдел"); Начало = Макет.ПолучитьОбласть("Начало"); Муж = Макет.ПолучитьОбласть("Муж"); Жен = Макет.ПолучитьОбласть("Жен"); ТабДок.Очистить(); ТабДок.Вывести(Шапка); Пока ВыборкаОтделы.Следующий() Цикл ТабДок.Вывести(СтрокаОтдел); //вывод итоговой секции //для обновления отчета передаю позицию для разворота нужной строки Если Позиция = 0 Тогда ТабДок.НачатьГруппуСтрок("Отдел", Ложь); Иначе Если ТабДок.ВысотаТаблицы = Позиция Тогда ТабДок.НачатьГруппуСтрок("Отдел", Истина); Иначе ТабДок.НачатьГруппуСтрок("Отдел", Ложь); КонецЕсли; КонецЕсли; Выборка = ВыборкаОтделы.Выбрать(); //открываю детализирующую выборку КолЗап = 1; Пока Выборка.Следующий() Цикл //первую детальную строку надо вывести без изменений, остальные в зависимости от параметра Если КолЗап = 1 Тогда ТекОбласть = ТабДок.Область("R" + ТабДок.Верх + "C5:R" + ТабДок.Верх + "C5"); //получаю нужную ячейку в строке с отделом ТекОбласть.Защита = Ложь; //убираю защиту специально.. ТекОбласть.Текст = Выборка.Описание; //присваиваю текст, в отладке - все шоколадно Начало.Параметры.Заполнить(Выборка); Начало.Область("R1C1:R1C8").ЦветФона = ЦветФона; ТабДок.Вывести(Начало); Иначе Если Выборка.Пол = Муж Тогда Муж.Параметры.Заполнить(Выборка); Муж.Область("R1C1:R1C8").ЦветФона = ЦветФона; ТабДок.Вывести(Муж); Иначе Жен.Параметры.Заполнить(Выборка); Жен.Область("R1C1:R1C8").ЦветФона = ЦветФона; ТабДок.Вывести(Жен); КонецЕсли; КонецЕсли; КолЗап = КолЗап + 1; КонецЦикла; ТабДок.ЗакончитьГруппуСтрок(); КонецЦикла; ТабДок.ТолькоПросмотр = Истина; ТабДок.АвтоМасштаб = Истина; ТабДок.Показать("Отделы"); Чую где-то ипотека зарылась - понять где - не могу( v8: Изменить значение в поле табличного документа прочитал до дыр, много думал, все равно не помогло.. Защита - снимал и в самих свойствах ячейки и программно снимал, область - прямоугольная, СодержитЗначение - Ложь (и в свойствах стоит, и в отладчике смотрел). Решение, конечно нашел, сделал как в v8: Параметры макета посоветовал многоуважаемый Марсель, однако заноза недовольства таки осталась, знатоки, поделитесь идеями пожалуйста. ЗЫ. Платформа - 8.1.15.14, конфиг - самописка. |
|||
1
AaNnDdRrEeYy
30.07.12
✎
09:38
|
Обращаться к ячейкам R1C1:R1C8 некашерно, после вывода в табДок они меняют свое имя.
|
|||
2
ZloyProger
30.07.12
✎
12:22
|
С чего вдруг они меняют свое имя? Табличный документ - как таблица excel - если есть ячейка с адресом R1C1 она и в Африке ей останется (если только ты не будешь использовать присоединение областей/объединение областей/вставку других табличных документов, хотя опять-таки Присоединить/Объединить/Вставить область дадут в результате табличный документ в котором опять-таки будут ячейки R1C1:R1C8 просто поменять строку/колонку сообразно изменениям).Как раз если по именам обращаться - есть вероятность запутаться между макетом и самим табличным документом. И потом - как раз этот кусок кода срабатывает так,как и должен, т.е. красит нужные мне ячейки (если обращаться по имени - краситься абсолютно вся строка, что как раз таки и есть некошерно). И, наконец (без обид), какое отношение имеет твой ответ к сути вопроса?
|
|||
3
х86
30.07.12
✎
12:26
|
(2)изменится высота шапки в макете и нужно будет код править
|
|||
4
ZloyProger
30.07.12
✎
12:52
|
(3) Начало.Область("R1C1:R1C8") - абсолютно пофиг на высоту шапки, т.к. это область вывода секции, ТабДок.Область("R" + ТабДок.Верх + "C5:R" + ТабДок.Верх + "C5") аналогично из-за наличия конструкции ТабДок.Верх (на момент применения метода это высота таблицы, т.е. последняя выведенная ячейка). Хотя и вы безусловно кое в чем правы - абсолютно уверенным нельзя быть ни в чем)) И все же ближе к телу, как говаривал старина Г.Д. Мопассан, почему текст не меняется? Просто гипотетически интересно, т.к. задачу уже решил.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |