Имя: Пароль:
1C
1С v8
Практическое применение 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С. А нам сообщи
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший