![]() |
![]() |
![]() |
|
Не могу получить значение поля, являющегося перечисленем | ☑ | ||
---|---|---|---|---|
0
RomanXXX
07.07.04
✎
09:18
|
Не могу получить значение поля, являющегося перечисленем. Например Справочник.Сотрудники.ХарактерРаботы = Перечисление.ХарактерРаботы.ТрудовойДоговор, При выгрузке справочника Сотрудники из бухгалтерии в Зарплату с помощью OLE не могу получить значение Справочник.Сотрудники.ХарактерРаботы - выгружаемый объект.
|
|||
1
Gavrila
07.07.04
✎
09:37
|
(0) Если не можешь получить в базе ОЛЕ, то вот:
БазаОЛЕ.EvalExpr("Перечисление.ПолучитьАтрибут(""" + ВидПеречисления + """)").ЗначениеПоИдентификатору(ИдентификаторПеречисления); где ВидПеречисления - строка с названием вида перечисления, а ИдентификаторПеречисления - строка с идентификатором значения перечисления |
|||
2
RomanXXX
07.07.04
✎
10:09
|
Спасибо за совет, сейчас попробую, но сомневаюся что это поможет, результат сообщю.
|
|||
3
RomanXXX
07.07.04
✎
10:18
|
V77M.EvalExpr("Перечисление.ПолучитьАтрибут(""" + "ХарактерРаботы" + """)").ЗначениеПоИдентификатору(V77M.Перечисление.ХарактерРаботы.ТрудовойДоговор) = OLE
Не конает, еще есть предложения |
|||
4
Gavrila
07.07.04
✎
10:25
|
БазаОЛЕ.EvalExpr("Перечисление.ХарактерРаботы.ТрудовойДоговор"); - возвращает значение перечисления базы ОЛЕ, чтобы получить идентификатор этого перечисления
БазаОЛЕ.EvalExpr("Перечисление.ХарактерРаботы.ТрудовойДоговор.Идентификатор()"); |
|||
5
Gavrila
07.07.04
✎
10:29
|
+(4) Уточни "могу получить значение поля, являющегося перечисленем" где не можешь получить в локальной базе или в базе ОЛЕ?
|
|||
6
RomanXXX
07.07.04
✎
10:35
|
Проблема состоит в том, чтобы выяснить к какому перечислению относится сотрудник (Сотрудник.ХарактерРаботы равен ли Перечисление.ХарактерРаботы.ТрудовыеОтношения все происходит в ОЛЕ базе)
|
|||
7
RomanXXX
07.07.04
✎
10:36
|
|
|||
8
RomanXXX
07.07.04
✎
10:36
|
в ОЛЕ
|
|||
9
Gavrila
07.07.04
✎
10:48
|
Попробуй так
Если Сотрудник.ХарактерРаботы.Идентификатор() = БазаОЛЕ.EvalExpr("Перечисление.ХарактерРаботы.ТрудовыеОтношения.Идентификатор()") Тогда // Принадлежит ... КонецЕсли; |
|||
10
RomanXXX
07.07.04
✎
10:53
|
Если Сотрудник.ХарактерРаботы.Идентификатор() = БазаОЛЕ.EvalExpr("Перечисление.ХарактерРаботы.ТрудовыеОтношения.Идентификатор()") Тогда
// Принадлежит ... КонецЕсли; Сотрудник.ХарактерРаботы.Идентификатор()-Объект ОЛЕ, тип переменной ХарактерРаботы является Перечисление.ХарактерРаботы.ТрудовыеОтношения В том то и дело , что Сотрудник.ХарактерРаботы не доступен |
|||
11
Gavrila
07.07.04
✎
11:08
|
(10)Что значит "Сотрудник.ХарактерРаботы не доступен" ? Ошибку выдает? или ничего не выдает или хрень какую-то выдает?
|
|||
12
RomanXXX
07.07.04
✎
11:29
|
Нет доступа к значению Сотрудник.ХарактерРаботы.ТрудовыеОтношения
в отладчике передается значение следующие Сотрудник.ХарактерРаботы.ТрудовыеОтношения=ОЛЕ |
|||
13
Gavrila
07.07.04
✎
12:05
|
(12) А что возвращает Сотрудник.ХарактерРаботы.Идентификатор() или СокрЛП(Сотрудник.ХарактерРаботы.Идентификатор())?
|
|||
14
RomanXXX
07.07.04
✎
12:09
|
СокрЛП(Сотрудник.ХарактерРаботы)="OLE"
а СокрЛП(Сотрудник.ХарактерРаботы.Идентификатор()) = Ошибка в выражении! |
|||
15
Gavrila
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 Цикл Сообщить("К:" + СокрЛП(СпрОле.Код) + ", Н:" + СокрЛП(СпрОле.Наименование) + ", Вид:" + СокрЛП(СпрОле.ВидКонтрагента.Идентификатор())); КонецЦикла; КонецПроцедуры |
|||
16
RomanXXX
07.07.04
✎
12:38
|
Я конечно благодарен тебе за твою помощь, спасибо, но результат остается прежний, может твой способ не работает потому что Сотрудник.ХарактерРаботы периодический?
Спр.ХарактерРаботы.Идентификатор()=неизвестный объект Идентификатор() Спр.ХарактерРаботы = "OLE" |
|||
17
Gavrila
07.07.04
✎
12:42
|
(16) естесственно
Попробуй так Если Сотрудник.ХарактерРаботы.Получить(Необходимая_Дата).Идентификатор() = БазаОЛЕ.EvalExpr("Перечисление.ХарактерРаботы.ТрудовыеОтношения.Идентификатор()") Тогда // Принадлежит ... КонецЕсли; |
|||
18
RomanXXX
07.07.04
✎
12:49
|
Спасибо, сработало, я пытался .Получить(РабочаяДата()), на без .Идентификатор
Спасибо огромное, выручил!!! Обращайся если что мое мыло есть! |
|||
19
nice
06.01.05
✎
07:48
|
Хотелось бы поднять тему, т.к. у меня не помогает метод Получить:
спрПров2.Движение.ВидСтатус.Получить(База.EvalExpr("ТекущаяДата()")).Идентификатор()= Ошибка в выражении! База.EvalExpr("ТекущаяДата()")="05.01.05" спрПров2.Движение.ВидСтатус= ОЛЕ Просто через идентификатор тоже не получается: спрПров2.Движение.ВидСтатус.Идентификатор()=Ошибка в выражении спрПров2=База.CreateObject("Справочник.ПроводкиХозОпераций"); |
|||
20
nice
06.01.05
✎
07:51
|
Если посмотреть значение, то по идее
спрПров2.Движение.ВидСтатус ="Долг за товары принятые" спрПров.Движение.ВидСтатус.Идентификатор() = "ДолгЗаТоварыПринятые" |
|||
21
Sh_s
13.01.05
✎
14:15
|
V7 = CreateObject("V77.Application");
//... Спр = V7.CreateObject("Справочник.Номенклатура"); //->Выгружаем OLE-товары в табл "Номен". СпрМетаданные = V7.EvalExpr("Метаданные.Справочник(""Номенклатура"")"); КолвоРеквизитов = СпрМетаданные.Реквизит(); Спр.НайтиПоКоду(Число(Номен.ПолучитьЗначение(Номен.ТекущаяСтрока(),1))); Для Н=1 to КолвоРеквизитов Цикл кфгРекв = СпрМетаданные.Реквизит(Н); Идентификатор = кфгРекв.Идентификатор; Периодический = кфгРекв.Периодический; Тип = кфгРекв.Тип; Вид = кфгРекв.Вид; ЗнРеквизит = Спр.GetAttrib(Идентификатор); Если Тип = "Строка" Тогда СпрТек.УстановитьАтрибут(Идентификатор,Строка(Спр.ПолучитьАтрибут(Идентификатор))); ИначеЕсли Тип = "Число" Тогда СпрТек.УстановитьАтрибут(Идентификатор,Число(Спр.ПолучитьАтрибут(Идентификатор))); ИначеЕсли Тип = "Дата" Тогда СпрТек.УстановитьАтрибут(Идентификатор,Дата(Спр.ПолучитьАтрибут(Идентификатор))); ИначеЕсли Тип = "Перечисление" Тогда //.... //Так вот для реквизита "БазоваяЕдиницаИзмерения" Тип = "Перечисление.ЕдиницыИзмерения" //возвращает ЗнРеквизит=OLE, //Реквизит не периодический. //Как получить значение OLE перечисления - "ШТ.", "М.", "КГ." и т.п. ???? КонецЕсли; КонецЦикла; |
|||
22
Sh_s
13.01.05
✎
18:06
|
Народ напряги пальцы, знаю что некоторые имеют решение для (21).
Подскажите!!!! |
|||
23
Sh_s
14.01.05
✎
10:47
|
Да не поверю чтобы не знали !!!!
Вы профи и ли где ??? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |