Программист 1с
twitter email rss
  • Home
  • Полезности
    • Мобильное приложение курьера
    • MailChimp + УТ 11.
    • 1с-sms
    • Pharma-MPD
    • Зуботехническая лаборатория
  • Блог
  • Партнеры
  • Команда
    • Услуги
    • Опыт
    • Отзывы
    • Контакты
  • Поддержка
    • Инструкция
    • Redmine






Столкнулся с выгрузкой ТТН в сервис “Новая Почта”. В рамках данного поста хочу поделиться обработкой – демонстрацией того, как можно работать с API сервиса.

Ознакомится с возможностями API можно по ссылке, но есть одно “но” — описание функций доступно только для зарегистрированных пользователей.

Для обращения к API сервиса необходим ключ, который можно получить на странице описания API. Работа с API  сервиса заключается в отправке XML по адресу http://orders.novaposhta.ua/xml.php.

Для отправки запроса используется СОМ-объект «Microsoft.XMLHTTP». Ответ от сервиса разбирается методом ПрочитатьResponseTextXML() и формируется ДеревоЗначений для удобного обхода результата. Такой же подход использован был в интеграции с MailChimp и выгрузке табличного документа в Google таблицу.

В обработке реализованы функции:

1. Загрузка списка представительств.

2. Выгрузка заказа в сервис “Новая почта”.

3. Отслеживание текущего состояние заказа по его номеру.

4. Формирование печатной формы заказа с помощью API.

List
Print
SendOrder
Status

Обработку можно скачать тут:

  NewPostAPIDemo.epf (15,9 KiB, 6 928 скачиваний)

  NewPostAPIDemo_XMLHTTP.epf (15,8 KiB, 4 335 скачиваний)

UPD1: Обработка работает через стандартный объект платформы HTTPСоединение.

