#0
by oliver
Привет всем! как определить ТипЗначения OLE-объекта? ТипЗначения(Объект) возвращает 100 ес-но.
#4
by Torquader
Можно попробовать через valueToStringInternal - какие-то объекты получится поймать, а остальное - только через функцию, которую нужно в глобальный модуль положить.
#6
by Torquader
Тогда ValueToStringInternal в первой букве (после скобочки и кавычки) напишет то, что вам нужно.
#9
by oliver
что-то не хочет. ValueType(Объект)=100 ввв=Объект.ValueType; {D:1.ERT}: Поле агрегатного объекта не обнаружено (ValueType)
#14
by oliver
Для справочника ValueToStringInternal вертает "{"X","0","0","0","0","0",""}" . Так что можно
#16
by Torquader
Х - это неизвестный объект, если что. Нужно вызывать в контексте той базы, в которой объект создан.
#17
by Torquader
ТипЗначенияСтр чужие объекты не понимает (а если мы лезем по OLE вообще из другого приложения, то у нас нет такого метода).
#18
by Torquader
Простенький пример показывает, что Не работает, а работает. Set OneS=CreateObject("V77.Application") If OneS.Initialize(OneS.RmTrade,"/dC:WORK1С-ТИИ","")<>True Then
#24
by oliver
Надо определить,что таеое Объект - справочник, перечисление или документ. И все. Очень просто. Из 7-ки в 7-ку.
#28
by Torquader
Чужие объекты ТипЗначения не очень-то и видит, а в контексте базы - не работает см. .
#31
by DJ Anthon
возьми у меня отсюда, там я это даже в отдельную функцию вынес. п.с. это, кстати, нетривиальная задача...
#32
by DJ Anthon
функция ВосстановитьАтрибут. код привести не могу, ибо он специфический, но основная идея как в и , только у меня она для расшифровки неопределенного типа, так что лучше будет объединить мое и
#33
by Torquader
Если есть возможность вносить изменения в глобальный модуль, который доступен через EvalExpr, то проблем с получением типа нету. А если в базу вносить изменения нельзя (или в данный момент нельзя), то приходится использовать танцы с бубном.
#35
by Torquader
Неа. В восьмёрке всё просто и ясно - там выполнение кода можно штатно использовать, а также делать вызов с параметрами.
#36
by GreyK
И что там в восьмерке передается по Оле? Наверное справочники вы научились копипостировать :) Вот в семерке всё просто, передаются по Оле только базовые типы, в том числе и "строка" и есть в СП описание функций ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр, и этого хватает.
#37
by Torquader
Таки и там тоже передаются только простые типы - строки, числа и даты (ну ещё булево добавилось), а так, всё точно также. Просто в восьмёрке у каждого объекта можно запросить метаданные (через Метаданные), что позволяет работат с типами без проблем.
#40
by GreyK
Ну я про определение объекта типа "Оле". А текст он и в Африке текст. А табличку по Оле определять незачем, если-уж сам создал, то зачем её тип определять?!
#41
by Torquader
Для хранимых объектов строка ЗначениеВСтрокуВнутр возвращает строку, по которой однозначно можно определить тип объекта. Для тех, для кого возвращается пустая ссылка с первой буквой X ничего определить нельзя.
#42
by Злопчинский
Чего-то я не втыкаю.. в чем принципиальная трудность..? поясните... Да, если в Оле-базе в ГМ нет ни одной "служебной" экспортной переменной - наверное есть трудности.. . в противном случае все решается вроде на раз...? . вот запили у себя в рабочем обмене своем: .
#45
by Torquader
Если переменная есть и её имя известно, то, конечно, можно делать всё, что душе угодно. А если нет, то получится не очень хорошо, особенно, если создать в удалённой базе таблицу и пытаться потом узнать, что в переменной живёт. Но это - гипотетическая ситуация.
#46
by Злопчинский
с трудом представляю себе ситуацию продуктивной работы по Лье в условиях незнания конфиги олешной базы...
#48
by Torquader
Предположим, что есть обмен по OLE, в котором пользователь указывает базу А и базу Б, между которыми будут передаваться данные. Как система узнает, что за база А и какие переменные в ней есть (не разбирая Compound и код глобального модуля). Это гипотетическая ситуация, когда в переменной хрен знает что - а в остальных случаях в переменной будут только хранимые в базе значения, которые ЗначениеВСтрокуВнутр прекрасно преобразует в строку и обратно. Просто иногда из обработки, которая что-то делает, возвращается таблица значений, заполненная чем-то априори неизвестным.
#49
by GreyK
Так пойдет? Или обязательно по Оле показать? {"Документ","Документ","1","0","0",{"U","0","0","0","0","0"},"","0", { ТаблицаЗначений
#51
by Torquader
И что, ТаблицаЗначений как и СписокЗначений через ЗначениеВСтрокуВнутр прекрасно сохраняются и восстанавливаются, проблема бывает, если внутри ячейки лежит объект, который 1С не умеет сериализовать (то, что потом назвали "мутабельным значением"). Кстати, просто таблица так не складывается.
#52
by Torquader
Кстати, ещё спор был, что быстрее - создавать новую таблицу значений или загрузить из строки.
#53
by GreyK
"проблема бывает, если внутри ячейки лежит объект, который 1С не умеет сериализовать" !? Чем-то напоминает детскую задачку: Как вытащить яблоко из бутылки?
#54
by Torquader
У меня вообще обмен чаще через текстовые файлы, так как OLE - "очень быстрая" вещь. Поэтому, проблем бывает меньше. Просто, кто-то в 1С, кто писал OLE-сервер, посчитал, что функция ТипЗначенияСтр не должна быть доступна, тогда как ЗначениеВСтрокуВнутр - доступно. Могло бы быть иначе.
#56
by Torquader
Функция недоступна, так как вызвать БазаОле.ТипЗначенияСтр нельзя, а то, что её можно вызвать через EvalExpr - неудивительно, так как это просто вычисление выражения на языке 1С, где доступны вообще все функции.
#58
by Злопчинский
вот блин капец... занем что в оле базе есть справочник.клиенты и больше ничего??? в огромном количестве случаев прокатит вариант . там где это не катит - скорее всего обмен будет не по оле а всякими мудотными иксемелями и прочея тряхомудией
#59
by Torquader
глРасшифровка есть почти всех типовых, так что можно попробовать через попытку узнать, есть ли переменная. P.S. у меня есть базы на семёрке вообще с пустым глобальным модулем, так как работают как движок для выполнения кода.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- OLE,OLE,OLE
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- Не могу из v7 подключиться v7 к через OLE
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Можно ли одну и ту же номенклатуру определить в разные группы?
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
- v7: v7 Подключение к базе по OLE/COM из регл. задания Windows (планировщик задач)
В этой группе 1С
- v7: Алкогольная декларация 2014, проверка xml по xsd
- Событие ПриКомпоновкеРезультата
- Превышен максимально допустимый размер внутреннего файла...Помогите
- v7: обработка с infostat
- ВозможностьЧтенияXML не отрабатывает так, как нужно
- v8: В платежках не ставит ОКТМО
- Снять подчиненность Узла в РИБ или Добавить дополнительную печатную форму
- Тормозит 1С при открытии упр. форм
- док Установка цен номенклатуры УТ 10.3
- УТ 11 видимость колонки склад в док. реализация
- Макет: выделение жирным шрифтом определенных параметров в шаблоне
- Как узнать адрес флэш баннера ?
- Проблема при считывании Штрихкода в УТ 11.1
- v7: Как при создании xml файла между тегами поставить пробелы?
- Как из времени и даты обратно слепить дату?
- УТ11 вывод актуальных цен и номеров ГТД в отчете
- v7: Слетело 1cjournal.dbf
- Переход с 1С Штрих-М Торговое предприятие v5.1 на УТ 10.3 или 11
- КД 2. Перенос ПКО в РКО
- Frontol