Общий модуль для быстрой организации HTTP сервиса (набор функций и процедур)

21.10.24

Разработка - Инструментарий разработчика

Информация о том, как быстро организовать HTTP сервис.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Общий модуль для организации HTTP сервиса:
.rar 14,12Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.

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

В рамках разработки создан универсальный модуль с функциями, которые ускоряют и упрощают этот процесс.

Рассказ о том, как получился этот модуль, был сделан на Инфостарте 2024.

https://event.infostart.ru/2024/agenda/2190185/

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

ОбщийМодуль состоит из 2 частей 

1. Функции для работы с HTTP Сервисом, проверка обязательных параметров, преобразование параметров, приведение к нижнему регистру, преобразование результата запроса в готовую структуру для кодировки в JSON (редактировать выданный результат можно через редактирование запроса в 1с)

2. Преобразование любого объекта 1с в структуру с детализацией по вложениям (любой справочник/документ можно преобразовать в структуру с информацией по вложенным объектам и выдать как готовый результат.) - удобно для интерграции или прямой выдачи объектов из 1с в сторонние системы. Может использоваться как элемент HTTP Сервиса или для самостоятельной выгрузки данных .

 

Часть 1. Быстрая Организация HTTP Сервиса. (Пошаговое описание)

1. Создаем единый входящий шаблон

 

 

Функция ОбщийШаблонGET(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);       
        
    ОтветАпи = {ОбщийМодульГдеБудутФормароватьсяОтветы}.ВыполнитьФункциюАпи(Запрос);    
    Ответ.УстановитьТелоИзСтроки(ОтветАпи);
    
    Ответ.Заголовки.Вставить("Accept","application/json");
    Ответ.Заголовки.Вставить("Content-Type","application/json");    
    Возврат Ответ;

КонецФункции

 

2. Создаем роутер входящих сообщений.

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

Функция ВыполнитьФункциюАпи(Запрос) экспорт
	
	
	ПараметрыURL = Запрос.ПараметрыURL;
	// /{resouse}/{comand}
		
	HTTPМетод = Запрос.HTTPМетод;
	resourse = ?(ПараметрыURL.получить("resourse") =Неопределено,Неопределено,нрег(ПараметрыURL.получить("resourse")));
	comand =   ?(ПараметрыURL.получить("comand")   =Неопределено,Неопределено,нрег(ПараметрыURL.получить("comand")));
	
	Если resourse = "apireqest" И comand = "list" тогда // шаблон с вумя значениями
		ОтветАпи = ФункцияОбрабатывающаяЗапрос(Запрос); 
	ИначеЕсли resourse = Неопределено И comand = "list" тогда // шаблон с 1 значением
		ОтветАпи = ФункцияОбрабатывающаяЗапрос(Запрос);
	ИначеЕсли resourse = Неопределено И comand = "list" тогда
		ОтветАпи = ФункцияОбрабатывающаяЗапрос(Запрос);
	Иначе	
		ОтветАпи = НегативныйОтвет("Не определена команда для выполнения");
	КонецЕсли;
	
	Возврат ОтветАпи;	
КонецФункции

 

3. Преобразовать параметры.
Далее входящие обязательные параметры можно преобразовать в конкретные значения.
 

