Интеграция 1С с Битрикс CRM через REST API

Публикация № 1085173 28.06.19

Интеграция с оборудованием и сервисами - Внешние источники данных

СРМ Битрикс выгрузка обмен

На фоне неутихающего обострения «бизнеса» по внедрению СРМ-систем остро встают вопросы обмена данными с уже существующими системами. В статье рассматривается выгрузка контактов, товаров и сделок из 1С в Битрикс CRM через REST API, приложена обработка для тестирования.

Существуют стандартные интеграции Битрикс и 1С, но они умеют плюс/минус ничего, зато с использованием rest api Битрикса можно получать и передавать практически все что угодно, двигать сделки по этапам, назначать ответственных и т.п.

В рассматриваемом примере подключение к Битриксу происходит через Вебхуки (приложение в Битриксе).  В обработке данные берутся с формы, естественно, ничего не мешает заменить их на нужные источники – справочники, документы, бизнес-процессы и т.д.

Для изучения и тестирования методов настоятельно рекомендуется битриксовское же приложение «Документация по REST API». СРМу там посвящен свой раздел.

Обработка тестировалась на следующих версиях ПО:

1С-Битрикс: Корпоративный портал 18.1.8

1С:Предприятие 8.3 (8.3.14.1779)

Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.70.39) (хотя конфигурация значения не имеет, в обработке используются только механизмы платформы)

 

Теория

Основная логика реализована в функции, которая действует по следующему алгоритму:

На входе получает структуру, где указан тип сущности, ее ORIGIN_ID (в боевых условиях для этих целей используются ГУИДы 1с) и структура всех полей  - типа названия, стоимости и т.д.

Ищет сущность в СРМ по ORIGIN_ID  

Если не находит – создает

Находит одну сущность – обновляет ее

Находит больше одной сущности – выдает ошибку

В случае успеха возвращает результат ок и Битрикс ИД созданной/обновленной сущности

В случае ошибки error и текст ошибки

&НаСервере
// Ищет и обновляет/создает сущность в СРМ Битрикс
// На входе - структура:
// СущностьСРМ - тип сущности, строка: contact, company, lead, deal, productsection, product 
// ORIGIN_ID - ГУИД объекта 1С
// fields - структура полей для обновления
// Возвращает:
// Результат - ок/error
// Значение - если ок - битрикс ИД созданного/обновленного элемента, если error - текст ошибки
Функция СоздатьОбновитьСущностьБитрикс(СтруктураСущности)
	//Готовим структуру для возврата
	СтруктураСозданияОбновленияСущности = Новый Структура("Результат, Значение");
	
	//Получаем настройки
	ЛогинПортала = ЛогинПортала;
	ПарольПортала = ПарольПортала;
	АдресПортала = АдресПортала;
	RestВебхук = RestВебхук;
	
	//Создаем соединение
	Соединение = Новый HTTPСоединение(АдресПортала, , ЛогинПортала, ПарольПортала,,, Новый ЗащищенноеСоединениеOpenSSL);
	
	//Получаем название сущности СРМ
	СущностьСРМ = СтруктураСущности.СущностьСРМ;
	
	//Формируем запрос
	HTTPЗапрос = Новый HTTPЗапрос(RestВебхук + "crm." + СущностьСРМ + ".list.json/");
	
	//Запрос для поиска
	СтрокаЗапроса = "";
	Если СтруктураСущности.СущностьСРМ = "productsection" ИЛИ СтруктураСущности.СущностьСРМ = "product" Тогда
		СтрокаЗапроса = СтрокаЗапроса + "filter[XML_ID]=" + КодироватьСтроку(СтруктураСущности.ORIGIN_ID, СпособКодированияСтроки.КодировкаURL);
	Иначе
		СтрокаЗапроса = СтрокаЗапроса + "filter[ORIGIN_ID]=" + КодироватьСтроку(СтруктураСущности.ORIGIN_ID, СпособКодированияСтроки.КодировкаURL);
	КонецЕсли;
	
	HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаЗапроса, КодировкаТекста.UTF8);
	HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);   
	СтруктураОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
	
	//Разбираем ответ
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтруктураОтвета);
	Попытка
		СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
	Исключение
		СтруктураСозданияОбновленияСущности.Результат = "error";
		СтруктураСозданияОбновленияСущности.Значение = ОписаниеОшибки() + " | " + СтруктураОтвета;
		Возврат СтруктураСозданияОбновленияСущности;
	КонецПопытки;
	
	
	//////////////
	Если СтруктураОтвета.Свойство("total") И СтруктураОтвета.total = 1 Тогда
		//Найдена одна сущность, обновляем
		Соединение = Новый HTTPСоединение(АдресПортала, , ЛогинПортала, ПарольПортала,,, Новый ЗащищенноеСоединениеOpenSSL);
		ИДНайденнойСущности = СтруктураОтвета.result[0].ID;
		HTTPЗапрос = Новый HTTPЗапрос(RestВебхук + "crm." + СущностьСРМ + ".update.json?id=" + ИДНайденнойСущности);
		
		СтрокаЗапроса = "";
		Для Каждого Поле Из СтруктураСущности.fields Цикл
			Если ТипЗнч(Поле.Значение) = Тип("Массив") И (Поле.Ключ = "CONTACT_IDS") Тогда
				//Это для связанных объектов
				Для Индекс = 0 По Поле.Значение.Количество()-1 Цикл
					СтрокаЗапроса = СтрокаЗапроса + "&fields[" + Поле.Ключ + "][" + Индекс + "]=" + КодироватьСтроку(Поле.Значение[Индекс], СпособКодированияСтроки.КодировкаURL);
				КонецЦикла;
			ИначеЕсли ТипЗнч(Поле.Значение) = Тип("Массив") Тогда
				//Сие для телефонов и почты
				Для Индекс = 0 По Поле.Значение.Количество()-1 Цикл
					СтрокаЗапроса = СтрокаЗапроса + "&fields[" + Поле.Ключ + "][" + Индекс + "][VALUE]=" + КодироватьСтроку(Поле.Значение[Индекс], СпособКодированияСтроки.КодировкаURL);
				КонецЦикла;
			Иначе
				СтрокаЗапроса = СтрокаЗапроса + "&fields[" + Поле.Ключ + "]=" + КодироватьСтроку(Поле.Значение, СпособКодированияСтроки.КодировкаURL);
			КонецЕсли
		КонецЦикла;
		
		HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаЗапроса, КодировкаТекста.UTF8);
		HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);   
		СтруктураОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
		
		//Разбираем ответ
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(СтруктураОтвета);
		СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
		
		Если СтруктураОтвета.Свойство("result") И СтруктураОтвета.result Тогда
			//Все ок
			СтруктураСозданияОбновленияСущности.Результат = "ок";
			СтруктураСозданияОбновленияСущности.Значение = ИДНайденнойСущности;
			Возврат СтруктураСозданияОбновленияСущности;
		ИначеЕсли СтруктураОтвета.Свойство("error") Тогда
			//Сервис вернул ошибку
			ТекстОшибки = "Ошибка при обновлении " + СущностьСРМ + ": " + СтруктураОтвета.error;
			Если СтруктураОтвета.Свойство("error_description") И СтруктураОтвета.error_description <> "" Тогда
				ТекстОшибки = ТекстОшибки + ", error_description: " + СтруктураОтвета.error_description;
			КонецЕсли;
			СтруктураСозданияОбновленияСущности.Результат = "error";
			СтруктураСозданияОбновленияСущности.Значение = ТекстОшибки;
			Возврат СтруктураСозданияОбновленияСущности;
		Иначе
			//Прочая неизвестная хрень
			СтруктураСозданияОбновленияСущности.Результат = "error";
			СтруктураСозданияОбновленияСущности.Значение = "Неизвестная ошибка при обновлении " + СущностьСРМ + " с id=" + ИДНайденнойСущности;
			Возврат СтруктураСозданияОбновленияСущности;
		КонецЕсли;
		
	ИначеЕсли СтруктураОтвета.Свойство("total") И СтруктураОтвета.total = 0 Тогда		
		//Не найдено, создаем
		Соединение = Новый HTTPСоединение(АдресПортала, , ЛогинПортала, ПарольПортала,,, Новый ЗащищенноеСоединениеOpenSSL);
		HTTPЗапрос = Новый HTTPЗапрос(RestВебхук + "crm." + СущностьСРМ + ".add.json/");
		
		СтрокаЗапроса = "";
		
		Если СтруктураСущности.СущностьСРМ = "productsection" ИЛИ СтруктураСущности.СущностьСРМ = "product" Тогда
			СтрокаЗапроса = СтрокаЗапроса + "fields[XML_ID]=" + КодироватьСтроку(СтруктураСущности.ORIGIN_ID, СпособКодированияСтроки.КодировкаURL);
		Иначе
			СтрокаЗапроса = СтрокаЗапроса + "fields[ORIGIN_ID]=" + КодироватьСтроку(СтруктураСущности.ORIGIN_ID, СпособКодированияСтроки.КодировкаURL);
		КонецЕсли;
		
		Для Каждого Поле Из СтруктураСущности.fields Цикл
			Если ТипЗнч(Поле.Значение) = Тип("Массив") И (Поле.Ключ = "CONTACT_IDS") Тогда
				//Это для связанных объектов
				Для Индекс = 0 По Поле.Значение.Количество()-1 Цикл
					СтрокаЗапроса = СтрокаЗапроса + "&fields[" + Поле.Ключ + "][" + Индекс + "]=" + КодироватьСтроку(Поле.Значение[Индекс], СпособКодированияСтроки.КодировкаURL);
				КонецЦикла;
			ИначеЕсли ТипЗнч(Поле.Значение) = Тип("Массив") Тогда
				//Сие для телефонов и почты
				Для Индекс = 0 По Поле.Значение.Количество()-1 Цикл
					СтрокаЗапроса = СтрокаЗапроса + "&fields[" + Поле.Ключ + "][" + Индекс + "][VALUE]=" + КодироватьСтроку(Поле.Значение[Индекс], СпособКодированияСтроки.КодировкаURL);
				КонецЦикла;
			Иначе
				СтрокаЗапроса = СтрокаЗапроса + "&fields[" + Поле.Ключ + "]=" + КодироватьСтроку(Поле.Значение, СпособКодированияСтроки.КодировкаURL);
			КонецЕсли
		КонецЦикла;
		
		HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаЗапроса, КодировкаТекста.UTF8);
		HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);   
		СтруктураОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
		
		//Разбираем ответ
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(СтруктураОтвета);
		СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
		
		//////////////
		Если СтруктураОтвета.Свойство("result") И СтруктураОтвета.result <> "" Тогда
			СтруктураСозданияОбновленияСущности.Результат = "ок";
			СтруктураСозданияОбновленияСущности.Значение = Формат(СтруктураОтвета.result, "Л=ru_RU; ЧГ=0");
			Возврат СтруктураСозданияОбновленияСущности;
		ИначеЕсли СтруктураОтвета.Свойство("error") Тогда
			//Сервис вернул ошибку
			ТекстОшибки = "Ошибка при создании " + СущностьСРМ + ": " + СтруктураОтвета.error;
			Если СтруктураОтвета.Свойство("error_description") И СтруктураОтвета.error_description <> "" Тогда
				ТекстОшибки = ТекстОшибки + ", error_description: " + СтруктураОтвета.error_description;
			КонецЕсли;
			СтруктураСозданияОбновленияСущности.Результат = "error";
			СтруктураСозданияОбновленияСущности.Значение = ТекстОшибки;
			Возврат СтруктураСозданияОбновленияСущности;
		Иначе
			//Прочая неизвестная хрень
			СтруктураСозданияОбновленияСущности.Результат = "error";
			СтруктураСозданияОбновленияСущности.Значение = "Неизвестная ошибка при создании " + СущностьСРМ;
			Возврат СтруктураСозданияОбновленияСущности;
		КонецЕсли;
	ИначеЕсли СтруктураОтвета.Свойство("total") И СтруктураОтвета.total > 1 Тогда
		//Найдено больше одной компании, обтекаем
		СтруктураСозданияОбновленияСущности.Результат = "error";
		СтруктураСозданияОбновленияСущности.Значение = "Нарушена целостность данных. Найдено больше одной " + СущностьСРМ + " с одинаковым ORIGIN_ID";
		Возврат СтруктураСозданияОбновленияСущности;
	ИначеЕсли СтруктураОтвета.Свойство("error") Тогда
		//Сервис вернул ошибку
		ТекстОшибки = "Ошибка при поиске " + СущностьСРМ + ": " + СтруктураОтвета.error;
		Если СтруктураОтвета.Свойство("error_description") И СтруктураОтвета.error_description <> "" Тогда
			ТекстОшибки = ТекстОшибки + ", error_description: " + СтруктураОтвета.error_description;
		КонецЕсли;
		СтруктураСозданияОбновленияСущности.Результат = "error";
		СтруктураСозданияОбновленияСущности.Значение = ТекстОшибки;
		Возврат СтруктураСозданияОбновленияСущности;
	Иначе
		//Прочая неизвестная хрень
		СтруктураСозданияОбновленияСущности.Результат = "error";
		СтруктураСозданияОбновленияСущности.Значение = "Неизвестная ошибка при поиске " + СущностьСРМ;
		Возврат СтруктураСозданияОбновленияСущности;
	КонецЕсли;
КонецФункции

 

Использование обработки для тестирования

Указываем настройки

Адрес  портала в виде «portal.mysite.com»  ( без https:// )

Логин и пароль портала если используется http авторизация

Вебхук в виде «rest/1234/abc7skjbv1vyqxb2/» - т.е. точка доступа и собственно вебхук в одной строке

 

Отправка

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

 

Результат на портале

Скачать файлы

Наименование Файл Версия Размер
Интеграция 1С с Битрикс CRM через REST API:

.epf 11,72Kb
53
.epf 1.0 11,72Kb 53 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. osivv 208 29.06.19 10:51 Сейчас в теме
Браво!
Наконец-то и Битриксе стали что-то делать в направлении REST API, до классического правда далеко и не соответствует, но все таки. Потому что, на мой сугубо субъективный взгляд, не оптимально в "СтрокаЗапроса" запихивать все передаваемые "Ключ=Значение", а если их штук 20? Если дадите ссылки на документацию, буду признателен, я внятную не нашел, не говоря уже о каких-то примерах использования (чисто для расширения своих компьютерных знаний, в работе использую другой).
А разве нельзя использовать обработчик ошибок по коду ответа, например КодОтвета=200 (всё ОК)? Потому что, проще выделить обработчик ответа в одну функцию и по коду понимать ошибка у нас или нет. Хотя не удивлюсь, что битрикс (как обычно) пошел своим, уникальным путём.
А картинки таким макаром можно публиковать?
По моему, это всё-таки не REST API, а как вы сами написали "Вебхуки".
Через "Postman" или "curl" тестировать можно?
В общем жирный "+" в карму.
2. muzipov 62 29.06.19 17:05 Сейчас в теме
Спасибо за оценку!

(1)
Если дадите ссылки на документацию, буду признателен

Документация по REST Битрикса https://dev.1c-bitrix.ru/rest_help/, также она реализована в виде приложения в самом Битриксе, там есть примеры и оттуда можно сразу запускать код.

(1)
А разве нельзя использовать обработчик ошибок по коду ответа, например КодОтвета=200 (всё ОК)?

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

(1)
А картинки таким макаром можно публиковать?

Методы REST-сервиса получают файлы в виде строки, закодированной в base64

(1)
Через "Postman" или "curl" тестировать можно?

Конечно можно, я для этих целей использую SOAP UI
3. ltfriend 784 30.06.19 08:19 Сейчас в теме
(1) а как оптимально передавать параметры в http запросе?
5. kuntashov 420 30.06.19 20:32 Сейчас в теме
(3) REST API битриксоиды реализовали с отступлением от канонов, например, они не различают "глаголы" и для них методы GET и POST работают одинаково, любой метод API можно вызывать как GET, так и POST запросом с одинаковым эффектом. Зато большой запрос можно отправлять POSTом (и это рекомендуется), тело запроса в этом случае формируется также как и query-string (application/x-www-form-urlencoded).
7. ltfriend 784 01.07.19 09:23 Сейчас в теме
(5) я задавал вопрос автору первого комментария конкретно к этому предложению:
Потому что, на мой сугубо субъективный взгляд, не оптимально в "СтрокаЗапроса" запихивать все передаваемые "Ключ=Значение", а если их штук 20?

Мне стало интересно, знает ли он более оптимальную передачу параметров в POST запросе, помимо передачи их строкой (application/x-www-form-urlencoded).
4. kuntashov 420 30.06.19 20:24 Сейчас в теме
> Существуют стандартные интеграции Битрикс и 1С, но они умеют плюс/минус ничего

А вы когда последний раз пробовали?

Модуль 1С:Синхронизация с Битрикс24 работает через REST API, первые версии были выпущены более года назад.
Сегодня публикуются в виде расширения.

В общем и целом работает хорошо и уж точно, если требуется в обмене что-то совсем специфичное, то лучше разработку вести именно на базе этого модуля, а не с нуля, т.к. куча нюансов в нем уже решена, например, механизм контроля изменений через оффлайн-событий и уже реализовавнный лонг-поллинг для "онлайн" обмена.
krylovim; +1 Ответить
6. kuntashov 420 30.06.19 20:33 Сейчас в теме
(4) Вот здесь, например, релизы модуля для УТ https://1c.1c-bitrix.ru/intranet/download.php?section=102557
8. marengo75 29.04.20 13:40 Сейчас в теме
Подскажите Сергей. а нечто подобное можно сделать для 1с 7.7 ?
9. muzipov 62 16.05.20 17:33 Сейчас в теме
(8) В теории наверное можно, но это вне сферы моих интересов.
10. elinorkelt 22.12.20 10:35 Сейчас в теме
А какой метод для вебхука вы использовали?
Оставьте свое сообщение

См. также

Практический пример настройки обмена с казначейством в БГУ Промо

Внешние источники данных v8 БГУ Россия Госбюджет Абонемент ($m)

Материалов для бюджетников, всегда не хватает, особенно с практическими примерами. Попробую описать процесс настройки с нуля обмена с ОФК/УФК на примере выгрузки документа «Заявки на кассовый расход» из БГУ и импорта в СЭД.

1 стартмани

13.04.2012    69397    Vestr    17    

Вебхук. Путь Телеграма

Внешние источники данных Интеграция с сервисами v8 Абонемент ($m)

Долгое (на самом деле нет) и нелегкое путешествие телеграма к неведомым (из за РКН) конфигурациям 1С. Памятка себе.

1 стартмани

03.10.2019    24429    platonov.e    26    

Описание формата внутреннего представления данных 1С в контексте обмена данными

Внешние источники данных Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    21989    Dementor    31    

Обмен большими данными между клиентом и сервером

Внешние источники данных v8 Абонемент ($m)

В статье рассматривается вопрос передачи больших объемов данных, превышающих теоретический лимит сеансовых данных (4Гб за вызов) (они же временное хранилище) как с клиента на сервер, так и в обратном направлении.

1 стартмани

27.08.2019    16019    logos    32    

АИТП. Простой, событийно-управляемый обмен данными

Внешние источники данных v8 1cv8.cf Абонемент ($m)

В статье, на примере обмена с ЗУП 3.1, демонстрируется механизм событийно-управляемого взаимодействия конфигурации АИТП с прикладными решениями на платформе 1С:Предприятие.

1 стартмани

04.07.2019    5350    blackhole321    0    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Внешние источники данных Обмен через XML WEB Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

22.04.2019    42200    riposte    69    

Аутентификация на внешних сервисах посредством OAuth

Информационная безопасность Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Пример подключения к сервисам Google из 1С с помощью протокола OAuth и получения данных с внешнего сервиса.

1 стартмани

03.04.2019    26910    binx    134    

Телеграм + 1С + Вебхуки + Апач + Самоподписанный сертификат

Внешние источники данных v8 Абонемент ($m)

Много строк исписано про интеграцию Телеграма и 1С. Но нигде не увидел полной инструкции по установке и настройке вебхуков. Попробую её написать.

1 стартмани

26.02.2019    20354    alexlx    39    

Универсальное расширение 1С для Google Таблиц и Документов

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Эта статья для тех, кто использует G Suite и 1С. Готовое решение для выгрузки отчетов и печатных форм из баз 1С в Google Диск в формате Google Таблиц и Google Документов. Информация по его внедрению. Описание создания и настройки проекта в GCP.

1 стартмани

31.01.2019    20515    Maria18    38    

Применение средств MS SQL R service для 1С

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Некоторое время назад Microsoft добавила в MS SQL сервер службы машинного обучения, позволяющие выполнять программный код на языках программирования R и Python. В статье будет продемонстрирована общая схема и принцип того, как можно использовать данные службы в контексте разработки на 1С. 

1 стартмани

25.11.2018    14840    Robbi    14    

Связка 1С и Telegram. Отправка стикеров

Внешние источники данных Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

В качестве факультатива сейчас изучаю возможности связки 1С и мессенджера Telegram. И возник вопрос, как помимо сообщений, посылать в ответ на действия пользователя произвольный стикер? Решению этой мини задачи и посвящена данная статья.

1 стартмани

31.07.2018    13742    Skin123    5    

Опыт интеграции мессенджера Telegram c 1C

Внешние источники данных Интеграция с сервисами v8 Абонемент ($m)

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

19.07.2018    30377    VachKirp    45    

Опять про sFTP и вообще

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Памятка для разработчика по работе с FTP, FTPs и sFTP.

1 стартмани

23.05.2018    23919    leongl    25    

Использование регулярных выражений (RegExp) в Linux

Сервисные утилиты Инструменты администратора БД Внешние источники данных v8 Абонемент ($m)

Описывается способ использования регулярных выражений (RegExp) в Linux с использованием тех же компонентов, что и в Windows (COM-объекты VBScript.RegExp).

1 стартмани

20.04.2018    9253    vsbronnikov    12    

Практикум по созданию обменов данными через протокол oData «за полдня»

Внешние источники данных Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Про oData и 1С было довольно много написано, однако же описания работы и с чтением, и с записью данных через JSON я так и не встретил ни на этом ресурсе ни на других. Попробую раскрыть эту тему.

1 стартмани

20.03.2018    27943    timm00    64    

Практика доступа в базу 1С через протокол oData. Изменение данных

Внешние источники данных Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

30.12.2017    40863    Dementor    38    

Инструкция по настройке загрузки из ФСС электронных листков нетрудоспособности ЭЛН в документ 1С Начисление по больничному листу

Внешние источники данных Зарплата Зарплата v8 КА1 ЗУП2.5 УПП1 Россия БУ ФОМС, ПФ, ФСС Абонемент ($m)

Клиент (страхователь) работает в программе "1С Зарплата и управление персоналом ред.2.5" сдает отчетность через Контур или СБИС и не собирается подключать 1С-Отчетность, при этом хочет загружать электронные больничные в программу 1С Зарплата. Подобная ситуация может быть и для других конфигураций в которых есть документ "Начисление по больничному листу", например Комплексная автоматизация 1.1, Управление производственным предприятием 1.3.

1 стартмани

28.11.2017    183978    rusmil    126    

Google OAuth и мобильное приложение

Мобильная разработка Обмен данными и распределенная БД Внешние источники данных WEB v8 v8::Mobile 1cv8.cf Абонемент ($m)

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

1 стартмани

29.08.2017    12013    stveans@gmail.com    3    

Опыт интеграции 1С с системой Меркурий (Часть 5)

Внешние источники данных Интеграция с сервисами Оптовая торговля Оптовая торговля v8::ОУ 1cv8.cf Сельское хозяйство и рыболовство Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Пищевая промышленность Россия БУ УУ Абонемент ($m)

Описывается опыт внедрения в 1С системы работы с ветеринарно-сопроводительными документами Меркурий. Интеграция еще в процессе и приветствуется обмен опытом.

1 стартмани

10.07.2017    62339    axxell    33    

1С и MongoDB: дружба начинается с RESTHeart'а

Внешние источники данных v8 Абонемент ($m)

Краткое описание того, как подружить MongoDB и 1С: Предприятие используя один из предлагаемых на официальном сайте RESTFul сервисов - RESTHeart.

1 стартмани

03.07.2017    44553    Silenser    10    

Что такое HMAC и JWT и как это использовать в 1С

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Лёгкая статья про стандарты HMAC и JWT с небольшой теорией и исходным кодом.

1 стартмани

20.04.2017    24115    keypax    51    

Получение информации об экспортных свойствах и методах объектов 1С через COM.

Разработка внешних компонент Внешние источники данных v8 1cv8.cf Абонемент ($m)

Как из тела COM-объекта или внешней компоненты определить состав свойств и методов объектов 1С агрегатных типов? Все ответы здесь.

1 стартмани

03.09.2013    14813    gislink    5    

Синхронизация с сервером 1С во внешнем соединении

Внешние источники данных Универсальные функции v8 1cv8.cf Абонемент ($m)

Позволяет установить время удаленного SQL-сервера на компьютере при выполнении обмена через Внешнее соединение

1 стартмани

27.09.2011    13776    sml    6