#0
by Alexey_Morov
Господа, какие библиотеки нужно установить и зарегистрировать через regsvr32, чтобы можно было вызывать методы, получать список документов, справочников, табличных частей документов через COMConnector? Версии платформы 1С - 8.2 и 8.1. Версия .Net - 4.0. Язык программирования - C#. Дальше подключения к 1С дело не пошло: Как же так???
#2
by Alexey_Morov
Так точно. Ставил. Непонятно, какой метод или свойство нужно дёрнуть, чтобы достучаться до справочников, документов.. Читал , .
#6
by Alexey_Morov
Пробую получить список всех не удалённых справочников: public static object GetCountOfTypes(string TypeName) { Как тут проверять каждый тип на ПометкаУдаления == NULL? Как же так???
#8
by Alexey_Morov
Эммм.. А как сделать так: Для Каждого спр из Метаданные.Справочники И вернуть значение переменной в C#?
#9
by Alexey_Morov
Пытался сделать так: InvokeMember("Выполнить", InvokeMethod, null, COMObject, "код на 1С") Но тут ( доложили, что метод "Выполнить" недоступен через COM-соединение.
#12
by Alexey_Morov
Хм. А как тогда быть? Существует ли способ набросать код 1С в строковую переменную у C# и потом выполнить этот код на стороне 1С, а в C# вернуть результат выполнения набора операторов?
#14
by Alexey_Morov
В таком случае команда Метаданные.Справочники.Количество вернём нам все справочники (и даже с пометкой на удаление), так-так?
#16
by Alexey_Morov
Ну ладно, согласен. Пометки на удаление у метаданных нет. Возвращаю количество справочников так: Можно ли всё это каким-то макаром преобразовать в Запрос? Чтобы скалярно обратиться к 1С, выполнить запрос и вернуть результат?
#21
by Alexey_Morov
Как можно получить в виде строки название типа на стороне C#? Сейчас имею: Как же так???
#23
by Ненавижу 1С
dynamic StringType = Connect.String(Connect.Метаданные.Документы.АктСверкиВзаиморасчетов.ТабличныеЧасти.ПоДаннымОрганизации.Реквизиты.Дата.Тип.Типы[0]);
#24
by Alexey_Morov
Нет, не прокатывает. В случае, если это ссылочный тип, то у нас получается такая балалайка: Connect.Метаданные.Документы.АктСверкиВзаиморасчетов.ТабличныеЧасти.ПоДаннымОрганизации.Реквизиты.Дата.Тип.Типы.Получить.ОписаниеТипов.Получить(i) И организовать итерацию в цикле по количеству типов-ссылок: Connect.Метаданные.Документы.АктСверкиВзаиморасчетов.ТабличныеЧасти.ПоДаннымОрганизации.Реквизиты.Дата.Тип.Типы.Количество Непонятно, как можно определить, что реквизит является ссылкой. В ОписанииТипов есть свойства КвалификаторыСтроки, КвалификаторыНомера и т.д., но нет квалификатора ссылки. Т.е. нужно определить: а) что реквизит является ссылкой. б) куда ссылается реквизит (хотя бы в виде строки).
#26
by Alexey_Morov
Не нашёл способа получать уникальные идентификаторы объектов метаданных. То есть нужно получить что-то вроде этого: Метаданные.Документы.ВозвратМатериаловИзЭксплуатации.Идентификатор и т.д. В 1С есть способ получать уникальные идентификаторы самих документов, справочников и т.д., созданных на основе соответствующих типов метаданных. Как же так???
#27
by Alexey_Morov
Кое-как нашёл такой способ получения идентификаторов: Полное имя и будет в строковом выражении означать УИД.
#29
by Alexey_Morov
В таком случае (если насоздавать функций, которые будут возвращать всё, что нужно), придётся бегать туда-сюда (между 1С и C# для получения детализации каждого реквизита. А если реквизит будет являться ссылочным типом (например будет ссылаться на справочник), то придётся бежать снова в 1С, чтобы запросить перечень реквизитов того справочника, на который ссылается данный реквизит. Хочется сделать что-то вроде запроса, который рекурсивно пробежится по метаданным и вернёт тип, название реквизита, куда он ссылается и потом сгруппировать результаты выборки. Например так: Запрос Зпр = Новый Запрос; Как же так???
#31
by Alexey_Morov
Не получается определить тип ссылки на основе полного имени типа реквизита. Т.е. я имею: ТипНичегоНепонятно = "Справочник.Организации";
#33
by Alexey_Morov
Нужно из C# получить полностью все объекты конфигурации 1С. И пробежаться даже по ссылочным полям и получить что там есть по этим ссылкам (получить реквизиты, определить их тип и в случае если реквизит окажется снова ссылочным типом, то снова бежать и искать куда он ссылается и т.д.). Нужно: 1. получать все реквизиты справочников, документов, перечислений. 2. получать табличные части (у документов и справочников) 3. получать уникальные идентификаторы объектов метаданных. 4. получать врсию сборки конфигурации (не версию конфигурации, а именно что-то наподобие GUID, так как номер версии конфигурации не изменяется, если я добавляю/удаляю объекты конфигурации). 5. получать системные поля метаданных ("проведен" у документа, "помечен на удаление", идентификатор, синоним.
#34
by hhhh
ты постоянно путаешь данные в базе с метаданными. Это, наверно, погубит твой мегапроект.
#39
by Alexey_Morov
А как тогда скалярно на основании строки "СправочникСсылка.Организации" получить тип и пробежаться по реквизитам и табличным частям этого объекта? object obj = V8Connector.InvokeMethod(v8, "Type", new object[] {"СправочникСсылка.Организации"}); вызывает ошибку. Как ещё можно получить Тип на основе строки?
#41
by Alexey_Morov
Но ведь свойства "Проведён" и "Пометка удаления" тоже являются метаданными или как?
#42
by Ненавижу 1С
нет, не являются разве есть у вида документа свойство "Проведен"? нет, он есть у экземпляра объекта или ссылки
#43
by Alexey_Morov
Я определяю тип так: dynamic type = field.Тип; string o = V82Connector.InvokeMethod(V82Connector.Connection, "String", new object[] { type }).ToString; case "Дата": ... case "Строка": ... case "Число": default: ... тут парсим, куда же ведёт данное поле - в справочники, документы или ещё куда... break; }
#45
by Alexey_Morov
Согласен. Поэтому я хочу замутить составление запроса к метаданным (Запрос зпр = Новый Запрос....) Так можно сделать? Чтобы сразу одним запросом получить все-все типы, их названия и т.д.
#46
by Alexey_Morov
Почему-то невозможно создать запрос к метаданным. В конструкторе запроса видны только объекты конфигурации...
#47
by Ненавижу 1С
потому что запрос к метаданным составить нельзя, ну нет такого надо самому писать
#48
by Alexey_Morov
Ясно. Буду писать. Если что получится - доложу тут. Чтобы потом можно было внести в книгу базы знаний. Так-так?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Где прочитать какие релизы нужно устанавливать обязательно, а какие нет?
- Какие нужны миним. требования компа, для хорошой работы 1с 8.0 УТ
- Какие нужны требования для нормальной работы 1С в клиент-серверном варианте
- Поясните пожалуйста какие драйвера АТОЛ платные а какие бесплатные
- Какие файлы нужны для v7cnv.exe (7.7 конвентер)
В этой группе 1С
- Зависает 1с при отключении сканера ШК
- синхронизация Symbian и Outlook 2007
- Как програмно очистить окно служебных сообщений?
- Как копировать записи в регистре накоплений?
- Помогите настроить закрытие 23,29 счета в УПП, РАУЗ
- ЗУП 8.1 док. Зарплата к выплате не учитывает сумму сторно
- Обмен данными между 1с8 SQL и базой данных SQL
- Информационная колонка в табличной части документа: как правильно...?
- запрос к регистру сведений или к срезу последних?
- Как вывести на печать 2 столбца
- 8.1 УТ 10.3 Ввод оприходования на основании инвентаризации
- БП 1.6 Как сделать перемещение со счета 10.03?
- Загрузка XML в регистр сведений
- 1с 8.2 вызов процедуры в модуле формы
- Как писать отчеты для БП 2.0
- Ошибка "Значение не представляет агрегатный объект"
- Как пробить копию чека в 1С розница 1.0.14.4
- Как сделать группировку в отчете по дням?
- Прайс по остаткам в УТ11
- Конвертация данных. Не проходит ПВД