Похожие записи:

  1. Новая почта. Работа с реестрами.
  2. Работаем с полигоном yandex-карт
  3. Внутренняя почта, обсуждение объектов базы 1с
  4. Нечеткий поиск спешит на помощь. Работаем в web-клиенте.
  • Головаченко Діма

    Молодець, що розвиваєшся. І круто, що веб-сервіси теж розвивають своє АРІ.
    Так тримати!!!

  • Дмитрий Онацко

    радует, что начинают пользоваться )

    • Андрей Данилюк

       Сервис со стороны Новой Почты действительно нужный, молодцы что запустили.

  • Андрей Бурьян

    А вот за это действительно огромное спасибо! Все никак не мог придумать как уйти от ошибок водителей.

    • Андрей Данилюк

      Пожалуйста. Рад что оказалось полезным.

  • Андрей Бурьян

    API-ключ есть, все заполняю, а заказ не выгружается. Ответ приходит «Non-XML object!!»

    • Андрей Данилюк

      Все поля заказа заполнены? Места в заказе тоже заполнены? Можете выслать скриншот заполненного мне на мыло, постараюсь разобраться сегодня.

      • Андрей Бурьян

        Нашел баг. Если в названии отправителя — получателя есть кавычки, то выдает такую ошибку. Скорее всего эта же ошибка будет и во всех строковых значениях.

        • Андрей Данилюк

           Спасибо за найденную ошибку. Исправил. Обработку обновил, можете скачать новую.

  • ValeriyGourov

    А меня сильно интересует, почему используется объект «Microsoft.XMLHTTP»? Почему не используется штатный метод HTTPСоединение.ОтправитьДляОбработки()? Ведь если сервер 1С буден на Линуксе, то, как я понимаю, объект «Microsoft.XMLHTTP» будет невозможно использовать.

    • Андрей Бурьян

      Я кстати пробовал переписать на НТТР соединение, отправлял файл xml, а в ответ приходит пустой файл. Может это особенности настройки новой почты.

      • ValeriyGourov

        У меня работал вот такой код (публикую без всяких дополнительных проверок):

        АдресСервераОнлайнПроверки = «orders.novaposhta.ua»;РесурсНаСервере = «/xml.php»;ИмяПользователя = «Имя»;Пароль = «Пароль»;

        ИмяФайлаЗапроса = «D:TempИмяФайлаЗапроса.xml»;ТекстЗапроса.Записать(ИмяФайлаЗапроса); // ТекстЗапроса — текстовый документ.

        Соединение = Новый HTTPСоединение(АдресСервераОнлайнПроверки,, ИмяПользователя, Пароль);

        ФайлРезультата = «D:TempФайлРезультата.xml»;Соединение.ОтправитьДляОбработки(ИмяФайлаЗапроса, РесурсНаСервере, ФайлРезультата);Соединение = Неопределено;

        ОтветСервера.Прочитать(ФайлРезультата); // ОтветСервера — текстовый документ.

        • Андрей Данилюк

           Готовлю обновление под работу со стандартным объектом платформы HTTPСоединение

  • Big_ooo

    Добрый день! Большое спасибо за обработку! А вы не могли бы выложить первоначальный вариант с Microsoft.XMLHTTP. Заранее спасибо!

    • Андрей Данилюк

       Добавил. Появился еще один файл для загрузки.

  • Kella_sky

    Обработка совместима только с версией 8.2?

    • Андрей Данилюк

       Да. Обработка написана на 8.2 Управляемое приложение.

      • Евгений

        1с 8.2 (8.2.13.219), УТ 2.3 (2.3.3.4)
        Обработка не запускается. В конфигураторе в свойствах флаг «Управляемые формы в обычном приложении» стоит.
        Не подскажете в чём проблема?

        • Андрей Данилюк

          Трудно так понять. Что именно «не запускается»? Ошибку выдает какую-то?

  • Андрей Данилюк

    На данный момент замечена проблема работы с API: после выгрузки ТТН не считается стоимость доставки. Невозможно распечатать декларацию (нет стоимости доставки).Разработчики не могут сказать как запустить ТТН на расчет стоимости доставки программно. Печально. 

  • Стас Паршин

    @DanilaDru:disqus , а список представительств, которые отдает Новая Почта, актуальный? Соответствует вот этому:
    http://novaposhta.ua/frontend/brunchoffices?lang=ukr ?

    • Андрей Данилюк

      Список представительств не прописан жестко в обработке. Обработка берет его из АПИ Новой почты online. Следовательно если Новая почта научила отдавать эти представительства в своем API, значить они появятся и в обработке.

      • Стас Паршин

        Есть большие сомнения в его актуальности. Если адреса на русском, скорее всего отдает статичный «снимок» БД энной давности. Пример, их карта отделений:
        http://novaposhta.ua/frontend/nearest

        Соответственно, вся эта катавасия становится неюзабельной.

        • Андрей Данилюк

          Стас, к сожалению не могу сопоставить результаты и ответить на Ваш вопрос. Думаю лучше его озвучить разработчикам API Новая Почта.

        • Дмитрий Онацко

          Актуальный список. Не статичный снимок 🙂

          • Андрей Данилюк

            Дмитрий, спасибо за уточнение.

            А как быть с пакетным выводом на печать документов. Что-то будет происходить в этом направлении? Я не клиент сервиса, наверное поэтому мои письма на webmaster@ остаются без ответа.

  • SV

    При выборе отделения выдает ошибку:
    Неизвестное имя формы. Имя: «ВнешняяОбработка.NewPostAPI.Форма.ФормаВыбораОтделения»

    • Андрей Данилюк

      Какая версия платформы, под каким клиентом запускаете ?

  • Андрей Бурьян

    В последнее время при печати ТТН вылазит «ошибка сценария Internet Explorer».

  • Юра

    Где сейчас ключ получают? Походу прибрали отсюда _http://orders.novaposhta.ua/api.php?todo=api_form
    15 мин на расчёт стоимости так и осталось 🙂 Бугага, нигде в доставочных службах не видел такого прикола

    • Андрей Данилюк

      Юрий, к сожалению элементы для получения ключей пропали в личном кабинете «Новой Почты». К службе поддержки достучаться не удалось.

      • Юра

        А старые ключи тоже не работают? Я уже было порадовался — какая продвинутая служба доставки, даже есть АПИ 🙂 А нет, обычный отстойный украинский сервис. Андрей, не знаешь ли нормальную доставочную службу с нормальным апи? Здесь в Украине

        • Андрей Данилюк

          Старые ключи работают.
          Анализ других служб доставки показал отсутствие АПИ как такового. Юрий, я не могу давать комментарии о качестве сервиса. Де-факто очень много интернет-магазинов пользуется услугами «Новой почты». По поводу АПИ и техподдержки думаю это проблема роста. Вот волна предновогодних доставок пройдет, может займутся решением проблем.

          Альтернатив не знаю. Узнаете — напишите, интересно будет посмотреть.

          • Анастасия

            И все-таки, если кто знает где теперь найти ключ — поделитесь, ибо их поддержка в этом плане особо не радует.

          • Андрей Данилюк

            Последние клиенты по интеграции получали ключи от поддержки «Новой почты».

  • Юра

    Большое спасибо за обработку.

    Подскажите, пожалуйста, как по аналогии с печатью ТТН по ссылке «http://orders.novaposhta.ua/pformn.php?o=» + НомерЗаказаПечать + «&num_copy=1&token=» + Объект.АПИКлюч получить ссылку для печати маркировки?

    • Андрей Данилюк

      для печати маркировок надо собрать адрес так:
      http://orders.novaposhta.ua/print_formm.php?o=НомерЗаказа&token=КлючAPI

      • Юра

        Благодарю, а как самому дойти до этого? ))

        • Андрей Данилюк

          Эта информация доступна в личном кабинете на сервисе Новой почты.
          http://danila.org.ua/goto/http://orders.novaposhta.ua/api.php?todo=api_form

          Все можно черпать от туда.

  • Alex Kozak

    Добрий день. Обробку підтягнув. Працює правильно, єдине, що не вистачає, так це «зворотня доставка»

  • Artem Fedyai

    ИначеЕсли ДеревоXML.Строки[0].Строки[0].ЗначениеXMLЭлементаДанных = «4» Тогда
    Возврат «Груз еще не получен»;

    Опечатка. Таки получен.

    • Андрей Данилюк

      Спасибо. Действительно получен. По документации API: «4 — груз получен». В планируемом обновлении это будет учтено, спасибо.

  • Евгений

    Где мне взять ключ для API?

    • Андрей Данилюк

      Раньше он был доступен в личном кабинете. Сейчас, насколько мне известно, его получают у менеджеров «Новой почты»

      • Евгений

        Спасибо

  • Alexey Shamarin

    Обработка отличная. Есть один вопрос. Можно как-то сделать, чтобы печатались две декларации на лист (одна под одной)?

  • Alexey Shamarin

    Почемуто первый комментарий не прошёл. Вопрос. Можно ли как-то сделать печать двух деклараций на лист одна под одной. Или самому никак и только общаться с Новой почтой, в надежде, что они сами сделают?

    • Андрей Данилюк

      Я посылал на Новую почту данное пожелание по API. Ответа не было.

      Если делать самому, то это надо получать html-документ и склеивать их. Делал через форматированный документ, который появился в 8.2, но качество результата плохое (поползло оформление)

      • Alexey Shamarin

        Ага. В любом случае спасибо за обработку. Очень помогла.

        • Андрей Данилюк

          Рад что наработки оказались полезными.

  • Віталій Подоба

    Спасибо за прекрасный пример по работе с API новой почты. И как уже к специалисту есть небольшой вопрос. Не знаете, дает ли Новая Почта возможность как-то получать список измененных / новый / удаленных отделений за определенный период? А то загружать каждый раз их список как-то не очень. Хотелось бы создать иерархический справочник с отделениями, который бы просто периодически обновлялся. Конечно это можно сделать выгружая каждый раз все отделения и проводя анализ и сравнения, но это «немного» не рационально.

    • Андрей Данилюк

      Спасибо за отзыв.
      Насколько мне известно, то есть просто список отделений. Таких отборов, которые Вы описали, в API Новой почты я не нашел.
      Можете попробовать написать им в техподдержку (правда я не всегда получал от них ответ, может у Вас будет лучше с откликом)

      • Віталій Подоба

        Да я тоже не находил и написал им, пока молчат, что печально. Если вдруг отпишут и такой способ есть то поделюсь =)

        • Андрей Данилюк

          Спасибо

  • Игорь Остапчук

    скачал две обработки. в 1С (8.2 УТ) делаю файлоткрыть…. ничего не происходит… как с этими файлами работать?

    • Андрей Данилюк

      Обработка написана под управляемое приложение. Проверьте разрешен ли у вас запуск управляемых форм в конфигурации, с которой вы работаете.

  • Юра

    Помогите получить API ключ, зарегистрировался на сайте, а там пишется, что получить его можно у менеджера. Позвонил в отдел лояльности, мне ответили усталым голосом, что мы его дает клиентам чей оборот более 10 тыс грн в мес. на доставке…

    • Андрей Данилюк

      Я не сотрудник Новой почты и никак не влияю на механизм выдачи API ключей клиентам. Я не смогу помочь вам в этом вопросе.

      • Юра

        ну это я понял, просто может кто-то поможет в этом вопросе

  • Евгений

    Как можно сделать чтобы эта обработка работала в продажах клиента, чтобы автоматом вытягивала данные клиента из документов продаж. И добавьте пожалуйста обратную доставку

    • Андрей Данилюк

      Данная обработка представлена для демонстрации возможностей интеграции. Чтобы она начала работать с документами Вашей конфигурации надо дописывать Вашу конфигурацию.

  • Aniana

    А почему не получается скачать обработку?(( Спасибо!

    • Андрей Данилюк

      Попробуйте нажать на ссылке правой кнопкой мыши и выбрать пункт меню «Сохранить как».

  • Александр

    Здравствуйте. Успешно «встроил» Вашу обработку в «УТ» в «ЗаказКлиента». Есть несколько вопросов:
    1. возможно ли как-либо расчитать «объемный вес», или это все зависит от разработчиков НовойПочты?
    2. у Вас в примерах (скрин-шотах) заполняется «крестиком» «Готівковий розрахунок». Откуда берутся данные для заполнения этого поля, я заполнял все поля, у меня оно не заполняется.
    3. Возможно ли как-нибудь выводить на печать 2 накладные на 1м листе? (читал комменты ниже, Вы писали что это нужно у НовойПочты спрашивать, или «склеивать» HTMLДокумент) не появилось другого решения, т.к. комментарий годичной давности.
    Заранее спасибо за ответы!

    • Андрей Данилюк

      Добрый день, Александр. По пунктам Ваших вопросов:
      1. Объёмный вес зависит от Новой почты. В API я такой возможности не встречал. В Интернете гуляет такая формула: (Длина * Ширина * Высота) /4000. Как по мне она может быть использована в качестве справочной информации для проверки расчёта на стороне Новой почты.
      2. Используйте параметр pay_type (1 — Наличный; 2 — Безналичный) во время создания ТТН через API
      3. Такой возможности в API не появилось. Новая почта на просьбу о возможности передачи в pformn.php нескольких номеров ТТН так ничего и не ответила.

      • Александр

        Если кому интересно вопрос по 2м накладным на 1м листе все же решается! Нужно просто передать «&num_copy=2».

  • Иван

    Здравствуйте. Спасибо за обработку.
    Успешно использую в нескольких конфигурациях. У меня вопрос относительно
    реализации ситуации «наложенного платежа». Возможно ли реализовать? Если да, то как?

    Заранее спасибо за ответ.

    • Андрей Данилюк

      По-моему это решается договорами Клиента и Службы доставки.

      • Иван

        Возможно я неправильно выразился, меня интересует программная реализация в 1с данного механизма. Есть ли документация по формированию сообщений на строну сервера 1с?

        • Андрей Данилюк

          Вот документация API Новой Почты: http://novaposhta.ua/description_api

          • Иван

            С этим я уже ознакомился, ничего в помощь себе я не нашел 🙁

    • Иван

      Я решил свою задачу. Возможно кому-то пригодиться:

      Для реализации функции наложенный платеж используются теги redelivery_type=2, redelivery_payment_payer где вы указываете кто платит за услугу и delivery_in_out где вы указываете сумму — это для обратной доставки денег на отделение. Если нужно обратная доставка денег на счет, то вы указываете в теге delivery_amount сумму.

      • Андрей Данилюк

        Спасибо за информацию. То есть все решается совокупностью параметров доставки.
        20 окт. 2014 г. 20:22 пользователь «Disqus» написал:

  • loocator

    Ошибка при вызове метода контекста (Прочитать)

    Пока XMLДокумент.Прочитать() Цикл

    по причине:

    Ошибка разбора XML: — [1,1]

    Фатальная ошибка:

    Document is empty

    • Андрей Данилюк

      Какая последовательность действий приводит к такому поведению?
      Вы можете отловить отправляемый на Новую почту запрос в конфигураторе 1с ?

      • loocator

        нажатие на кнопку «Обновить» в списке отделений 🙂
        Ща отловлю конечно

        • Андрей Данилюк

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

          • loocator

            вот и ответ: 400 user is not isset.

            Почитаю доки, может нужно авторизоваться дополнительно?

          • Андрей Данилюк

            Скачал обработку NewPostAPIDemo.epf прописал апи-ключ, список отделений обновился. Может временные трудности на стороне Новой почты.
            Никакой авторизации дополнительное не надо. Проверьте актуальность вашего АПИ-ключа.

          • loocator

            сегодня сгенерировал новый

          • loocator

            может потому, что ключ сгенерирован в разделе API 2.0?

          • Андрей Данилюк

            Да, может быть. Мы во время интеграции используем апи-ключ, который отправляют менеджеры по договору. Ключи сгенерированные в личном кабинете не используем.

      • loocator

        парсер MSXML какой-то нужен в системе? Может его нет?…

      • loocator

        09465ee******************aaf882b

  • Игорь

    Кто подскажет, почему когда выбрать redelivery_type=2 ТТН не выгружается, а когда redelivery_type=1 выгружается, в чем проблема 1С?

    • Андрей Данилюк

      http://novaposhta.ua/api_creating_ttn

      посмотрите пожалуйста в описании и сравните с тем какая совокупность параметров заказа у вас получается.

      • Игорь

        сравнил, оказалось если сумма превышает больше 1000тыс. ТТН не выгружается,если меньше выгружается — это как понять?!

        • Андрей Данилюк

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

          • Игорь

            Понял,спасибо

  • Паша

    Есть ли в планах выпуск модуля для работы с API 2.0?

    • Андрей Данилюк

      Судя по информации техподдержки Новой почты есть время до февраля 2015-го года. Обновление клиентов планируется в середине января.

  • Александр

    Добрый день! перестала работать обработка по «интеграции с Новой почтой» ввожу ключ и ничего не получается сделать, генерировал новый ключ уже много раз, пишет «Фатальная ошибка: Document is empty» Поступила информация от клиента что со стороны «новой почты» переделали функционал и теперь используют формат json. Так ли это? или проблема в чем-либо другом? Заранее спасибо за ответы.

    • Андрей Данилюк

      Добрый день. Судя по тому что вы можете генерировать ключ речь идёт про новый личный кабинет , который работает по апи версии 2.0. Данная обработка не позволяет работать с апи данной версии. Сроки обновления пока озвучить не готов.

  • Андрій Берест

    скачав Вашу обробку запускаю але ніічого не відкривається. у мене утп 8,2

    • Андрей Данилюк

      Добрый день.
      Обработка написана под управляемый интерфейс. В Вашем случае конфигурация не имеет управляемого интерфейса и работает в толстом клиента. Этим и объясняется такое поведение.

  • Александр

    Всем добрый день!

    Помогите с вопросом, я сделал обработку по созданию ЕН через xml.
    Вопрос касательно непосредственного создания ЕН — там неоходимо указывать ref отправителя и получателя.
    Я так понимаю что перед тем как создать ЕН необходимо в базу новой почты добавить запросом покупателя и отправителя — получив тем самым их ref и потом их вставлять в эти поля?

    Нет способа чтобы не создавать предварительно покупателя и отправителя — а просто отправлять ФИО и т.д.?

    Заранее благодарен!

    • Андрей Данилюк

      Добрый день.

      Вы писали:
      Нет способа чтобы не создавать предварительно покупателя и отправителя — а просто отправлять ФИО и т.д.?

      — Нет такой возможности нету — данные об уникальных идентификаторах отправителя и получателя обязательны для заполнения.

      Список отправителей можно получить методом «getCounterparties» (отправитель генерируется автоматически при первой отправке ТТН с личного кабинета, или в личном кабинете).

      • Александр

        Спасибо за ответ!!!

        Неудобно как-то придумано, хотя логично что по строковым параметрам что-то искать это неправильно)
        Не могу никак до конца продумать всю структуру внедряемого функционала..)

        Подскажи ещё пожалуйста:
        1. А как лучше зебру реализовать? У нас есть принтер этикеток — необходимо чтобы ЕН маленькие (на сайте это печать «зебры»).. Рисовать макет или как-то можно получить её?
        2. И я так и не понял, у нас интегрирован справочник Регионы, в котором у каждого города есть Район (например Александровка в Харькове их 10 примерно) — а в базе городов 1С такого различия нет.. и получается что загрузку отделений полностью автоматизировать нельзя.. не сталкивались с такой проблемой?

        • Андрей Данилюк

          1. Печать делали в формате параметром. Пример с документации: https://my.novaposhta.ua/orders/printMarkings/orders/ab91865b-2937-11e4-ab6d-005056801329,ab91865b-2937-11e4-ab6d-005056801329/type/html/apiKey/%5BВАШ АПІ КЛЮЧ]/zebra/zebra

          2. Загрузку отделений так же автоматизировали без проблем.

          • Александр

            Огромнейшее спасибо за помощь!!!

          • Александр

            Что-то никак не получается на макет добавить зебру с html зеброй для печати и предпросмотра (((

← Интересная ориентированность на клиента
Саратов на связи. Интервью со мной. →

Новости

  • Работаем с Opendatabot из 1с
  • Сокращаем ссылки в 1с
  • Загрузка данных из Google spreadsheet в 1с
  • Формирование скриншотов сайтов в 1с
  • Удаление старой номенклатуры

Подписка

Copyright © 2021 danila.org.ua
Умные решения для вашего бизнеса