Имя: Пароль:
1C
1С v8
Как на C# сгенерировать внешнее событие и отловить его в 1С
0 andrewch60
 
27.04.18
15:50
Как со сторонней программы (желательно на C#) сгенерировать внешнее событие и отловить его в 1С и ,если это возможно, вернуть результат обработки  переданных с событием данных.
1 xxTANATORxx
 
27.04.18
15:57
подними веб сервис на стороне 1С
2 Garykom
 
гуру
27.04.18
16:05
(0) "Ъ" же
3 Garykom
 
гуру
27.04.18
16:06
4 Garykom
 
гуру
27.04.18
16:07
5 Cool_Profi
 
27.04.18
16:18
Сейчас придёт Serginio и начнёт агитировать
6 andrewch60
 
27.04.18
16:31
(1) не приходилось работать с веб сервисами 1С, но чувство, что это излишне для 1го пользователя, который будет слать события 1С из своей программы
7 andrewch60
 
27.04.18
16:37
(3) Можете мне логику решения моей задачи объяснить для начала? С# не изучал, в 1С 8 пока еще довольно слаб. Что требуется от сторонней программы для генерации события? Нужно ли 1С что то еще, чтобы это событие перехватить в ОбработкаВнешнегоСобытия , или же правильно сформированное событие 1С сразу перехватит?
8 Cool_Profi
 
27.04.18
16:40
(7) "Можете мне логику решения моей задачи объяснить для начала? С# не изучал, в 1С 8 пока еще довольно слаб."
За рулём машины никогда не сидел. Можешь вкратце рассказать, как мне выиграть Формулу-1?
9 Garykom
 
гуру
27.04.18
16:42
(8) Нанять профгонщика или сильный ИИ же для удаленного управления, сам буду актером.
10 Вафель
 
27.04.18
16:43
(7) нужно написать компоненту и ее загрузить в 1с
11 Вафель
 
27.04.18
16:45
сторонняя программа может дергать эту билотеку напрямую или через сокеты или еще как
12 Cool_Profi
 
27.04.18
16:45
(9) До последнего времени в формуле1 актёрами были грудастые девушки... Ты такое?
13 Nyoko
 
27.04.18
16:45
(10) согласен, пример есть на ИТС;)
14 Garykom
 
гуру
27.04.18
16:47
(12) Зависит от зп, чем мы хуже тайцев ))
15 Cool_Profi
 
27.04.18
16:50
(14) У меня нет грудей. Да и не понравятся тебе волосатые груди 3го размера, да ещё с седыми волосами...
16 Garykom
 
гуру
27.04.18
16:52
(15) Ыыыы
17 Garykom
 
гуру
27.04.18
16:53
(16)+ Нельзя же так, сложно упав под стол от смеха писать
18 andrewch60
 
27.04.18
17:04
(8) в отличии от тебя, могу) каждый день тренироваться на картингах, пока не станешь всех делать одной левой) потом постоянно ездить на формулу-1 и постоянно тереться около престарелый спонсоров(заваливать их спамом из своих мольб), уверяя ,что ты очень даже перспективен, пока кто нибудь не даст тебе шанс...) (ну или до конца дней своих...) Далее остается найти выходы на всех соперников и на отравителя Скрипаля! Договариваешься с ним, и они еще на старте( только одев шлемы, или прикоснувшись к рулю, или выпив водички, или погладив не того котика и тд )впадают в кому и ОПА  -  ты в лидерах!!!
19 Cool_Profi
 
27.04.18
17:10
(18) Вот и спалился новичёк...
20 trdm
 
27.04.18
17:10
Паша?
21 andrewch60
 
27.04.18
17:18
(8) Чуть, что, то я "сидел за рулем", просто на 7ке и таких задач не ставилось, а на с# будет писать другой человек, моя задача спроектировать ,как это должно работать и решить, что я буду делать, а что и как кто то другой...
22 andrewch60
 
27.04.18
17:29
(10) (11) Спасибо, добрый человек. Получается, что через эту компоненту мы можем как передать данные в 1С ,так и из 1С вернуть их в нашу прогу?
А есть простейший пример такого функционала? А то много кода на С# только пугает...
23 trdm
 
27.04.18
17:35
может задачу опишешь, что-бы люд сразу нормальные советы давал.
24 Вафель
 
27.04.18
17:37
(22) проще через веб сервис
25 Garykom
 
гуру
27.04.18
17:48
Да и так понятно что систему заказов или нечто вроде прикручивают
26 Сияющий в темноте
 
27.04.18
18:35
Компоненты,это все сложнл и нет гарантии,что 1с запущена,а также придется преодолевать границы процесса для передачи данных.
самый простой способ,обмен через файлы,вы складываете файл в определенную директорию и запускаете в 1с обработку,которая в фоне проверяет наличие файла,и ест его,если он есть
дален,если скорость не устроит,можно посмотреть,как пишутся httpсервисы,т.к.это надежно,просто и быстро,и не нужно следить за запущенностью 1с
27 andrewch60
 
27.04.18
18:43
(23) Есть программа(пусть будет arcMap), в которой могут дописывать только кнопки с функциями (программист пишет их на С#). В ней визуально по координатам отображаются земельные участки с привязанными к ним номерами договоров. И есть 1С, в которой хранятся все ссылки на файлы договоров и дел по ним. Вопрос стал в том, что файлы дел, по некоторым участкам должны из 1С сохраняться в базу arcMap.
Я решил, что программист напишет функцию, которая передаст в 1С событием номер договора по выбранному участку, 1С выберет список файлов по договору на сервере и вернет их arcMap, а уже там сотрудник отметит в списке значений необходимые и они скопируются в базу arcMap.
28 Вафель
 
27.04.18
18:45
(27) полюбому нужно веб-хттп сервис делать
29 Вафель
 
27.04.18
18:46
можно вообще через ком если уж не хочется 1с трогать )))
30 andrewch60
 
27.04.18
18:47
(26) Заставить 1го человека держать запущенную копию 1С не проблема... В 1С работает около 90 пользователей, а конкретно этой задачей будет заниматься 1-2.
Первоначально приходила идея делать через файл, но если есть более грамотные пути, то почему нет...
31 trdm
 
27.04.18
18:48
(27) Вот с этого и надо начинать. Можно множеством способов сделать, вплоть до единой БД, через файловую систему, через ком-соединение и т.п.
32 andrewch60
 
27.04.18
18:48
(28) А какой его принцип работы? Запрос - ответ...?
сложно ли реализовать? И в чем его преимущества здесь?
33 Вафель
 
27.04.18
18:50
(32) исходя из задачи: кто-то хочеть получить инфу из 1с
34 andrewch60
 
27.04.18
18:51
(31) очень против единой БД... Пусть себе работают в своей базе... Я отвечаю за 1С, а за arcMap женщина, которая только чай мне заварила, когда пытался обсудить варианты...
35 andrewch60
 
27.04.18
18:53
привлек метод с событием именно тем, что 1С уже может быть запущена и не надо с какими то подключениями уже возиться
36 Вафель
 
27.04.18
18:54
(35) сложность написания компоненты в миллион раз больше чем веб сервиса
37 trdm
 
27.04.18
19:03
Наипростейший путь: сигнальный файл в определенном каталоге, находя который 1С-ка выгружает нужные файлы рядышком.

У меня так сделана конвертация печатных форм mxl в pdf из 1Сv7   с помощью 1Сv8.
38 Garykom
 
гуру
27.04.18
19:11
(27) Наваяйте внешний сервис/базу хранения этих сведений, вынесите их из 1С наружу.

Пусть и 1С использует (читает/записывает) эту общую базу и внешние сервисы (читает).
39 Dmitry1c
 
27.04.18
19:12
веб-сервис на стороне 1С и все
40 Сияющий в темноте
 
27.04.18
19:35
Если в 1с 90 человек,то она серверная,значит,есть сервер,где могут выполняться запросы
качаем пример http сервиса и пробуем,если совсем не подходит,то можно фоновое задание сделать,которое ждет файла флага.
еще можнл написать стороннюю программу на том же си с решеткой,чтобы она использовала внешнее соединение к 1с,этот способ не требует внесения изменений в базу 1с.
можно внешнее соединение и из самой аркмап делать,но тут есть вопросы с хранением соединения между вызовами
в аркмап же выгруженные данные нужно как то записывать,может быть,можно наоборот из внешней обработки 1с подключиться к аркмап?
41 andrewch60
 
28.04.18
00:16
(40) Сервер в наличии, внесение изменений в базу не проблема.
фоновое задание не хотелось бы, как и чтобы что то периодически проверялось(наличие файла). Хотелось бы, чтобы по требованию только 1С напрягалась, и пользователь не ждал пока 1С поймет, что перед ней задача стоит. А обработка полученных данных пусть полностью будет на совести программиста arcmap, всегда лучше работать с базой изнутри, а не извне.
завтра почитаю про http сервис, раз многие уверены, что это простое и подходящее под задачу решение
42 andrewch60
 
28.04.18
00:19
(38) может я не совсем понял, но 1С Документооборот стоит и  выносить в отдельную базу частично документы - это будет далеко не самый простой способ
43 andrewch60
 
28.04.18
10:48
(39) (40) http или веб сервис? в чем их различие и что лучше подойдет мне?
44 Вафель
 
28.04.18
11:06
кстати можно никакие сервисы не писать, а читать через одата
45 Garykom
 
гуру
28.04.18
11:35
(44) odata это автоматически генерируемый вебсерсис, который так же нужно сначала поднять/настроить через вебсервер.
46 xxTANATORxx
 
28.04.18
11:52
всё не читал, веб сервис уже предлагали?)
47 xxTANATORxx
 
28.04.18
11:54
(46)+ вариант еще, если всё это в одной сетки и в пределах видимости, то C# может лезть напрямую с БД 1С читать всё что ему вздумается
48 Адинэснег
 
28.04.18
11:59
(43) веб это soap/xml
в hs ты сам можешь описать заголовки, тело и код ответа
с hs тебе проще разобраться
49 xxTANATORxx
 
28.04.18
12:07
(48)веб сервис ни кому не запрещает получать, отдавать строку xml/json
50 andrewch60
 
28.04.18
14:27
(47) Такого даже не рассматриваю...Пусть работают только с путями к файлам, которые 1С им вернет(тем более еще запросами надо будет выбирать актуальные версии файлов...пусть это функционалом 1С будет)
51 Вафель
 
28.04.18
14:29
(50) в типовых вроде естьвебсервис по файлам
52 andrewch60
 
28.04.18
14:31
Может кто нибудь скинет пример обработчика для Http сервиса Get и Post? Попробую на выходных установить и настроить IIS
53 Garykom
 
гуру
28.04.18
14:33
настрой лучше http://v8.1c.ru/o7/201312rest/index.htm
54 Garykom
 
гуру
28.04.18
14:35
55 Serginio1
 
28.04.18
14:57
56 Serginio1
 
28.04.18
14:58
А спасибо    Garykom. Не заметил
57 Garykom
 
гуру
28.04.18
15:00
(56) Кстати есть вопрос на много рублей!

Каким образом на/через C# "читать из принтера"?
58 Garykom
 
гуру
28.04.18
15:02
(57)+ У меня есть решение которое "ККТ онлайн" от атол превращает в обычный принтер.

Из любой программы можно просто "печатать чеки" по 54-ФЗ, но вот как получить обратный статус и т.д.?
59 Garykom
 
гуру
28.04.18
15:05
(58)+ Проблема даже не C# а в 1С, как встроенными средствами платформы получить состояние принтера (или программы C#) не используя ВК или вебсервисы?

Можно ли создать некий "стандартный поток ввода/вывода" в системе чтобы 1С просто читала из него (как можно писать файлы в \\имякомпа\имяпринтера)
60 andrewch60
 
28.04.18
15:14
(53) я правильно понимаю, что функционал тот же, но нет необходимости в IIS?
61 Garykom
 
гуру
28.04.18
15:19
(60) Нужен IIS или Apache, но в конфе 1С ничего не надо менять если платформа из последних.
62 Garykom
 
гуру
28.04.18
15:22
63 andrewch60
 
28.04.18
15:32
(61) 8.3.6 стоит. Значит IIS по любому нужен? Apach проще в настройке?
64 Garykom
 
гуру
28.04.18
15:35
(63) для 8.3.6 старый апач 2.2
65 Serginio1
 
28.04.18
16:28
(56) Через интероп WinSpool
66 Сияющий в темноте
 
28.04.18
17:03
Получить состояние принтера не всегда возможно,так как подсистема печати работает с буферизацией,и,если идет печать по сети,то успешная передача файла означает только успешное начало печати,а результат будет в журнале печати,как вариант,можно дописывать свои длл для работы и выдавать статусы,но это уже будет нестандартное решение.
Для гарантированного получения статуса можно использовать http запрос,чтобы термопринтер в процессе печати передавал в ответ данные состояния,тогда можно будет видеть как идет печать практически в онлайн режиме
просто,с онлайн кассой чек может быть или напечатан или нет,а в случае термопринтера этикеток возникает вопрос,сколько этикеток напечатано и сколько осталось
67 Garykom
 
гуру
28.04.18
17:21
(66) У меня по факту то эмуляция состояние "принтера" (кассы ККТ) и этот статус надо в 1С обратно передать.

1С на кассу данные отправляет через:
ТабличныйДокумент.Напечатать(); или ТекстовыйДокумент.Записать(...)

Но как получить результат "печати"?
68 Garykom
 
гуру
28.04.18
17:33
(67)+ Понятно через ВК или вебсервисы можно что угодно, но хотелось обойтись простым .Прочитать() сваяв некую штуку на C#.

В принципе назначить общую папку и писать в нее файлики/лог, затем 1С пусть их читает ))

Раз нельзя из 1С читать stdin, stdout, stderr
69 andrewch60
 
07.05.18
21:37
всем огромное спасибо, настроил IIS и Http-сервис, быстро и дешево (разве что не пойму как описание ошибки на русском заполнить, чтобы оно корректно отображалось ... а то что бы не пробовал, все равно в win1251 вставляет, и видны иероглифы...)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.