|
Условное оформление табличной части документа есть ли способ реализовать? | ☑ | ||
---|---|---|---|---|
0
Novartis
08.05.13
✎
21:08
|
При переходе на управляемые формы возникла задача, которая ранее решалась по событию ПриВыводеСтроки.
Имеем документ с табличной частью, в таблице представлен список сотрудников, в первой колонке находится полное ФИО сотрудника Например: Иванов Иван Иванович - но пользователь должен видеть: Иванов И.И. и только при редактировании поля появляется полное ФИО. Ранее задача решалась так по событию ПриВыводеСтроки: ОформлениеСтроки.Ячейки.ФИО.УстановитьТекст(СокращенноеФИО(ОформлениеСтроки.Ячейки.ФИО.Значение)); Пример условный, но отражает суть проблемы. Возможно ли реализовать данный функционал на управляемых формах через условное форматирование, если можно подскажите как это сделать? |
|||
1
bazvan
08.05.13
✎
21:11
|
(0) за решение при выводе строки нужно отрубать руки и ноги сразу
|
|||
2
Novartis
08.05.13
✎
21:15
|
(1) Зачем же так сразу, бывают разные ситуации.
Вы и раскрашивание строк по условию не приемлете? Какие ваши доказательства? |
|||
3
bazvan
08.05.13
✎
21:16
|
(2) А ты замер производительности включи и погляди на документ ХОТЯБЫ в 100 строк
|
|||
4
Novartis
08.05.13
✎
21:21
|
Ну если опасность в этом, то здесь такого количества не будет. И 10 уже много.
Интересует скорее возможность такой реализации, чем размышления надо ли это. |
|||
5
jsmith82
08.05.13
✎
21:22
|
Автор, такой возможности в УФ нет
|
|||
6
jsmith82
08.05.13
✎
21:23
|
(1) можно сначала по голове настучать. зачем же сразу отрубать. эдак инвалидами пол страны сделаешь
|
|||
7
jsmith82
08.05.13
✎
21:24
|
общая стратегия УФ в отказе от всяких при выводах и прочих перделках
|
|||
8
jsmith82
08.05.13
✎
21:24
|
есть сущность - есть прямое отображение
нужна Приблуда - значит, формализация неправильная |
|||
9
Novartis
08.05.13
✎
21:28
|
(8) Иногда приблуда нужна при стыковке разных концепций. Например дополнение к типовой, когда большой универсальности не требуется, но наглядность нужна.
Хорошо, получается исходя из примера, нужно иметь отдельное поле в таблице - ПредставлениеФИО которое и показывать пользователю, а реальное только для хранения использовать? |
|||
10
KAO111
08.05.13
✎
22:13
|
(9) Колонку в таблице можно добавить только в реквизит формы, в типовой бухе 3.0 в реализации так в товары, например, добавляется СчетДоходовВедетсяУчетПоНоменклатурнымГруппам
|
|||
11
ProProg
08.05.13
✎
22:14
|
Возможность есть
|
|||
12
ProProg
08.05.13
✎
22:15
|
(7) не кизди. есть там все.
Программная установка условного оформления |
|||
13
ProProg
08.05.13
✎
22:16
|
Все отлично работает. Я условным оформлениям (программным с любыми условиями) могу любую таблицу разрисовать.
|
|||
14
ProProg
08.05.13
✎
22:19
|
Кури документ установка цен номенклатуры в УТ11. там яркий пример управление условными оформлениями через программную установку.
|
|||
15
ProProg
08.05.13
✎
22:19
|
с помощью программных установок можно творить чудеса.
|
|||
16
sttt
08.05.13
✎
22:21
|
можно и мышкой pics.rsh.ru/img/uf_hxpwhp51.png
|
|||
17
Reaper_1c
08.05.13
✎
22:24
|
(0) Каноническая задача. К табличной части нужно добавить реквизит формы, который будет заполняться при чтении на сервере и в обработке выбора/изменения поля формы, в которое падает значение.
|
|||
18
bazvan
08.05.13
✎
22:27
|
(14) УТ 11 полное УГ там 35 реквизитов у справочника номенкалтуры. только тепилы отличные он клоуна могут такое в типовую написать
|
|||
19
ProProg
08.05.13
✎
22:32
|
(17) не гони беса. никаких реквизитов. В типовых доках везде например при ведении характеристик если не выбрана прямо в поле с характеристикой написано - характеристика не выбрана
|
|||
20
ProProg
08.05.13
✎
22:35
|
Нужно при изменении строк сделать процедуру обновления
и прописать программное создание условного оформления. Правда придется это делать у тебя в цикле для каждой строки. Ну по сути один фиг да - циклом бегать. Но при этом будет одно поле в котором просто будет нужный текст. |
|||
21
ProProg
08.05.13
✎
22:37
|
Вот тебе процедура с помощью которой ты можешь все сделать
Там где у меня цикл заменить на цикл по твоей табличной части. для каждой строки устанавливать оформление, В строке УстановитьЗначениеПараметра - прописать свою замену &НаСервере Процедура УстановитьУсловноеОформлениеТаблицы() УсловныеОформления = Новый Массив(); Для Каждого Оформление Из ЭтаФорма.УсловноеОформление.Элементы Цикл Если Оформление.Представление = "СозданоПрограммно" Тогда УсловныеОформления.Добавить(Оформление); КонецЕсли; КонецЦикла; Для Каждого Оформление Из УсловныеОформления Цикл УсловноеОформление.Элементы.Удалить(Оформление); КонецЦикла; ИндексТекущейСтраницы = Элементы.ПанельЛистов.ПодчиненныеЭлементы.Индекс(Элементы.ПанельЛистов.ТекущаяСтраница); ИмяТаблицыИмпорта = "ТаблицаЛист"+(ИндексТекущейСтраницы-1); // Условное оформление - Номер первой строки НовыйЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяТаблицыИмпорта; НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно"; НовыйЭлементУсловногоОформления.Использование = Истина; ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяТаблицыИмпорта+".НомерСтроки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТаблицаЛистовФайла.НомерПервойСтроки"); НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить(); НовоеПоле.Использование = Истина; НовоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицыИмпорта); НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,Истина)); НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Роса); РеквизитДеревоНастроек = РеквизитФормыВЗначение("ДеревоПолейЗагрузки"); ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Поле", Истина); ЗагружаемыеПоля = РеквизитДеревоНастроек.Строки.НайтиСтроки(ПараметрыОтбора,Истина); Для Каждого Стр Из ЗагружаемыеПоля Цикл Если Стр.НомерКолонки = 0 Тогда Продолжить; КонецЕсли; // Условное оформление - Номер первой строки НовыйЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ""+ИмяТаблицыИмпорта+"K_"+Стр.НомерКолонки; НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно"; НовыйЭлементУсловногоОформления.Использование = Истина; ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяТаблицыИмпорта+".НомерСтроки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТаблицаЛистовФайла.НомерПервойСтроки"); НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить(); НовоеПоле.Использование = Истина; НовоеПоле.Поле = Новый ПолеКомпоновкиДанных(""+ИмяТаблицыИмпорта+"K_"+Стр.НомерКолонки); //НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,Истина)); НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.АкварельноСиний); КонецЦикла; КонецПроцедуры |
|||
22
Reaper_1c
08.05.13
✎
22:39
|
Маня, тебе не предлагали еще на курсы сходить? Думаю где-нить в детском саду найдется воспитатель, которая научит тебя читать...
|
|||
23
bazvan
08.05.13
✎
22:39
|
афуеть клоуны стали внимательно смотреть типовые.
радует |
|||
24
ProProg
08.05.13
✎
22:40
|
Это моя процедура
|
|||
25
ProProg
08.05.13
✎
22:41
|
(22) не надо проявлять сарказм.
|
|||
26
ProProg
08.05.13
✎
22:42
|
Я в курсе что хочет автор - вы предлагаете сложный путь. КОгда все намного проще.
|
|||
27
sttt
08.05.13
✎
22:47
|
(26) похоже автору такая портянка не подойдет))
|
|||
28
Reaper_1c
08.05.13
✎
22:47
|
(23) Оказывается изучение типовых дает +3 к харизме -8 к интеллекту...
|
|||
29
ProProg
08.05.13
✎
22:54
|
Я челу дал пример из типовой где моно найти программное управление.
Потом дал свой пример (28) повторюсь - засунь свой сарказм в одно место. Или общайся на нормальном уровне в темитических ветках. |
|||
30
sttt
08.05.13
✎
22:59
|
(29) ему вообще условное оформление ненужно
|
|||
31
Reaper_1c
08.05.13
✎
23:01
|
(29) В первой строке табличной части указан "Иванов Иван Иванович", во второй "Петров Петр Петрович". Уважаемый Евгений, будьте любезны объяснить, какие настройки условного оформления нужно сделать, чтобы на экране в первой строке увидеть "Иванов И.И.", а во второй - "Петров. П.П". Дополнительно прошу объяснить, каким образом система сформирует для новой строки документа с "Сидоровым Семеном Сергеевичем" представление "Сидоров С.С"?
|
|||
32
bazvan
08.05.13
✎
23:12
|
(31) да легко в при выводе строки отуячить 2 глобальних процедуры преобразования и преформатировать строку.
Делов то 5 минут на прогон трафика. Уйня |
|||
33
bazvan
08.05.13
✎
23:13
|
Кстати нужно решерие на счет ивановых и петроввх? Могу на выходных подумать, а то скучно
|
|||
34
Novartis
08.05.13
✎
23:20
|
Жаль что все вылилось в идейную перепалку.
По идее мне кажется решение возможно. (32) неужели условное форматирование так сильно влияет на трафик. Вроде 1С не клеймит данный метод как неэффективное решение и использует в типовых. (33) Если вы предложите решение задачи, думаю вам будут признательны многие и в будущем кто найдет этот пост. |
|||
35
ProProg
08.05.13
✎
23:21
|
(31) вот тут как раз вам и надо извилины включать.
Я пример дал. очень просто. |
|||
36
ProProg
08.05.13
✎
23:24
|
Типа этого
Для Каждого Стр Из ТабличнаяЧасть Цикл // Условное оформление - Номер первой строки НовыйЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ""Стр.НомерСтроки; НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно"; НовыйЭлементУсловногоОформления.Использование = Истина; ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяТаблицыИмпорта+".Сотрудник"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных(Стр.Сотрудник); НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить(); НовоеПоле.Использование = Истина; НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТабличнаяЧастьСОтрудник"); НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", ТрядядядяНАША_ФУНКЦИЯ_Преобразовать(Стр.Сотрудник)); КонецЦикла; |
|||
37
ProProg
08.05.13
✎
23:25
|
БольшеИлиРавно на Равно
Ну и там подкорректировать. |
|||
38
ProProg
08.05.13
✎
23:28
|
А в 83 вообще будет встроенная возможность в свойствах выставлять вывод.
|
|||
39
bazvan
08.05.13
✎
23:29
|
(34) к сожелентю есть такой момент. Нужно думать, но пока не оплачено, ммеркантильность, такие дела
|
|||
40
ProProg
08.05.13
✎
23:30
|
(34) представь себе таблицу в сто тысяч строк в которой подкрашиваются колонки я ичейки. условными оформлениями - и ничо нигде не тормозит.
|
|||
41
bazvan
08.05.13
✎
23:34
|
(40) :):):):)мань тебе такую передать? За деньги файловый вариант 9 гигов? Готов? Вот иж тиси взялось, без проблем, ты готов?
|
|||
43
Novartis
08.05.13
✎
23:36
|
А как текст сообщения вставить код с оформлением?
|
|||
47
Reaper_1c
08.05.13
✎
23:49
|
(34) Условное оформление влияет не на трафик, а на ресурсы клиента. Особенно web. Фактически условное оформление отрабатывает при выводе информации на экран, т.е., допуская некоторые упрощения, можем сказать, что при любой прокрутке списка система начнет проверят условия для всех отображаемых строк. В web-клиенте этим будет заниматься вообще браузер. Таким образом классический пример того, как делать не надо из (36) по мере работы с табличным полем будет тем сильнее потреблять ресурсы, чем обильнее список вариантов оформления. Задача ваша рассматривается в учебнике http://v8.1c.ru/metod/books/book.jsp?id=231 и на курсах по работе с управляемым интерфейсом. Методика решения изложена в (10) и (17). Ее использование предполагает однократное считывание, расчет и кеширование представления средствами севера приложений и последующую демонстрацию результата без дополнительных проверок и потребления ресурсов. А еще этот вариант тупо короче и понятнее.
|
|||
48
jsmith82
09.05.13
✎
00:15
|
сделать реквизит в справочнике "Представление" и не париться
|
|||
49
jsmith82
09.05.13
✎
00:16
|
либо добавить колонку в данные формы коллекцию и заполнить при создании на сервере или при изменении сотрудника
нахрен сюда УО приплетать |
|||
51
Novartis
09.05.13
✎
08:05
|
Вот пример реализации, добрый человек на официальном форуме дал. Спасибо ему. http://yadi.sk/d/eRBFysKo4fdmI
(47) Реализовано как вы и пишете через дополнительную колонку в форме в таблице. Создается на сервере, модифицируется при редактировании. Но для того чтобы подменять основную колонку этим текстом требуется условное оформление. Т.е. в условном оформлении используется реквизит текст со ссылкой на виртуальную колонку. Скажите а на какой странице здесь http://v8.1c.ru/metod/books/book.jsp?id=231 рассматривается этот пример или как называется? |
|||
52
Худой
10.05.13
✎
04:45
|
Ощущение, что с каждой новой версией 1С, в кодировании все больше маразма появляется.
Всякие там &НаКлиенте &НаСервере &НаКлиентеНаСервереБезКонтекста и прочее. Пример этой ветки тоже тому подтверждение. Практически приходится заниматься тем, что смотришь где ты находишься в данный момент кода. Это убивает до 80 процентов времени. Все свалили на программиста. Выкручивайся, как можешь, чтобы реализовать ту или иную идею. На ассемблере скоро будет проще писать, чем на 1С |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |