Имя: Пароль:
1C
1С v8
Сравнение реквизитов элемента справочника и строки выборки
0 пыхтачокк
 
19.04.13
15:52
Всем доброго дня! Хочу оптимизировать процедуру сравнения, ну и параллельно взять метод на "вооружение". Итак:
имеется элемент справочника с реквизитами Поле1, Поле2, Поле3.
на форме элемента расположены поля ввода этих реквизитов
имеется строка выборки запроса с полями Поле1, Поле2, Поле3
реквизиты в справочнике и поля выборки имеют одинаковые названия и типы. требуется сравнить значение реквизита со значением поля выборки и если они различны например установить фон поля ввода данного реквизита на форме. конструкция
Если Поле1 <> Выборка.Поле1 Тогда
ЭлементыФормы.Поле1..... и так далее вполне работоспособна, но имхо громоздка и примитивна. да и реквизитов не 3, а поболе. нельзя ли реализовать подобное например обходом коллекции? вроде припоминается что когда-то видел подобное изящное решение, да уже не помню где. не подскажете?
1 shuhard
 
19.04.13
15:54
(0) кури []
2 Maxus43
 
19.04.13
15:55
обходи по метаданным эелемента названия реквизитов...
потом типа Если СсылкаНаСправочник[ИмяРеквизита] <> Выборка[ИмяРеквизита]
3 пыхтачокк
 
19.04.13
16:03
(2) гм, а более подробного куска кода нет? сначала нужно получить сам объект метаданных и после уже обходить его? никогда с метаданными не работал, затрудняюсь с чего начинать то
4 shuhard
 
19.04.13
16:03
(3)[сначала нужно получить сам объект метаданных и после уже обходить его]
угу
5 Maxus43
 
19.04.13
16:10
ссылка на элемент у тебя есть? Для Каждого ИмяРеквизита Из ЭлементСсылка.Метаданные().Реквизиты Цикл
6 пыхтачокк
 
19.04.13
16:16
(5) Во! То что нужно. Дальше откопаю сам.

Благодарю за помощь!
7 пыхтачокк
 
19.04.13
16:32
Гм. Maxus43 а еще вдогонку вопросик не подскажешь? Как в строке выборки проверить существование поля заданного в ИмяРеквизита?
(некоторые реквизиты справочника не входят в поля выборки, служебные)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший