Имя: Пароль:
1C
 
Простой пример интеграции 1С с API для начинающего
0 ac13
 
18.09.18
17:08
У кого-нибудь есть или кто-нибудь знает где можно посмотреть простые наглядные примеры интеграции 1С с API, чтобы понять логику как это работает для начинающего или для дебила.
1 Вафель
 
18.09.18
17:12
какое именно апи? рест апи? или соап?
2 Dmitry1c
 
18.09.18
17:13
Срочно дайте человеку какой-нибудь API
3 ac13
 
18.09.18
17:15
например soap
4 s03
 
18.09.18
17:15
(0) API - Application Programming Interface, программный интерфейс приложения. Поэтому для каждого приложения будет свой API. Тебе пример интеграции 1С и чего именно надо?
5 ac13
 
18.09.18
17:18
(4) Да, я понимаю что у каждого приложения свой API. Мне нужен пример чего угодно, где можно увидеть и понять как это работает и с чего начинать.
6 Asmody
 
18.09.18
17:18
Вот тут написано про всякие API http://v8.1c.ru/metod/books/book.jsp?id=288
7 ac13
 
18.09.18
17:20
(6) спасибо!
8 Вафель
 
18.09.18
17:22
хочешь потренироваться - пиши клиента для реддит
https://www.reddit.com/dev/api/
9 ac13
 
18.09.18
17:32
(8) спасибо) теперь нужно понять с чего начинать в 1с
10 PR
 
18.09.18
17:38
11 Cyberhawk
 
18.09.18
17:49
Начни с онлайн-сервиса "морфер" и использования его АПИ в 1С
12 Cyberhawk
 
18.09.18
17:54
Хотя эти всякие WS могут показаться сложными. Лучше начни с какого-нибудь АПИ на хттп-сервисах. Например, Манго.
13 d4rkmesa
 
18.09.18
20:04
(0) Классический пример
https://habr.com/post/148658/
Ну или можно взять сервис проверки контрагента по ИНН/КПП.
14 d4rkmesa
 
18.09.18
20:06
Еще с геокодером Яндекса побаловаться интересно:
https://tech.yandex.ru/maps/geocoder/
15 DES
 
18.09.18
20:43
(14) а есть чего нибудь примерного в 1с8  по этой темке?
16 kumena
 
18.09.18
20:58
(15) С каких то движков 8.3 (а может и раньше, я не следил) в структуре конфигурации появились http сервисы.
Можно сделать базу с вебсервисом, который будет допустим принимать текст запроса и в xml результат возрвращать. Опубликуй её на вебсервере вот тебе и вебсервис, который будет отвечать, api правда будет целиком на 1с, но нам же надо чтобы все было на 1с.
17 VS-1976
 
18.09.18
23:53
(16) Это и в 8.1 было
А вообще полезная штука Яндекс диск, попробуй реализовать, там не сложно, единственно нужно генерировать ключ + права дать...
18 Чайник1983
 
19.09.18
03:19
Очень хорошая тема тоже интересно)
19 ac13
 
19.09.18
08:52
(10), (11), (12) спасибо
(13) отлично, спасибо))
(14) благодарю
попробую еще книженцию (6) по 1с приобрести
кто-нибудь учился по учебникам, есть в них толк?
20 bolobol
 
19.09.18
09:19
(19) Я учился. Хорошо превращают неосознанное незнание в осознанное незнание. Не более того.
21 ac13
 
19.09.18
09:43
(20) вот и мне изучение теории всегда казалось сомнительным занятием. эффективней всего разбирать конкретные решенные примеры на практике, но не всегда получается найти то, что нужно или более менее доступно для моего понимания
22 yavasya
 
19.09.18
10:03
(21) делай интеграцию HTTP . интеграция по api что в ней нового ? выплюнет набор текстовых полей которые нужно разобрать
23 yavasya
 
19.09.18
10:04
24 kumena
 
19.09.18
10:05
> Это и в 8.1 было

http появилось только в 8.3, и даже не с начала 8.3
25 yavasya
 
19.09.18
10:07
(16) так оно может стучаться к веб сайтам, можно с любого веб сайта стучаться к 1С и получать rest ответ и распознавать как массив.
26 ac13
 
19.09.18
10:10
(23) спасибо за ссылку
27 yavasya
 
19.09.18
10:25
Функция ПолучитьБанковскиеВыпискиПолучитьБанковскиеВыписки(Запрос)
    
    //Ответ = Новый HTTPСервисОтвет(200);
    //Ответ.УстановитьТелоИзСтроки("Hello");
    //Возврат Ответ;
    УстановитьПривилегированныйРежим(Истина);
    
    date1           = Запрос.ПараметрыURL["date1"];
    date2           = Запрос.ПараметрыURL["date2"];
    guid            = Запрос.ПараметрыURL["guid"];
    inn             = Запрос.ПараметрыURL["inn"];
    kpp             = Запрос.ПараметрыURL["kpp"];
    NameProcedure   = Запрос.ПараметрыURL["NameProcedure"];
    NumberAccount   = Запрос.ПараметрыURL["NumberAccount"];
    UIDaccount      = Запрос.ПараметрыURL["UIDaccount"];


    Текст64 = XMLСтрока(Новый ХранилищеЗначения(ТаблицаЗначений, Новый СжатиеДанных(9)));
    
    HTTPОтвет = Новый HTTPСервисОтвет(200);
    
    HTTPОтвет.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
    HTTPОтвет.УстановитьТелоИзСтроки(Текст64);
    
    Возврат HTTPОтвет;

Это база куда подключаемся

Откуда подключаемся

    ДатаНачалаСтрокой = Преобразовать_в_формат_выгрузки(ДатаНачала);
    
    ДатаОкончанияСтрокой = Преобразовать_в_формат_выгрузки(ДатаОкончания);
    
    АдресСтраницы = "имя базы/hs/bank/"+ДатаНачалаСтрокой+"/"+ ДатаОкончанияСтрокой + "/" + Организация.УникальныйИдентификатор()
    + "/" + Организация.ИНН + "/" + Организация.КПП + "/" + ИмяДокумента + "/" + РасчетныйСчет.НомерСчета + "/" + РасчетныйСчет.УникальныйИдентификатор();
    
    Хост = "имя хоста";        
    
    HTTPСоединение  = новый HTTPСоединение(Хост);
    
    HTTPЗапрос  = Новый HTTPЗапрос(АдресСтраницы);        
    HTTPЗапрос.Заголовки.Вставить("Authorization", "Basic " + ЗакодироватьЛогинПароль("имя пользователя в базе подключения", "пароль"));
    
    Результат =  HTTPСоединение.Получить(HTTPЗапрос);
    
    КодСостояния = "код состояния - " + Результат.КодСостояния;
    ОтветHTTPСтрока = Результат.ПолучитьТелоКакСтроку();
    
    ВозвращаемоеЗначение = XMLЗначение(Тип("ХранилищеЗначения"),ОтветHTTPСтрока);
    
    Возврат ВозвращаемоеЗначение.Получить();    

Функция ЗакодироватьЛогинПароль(Логин, Пароль)
    
    ВременныйФайл = ПолучитьИмяВременногоФайла();
    
    Запись = Новый ЗаписьТекста(ВременныйФайл);
    Запись.Записать(Логин + ":" + Пароль);
    Запись.Закрыть();
    
    ДвДанные = Новый ДвоичныеДанные(ВременныйФайл);
    Результат = Base64Строка(ДвДанные);
    
    УдалитьФайлы(ВременныйФайл);
    
    Возврат Сред(Результат, 5);    
    
КонецФункции
28 yavasya
 
19.09.18
10:27
получил ТЗ закодировал в строку и обратно раскодировал в ТЗ
29 1c-kind
 
19.09.18
10:45
(6) Cпасибо за ссылку! Заказал.
30 d4rkmesa
 
19.09.18
10:58
(15) Есть несложный кусок кода, что-то посложнее не нашел сходу. Под 8.2, на 8.3 можно без WinHttp, вроде.

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
        WinHttp.Option(2, "utf-8");
        WinHttp.Open("POST", "https://geocode-maps.yandex.ru/1.x/",0);
        WinHttp.setRequestHeader("Content-Language", "ru");
        WinHttp.setRequestHeader("Content-Charset", "utf-8");
        WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
        ПараметрыПОСТ = "geocode=" + КодированнаяСтрокаАдреса + "&key=" + ЯндексAPI;
        
        ИспользоватьПрокси = ПараметрыСеанса.новаТекущийПользователь.ИспользоватьПрокси;
        Если ИспользоватьПрокси Тогда
            WinHttp.SetProxy(2, ПараметрыСеанса.новаТекущийПользователь.ПроксиАдрес);
            WinHttp.SetCredentials(ПараметрыСеанса.новаТекущийПользователь.ПроксиПользователь, ПараметрыСеанса.новаТекущийПользователь.ПроксиПароль, 1);
        КонецЕсли;
        
        WinHttp.Send(ПараметрыПОСТ);
        Текст = Новый ТекстовыйДокумент;
        Текст.УстановитьТипФайла(КодировкаТекста.UTF8);
        Текст.УстановитьТекст(WinHttp.ResponseText());
        Текст.Записать(КаталогВременныхФайлов()+ВременныйФайл);
31 ac13
 
19.09.18
11:08
(27) (30) спасибо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший