|
Практическое применение NET в 1С8 с помощью Serginio1 | ☑ | ||
---|---|---|---|---|
0
DES
27.06.16
✎
13:42
|
Есть https://api-test.fisc.md/Service.svc
Инструкция https://efactura.fisc.md/Help/eFactura_Integration_Guide.pdf Напрямую с 1с8 не функциклирует. Но можно скачать код и с скомпилировать C# свою DLL, которую можно задействовать с помощью "обертки" от Serginio1 Использование классов .Net в 1С для новичков зарегистрировав её на сервере и с помощью нее получить доступ к DLL. Код DLL (частично) [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IService/GetAcceptedInvoices", ReplyAction="http://tempuri.org/IService/GetAcceptedInvoicesResponse")] ServiceEfactura.ServiceReference.InvoicesResponse GetAcceptedInvoices(ServiceEfactura.ServiceReference.ActorBaseRequest request); [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IService/GetAcceptedInvoices", ReplyAction="http://tempuri.org/IService/GetAcceptedInvoicesResponse")] System.Threading.Tasks.Task<ServiceEfactura.ServiceReference.InvoicesResponse> GetAcceptedInvoicesAsync(ServiceEfactura.ServiceReference.ActorBaseRequest request); начинаем в 1с8 Врап = Новый COMОбъект("NetObjectToIDispatch45"); //Врап.ЗаменитьConfigFile(ИмяФайлаDLL + ".config"); ИмяФайлаDLL = "D:\FilesNetObjectToIDispatch2\" + "ServiceEfactura.dll"; Сборка = Врап.загрузитьСборку(ИмяФайлаDLL); namespace = "ServiceEfactura.ServiceReference."; Сборка = Врап.загрузитьСборку(ИмяФайлаDLL); типСервера = Сборка.GetType(namespace + "ServiceClient"); привязка = Врап.СоздатьОбъект("System.ServiceModel.BasicHttpBinding,System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); СсылкаHTTPS = "https://api-test.fisc.md/Service.svc target=""_blank"" rel=""nofollow"" class=""extralink"">https://api-test.fisc.md/Service.svc"; remoteAddress = Врап.СоздатьОбъект("System.ServiceModel.EndpointAddress",Врап.СоздатьОбъект("System.Uri",СсылкаHTTPS)); сервер = Врап.СоздатьОбъект(типСервера,привязка,remoteAddress); UserName1 = сервер.ClientCredentials.UserName; UserName1.UserName = "DES"; UserName1.Password = "MyPass"; newid = Врап.ПолучитьТип("System.Guid").NewGuid().ToString(); ТипRequest = Врап.ПолучитьТип("ServiceEfactura.ServiceReference.InvoicesRequest"); ТипЛист = Врап.ПолучитьТип("System.Collections.Generic.List`1"); ТипInvoiceIndentificator = Врап.ПолучитьТип("ServiceEfactura.ServiceReference.InvoiceIndentificator"); Request = Врап.СоздатьОбъект(ТипRequest); ТипЛистОбъект = Врап.ТипКакОбъект(ТипЛист); ТипизированныйЛист = ТипЛистОбъект.MakeGenericType(ТипInvoiceIndentificator); SeriaAndNumbers = Врап.СоздатьОбъект(ТипизированныйЛист); SeriaAndNumber = Врап.СоздатьОбъект(ТипInvoiceIndentificator); SeriaAndNumber.Number = "000962811"; SeriaAndNumber.Seria = "EUG"; SeriaAndNumbers.Add(SeriaAndNumber); request.RequestId = newid; request.SeriaAndNumbers = SeriaAndNumbers.ToArray();; // _client = ?????????????????????? тут вопрос как ПолучитьКлиента(); // response = _client.GetAcceptedInvoices(request); вопрос как получить _client ? |
|||
250
DES
07.07.16
✎
18:37
|
вот сделал минимальный код
ИмяФайлаСборки = "ServiceEfactura.dll"; ПространствоИмен = "ServiceEfactura.ServiceReference."; КаталогФайлаСборки = "%CommonProgramFiles%"; ПутьКФайлуСборки = ПолучитьКаталог(КаталогФайлаСборки) + "\NetObjectToIDispatch.1C\" + ИмяФайлаСборки; ФайлСборки = Новый Файл(ПутьКФайлуСборки); ПутьКФайлу = ФайлСборки.ПолноеИмя; врап = Новый COMОбъект("NetObjectToIDispatch45"); InvoicesContentRequest1 = врап.ПолучитьТипИзСборки(ПространствоИмен + "SeriaNumberRequest", ПутьКФайлу); InvoicesContentRequest2 = врап.ПолучитьТипИзСборки(ПространствоИмен + "InvoicesContentRequest", ПутьКФайлу); InvoicesContentRequest1 - создается InvoicesContentRequest2 - нет. как порыться в dll и узнать есть там такой тип ? |
|||
251
DES
07.07.16
✎
18:39
|
так есть же http://prntscr.com/bpzr50
|
|||
252
DES
07.07.16
✎
18:40
|
но этот тип не правильный. Один раз случайно он создался и я видел правильную структуру
дам должно быть номер и серия - это для получения печатной формы по номеру накладной. А этот тип (на картинке) левый какой то. |
|||
253
DES
07.07.16
✎
18:43
|
прошу суд (252) во внимание не принимать
|
|||
254
DES
07.07.16
✎
18:51
|
кстати врап.ВыводитьСообщениеОбОшибке = ложь
не работает - все равно выбрасывает окно с мессагой |
|||
255
DES
07.07.16
✎
20:51
|
сделал тестирование типов
ИмяФайлаСборки = "ServiceEfactura.dll"; ПространствоИмен = "ServiceEfactura.ServiceReference."; КаталогФайлаСборки = "%CommonProgramFiles%"; ПутьКФайлуСборки = ПолучитьКаталог(КаталогФайлаСборки) + "\NetObjectToIDispatch.1C\" + ИмяФайлаСборки; ФайлСборки = Новый Файл(ПутьКФайлуСборки); ПутьКФайлу = ФайлСборки.ПолноеИмя; врап = Новый COMОбъект("NetObjectToIDispatch45"); врап.ВыводитьСообщениеОбОшибке = 0; СписокТипов = Новый СписокЗначений(); СписокТипов.Очистить(); СписокТипов.Добавить("TaxpayersRequest"); СписокТипов.Добавить("BankAccountRequest"); СписокТипов.Добавить("SeriaNumberRequest"); СписокТипов.Добавить("InvoicesRequest"); СписокТипов.Добавить("SignRequest"); СписокТипов.Добавить("InvoicesContentRequest"); СписокТипов.Добавить("ActorBaseRequest"); СписокТипов.Добавить("RejectRequest"); СписокТипов.Добавить("AcceptedRequest"); СписокТипов.Добавить("CanceledRequest"); СписокТипов.Добавить("PostInvocesRequest"); СписокТипов.Добавить("SearchRequest"); СписокТипов.Добавить("LogsRequest"); СписокТипов.Добавить("string"); Для Каждого Стр Из СписокТипов Цикл ТестТипа(Стр.Значение, Врап, ПутьКФайлу); КонецЦикла; КонецПроцедуры Функция ТестТипа(НаименованиеТипа, Врап, ПутьКФайлу) ПространствоИмен = "ServiceEfactura.ServiceReference."; Request = Неопределено; Попытка Request = Врап.ПолучитьТипИзСборки(ПространствоИмен + НаименованиеТипа, ПутьКФайлу); Сообщить(НаименованиеТипа + " протестирован. " + Request); Исключение Сообщить(НаименованиеТипа + " сбой."); КонецПопытки; КонецФункции получил результат: TaxpayersRequest протестирован. COMОбъект BankAccountRequest сбой. SeriaNumberRequest протестирован. COMОбъект InvoicesRequest протестирован. COMОбъект SignRequest протестирован. COMОбъект InvoicesContentRequest сбой. ActorBaseRequest протестирован. COMОбъект RejectRequest протестирован. COMОбъект AcceptedRequest протестирован. COMОбъект CanceledRequest протестирован. COMОбъект PostInvocesRequest протестирован. COMОбъект SearchRequest протестирован. COMОбъект LogsRequest протестирован. COMОбъект string сбой. может такое быть из-за кода 1С8 ? |
|||
256
DES
07.07.16
✎
21:05
|
и
TaxpayersResponse протестирован. c69f27fc-bb7f-4db5-9689-a5b1e32c9d74 BankAccountResponse сбой. SeriaNumberResponse протестирован. c03e7bd1-cc5c-4cc8-8115-eda7b0cd7f39 QRCodesResponse протестирован. b4cf5db0-dbc3-4cf0-9df5-28dc848dbe69 InvoicesXmlResponse протестирован. a5914550-8132-47cd-94e6-2f6e8a0e9734 InvoicesXmlResponse протестирован. b2e75b03-7dad-4b7b-958a-770dd2ce1946 InvoiceContentResponse сбой. InvoicesResponse протестирован. ceff6b7a-9876-4fe5-8a8e-3c7ab3b57fd5 InvoicesResponse протестирован. 19cbb218-7a59-47fe-8a02-ee2ff47f2cf4 RejectedResponse протестирован. ca39bd45-6da0-4e8e-8374-5971fb5cc313 AcceptedResponse протестирован. 2a82ae02-6b49-473a-bef8-a8ce09c708e8 CanceledResponse протестирован. 0b342e41-7e52-4c76-8492-e612eea3268f PostInvocesResponse протестирован. 8a6b942f-4ff6-408d-adff-516cf228a7f4 InvoicesResponse протестирован. 2cecfbc5-f428-41de-b58a-14c9b179e2e8 LogsResponse протестирован. 0c9b5acf-64ae-4f15-8c09-f50328e1cbb6 BaseResponse протестирован. 17724b4f-6bf2-40d2-88c7-1cbe041b2104 |
|||
257
DES
07.07.16
✎
21:06
|
чего то 2 функции - ни входящие типы , ни исходящие - не создаются
|
|||
258
Serginio1
07.07.16
✎
21:58
|
(257) У меня 244 Все прекрасно создается
А VS создается? |
|||
259
Serginio1
07.07.16
✎
22:01
|
Поставь последнюю из 218
|
|||
260
DES
08.07.16
✎
07:05
|
(218) у меня послеlняя, кстати в них можно уже и версионность вести ;)
|
|||
261
Serginio1
08.07.16
✎
08:08
|
(260) Если последняя, тогда 244 у тебя должна работать с моей DLL
|
|||
262
Serginio1
08.07.16
✎
08:09
|
Хотя у меня 10 ка. Но таких проблем у меня никогда не было.
|
|||
263
Serginio1
08.07.16
✎
08:29
|
И проверить в VS ты не можешь?
|
|||
264
DES
08.07.16
✎
08:52
|
пересобрал сборку под FW 4.6.1
никаких различий, те же проблемы TaxpayersRequest протестирован. 19fc03b4-fd53-4dfe-908d-0bd9638c4ce9 BankAccountRequest сбой. SeriaNumberRequest протестирован. 5771c993-3569-43b0-9cc6-059d5abc6ba9 InvoicesRequest протестирован. 746098ee-493e-458d-89cb-7761d72cb0e4 SignRequest протестирован. 6498763e-ed63-454f-a621-a1adcd6384d5 InvoicesContentRequest сбой. ActorBaseRequest протестирован. 1dc66503-3bc8-4cda-847e-42061df0ceca RejectRequest протестирован. f0874496-ef4f-4e93-bf7d-568617dc40a5 AcceptedRequest протестирован. 97030ab6-4a01-47b3-afd6-d7aabf284e48 CanceledRequest протестирован. 514f0508-6e24-4a48-b3b3-0f3c149780fc PostInvocesRequest протестирован. 14f277ee-bc62-4d79-8e30-8fa844dafd6d SearchRequest протестирован. 331e5b7b-dfd7-4a02-80b4-c8ce3e8544d5 LogsRequest протестирован. dfda48ac-af4a-41ea-b4d7-08bd0366bfa3 string сбой. TaxpayersResponse протестирован. 70a84d3c-25ad-491c-bab9-a27df6b44303 BankAccountResponse сбой. SeriaNumberResponse протестирован. 6126a146-a50b-483c-afc0-afb4ee17d921 QRCodesResponse протестирован. 7a2b6b9a-3eef-400e-b0b6-a75798bb2487 InvoicesXmlResponse протестирован. 21ddb6a1-ddc2-44e4-a4a2-1c5b738aa6ae InvoicesXmlResponse протестирован. 4f89912c-5a54-424c-8ab9-607af69ae89e InvoiceContentResponse сбой. InvoicesResponse протестирован. 10419ac5-04f0-43ed-8d12-1c4de7340363 InvoicesResponse протестирован. 63d2b4ba-3fb7-4ad4-9b81-4e3740fdc5b7 RejectedResponse протестирован. ddad0252-9d7f-4368-90a7-458ae6651d9b AcceptedResponse протестирован. 1d810003-52c4-4f86-ab4e-751425488adb CanceledResponse протестирован. 68d8c572-234e-474f-8987-d9f55fb20cd0 PostInvocesResponse протестирован. 9f4f518f-338f-44a2-887a-e5cae82642b1 InvoicesResponse протестирован. 1dd9d9c7-9d1b-4264-8025-9437b9b4c6ce LogsResponse протестирован. 36775a9e-07ab-4240-bbe4-59a6ae9ee8c2 BaseResponse протестирован. c1cf4f25-0a88-45e7-806e-1da739be54d1 |
|||
265
Serginio1
08.07.16
✎
10:18
|
string На самом деле System.String
У меня врап=новый COMОбъект("NetObjectToIDispatch45"); врап.ВыводитьСообщениеОбОшибке=ложь; ПространствоИмен="efactura.ServiceReference1."; ПутьКФайлу="d:\Vs2015Programs\efactura\efactura\bin\Debug\efactura.dll"; СписокТипов = Новый СписокЗначений(); СписокТипов.Очистить(); СписокТипов.Добавить("TaxpayersRequest"); СписокТипов.Добавить("BankAccountRequest"); СписокТипов.Добавить("SeriaNumberRequest"); СписокТипов.Добавить("InvoicesRequest"); СписокТипов.Добавить("SignRequest"); СписокТипов.Добавить("InvoicesContentRequest"); СписокТипов.Добавить("ActorBaseRequest"); СписокТипов.Добавить("RejectRequest"); СписокТипов.Добавить("AcceptedRequest"); СписокТипов.Добавить("CanceledRequest"); СписокТипов.Добавить("PostInvocesRequest"); СписокТипов.Добавить("SearchRequest"); СписокТипов.Добавить("LogsRequest"); Для Каждого Стр Из СписокТипов Цикл попытка Тип=Врап.ПолучитьТипИзСборки(ПространствоИмен+Стр.Значение,ПутьКФайлу) исключение Сообщить("Ошибка получения типа "+Стр.Значение); сообщить(Врап.Встроку(Врап.ПоследняяОшибка)); конецпопытки; КонецЦикла; Все проходит. |
|||
266
Новиков
08.07.16
✎
10:31
|
Мда. Вот ипота-то сказочная.
Не вникая даже в суть творящегося, понаблюдаю за тем, в итоге ТС удовлетворится или нет. |
|||
267
Serginio1
08.07.16
✎
10:43
|
Отпаравил на почту DLL с которой у меня все работает NetObjetToIDispatch45.dll
Проверь путь загруженной сборки тип = врап.ПолучитьТип("NetObjectToIDispatch45.GlobalContext1C"); тип=Врап.ТипКакОбъект(тип); assem=тип.Assembly; Сообщить(assem.Location); |
|||
268
Serginio1
08.07.16
✎
10:44
|
(266) А ты вникни, а то не читал, но осуждаю
|
|||
269
Serginio1
08.07.16
✎
11:53
|
Если не получится вышли свою DLL
|
|||
270
DES
08.07.16
✎
12:24
|
С твой, из почты, DLL и на W2008r2 тесты прошли успешно.
|
|||
271
Serginio1
08.07.16
✎
12:34
|
(270) Вышли свою. Посмотрю
|
|||
272
Serginio1
08.07.16
✎
12:36
|
Вернее про какую DLL мы говорим? Я про ServiceEfactura.dll
|
|||
273
DES
08.07.16
✎
12:39
|
я про твое изобретение.
|
|||
274
DES
08.07.16
✎
12:40
|
щас переделываю тест на реале. ща поглядим
|
|||
275
Serginio1
08.07.16
✎
12:45
|
(273) Так в 218 должен быть аналог. Чуть позже добавлю более простое создание Genric типов и обновлю
|
|||
276
DES
08.07.16
✎
12:50
|
(275) ну все тики-так.
получаю PDF от сервиса. Кстати, есть какая-то простая печаталка PDF чтоб из-под 1с8 запускать ? |
|||
277
Serginio1
08.07.16
✎
13:04
|
Я так же буду в Интернете смотреть.
|
|||
278
Serginio1
08.07.16
✎
13:05
|
||||
279
Serginio1
08.07.16
✎
13:07
|
||||
280
oleg_km
08.07.16
✎
13:07
|
(266) Может сделать тоже православным 1Сным способом?
|
|||
281
Serginio1
08.07.16
✎
13:11
|
(280) Ну он не читает. Зачем это ему. Проблема была в старой компоненте NetObjetToIDispatch45.dll и поначалу в старых DLL для подключения к сервису.
|
|||
282
DES
08.07.16
✎
13:11
|
(279) т.е. добавить в мою сборку модуль печати PDF и вызывать его ?
|
|||
283
Новиков
08.07.16
✎
13:19
|
(281) >>Ну он не читает. Зачем это ему.
Конечно не читаю. Зачем мне это? |
|||
284
oleg_km
08.07.16
✎
13:19
|
(282) Там же вроде отдельная сборка.
|
|||
285
DES
08.07.16
✎
13:20
|
отдельная - не комильфо
|
|||
286
Serginio1
08.07.16
✎
13:25
|
(282) Нет там отдельные сборки Spire.Pdf.dll и Spire.License.dll
Не отдельно ты не найдешь |
|||
287
Serginio1
08.07.16
✎
14:07
|
Но можно Собрать проект Visual Studio в один файл с помощью ILMerge
https://habrahabr.ru/post/126089/ |
|||
288
Serginio1
08.07.16
✎
14:14
|
||||
289
DES
08.07.16
✎
14:17
|
ругаются на ILMerge.
А почему я не смогу дописать в классы свою функцию ? |
|||
290
Serginio1
08.07.16
✎
14:20
|
Сможешь только тебе придется добавить эти две библиотеки в проект
|
|||
291
Serginio1
08.07.16
✎
14:54
|
Или можешь использовать командную строку из 1С
http://rsdn.ru/forum/dotnet/6117010.all |
|||
292
Serginio1
08.07.16
✎
15:12
|
||||
293
DES
08.07.16
✎
17:14
|
Благодарствую.
|
|||
294
DES
10.07.16
✎
19:39
|
еще один проблемс, не создается BankAccountRequest
вроде бы однотипно описаны входящие переменные, но эта не создается, может глянешь у себя ? {ОбщийМодуль.EFactura.Модуль(75)}: Ошибка при вызове метода контекста (СоздатьОбъект) Request = Врап.СоздатьОбъект(ПространствоИмен + "BankAccountRequest"); по причине: Произошла исключительная ситуация (NetObjetToIDispatch45): неверный тип ServiceEfactura.ServiceReference.BankAccountRequest |
|||
295
DES
10.07.16
✎
19:42
|
и так тоже
Возврат _Врап.СоздатьОбъект(_Врап.ПолучитьТип("ServiceEfactura.ServiceReference." + _ИмяОбъекта)); по причине: Произошла исключительная ситуация (NetObjetToIDispatch45): неверный тип ServiceEfactura.ServiceReference.BankAccountRequest |
|||
296
Serginio1
10.07.16
✎
20:45
|
(295) У меня тест в 265 прошел. А там и BankAccountRequest.
Смотри пространство имен. |
|||
297
DES
10.07.16
✎
20:55
|
не, разобрался.
обращается к сборке старой, ранее зареганой C:\Program Files\FilesNetObjectToIDispatch2\ServiceEfactura.dll а я указываю C:\Program Files\Common Files\NetObjectToIDispatch.1C\ServiceEfactura.dll Тип = Врап.ПолучитьТипИзСборки(ПространствоИмен + "BankAccountRequest", ФайлСборки.ПолноеИмя); |
|||
298
Serginio1
10.07.16
✎
21:07
|
А как ты ServiceEfactura.dll зарегистрировал?
Регистрировать нужно только NetObjetToIDispatch45.dll |
|||
299
DES
13.07.16
✎
23:19
|
а можно как то подключаться к серверу через прокси ?
(чтобы IP поменять) |
|||
300
Serginio1
14.07.16
✎
00:05
|
||||
301
Serginio1
14.07.16
✎
00:10
|
||||
302
Serginio1
14.07.16
✎
00:12
|
||||
303
DES
14.07.16
✎
01:17
|
какая то фигня получается.
если запрашиваю список накладных - получаю 1 раз, все нормально если запрашиваю повторно - 0 на выходе. хотя если запрашивать конкретную накладную, хоть 100 раз подряд - работает. |
|||
304
Serginio1
14.07.16
✎
07:48
|
Ты соединение закрываешь?
|
|||
305
DES
14.07.16
✎
08:43
|
ну вроде да, буфер сообщения сделал чуть больше 64к
Функция API_eFactura(_ИмяФункции, _ПараметрыФункции, _UserName="", _PassWord="") Экспорт // GetLogs from SIA E-Factura Перем Результат; Перем ФайлВрап, Assembly; Перем ПутьКФайлам, ИмяФайлаСборки, ПространствоИмен; Перем Результат1; Результат = Неопределено; ФайлВрап = "NetObjectToIDispatch45"; Попытка Врап = Новый COMОбъект(ФайлВрап); Врап.ВыводитьСообщениеОбОшибке = Ложь; Assembly = Врап.ТипКакОбъект(Врап.ПолучитьТип(ФайлВрап + ".GlobalContext1C")).Assembly; Исключение Assembly = Неопределено; КонецПопытки; Если НЕ Assembly=Неопределено Тогда ФайлВрап = Новый Файл(Assembly.Location); ПутьКФайлам = ФайлВрап.Путь; ИмяФайлаСборки = "ServiceEfactura.dll"; ПространствоИмен = "ServiceEfactura.ServiceReference."; ИмяФайлаСборки = ПутьКФайлам + ИмяФайлаСборки; ФайлСборки = Новый Файл(ИмяФайлаСборки); Сборка_API_eFactura = ФайлСборки.Существует(); Если Сборка_API_eFactura Тогда Попытка Сборка_API_eFactura = Врап.ПолучитьТипИзСборки(ПространствоИмен + "ServiceClient", ФайлСборки.ПолноеИмя); Исключение Сборка_API_eFactura = Неопределено; КонецПопытки; КонецЕсли; Если Сборка_API_eFactura=Неопределено Тогда // Сообщить("Сервис API eFactura недоступен. Инструкция https://efactura.fisc.md/Help/eFactura_Integration_Guide.pdf"); Возврат Неопределено; Иначе Если ТипЗнч(_ПараметрыФункции)=Тип("Структура") Тогда #Область СlientEFactura UserName = "DES"; PassWord = "MyPass"; Http = "Https"; BasicHttpBinding = Врап.ПолучитьТипИзСборки("System.ServiceModel.Basic" + Http + "Binding", "System.ServiceModel.dll"); Binding = Врап.СоздатьОбъект(BasicHttpBinding, Врап.ПолучитьТип("System.ServiceModel.Basic" + Http + "SecurityMode").TransportWithMessageCredential); Binding.MaxBufferSize = 2097151; Binding.MaxReceivedMessageSize = 2097151; Address = Врап.СоздатьОбъект("System.ServiceModel.EndpointAddress", "https://api-efactura.fisc.md"); Попытка СlientEFactura = Врап.СоздатьОбъект(ПространствоИмен + "ServiceClient", Binding, Address); СlientEFactura.ClientCredentials.UserName.UserName = ?(ПустаяСтрока(_UserName), UserName, _UserName); СlientEFactura.ClientCredentials.UserName.Password = ?(ПустаяСтрока(_Password), PassWord, _Password); Исключение EFactura.ОбработкаОшибкиСlientEFactura(СlientEFactura.ПоследняяОшибка); СlientEFactura = Неопределено; КонецПопытки; #КонецОбласти Если НЕ СlientEFactura=Неопределено Тогда Если _ИмяФункции="Test" Тогда #Область Test Request = "TEST"; Попытка Ответ = СlientEFactura.Test(Request); Исключение Ответ = Неопределено; КонецПопытки; Если Ответ=Неопределено Тогда Результат = Неопределено; Иначе Результат = Новый Структура("RequestId,Status,TimeStamp", Ответ.RequestId, Ответ.Status, Ответ.TimeStamp); КонецЕсли; #КонецОбласти КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Врап.ЗакрытьРесурс(СlientEFactura); КонецЕсли; Возврат Результат; КонецФункции |
|||
306
Serginio1
14.07.16
✎
10:11
|
Наворотил.
Нет у СlientEFactura свойства ПоследняяОшибка; Есть Врап.ПоследняяОшибка . Я уже писал тебе. |
|||
307
DES
14.07.16
✎
10:36
|
ну, ладно, а я закрываю соединение как нужно ?
|
|||
308
Serginio1
14.07.16
✎
10:48
|
Да можно СlientEFactura.Close()
Но Врап.ЗакрытьРесурс(СlientEFactura); универсален Применяя ПолучитьТипИзСборки ты получешь не сборку а тип. ServiceClient= Врап.ПолучитьТипИзСборки(ПространствоИмен + "ServiceClient", ФайлСборки.ПолноеИмя); Который можешь использовать для создания объекта СlientEFactura = Врап.СоздатьОбъект(ServiceClient, Binding, Address); |
|||
309
DES
14.07.16
✎
11:05
|
но так
СlientEFactura = Врап.СоздатьОбъект(ПространствоИмен + "ServiceClient", Binding, Address); тоже срабатывает ? |
|||
310
Serginio1
14.07.16
✎
11:08
|
(309) Срабатывает так как ты уже сборку подгрузил,
Но вариант с СlientEFactura = Врап.СоздатьОбъект(ServiceClient, Binding, Address); Просто быстрее и лаконичнее. |
|||
311
DES
14.07.16
✎
12:05
|
вот в их логах нашел нашел
Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property. что бы это значило ? |
|||
312
Serginio1
14.07.16
✎
12:19
|
https://msdn.microsoft.com/ru-ru/library/system.web.script.serialization.javascriptserializer.maxjsonlength(v=vs.110).aspx
Это скорее всего связано с Задай им по максимуму maxReceivedMessageSize=2147483647; Binding.MaxBufferSize = maxReceivedMessageSize; Binding.MaxReceivedMessageSize = maxReceivedMessageSize; |
|||
313
DES
14.07.16
✎
12:27
|
какая то фигня, чтобы снять данные по сегодняшним ТТН нужно получить их список и по списку (но серии и номеру) дергать содержимое.
но если один раз получил список, то тут же получить еще раз не получается - возвращает список с 0 кол-вом строк. Т.е. следить на новыми ТТН в течении дня не получится. |
|||
314
Serginio1
14.07.16
✎
12:30
|
Ну это в службу поддержки.
|
|||
315
DES
14.07.16
✎
12:44
|
maxReceivedMessageSize=2147483647;
откуда такая цифра ? |
|||
316
DES
14.07.16
✎
14:15
|
начал гонять получение лога
интересная деталь. при некоторых значениях даты и времени выдает пусто например с 14.07.2016 00:00:00 по 14.07.2016 23:59:59 - глючит, а с 14.07.2016 090:00:00 по 14.07.2016 13:30:59 - выдает нормальный лог. может быть дата+время не так передается ? |
|||
317
Serginio1
14.07.16
✎
14:20
|
Фиддлером посмотри.
А это что такое 090:00:00? |
|||
318
Serginio1
14.07.16
✎
14:21
|
Задай вопрос в службу поддержки.
|
|||
319
DES
14.07.16
✎
14:29
|
09:00:00
|
|||
320
DES
14.07.16
✎
14:30
|
ОНО возвращает время так /Date(-62135596800000)/
|
|||
321
Serginio1
14.07.16
✎
14:33
|
В формате JSON. Пиши в службу поддержки
|
|||
322
Serginio1
14.07.16
✎
14:33
|
А ты JSON формируешь?
|
|||
323
Serginio1
14.07.16
✎
14:38
|
Это возвращает тебе в JSON формате. Смотри фиддлером что отправляет
|
|||
324
DES
14.07.16
✎
15:19
|
не, JSON не нужно, у них описаны входные структуры.
вот щас на 14.07.2016 12:09:31 - дает лог а на 14.07.2016 12:09:30 - фиг |
|||
325
DES
14.07.16
✎
15:21
|
такого понятия как служба поддержки у них нет.
я все обзвонил, никто не слышал про API вообще. |
|||
326
Serginio1
14.07.16
✎
15:28
|
Возьми в руки фиддлер и посмотри запрос. Можешь отослать им письмо.
Я без понятия, что и где там у них |
|||
327
DES
14.07.16
✎
22:37
|
у меня такое впечатление, что все связанное с датой - глючит.
я намекаю, что может быть формат даты не соответствует или ломается при передаче через твою примочку?. |
|||
328
Serginio1
14.07.16
✎
22:41
|
Возьми в руки фиддлер
|
|||
329
DES
14.07.16
✎
22:42
|
да там ногу сломишь
|
|||
330
DES
14.07.16
✎
22:52
|
пишет
This is a CONNECT tunnel, through which encrypted HTTPS traffic flows. To view the encrypted sessions inside this tunnel, enable the Tools > Fiddler Options > HTTPS > Decrypt HTTPS traffic option. A SSLv3-compatible ServerHello handshake was found. Fiddler extracted the parameters below. Version: 3.1 (TLS/1.0) SessionID: -skipid- Cipher: TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA [0xC014] CompressionSuite: NO_COMPRESSION [0x00] Extensions: server_name empty renegotiation_info 00 ec_point_formats uncompressed [0x0], ansiX962_compressed_prime [0x1], ansiX962_compressed_char2 [0x2] |
|||
331
tndr
14.07.16
✎
23:02
|
Народ подскажите плиз, как правильно быть в такой ситуации:
Есть несколько версий платформ серверов приложений 8.1, 8.2, и 8.3.5 и 8.3.7 Надо иметь возможность из С# иметь возможность подключаться ко всем 4-м агентам сервера, именно к ним, не к базам, а к самой службе. Нужно это для того чтобы с помощью 8VComConnector-а получать список баз который крутится на каждом из РАгентов. Проблема в том, что для каждой платформы используется свой комконнектор, и свое пространство имен V81,V82,V83 при подключенной к проекту компоненте. Надо сделать так чтобы когда пользователь выбирает платформу, то иницировалось подключение к нужному серверу приложений (это по порту и не сложно), и основное - это понять какой класс комконнектора надо подключать с каким пространством имен. Код примерно такой: V83.COMConnector com1s = new V83.COMConnector(); V83.IServerAgentConnection agent = com1s.ConnectAgent(server); Array clasters = agent.GetClusters(); foreach(V83.IClusterInfo clasterInfo in clasters) ...... И надо чтобы в зависимости от того, какая версия платформы выбрана, V82 менялось на V81 или на V83. Или может какой-то другой подход должен быть? И еще хотел узнать, если например я подключаю к проекту компоненту из релиза 8.2.19.83 на локальном компе, а на сервере есть и этот и допустим 8.2.19.130, V83.IServerAgentConnection agent = com1s.ConnectAgent(server); работать же не будет? |
|||
332
Serginio1
14.07.16
✎
23:02
|
||||
333
DES
14.07.16
✎
23:04
|
вроде как нормально дату лепит, только без Z
система пишет типа 2016-07-14T20:05:11.249Z а мои параметры 2016-07-14T20:05:11 |
|||
334
Serginio1
14.07.16
✎
23:06
|
(331) Для 8.3 не получится
v8: v8: Использование сборок .NET в 1С 7.x и 8.x core83.dll использует текущего процесса |
|||
335
DES
14.07.16
✎
23:57
|
влепил запрос без дат (там можно пустые) - получил все ТТН за все время.
Что-то с датами не то. |
|||
336
Serginio1
15.07.16
✎
00:00
|
Без стороны сервера ты этого не поймешь
|
|||
337
Serginio1
15.07.16
✎
00:01
|
334+ Вернее для каждой 8.X нужен отдельный процесс.
|
|||
338
DES
18.07.16
✎
11:50
|
а как System.ServiceModel.BasicHttpBinding.TextEncoding переделать на windows-1250?
а то передает символы и исправляет в kou-8 |
|||
339
Serginio1
18.07.16
✎
12:01
|
Нет по умолчанию UTF8Encoding.
https://msdn.microsoft.com/ru-ru/library/system.servicemodel.basichttpbinding.textencoding(v=vs.100).aspx Binding.TextEncoding Врап.ПолучитьТип("System.Text.Encoding").GetEncoding(1250); |
|||
340
Serginio1
18.07.16
✎
12:03
|
Просто раз ты кирилицу передаешь, то 1250 тебе точно не подойдет. А у них по умолчанию только значит 1250. Следи затем, что бы кириллицу не передавать
Про GetEncoding https://msdn.microsoft.com/ru-ru/library/wzsz3bk3(v=vs.110).aspx |
|||
341
Serginio1
18.07.16
✎
12:30
|
Или если ы используешь строки то при получении строкового представления используй CultureInfo.InvariantCulture
http://catalog.mista.ru/public/448668/ CultureInfo=Врап.ПолучитьТип("System.Globalization.CultureInfo"); SB.AppendFormat(CultureInfo.InvariantCulture,"{0} {1} {2} {3}",Целое,Дробное,Строка,Дата,0); Сообщить(SB.ToString()); Получаем 55333 66333.44 абвгд 01/26/2016 17:10:05 |
|||
342
Serginio1
18.07.16
✎
12:38
|
Или в 1С используй XMLСтрока
|
|||
343
DES
20.07.16
✎
12:29
|
А еще.
Получаю файл на сервере и сохраняю его под пользователем сервера USR1CV8, в его КаталогВременныхФайлов() file.WriteAllBytes(Результат, Ответ.Result.Content); Но Клиенты же могут не иметь доступа в темпу USR1CV8, как перекинуть файл из темпа сервера в темп клиента? ИЛИ вернуть с сервера не файл, а COMSafaArrray и уже на клиенте создавать файл? ( COMSafaArrray - содержит PDF) |
|||
344
Serginio1
20.07.16
✎
12:42
|
Я тебе уже писал
Convert=Врап.ПолучитьТип("System.Convert"); ДД=Base64Значение(Convert.ToBase64String(Ответ.Result.Content)) |
|||
345
Serginio1
20.07.16
✎
12:44
|
А Двоичные Данные возвращай на клиента
|
|||
346
DES
20.07.16
✎
13:20
|
т.е. ДД - это двоичные данные?
|
|||
347
Serginio1
20.07.16
✎
14:11
|
Глобальный контекст (Global context)
Base64Значение (Base64Value) Синтаксис: Base64Значение(<Строка>) Параметры: <Строка> (обязательный) Тип: Строка. Строка, закодированная по алгоритму base64. Возвращаемое значение: Тип: ДвоичныеДанные. Описание: Получает из строки закодированной по алгоритму base64 двоичные данные. |
|||
348
DES
11.08.16
✎
17:12
|
можно ли 1с8.ехе заставить понимать файл 1с8.ехе.config при
Прокси = WSСсылки.eFactura.СоздатьWSПрокси(targetNamespace, name, Binding,,,Новый ЗащищенноеСоединениеOpenSSL(),,Истина); WSПараметр.message = "TEST"; Прокси.Пользователь = "DES"; Прокси.Прокси.Пользователь = Прокси.Пользователь; Прокси.Пароль = "MyPass"; Прокси.Прокси.Пароль = Прокси.Пароль; Результат = Прокси.Test(WSПараметр); // тут чтобы понимала что я хочу TransportWithMessageCredential //<binding name="BasicHttpBinding_IService"> //<security mode="TransportWithMessageCredential" /> |
|||
349
Serginio1
11.08.16
✎
17:39
|
Ты не сюда пиши, а в 1С. А нам сообщи
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |