Подписка на события, преобразование объекта в JSONAPI, отправка в RabbitMQ

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

Разработка - Системная интеграция - Внешние источники данных

JSON JSONAPI RabbitMQ MQ AMQP подписка на события событийно-ориентированная архитектура EDA SOA

25
Обработка содержит функции: - сериализация объекта 1с в JSONAPI - отправка в RabbitMQ по HTTP

JSONAPI - соглашение об обмене данными о ресурсах в формате JSON.

RabbitMQ - брокер сообщений реализующий протокол AMQP, который имеет менеджмент плагин, позволяющий отправлять сообщения по протоколу HTTP.

Для целей подписки на события "При изменении" в любом справочнике(или документе) можно создать соответствующую подписку в конфигураторе 1с, причем одну на все типы объектов справочников и документов. JSONAPI позволяет указывать тип объекта и легко десериализовать на многих языках программирования.

// Создает exchange имя которого равно строке соединения с базой 1с
Функция PutExchange(Соединение, Заголовки, обработкаJSONAPI, VirtualHost = "")
	exchange= СтрокаСоединенияИнформационнойБазы();
	vhost= ?(VirtualHost="", "%2f", VirtualHost);
	Запрос = Новый HTTPЗапрос("/api/exchanges/"+vhost+"/"+exchange, Заголовки);
	телоСтрока = обработкаJSONAPI.JSON(new Структура("type", "topic"));
	Запрос.УстановитьТелоИзСтроки(телоСтрока, "CESU-8");
	Соединение.Записать(Запрос, "c:\shared\rmq1c-http-response.txt");
	возврат Запрос.АдресРесурса + Символы.ВК + телоСтрока;
КонецФункции

//отправляет ссылку в формате JSONAPI в exchange имя которого равно строке соединения с базой 1с
//routing key равен полному имени типа ссылки
Функция ОтправитьJSONAPIвRMQ(ссылка, обработкаJSONAPI, VirtualHost = "")
	Попытка
		Соединение = Новый HTTPСоединение("rmq.local", 15672);
	Исключение
		//Сообщить("Не удалось установить соединение с сервером онлайн-проверки:" 
		//+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
		Возврат ИнформацияОбОшибке().Описание;
	КонецПопытки;
	Заголовки = Новый Map();
	Заголовки.Вставить("authorization", "Basic Ym90MWM6Ym90MWM=");  
	Заголовки.Вставить("Content-Type", "application/json");
	PutExchange(Соединение, Заголовки, обработкаJSONAPI, VirtualHost);
	exchange= СтрокаСоединенияИнформационнойБазы();
	vhost= ?(VirtualHost="", "%2f", VirtualHost);
	Запрос = Новый HTTPЗапрос("/api/exchanges/"+vhost+"/"+exchange+"/publish", Заголовки);
	payloadJSON = обработкаJSONAPI.j_Экранировать(обработкаJSONAPI.JSONAPI(ссылка));
	телоСтруктура = new Структура();
	телоСтруктура.Вставить("properties",new Структура());
	телоСтруктура.Вставить("routing_key", ссылка.Метаданные().ПолноеИмя());
	телоСтруктура.Вставить("payload",payloadJSON);
	телоСтруктура.Вставить("payload_encoding","string");
	телоСтрока = обработкаJSONAPI.JSON(телоСтруктура);
	Запрос.УстановитьТелоИзСтроки(телоСтрока, "CESU-8");
	Соединение.ОтправитьДляОбработки(Запрос, "c:\shared\rmq1c-http-response.txt");
	возврат Запрос.АдресРесурса + Символы.ВК + телоСтрока;
КонецФункции

//отправка ссылки, с указанием обработки JSONAPI, в которой находится функция сериализации в JSONAPI
Процедура ОтправитьВОчередь(Ссылка) Экспорт
	ОтправитьJSONAPIвRMQ(Ссылка, Обработки.JSONAPI.Создать());
КонецПроцедуры

//отправляем в фоновом режиме, чтобы не тормозить процессы
Процедура ПриЗаписиСправочникаПриЗаписи(Источник, Отказ) Экспорт
	Параметры = Новый Массив;
	Параметры.Добавить(Источник.ссылка);
	ФоновыеЗадания.Выполнить("RMQ.ОтправитьВОчередь", 
		Параметры, Новый УникальныйИдентификатор, "Пример асинхронной концепции программирования");
	//ОтправитьВОчередь(Источник);	
КонецПроцедуры

В веб интерфейсе RabbitMQ указываем в какой очереди и по каким routing key (типы объектов) мы хотим получать сообщения с данными.

Недостаток: событие "при записи" происходит перед транзакцией БД, а не после, поэтому если транзакция не пройдет, то событие "запись" отправленное куда либо, будет фальшивым.

протестировано на 1С:Предприятие 8.2 (8.2.19.130)

Перем j_СоответствиеТиповИИмен;
Перем j_Сч;

// Служебная функция из арсенала 1С. Название говорит само за себя 
Функция j_ОпределитьПоСсылкеИмяТипа(СсылкаНаОбъект) Экспорт
	
	Если СсылкаНаОбъект = Неопределено Тогда
		Возврат "";
	КонецЕсли;
	
	ТипОбъекта = ТипЗнч(СсылкаНаОбъект);
	
	j_СоответствиеТиповИИмен = Новый Соответствие();
	СтрокаСоответствия = j_СоответствиеТиповИИмен.Получить(ТипОбъекта);
	
	Если СтрокаСоответствия = Неопределено Тогда 
		
		МетаданныеСсылки = СсылкаНаОбъект.Метаданные();
		
		Если Метаданные.Справочники.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "СправочникСсылка";
			
		ИначеЕсли Метаданные.Документы.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "ДокументСсылка";
			
		ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "ПланВидовХарактеристикСсылка";
			
		ИначеЕсли Метаданные.ПланыСчетов.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "ПланСчетовСсылка";
			
		ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "ПланВидовРасчетаСсылка";
			
		ИначеЕсли Метаданные.ПланыОбмена.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "ПланОбменаСсылка";
			
		ИначеЕсли Метаданные.Задачи.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "ЗадачаСсылка";
			
		ИначеЕсли Метаданные.Перечисления.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "ПеречислениеСсылка";
			
		ИначеЕсли Метаданные.БизнесПроцессы.Содержит(МетаданныеСсылки) Тогда
			
			ИмяТипа = "БизнесПроцессСсылка";
			
		Иначе
			
			ИмяТипа = "";
			
		КонецЕсли;
		
		j_СоответствиеТиповИИмен.Вставить(ТипОбъекта, ИмяТипа);
		
		Возврат ИмяТипа;
	
	КонецЕсли;
	
	Возврат СтрокаСоответствия;
	
КонецФункции

// Служебная функция из арсенала 1С. Название говорит само за себя 
Функция j_ОпределитьПоСсылкеПредставление(СсылкаНаОбъект) Экспорт
	
	Если СсылкаНаОбъект = Неопределено Тогда
		Возврат "";
	КонецЕсли;
	
	МетаданныеСсылки = СсылкаНаОбъект.Метаданные();
	ИмяТипа = j_ОпределитьПоСсылкеИмяТипа(СсылкаНаОбъект) + "." + МетаданныеСсылки.Имя;
	Возврат ИмяТипа;
	
КонецФункции

// Экранирует спецсимвоы в строке
Функция j_Экранировать(Знач Строка) Экспорт
	Строка = СтрЗаменить(Строка, "\", "\\");
    Строка = СтрЗаменить(Строка,Символы.ПС,"\n");
    Строка = СтрЗаменить(Строка,Символы.ВК,"\r"); 
	Строка = СтрЗаменить(Строка,Символы.Таб,"\t");
	Строка = СтрЗаменить(Строка,"""","\""");
	//Строка = СтрЗаменить(Строка,"'","\'");
	//Строка = СтрЗаменить(Строка, "\", "\\");
    Возврат Строка
КонецФункции

Функция JSON(Значение, Форматировать = Истина, Отступ  = "") Экспорт
	
	JSONРазделСтрок = Символы.ВК + Символы.ПС; 
	Разделитель	= "";
    ТипЗн = ТипЗнч(Значение);
	Отступ = ?(Форматировать, Отступ, "");
	
	// Строка
	Если ТипЗн = Тип("Строка") Тогда
        Стр = """" + j_Экранировать(Значение) + """"

	// Число или Булево
    ИначеЕсли ТипЗн = Тип("Число") ИЛИ ТипЗнч(Значение) = Тип("Булево") Тогда
        Стр = XMLСтрока(Значение)

	// Дата	
    ИначеЕсли ТипЗн = Тип("Дата") Тогда
        Стр = """" + ?(ЗначениеЗаполнено(Значение),XMLСтрока(Значение),"") + """"

	// Структура Данных Рекурсивно	
	ИначеЕсли ТипЗн = Тип("Структура") Тогда
        Стр = JSONРазделСтрок + Отступ + "{";
        Для Каждого Параметр Из Значение Цикл
            Стр = Стр + Разделитель + JSONРазделСтрок + Отступ + """" + Параметр.Ключ + """:" + JSON(Параметр.Значение, Форматировать, Отступ + Символы.Таб);
			Разделитель = ","
        КонецЦикла;
        Стр = Стр + JSONРазделСтрок + Отступ + "}";
		
	// Массив Рекурсивно
    ИначеЕсли ТипЗн = Тип("Массив") Тогда
        Стр = Отступ + "[";
		Для Каждого Элемент Из Значение Цикл
            Стр = Стр + Разделитель + JSONРазделСтрок + Отступ + JSON(Элемент, Форматировать, Отступ + Символы.Таб);
            Разделитель = ","
        КонецЦикла;
        Стр = Стр + JSONРазделСтрок + Отступ + "]";

	// Таблица Значеий как массив структур Рекурсивно	
	ИначеЕсли ТипЗн = Тип("ТаблицаЗначений") Тогда
        Колонки = Значение.Колонки;
        Массив = Новый Массив;
        Для Каждого СтрокаТЗ Из Значение Цикл
            Структура = Новый Структура;
            Для Каждого Колонка Из Колонки Цикл
                Структура.Вставить(Колонка.Имя,СтрокаТЗ[Колонка.Имя])
            КонецЦикла;
            Массив.Добавить(Структура);
        КонецЦикла;
        Стр = JSON(Массив, Форматировать, Отступ)

	// Ссылка на объект
	ИначеЕсли Найти(Строка(ТипЗн), "ссылка") >0 Тогда
		Структура = Новый Структура;
		
		ИмяТипа = j_ОпределитьПоСсылкеИмяТипа(Значение);                
		
		Если Не Значение.Пустая()  Тогда
			Если ИмяТипа = "СправочникСсылка" Тогда
				Структура.Вставить("UUID",XMLСтрока(Значение));
			ИначеЕсли ИмяТипа = "ДокументСсылка" Тогда
				Структура.Вставить("UUID",XMLСтрока(Значение));
				Структура.Вставить("НомерДокумента",Значение.Номер);
				Структура.Вставить("ДатаДокумента",Значение.Дата);
			КонецЕсли;
			Структура.Вставить("ТипОбъекта",j_ОпределитьПоСсылкеПредставление(Значение));
			Структура.Вставить("Представление",j_Экранировать(Значение));
		Иначе
			Структура.Вставить("ТипОбъекта",j_ОпределитьПоСсылкеПредставление(Значение));
			Структура.Вставить("Представление",Неопределено);
		КонецЕсли;
		Стр = Отступ + JSON(Структура, Форматировать, Отступ + Символы.Таб);
		
	// Коллекция Объектов - Не сериализуется
	ИначеЕсли Найти(Строка(ТипЗн), "менеджер") >0 Тогда
		Структура = Новый Структура;
		Структура.Вставить("ТипОбъекта",j_Экранировать(Значение));
		Стр = Отступ + JSON(Структура, Форматировать, Отступ + Символы.Таб);		
		
	// Неопределенка
    ИначеЕсли не значениеЗаполнено(Значение) Тогда
        Стр = "null"
		
	// Все остальное не сериализуется
	Иначе
		//Стр = "null" + j_Экранировать(Значение);
		data = Новый Структура;
		data.Вставить("type", Значение.Метаданные().ПолноеИмя());
		попытка
			data.Вставить("id",строка(Значение.ссылка.УникальныйИдентификатор()));
		исключение
			data.Вставить("id",j_Экранировать(Значение));
		конецпопытки;
		Структура = Новый Структура;
		Структура.Вставить("data", data);
		Стр = Отступ + JSON(Структура, Форматировать, Отступ + Символы.Таб);		
    КонецЕсли;

    Возврат Стр
КонецФункции

Процедура ДобавитьВСтруктуру(Имя, Значение, attributes, relationships)
	ТипЗн = ТипЗнч(Значение);
	Если не значениеЗаполнено(Значение)Тогда
	ИначеЕсли ТипЗн = Тип("Строка") или ТипЗн = Тип("Число") ИЛИ ТипЗнч(Значение) = Тип("Булево") или ТипЗн = Тип("Дата")
		или ТипЗн = Тип("Структура") 
		//или ТипЗн = Тип("Массив") или ТипЗн = Тип("ТаблицаЗначений")
		Тогда
		attributes.Вставить(Имя, Значение);
	иначе
		relationships.Вставить(Имя, Значение);
	Конецесли;
КонецПроцедуры

Функция JSONAPI(Ссылка)Экспорт
	Ссылка = Ссылка.ссылка;
	data = Новый Структура();  
	//Объект = справочники.Контрагенты.найтипокоду("000000001").ПолучитьОбъект();
	//Объект.Метаданные().ПолноеИмя()
	МД = ссылка.Метаданные();
	ПолноеИмяТипа = МД.ПолноеИмя();
	data.Вставить("type", ПолноеИмяТипа);
	data.Вставить("id", Строка(Ссылка.УникальныйИдентификатор()));
	attributes = Новый Структура;
	relationships = Новый Структура;
	included = Новый Массив;
	Для каждого Реквизит из МД.СтандартныеРеквизиты Цикл
		ДобавитьВСтруктуру(Реквизит.Имя, Ссылка[Реквизит.Имя], attributes, relationships);
	КонецЦикла;     
	Для каждого Реквизит из МД.Реквизиты Цикл
		ДобавитьВСтруктуру(Реквизит.Имя, Ссылка[Реквизит.Имя], attributes, relationships);
	КонецЦикла;     
	Для каждого ТабличнаяЧасть из МД.ТабличныеЧасти Цикл
		Значение = Ссылка[ТабличнаяЧасть.Имя].Выгрузить();
		Колонки = Значение.Колонки;
		Массив = Новый Массив;
		Для Каждого СтрокаТЗ Из Значение Цикл
			attributes1 = Новый Структура();
			relationships1 = Новый Структура();
			Для Каждого Колонка Из Колонки Цикл
				ДобавитьВСтруктуру(Колонка.Имя, СтрокаТЗ[Колонка.Имя], attributes1, relationships1);
			КонецЦикла;
			type = ПолноеИмяТипа + "." + ТабличнаяЧасть.Имя;
			id = Строка(Ссылка.УникальныйИдентификатор()) + "-" + СтрокаТЗ.НомерСтроки;
			item1 = Новый Структура("type,id", type, id);
			Массив.Добавить(item1);
			item = Новый Структура("type,id", type, id);
			item.Вставить("attributes", attributes1);
			item.Вставить("relationships", relationships1);
			included.Добавить(item);
		КонецЦикла;
		relationships.Вставить(ТабличнаяЧасть.Имя, Новый Структура("data", Массив));
	КонецЦикла;
	Если attributes.Количество()>0 тогда 
		data.Вставить("attributes", attributes);
	КонецЕсли;
	Если relationships.Количество()>0 тогда 
		data.Вставить("relationships", relationships);
	КонецЕсли;
	Если included.Количество()>0 тогда 
		data.Вставить("included", included);
	КонецЕсли;
	Структура = Новый Структура("data", data);
	возврат JSON(Структура);
КонецФункции

 

25

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

Наименование Файл Версия Размер
Преобразование объекта в JSONAPI
.epf 11,77Kb
23.02.18
19
.epf 11,77Kb 19 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. nomadon 377 07.05.18 19:35 Сейчас в теме
Спасибо за возможность копипаста)
maxopik2; Irwin; +2 Ответить
Оставьте свое сообщение

См. также

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

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Внешние источники данных Интеграция

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

1 стартмани

03.10.2019    2199    5    platonov.e    10       

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

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

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

1 стартмани

06.09.2019    4184    4    Dementor    27       

Согласование задач из Outlook 50

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

Согласование задач непосредственно из почтовой программы, в моем случае Outlook 2013 без каких-либо дополнительных настроек. Из почты отправляется GET запрос к HTTP-сервису 1С, который в свою очередь выполняет задачу.

1 стартмани

06.09.2019    2134    6    duhh    17       

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

Статья Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Внешние источники данных

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

1 стартмани

27.08.2019    3275    1    logos    17       

Телеграм 1С – почти коробка 40

Инструменты и обработки Программист Пользователь Архив с данными v8 Windows Абонемент ($m) Внешние источники данных

Почему это решение называется «почти коробка»? Потому, что это почти коробочное решение. С его помощью, просто добавив подсистему в конфигурацию, уже можно начинать взаимодействовать с мессенджером Telegram.

10 стартмани

20.08.2019    3874    15    zfilin    65       

Экспортные процедуры и функции общих модулей БП 3.0, ЗУП 3.1, УТ 11 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные функции

Таблицы экспортных процедур и функций общих модулей конфигураций БП КОРП 3.0, ЗУП КОРП 3.1, УТ 11 + обработка по формированию такой таблицы из любой конфигурации.

14.06.2019    3410    329    SanchoD    29       

Работа с графической схемой в объектной модели DOM 39

Статья Программист Конфигурация (md, cf) v8 v8::УФ Абонемент ($m) Универсальные функции

Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

1 стартмани

04.06.2019    3174    4    botokash    19       

Программное формирование картинки в 1С:Предприятие 8.3.9 (ПотокВПамяти / ЗаписьДанных) 50

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

В статье представлен код программного формирования картинки (двоичные данные) без всяких внешних компонент, без формирования строки Base64, используя лишь встроенные механизмы 1С предприятие 8.3.9 (объекты ПотокВПамяти и ЗаписьДанных). Сам по себе код формирования картинки не несёт ничего нового. Всё описано в википедии. Захотелось попробовать новые методы, но никак не доходитили руки. В приложении обработка практически с этим же кодом.

1 стартмани

16.05.2019    4219    5    yku    7       

Шаблон http-сервиса для вашего проекта 64

Инструменты и обработки Программист Архив с данными v8 v8::Mobile 1cv8.cf Абонемент ($m) Внешние источники данных WEB Мобильная разработка

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

2 стартмани

04.05.2019    5699    46    MarkoSokolov    47       

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android 21

Инструменты и обработки Программист Пользователь Расширение (cfe) v8 v8::Mobile Розница УНФ ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика УУ Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Абонемент ($m) Внешние источники данных Сканер штрих-кода Терминал сбора данных Работа с интерфейсом Мобильная разработка

Простой мобильный терминал сбора данных для iOS и Android, не требующий сложных настроек и установки дополнительных программ. Для выгрузки базы штрихкодов и загрузки собранных штрихкодов в документы учетной системы используется Яндекс Диск или облачный сервис и расширение конфигурации. Работает с конфигурациями Розница 2, УНФ 1.6, УТ 11, ERP, КА2.

3 стартмани

22.04.2019    9500    51    suepifanov    61       

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

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

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

1 стартмани

22.04.2019    15685    14    riposte    63       

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

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

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

1 стартмани

03.04.2019    5882    4    binx    5       

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

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

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

1 стартмани

26.02.2019    6439    6    alexlx    29       

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

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

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

1 стартмани

31.01.2019    6774    18    Maria18    12       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 508

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    24676    242    bonv    102       

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

Статья Программист Нет файла v8 1cv8.cf MS SQL Абонемент ($m) Внешние источники данных

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

1 стартмани

25.11.2018    9540    Robbi    14       

Использование подсистемы БСП "Заполнение объектов" 133

Статья Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    12814    8    ids79    14       

Интеграция WhatsApp в 1С (botcorp.io и api-messenger.com) 29

Инструменты и обработки no Конфигурация (md, cf) v8 Абонемент ($m) Внешние источники данных

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

3 стартмани

22.11.2018    15558    45    17808849    47       

Загрузка чека онлайн-касс (загрузка товаров из чека) 38

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

Обработка-пример, позволяет любому и из любой конфигурации загрузить информацию о товарах из чека(и не только) с сервера ФНС proverkacheka.nalog.ru

2 стартмани

08.10.2018    7013    23    echo77    32       

Мониторинг показателей систем 1С 8.3 с помощью Zabbix 162

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Внешние источники данных Zabbix

Опишу свой опыт мониторинга наших систем 1С с помощью Zabbix и ту пользу, которую можно извлечить из этого.

1 стартмани

05.10.2018    20028    36    akimych    48       

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом 12

Инструменты и обработки Программист Пользователь Архив с данными v8 КА1 БП2.0 УТ10 УПП1 Windows Абонемент ($m) Печатные формы документов Универсальные функции Email

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    10922    10    stvorl    0       

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

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

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

1 стартмани

31.07.2018    7130    4    Skin123    4       

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

Статья Программист Нет файла v8 Абонемент ($m) Внешние источники данных

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

19.07.2018    11668    411    VachKirp    31       

Пропорциональное распределение в запросе 35

Статья Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

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

1 стартмани

28.06.2018    7946    1    invertex    7       

RabbitMQ + 1С. Быстрый старт 78

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

Внешняя компонента для отправки сообщения из 1С в кролика. Сервис прослушивания и перенаправления сообщений из кролика в http или web-сервис.

1 стартмани

10.06.2018    16431    71    Goleff74    38       

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

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Внешние источники данных

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

1 стартмани

23.05.2018    10272    24    leongl    9       

Экономим время на ввод операций в 1С: Деньги 34

Инструменты и обработки no Конфигурация (md, cf) v8 1cv8.cf Домашние учет и финансы Банковские операции Абонемент ($m) Обработка документов Внешние источники данных

Рабочее решение автоматического создания операций в 1С: Деньги. Основано на анализе СМС.

1 стартмани

14.05.2018    6627    13    vsbronnikov    20       

Интеграция между Atlassian Jira и 1С:Предприятие 8.3 используя Jira REST API (выборка, создание и изменение запросов, чтение, создание и удаление записей о работах, чтение комментариев и другие возможности) 80

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

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с Atlassian Jira используя Jira REST API. Ключевые функции: выборка запросов с использованием JQL; добавление и изменение запросов; добавление, изменение и удаление записей о работах; чтение комментариев к запросам; сохранение всех ключевых параметров между сеансами работы. Тестирование проводилось на платформе 1С (8.3.11.2954) совместно с JIRA Server platform (7.3.7)

1 стартмани

24.04.2018    16627    113    Ko1t    63       

Чтение и запись из таблиц гугл (google sheets) в табличный документ 1С (8.3, управляемые формы) 148

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

Внешняя обработка на управляемой форме для 1С версии 8.3 для доступа к сервисам Google Sheets c использованием протокола авторизации OAuth 2.0. Выполняет получение списка листов таблицы гугл, чтение таблицы гугл в табличный документ 1С и запись из табличного документа 1С в таблицу гугл. Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.11.2954).

1 стартмани

09.04.2018    20958    164    Ko1t    50       

Чат бот в 73 строки на 1С - ИИ наступает 29

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

Интеграция с уже готовой системой чат-бота для различных случаев жизни. Используется API от DialogFlow Google. Обработка тестировалась на 1С:Предприятие 8.3 (8.3.10.2252) Должно работать на всех 8.3 версиях.

1 стартмани

09.04.2018    8467    24    Lapitskiy    7       

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

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

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

1 стартмани

20.03.2018    17867    11    timm00    64       

Оповещения из ЗУП и ERP в TELEGRAM 71

Инструменты и обработки Программист Бухгалтер Внешняя обработка (ert,epf) v8 ERP2 ЗУП3.x Абонемент ($m) Внешние источники данных

Начитался статей про интеграцию 1С -> Telegram, решил аккумулировать опыт и попробовать сделать какую-нибудь полезную обработку. Как результат - внешняя обработка, уведомляющая ответственных сотрудников по расписанию о необходимости оплаты отпусков, материальной помощи, премий. Данные посылаются в виде PDF файла (Отчет, созданный на основании макета). Можно использовать обработку как обучающую. Тестировалось на ERP 2.4.2.139, на ЗУП 3.X тоже должно работать.

1 стартмани

01.03.2018    9263    54    khabibullin.tu    14       

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

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

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

