Работа с веб-сервисами 1С на PHP

Здравствуйте.

Я не буду останавливаться на вопросе что такое веб-сервисы 1С, т.к в сети очень много статей на эту тему. Просто постараюсь вкратце показать, каким способом возможна работа с веб-сервисами 1С на php.

И так начнем.

В первую очередь для PHP надо подключить модуль  для работы по протоколу SOAP. Для windows надо в файле php.ini либо раскомментировать либо дописать строки
[PHP_SOAP]
extension=php_soap.dll

Под windows замечена следующая особенность — файл php.ini надо обязательно положить в папку C:\Windows. Также необходимо перезапустить веб-сервер, если PHP установлен как модуль.

Рассмотрим 2 случая:

  1. Когда в параметр метода веб-сервиса необходимо передать строку
  2. Когда в параметр метода веб-сервиса необходимо передать объект пакета XDTO, который описан в 1С

Примем одно условие, что ответ веб-сервис 1С присылает в формате JSON. К сожалению поддержка формата JSON на уровне методов платформы появилось только в версии «1С Предприятие 8.3.6″. Чтобы использовать формат JSON в более ранних версиях платформы есть хорошая обработка, которой можно воспользоваться, а можно и написать что-то свое, т.к. данный формат передачи данных не сложный.
Ответ веб-сервиса 1С будет в формате JSON с параметрами «Status» и «Message» (в данном примере я не использовал обработку, а описал ответ сам):


НашеСообщение = "Какое-то сообщение"
ТекстОтветаВебСервисов = "{" + Символы.ПС + """Status""" + ":" + """Ok""" + "," + Символы.ПС 
                         + """Message""" + ":" + """" + НашеСообщение + """" + Символы.ПС
	                 + "}";


1 случай. Передача параметра в виде строки.


// Необходимо отключить кэширование для SOAP. Если этого не сделать, 
// функции веб-сервисов будут работать некорректно.    
ini_set('soap.wsdl_cache_enabled', 0 );
ini_set('soap.wsdl_cache_ttl', 0); 

$client = new SoapClient("http://localhost:8080/ExampleBase/ws/ExampleWebService.1cws?wsdl",
    array(
        'login' => "1C", //логин пользователя к базе 1С
        'password' => "54321", //пароль пользователя к базе 1С
        'soap_version' => SOAP_1_2, //версия SOAP
        'cache_wsdl' => WSDL_CACHE_NONE,
        'trace' => true,
        'features' => SOAP_USE_XSI_ARRAY_TYPE
    )
);

//Заполним массив передаваемых параметров 
        $ParametrStroka = 'TestStroka';
        $params["ParametrStroka"] = $ParametrStroka;

//Выполняем операцию
        $result = $client->ExampleMethod($params); //ExampleMethod - это метод веб-сервиса 1С, который описан в конфигурации.

//Обработаем возвращаемый результат

        $jsResult = $result->return;
        $dataResult = json_decode($jsResult);
        $StatusResult = $dataResult->Status; //получим значение параметра Status, который был сформирован при ответе веб-сервиса 1С
        $MessageResult = $dataResult->Message; //получим значение параметра Message, который был сформирован при ответе веб-сервиса 1С

2 случай. Передача параметра в виде пакета XDTO 1C.
Допустим параметр XDTO — это документ «заказ клиента», который имеет реквизиты: номер документа, ФИО покупателя, табличная часть «Товары» (реквизиты — штрихкод товара, наименование товара, цена, количество, сумма). Для нашего примера пакет XDTO примет вид
Пример пакета XDTO


// Необходимо отключить кэширование для SOAP. Если этого не сделать, 
// функции веб-сервисов будут работать некорректно.    
ini_set('soap.wsdl_cache_enabled', 0 );
ini_set('soap.wsdl_cache_ttl', 0); 

$client = new SoapClient("http://localhost:8080/ExampleBase/ws/ExampleWebService.1cws?wsdl",
    array(
        'login' => "1C", //логин пользователя к базе 1С
        'password' => "54321", //пароль пользователя к базе 1С
        'soap_version' => SOAP_1_2, //версия SOAP
        'cache_wsdl' => WSDL_CACHE_NONE,
        'trace' => true,
        'features' => SOAP_USE_XSI_ARRAY_TYPE
    )
);

//Заполним массив передаваемых параметров 
       $ParametrXDTO= Array(
            "DocumentNumber" => '0000001',
            "NameCustomer" => 'Андрей Петрович',
            "Goods" => Array(
                "Product" => array(
                      "ProductBarCod" => '8718863003152',
                      "ProductName" => 'Телевизор PHILIPS 40PFT4100/60',
                      "Count" => 1,
                      "Price" => 25000,
                      "Summa" => 25000);

        $params["ParametrXDTO"] = $ParametrXDTO;

//Выполняем операцию
        $result = $client->ExampleMethod($params); //ExampleMethod - это метод веб-сервиса 1С, который описан в конфигурации.

//Обработаем возвращаемый результат

        $jsResult = $result->return;
        $dataResult = json_decode($jsResult);
        $StatusResult = $dataResult->Status; //получим значение параметра Status, который был сформирован при ответе веб-сервиса 1С
        $MessageResult = $dataResult->Message; //получим значение параметра Message, который был сформирован при ответе веб-сервиса 1С

На этом все. Как видите ничего сложно нет. Будут вопросы — спрашивайте.

Популярность: 2%

Рубрика: Настройка и оптимизация | Метки: , | Добавить комментарий

Организация обмена с сайтом на «1С-Битрикс»для конфигурации «Управление торговлей для Беларуси 3.1.7 (и выше)»

Приветствую всех читателей блога.

В данной статье я хочу поговорить об организации обмена между конфигурацией «Управление торговлей для РБ 3.1.7″ и сайтом, который построен на CMS «1С-Битрикс»

Для примера использовалось следующее ПО:

И так приступим.

Сначала скачаем все необходимое ПО по выше указанным ссылкам: Open Server,
1С-Битрикс: Управление сайтом (малый бизнес) версии 15.06.
1С-Битрикс: Управление сайтом (малый бизнес)
Платформа 1С и конфигурации торговли я думаю у Вас уже будет, а если нет то google или yandex Вам в помощь

Дополнительный модуль для обмена с 1С версии 4.0.5.1
Модуль обмена с 1С

После того как все скачали, внедрим модуль обмена с 1С в конфигурацию «Управление торговлей для Беларуси 3.1.7″.

Для этого необходимо зайти в конфигуратор и изменить настройки поддержки «Конфигурация — Настройка поддержки».

Настройка поддержки конфигурации

Затем по кнопке «Включить возможность изменения» выбираем пункты «Объект поставщика редактируется с сохранением поддержки» и жмем кнопки «Ок».

Включить возможность изменения конфигурации

Настройка возможности изменения конфигурации

После принятия изменений выбираем пункт меню «Конфигурация — Сравнить, объединить с конфигурацией из файла» и указываем наш скачанный дополнительный модуль обмена. Когда пройдет сравнение/объединения необходимо с корневого узла снять признак (на рисунке ниже пункт №1) и указать «Действия — отметить по подсистемам файла» (на рисунке ниже пункт №2).

Настройка объединения с конфигурацией

Из предложенных подсистем необходимо выбрать «Битрикс» и нажать кнопку «Установить».

Выбор подсистемы

После того как будут отмечены системой объекты для объединения надо отдельно отметить саму подсистему «Битрикс» и нажать кнопку «Выполнить».

Выбор подсистемы при объединении

Когда будет завершено объединение необходимо в общем модуле «Б_ОбменССайтомСервер» заменить процедуру «СформироватьВременныеТаблицыПоИнформацииОТоварахПакета» на процедуру из файла, сохранить и обновить. На этом работа в конфигураторе завершена.

Теперь рассмотрим настройки веб-сервера для установки сайта на локальной машине.

Чтобы установить Open Server достаточно распаковать архив в любое место на диске и запустить необходимый файл в зависимости какой разрядности у Вас операционная система 32-х или 64-х битная.

Для установки Битрикса необходимо сделать следующие настройки в Open Server:

  1. Настройка Open server
  2. Затем в папке «Open server\Userdata\config» найти файл настройки апача, выбранного в пункте №1.
    Настройка апач для Open Server
  3. В конфигурационный файл необходимо внести дополнение. «%sprogdir%/domains/ShopBitriks» — это папка куда будет установлен интернет-магазин на локальном компьютере, где «%sprogdir%» — это папка куда установлен Open Server.
    Настройка апач для установки битрикса

    <Directory "%sprogdir%/domains/ShopBitriks">
    php_admin_value mbstring.func_overload 2
    php_admin_value mbstring.internal_encoding UTF-8
    </Directory>
  4. После настройки апач необходимо в папку «%sprogdir%/domains/ShopBitriks» — распаковать скачанный 1С-Битрикс: Управление сайтом (малый бизнес) и открыть файл «index.php» и следовать по шагам установки.

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

  1. Идем в раздел «Администрирование» пункт «CRM и продажи» и указываем следующие настройки
    Настройки в подсистеме CRM
    Настройки в подсистеме СRM
  2. Переходим в пункт «Маркетинг и планирование» раздела «Администрирование»
    Настройки в подсистеме маркетинг
  3. Затем пункт «Общие настройки» раздела «Администрирование»
    Подсистема "Общие настройки"
  4. Пункт «Настройки синхронизации данных» раздел «Администрирование»
    Настройка подсистемы "Синхронизация данных"
  5. Пункт «Номенклатура» раздел «Администрирование»
    Настройка подсистемы "Номенклатура"

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

Теперь перейдем к настройкам правил обмена. В разделе «Администрирование» выбираем пункт «Обмен с сайтом».
Доступ к настройкам обмена с сайтом

Т.к наша база пустая я подгрузил парочку товаров с помощью обработки.

Добавим новый узел. На закладке «Основные настройки» отметим пункты «Выгрузка товаров», «Полная выгрузка», «Выгружать на сайт». В адресе сайте переменная часть только сам адрес сайта, в моем случае это «shopbitriks», а «bitrix/admin/1c_exchange.php» всегда одинаково. Далее указываем имя пользователя и пароль, доступ можно проверить по кнопке «Проверить соединение». Для первой выгрузки указываем пункт «Выполнять полную выгрузку принудительно».
Начальная настройка обмена с битрикс
Переходим на закладку «Выгрузка товаров». Выбираем отмечаем следующие пункты:

  • Товары
  • Картинки и файлы
  • Свойства
  • Выгружать только используемые значения свойств
  • Предложения. Этот пункт необходимо отмечать, если на сайте будет 2 отдельных каталога: товары и предложения
  • Выгружать цены
  • Выгружать остатки
  • Выгружать остатки с учетом резерва.

Т.к. склад у нас один и на сайте отключен количественный учет (учет ведется в 1С), то пункт «Выгружать остатки по складам» выбирать не надо.
Настройка выгрузки товаров в битрикс
Затем по кнопке «Настроить отбор» укажем отбор по нашему соглашению.
Отбор по соглашению для обмена с битрикс
По кнопке «Настроить дерево групп» можно указать иерархию каталогов и товаров так, как Вы хотите чтобы они отражались на сайте.
Настройка дерева групп для обмена с битрикс

На этом настройка закончена можно пробовать выгружать товары на сайт по кнопке «Выполнить обмен» в списке узлов обмена с сайтом, выбрав нужный элемент.
Результат обмена.
Список товаров на сайте
Товары на сайте после обмена
Цена товара
Цена товара на сайте
Остаток товара
Остатки товара на сайте
Главная страница сайта
Список товаров на сайте

После первого обмена необходимо вернуться в настройки в 1С и установить признак «Выгружать только измененные объекты», а признак «Выполнять полную выгрузку принудительно» снять. По кнопке «Настройка версионности выгружаемых данных» можно настроить по каким именно объектам надо отслеживать изменения, чтобы затем их выгрузить на сайт.
Настройка версионности обмена

Некоторые настройки на сайте для корректной выгрузки в 1С заказов в белорусских рублях.
Необходимо в админке сайта в разделе «Настройки» выбрать пункт «Интернет-магазин».
Настройка в битрикс интернет-магазина
Затем на закладках «Настройки» и «Права на заказы» установить валюту «Белорусский рубль»
Настройка валюты по заказам интернет-магазина
Настройках прав на заказы в битрикс

На этом все.

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

Популярность: 6%

Рубрика: Торговля 3.0 для РБ | Метки: , | Добавить комментарий

Пакетная печать табличных документов в 1С 8.3

Здравствуйте, дорогие читатели.

В данной заметке хочу поделиться одной интересной возможностью, которая есть в платформе «1С предприятие 8.3″, а именно «пакетная печать табличных документов». Для использования данной возможности используются объекты
встроенного языка: ПакетОтображаемыхДокументов, ЭлементыПакетаОтображаемыхДокументов, ЭлементПакетаОтображаемыхДокументов.

ПакетОтображаемыхДокументов – это сам пакет, который содержит документы, которые надо напечатать или сохранить в файл, также содержит настройки печати. Для помещения документов в пакет предназначено свойство Состав, представляющее собой объект ЭлементыПакетаОтображаемыхДокументов – коллекцию
объектов ЭлементПакетаОтображаемыхДокументов.

ЭлементПакетаОтображаемыхДокументов – объект, который содержит либо адрес временного хранилища, в котором расположен табличный документ, либо объект ПакетОтображаемыхДокументов, обозначающий вложенный пакет
документов.

Настройки печати устанавливаются для всего пакета, индивидуальные настройки печати документов игнорируются.
Для доступны следующие настройки КоличествоЭкземпляров, РазборПоКопиям, ИмяПринтера, ДвусторонняяПечать, ТочностьПечати, Вывод.

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

Рассмотрим пример:

Необходимо распечатать 2 табличных документа, причем первого 3 экземпляра, а второго 2.


Пакет = Новый ПакетОтображаемыхДокументов;
// Документы, находящиеся в этом пакете, печатаются в 3 экземплярах
Пакет.КоличествоЭкземпляров = 3;
// Добавляем документы в пакет
ЭлементПакета1 = Пакет.Состав.Добавить();
ЭлементПакета1.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент, УникальныйИдентификатор);

// Добавляем вложенный пакет для третьего документа
ВложенныйПакет = Новый ПакетОтображаемыхДокументов;
// Документ во вложенном пакете печатается в 2 экземплярах
ВложенныйПакет.КоличествоЭкземпляров = 2;
// Добавляем документ во вложенный пакет
ЭлементВложенногоПакета1 = ВложенныйПакет.Состав.Добавить();
ЭлементВложенногоПакета1.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент1, УникальныйИдентификатор);

ЭлементПакета2 = Пакет.Состав.Добавить();
ЭлементПакета2.Данные = ВложенныйПакет;

// Печатаем пакет сразу на принтер
Пакет.Напечатать();

//сохраняем в файл
Пакет.ЗаписатьФайлДляПечати("D:\ПакетнаяПечать.pdf");

Обработку (на управляемых формах) для демонстрации пакетного режима печати можно скачать здесь.

Популярность: 36%

Рубрика: Особенности работы управляемого интерфейса, Платформа 1С | Метки: | Добавить комментарий

Запуск внешней обработки по расписанию в конфигурации «Управление торговлей 11″

Всем привет.

В комментариях к статье был задан в вопрос «Как пользоваться в УТ11 запуском СВОИХ обработок по расписанию«.

Постараюсь все подробно объяснить. Начнем.

1. Скачать шаблон обработки.

2. Отредактировать процедуру «СведенияОВнешнейОбработке» в модуле обработке. Все выделенные параметры на рисунке заменить на свои значения

Сведения о внешней обработке

3. Описать код команды для выполнения. Для этого необходимо отредактировать процедуру «ВыполнитьКоманду«.

Выполнение команды

4. Добавить обработку для выполнения и настроить расписание.

  • Перейти в раздел «Администрирование» и выбрать пункт в панели навигации «Печатные формы, отчеты и обработки». Выполнить пункт «Дополнительные отчеты и обработки».

Открыть доп. обработки

  • В форме списка обработок и печатных форм по кнопке «Создать» добавить нашу обработку

Обработка с расписанием

  • В колонке «Расписание» настраиваем наш регламент.
  • После всех настроек необходимо выполнить команду «Записать и закрыть»

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

Обработка в списке рег. заданий

Популярность: 19%

Рубрика: Торговля 3.0 для РБ | Метки: | Комментарии (9)

Организация тестового стенда для мобильного приложения 1С 8.3 под Android.

Приветствую Вас, читатели моего блога.

В сегодняшней статье хочу описать свой опыт в подготовке тестового стенда для тестирования мобильного приложения под Android. Как оказалось написать приложение — это лишь пол дела, необходимо его протестировать. А как протестировать не выкладывая на GooglePlay и не закачивая на смартфон? На этот вопрос я попытаюсь ответить.

Начну с того что я попробовал 2 способа:

  1. Связка VirtualBox + Android 4.2.2.
  2. Сборка Android SDK.

Начну VirtualBox + Android 4.2.2.

Для того, чтобы установить Android на VirtualBox я воспользовался советами из статьи на эту тему. После завершения установки и настройки интернета мне необходимо было найти возможность установки приложений минуя  google play и интернет. Можно конечно воспользоваться файловыми ресурсами в виде DropBox, Яндекс.Диск и другие, но хотелось больше независимости в данном вопросе. Я нашел приложение для Android чтобы можно было работать с USB-накопителями как с обычной папкой, для этого необходимо установить программу «paragonmounter-1.10″ (после установки она попросит обновится до более последней версии 1.11 с чем и согласился). Данная программа монтирует флешку как папку Android c которой можно копировать любые файлы (монтирование флешки на виртуальную ОС настраивается в специальных настройках VirtualBox). Для удобства работы с файлами я установил программу «ES_File_Explorer» (проводник для Android). Вот так будет выглядеть USB-флешка в проводнике «ES_File_Explorer»:

Отображение флешки в Андроид

Открыв папку «paragonNTFS» мы получим доступ ко всем файлам нашей USB-флешки.

Две эти программы я закачал на Android через интернет используя DropBox, но так же можно использовать любые другие файловые хранилища. Если будут трудности с поиском и скачиванием названных программ, пишите  в комментарий.

Чтобы устанавливать не подписанные приложения на Android необходимо в настройках включить признак «Неизвестные источники».

Настройка для установки приложений Android

С установленными данными программами интернет уже был не нужен чтобы протестировать мобильное приложение 1С, достаточно было на флешку закачать установочный файл и запустить Android на VirtualBox.

Сборка Android SDK.

Саму сборку я скачал отсюда. Сборку рекомендую устанавливать в корень диска, например C:\Android.

После установки, запустив «SDK Manager», установил модули, выделенные на рисунке желтым цветом. Данные модули затем также понадобятся для сборки самого мобильного приложения 1С.

Установка компонент Android SDK

Затем скачал и установил Java SDK 1.7.45, устанавливать рекомендую в корень диска, например C:\Java.

Чтобы создать и запустить виртуальное мобильное устройство с Android, необходимо запустить программу «AVD Manager», которая находится в папке установки Android SDK. В открывшемся меню по кнопке «New» создается виртуальное устройство, а по кнопке «Start» данное устройство будет запущено.
Новое виртуальное устройство
Виртуальное устройство

После того как все запустилось и заработало, необходимо в настройках установить 2 признака «Неизвестные источники» и «Отладка по USB».

Настройка для отладки приложений на мобильном устройстве Настройка для установки приложений на мобильное устройство

Теперь поговорим как установить приложение на наше виртуальное мобильное устройство. Для этого неоходимо сделать следующее:

  1. Запустить виртуальное мобильное устройство через AVD Manager
  2. Отключить на время фаерволы, если такие имеются.
  3. С помощью интерпретатора командной строки ОС Windows выполнить команду %ANDROID_SDK%\platform-tools\adb.exe install «<Каталог платформы>\com.e1c.UTMob.apk» , где %ANDROID_SDK% — это каталог куда установлен Android, а <Каталог платформы> — это каталог где расположен файл «com.e1c.UTMob.apk».

Установка приложения на мобильное устройство

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

Мобильное приложение 1С

Для тестирования веб-сервисов на виртуальном мобильном устройстве, опубликованных на локальном компьютере, вместо адреса http://Localhost я использовал адрес http://10.0.2.2

Пару слов о том, как собрать мобильное приложение 1С.

Для сборки мобильного приложения 1С используется обработка «MobileAppWizard.epf», которая поставляется вместе с мобильной платформой. Как заполнять поля описано в справке обработки, которую можно получить по кнопке «?».

Обработка по сборке мобильного приложения

На этом все, будут вопросы спрашиваете, буду рад помочь.

Популярность: 24%

Рубрика: Платформа 1С | Метки: | Комментарии (3)