Имя: Пароль:
1C
1С v8
OLE
,
0 Snik_666
 
18.07.11
14:11
Добрый день! Подскажите как работать по ОЛЕ. в 77 входит но потом

Форма.Форма(18)}: Значение не является значением объектного типа (CreateObject)
       ТМЦ = V77.CreateObject("Справочник.ТМЦ");



   s_path = "МойПуть";
       s_user = "Юзер";
       s_pass = "111";
       
       COM_77 = Новый COMОбъект("V77s.Application");
       V77 = COM_77.Initialize(COM_77.RMTrade, "/D" + s_path + " /N" + s_user + " /P" + s_pass, "SPLASH_SHOW");//, "NO_SPLASH_SHOW"
       Если НЕ V77 Тогда
           Сообщить("Не удачная попытка входа в 77");
           Возврат;
       КонецЕсли;    
   
       
       ТМЦ = V77.CreateObject("Справочник.ТМЦ");
       ТМЦ.ВыбратьЭлементы();
       Пока ТМЦ.ПолучитьЭлемент() = 1 Цикл
           Если ТМЦ.ЭтоГруппа() = 1 Тогда
               Продолжить;
           КонецЕсли;
           
           Если СокрЛП(ТМЦ.UID) = СокрЛП(ВыбТов.UID) Тогда
               Сообщить(""+СокрЛП(ТМЦ.Наименование)+" ед="+СокрЛП(ТМЦ.БазЕдиница));
           КонецЕсли;
       КонецЦикла;
       
       
       V77 = "";
1 ДенисЧ
 
18.07.11
14:12
ТМЦ = com_V77.CreateObject("Справочник.ТМЦ");
2 andrewks
 
18.07.11
14:14
COM_77.Initialize() возвращает всего лишь результат подключения. врубаешься?
3 Snik_666
 
18.07.11
14:16
Понял! спасибо!
4 Snik_666
 
18.07.11
14:22
а можно еще как-то преобразовать что бы выводило не ед=COMОбъект а нормально ?
5 andrewks
 
18.07.11
14:23
(4) код давай
6 palpetrovich
 
18.07.11
14:24
(4) искать нужно. пр коду, наименованию...
7 Eugene_life
 
18.07.11
14:25
(4) Все ссылки у тебя будут "Com - объект"
8 Snik_666
 
18.07.11
14:28
(7) та в томто и дело команда Сообщить(""+СокрЛП(ТМЦ.Наименование)+" ед="+СокрЛП(ТМЦ.БазЕдиница));

выводит Армирование труба 80*40*2 ед=COMОбъект
как преобразовать?
9 hhhh
 
18.07.11
14:29
а БазЕдиница у тебя точно строка?
10 ДенисЧ
 
18.07.11
14:29
+СокрЛП(ТМЦ.БазЕдиница.Наименование));
11 Snik_666
 
18.07.11
14:30
(9) нет перечисление
12 ДенисЧ
 
18.07.11
14:30
тогда
+СокрЛП(ТМЦ.БазЕдиница.Идентификатор));
13 andrewks
 
18.07.11
14:30
(11) точно? проверял в конфигураторе?
14 Snik_666
 
18.07.11
14:35
(13) точно перечисление
СокрЛП(ТМЦ.БазЕдиница.Идентификатор)); не катит

в отладчике вычисляю ТМЦ.БазЕдиница.Идентификатор пишет
ТМЦ.БазЕдиница.Идентификатор    {(1)}: Ошибка при получении значения атрибута контекста (Идентификатор): Типы не совпадают (0)
15 ДенисЧ
 
18.07.11
14:36
А если () ?
16 Snik_666
 
18.07.11
14:37
СокрЛП(ТМЦ.БазЕдиница.Идентификатор())   сработало
17 Snik_666
 
18.07.11
14:40
блин но надо именно представление еденицы а не идентиф.
18 ДенисЧ
 
18.07.11
14:42
тогда только через метаданные ковырять...
19 ДенисЧ
 
18.07.11
14:43
Или попровбовать com_V77.Строка(ТМЦ.БазЕдиница);

Но тут я не уверен, а пробовать лень
20 andrewks
 
18.07.11
14:43
ПредставлениеВида()
21 ДенисЧ
 
18.07.11
14:44
(20) И получишь "Единицы измерения" (или как там оно у него называется)...
22 andrewks
 
18.07.11
14:45
(21) а, ну да.. ч0рт
23 andrewks
 
18.07.11
14:45
EvalExpr("Строка(ТМЦ.БазЕдиница)")
24 palpetrovich
 
18.07.11
14:48
а какова конечная цель? получить строковое предствление Имени Перечисления или получить аналог в текущей базе?
25 Snik_666
 
18.07.11
14:49
цель сопоставить ед. измерения найти различные базовые ед.

EvalExpr("Строка(ТМЦ.БазЕдиница)")    {(1,1)}: Процедура или функция с указанным именем не определена (EvalExpr)
26 ДенисЧ
 
18.07.11
14:50
(20)com_v77.EvalExpr()
только я сомневаюсь...
27 Snik_666
 
18.07.11
14:54
Ошибка при вызове метода контекста (EvalExpr): Произошла исключительная ситуация (1С:Предприятие): 1    Строка(ТМЦ<<?>>.БазЕдиница)
Переменная не определена (ТМЦ)
               Сообщить(""+COM_77.EvalExpr("Строка(ТМЦ.БазЕдиница)"));
по причине:
Произошла исключительная ситуация (1С:Предприятие): 1    Строка(ТМЦ<<?>>.БазЕдиница)
Переменная не определена (ТМЦ)
28 palpetrovich
 
18.07.11
14:56
(25) я так ищу (на примере СтавкаНДС), может и криво, не знаю, но находит:
НовыйОбъект.СтавкаНДС = Перечисления[КОМОбъект.СтавкаНДС.Метаданные().Имя].Get(Соединение.Перечисления[КОМОбъект.СтавкаНДС.Метаданные().Имя].Индекс(КОМОбъект.СтавкаНДС));
29 Snik_666
 
18.07.11
14:56
Метод объекта не обнаружен (EvalExpr)
               Сообщить(""+COM_77.EvalExpr("Строка(ТМЦ.БазЕдиница)"));
Ошибка? Это не ошибка, это системная функция.