|
Условное Оформление ТЧ документа - по реквизиту другого документа | ☑ | ||
---|---|---|---|---|
0
hardsign
21.03.13
✎
14:43
|
В табличной части документа есть поле типа "ДокументСсылка.РасходныйОрдер". Мне надо проверять - если соответствующий расходный ордер проведен, менять цвет текста строки.
Для условного оформления доступны только условия полей, присутствующих в документе. Поле "проведен" из Расходного ордера нет в табличной части - соответственно УО недоступно. Пробовал добавить поле с типом булево в ТЧ, создать ссылку на расходныйордер.проведен. В ТЧ поле норм заполняется, но УО не отрабатывает - значение (к примеру ИСТИНА для проведенного документа) - недоступно в объектной модели, точнее в объекте незаполненное значение - ЛОЖЬ. Как побороть? Присваивать значение реквизитаТЧ=расходныйордер.проведен в приоткрытии() не вариант. |
|||
1
hardsign
21.03.13
✎
14:47
|
Да, забыл написать - УФ, 8.2
|
|||
2
Defender aka LINN
21.03.13
✎
14:49
|
(0) "Присваивать значение реквизитаТЧ=расходныйордер.проведен в приоткрытии() не вариант." - религиозные мотивы?
|
|||
3
hardsign
21.03.13
✎
14:52
|
(2) пишется история изменения всех реквизитов, будет много мусора - необходимо будет его отсеивать. Да и вообще некрасиво - если вариантов других нет конечно так и сделаю, но хотелось бы изящнее.
|
|||
4
Defender aka LINN
21.03.13
✎
14:57
|
(3) Какая история изменения, какой мусор? Или ты еще не в курсе, что в ТЧ можно добавить реквизит ФОРМЫ?
|
|||
5
hardsign
21.03.13
✎
15:01
|
(4) Я добавил реквизит формы. Он не считывается УО, УО видит только данные Объекта.
|
|||
6
hardsign
21.03.13
✎
15:05
|
Может понятнее так. Добавил реквизит формы ПроведенОрдер (булево). Заполняю его значением из ВыдачаТаблица.ПриходныйОрдер.Проведен. При открытии формы - в ПроведенОрдер заполняются верные значения. Но УО не отрабатывает.
ЭлементУО = ЭтаФорма.УсловноеОформление.Элементы.Добавить(); ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ВыдачаТаблицаОтделение"); ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВыдачаТаблица.ПроведенОрдер"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Истина; ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Зеленый); |
|||
7
Defender aka LINN
21.03.13
✎
15:34
|
(6) Руками добавь оформление
|
|||
8
hardsign
21.03.13
✎
15:39
|
(7) Через перебор строк ТЧ? - Оно слишком медленно работает:) И глючит при копировании строк.
|
|||
9
Defender aka LINN
21.03.13
✎
15:42
|
(8) Вот как связано условное оформление и отбор строк? Можешь рассказать логическую цепочку, а то я столько веществ не переживу, чтобы самому связать.
Возьми, ля, мышь, ля, в руку, ля, и натыкай (6) в конфигураторе. |
|||
10
Defender aka LINN
21.03.13
✎
15:42
|
(9) *перебор строк
|
|||
11
hardsign
21.03.13
✎
15:52
|
(9) Натыкал (6) в конфигураторе. Не работает. Задаю услвоие по любому другому полю, которое есть в ТЧ (в Объекте) - работает. Если делаю ссылку из поля ТЧ на реквизит другого документа - не видит УО значение этого реквизита, и не отрабатывает.
|
|||
12
hardsign
21.03.13
✎
16:01
|
Да, еще, при оформлении руками: реквизиты формы (т.е. реквизиты, которые добавлены ТОЛЬКО в форме и не добавлены у Объекта) - НЕДОСТУПНЫ к выбору в условиях отбора условного оформления.
|
|||
13
hardsign
21.03.13
✎
16:09
|
Точнее поля формы недоступны. Реквизиты формы доступны - но значение из этого поля УО не видит, и не отрабатывает. К этому и был мой вопрос - как передать в УО значение из реквизита выбранного документа?
|
|||
14
Defender aka LINN
21.03.13
✎
16:16
|
(12) Зачем ви т'гавите? Только что проверил - все работает как часы.
|
|||
15
hardsign
21.03.13
✎
16:35
|
(14) Перепроверил еще раз - не работает. У Вас сработало УО по условию - проверка значения реквизита документа, выбранного в ТЧ?
|
|||
16
hardsign
21.03.13
✎
16:36
|
8.2.17.153.
|
|||
17
Defender aka LINN
21.03.13
✎
16:38
|
(15) Перечитай мои посты еще раз
|
|||
18
hardsign
21.03.13
✎
16:55
|
Перечитал. Перепроверил. не работает.
Что делаю: 1. Есть документ "Заявка". 2. В документе ТЧ - "ВыдачаТаблица". 3. В ТЧ есть поле типа "ДокументСсылка.РасходныйОрдер". 4. У Расходного ордера есть поле - "Проведен", тип Булево. Добавляю реквизит формы, поле в ТЧ, имя "ПроведенОрдер". Тип Булево. Указываю ПутьКДанным - ВыдачаТаблица.РасходныйОрдер.Проведен. После этого заполняю УО формы: 1) оформление - текст зеленым 2) условие - Объект.ВыдачаТаблица.ПроведенОрдер Равно Истина 3) оформляемые поля - указываю все колонки таблицы Оформление не происходит. Через отладчик отлавливал - после открытия формы значение Объект.ВыдачаТаблица.ПроведенОрдер - пустое. Соответственно, либо надо его заполнять присваиванием значений (в цикле присвоить Объект.ВыдачаТаблица.ПроведенОрдер значению из документа), либо проверять в условии не значение Объект.ВыдачаТаблица.ПроведенОрдер, а что то другое (типа Элементы.ВыдачаТаблица.ПроведенОрдер - но это тоже не проходит). |
|||
19
Defender aka LINN
21.03.13
✎
16:56
|
(18) "Указываю ПутьКДанным" - дальше не читал
|
|||
20
hardsign
21.03.13
✎
17:13
|
(19) Ок, а какие варианты? Указывать значение поля Булево, и перебирать в цикле в процедуре ПриОткрытии() все строки документа, присваивая полю значение из ВыдачаТаблица.РасходныйОрдер.Проведен?
|
|||
21
Defender aka LINN
21.03.13
✎
17:15
|
(20) За такое в ПриОткрытии я тебе лично явлюсь в кошмарном сне и горло перегрызу. В ПриЧтенииНаСервере() / ПриСозданииНаСервере()
|
|||
22
hardsign
21.03.13
✎
17:16
|
(21) В ПриСозданииНаСервере() - долго. Если предположить 200-300 строк в ТЧ.
|
|||
23
Defender aka LINN
21.03.13
✎
17:18
|
(22) 1. Скерали долго?
2. Вам шашечки, или ехать? |
|||
24
hardsign
21.03.13
✎
17:19
|
(21) И, возвращаясь к записываемой истории изменений реквизитов, все эти присваивания будут записаны в регистр!
+ пользователь открыв докмент, ничего не поменяв в нем - нажимая "отмена" получит сообщение о изменении документа и предложении сохранить:) |
|||
25
Defender aka LINN
21.03.13
✎
17:20
|
(24) Иди протрезвей, а?
|
|||
26
hardsign
21.03.13
✎
17:22
|
Но ведь это криво! Зачем записывать в документ дополнительно значения поля из расходногоОрдера, если ссылка на проверяемый объект уже присутствует в ТЧ! Таким образом - дублируются данные в базе. Плюс без открытия документа они еще и будут не совпадать!
|
|||
27
Defender aka LINN
21.03.13
✎
17:23
|
(26) Еще раз: иди протрезвей
|
|||
28
hardsign
21.03.13
✎
17:25
|
(25) А грубить то зачем? Если не можете помочь советом - троллите в другом месте.
|
|||
29
Defender aka LINN
21.03.13
✎
17:27
|
(28) Та потому что ты явно упорот чем-то. Уже, вон, что-то в базу писать собрался...
|
|||
30
DexterMorgan
21.03.13
✎
17:37
|
(28) Ну как бы реквизит формы к данным базы отношения не имеет, ну максимум если ты поставишь сохраняемое значение для пользователя он запишется в хранилище настроек
|
|||
31
drcrasher
21.03.13
✎
17:39
|
к (9) всё тоже самое натыкать в режиме предприятия.
|
|||
32
hardsign
21.03.13
✎
19:45
|
Сделал с присваиванием значения полю при создании на сервере, через цикл и элементы.поле=документ.поле.
Работает. Считаю это кривым бредом - заполнять по сути колонку виртуальной таблицы, когда в реальной таблице на сервере уже есть необходимые значения - просто к ним невозможно обратиться из необходимой функции. |
|||
33
Defender aka LINN
22.03.13
✎
08:08
|
(32) "когда в реальной таблице на сервере уже есть необходимые значения": ничего, что необходимые значения - в несколько более иначе другой таблице? В табличной части у тебя только ссылка - ГУИД документа, т.е. число. Никаких пометок удаления, флагов и прочих реквизитов у числа не бывает.
|
|||
34
Defender aka LINN
22.03.13
✎
08:09
|
З.Ы. Теперь осталось только научить тебя реквизиты запросом вытягивать
|
|||
35
hardsign
22.03.13
✎
11:10
|
(34) Так я про это и говорю - можно было бы сделать обычный join и потянуть из таблицы приходных ордеров нужные данные. Это можно сделать отчетом, обработкой и т.д. Но из условного оформления это недоступно, и надо придумывать костыль!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |