Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 18:06
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как правильно читать "Счета Фактур"  (Прочитано 1760 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн swordholder

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-30
  • Сайт: 
  • Профессия: Ученик 1С
Есть у меня в 1С пункт "Счета-фактуры" в меню "Журналы"
Как прочитать все данные из "счетов фактур" на C# .NET используя OLE. Местоположение данных:"Журналы"->"Счета-фактуры выданные".

Версия 1C: 7.7
База: МСФО
Тип базы: dBase

            Type t = null;
            Object obj = null;    // Ссылка на COM сервер 1С
            Object objVal = null; // Ссылка на документ в базе
            Object objDoc = null; // Ссылка на объект документ
            Boolean OK = false;
            string userCatPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            object v77 = null;
            object retVal = null;


            try
            {                             
                t = Type.GetTypeFromProgID(txtApplication.Text);
                obj = System.Activator.CreateInstance(t);
               
                Object[] arg = new Object[3];
                arg[0] = obj.GetType().InvokeMember(@"RMTrade", BindingFlags.Public | BindingFlags.InvokeMethod, null,obj, null);
                arg[1] = @"/d" + txtDbPath.Text + @" /n /p";

                OK = (Boolean)obj.GetType().InvokeMember(@"Initialize", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, obj, arg);
               

                if (!OK)
                {
                    MessageBox.Show("Не удалось соедениться с программой 1C ","Ошибка !!!", MessageBoxButtons.OK,MessageBoxIcon.Error);
                    return;
                }
 
                arg = new Object[1];
                arg[0] = @"Журналы.Счета-фактуры выданные";
               
              //вот здесь выдает ошибку, unknown element не распознает "Журналы.Счета-фактуры выданные"
                object book = obj.GetType().InvokeMember(@"CreateObject",
                    BindingFlags.Public | BindingFlags.InvokeMethod, null, obj, arg);

                if (book == null)
                    Console.WriteLine(@"Ошибка создания счетов фактур");
                else
                {
                    book.GetType().InvokeMember(@"ПорядокКодов",
                        BindingFlags.Public | BindingFlags.InvokeMethod, null, book, null);

                    Double result = (Double)book.GetType().InvokeMember(@"ВыбратьЭлементы",
                        BindingFlags.Public | BindingFlags.InvokeMethod, null, book, null);

                    if (result == 1) OK = true; else OK = false;

                    if (OK)
                    {
                        result = 0;
                        Int32 counter = 0;

                        do
                        {
                            result = (Double)book.GetType().InvokeMember(@"ПолучитьЭлемент",
                            BindingFlags.Public | BindingFlags.InvokeMethod, null, book, null);

                            if (result == 1)
                            {
                                object element = book.GetType().InvokeMember(@"ТекущийЭлемент",
                                BindingFlags.Public | BindingFlags.InvokeMethod, null, book, null);

                                if (element != null)
                                {
                                    counter++;
                                    String name = (String)element.GetType().InvokeMember(@"Номер",
                                              BindingFlags.Public | BindingFlags.GetProperty, null, element, null);

                                   MessageBox.Show(counter.ToString() + @": " + name );

                                }
                            }
                        }
                        while (result == 1);
                    }
                }               
 
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }
            finally
            {

                Marshal.Release(Marshal.GetIDispatchForObject(obj));
                Marshal.ReleaseComObject(obj);
                obj = null;
            }

Когда этим же самым путем вытаскиваю список Валют ("Справочники"->"Валюты") без проблем вытаскиваются. А вот счета фактур не распознается.


Оффлайн swordholder

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-30
  • Сайт: 
  • Профессия: Ученик 1С
arg[0] = @"Документ.СчетФактураВыданный";
               
              //вот здесь Visual Studio Выдал исключение: "Неудачная попытка создания объекта (Документ.СчетФактураВыданный)"
                object book = obj.GetType().InvokeMember(@"CreateObject",
                    BindingFlags.Public | BindingFlags.InvokeMethod, null, obj, arg);



Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
157 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
47 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 242
  • Точка Скрытых: 0
  • Точка Пользователей: 8
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal