Прямой запрос из 1с 8.3 к 1с 7.7 sql #757925


#0 by Franchiser
Есть большое количество баз 7.7, из 8-ки 1-м прямым запросом получаю консолидированные данные из этих баз. Для получения имен таблиц и реквизитов использую сейчас распарсивание файлов DDS. К сожалению не все реквизиты есть в dds: например, константы, перечисления, пер. реквизиты справочников. Есть ли какой-то способ распарсить из 1с 8 MD файлы 1с 7.7? или может есть какая-то компонента, типа 1с++, работающая из 1с 8?
#1 by olegves
сделай справочник МД в 8-ке и читай его перед запросом
#2 by olegves
+ в 7.7 конечно и заполнять его при начале работы (1й юзверь)
#3 by Franchiser
Появляются новые базы, нет возможности контролировать процесс
#4 by Franchiser
Нет прав на вход в 1с 7.7, короче вариант такой не подходит
#5 by Serginio1
Есть 1с++ и MetaDataWork
#6 by Serginio1
Да и 1С++ тоже вроде работает, только через Открыть и MoveNext итд
#7 by Franchiser
1С++ не работает из 1с8, а мне нужно из 8-ки
#8 by marty0701
В чем сложность, кто заведует списком баз? Бухгалтер тетя Глаша?
#9 by Serginio1
Точно не работает? В любом случае можно через COM получить все, что угодно
#10 by Franchiser
сложность распарсить md-файлы
#11 by Franchiser
через com работает во много раз дольше, в результате было переписано на прямой запрос
#12 by Franchiser
зачем список баз, если по com получать данные не собираюсь?
#13 by Serginio1
Через КОМ ты можешь получить соответствие полей поля. Или можешь через командную строку запустить приложение и получить данные полей
#14 by marty0701
"Появляются новые базы, нет возможности контролировать процесс" Перефразирую. Кто контролирует процесс появления новых баз, бухгалер дядя Петя?
#15 by Franchiser
какое это имеет значение, я понятия не имею кто. Подключение по ком не рассматривается, интересует парсер md из 1с 8 на перспективу
#16 by Franchiser
цель написать отчети больше никогда его не исправлять при каких-либо изменениях в структуре баз
#17 by Franchiser
Тема только для илюстрации, просьба не пытаться решить данную проблему. Хочу спланировать пналогичного рода доработки на будущее.
#18 by mehfk
gcomp'ом распакуй и посмотри на файл ОбъектыМетаданных.txt
#19 by Franchiser
спасибо, забыл про gcomp, давно не использовал Может есть еще какие-то варианты без разбора мд? Как это реализовано в 1с++, тоже выполняется сначала разбор файла?
#20 by rs_trade
я вот тоже не понял почему через ком нельзя получить структуру конфы? пробежался по метаданным, заполнил справочник в 1с8. данные получаешь прямыми запросами.
#21 by Franchiser
потому что 500 баз 1с 7.7, открытие каждой базы занимает много времени, а если какая то из них запущена монопольно, то все открытие по ком теряет смысл
#22 by rs_trade
Прям 500? Есть еще вариант выгружать в тхт из 7.7 при запуске конфы. Но это надо править 500 баз.
#23 by Franchiser
ну да при запуске 7.7 тоже вариант) Чтобы создать справочник в 1с8 нужно согласовывать и доказывать такую необходимость. В условии того что сейчас и так все работает, то этой необходимости нет.
#24 by Franchiser
не 500, но много.
#25 by rs_trade
Либо не выгружать в тхт, а хранить структуру в справочнике, в базе 7.7. Потом так же читать прямым запросом.
#26 by Franchiser
Может кто знает, все-таки как 1с++ получает информацию метапарсером об именах таблиц и реквизитов? после разбора md или как то напрямую?
#27 by rs_trade
напрямую куда? кроме как в мд, конфа больше нигде не хранится.
#28 by FN
делаешь чистую конфу на 7.7 с одной функцией в глобальнике ВернутьСтруктуруИБ(путькфайлу1Cv7md). внутри функции подключаешься к файлу с помощью metadatawork и вытягиваешь соответствие полей.я вот эту базу по com и вызывай.
#29 by Franchiser
ну можно так, только это через одно место. ну я имею ввиду я нигде невидел чтобы где то лежали файлы в папочке вытащенные gcomp при использовании компоненты 1с++, 1с++ как то использует алгоритмы gcomp?
#30 by Franchiser
По идее код 1с++  открытый, мб можно добиться похожего результата путем вызова тз 1с8 vbs + gcomp?
#31 by Serginio1
Ты можешь создать пустую базу. Она будет быстро загружаться. А из неё уже можешь подключиться к любому MD шнику и его распарсить. Или спроси на форуме. Видно внутри 1С++ используются загруженные DLL.
#32 by orefkov
Нет. Метапарсер в 1С++ сам никак напрямую не работает с файлом метаданных, а вызывает функции из движка семёрки - грубо говоря, считывает то, что сама семёрка распарсила при запуске. Поэтому работать она может только внутри 77.
#33 by Franchiser
Ок, смутило что в источниках 1с++ лежат файлы gcomp.exe и gcomp.dll
#34 by Franchiser
"в источниках" - > "в исходниках"
#35 by orefkov
Насколько я помню, они там для создания тестовой базы. Артур Аюханов там организовывал автотесты.
#36 by ЧеловекДуши
Ну да, ну да... 1С 7.7, никогда менять, сделать универсальный :) ...Чудак, в 1С 7.7 нет КОМА, есть ОЛЕ... ...Сделай проще, напиши обработку для 1С 7.7, где будешь делать все, что только пожелаешь, у 1С 7.7 нет предела для обработки, даже если у пользователя нет вообще прав. Но есть право запустить обработку :)
#37 by Odavid
это в 8-ке OLE ввели, в 7.7 как раз COM (типа "старый") остался.
#38 by Serginio1
Com это все, что использует интерфейс IUnknown в том числе и Idispatch. OLE это  технология связывания и внедрения объектов в другие документы и объекты. OLE 1.1 позднее развился в архитектуру COM (component object model) для работы с компонентами программного обеспечения. Позднее архитектура COM была преобразована и стала называться DCOM. И в 7 и в 8 используются объекты поддерживающие Idispatch то бишь COM. По правильному их нужно называть Объектами автоматизации, но COM проще
#39 by Odavid
Не совсем так. Вы, верно, спутали ActiveX и COM. Да, COM вырос из OLE1.1. Но это было так давно, еще до 7.7, и, тем более, до 8.х. Тут речь про 1С и поддерживаемые в ней технологии. OLE1/1 развился в OLE2.0, который потом превратился в ActiveX-компоненты. Вот эти OLE2.0-ActiveX и использует 1С 8.х. И не использует 7.7. А почему OLE, а не ActiveX? Микрософт запантентовала ActiveX, поэтому, чтобы ничего не нарушать - никто другой не называет подобную технологию "ActiveX" у себя. Хотя реализация аналогов, и очень близких, есть в других продуктах. А OLE - оно не проприетарное. Вот поэтому тут 1С и "подобрало" эту технологию.
#40 by Serginio1
ActiveX это обычно визуальные компоненты. Они тоже являются COM компонентами. COM это иерархия интерфесов родителем которого является IUnknown СоздатьОбъект и Новый ComObject используют COM объекты реализующих IDispatch
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С