Как обратиться по API к классу waContact? Есть решение

Задача, переносить контрагентов из 1С. Сделал внешнею обработку получаю токен для доступа к API, вопрос у какого приложения есть доступ к этому классу?

1 ответ

  • 2
    Михаил Ушенин Webasyst 21 сентября 2018 08:52 # Решение

    Скорее всего, придётся писать собственное приложение с нужными вам API-методами для доступа к этому классу. Логично было бы ожидать этого от приложения "Контакты", но в нём API (пока?) нет. Если речь об интернет-магазине, то вместо отдельного приложения  можно для Shop-Script написать плагин с API-подобным фронтендом.

    • +1
      enso_studio@mail.ru enso_studio@mail.ru 21 сентября 2018 11:35 #

      можно написать плагин с API

    • +1

      А кто разработчик приложения "Контакты" ? Добавить строчку что бы этот метод был доступен из API, пару строк, странно что этого до сих пор нет.

      • +2
        Михаил Ушенин Михаил Ушенин Webasyst 21 сентября 2018 15:24 #

        Возможно, это и будет сделано, но не так скоро, как вам, вероятно, нужно. Если нужно решение уже сейчас, имеет смысл доработать собственное решение.

      • +2
        enso_studio@mail.ru enso_studio@mail.ru 22 сентября 2018 10:58 #

        помоги себе сам https://developers.webasyst.ru...

        • +1

          Вы сможете помочь реализвать это? Дайте свои кординаты в Бирже.

          https://experts.webasyst.ru/28...

          • +1
            enso_studio@mail.ru enso_studio@mail.ru 25 сентября 2018 13:21 #

            Написал Вам на бирже. Если опыт коддинга на php есть, то проще Вам самому сделать - если будут вопросы, то тут подскажут.

            • +1

              Сайт в Облаке. Консольные команды недоступны. 

              • +1
                enso_studio@mail.ru enso_studio@mail.ru 25 сентября 2018 13:38 #

                Если сайт в облаке, то Вам остается только колхозить через smarty и на бирже Вам никто не поможет.

                • +1

                  Почему? Человек может разработать приложения , опубликовать его, а мы установим? Не так ли?

                  • +1
                    enso_studio@mail.ru enso_studio@mail.ru 25 сентября 2018 14:09 #

                    публикация занимает пару недель.

                    по поводу колхоза со smarty:

                    создаем скрытую страницу и добавляем на нее  что-то вроде:

                    {if $wa->get('access_token') == 'xxx'}
                        {$contact = $wa->contact($wa->get('id'))}
                        {$response = []}
                        {$method = $wa->get('method', 'get')}
                        
                        {if $method == 'get'}
                            {$field = $wa->get('field')}
                            {$response[$field] = $contact->get($field)}
                        {elseif $method == 'set'}
                            ...
                        {/if}
                    
                        {json_encode($response)}
                    {/if}

                    и вызываем страницу с заголовком 

                    "X-Requested-With: XMLHttpRequest" чтобы wa вернул только контент страницы:

                    site.ru/?access_token=xxx&id=1&method=get&field=name

                    • +1

                      Все так просто? Сйчас попробую.

                    • +1

                      И так, есть пару вопросов. Пишу в 1С:

                      Соединение = Новый HTTPСоединение("YYYY.ru");

                      Запрос = Новый HTTPЗапрос("/XXX/?access_token=123456&id=123&method=get&field=name");
                      Запрос.Заголовки.Вставить("X-Requested-With: XMLHttpRequest");
                      Ответ = Соединение.Получить(Запрос);
                      Если Ответ.КодСостояния = 200 Тогда
                      Сообщить(Ответ.ПолучитьТелоКакСтроку()); 
                      Иначе
                      Сообщить("Код ответа: "+Ответ.КодСостояния); 
                      КонецЕсли;

                      Всегда возвращает 404 ? XXX страница где размещен SMARTY. Там же должен быть и размещен и токен? Что такое ID=? Еще сомневаюсь в правильности параметра заголовок X-Requested-With: XMLHttpRequest. Как проверить запрос? Или надо XMLHTTP запрос отправлять?

                      • +1
                        enso_studio@mail.ru enso_studio@mail.ru 26 сентября 2018 16:22 #

                        я с 1с не знаком.

                        заголовок верный:

                        class waRequest
                        {
                            public static function isXMLHttpRequest()
                            {
                                return self::server('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest';
                            }
                        }

                        токен я добавил просто для защиты от вызова кода левыми людьми или ботами.

                        Серьезно не понятно что передается в id?

                        {$contact = $wa->contact($wa->get('id'))} 
                        • +1

                          Спасибо огромное.  Для всех остальных вдруг кто следит за темой. 

                          Да и еще шаблон page.html нужно изменить:

                          {if waRequest::isXMLHttpRequest()}   
                          {$page.content|strip} {else}   
                          {* старый код page.html *} 
                          {/if} 
                          В обработке 1С. Это выглядит так. 
                          Соединение = Новый HTTPСоединение("XXXX.ru"); 
                          Запрос = Новый HTTPЗапрос("/YYY/?access_token=xxx&contact_id=123&method=get&field=name"); Запрос.Заголовки.Вставить("X-Requested-With","XMLHttpRequest"); 
                          Ответ = Соединение.Получить(Запрос);    
                               Если Ответ.КодСостояния = 200 Тогда        Сообщить(Ответ.ПолучитьТелоКакСтроку());    
                               Иначе        Сообщить("Код ответа: "+Ответ.КодСостояния);     КонецЕсли;


Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите