![]() |
![]() |
![]() |
|
Перенос из 7.7 в 8.2 через OLE | ☑ | ||
---|---|---|---|---|
0
Sun125
03.03.12
✎
11:37
|
Переношу справочник из 7.7 в 8.2 через OLE.
Подскажите,пожалуйста,как прочитать ТЗ, которая представлена в 7.7 в виде строки? в 7.7 эта ТЗ считывается методом: ТЗ = ЗначениеИзСтроки(Нормативы) как это сделать 8.2? |
|||
1
Rie
03.03.12
✎
11:42
|
(0) В 7.7 в глобальном модуле завести экспортируемую переменную (например, глСтрокаТЗ) и
База77.глСтрокаТЗ = Нормативы; ТЗ77 = База77.EvalExpr("ЗначениеИзСтроки(глСтрокаТЗ)"); |
|||
2
andrewks
03.03.12
✎
12:04
|
(1) в принципе, если конфу менять нельзя, можно какую-нибудь из уже имеющихся заюзать, а потом вернуть на место
|
|||
3
andrewks
03.03.12
✎
12:11
|
(1) кстати, а зачем вообще глоб.переменная?
|
|||
4
Мимохожий Однако
03.03.12
✎
12:16
|
Проще напрямую читать объекты и формировать свою ТЗ или массив
|
|||
5
Sun125
03.03.12
✎
12:20
|
(1) ТЗ77 - это COMобъект. Как его можно считать в нормальную ТЗ на 8-ке?
|
|||
6
Мимохожий Однако
03.03.12
✎
12:23
|
(5)"ТЗ77 - это COMобъект". Враки.
через ОЛЕ можно перенести только базовые типы. |
|||
7
Sun125
03.03.12
✎
12:23
|
(4) КАК из этого сформировать свою ТЗ?)
{"ТаблицаЗначений","2",{"0","","0","0","0","","2",{{"КолвоКомнат","Колво комнат","1","0","0",{},"","0",{{"Строка","1 комнат"},{"Строка","2 комнат"},{"Строка","3 комнат"},{"Строка","4 комнат"},{"Строка","5 комнат"},{"Строка","6 комнат"}}},{"Прописано0","Нет","1","5","1",{},"","0",{{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"}}},{"Прописано1","1","1","4","2",{},"","0",{{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"}}},{"Прописано2","2","1","4","3",{},"","0",{{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"}}},{"Прописано3","3","1","4","4",{},"","0",{{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"}}},{"Прописано4","4","1","4","5",{},"","0",{{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"}}},{"Прописано5","5","1","4","6",{},"","0",{{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"}}},{"Прописано6",">5","1","4","7",{},"","0",{{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"},{"Число","0"}}}}}} |
|||
8
Мимохожий Однако
03.03.12
✎
12:24
|
Ты посмотри откуда эту ТЗ берет семерка. И возьми напрямую через ОЛЕ.
|
|||
9
Sun125
03.03.12
✎
12:24
|
(6) ну как, в отдлачике смотрю...что comобъект
|
|||
10
andrewks
03.03.12
✎
12:25
|
(5) а что, ТЗ77.ВыбратьСтроки(); не работает?
|
|||
11
Sun125
03.03.12
✎
12:25
|
(8) Семерка берет вот так ТЗ = ЗначениеИзСтроки(Нормативы). При открытии формы
|
|||
12
Мимохожий Однако
03.03.12
✎
12:25
|
Покажи не ТЗ, а строку Нормативы.
|
|||
13
Мимохожий Однако
03.03.12
✎
12:27
|
Незачем кидать в ТЗ, а потом героически расшифровывать.
|
|||
14
Rie
03.03.12
✎
12:28
|
(2) Да, в общем-то, незачем - если не забыть удвоить кавычки :-)
|
|||
15
Rie
03.03.12
✎
12:30
|
(12) Видимо, в (7) и есть эта строка. Кто-то очень "умно" решил обойтись без подчинённого справочника и упаковать "табличную часть" в строку.
|
|||
16
Мимохожий Однако
03.03.12
✎
12:32
|
На (10) клиент не ответил.
|
|||
17
Мимохожий Однако
03.03.12
✎
12:34
|
Если информация нужна только в открытой форме, то возможно, она не нужна в 8-ке
|
|||
18
Rie
03.03.12
✎
12:35
|
(6) IDispatch и прочие интерфейсы - тоже переносятся через OLE.
|
|||
19
Мимохожий Однако
03.03.12
✎
12:37
|
(18)Сбрось примерчик
|
|||
20
Sun125
03.03.12
✎
12:41
|
Все получилось, спасибо!
База.глСтрокаТЗ = СпрНаборТарифов.Нормативы; ТЗ77 = База.EvalExpr("ЗначениеИзСтроки(глСтрокаТЗ)"); ТЗ77.ВыбратьСтроки(); Пока ТЗ77.ПолучитьСтроку()=1 Цикл Сообщить(ТЗ77.Прописано1); КонецЦикла; |
|||
21
Rie
03.03.12
✎
12:45
|
(19)
База77 = СоздатьОбъект("V77.Application"); База77.Initialize(База77.RMTrade,"",""); спрНоменклатура = База77.CreateObject("Справочник.Номенклатура"); спрЕдиницы = База77.CreateObject("Справочник.Единицы"); спрНоменклатура.ВыбратьЭлементы(); Пока спрНоменклатура.ПолучитьЭлемент()=1 Цикл Если спрНоменклатура.ЭтоГруппа()=0 Тогда спрЕдиницы.ИспользоватьВладельца(спрНоменклатура.ТекущийЭлемент()); // передаём интерфейс спрЕдиницы.ВыбратьЭлементы(); Пока спрЕдиницы.ПолучитьЭлемент()=1 Цикл Сообщить(спрЕдиницы.Наименование); КонецЦикла; Прервать; КонецЕсли; КонецЦикла; |
|||
22
Мимохожий Однако
03.03.12
✎
14:38
|
Что и требовалось доказать. Развернули объекты на ОЛЕ - источнике и взяли базовые значения.
(20)ТЗ77.Прописано1 - строковое значение (21)спрЕдиницы.Наименование - строковое значение. ... спасибо за примерчики. |
|||
23
Rie
03.03.12
✎
14:55
|
(22) При чём тут спрЕдиницы.Наименование? Речь о спрНоменклатура.ТекущийЭлемент() - интерфейс передаётся по OLE как параметр.
|
|||
24
Мимохожий Однако
03.03.12
✎
15:08
|
ОК. Возможно, я не силён в терминологии...Однако в любом случае все действия идут на стороне ОЛЕ-клиента,а в 8-ку передаются базовые типы. И спрЕдиницы и спрНоменклатура - ОЛЕ объекты.
|
|||
25
DrShad
03.03.12
✎
15:20
|
какие еще интерфейсы? вы о чем?
|
|||
26
EvgeniuXP
03.03.12
✎
15:24
|
вот интересно: а сохранить ТЗ в текстовый файл (7.7) и прочитать в 8.х - будет работать? :)
|
|||
27
DrShad
03.03.12
✎
15:25
|
конечно будет
|
|||
28
Rie
03.03.12
✎
15:27
|
(24)Я не понял, что ты имеешь в виду. В примере из (21) я методу ИспользоватьВладельца передал в качестве параметра OLE-объект. И он корректно его обработал.
Ограничения у 1С на параметры имеются (особенно у 7-ки). Но в данных случаях - всё работает. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |