PHP OData драйвер

Публикация № 605427

Разработка - Системная интеграция - Интеграция с WEB

php REST OData SQL

Удобный доступ к OData данным через SQL синтаксис

Стояла задача создать удобный PHP драйвер к OData интерфейсу.

Представляю вашему вниманию свое творение.

Composer: https://packagist.org/packages/falseclock/dbd-php

GitHub: https://github.com/Falseclock/dbd-php

Много рассказывать и описывать не буду, опишу в виде кода

1. Инсталляция. 

composer require falseclock/dbd-php

2. Конструктор

// Если у вас есть MemCached сервер или несколько, то укажите в первом параметре массив
// состоящий из хоста и порта.
// второй параметр отвечает за компрессию данных
// третий параметр указывает время кеширования по умолчанию

$cache = DBD\Cache\MemCache::me()->create(array(['host' => '127.0.0.1', 'port' => 11211]),false,"15 min")->open();

// Нужно создать массив из настроек

$odata_options = array(
	'RaiseError'		=> true, // останавливать выполнение при ошибке
	'PrintError'		=> true, // выводить ошибка на экран
	'HTMLError'			=> true, // печатать ошибки в виде HTML
	'CacheDriver'		=> $cache // указатель на экземпляр кэш драйвера. если нет, то null, либо вообше убрать
);

// создаем экземпляр класса 
// 1-ый параметер - адрес ODATA
// 2-ой - имя пользователи
// 3-ий - его пароль
$od = (new DBD\YellowERP())->create('http://crm.beta.virtex.kz/odata/', "user", "password", $odata_options);

// reuseSessions - если у вас стоит reuseSessions="use", второй параметр количество попыток подключения
// setDataKey('value') - ставить обязательно. Это ключ, в который 1С заталкивает данные в JSON формате

$od = $odata->reuseSessions(true,3)->
setDataKey('value');

3. Выборка данных

// Подготовка запроса без параметров, просто выборка
$sth = $od->prepare("
	SELECT 
		Ref_Key, Number, Date, СуммаДокумента, КодНазначенияПлатежа, Комментарий, СтруктурнаяЕдиница, СтруктурнаяЕдиница_Type,
		Товары/ЕдиницаИзмерения_Key, Товары/Цена, Товары/Сумма, Товары/СуммаНДС, Товары/Количество, Товары/Номенклатура_Key,
		ДоговорКонтрагента/Ref_Key, ДоговорКонтрагента/Description,
		Контрагент/Ref_Key, Контрагент/НаименованиеПолное, Контрагент/ИдентификационныйКодЛичности,
		Организация/Ref_Key, Организация/НаименованиеПолное, Организация/ИдентификационныйНомер, Организация/КБЕ,
		Ответственный/Ref_Key, Ответственный/Description
	FROM 
		Document_СчетНаОплатуПокупателю 
	EXPAND 
		Контрагент,
		Организация,
		ДоговорКонтрагента,
		Ответственный
	ORDER BY
		Date аsc
	LIMIT 10
");
// хотим положить данные в кэш на 24 часа. Если время не укажем, то сохранится на то время,
// которое указавали стандартным при инициализации драйвера кэша. Если кэш не нужен - просто не пишем $sth->cache()
$sth->cache('CacheKey','24h'); 

// Выполнить запрос. Если данные будут найдены в кэше, то возьмутся от туда, если нет
// то запросятся по HTTP через OData.
$sth->execute();

// fetchrow - поочередное извлечение данных из массива
while ($row = $sth->fetchrow()) {
	print_r($row);
}

// Если нужно извлечь все и сразу, то вот так вот в нумерованный массив
$sth->fetchrowset();

// Если нужен ассоциативный массив, то можно указать ключ
$sth->fetchrowset('Ref_Key');

4. Выборка с параметрами

$vatinvoice = "6453a564-1324-11e7-ef88-26a4bef88324";

$sth = $od->prepare("
	SELECT 
		Ref_Key, Number, Date, СуммаДокумента
	FROM 
		Document_ЭСФ
	WHERE 
		СчетФактура eq cast(guid?,?)
	ORDER BY
		Date asc
");

// Вместо вопросов будут поставлены эти значения, то есть конвертнется
// в СчетФактура eq cast(guid'6453a564-1324-11e7-ef88-26a4bef88324','Document_СчетФактураВыданный')

$sth->execute($vatinvoice,'Document_СчетФактураВыданный');


5. Вставка новой записи

$data['СтруктурнаяЕдиница_Type'] = "StandardODATA.Catalog_БанковскиеСчета";
$data['ВалютаДокумента_Key'] = $currency['ВалютаДенежныхСредств']['Ref_Key'];
$data['ТипЦен_Key'] = "00000000-0000-0000-0000-000000000000";
$data['СтруктурноеПодразделение_Key'] = "00000000-0000-0000-0000-000000000000";
$data['Date'] = date("c");
$data['Комментарий'] = $data['НомерЗаказа']."\n".$data['Комментарий'];
unset($data['НомерЗаказа']);
$data['УчитыватьНДС'] = true;
$data['УчитыватьАкциз'] = false;
$data['СуммаВключаетАкциз'] = false;
$data['СуммаВключаетНДС'] = true;
$data['DeletionMark'] = false;
$data['Posted'] = false;
$data['Ответственный_Key'] = $data['Автор_Key'];
$data['КратностьВзаиморасчетов'] = 1;

// Указываем документ и массив данных, где ключ - название поля
$entry = $od->insert('Document_СчетНаОплатуПокупателю',$data);

// Результатом будет возвращен массив либо выведена ошибка
print_r($entry);

6. Изменение данных

$od->update(
	'Document_СчетНаОплатуПокупателю', // Название документа
	array('Date' => $data['Date']),  // Массив тех полей которые нужно изменить и новые значения
	"(guid?)", // по какому полю и как искать элемент
	$data['Ref_Key'] // подстановка значения вместо знака вопроса
);

// либо можно так
$od->update(
	'Document_СчетНаОплатуПокупателю', // Название документа
	array('Date' => $data['Date'], 'Number'=>'00000012'),  // Массив тех полей которые нужно изменить и новые значения
	"(guid'6453a564-1324-11e7-ef88-26a4bef88324')" // по какому полю и как искать элемент
);

7. Metadata

$od->metedata(); // выгрузка всех описаний стандартного интерфейса

$od->metedata('Catalog_Пользователи'); // выгрузка конкретного описания стандартного интерфейса

8. Живой пример

	public function InvoiceData($key)
	{
		////////////////////////////////////////////////////////////////////////Номенклатура_Key
		$sth = $this->od->prepare("
			SELECT 
				Ref_Key, Number, Date, СуммаДокумента, КодНазначенияПлатежа, Комментарий, СтруктурнаяЕдиница, СтруктурнаяЕдиница_Type,
				Товары/ЕдиницаИзмерения_Key, Товары/Цена, Товары/Сумма, Товары/СуммаНДС, Товары/Количество, Товары/Номенклатура_Key,
				ДоговорКонтрагента/Ref_Key, ДоговорКонтрагента/Description,
				Контрагент/Ref_Key, Контрагент/НаименованиеПолное, Контрагент/ИдентификационныйКодЛичности,
				Организация/Ref_Key, Организация/НаименованиеПолное, Организация/ИдентификационныйНомер, Организация/КБЕ,
				Ответственный/Ref_Key, Ответственный/Description
			FROM 
				Document_СчетНаОплатуПокупателю 
			EXPAND 
				Контрагент,
				Организация,
				ДоговорКонтрагента,
				Ответственный
			WHERE 
				Ref_Key eq guid?
		");
		//$sth->cache("Document_СчетНаОплатуПокупателю:{$key}","10m");
		$sth->execute($key);
		
		$invoice = $sth->fetchrow();
		////////////////////////////////////////////////////////////////////////
		
		$goods = $this->Goods();
		$TYPES = $this->GetContactInfoTypes();
		////////////////////////////////////////////////////////////////////////
		$sth = $this->od->prepare("
			SELECT 
				Ref_Key AS id, 
				Description AS desc, 
				НаименованиеПолное AS name
			FROM 
				Catalog_КлассификаторЕдиницИзмерения 
			WHERE 
				НаименованиеПолное ne ''
		");
		$sth->cache("Catalog_КлассификаторЕдиницИзмерения","24h");
		$sth->execute();
		$units = $sth->fetchrowset();
		
		array_walk($units, function(&$val){
			$val['name'] = $val['name'] . " ({$val['desc']})";
			return $val;
		});
		////////////////////////////////////////////////////////////////////////
		
		$bank = $this->BankAccount($invoice['СтруктурнаяЕдиница']);
		
		$invoice['Банк'] = $bank['Банк']['Description'];
		$invoice['БИК'] = $bank['Банк']['БИК'];
		$invoice['НомерСчета'] = $bank['НомерСчета'];

		foreach ($invoice['Товары'] as &$item) {

			$item['ЕдиницаИзмерения'] = $this->_getElementById($units, $item['ЕдиницаИзмерения_Key'])['desc'];
			unset($item['ЕдиницаИзмерения_Key']);
			$item['Наименование'] = $this->_getElementById($goods, $item['Номенклатура_Key'])['full'];
		}
		
		$invoice['Договор'] = $invoice['ДоговорКонтрагента']['Description'];
		
		$GCCD = $this->GetCustomerContactData($invoice['Контрагент']['Ref_Key']);
		$GOCD = $this->GetOrganizationContactData($invoice['Организация']['Ref_Key']);
		
		foreach ($GCCD as $row) {
			if ($TYPES[$row['Вид']]['PredefinedDataName'] == "ЮрАдресКонтрагента") {
				$invoice['Контрагент']['Адрес'] = $row['Представление'];
			}
			if ($TYPES[$row['Вид']]['PredefinedDataName'] == "ТелефонКонтрагента") {
				$invoice['Контрагент']['Телефон'] = $row['Представление'];
			}
		}
		foreach ($GOCD as $row) {
			if ($TYPES[$row['Вид']]['PredefinedDataName'] == "ЮрАдресОрганизации") {
				$invoice['Организация']['Адрес'] = $row['Представление'];
			}
			if ($TYPES[$row['Вид']]['PredefinedDataName'] == "ТелефонОрганизации") {
				$invoice['Организация']['Телефон'] = $row['Представление'];
			}
		}
		$invoice['Ответственный'] = $invoice['Ответственный']['Description'];
		
		unset ($invoice['ДоговорКонтрагента']);
		unset ($invoice['Организация']['Ref_Key']);
		unset ($invoice['СтруктурнаяЕдиница']);
		unset ($invoice['СтруктурнаяЕдиница_Type']);
			
		return($invoice);
	}

print_r(Data1c::me()->InvoiceData('d5086168-00d8-11e7-ef88-26a4bef88324'));

/*

Array
(
    [Ref_Key] => d5086168-00d8-11e7-ef88-26a4bef88324
    [Number] => 00000000076
    [Date] => 2017-03-04T18:44:56
    [СуммаДокумента] => 538330
    [КодНазначенияПлатежа] => 710
    [Комментарий] => Заказ №00005115
dsfsfsfsdf
    [Товары] => Array
        (
            [0] => Array
                (
                    [Номенклатура_Key] => bde6a7ce-32c2-11e2-92a8-c692850d4a80
                    [Цена] => 41410
                    [Сумма] => 165640
                    [СуммаНДС] => 17747,14
                    [Количество] => 4
                    [ЕдиницаИзмерения] => шт
                    [Наименование] => 503297-B21/511777-001 HP 460W HE 12V HOTPLG AC PWR SUPPLY KIT
                )

            [1] => Array
                (
                    [Номенклатура_Key] => 76e80df8-5802-11e4-6686-0e459e882122
                    [Цена] => 41410
                    [Сумма] => 372690
                    [СуммаНДС] => 39931,07
                    [Количество] => 9
                    [ЕдиницаИзмерения] => шт
                    [Наименование] => 501536-001 HP 8GB (1x8GB) Dual Rank x4 PC3-10600 (DDR3-1333) Registered CAS-9 Memory Kit
                )

        )

    [Контрагент] => Array
        (
            [Ref_Key] => bd63f5ba-55f1-11e5-5d98-0e459e882122
            [НаименованиеПолное] => Товарищество с ограниченной ответственностью ------
            [ИдентификационныйКодЛичности] => 140000000634
            [Адрес] => 010000, Республика Казахстан, Астана, р-н.Сарыарка, ул. -----
        )

    [Организация] => Array
        (
            [НаименованиеПолное] => Товарищество с ограниченной ответственностью "-----"
            [ИдентификационныйНомер] => 100000000032
            [КБЕ] => 17
            [Телефон] => +7, 727 0000 000 87010000385
            [Адрес] => A15P5A8, Республика Казахстан, г. Алматы, ул. Сатпаева, -------------
        )

    [Ответственный] => Муханов Нурлан
    [Банк] => АО ДБ "Альфа-Банк"
    [БИК] => ALFAKZKA
    [НомерСчета] => KZ2790000000000407863
    [Договор] => Без договора
)
*/

9. Поддерживаемый синтаксис

SELECT - выборка элементов для выгрузки, можно дополнять через AS, например SELECT Ref_Key AS id, Number AS number, Date FROM document

FROM - указание от куда брать данные

EXPAND - если нужно получать значения связанных сущностей

WHERE - установка условий отбора

ORDER BY - сортировка вывода

LIMIT - количество записей для отбора

10. Итоги

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

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

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Идальго 188 05.04.17 12:26 Сейчас в теме
Привет! Не совсем понимаю, что в этом особенно интересного и перспективного, но хочу разобраться. Поясните пожалуйста следующее:
1. Причём тут Битрикс? Вроде же не только Битрикс можно научить обмениваться информацией с 1С. Правда я с Битриксом работал только в качестве Интернет магазина, где обмен был либо через файлики (ftp), либо через http запросы и последующей передачей этих фаликов внутри него.
2. На 1С можно развернуть Веб сервис и обращаться к нему со стороны сайта или другой 1С (см. демо конфигурацию по Веб сервисам от 1С). Чем OData лучше? Прочитал немного про OData в 1С. Оно позволяет работать с объектами в 1С напрямую. Это действительно может быть полезно, но только не для интернет магазинов, а например, для веб интерфейсов, из которых что-то делают в 1С.
3. Что такое автоматическая поддержка сессий и чем она лучше других случаев? Ну т.е., как я понял, в простом варианте - удаленный сайт, приложение или что-то ещё инициирует http запросом соединение и передает что-то. Чем такой вариант плох и чем автоматическая поддержка сессий лучше? Накладные расходы и в том и в другом случае есть.
2. virtex3 19 05.04.17 12:41 Сейчас в теме
(1)
Ничего особенного нет, впрочем, возможно и перспективного. Я просто опубликовал свою работу.

1. Битрикс позволяет делать интеграцию с 1С Предприятием. Но для этого надо покупать сам Битрикс. Обмениваться информацией можно как угодно и с кем угодно, но разбирательство в интерфейсе и работа с ним напрямую сопряжена с нудным и иногда дурацком кодом. Чтобы взять данные по OData - нужно формировать и форматировать строку запроса. Драйвер позволяет упростить это до SQL синтаксиса. При этом не надо передавать никуда никакие файлы и не надо их парсить. Все происходит налету и без всяких сторонних средства. Эдакая универсальность.

2. Вы немного не понимаете суть. В моем драйвере есть возможность обращения к HTTP сервисам самого 1С. Я их не описывал в статье, но возможность существует. Я через сервисный URL запрашиваю остатки на складе и себестоимость продукции в режиме реального времени. Через OData могу резервировать товары и выставлять автоматически счета на оплату через сайт. Как раз таки для магазинов это большое спасение - актуальность данных и их быстрое получение.

3. Если обратимся к документации, то с выходом версии 8.3.9 стало возможно открывать одно постоянное соединение и время от времени обращаться к созданной сессии. Что это значит? Если делать без сессии, то придется постоянно открывать сессию на стороне 1С, а это ресурсы и скорость выполнения. А если 10 человек одновременно запросят данные, то будет открыто 10 сессий. Для этого нужны лицензии. С одной автоматической сессией можно обращаться постоянно и неограниченное количество раз и получать актуальные данные.

Например, у вас в офисе 200 человек, у которых открыто клиентское приложение и пользователи только лишь читают данные, ничего не вносят, просто смотрят актуальность. Для всех 200 нужна пользовательская лицензия. Можно отказаться от 200 лицензий и оставить одну и давать данные через веб интерфейс.
3. azubar 37 16.10.18 10:49 Сейчас в теме
Респектую, интересное решение. Кеширование поддерживает только мемкеш?
4. virtex3 19 16.10.18 11:34 Сейчас в теме
(3) вообще планировал внедрить NOSQL базы типа Redis, Mongo, но руки так и не дошли.
Оставьте свое сообщение

См. также

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    57076    Serginio    33    

API ОФД-Я разбор документации с примерами

WEB v8 1cv8.cf Россия Бесплатно (free)

Примеры запросов 1С для получения данных с ОФД-Ярус через API.

20.04.2021    327    www76    0    

Работа через сервис 1С-Отчетность нескольких пользователей

Регламентированная отчетность Зарплата WEB v8 v8::СПР ЗУП3.x Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

Организации, в которых количество сотрудников превышает установленное значение, обязаны отправлять отчетность по телекоммуникационным каналам связи. Это может быть Контур-Экстерн, Такском или любой другой провайдер. Все чаще пользователи 1С используют сервис 1С-отчетность. И все чаще сертификат оформляется на сотрудника отдела кадров или бухгалтерии. В случае, если нужно оформить несколько сертификатов, возникают трудности в версии ЗУП 3.1.14 и более поздних. О том, как с ними справиться, пойдет речь в данной публикации.

05.04.2021    584    keat24    1    

Правила обмена больше не нужны

Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8 Распределенная БД (УРИБ, УРБД) WEB v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    6954    Nikola23    35    

Online телефонный справочник из 1С: Зарплата и управление персоналом Промо

WEB Управление персоналом (HRM) Управление персоналом (HRM) v8 ЗУП3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    26635    ruha    21    

Как отправить сообщение Telegram в группу?

WEB v8 Россия Бесплатно (free)

Отправка сообщения в группу Telegram.

01.03.2021    904    kite2    2    

Альфа-Авто 5.0 и современные HTTP сервисы

WEB v8 1cv8.cf Автомобили, автосервисы УУ Бесплатно (free)

Решение, позволяющее программным продуктам, работающим на устаревших версиях платформы 1С (8.2), интегрироваться с современными HTTP сервисами. Решение, интегрированное с HTTP-сервисом программы по расчету компонентов для изготовления ЛКМ, описанное в настоящей статье, успешно работает в одном из автосервисов, работающем на устаревшей платформе и конфигурации Альфа-Авто 5.0.

01.03.2021    617    osivv    1    

Доступ из базы 1С к стандартному интерфейсу Odata базы 1С, в которой заведен пользователь

WEB v8 Россия Бесплатно (free)

Есть база, с пользователем/паролем, нужно подключиться к Odata из другой базы 1С, получить элементы справочника.

24.02.2021    710    user823999    6    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    42380    YPermitin    41    

Интеграция с API WB (Wildberries). Создание карточки товара (спецификации)

WEB v8 1cv8.cf ИТ-компания Россия Бесплатно (free)

Опыт интеграции с API WB (Wildberries), опыт создания карточки товара, получение токенов API WB.

18.01.2021    11100    jenyavp    43    

HTML редактор/editor (Wysiwyg) для WebKit 1С (CMS, B2B), альтернатива TinyMCE и стандартному ФорматированныйДокумент

WEB Интеграция v8 v8::УФ 1cv8.cf Бесплатно (free)

Suneditor - отличная замена HTML редактору TinyMCE (бесплатному), в публикации с открытым кодом подключим его в 1С с WebKit, скачать HTMLeditor обработку можно бесплатно.

28.12.2020    2286    SizovE    23    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

Практика программирования WEB Универсальные функции v8 v8::УФ 1cv8.cf Бесплатно (free)

Редактор HTML платформы 1С простой и очень удобный для небольших задач, однако ПолучитьHTML возвращает отдельно картинки и отдельно целиком HTML страницу со ссылкой на имена этих картинок, что неудобно для отправки в базу данных сайта/интернет-магазина/веб-приложения/B2B. Разберем на открытом коде, как решить эту проблему, напишем универсальную функцию получения значения любого тега HTML на регулярных выражениях. Бонусом - возможность редактировать теги HTML в текстовом режиме.

24.11.2020    856    SizovE    4    

Заготовка для загрузки файлов по ftp Промо

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    30930    anig99    6    

Как сделать интеграцию (обмен) с интернет-магазином? Пошаговый план действий (Часть 1)

WEB v8 1cv8.cf УУ Бесплатно (free)

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

19.11.2020    4785    markbraer    11    

Чтение вложенных свойств Структур Структуры, Соответствий, свойства через точку, разбор JSON

Практика программирования WEB Интеграция Универсальные функции v8 Бесплатно (free)

JSON: {user.device.type} - как получить значение {type}? А если вложенность значительно глубже? Как проверить, что оно заполнено или удалить его - всё это в публикации с открытым кодом и даже без рекурсии. Бонусом разбор дерева значений - ДанныеФормыЭлементДерева, СтрокаДереваЗначений.

17.11.2020    1818    SizovE    2    

Web Dashboard (мобильная и десктопная версия): оптимальная схема организации взаимодействия с зоопарком систем

WEB v8 Бесплатно (free)

Задача: из множества систем (1С:ERP, 1C:CRM, Кронос:WMS, 1С:Розница, 1С:УПП...) оперативно и онлайн осуществлять мониторинг на телефоне/десктопе/планшете/телевизоре бизнес-аналитику в дашборде для директора. Рассмотрим в статье, как правильно интегрировать между собой все базы, какие для этого инструменты использовать.

10.11.2020    7589    SizovE    2    

Отладка модуля ДиадокПро

WEB v8 1cv8.cf Бесплатно (free)

В обработке ДиадокПро все дополнительные модули встроены во внешние обработки, которые хранятся в макетах. Это усложняет процесс самостоятельной интеграции, так как теряется возможность попасть в них в режиме отладки. Но не всё так страшно, поэтому ниже инструкция)

30.10.2020    2324    Максим-777    14    

JSON примеры меню B2B web-приложения "Личный кабинет" на движке EDIbot для телефона/десктопа

WEB v8 Бесплатно (free)

Рассмотрим на примерах работу движка EDIbot при организации меню B2B "Личного кабинета" (мобильная версия, версия десктоп) грузовладельца WMS-системы.

29.10.2020    1030    SizovE    0    

Обмен с сайтом посредством Post-запроса, json

WEB v8 1cv8.cf Бесплатно (free)

Задача - передавать на сайт объекты с наименованием и уникальным идентификатором (УИ), которые изменяются в 1С. Также нужно сохранять историю отправленных пакетов.

29.10.2020    4497    John_d    26    

Организация HTTP публикации каталога товаров используя PostgREST

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу порядок установки настройки и использования PostgREST на примере организации каталога товаров.

05.10.2020    1179    malikov_pro    2    

Интеграционная прослойка(middleware) на Golang. Часть 5 - Обмен с 1С через HTTP-сервисы платформы

WEB v8 Бесплатно (free)

В этой статье научим прослойку отправлять данные в 1С, для этого используем HTTP-сервисы платформы. Обменяемся данными с новым справочником Клиенты. Но главное создадим HTTP-сервис для получения сообщений из очереди RabbitMQ.

28.09.2020    1903    dmitry-irk38    4    

Отладка http сервиса

WEB v8 Бесплатно (free)

При разработке http сервиса возникает ситуация, а как протестировать http сервис? Создали мы сервис, настроили шаблоны, передали, если нужно параметры, открываем браузер заполняем строку подключения и БАХ, ошибка. Что делать?

23.09.2020    3133    hpi    10    

Учимся создавать http сервисы (часть вторая). Передача параметра в http сервис

WEB v8 1cv8.cf Бесплатно (free)

Пошаговое руководство по созданию http-сервиса (часть вторая). Передача параметра в http сервис.

22.09.2020    6288    hpi    7    

Организация данных и вариант обработки для организации обмена с сайтом

WEB v8 1cv8.cf Бесплатно (free)

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

22.09.2020    1586    malikov_pro    4    

Формирование списка документов и скачивание печатной формы документа через веб-сайт с использованием HTTP-сервиса, плюс особенности авторизации

Практика программирования Обмен данными 1С WEB v8 1cv8.cf Бесплатно (free)

В статье показан пример, как реализовать формирование списка документов клиента/пользователя по коду, а затем скачать его (документа) печатную форму по ссылке

18.09.2020    1200    R_o_n_n_y    3    

Формирование HTTP запроса формата multipart/form-data с двоичными данными, используя ПотокВПамяти

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант формирования запроса

11.09.2020    3717    malikov_pro    11    

Ферма приложений на Kubernetes

WEB v8 Бесплатно (free)

При эксплуатации большого количества информационных систем 1С, предоставляющих интернет-сервисы, возникают проблемы, связанные с зависимостью от производительности и стабильности веб-сервера. Как объединить отдельно стоящие веб-сервера с помощью платформы Kubernetes для централизованного мониторинга всех опубликованных интернет-сервисов на конференции Infostart Event 2019 Inception рассказал программист компании BIA Technologies Владимир Кирбаба.

24.08.2020    1855    ComboBoy    1    

Использование шаблонного процессора для формирования HTML страниц

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу использование шаблонного процессора Handlebars запущенного на Node.js

24.08.2020    1763    malikov_pro    26    

Загрузка или обновление файла на яндекс диске через rest-api

Практика программирования Файловые протоколы обмена, FTP WEB v8 Бесплатно (free)

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

12.08.2020    3041    pavelpribytkin96    10    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    8066    YPermitin    22    

Загрузка или обновление файла на гугл диске

Практика программирования Файловые протоколы обмена, FTP WEB v8 1cv8.cf Бесплатно (free)

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

06.08.2020    2132    pavelpribytkin96    6    

Использование Yandex Translate (Яндекс.Переводчик)

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант подключения и использования Yandex Translate.

08.07.2020    5153    malikov_pro    8    

Когда хотим знать IP клиента...

WEB v8 Бесплатно (free)

В процессе разработки web приложения на 1С, и это не шутка))), а пожелание заказчика, возникла ситуации когда понадобилось знать, с какого IP подключался клиент.

