#0
by radiks
Есть DLL, она загружается в 1С методом "Загрузить внешнюю компоненту". Вопрос: как из DLL обратиться к объектам 1С (например, выполнить запрос и вернуть результат, перебрать элементы справочника ...)?
#2
by radiks
Я разобрался с COM, но не создавать же COM-подключение из Длл-ки... Как использовать существующее?
#6
by radiks
object query = oType.InvokeMember("NewObject", BindingFlags.Public | BindingFlags.InvokeMethod, null, connection, new object[] { "Query" }); oType.InvokeMember("Текст", BindingFlags.Public | BindingFlags.SetProperty, null, query, new object[] { "ВЫБРАТЬ РеализацияТоваровУслуг.Дата, РеализацияТоваровУслуг.Номер, РеализацияТоваровУслуг.СуммаДокумента ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)" }); oType.InvokeMember("УстановитьПараметр", BindingFlags.Public | BindingFlags.InvokeMethod, null, query, new object[] { "Дата1", new DateTime(2013, 1, 1, 0, 0, 0) }); oType.InvokeMember("УстановитьПараметр", BindingFlags.Public | BindingFlags.InvokeMethod, null, query, new object[] { "Дата2", new DateTime(2013, 3, 31, 0, 0, 0) }); while ((bool)oType.InvokeMember("Следующий", BindingFlags.Public | BindingFlags.InvokeMethod, null, queryResultSelection, new object[] { }))
#9
by HeroShima
Кстати, что нужно сделать, чтобы использовать русскоязычную лексику? Ругается на not implemented
#15
by HeroShima
with UseAppDispatchProxy(self.Enterprise) as ad: with UseNewObjectsProxy(self.Enterprise, u'Справочник.МойСправочник', u'ТаблицаЗначений') as (ref, tv): ref.ВыбратьЭлементы как вам этот poc?
#16
by radiks
Спасибо :) Сам сейчас только читаю про dynamic. Не пойму теперь, как его применить в DLL
#17
by orefkov
Сразу видно настоящего прога, а не примитивного одинэсника. Монументально все так, энтерпрайзненько!
#21
by Rie
dynamic - оно, конечно... Но это несколько из другой оперы. "Другой юноша нес свое: "Я нашел, как применить здесь нестирающиеся шины из полиструктурного волокна с вырожденными аминными связями и неполными кислородными группами. Но я не знаю пока, как использовать регенерирующий реактор на субтепловых нейтронах. Миша, Мишок! Как быть с реактором?" Присмотревшись к устройству, я без труда узнал велосипед"
#22
by radiks
Много слов... Спасибо, конечно, за подсказку в , может подскажешь тогда как получить существующее подключение 1С из dll с использование dynamic?
#23
by Rie
Сначала хотелось бы понять, зачем тут dynamic :-) Он ведь всего лишь переносит контроль типов со времени компиляции на время исполнения, не более того. Не лучше ли сделать обёртку над 1С-овскими данными? Читаемость будет, а извращаться с dynamic не придётся.
#24
by radiks
Да хотя бы за тем, что можно работать с разными типами в одной переменной, тип будет определяться во время выполнения и код становится более читабельным. Совсем не изврат...
#25
by radiks
Можно, конечно и по старинке писать, но, если есть net.4 почему не использовать новые возможности???
#26
by Rie
Чтобы использовать новые возможности - нужно для начала знать, что это за возможности. Погляди, например, на
#27
by Rie
+ Кроме всего прочего, с точки зрения C#, нет никаких типов СправочникОбъект.Номенклатура или ПеречислениеСсылка.ВРотМнеНоги. 1С отдаёт для всех своих объектов один-единственный интерфейс.
#29
by Rie
Кроме всего прочего - никто никому не гарантировал в данном случае, что какие-то _методы_ у 1С-объектов вообще существуют :-)
#30
by radiks
Глядел уже. Мне не понятно как с использованием dynamic получить текущее соединение 1с. С подключением к COM - понятно, а из dll - нет...
#31
by HeroShima
Если в C# это удастся обыграть так же красиво как в Питоне, будет очень интересно взглянуть.
#32
by Rie
Что касается красоты кода - никак не пойму, чем (безо всяких dymanic) Контрагент["Наименование"] = "Вася Пупкин";
#33
by Rie
Но если очень хочется динамических объектов - то создай свой класс - наследник DynamicObject, а в его конструктор - передай то самое соединение , которое получил от 1С при вызове. Вернее, передавай тот IDispatch, который даёт доступ к соответствующему 1Совскому объекту. И будет счастье.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- v7: появляются нулевые остатки
- У пользователя недостаточно прав на выполнение операции с внешним источником дан
- Интервал по дням в запросе
- ЗУП. Правка регламентированного способа расчета или другие варианты...
- ЕстьДоступКВебCервису()
- КА, УПП - подпись кадровика
- v7: не указаны параметры соединения с базой sql
- Отправка писем из 1С (Exchange 2010)
- Запретить возможность создания документов на основании не проведенных
- Включение индексирования реквизита
- WinHttp: HTTPS по SSL флаг WINHTTP_NO_CLIENT_CERT_CONTEXT
- Перестал работать обмен УТ БП - зависает БП при записи изменений для узла
- Проблема с зависанием сессий 1С 8.2 и sql 2012
- ошибка при отправке почты
- v7: Выгрузка бухгалтерской отчетности
- Из каких регистров берутся сведения для отчета "Расчетная ведомость организаци"?
- Замена загрузочной картинки 1C или как вставить анимацию
- Подсчет свободных и занятых программных лицензий
- Перевод большой базы в SQL.
- Опять отрицательный НДФЛ - при начислении зп договорникам