Функция ПреобразоватьПараметры(СтрДанных) Экспорт
	
	массивОшибок = Новый массив;
	
	НоваяСтруктура = Новый Структура("Успех,Ошибка",Ложь,"");
	
	// дата
	Если СтрДанных.Свойство("date") тогда		
		Попытка
			ДатаДок = Дата(СтрДанных.date + " 00:00:00");
			НоваяСтруктура.Вставить("date",ДатаДок);
		Исключение
			массивОшибок.Добавить("Не удалось преобразовать дату date.");
		КонецПопытки;		
	КонецЕсли;
	
	
	// Дата начала
	Если СтрДанных.Свойство("datestart") тогда		
		Попытка
			ДатаДок = Дата(СтрДанных.datestart + " 00:00:00");
			НоваяСтруктура.Вставить("datestart",ДатаДок);
		Исключение
			массивОшибок.Добавить("Не удалось преобразовать дату datestart.");
		КонецПопытки;		
	КонецЕсли;
	
	// Датаокончания
	Если СтрДанных.Свойство("dateend") тогда		
		Попытка
			ДатаДок = Дата(СтрДанных.dateend + " 23:59:59");
			НоваяСтруктура.Вставить("dateend",ДатаДок);
		Исключение
			массивОшибок.Добавить("Не удалось преобразовать дату dateend.");
		КонецПопытки;		
	КонецЕсли;
		
	// Смотрим другие значения
		
	Если массивОшибок.Количество() > 0 Тогда
		НоваяСтруктура.Вставить("Успех",Ложь);
		Ошибка = СтрСоединить(массивОшибок,","); 
		НоваяСтруктура.Вставить("Ошибка",Ошибка);
		Возврат НоваяСтруктура;
	КонецЕсли;
	
	НоваяСтруктура.Успех = Истина;
	Возврат НоваяСтруктура;
КонецФункции

 

4. Создаем типовую функцию, которая обрабатывает итоговый ответ


В ней пошагово проверяем Обязательные параметры, преобразуем в значения.

Формируем запроса с именами полей как они должны быть выданы в итоговом ответе,
выполняем запрос  и с помощью функции ЗначениеРезультатаЗапросаВСтруктуру(РезультатЗапроса,МножественноеЗначение) получаем результирующую структуру/массив

Если это одно значение, то МножественноеЗначение = ложь и вам вернется структура первого значения

Если это выборка нескольких значений, тогда нужно указать МножественноеЗначение = Истина, вернется массив.

Итоговый ответ надо упаковать в НегативныйОтвет или ПозитивныйОтвет, которая преобразуют сформированный объект в JSON  в итоговый ответ в виде строки.

Итоговая функция, которая принимает запрос и выдает результат,  будет выглядеть следующим образом с этим модулем. 

Функция ДетализацияИспользованногоСырьяПоПекарнеЗаДень(HTTPЗапрос) Экспорт 
	
	мПараметров = Новый массив;
	мПараметров.Добавить("bakerycode");
	мПараметров.Добавить("date");
	мПараметров.Добавить("resourcecode");
	               
	
	Рез =  АпиСервисСервер.ПроверитьНаличиеОбязательныхПараметров(HTTPЗапрос,мПараметров);
	
	Если Рез.успех = ложь тогда
		Возврат НегативныйОтвет(Рез.ошибка);		
	КонецЕсли;
	
	Данные = Рез.Данные;
	
	ПреобразованныеПараметры = АпиСервисСервер.ПреобразоватьПараметры(Данные);
	
	Если ПреобразованныеПараметры.Успех = Ложь Тогда
		Возврат НегативныйОтвет(ПреобразованныеПараметры.Ошибка); 
	КонецЕсли;
			
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВЫБОР
		|		КОГДА ТИПЗНАЧЕНИЯ(ФактическийВыпускРасчетРасчетСписанногоСырья.Продукция) = ТИП(Справочник.Номенклатура)
		|			ТОГДА ""good""
		|		КОГДА ТИПЗНАЧЕНИЯ(ФактическийВыпускРасчетРасчетСписанногоСырья.Продукция) = ТИП(Справочник.Полуфабрикат)
		|			ТОГДА ""halfstuff""
		|		ИНАЧЕ """"
		|	КОНЕЦ КАК producttype,
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.Продукция.Код КАК productcode,
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.Продукция.Наименование КАК productname,
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.Сырье.Наименование КАК rawmaterialname,
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.Сырье.Код КАК rawmaterialcode,
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.Количество КАК resoursetotal,
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.КоличествоПродукции КАК produced,
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.КоличествоНаЕдиницу КАК resoursetounit
		|ИЗ
		|	Документ.ФактическийВыпускРасчет.РасчетСписанногоСырья КАК ФактическийВыпускРасчетРасчетСписанногоСырья
		|ГДЕ
		|	ФактическийВыпускРасчетРасчетСписанногоСырья.Ссылка.ТорговаяТочка = &ТорговаяТочка
		|	И ФактическийВыпускРасчетРасчетСписанногоСырья.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК
		|	И ФактическийВыпускРасчетРасчетСписанногоСырья.Ссылка.Проведен = ИСТИНА
		|	И ФактическийВыпускРасчетРасчетСписанногоСырья.Сырье = &Сырье";
	
	Запрос.УстановитьПараметр("ДатаН", НачалоДня(ПреобразованныеПараметры.date));
	Запрос.УстановитьПараметр("ДатаК", КонецДня(ПреобразованныеПараметры.date));
	Запрос.УстановитьПараметр("ТорговаяТочка", ПреобразованныеПараметры.bakerycode);
	Запрос.УстановитьПараметр("Сырье", ПреобразованныеПараметры.resourcecode);
	                                                
	РезультатЗапроса = Запрос.Выполнить();
	
	СтрРезультат = АпиСервисСервер.ЗначениеРезультатаЗапросаВСтруктуру(РезультатЗапроса,Истина);
	
	Возврат АпиСервисСервер.ПозитивныйОтвет(,СтрРезультат);
	
	
	
КонецФункции

 

2 Часть. Описание объекта в виде структуры

Надо отправить объект в функцию ПолучитьСтруктуруОбъекта(ссылкаНаобъект,Истина) вернется результат структуры объекта.

Возвращаемый объект буде в формате json (Пример - объект номенклатура из УНФ)

 

{
    "тип": "справочник",
    "уид": "0ba5b320-ecf2-11ee-b56d-00155d6fd10d",
    "код": "НФ-00000060",
    "естьиерархия": true,
    "родитель": "",
    "этогруппа": false,
    "владелец": "",
    "метаданные": "Номенклатура",
    "пометкаудаления": false,
    "артикул": "",
    "алкогольнаяпродукция": false,
    "вес": 0,
    "вариантограничениясертификата": {
        "тип": "перечисление",
        "наименование": "ВариантыОграниченийСкидокПоНоменклатуре",
        "значение": ""
    },
    "вариантпечатинабора": {
        "тип": "перечисление",
        "наименование": "ВариантыПечатиНаборов",
        "значение": ""
    },
    "верхняяграницаостатков": 0,
    "единицаизмерения": {
        "тип": "справочник",
        "уид": "6c4c9b97-c52f-11ee-b534-00155d6fd10e",
        "код": "796",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "КлассификаторЕдиницИзмерения",
        "пометкаудаления": false
    },
    "весовой": false,
    "видалкогольнойпродукции": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "ВидыАлкогольнойПродукции",
        "пометкаудаления": false
    },
    "видмаркировки": {
        "тип": "перечисление",
        "наименование": "ВидыМаркировки",
        "значение": "НеМаркируется"
    },
    "видпродукцииис": {
        "тип": "перечисление",
        "наименование": "ВидыПродукцииИС",
        "значение": ""
    },
    "автоматическигенерироватьпартии": false,
    "выписыватьгарантийныйталон": false,
    "высота": 0,
    "гарантийныйсрок": 0,
    "датаизменения": "17.10.2024 18:43:25",
    "датаокончаниядействия": "01.01.0001 0:00:00",
    "длина": 0,
    "использоватьсерииноменклатуры": false,
    "изготовитель": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "СтруктурныеЕдиницы",
        "пометкаудаления": false
    },
    "импортнаяалкогольнаяпродукция": false,
    "исключитьизпрайслистов": false,
    "использоватьдатупроизводствапартии": false,
    "использоватьзаписьскладскогожурналаветиспартии": false,
    "использоватьидентификаторпартииветиспартии": false,
    "использоватьномерпартии": false,
    "использоватьпартии": false,
    "использоватьпроизводителяветиспартии": false,
    "наименованиеполное": "наименование",
    "использоватьсрокгодностипартии": false,
    "использоватьхарактеристики": false,
    "категорияноменклатуры": {
        "тип": "справочник",
        "уид": "e2b4776b-df89-11ee-b55a-00155d6fd10d",
        "код": "НФ-000001",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "КатегорииНоменклатуры",
        "пометкаудаления": false
    },
    "кизгисм": false,
    "кизгисмgtin": "",
    "кизгисмвид": {
        "тип": "перечисление",
        "наименование": "ВидыКиЗГИСМ",
        "значение": ""
    },
    "кизгисмразмер": {
        "тип": "перечисление",
        "наименование": "РазмерыКиЗГИСМ",
        "значение": ""
    },
    "кизгисмспособвыпускавоборот": {
        "тип": "перечисление",
        "наименование": "СпособыВыпускаВОборотГИСМ",
        "значение": ""
    },
    "кодмедицинскогоизделия": "",
    "количествопериодовдействия": 0,
    "комментарий": "",
    "крепость": 0,
    "методоценки": {
        "тип": "перечисление",
        "наименование": "МетодОценкиЗапасов",
        "значение": "ПоСредней"
    },
    "странапроисхождения": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "СтраныМира",
        "пометкаудаления": false
    },
    "направлениедеятельности": {
        "тип": "справочник",
        "уид": "6c4c9b98-c52f-11ee-b534-00155d6fd10e",
        "код": "000000001",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "НаправленияДеятельности",
        "пометкаудаления": false
    },
    "недействителен": false,
    "нижняяграницаостатков": 0,
    "номинал": 0,
    "нормавремени": 0,
    "обувнаяпродукция": false,
    "объем": 0,
    "объемдал": 0,
    "периодичность": {
        "тип": "перечисление",
        "наименование": "Периодичность",
        "значение": ""
    },
    "подконтрольнаяпродукцияветис": false,
    "поставщик": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "Контрагенты",
        "пометкаудаления": false
    },
    "проверятьзаполнениепартий": false,
    "проверятьзаполнениехарактеристики": false,
    "производитель": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "Контрагенты",
        "пометкаудаления": false
    },
    "производительимпортералкогольнойпродукции": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "Контрагенты",
        "пометкаудаления": false
    },
    "произвольныйноминал": false,
    "реквизитдопупорядочиванияунф": 0,
    "рекомендуемзаказать": false,
    "склад": {
        "тип": "справочник",
        "уид": "46738cf9-c52f-11ee-b534-00155d6fd10e",
        "код": "00-000001",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "СтруктурныеЕдиницы",
        "пометкаудаления": false
    },
    "способограничениясертификата": {
        "тип": "перечисление",
        "наименование": "СпособыОграниченияПодарочныхСертификатов",
        "значение": ""
    },
    "способпополнения": {
        "тип": "перечисление",
        "наименование": "СпособыПополненияЗапасов",
        "значение": "Закупка"
    },
    "способрасчетаценынабора": {
        "тип": "перечисление",
        "наименование": "СпособыРасчетаЦеныНабора",
        "значение": ""
    },
    "средствоиндивидуальнойзащиты": false,
    "срокдействияфлагановинка": "01.01.0001 0:00:00",
    "срокисполнениязаказа": 1,
    "срокпополнения": 0,
    "видставкиндс": {
        "тип": "перечисление",
        "наименование": "ВидыСтавокНДС",
        "значение": "БезНДС"
    },
    "счетучетадоходов": {
        "тип": "ПланСчетов",
        "Код": "",
        "КодБыстрогоВыбора": "",
        "Наименование": ""
    },
    "счетучетазапасов": {
        "тип": "ПланСчетов",
        "Код": "10      ",
        "КодБыстрогоВыбора": "",
        "Наименование": "Сырье и материалы"
    },
    "счетучетазатрат": {
        "тип": "ПланСчетов",
        "Код": "20      ",
        "КодБыстрогоВыбора": "",
        "Наименование": "Незавершенное производство"
    },
    "табачнаяпродукция": false,
    "удалитьставкандс": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "СтавкиНДС",
        "пометкаудаления": false
    },
    "типсрокадействия": {
        "тип": "перечисление",
        "наименование": "СрокДействияПодарочныхСертификатов",
        "значение": "БезОграниченияСрока"
    },
    "тнвэдгисм": "",
    "товарнаяноменклатуравэд": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "КлассификаторТНВЭД",
        "пометкаудаления": false
    },
    "толькоподдержкаостаткаприрасчетепотребностей": false,
    "удалитьспецификация": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "Спецификации",
        "пометкаудаления": false
    },
    "типноменклатуры": {
        "тип": "перечисление",
        "наименование": "ТипыНоменклатуры",
        "значение": "Запас"
    },
    "файлкартинки": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "НоменклатураПрисоединенныеФайлы",
        "пометкаудаления": false
    },
    "фиксированнаястоимость": true,
    "ценоваягруппа": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "ЦеновыеГруппы",
        "пометкаудаления": false
    },
    "частичноепогашение": false,
    "шиныипокрышки": false,
    "ширина": 0,
    "этонабор": false,
    "этоновинка": false,
    "ячейка": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "Ячейки",
        "пометкаудаления": false
    },
    "подакцизныйтовар": false,
    "политикаучетасерий": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "ПолитикаУчетаСерий",
        "пометкаудаления": false
    },
    "индивидуальныенастройкиполитикиучетасерий": false,
    "использоватьсрокгодностисерии": false,
    "использоватьдатупроизводствасерии": false,
    "точностьуказаниясрокагодностисерии": {
        "тип": "перечисление",
        "наименование": "ТочностиУказанияСрокаГодности",
        "значение": ""
    },
    "использоватьуникальныесерии": false,
    "этоагентскаяуслуга": false,
    "договор": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": true,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "ДоговорыКонтрагентов",
        "пометкаудаления": false
    },
    "срокгодности": 0,
    "единицаизмерениясрокагодности": {
        "тип": "перечисление",
        "наименование": "ЕдиницыИзмеренияВремени",
        "значение": ""
    },
    "прослеживаемыйтовар": false,
    "веспосертификатутовара": 0,
    "кодокпд2": "",
    "наборединицизмерения": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "НаборыЕдиницИзмерения",
        "пометкаудаления": false
    },
    "использоватьнаборыединицизмерения": false,
    "единицадляотчетов": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "ЕдиницыИзмерения",
        "пометкаудаления": false
    },
    "коэффициентединицыдляотчетов": 1,
    "штрихкод": "",
    "кодтру": "",
    "прослеживаемыйкомплект": false,
    "признакпредметарасчета": {
        "тип": "перечисление",
        "наименование": "ПризнакиПредметаРасчета",
        "значение": "Товар"
    },
    "характеристикацен": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "ХарактеристикиНоменклатуры",
        "пометкаудаления": false
    },
    "запретитьвводдробногоколичества": false,
    "счетучетандспоприобретеннымценностям": {
        "тип": "ПланСчетов",
        "Код": "19          ",
        "КодБыстрогоВыбора": "",
        "Наименование": "НДС по приобретенным ценностям"
    },
    "счетучетандспореализации": {
        "тип": "ПланСчетов",
        "Код": "90.03       ",
        "КодБыстрогоВыбора": "",
        "Наименование": "Налог на добавленную стоимость"
    },
    "продаетсяврозлив": false,
    "единицадляценников": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "КлассификаторЕдиницИзмерения",
        "пометкаудаления": false
    },
    "числитель": 0,
    "знаменатель": 0,
    "видподакцизноготовара": {
        "тип": "перечисление",
        "наименование": "ВидыПодакцизныхТоваров",
        "значение": ""
    },
    "кодвидаподакцизноготовара": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "КодыВидовПодакцизныхТоваров",
        "пометкаудаления": false
    },
    "единицаизмерениядлярасчетаакциза": {
        "тип": "справочник",
        "уид": "",
        "код": "",
        "естьиерархия": false,
        "родитель": "",
        "этогруппа": false,
        "владелец": "",
        "метаданные": "КлассификаторЕдиницИзмерения",
        "пометкаудаления": false
    },
    "счетучетаакцизапоимпорту": {
        "тип": "ПланСчетов",
        "Код": "",
        "КодБыстрогоВыбора": "",
        "Наименование": ""
    },
    "коэффициентпересчета": 0,
    "ДополнительныеРеквизиты": [],
    "НоменклатураГруппыЦеновыеГруппы": []
}


Как использовать.

Скачать, добавить общий модуль, скопировать текст.

Модуль локализован, поэтому можно добавлять в чистую базу.

Если будут проблемы, пишите.

Тестировалась и работает на версии платформе 1С:Предприятие 8.3 (8.3.23.1912) на самописной конфигурации.

 

Доработал процедуры выдачи информации по справочнику.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    175200    973    403    

932

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    16741    113    55    

116

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    18117    49    19    

81

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

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

9360 руб.

17.05.2024    28268    97    48    

141

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

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    12404    49    33    

70

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2184    2    0    

9

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С. Бесплатный период Техподдержки - 1 месяц.

60000 руб.

07.05.2019    34217    64    45    

24

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

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

57600 руб.

26.11.2024    1919    1    1    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bayselonarrend 2454 21.10.24 15:46 Сейчас в теме
Вставлю свои 5 копеек) Все это как будто бы имеет право на жизнь, но то тут, то там случается какой-то meh

1.
Функция ОбщийШаблонGET(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);       
        
    ОтветАпи = {ОбщийМодульГдеБудутФормароватьсяОтветы}.ВыполнитьФункциюАпи(Запрос);    
    Ответ.УстановитьТелоИзСтроки(ОтветАпи);
    
    Ответ.Заголовки.Вставить("Accept","application/json");
    Ответ.Заголовки.Вставить("Content-Type","application/json");    
    Возврат Ответ;

КонецФункции
Показать


Заголовок Accept - это клиентский заголовок, сообщающий серверу, какой ответ клиент хочет получить в ответ на свой запрос. Т.е. смысла устанавливать его на сервере нет

2.
Если СтрДанных.Свойство("date") тогда		
		Попытка
			ДатаДок = Дата(СтрДанных.date + " 00:00:00");
			НоваяСтруктура.Вставить("date",ДатаДок);


Для работы с датой в веб технологиях, как правило, принято использовать стандарт ISO 8601 - это фактически общепринятый формат. Это, конечно, момент догвороной между пользователем и провайдером API, но даже просто в 1С его использовать куда легче и надежнее чем добавлять нули: для простого преобразования можно использовать XMLЗначение()/XMLСтрока(), а у ЗаписатьJSON и ПрочитатьJSON в настройках вообще можно указать ФорматДатыJSON.ISO и они сами все преобразуют

3.
НоваяСтруктура = Новый Структура("Успех,Ошибка",Ложь,"");


Описание успеха/неуспеха и ошибок в теле это нормальная практика, но главным показателем статуса общепринято является код. Код почему-то 200 на все случаи жизни


Ответ = Новый HTTPСервисОтвет(200); 


4. Ну и кириллические ключи в JSON это тоже не база) Клиенты, вызывающие API бывают разные и если это однажды окажется чем-то менее лояльным к русскому языку, чем другая 1С, то будут проблемы. Тут как минимум должно быть указание charset=UTF8 при установке Content-type, но даже его нету

Content-type: application/json; charset=utf-8


P.S ну и если уже совсем докапываться, то Ответ.УстановитьТелоИзСтроки(ОтветАпи); это неоптимальный способ записи JSON в ответ, т.к. и ЗаписьJSON и HTTPСеривсОтвет могут в потоки


    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.ОткрытьПоток(Ответ.ПолучитьТелоКакПоток());
    ЗаписатьJSON(ЗаписьJSON, Новый Структура("Поле", "Значение"));
    ЗаписьJSON.Закрыть();

yufan; dsdred; sergeevcorp; nightowl5; dabu-dabu; alex_sayan; artbear; triviumfan; thornhiven; wild83; aleksey2; ixijixi; +12 Ответить
2. uribur 171 21.10.24 16:08 Сейчас в теме
(1) Спасибо за добрые советы и 5 копеек ) Пересмотрю оптимизирую при следующей итерации
sapervodichka; user1216897; ixijixi; bayselonarrend; +4 Ответить
3. triviumfan 98 23.10.24 07:28 Сейчас в теме
(1) Обожаю комментарии, которые по своей смысловой нагрузке превосходят статью!
Ps: А ресурс то ещё живой!
alex_sayan; sapervodichka; +2 1 Ответить
8. sapervodichka 6945 23.10.24 13:20 Сейчас в теме
(3) главное начать, автор молодец начал, был на его докладе
10. uribur 171 23.10.24 14:52 Сейчас в теме
(3) Главное в них есть доброе пожелание и мысли с которыми надо поработать. Так и долно работать сообщество. )) Объять 1с порой невозможно ))
4. alex_sayan 56 23.10.24 09:18 Сейчас в теме
Так себе решение, если честно. Изобилует соглашениями с конкретной задачи под конкретный апи
6. uribur 171 23.10.24 11:01 Сейчас в теме
(4) Так себе коммент, если честно, претендует на полноценный ответ без какой либо фактологии. )
9. alex_sayan 56 23.10.24 14:26 Сейчас в теме
(6) у тебя сколько опыта работы с http-сервисами?
11. uribur 171 23.10.24 21:42 Сейчас в теме
(9) Коллега, никак не хотел вас задеть своим ответом выше, хотелось бы больше конкретных замечаний, "тут плохо, тут хорошо, а тут я бы сделал вот так", чтобы таким образом объединить наши общие знания в бОльший и качественный результат. Всегда буду признателен доброй критике и лишним 5 копейкам.
В любом случае спасибо Вам что оставили даже предыдущий комментарий.
12. alex_sayan 56 25.10.24 01:09 Сейчас в теме
(11) интеграция через http-сервисы вроде простая, но каждый случай как новый. Тот же json от сервиса к сервису может иметь свои особенности: одни выкидывают пустые свойства (для уменьшения размеров), у других структура "гибкая", третьи дату в каком-то особом формате шлют... Неблагодарное дело писать под всё это разнообразие кухонь библиотечный функционал
5. user2110848 23.10.24 10:25 Сейчас в теме
Боже мой, что это? только дочитав до конца и пролистав комментарии понял что это 1с ))) извините, но как-то очень непривычно видеть код на русском
7. sapervodichka 6945 23.10.24 13:11 Сейчас в теме
14. webester 26 18.11.24 05:56 Сейчас в теме
(5)
извините, но как-то очень непривычно видеть код на русском

Не переживай. Мы тебя простили.
13. dsdred 3786 06.11.24 23:20 Сейчас в теме
Серьезно? Это доклад на инфостарте такой был?

Повторяет 1 в 1 мои статьи про http-сервисы...
Только у меня поуниверсальнее в итоге вышло.
Подсистема: https://infostart.ru/1c/tools/2123781/
Примеры часть1: https://infostart.ru/1c/articles/1105206/

П.С. А, чуть не забыл. Подсистема бесплатная.
Оставьте свое сообщение