powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Квартальный отчет. 1cv8 + C#
9 сообщений из 9, страница 1 из 1
Квартальный отчет. 1cv8 + C#
    #35086508
Connolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Вообщем требуется написать на C# программу, которая посредством COM OLE будет вытаскивать из базы 1С квартальные отчеты.
Первый вопрос - работа с COM OLE. С этим я вродебы разобрался. Делаю так:
Код: plaintext
1.
            COMConnector cc = new COMConnector();
            object v8_base = cc.Connect("File=\"d:\\project1\";");
Далее насколько я понял обращение к объектам 1С осуществляется следующим образом:
Код: plaintext
1.
            object table = v8_base.GetType().InvokeMember("NewObject", BindingFlags.Public | BindingFlags.InvokeMethod |
                BindingFlags.Static, null, v8_base, new object[] { "ТаблицаЗначений" });
Здесь возникают проблемы. Во-первых что означают BindingFlags ? И мне не совсем понятно какие значения должны передаваться в качестве аргументов, и как обратиться, скажем, к справочнику "Продукция" ?
Второй вопрос касается знаний самого 1С. Как в конфигурациях хранятся сами квартальные отчеты? Насколько я понял "Отчет" это чтото вроде процедуры, которая пересчитывает все данные каждый раз и не хранит нигде значений. Я прав? Если это так, то как можно передать эти значения в программу на C#?
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35088890
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ConnollyДалее насколько я понял обращение к объектам 1С осуществляется следующим образом:
Код: plaintext
1.
            object table = v8_base.GetType().InvokeMember("NewObject", BindingFlags.Public | BindingFlags.InvokeMethod |
                BindingFlags.Static, null, v8_base, new object[] { "ТаблицаЗначений" });


Ужоснах этот Сишарп.
Во всех известных мне средах было бы: v8_base.NewObject("ТаблицаЗначений" );

По поводу отчета - задача нетривиальная. Ты прав, значения нигде не хранятся. И единственный способ динамически инициировать получение данных из твоей программы - дорабатывать отчет в 1С.
Самое интересное, что отчет ты через COM-соединение не запустишь (он же визуальный), потребуется OLE.
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35088977
Connolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСамое интересное, что отчет ты через COM-соединение не запустишь (он же визуальный), потребуется OLE.

Что ты имеешь ввиду? Я и работаю с OLE посредством COM соединения. Или ты имеешь ввиду OLE Automation?
А разве нельзя создать объект отчета, а потом получить доступ к его реквизитам?
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35089011
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть 1С и не ООП-среда, но инкапсуляция поддерживается.
Поэтому я не уверен, что ты сможешь легко управлять отчетом. Надо смотреть, как он реализован.

Проще было бы чуть-чуть доработать отчет и научить его при вызове метода выгружать результат, например, в .xls. А дальше разбирай спокойно...
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35089123
Connolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хмм...
Интересный вариант. А как это можно сделать?
Написать внешний модуль? Если так, то можно ли сделать это на С#? У нас в проекте требование - весь код на С#.
И, если уж чтото дорабатывать, можно сделать сразу выгрузку в ХМЛ?
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35089193
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в качестве альтернативы возможен выпуск отчета по расписанию средствами 1С, в качестве примере см. Рапорт руководителя УТ/УПП.
Т.е. параметры можно зарядить в Рг сведений из шарпа и взвести триггер, 1С обнаружит триггер и нативными средствами сохранит отчет в нужном формате и сбросит триггер, шарп обнаружит факт построения отчета по флажку.
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35089793
Connolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
object v8_rep_req = v8_base.GetType().InvokeMember("NewObject", BindingFlags.Public | BindingFlags.InvokeMethod |
                BindingFlags.Static, null, v8_base, new object[] { "ОтчетОбъект.КвартальныйОтчет.Реквизит1" });

Почемуто не работает... что я не так делаю? Или может к реквизитам доступ как-то по-другому получать надо?
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35093490
А зачем получать этот самый отчет именно из С#?
...
Рейтинг: 0 / 0
Квартальный отчет. 1cv8 + C#
    #35095826
Connolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа вся на Си Шарп. нужно в ней сделать модуль, который данные берет из 1С.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Квартальный отчет. 1cv8 + C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]