1 стартмани

30.12.2017    22477    85    Dementor    26       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    21267    21    agent00mouse    0       

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

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

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

1 стартмани

28.11.2017    103399    179    rusmil    115       

Автоматическое заполнение реквизитов контрагентов по ИНН для ERP 2.2, УТ 11.4, УТ 11.3, УТ 11.2, КА 2.2 и БП 3.0 (расширение конфигурации) 32

Инструменты и обработки Бухгалтер Пользователь Архив с данными v8 v8::БУ v8::ОУ v8::УФ УПП1 ERP2 БП3.0 УТ11 КА2 Россия Абонемент ($m) Обработка справочников Внешние источники данных

Универсальное расширение конфигурации для автоматической загрузки реквизитов контрагентов (партнеров) из ОГРН для 1С:ERP Управление предприятием 2 (ERP Управление предприятием 2.2), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.4), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.3), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.2), 1С:Комплексная автоматизация 8 (Комплексная автоматизация, редакция 2.2) и 1С:Бухгалтерия 8 (Бухгалтерия предприятия редакция 3.0)

3 стартмани

08.11.2017    21182    182    AlexeyT1978    146       

Размеры управляемой формы 100

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Универсальные функции

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

1 стартмани

08.10.2017    17499    46    json    8       

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

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

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

