INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Радонова Марина | Руководитель отдела облачных решений | 42Clouds

«Как не стать “дешевкой”, или как продать себя дорого»

Коммуникации с отделом продаж и заказчиком - головная боль многих специалистов 1С. Поэтому в своем докладе я хочу поделиться личным опытом, как правильно принимать задачи от клиентов, быть убедительным и дорого продавать себя как специалиста. Как вести взаимодействие с заказчиком от “А до Я” Как не занижать оценку трудозатрат на выполнение ТЗ заказчика Построение коммуникаций с сейлс-менеджерами Как успеть сделать работы качественно до дедлайна Как в потоке задач не потерять новых клиентов Фидбэк как полезная привычка 1С-ника Топ 5 проверенных инструментов таймменеджмента

1. ture 234 08.12.16 17:56 Сейчас в теме

wsisapi

Добрый день, All.

Наверно все слышали о веб серверах (это такая, штука, которая расширяет веб браузер). Так вот 1С двинулась в этом направление и сделала http и web-сервисы через wsisapi.dll

Чтоб это использовать нужен апач или иис, но мне было не лень написать свой сервер, который принимает соединения и отдает отдельным (worker) программам типа cgi (в обычном понимание) сделать "грязную работу" по формированию текста html-документа. Все вроде меня устраивает, но захотелось подключить wsisapi.dll, чтоб совсем как в "серьёзных решениях" было.

В принципе, я знаю, где почитать на тему isapi. Но вот вопрос - можно ли минуя wsisapi.dll работать сразу с сервером 1С? Интересуют меня web-сервисы и http только. Я готов держать в памяти и wsisapi.dll, но думается мне, что посредник не нужен.

Делал кто такое?
Найденные решения
18. MadDAD 119 22.12.16 14:27 Сейчас в теме
(17)
off:
кстати IDA мне не нужна
Ну я бы с этим поспорил, IDA все таки не тупой дизассемблер и встроенный отладчик студии с ним не сравнится :).

А по существу - можно попробовать сделать прокси-библиотеки для core82.dll и STL82.dll и посмотреть как используются ипортированные из них функции. Но как мне кажется разработка wssapi.dll с нуля - это не нужная трата времени. Если она в текущем виде работает то и используйте её.
Остальные ответы
Сортировка: Древо
3. Fox-trot 54 09.12.16 09:08 Сейчас в теме
(1)
Наверно все слышали о веб серверах (это такая, штука, которая расширяет веб браузер)
это по меньшей мере странно такое слышать от разработчика, хотя допускаю, что автор диктовал своему секретарю
а если о сути вопроса, то не совсем понятна логика вопроса. то есть какова причина отказа от исходной библиотеки? ведь сразу же возникает куча проблем с авторизацией и прочими делами...
4. ture 234 09.12.16 10:27 Сейчас в теме
(3) подскажите примерно направление поиска. Я хочу научиться работать с сервером 1С напрямую (говоря простым языком, хочу написать свой модуль isapi для веб-сервера). Как мне наткнуться ну кучу проблем с авторизацией и прочими делами?
5. Fox-trot 54 09.12.16 10:57 Сейчас в теме
(4) для начала создать ком-сервер
6. ture 234 09.12.16 18:30 Сейчас в теме
(5) Начал ты явно издалека. Представь, что сервер уже есть. Сервер напоминает web-сервер. Расширяется аналогично cgi. Isapi еще не умеет, но с wsisapi.dll от 1С уже перебрехивается ошибками.

Что дальше-то?
20. nickperel 2 07.06.17 13:35 Сейчас в теме
(1)
OData
https://infostart.ru/public/360077/
http://www.odata.org/

Практические результаты связи УПП - MS PowerBI - часа 2-3 без автообновления

Но выбросить веб-клиент нельзя. Мне не известно способов добраться до содержимого инфобазы 1C:Предприятия без посредника, без прохода через лицензирование. Может есть?
Но не прямой доступ в SQL
2. ture 234 09.12.16 08:50 Сейчас в теме
Механизм интеграции isapi можно сделать для SAP, аксапта и буду прав, если скажу, что для всех серьёзных ERP. А в 1С можно только то, что дозволено в букварях? Весьма миленько получается.
12. ture 234 12.12.16 11:58 Сейчас в теме
Нарисовал я прокси к wsisapi, чтоб понять, чем она обменивается с IIS и заменить IIS на свой сервер ибо достало копаться в ошибках.

1) GetExtensionVersion (отвечает, что она 82 и ёе зовут так-то)
2) HttpExtensionProc (здесь передается внутрь wsisapi указатели и сведения о вызове) на этой функции виснет исполняемый поток и дальше идут колбеки.

3) GetServerVariable (от меня хотят ряд переменных среды, тип cgi)
APPL_PHYSICAL_PATH = "C:\\inetpub\\wwwroot\\my\\"
HTTP_1C-APPLICATIONNAME = NULL
HTTP_COOKIE = NULL
ALL_RAW = <тут походу весь заголовок>
HTTPS = "off"
HTTP_X_FORWARDED_PROTO = NULL
SERVER_NAME = "127.0.0.1"
HTTP_X_FORWARDED_HOST = NULL
SERVER_PORT = "80"
HTTP_X_FORWARDED_PORT = NULL
HTTP_URL = "/s/ws/files?wsdl"
Потом что-то в голове wsisapi сломалось и она по новой давай спрашивать переменные (т.к. я видел мастер класс писания типовых, то удивляться не стал)
4) ServerSupportFunction (хочет сама установить заголовки)
200 Ok
и
Content-Length: 11183
Content-Type: text/xml; charset=utf-8
Set-Cookie: vrs_rc=;Version=1
5) WriteClient (хочет писать в браузер какое-то фуфло, которое я сотворил внутри 1С,wsdl кроче)
6) отвисает исполняемый поток (2)

Вуаля в браузере wsdl!

Сейчас попробую без прокси, сам потрепать ёё.
7. Fox-trot 54 09.12.16 20:54 Сейчас в теме
не совсем понятна мысль. если "сервер уже есть" и "уже перебрехивается с wsisapi.dll", то о чем еще мечтать? хотя выше было сказано, что "вот вопрос - можно ли минуя wsisapi.dll работать сразу с сервером 1С?" Таки не понятно нужен тебе wsisapi.dll или нет. опять таки если речь идет о других системах, то не трудно понять, что в них есть свой api. открытый или не документированный - это уже другой вопрос
8. ture 234 09.12.16 21:54 Сейчас в теме
(7) для isapi не допустимо валиться с ошибками, потому что это рушит весь сервер. Преимущество в том, что не нужно создавать и потом срубать процесс. Однако иис запускает всякий раз новый процесс, который работает с isapi 1с. И это понятно, тк wsisapi производства 1с валится с ошибками, на каждом шагу и тянет за собой весь сервис. В итоге реализация не отличается от cgi, не смотря на всю рекламу. Т.е. Снова запускается отдельный процесс, который общается с isapi 1c.

В принципе, мне пофигу и я могу не заморачиваться на прямое соединение с сервером. Просто задумался о стабильносте. Коннект с SAP у меня идет без посредников (dll rfc не в счет, т.к. она быстрая и безпроблемная).
9. Fox-trot 54 10.12.16 21:18 Сейчас в теме
(8) так ты запилил свой сервис или недоволен тем, что из коробки?
10. ture 234 11.12.16 18:55 Сейчас в теме
(9) я приделываю к своему web-серверу isapi, потому что не знаю как вызывать сервер 1с напрямую. А недоволен я тем, что по документации сказано, что технология расширения isapi предполагает динамическую загрузки библиотеки в память процесса сервера, а эта библиотека валится с ошибками, что влечет за собой обвал всего сервера. Я так понимаю, что на словах в документации одно, а на деле сервер запускает отдельный процесс, который взаимодействует с isapi библиотекой. Т.е. Если isapi падает, то падает только этот отдельный процесс, а не весь сервер. Однако в таком раскладе получается, что мы имеем расширение cgi, которое так же предполагает запуск отдельного процесса при каждом вызове. Я отлаживаю свою isapi и вижу, что она взаимодействует с процессом, который то появляется, при вызове, то пропадает, после вызова клиента.

Ух....
11. ture 234 12.12.16 10:52 Сейчас в теме
wsisapi.dll спрашивает у меня переменную среды HTTP_1C-APPLICATIONNAME

IIS ей разумеется говорит "не знаю, гуляй", я как-то даже растерялся.
13. ture 234 12.12.16 12:42 Сейчас в теме
Оу-у-у-у-у e-e-e-e-e-e!!!!!
wsisapi от 1Ц схавала мои команды, теперь можно двигать дальше.

В процессе выяснилось, что IIS делает себе воркер, который загружает wsisapi и этот воркер держится в памяти некоторое время, поэтому технология отличается от cgi под нагрузкой.
14. ture 234 22.12.16 11:37 Сейчас в теме
Мертвая фаза закончилась. Я нарисовал свой сервер и реализовал технологии расширения функциональности cgi и isapi. Результат великолепный - загружаемая библиотека wsisapi.dll от 1С прекрасно себя чувствует, хоть и писали её индусы. Веб браузеры рисуют теперь привычные wsdl или формочки работы через Web.

Остался открытым вопрос - как вызывать методы из модулей 1С (или просто web-сервисы) напрямую (без wsisapi.dll)?
Кто знает, где об этом почитать?

15. MadDAD 119 22.12.16 12:03 Сейчас в теме
(14) IDA в руки и в перед :) Врядли где найдется публичная инфа о том как внутри работает библиотека.
16. ture 234 22.12.16 12:15 Сейчас в теме
(15) ассемблер? я раньше состарюсь, чем отслежу в деталях нить процесса.

Это ж кто-то писал и не один. Людей же не ликвидировали по окончанию проекта. Кто-то где-то написал или хвастнул об архитектуре и функциях. Мож какой орефков разбирался и делал обратный инжиниринг? Неужели это тайна должна быть? SAP не делает тайны из этого и позволяет вызывать функции из функциональных модулей, а 1С еще не доросла? Тогда зачем в сектор EPR ей? Не может быть, чтоб в секторе ERP разговор 1С-ников был о том, что всё вокруг должно подстраиваться под систему какого-то жалкого назначения?
17. ture 234 22.12.16 12:18 Сейчас в теме
(15)
кстати IDA мне не нужна, я прям в студии отладчиком попадаю в ассемблер библиотеки, только мне это мало что дает.
18. MadDAD 119 22.12.16 14:27 Сейчас в теме
(17)
off:
кстати IDA мне не нужна
Ну я бы с этим поспорил, IDA все таки не тупой дизассемблер и встроенный отладчик студии с ним не сравнится :).

А по существу - можно попробовать сделать прокси-библиотеки для core82.dll и STL82.dll и посмотреть как используются ипортированные из них функции. Но как мне кажется разработка wssapi.dll с нуля - это не нужная трата времени. Если она в текущем виде работает то и используйте её.
19. ture 234 22.12.16 14:58 Сейчас в теме
(18) I'm so stupid... я совсем забыл про прокси!!!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии


Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Удаленный бизнес-аналитик 1С
Санкт-Петербург
Временный (на проект)