Загрузка данных


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

&НаСервере
Функция СформироватьJSONКонтрагентов()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Контрагенты.Ссылка КАК Ссылка,
		|	Контрагенты.Наименование КАК Наименование,
		|	Контрагенты.ИНН КАК ИНН,
		|	Контрагенты.КПП КАК КПП,
		|	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо
		|ПОМЕСТИТЬ ВТ_Контрагенты
		|ИЗ
		|	Справочник.Контрагенты КАК Контрагенты
		|ГДЕ
		|	НЕ Контрагенты.ПометкаУдаления
		|;
		|ВЫБРАТЬ
		|	ВТ_Контрагенты.Ссылка КАК Ссылка,
		|	ВТ_Контрагенты.Наименование КАК Наименование,
		|	ВТ_Контрагенты.ИНН КАК ИНН,
		|	ВТ_Контрагенты.КПП КАК КПП,
		|	ВТ_Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
		|	КонтактнаяИнформация.Вид.Наименование КАК ВидКИ,
		|	КонтактнаяИнформация.Представление КАК ПредставлениеКИ
		|ИЗ
		|	ВТ_Контрагенты КАК ВТ_Контрагенты
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация
		|		ПО ВТ_Контрагенты.Ссылка = КонтактнаяИнформация.Ссылка
		|ИТОГИ
		|	МАКСИМУМ(Наименование),
		|	МАКСИМУМ(ИНН),
		|	МАКСИМУМ(КПП),
		|	МАКСИМУМ(ЮрФизЛицо)
		|ПО
		|	Ссылка";
		
	МассивДанных = Новый Массив;
	Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Пока Выборка.Следующий() Цикл
		Данные = Новый Структура;
		Данные.Вставить("Наименование", Строка(Выборка.Наименование));
		Данные.Вставить("ИНН", Строка(Выборка.ИНН));
		Данные.Вставить("КПП", Строка(Выборка.КПП));
		
		ЮрЛицоСтрока = Строка(Выборка.ЮрФизЛицо);
		Если Найти(НРег(ЮрЛицоСтрока), "юридическое") > 0 Тогда
			Данные.Вставить("ЮрФизЛицо", "юрлицо");
		Иначе
			Данные.Вставить("ЮрФизЛицо", "физлицо");
		КонецЕсли;
		
		Контакты = Новый Массив;
		ДетальнаяВыборка = Выборка.Выбрать();
		Пока ДетальнаяВыборка.Следующий() Цикл
			ПредставлениеКИ = Строка(ДетальнаяВыборка.ПредставлениеКИ);
			Если ЗначениеЗаполнено(ПредставлениеКИ) Тогда
				Контакт = Новый Структура;
				Контакт.Вставить("Вид", Строка(ДетальнаяВыборка.ВидКИ));
				Контакт.Вставить("Значение", ПредставлениеКИ);
				Контакты.Добавить(Контакт);
			КонецЕсли;
		КонецЦикла;
		Данные.Вставить("КонтактнаяИнформация", Контакты);
		
		МассивДанных.Добавить(Данные);
	КонецЦикла;
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб));
	ЗаписатьJSON(ЗаписьJSON, МассивДанных);
	
	Возврат ЗаписьJSON.Закрыть();
	
КонецФункции