1 стартмани

03.07.2017    35469    6    Silenser    8       

«Горыныч - то НЕ НАСТОЯЩИЙ!» … или О Конвертации Данных ред.3 (КД 3) и обменах в универсальном формате Enterprise Data… доступным русско-народным языком 58

Инструменты и обработки Программист Архив с данными v8 КД Абонемент ($m) Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8

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

1 стартмани

13.06.2017    13980    135    Davlad_A    16       

Шаблон внешней обработки регламентного задания с формой настройки параметров выполнения 86

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Шаблон внешней обработки призван упростить программисту процесс реализации внешнего регламентного задания. Пригоден к использованию во всех конфигурациях на управляемых формах, в которых присутствует подсистема "Дополнительные отчеты и обработки" из состава библиотеки стандартных подсистем (БСП) версии 2.1 и выше.

1 стартмани

28.05.2017    17299    140    Bassgood    10       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    38236    166    DarkAn    86       

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

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

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

1 стартмани

20.04.2017    14946    74    keypax    34       

План обмена в формате "EnterpriseData" для УТ 10.3 33

Инструменты и обработки Программист Конфигурация (md, cf) v8 УТ10 Абонемент ($m) Внешние источники данных

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

1 стартмани

19.03.2017    13923    81    binex    3       

Процессор вывода результата компоновки данных в JSON. И не только... 108

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Внешние источники данных

У каждого разработчика возникают задачи интеграции решений. Основная масса решений призвана вывести данные из «1С:Предприятие 8» в обусловленном формате. Разработчики используют огромную часть своих драгоценных ресурсов на реализацию определенной структуры вывода и необходимого формата. А что если...

1 стартмани

14.02.2017    18496    42    pbazeliuk    27       

Выгрузка метаданных конфигурации 1С в Visio 2010/2013 (для 8.3) 71

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

Обработка выгрузки метаданных конфигурации 1С в ER-диаграмму Visio 2010/2013 (для 8.3)

2 стартмани

30.11.2016    14813    104    pfihr    14       

Работа с системой Меркурий через Ветис.API 34

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

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

1 стартмани

11.11.2016    49645    304    anig99    29       

Отладка/доработка модуля менеджера "на лету" 89

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

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

1 стартмани

23.10.2016    22640    19    json    22       

Создаем бота Telegram 29

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

Легко и непринужденно создаем бота, который поможет получать данные из 1С, используя API Teletram

1 стартмани

30.09.2016    16417    90    FirePyres    30       

Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы 49

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

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

1 стартмани

13.09.2016    28124    47    pavley2002    11