S
swordholder99
Есть у меня в 1С пункт "Счета-фактуры" в меню "Журналы"
Как прочитать все данные из "счетов фактур" на C# .net используя OLE. Местоположение данных:"Журналы"->"Счета-фактуры выданные"
Версия 1C: 7.7
База: МСФО
Тип базы: dBase
Как прочитать все данные из "счетов фактур" на C# .net используя OLE. Местоположение данных:"Журналы"->"Счета-фактуры выданные"
Версия 1C: 7.7
База: МСФО
Тип базы: dBase
C++:
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;
}