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) ? | |
| Интернет-форум Краснодарского края и Краснодара |