Имя: Пароль:
1C
1С v8
Можно ли из C# (COM соединение) вызывать внешнюю обработку?
,
0 dagdag
 
18.04.17
12:47
Добрый день!
Вот решил освоить 1С, а точнее взаимодействие с 1С извне, из приложений на C#.
С подключением к 1С разобрался, как выбирать данные, добавлять их, вызывать имеющиеся в конфигурации функции тоже.

Уже хотел было писать свою обработку и потом работать с нею из шарпа, как выясняется, что то что я приобрел "подешевле" - Розница Базовая - не позволяет ни вносить в нее изменения, ни добавлять свой код. Вроде как остается только писать внешние обработки, это можно.

А как потом сделать ее (внешнюю обработку) доступной для вызыва из приложения на шарпе? Это вообще возможно?

Спасибо! И прошу простить за наверно глупый вопрос...
1 Жан Пердежон
 
18.04.17
12:50
Можно
2 Serginio1
 
18.04.17
12:50
3 dagdag
 
18.04.17
12:52
Serginio1, Спасибо!!!
4 dagdag
 
18.04.17
16:29
Не помогло ((( падает на

dynamic extProcess = com1Cserv.ВнешниеОбработки.Создать(@"D:\1C BASE\OtherExtCodes\SetRegisterRecord.epf", false);

с ошибкой "ссылка на объект не указывает на экземпляр объекта"...

Сама обработка нормально открывается в конфигураторе, подключена в 1С. Пробовал подключать другие, в том числе писать обработку с нуля = результат одинаковый...
5 dagdag
 
19.04.17
15:27
Помогите пожалуйста, в чем дело? ((( сутки бьюсь, ответа нет (((
6 arsik
 
гуру
19.04.17
15:34
(4) Нафига так сложно? В Рознице есть справочник - внешние обработки. В него запихиваеш свою и пользуешся.
7 arsik
 
гуру
19.04.17
15:34
запихиваешь* пользуешься*
8 dagdag
 
19.04.17
15:52
Надо научиться работать с обработкой из шарпа...
9 Serginio1
 
19.04.17
16:26
А ты создал com1Cserv?

V82.COMConnector v82conn = new V82.COMConnector();
                string cStr = "File=\""+sets.Path1C+"\";";
              
                dynamic com1Cserv = v82conn.Connect(cStr);

или V83 если у тебя база на 8.3
10 Serginio1
 
19.04.17
16:27
11 Vaflya
 
19.04.17
16:45
Можно попробовать Выполнить
СОМ.Выполнить("Код на языке 1С");
12 dagdag
 
19.04.17
20:39
С коннектом никаких проблем. легко получается выбрать данные или вызвать какую функцию.

Падает именно на строке

dynamic extProcess = com1Cserv.ВнешниеОбработки.Создать(@"D:\1C BASE\OtherExtCodes\SetRegisterRecord.epf", false);

с ошибкой "ссылка на объект не указывает на экземпляр объекта".
13 Serginio1
 
19.04.17
22:25
Чему равен com1Cserv?

Вызови любой другой код например справочник.
Проверь чему равен
com1Cserv.ВнешниеОбработки Может прав не хватает
14 arsik
 
гуру
19.04.17
23:25
Может это ограничение на открытие внешних обработок, которое недавно ввели в платформу?
15 dagdag
 
20.04.17
08:07
>>Чему равен com1Cserv?

COM объект. Живой. С его помощью можно свой запрос создать, данные из справочника выбрать... да все работает на ура. кроме внешней обработки (((

>>Может прав не хватает

Этому пользователю я вообще не поленился и поставил все галочки в конфигураторе.

>>это ограничение на открытие внешних обработок, которое недавно ввели в платформу?

что это?
16 arsik
 
гуру
20.04.17
08:55
17 Остап Сулейманович
 
20.04.17
08:57
(0) А почему бы не написать нужное на шарпах? А от 1С использовать только прикладные объекты? Так ИМХО будет правильно.
18 dagdag
 
20.04.17
09:03
http://www.online-ufa.ru/content/articles/security-warning-1c-8-3-9/

Это ПОМОГЛО!!! Больше не падает! а я полторасуток мучался...

Вот г технология - не могла по русски писать, что ей не хватает...

Спасибо!!!
19 dagdag
 
20.04.17
09:11
>>А почему бы не написать нужное на шарпах?

я так и хотел, но конвертация кода 1С в C# выносит мне остатки мозга... имхо проще реализовать нужный мне фукционал в виде функций в обработке и вызывать их из шарпа.