Вход | Регистрация


1С:Предприятие ::

Метки:OLE и COM

Не могу получить значение поля, являющегося перечисленем

Я
   RomanXXX
07.07.04 - 09:18
Не могу получить значение поля, являющегося перечисленем. Например Справочник.Сотрудники.ХарактерРаботы = Перечисление.ХарактерРаботы.ТрудовойДоговор, При выгрузке справочника Сотрудники из бухгалтерии в Зарплату с помощью OLE не могу получить значение Справочник.Сотрудники.ХарактерРаботы - выгружаемый объект.
 
 
   Gavrila
 
1 - 07.07.04 - 09:37
(0) Если не можешь получить в базе ОЛЕ, то вот:
БазаОЛЕ.EvalExpr("Перечисление.ПолучитьАтрибут(""" + ВидПеречисления + """)").ЗначениеПоИдентификатору(ИдентификаторПеречисления);
где ВидПеречисления - строка с названием вида перечисления, а ИдентификаторПеречисления - строка с идентификатором значения перечисления
   Gavrila
 
15 - 07.07.04 - 12:19
(14) Вот пример для справочника "Контрагенты", где реквизит "ВидКонтрагента" - тип Перечисление.ВидыКонтрагентов. Все работает
//*******************************************
Процедура Сформировать()
   // Получаем доступ к OLE объекту V7

    БазаОле            = СоздатьОбъект("V77.Application");
    КаталогБазыОЛе    = "D:\1cv77\МояБаза\";
    ПользовательОле = "";
    ПарольОле        = "";
    
    МонопольныйРежимOLE = " /m"; 
   // для немонопольного запуска указать пустую строку!

    
    ЗапускБезЗаставки = 1; 
   // для появления заставки поставьте "0"

    
    РезультатПодключения = 
    БазаОле.Initialize(БазаОле.RMTrade , "/d" + """" + 
    Сокрлп(КаталогБазыОле) + """ /n" + 
    Сокрлп(ПользовательОле)+ " /p" + 
    Сокрлп(ПарольОле) + МонопольныйРежимOLE ,
    ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
    
    Если РезультатПодключения = 0 Тогда 
        Предупреждение("Ошибка подключения.");
    КонецЕсли;
    
    СпрОле = БазаОле.EvalExpr("СоздатьОбъект(""Справочник.Контрагенты"")");
    СпрОле.ВыбратьЭлементы();
    Пока СпрОле.ПолучитьЭлемент() = 1 Цикл
        Сообщить("К:" + СокрЛП(СпрОле.Код) + ", Н:" + СокрЛП(СпрОле.Наименование) + ", Вид:" + СокрЛП(СпрОле.ВидКонтрагента.Идентификатор()));
    КонецЦикла;
    
КонецПроцедуры
   RomanXXX
16 - 07.07.04 - 12:38
Я конечно благодарен тебе за твою помощь, спасибо, но результат остается прежний, может твой способ не работает потому что Сотрудник.ХарактерРаботы периодический?
Спр.ХарактерРаботы.Идентификатор()=неизвестный объект Идентификатор()
Спр.ХарактерРаботы = "OLE"
   Gavrila
 
17 - 07.07.04 - 12:42
(16) естесственно
Попробуй так 
Если Сотрудник.ХарактерРаботы.Получить(Необходимая_Дата).Идентификатор() = БазаОЛЕ.EvalExpr("Перечисление.ХарактерРаботы.ТрудовыеОтношения.Идентификатор()") Тогда 
// Принадлежит ... 

КонецЕсли;



Список тем форума
Рекламное место пустует   Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует