|
Интеграция C# и 1С 8.1 | ☑ | ||
---|---|---|---|---|
0
Night_Wolf
19.03.12
✎
10:37
|
Суть задачи - надо написать сайт, где контрагенты смогут видеть задолженность на дату. Средства: выбрал C#. В итоге - хочу достучаться до данных запросом. Всё получается создать, кроме одного - не получается из C# установить параметры запроса (пока только дату остатков).
Собственно код: var V81ComConnector = Type.GetTypeFromProgID("V81.ComConnector"); var V81 = Activator.CreateInstance(V81ComConnector); Object[] arguments = {@"Путь к базе"}; var v8_base = V81ComConnector.InvokeMember("Connect",BindingFlags.Public|BindingFlags.InvokeMethod|BindingFlags.Static,null,V81,arguments); // Теперь тоже самое, но через запрос var textQuery = "ВЫБРАТЬ СчетФактура.Ссылка ИЗ Документ.СчетФактура КАК СчетФактура ГДЕ СчетФактура.Дата МЕЖДУ &НачДата И &КонДата УПОРЯДОЧИТЬ ПО СчетФактура.Дата"; // Объект "Запрос" object v8_Query = V81.GetType().InvokeMember("NewObject", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v8_base, new object[] { "Запрос", textQuery }); // Установим параметры object v8_ND = V81.GetType().InvokeMember("УстановитьПараметр", BindingFlags.SetProperty, null, v8_Query, new object[] { "НачДата", Convert.ToDateTime("2011/01/01") }); object v8_KD = V81.GetType().InvokeMember("УстановитьПараметр", BindingFlags.SetProperty, null, v8_Query, new object[] { "КонДата", Convert.ToDateTime("2011/01/31") }); // Выполняем object v8_QueryStep = V81.GetType().InvokeMember("Выполнить", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v8_Query, null); // Выборка object v8_QueryExec = V81.GetType().InvokeMember("Выбрать", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v8_QueryStep, null); ------------------------------------------ Вот собственно в двух строках выше - не удаётся установить параметры. ------------------------------------------ int i = 0; // Открываем поток для чтения StreamWriter sw = new StreamWriter("D:\\Data from C#.txt"); Подскажите пожалуйста, как передать параметры в запрос. |
|||
1
Night_Wolf
19.03.12
✎
10:38
|
Немного не там написал. Ошибка в строках, где дату пытаюсь установить.
|
|||
2
х86
19.03.12
✎
10:39
|
(0)ДАТАВРЕМЯ()
|
|||
3
Night_Wolf
19.03.12
✎
10:40
|
(2) - Что ДАТАВРЕМЯ()? Я мысли пока плохо читаю :)
|
|||
4
Ненавижу 1С
гуру
19.03.12
✎
10:40
|
совет:
1. вместо сложных GetType().InvokeMember(...) используй более простой в написании тип dynamic 2. разве тип DateTime не совместим с 1С? |
|||
5
Night_Wolf
19.03.12
✎
10:41
|
(4) - можно про dynamic поподробнее? Я уже встречал такие советы (думаю что хороший), но нигде описания не могу найти как пра-льно надо писать на нём. Подскажи пожалста - где код посмотреть?
|
|||
6
Night_Wolf
19.03.12
✎
10:45
|
Текст ошибки: Это выражение вызывает побочный эффект и не может быть рассчитано (по английски только)
|
|||
7
х86
19.03.12
✎
10:46
|
ГДЕ
СчетФактура.Дата МЕЖДУ ДАТАВРЕМЯ(2012, 1, 1) И ДАТАВРЕМЯ(2012, 4, 1) |
|||
8
Alexey_Morov
19.03.12
✎
10:49
|
(4)
Как же так??? DateTime совместим с 1С! Я сам так делал! Дома посмотрю и напишу код. |
|||
9
Night_Wolf
19.03.12
✎
10:49
|
(7) - Ясно. А как быть если пользователь на форме будет задавать дату? Или например - если нужно посмотреть остатки на дату с учетом контрагента - как сделать отбор по контрагенту?
|
|||
10
Night_Wolf
19.03.12
✎
10:54
|
(4) - a как подцепить этот dynamic? Дайте хоть немного информации начальной - ну или укажите направление куда копать пожалуйста.
|
|||
11
Ненавижу 1С
гуру
19.03.12
✎
10:59
|
в таком духе
dynamic V81 = Activator.CreateInstance(V81ComConnector); string arguments = @"Путь к базе"; dynamic v8_base = V81ComConnector.Connect(arguments); string textQuery = ....; dynamic v8_Query = v8_base.NewObject("Запрос",textQuery); v8_Query.УстановитьПараметр(...); |
|||
12
Night_Wolf
19.03.12
✎
11:08
|
(11) - V81.ComConnector.Connect() - Пишет - "Нет метода такого".
|
|||
13
Night_Wolf
19.03.12
✎
11:10
|
(11) - всё, надо так: V81.Connect(arguments);
|
|||
14
Night_Wolf
19.03.12
✎
11:23
|
Спасибо всем!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |