Интеграция 1С и C# #784301


#0 by Dendroid92
Здравствуйте! Прочитал статью про использование web-сервисов 1C в C#. Остановился на проблеме авторизации. При подключении к веб-сервису в браузере получаю XML-ответ. При добавлении сервиса в C# ввожу логин и пароль от 1С как и в браузере, дальше выскакивает сообщение "The server needs to authenticate your request. Your credentials will be sent to the server in clear text. Do you want to continue?". Зачем проходить аутентификацию еще раз, если я ввел логин и пароль от 1С? Дело в том что по нажатию кнопки "Yes" появляется форма ввода Пользователя и пароля, что туда вносить я так и не понял, ибо ввожу туда логин и пароль 1С и процесс аутентификации бесконечный, просит ввести снова. Что делаю не так? Заранее спасибо за помощь.
#1 by Asmody
Ты сам нарвался! Сейчас придет , ну и всё.
#2 by DDwe
Щас набегут адепты и их главарь )))
#3 by DDwe
Опередил )))
#4 by Юрий Лазаренко
))))))))))
#5 by Господин ПЖ
сервис кто предоставляет? 1С? имхо iis криво настроен. базовая авторизация, а должна быть анонимная
#6 by Dendroid92
делаю публикацию на веб-сервере iis, да. Как сделать анонимную, подскажите пожалуйста, буду признателен.
#7 by DDwe
Подожди.
#8 by Кирпич
Краткое содержание веток Serginio1
#9 by DDwe
Что там? Ютуба нету
#10 by Кирпич
Краткое содержание веток Serginio1
#11 by Господин ПЖ
шаг 12
#12 by Dendroid92
Сейчас попробую
#13 by Господин ПЖ
народ, кто в web волокет - помощь нужна
#14 by Dendroid92
В чем помощь?
#15 by Dendroid92
Анонимная проверка подлинности включена
#16 by Лефмихалыч
Странно, "сишарп" три раза сказали, а всё нет...
#17 by Господин ПЖ
есть номер зем. участка. есть сайт госрееста. там есть форма куда можно номер вбить - в ответ будут две ссылки на описание участка в разных реестрах. как это автоматизировать через 1с? могу получить текст формы с сайта, а дальше чего? парсить ее вставлять значение в нужное поле и отправлять форму обратно + submit? или как такое делается?
#18 by Лефмихалыч
на кнопку submit какой-то скрипт навешан, посмотри, что он делает и к чему обращается. Из этого уже выводы делай.
#19 by Кирпич
у росреестра вроде сервисы есть
#20 by Dendroid92
я похожее делал, передавал в url параметры нужные и отправлял на нужную страницу, как-то так если в кратце
#21 by Господин ПЖ
ковырял их документацию по описанию предоставляемых служб - не нашел
#22 by Господин ПЖ
>ередавал в url параметры нужные там url какой-то невменяемый... или... а как можно посмотреть что по submit на сервер уходит?
#23 by Dendroid92
я жал F12 в Chrome, открывал кладку Network и смотрел куда все улетает по нажатию клавиши, выбирал нужную страницу и смотрел какие у нее параметры были переданы, как-то так
#24 by Dendroid92
ЗаголовокHTTP.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"); authorid идет как параметр
#25 by Господин ПЖ
это я уже вчера смотрел... там ахтунг какой-то... шифровка. "феликс юстасу" просто
#26 by Dendroid92
Если правильно тебя понял, то
#27 by Serginio1
Если у тебя Web ссылка то Да нужно добавить client.PreAuthenticate = true; что бы при каждом вызове добавлялся Authorization: Basic Без него сначала вызов идет без Authorization: Basic получив код 401 добавляет его Если ссылка на службу то var _client = new ServiceClient; Но есть проблема если логин или пароль на кириллице
#28 by Serginio1
var binding = new BasicHttpBinding;             {                 using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))                 {                     var httpRequestProperty = new HttpRequestMessageProperty;                     }                         throw new Exception(Ошибка);                     }                 }
#29 by Dendroid92
На кирилице
#30 by Господин ПЖ
это плохо
#31 by Dendroid92
Вы писали статью в которой прописывали следующий код var uriString = @";;             var context = new ServiceReference1.EnterpriseV8(new Uri(uriString)); ServiceReference1 Вы создавали через "Reference - Add Service reference" однако я пока даже не могу создать данный класс для подключения к сервису.
#32 by Serginio1
Вэб ссылка или сыылка на службу.
#33 by Serginio1
Да. А сервис на 1С у тебя работает? Кроме того нужно галку на ODATA проставить при публикации и соответсвтвено прописать какие объекты будут использоваться Кроме для ODATA или вэб сервисов можешь отключить авторизацию
#34 by Serginio1
Кирпич, а чего парню то не помог? У тебя все мыли только об этом?
#35 by Dendroid92
Если честно, то я не совсем понимаю специфику интеграции 1С и C#. Читал множество статей про REST-интерфейс и протокол odata, в идеале было бы подключиться по веб-сервису вида и работать со справочниками, документами и т.д. да
#36 by Dendroid92
Сейчас попробую прописать там логин и пароль
#37 by Dendroid92
<point xmlns=";         xmlns:xs=";         xmlns:xsi="; прописал Логин и Пароль, выводит такую вещь при обращении в браузере к 1C:Enterprise 8 application error: Ошибка при разборе дескриптора виртуальных ресурсов by reason: Ошибка разбора XML: - [6,49] Фатальная ошибка: Input is not proper UTF-8, indicate encoding ! Bytes: 0xD1 0xE0 0xE9 0xF2 SystemId: file://C:/inetpub/wwwroot/1C/default.vrd
#38 by Serginio1
Проще использовать Вэб сервисы. На стороне VS генерятся классы и легко с ними работать. Видно ты сохранил в ANSI. Нужно сохранить в UTF-8
#39 by Serginio1
1С позволяет использовать и HTTP сервисы. Там тебе придется самоу сериализовать десериализовать. Хотя можно использовать обвязки например Refit для удобного описания клиента REST API Самым популярным в настоящее время протоколом для общения мобильных приложений с сервером является REST в связке с Json. Поэтому наше сегодняшнее знакомство начнем с библиотеки Refit. Refit позволяет описать спецификации для работы с REST-сервисом в виде простого Interface с понятным набором входных и выходных параметров, включая возможность манипулировать HTTP-заголовками для отдельных запросов.
#40 by Кирпич
Чем я ему могу помочь? "Интеграция 1С и C#" - это твой крест, вот и неси его.
#41 by Dendroid92
Пересохранил в UTF-8, в браузере просит авторизацию (при обращении к odata). При обращении к сервису не просит (авторизацию не проходил в прошлый раз). В VS не просит, но появляется опять "The server needs to authenticate your request. Your credentials will be sent to the server in clear text. Do you want to continue?". Что это? И что оно от меня хочет?))
#42 by Serginio1
У меня у самого куча дел. Некогда отвлекаться. А у тебя я так понимаю времени полно.
#43 by Serginio1
Не знаю. У меня не просит.             var context = new StandardODATA.EnterpriseV8(new Uri(uriString));
#44 by Кирпич
"У меня у самого куча дел." Пишешь новую нетленную статью на хабр?
#45 by Кирпич
+ "Как освободиться от влияния маркетинга Microsoft, смотреть на байт и видеть только байт и более ничего"
#46 by Кирпич
или "Импортозамещение. Microsoft друг или враг?. Я запутался."
#47 by Dendroid92
Прописал как у Вас, заработало, получил context, дальше попробую сам разобраться, читая статью на infostart. Огромное спасибо за помощь.
#48 by Serginio1
И то и другое и третье. Посмотри в сторону Вэб сервисов.
#49 by Serginio1
Говорят в 8.3.9 1С добавила Expand
#50 by Dendroid92
что я получаю на выходе? Как мне получить доступ к реквизитам справочника, т.е. получить список "Паспорт РФ, паспорт иностранного гражданина и т.д."?
#51 by CodeFinder
Вы мне лучше расскажите как питон по soap связать. Кто делал?
#52 by Serginio1
А ты не используй CreateQuery. var result = (from Тестовый in context.Catalog_ТипыДокументов                           where Тестовый.Число < 500 А дальше смотри данные. Можно  не ипользовать Expand Или Подгрузка ссылочных реквизитов var ПустаяСсылка = new Guid("00000000 - 0000 - 0000 - 0000 - 000000000000");
#53 by Dendroid92
пишу var result = (from ТипыДокументов in context.Catalog_ТипыДокументов select ТипыДокументов).ToList; получаю ошибку An exception of type 'System.Data.Services.Client.DataServiceQueryException' occurred in Microsoft.Data.Services.Client.dll but was not handled in user code Additional information: При обработке этого запроса возникла ошибка. из-за того что убрал where такое вываливается? По идее в запросах он же необязательный
#54 by Dendroid92
foreach(var c in context.Catalog_ТипыДокументов) { } тоже выдает аналогичную ошибку
#55 by Serginio1
Можешь также Include использовать. Правда для нескольких полей нужно использовать строки
#56 by Serginio1
Попробуй ограничить foreach(var c in context.Catalog_ТипыДокументов.Take
#57 by Dendroid92
Все-равно
#58 by Serginio1
Надо смотреть ошибку. Скопируй в буфер и посмотри в блокноте
#59 by Serginio1
#60 by Serginio1
Посмотри фиддлером, что вызывается и какой ответ
#61 by Serginio1
Если localhost то добавь fiddler var uriString = @";;;
#62 by Serginio1
Ну и посмотри вообще сервис вызвается через metadata
#63 by Dendroid92
у меня так. Если ставлю fiddler вываливается ошибка var uristring = @";;             var context = new StandardODATA.EnterpriseV8(new Uri(uristring));             context.Format.UseJson;
#64 by Dendroid92
В браузере то выводится в XML все данные что самое интересное
#65 by Serginio1
А в браузере в каком формате? Какая версия 1С А ну да XML Попробуй без Так а ты Фиддлер запустил;
#66 by Dendroid92
1С:Предприятие 8.3 (8.3.8.1675) не ставил, дома уже посмотрю тогда и отпишусь
#67 by Dendroid92
А в чем отличие Фидлера от "Инструменты разработчика" в Google? Там же аналог Фидлера встроен
#68 by Serginio1
А там точно весть трафик перехватывется, а нетолько текущей страницы? Смотри им. Хотя фиддлер по мне удобнее.
#69 by Dendroid92
посмотрел трассировку в C# пишет, что авторизация не прошла, в браузере тоже просит Логин и пароль, метод с изменением файла default.vrd не прокатил, как явно указывать их?
#70 by Serginio1
Я тебе же давал ссылку. Вот здесь про авторизацию здесь Единственно, что нужно вместо Encoding.ASCII использовать Encoding.UTF8
#71 by Serginio1
У всех кроме тебя все работает. Смотри внимательно.
#72 by Serginio1
#73 by Serginio1
#74 by Serginio1
У меня так ib="File=&quot;C:UsersSmirnov_SADocuments1CDemoAccounting&quot;;usr=web;pwd=">
#75 by Dendroid92
Спасибо за помощь. Оказалось, что ты мне писал не совсем по теме, но для общего развития не помешало) В общем все было намного проще. Нужно было в C# проделать ряд операций: 1. References - Add service references 2. Нажать кнопку Advanced далее Add web references 3. Ввести веб-сервис 4. Ввести в окне авторизации пользователя IUSR P.S. не знаю почему, но пришлось создать пользователя в 1С с именем IUSR и без пароля как и пользователя под которым выполняется запрос к публикации с 1С. Что конкретно до этого было не так, я так и не понял. Возможно нужно создавать Пользователя и пароль на английском.
#76 by Serginio1
Тебе про кирилицу писали. И про то, что бы установить пароль и пользователя для отключения авторизации 27,73
#77 by Serginio1
Опять же в статье Добавить ссылку на службу Берем вставляем в гугл Ели у тебя английская версия то измени язык на английйский
#78 by Serginio1
Кстати если будешь использовать .Net Core и вообще новые веяния то используй другое подключение .Net Core, WCF и ODATA клиенты
#79 by Dendroid92
Читаю статью пытаюсь делать по аналогии, но: 1) context.Format.UseJson; Format подчеркивает красным, пишет, что такого нет 2) даже если не указываю формат на строке var query = context.CreateQuery<MeataData1C.Catalog_ТипыДокументов>(@"Catalog_ТипыДокументов") An exception of type 'System.Data.Services.Client.DataServiceQueryException' occurred in Microsoft.Data.Services.Client.dll but was not handled in user code Additional information: An error occurred while processing this request. в Exception пишет, что не прошел авторизацию
#80 by Dendroid92
посмотрел видео здесь вообще непонятный подход
#81 by Serginio1
Не используй CreateQuery Пиши сразу 59. А ты авторизацию включил? По ссылке в 33 есть ссылка на
#82 by Serginio1
81 Только используй вместо ASCII UTF8
#83 by Dendroid92
Если делать все по видео, то работает. Если делать по другому,то нужно: 1) Добавить веб-сервис в C# 2) в web.config прописать как в 3) ОБЯЗАТЕЛЬНО прописать Credentials по типу Остается в силе вопрос: Почему я не могу указать формат вывода? context.Format.Json подсвечивает Format красным
#84 by Dendroid92
Хотя преобразование в формат JSon в ASP.NET MVC решается примерно так: public JsonResult GetFormsForLevels1(int Id)         {
#85 by Serginio1
Не вэб сервис, а ссылку на службу. там не web.config а app.config и нужен если меняются UserOData и PasswordOData тоже самое ты можешь сделать и используя 72,81 context.Format.Json зависит от клиента. У меня все есть и работает в том числе отключение авторизации
#86 by Serginio1
А у тебя Asp.Net. А версия VS какая?
#87 by Dendroid92
2013 Ultimate Когда создавал классы по видео, тогда формат присутствовал. Когда добавил службу, то куда-то пропал, но мне не суть важно, ибо я все-равно передаю на Вьюшку в JSon-формате
#88 by Serginio1
У меня VS 2015 апдейт 3
#89 by oleg_km
Офф. Ты на всякий случай глянь сколько стоит VS Ultimate. Я об этом впервые узнал от полиционера, который пришел проверять у нас лицензионность ПО.
#90 by Dendroid92
я у IT-шников наших спросил, на сайте среди купленных продуктов Microsoft она была. Тем более насколько знаю образовательным учреждениям бесплатно дается.
#91 by Serginio1
Поставь VS 2015 апдейт 3
#92 by oleg_km
Тогда круто.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С