API 1С (получение отчета на стороне сайта по данным 1С)

22.04.21

Интеграция - Сайты и интернет-магазины

Вводная: На сайте есть личный кабинет контрагента, необходимо предоставить возможность формировать отчеты по взаиморасчетам по данным БП 3.0. Для этого был разработан HTTP-сервис. Сама тема создания HTTP-сервиса не нова, здесь не будет описано, что это и как это готовить. В данной статье описан подход к реализации данной задачи.

Скачать исходный код

Наименование Файл Версия Размер
API 1С:
.cfe 8,94Kb
2
.cfe 8,94Kb 2 Скачать

Идея в следующем, Сайт GET запросом отдает идентификатор контрагента (в нашем случае это просто ИНН), и на выходе получает файл отчета в формате двоичных данных, далее уже сайт обрабатывает эти данные и отображает их контрагенту.

Чтоб не изобретать велосипед и максимально использовать стандартный функционал за основу был взят стандартный механизм БСП "Рассылка отчетов". В Нем мы настраиваем рассылку отчета с вариантом "свой отчет для каждого получателя" (куда мы добавляем необходимый вариант отчета для контрагента) и благодаря этому в настройках у нас есть необходимый параметр для идентификации контрагента, который мы будем в дальнейшем использовать.

 

 

И теперь нам не надо ломать голову над  программным формированием  отчета на СКД, передачей параметров, созданием интерфейса для формирования настроек.

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

Ниже код модуля метода, в нем все самое интересное, также добавил сам файл расширения, если кому будет мало).

 

 

Функция ПолучитьОтчетАгентскиеВариант1ОтправитьОтчет(Запрос)
	ЗначенияПараметров = новый Структура;
	Для каждого Элемент ИЗ Запрос.ПараметрыURL цикл
		ЗначенияПараметров.Вставить(Элемент.Ключ,Элемент.Значение);
	КонецЦикла;
	
	табДок = СформироватьОтчетИСохранитьВФайл (ЗначенияПараметров);
	ИмяФайла = ПолучитьИмяВременногоФайла( "xls" );
	табДок.Записать( имяФайла, ТипФайлаТабличногоДокумента.xls );
	ДвоичныеДанные = Новый ДвоичныеДанные( имяФайла );
	УдалитьФайлы( имяФайла );
	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.УстановитьТелоИзДвоичныхДанных( ДвоичныеДанные );
	Ответ.Заголовки.Вставить("Content-Type", "application/xlsx");
	Ответ.Заголовки.Вставить("Content-Disposition", "attachment; filename=" + КодироватьСтроку( "test.xls", СпособКодированияСтроки.КодировкаURL));
	Возврат Ответ;
КонецФункции

Функция СформироватьОтчетИСохранитьВФайл(ЗначенияПараметров)
	//1.получим необходимый вариант отчета
	ПараметрыОтчета = ПолучитьВариантОтчетаСНастройками(ЗначенияПараметров.reportid);
	//2 Инициализация отчета.
	РассылкаОтчетов.ИнициализироватьОтчет(Неопределено, ПараметрыОтчета, Истина); 
	//3 установим значение получателя
	// Заполнение персонализированных данных получателей.
	// Настройки подключения отчета.
	ПараметрыФормирования = Новый Структура;
	Получатель = Справочники.контрагенты.НайтиПоРеквизиту ("ИНН",ЗначенияПараметров.Beneficiarieid);
	Если Получатель <> Неопределено И ПараметрыОтчета.Свойство("ПерсональныеОтборы") Тогда
		Если ПараметрыОтчета.СКД Тогда
			ПользовательскиеНастройкиКД = ПараметрыОтчета.КомпоновщикНастроекКД.ПользовательскиеНастройки;
			Для Каждого КлючИЗначение Из ПараметрыОтчета.ПерсональныеОтборы Цикл
				Настройка = ПользовательскиеНастройкиКД.ПолучитьОбъектПоИдентификатору(КлючИЗначение.Ключ);
				Если ТипЗнч(Настройка) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
					Настройка.ПравоеЗначение = Получатель;
				ИначеЕсли ТипЗнч(Настройка) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
					Настройка.Значение = Получатель;
				КонецЕсли;
			КонецЦикла;
			ПараметрыФормирования.Вставить("ПользовательскиеНастройкиКД", ПользовательскиеНастройкиКД);
		Иначе
			Для Каждого КлючИЗначение Из ПараметрыОтчета.ПерсональныеОтборы Цикл
				ПараметрыОтчета.Объект[КлючИЗначение.Ключ] = Получатель;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
	ПараметрыФормирования.Вставить("Подключение", ПараметрыОтчета);
	Формирование = ВариантыОтчетов.СформироватьОтчет(ПараметрыФормирования, Истина, Не ПараметрыОтчета.ОтправлятьЕслиПустой);
	Возврат  Формирование.ТабличныйДокумент ;
КонецФункции // СформироватьОтчетИСохранитьВФайл()



Функция ПолучитьВариантОтчетаСНастройками(ИмяОтчета)
	// определяем отчет по имени АПИ
	Если ИмяОтчета = "agent_var1" тогда
		НаименованиеНастроеннойРассылки = "АгентскиеАналитика_agent_var1";
		//ЗначениеВариантаОтчета = "ДетализацияРасчетовДоДокумента";
	КонецЕсли;
	////////////////////////////////
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
	|	РассылкиОтчетовОтчеты.Ссылка КАК Ссылка,
	|	РассылкиОтчетовОтчеты.НомерСтроки КАК НомерСтроки,
	|	РассылкиОтчетовОтчеты.Отчет КАК Отчет,
	|	РассылкиОтчетовОтчеты.ОтправлятьЕслиПустой КАК ОтправлятьЕслиПустой,
	|	РассылкиОтчетовОтчеты.Настройки КАК Настройки
	|ИЗ
	|	Справочник.РассылкиОтчетов.Отчеты КАК РассылкиОтчетовОтчеты
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.РассылкиОтчетов КАК РассылкиОтчетов
	|		ПО (РассылкиОтчетовОтчеты.Ссылка = РассылкиОтчетов.Ссылка)
	|ГДЕ
	|	РассылкиОтчетов.Наименование = &Наименование";
	Запрос.УстановитьПараметр("Наименование", НаименованиеНастроеннойРассылки);
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); 
	НайденныйОтчет = Новый Структура;
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		НайденныйОтчет.Вставить("Отчет",ВыборкаДетальныеЗаписи.Отчет); 
		НайденныйОтчет.Вставить("ОтправлятьЕслиПустой",ВыборкаДетальныеЗаписи.ОтправлятьЕслиПустой);
		// Настройки
		Настройки = ВыборкаДетальныеЗаписи.Настройки.Получить();
		Если ТипЗнч(Настройки) = Тип("ТаблицаЗначений") Тогда
			ИтоговыеНастройки = Новый Структура;
			Найденные = Настройки.НайтиСтроки(Новый Структура("Использование", Истина));
			Для Каждого СтрокаНастройка Из Найденные Цикл
				ИтоговыеНастройки.Вставить(СтрокаНастройка.Реквизит, СтрокаНастройка.Значение);
			КонецЦикла;
		Иначе
			ИтоговыеНастройки = Настройки;
		КонецЕсли;
		//////////
		НайденныйОтчет.Вставить("Настройки",ИтоговыеНастройки);
	КонецЦикла;
	Возврат	НайденныйОтчет
КонецФункции // ПолучитьВариантОтчета()

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

Тестировалось на версии БП 3.0.88.28.
Платформа 8.3.18.1289.

API ; HTTP-сервис

См. также

Оплата покупок "Долями" в 1С:Розница 2.3 (для работы с сервисом dolyame.ru)

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку.

18000 руб.

19.12.2023    2092    18    6    

16

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16179    14    18    

14

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18289    10    15    

16

Обмен данными с сайтом. БП 3.0

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обмен данными с сайтом на платформе 1С:Битрикс (и подобными) для 1С: Бухгалтерия предприятия 3.0.

12000 руб.

18.03.2019    31922    117    101    

66

SALE! 33%

«Мониторинг цен» – сервис для отслеживания цен конкурентов на ведущих маркетплейсах России

Маркетплейсы Сайты и интернет-магазины 8.3.14 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Сервис помогает отслеживать цены на ведущих маркетплейсах России только для одного региона – Москва и Московская область. Выполняйте анализ и контролируйте цены Ваших конкурентов сразу в системе 1С.

2400 1608 руб.

29.05.2023    7056    28    41    

15

Универсальный парсер интернет-магазинов

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Управляемые формы 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

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

9600 руб.

19.10.2018    52596    220    101    

112

SALE! 20%

Интеграция API b2b.4tochki.ru (Форточки)

Прайсы Оптовая торговля Сайты и интернет-магазины Платформа 1С v8.3 Оперативный учет Управляемые формы 1С:Управление торговлей 11 Транспорт, автопарки, такси Управленческий учет Платные (руб)

Внешняя обработка адаптирована для УТ 11, предназначена для наполнения вашей базы данных товарами и сопутствующей информацией, предоставляемой b2b.4tochki.ru, обновления остатков и цен.

8160 6528 руб.

31.01.2020    30544    11    7    

13
Оставьте свое сообщение