03.07.2020    7389    IMihalev    10    

Ограничение доступа к HTTP публикациям 1С сервера используя NGINX

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант ограничения доступа к HTTP публикациям 1С сервера используя NGINX.

02.07.2020    7879    malikov_pro    7    

Структура обработки загрузки цен и остатков поставщика с примерами и комментариями

Внешние источники данных WEB v8 1cv8.cf Россия Бесплатно (free)

В статье опишу структуру обработки по загрузке цен и остатков от поставщика с примерами.

27.06.2020    1973    malikov_pro    0    

Вариант использования документа "Операция по Яндекс.Кассе" для других сервисов по оплате через интернет

WEB v8 1cv8.cf Россия Бесплатно (free)

В статье рассмотрю организацию эквайринга в УТ 11.4 и доработки для создания заказов на оплату к стороннему сервису, как пример Сбербанк.

24.06.2020    1641    malikov_pro    3    

Работа с AliExpress через API

WEB v8 Бесплатно (free)

В публикации опишу подход работы с API AliExpress и примеры кода.

23.06.2020    6928    malikov_pro    24    

История создания успешной системы чат-ботов на 1С

WEB v8 Бесплатно (free)

Использование чат-ботов в мессенджерах позволяет автоматизировать многие сложные бизнес-процессы путем диалога с системой через виртуального собеседника. О том, как создать универсальную систему ботов с бэкендом на 1С, работающую в Telegram, Viber и Facebook Messenger одновременно, на конференции Infostart Event 2019 Inception рассказал программист-фрилансер Константин Гейнрих.

21.05.2020    8744    CyberCerber    15    

Парсинг html страниц с выводом информации через JavaScript с использованием Selenium

WEB v8 1cv8.cf Бесплатно (free)

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

20.05.2020    6755    platonov.e    25    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг третий, WooCommerce, публикация категорий товаров

WEB v8 1cv8.cf Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции публикации категорий товаров в магазин WooCommerce, с комментариями внутри.

13.05.2020    3959    osivv    3    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок

WEB v8 Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции передачи фото из 1С, с комментариями внутри.

13.05.2020    2593    osivv    0    

Интеграция Camunda BPM и 1С

WEB Интеграция v8 Бесплатно (free)

Быстрый старт. Только практические примеры. Установка, запуск и публикация бизнес-процесса на сервере Camunda BPM. Управление бизнес-процессами из 1С при помощи Camunda REST API.

12.05.2020    5077    zhichkin    30    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Первый шаг

WEB v8 Россия Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции 1С с комментариями внутри.

28.04.2020    6034    osivv    23    

Выразительный Web API

WEB v8 Бесплатно (free)

Теория разработки Web API с ожидаемым поведением, за который не будет стыдно за пределами мира 1С.

27.04.2020    8366    nbeliaev    22