К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Получить идентификатор перечисления по OLE?

Гость
0 - 12.10.2012 - 11:54
Проблема такая, подключаюсь обработкой из базы 7.7 к 8.2 по OLE. Как получить идентификатор значения перечисления? Из 7-ых баз я делаю таким способом:
СЗ_Субк.ДобавитьЗначение(СокрЛП(Ит.Субконто(1).Вид Движения.Идентификатор())); Где Ит - бухитоги OLE-базы. Как это-же сделать с 8-ой - не пойму.



Гость
1 - 12.10.2012 - 13:40
Если нигде не наврал...

ПеречислениеСсылка.Метаданные().ЗначенияПеречислен ия[ПеречислениеМенеджер.Индекс(ПеречислениеСсылка)]
Гость
2 - 12.10.2012 - 13:50
Но всё же XMLstring гораздо удобнее...
Гость
3 - 12.10.2012 - 13:54
А что дает XMLСтрока(<Значение>). например OLE.XMLСтрока(Ит.Субконто(1).Вид Движения.Идентификатор()); ?
Гость
4 - 12.10.2012 - 14:03
(1) Что-то так и не примастырил это выражение.
Можно на примере моей переменной показать?
Стр.Получить(1).ВидДвиженияДенежныхСредств
где Стр - строка ТЗ из OLE-базы, ВидДвиженияДенежныхСредств - реквизит типа -"Перечисление.ВидДвиженияДенежныхСредств".
Гость
5 - 12.10.2012 - 14:05
(3) V8.XMLСтрока(Стр.Получить(1).ВидДвиженияДенежныхСр едств.Идентификатор()) = Ошибка в выражении!
Гость
6 - 12.10.2012 - 14:07
(3) А вот так получилось:
V8.XMLСтрока(Стр.Получить(1).ВидДвиженияДенежныхСр едств) = "ПрочиеРасходыПоТекущейДеятельности"
Спасибо за идею и участие.
Гость
7 - 12.10.2012 - 14:12
Не парься :) Больно громоздкое сооружение будет, да и не факт что написано правильно - писал по памяти.
OLE_ЗначениеПеречисления = Стр.Получить(1).ВидДвиженияДенежныхСредств;
OLE_ЗначениеПеречисления .Метаданные().ЗначенияПеречислен ия[OLE.Перечисления.Менеджер.ВидДвиженияДенежныхСредс тв(OLE_ЗначениеПеречисления )]

Сильно монструозно...
Гораздо приятнее так:
СтроковойИдентификатор = OLE.XMLСтрока(Стр.Получить(1).ВидДвиженияДенежныхС редств)

(3) Скормить системное перечисление? Выдаст идентификатор в английском представлении.
Гость
8 - 12.10.2012 - 14:40
(1,3) Еще вопрос, до кучи, можно?
Как передать Булево (Ложь, Истина) в 8-ку из 7.7?
Гость
9 - 12.10.2012 - 14:57
Через преобразование к числу туда-обратно. Как вариант.
Гость
10 - 12.10.2012 - 15:04
(9) Не проходит. Передаю:
V8.ЗавершитьРаботуСистемы(0) - ошибка при выполнении.
V8.ЗавершитьРаботуСистемы(V8.Булево(0)) - тоже не канает.
Гость
11 - 12.10.2012 - 17:19
чо вы такие не адекватные ?
Гость
12 - 12.10.2012 - 17:57
8-US1C > Булево - в семёрке это "Да/Нет".
Передаваться должно напрямую, т.к. это простой тип данных.
Гость
13 - 15.10.2012 - 13:24
(11) А что по этому поводу думают адекватные? Вопрос все еще в силе.
(12) Неа. Да/Нет в семерке - это значения перечисления, которые делают глобальными переменными и используют как булево. А значения всех перечислений для другой базы - вещь непонятная. В 8-ке да, это примитивный тип данных, но по OLE все равно не передается. Только число, строка, дата.
Кстати, 0 и -1 тоже не проканало передать булево. И ЗначениеИзСтрокиВнутр("**""B"",0**") - тоже не прошло. Хотелось бы услышать новые варианты/идеи передачи булево в 8-ку из 7.7.
Гость
14 - 15.10.2012 - 13:26
К (13) Извиняюсь, хотел написать: ЗначениеИзСтрокиВнутр("**""B"",0**")
15 - 15.10.2012 - 14:02
(14)
так пробовал?
V8.ЗавершитьРаботуСистемы(V8.ЗначениеИзСтрокиВнутр ("**""B"",0**"))
Гость
16 - 15.10.2012 - 14:36
(15) Да. Именно так пробовал.
Гость
17 - 15.10.2012 - 18:08
13-US1C > "Хотелось бы услышать новые варианты/идеи передачи булево в 8-ку из 7.7"

