|
работа с COM объектами | ☑ | ||
---|---|---|---|---|
0
Black Dragon
21.09.11
✎
16:05
|
Доброго дня!
как определить пустое значение у COM объекта? тип имеется, по наименованию не надежно |
|||
1
Black Dragon
21.09.11
✎
16:05
|
особенно актуально при работе со справочниками
|
|||
2
zbv
21.09.11
✎
16:07
|
ЗначениеЗаполнено()
в com соединении |
|||
3
Axel2009
21.09.11
✎
16:08
|
Глобальный контекст.ЗначениеЗаполнено (Global context.ValueIsFilled)
Глобальный контекст (Global context) ЗначениеЗаполнено (ValueIsFilled) Синтаксис: ЗначениеЗаполнено(<Значение>) Параметры: <Значение> (обязательный) Тип: Произвольный. Значение для сравнения. Возвращаемое значение: Тип: Булево. Для значений типа Булево всегда возвращается Истина. Для значений типа Строка возвращается Истина, если в строке есть не пробельные символы. Для массивов и коллекций возвращается Истина, если в них есть хотя бы 1 элемент. Описание: Функция проверяет, отличается ли переданное значение от значения по умолчанию того же типа. Не работает с мутабельными значениями. При передаче мутабельного значения функция вызывает исключение. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, [b]внешнее соединение[/b]. Примечание: Источники данных не проверяются, значение считается заполненным всегда. |
|||
4
Black Dragon
21.09.11
✎
16:09
|
не понятно...
ну, к примеру, Спр = Соединение.Справочник.Номенклатура; тогда как? |
|||
5
Axel2009
21.09.11
✎
16:09
|
перед значениезаполнено добавить соединение, не?
|
|||
6
Black Dragon
21.09.11
✎
16:10
|
и мутабельный тип тоже еще та штучка...
|
|||
7
Shurjk
21.09.11
✎
16:11
|
Проще всего проверить уже полученное значение, все равно ведь получаешь строку или число.
|
|||
8
Black Dragon
21.09.11
✎
16:13
|
может тогда так:
Спр = Соединение.Справочник.Номенклатура; Если Спр.ValueIsFilled() Тогда ... КонецЕсли; (7) при проверке полученного значения мешается мутабельный тип данных |
|||
9
zbv
21.09.11
✎
16:13
|
а "Спр = Соединение.Справочник.Номенклатура;" зачем проверять ?
|
|||
10
Shurjk
21.09.11
✎
16:13
|
+(7) В данном случае проверять вот это Спр = Соединение.Справочник.Номенклатура;
на заполненность вообще смысла не имеет а вот проверить примерно так СокрЛП(Соединение.Справочник.Номенклатура.Наименование) <> "" вполне целесообразно. |
|||
11
Axel2009
21.09.11
✎
16:14
|
(10) и сиди отлавливай потом после такого, где у нас надо код оптимизировать
|
|||
12
Black Dragon
21.09.11
✎
16:14
|
(10) а что мешает базе-источнику иметь элемент с незаполненным наименованием?
|
|||
13
zbv
21.09.11
✎
16:15
|
+ (9) хотя "Справочник" - это что ?
|
|||
14
Black Dragon
21.09.11
✎
16:15
|
у самого COM объекта есть свойство специальное для этих целей?
|
|||
15
Shurjk
21.09.11
✎
16:15
|
(11) (12) Иначе не проверишь Соединение.Справочник.Номенклатура - COM объект.
|
|||
16
Black Dragon
21.09.11
✎
16:16
|
(13) это определение типа данных, затем, к примеру, можно, так:
ПолученныеЭлементы = Спр.Выбрать(); |
|||
17
hhhh
21.09.11
✎
16:17
|
(14) ЗначениеЗаполнено - тебе же сказали
|
|||
18
Black Dragon
21.09.11
✎
16:18
|
у COM объекта есть свои служебные аттрибуты?
|
|||
19
zbv
21.09.11
✎
16:18
|
(16) тогда уж "СправочникИ"
а зачем проверять получил ты менеджера или нет ? |
|||
20
Black Dragon
21.09.11
✎
16:20
|
применять ЗначениеЗаполнено(..) для полученного значения как-то не то...
(16) у элемента справочника либо реквизита дока могут ведь быть незаполненные значения? так ведь? |
|||
21
Shurjk
21.09.11
✎
16:21
|
(20) Можешь проверить к примеру код, он всегда заполнен.
|
|||
22
zbv
21.09.11
✎
16:22
|
(20) почему "значениеЗаполнено" не то для проверки заполненности реквизитов ?
|
|||
23
Axel2009
21.09.11
✎
16:22
|
(15) да ладно?
|
|||
24
Shurjk
21.09.11
✎
16:23
|
(23) Проверь
|
|||
25
Shurjk
21.09.11
✎
16:23
|
+(24) А что это по вашему будет?
|
|||
26
Axel2009
21.09.11
✎
16:24
|
Истина или Ложь.
|
|||
27
Shurjk
21.09.11
✎
16:24
|
(26) Интресная логика и почему?
|
|||
28
Black Dragon
21.09.11
✎
16:24
|
вот, к примеру, так:
Спр = Соединение.Справочник.Номенклатура; ПолученныеЗначения = Спр.Выбрать(); Пока ПолученныеЗначения.Следующий() Цикл ... Если ЗначениеЗаполнено(ПолученныеЗначения.СтранаПроисхождения) Тогда ... КонецЕсли; КонецЦикла; будет исключение по причине мутабельного значения!!! (21) а ведь точно! а я блин, не догадался!!! Спасибо! |
|||
29
zbv
21.09.11
✎
16:26
|
Если Соединение.ЗначениеЗаполнено(ПолученныеЗначения.СтранаПроисхождения) Тогда
// со (2) поста пытаемся до тебя мысль довести :) |
|||
30
hhhh
21.09.11
✎
16:27
|
(28)
Соединение.ЗначениеЗаполнено( кончай уже прикалываться. |
|||
31
Axel2009
21.09.11
✎
16:31
|
(27) потому что метод надо вызывать в рамках области видимости. не что вижу то пою.
|
|||
32
Shurjk
21.09.11
✎
16:34
|
(31) Какой метод? речь идет о том какой тип будет у Соединение.Справочник.Номенклатура
|
|||
33
Axel2009
21.09.11
✎
16:37
|
(32) ЗначениеЗаполнено. тип будет Справочник.Номенклатура. но в области видимости Соединения
|
|||
34
Axel2009
21.09.11
✎
16:37
|
(33) для тех кто в тяжелых танках (29) и (30) уже прямо написали как надо реализовать (5)
|
|||
35
Black Dragon
21.09.11
✎
16:38
|
(33) не только...вчера буквально в этом убедился...если 8-ка с 8-кой
|
|||
36
Shurjk
21.09.11
✎
16:38
|
(34) Не смущает что такое решение будет работать часасми?
|
|||
37
Axel2009
21.09.11
✎
16:39
|
(36) ничуть не дольше, чем СокрЛП(Соединение.Справочник.Номенклатура.Наименование)
|
|||
38
Axel2009
21.09.11
✎
16:40
|
(37) более того, чтобы это реализовать, нужно обращаться к серверу через объект ком соединения. а в (29) написано будет только к объекту ком соединения и вернется результат.
|
|||
39
Axel2009
21.09.11
✎
16:41
|
(35) вообще читаем что тут пишут али как?
|
|||
40
Black Dragon
21.09.11
✎
16:44
|
Ну так что, тема закрыта? :)
|
|||
41
Shurjk
21.09.11
✎
18:34
|
(38) Зачем каждый раз обращаться получаем один раз выборку и все, а по вашему методу он действительно будет каждый раз обращаться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |