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