- Ну, передавай как текст, как вариант...
"Истина", "Ложь"
Гость
18 - 16.10.2012 - 10:29
(17) Была и такая попытка. Эффект - 0.
Гость
19 - 17.10.2012 - 03:43
зачем булево по OLE передавать, если загружаемое значение явно зависит от базы источника?
Если в источнике
в OLE - истина
Иначе
в OLE - ложь
КонецЕсли
Если бы данные загружались из файла - другое дело.
Там можно использовать внутреннее представление:
**"B",1** и **"B",0**
я загружал именно так, без всяких **
Гость
20 - 17.10.2012 - 03:45
блин и у меня левая фигурная скобка заменилась двумя звездочками ((
Гость
21 - 17.10.2012 - 15:56
(19) Как пример. Подключился к базе 8.2, получил данные и закрываю OLE-базу - V8.ЗавершитьРаботуСистемы(). Если в параметре метода не указать "Ложь", появится окно с запросом на закрытие программы. Пока не ткнешь на Да - не будет отрабатывать дальше. А баз таких - несколько десятков и будет больше. Вот такая автоматизация получается, сиди и тыкай мышой в цикле.
Гость
22 - 18.10.2012 - 01:39
(21)Одно дело передать из 7-ки, другое дело закрыть 8-ку
1 - попробуй просто с V8.ЗавершитьРаботуСистемы(V8.Перечисления.Булево.Д а).
Гость
23 - 18.10.2012 - 09:38
(22) А нет такого перечисления. По крайней мере в БП 2.0
Гость
24 - 18.10.2012 - 09:54
(23)Да, что то я наврал, есть просто тип "Булево" со значениями ложь и истина. Но попробуй просто (1). При работе из 7-ки с вордом или опенофисом было по барабану
25 - 18.10.2012 - 10:00
ПрекратитьРаботуСистемы не пойдет?
Гость
26 - 18.10.2012 - 11:31
(24) Как уже писал ранее, 0 -1 - не передаются корректно в параметре, требующем булево. Пишет что-то вроде "несоответствие типов".
(25) Так получилось закрыть 8-ку. Правда не обошлось без ошибки при выполнении этого метода:
V8.ПрекратитьРаботуСистемы();
{D:\1C_BASE\РЕКВИЗИТЫ_1\EXTFORMS\СОБРАТЬОБОРОТЫ_V8 .ERT(311)**: Неизвестная ошибка
Но вопрос про передачу булева так и не решен. Как например, управлять настройками пользователей, где некоторые настройки принимают значение ЛОЖЬ/ИСТИНА?
Гость
27 - 18.10.2012 - 15:20
(26)Как тупой вариант, определи в 8-ой базе глобальные переменные Ложь и Истина и их используй. Может есть что-то и поумнее
Гость
28 - 18.10.2012 - 15:24
непонятно почему не проканало ЗначениеИзСтрокиВнутр, ты писал именно V8.ЗначениеИзСтрокиВнутр() ? это надо делать в 8-ой базе
Гость
29 - 18.10.2012 - 15:32
(27) Вносить изменения в конфигурацию хреновой кучи баз не хочется.
(28) Да, именно с V8 выполнял код. В 7.7 это вызовет ошибку.
Гость
30 - 18.10.2012 - 16:23
странно, вот код с инфостарта, товарищ радуется что все работает:
перем ИСТИНА_8

перем ЛОЖЬ_8

ИСТИНА_8=СоединениеСбАЗОЙ8.ЗначениеИзСтрокиВнутр(" **""B"",1**")

ЛОЖЬ_8 = СоединениеСбАЗОЙ8.ЗначениеИзСтрокиВнутр("**""B"",0 **")
Гость
31 - 19.10.2012 - 13:26
(30) Товарищу повезло.
У меня не отрабатывает ни:
V8.ЗавершитьРаботуСистемы(V8.ЗначениеИзСтрокиВнутр ("**""B"",0**"));
ни:
Перем Ложь;
Ложь = V8.ЗначениеИзСтрокиВнутр("**""B"",0**");
V8.ЗавершитьРаботуСистемы(Ложь);
Гость
32 - 19.10.2012 - 13:35
(31): пробелы потерял?..
Гость
33 - 19.10.2012 - 13:41
(32) ?


К списку вопросов






Copyright ©, Все права защищены