МОБИЛЬНАЯ 1С. LAZYLOADING НОМЕНКЛАТУРЫ. ЧАСТЬ 1
- Опубликовано Илья Низамов
- Разделы Blog
- Дата 11.03.2021
- Комментарии Нет комментариев
Привет программисты 1С, с вами Низамов Илья. Сегодня мы разработаем backend в 1С для нашего мобильного приложения. HTTP сервис 1С будет возвращать номенклатуру в формате json с пагинацией по 4 позиции. В последующих уроках мы разработаем фронтенд на javascript фреймворке Vue, и перенесем потом его в мобильное приложение 1С.
А если вам понравится эта серия видео уроков, то обязательно записывайтесь на мое занятие по разработке личного кабинета контрагента на NuxtJS для 1С.
Запишись на тренинг
РАЗРАБОТАЙ МИНИ САЙТ НА СОВРЕМЕННОМ ФРЕЙМВОРКЕ NuxtJS ДЛЯ ОФОРМЛЕНИЯ ЗАКАЗОВ КОНТРАГЕНТАМИ
Ну и конечно подписывайтесь на мой канал, чтобы не пропустить выход всех видео, прожимайте колокольчик и не забывайте про лайки. На вопросы по уроку отвечаю в комментариях.
И давайте приступать.
Функция ProductsGET(Запрос) КодПоследнегоЭлемента = Запрос.ПараметрыЗапроса.Получить("lastcode"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 4 | СпрНоменклатура.Код КАК Код, | СпрНоменклатура.Ссылка, | СпрНоменклатура.Наименование, | СпрНоменклатура.Артикул, | СпрНоменклатура.НаименованиеПолное, | СпрНоменклатура.ДополнительноеОписаниеНоменклатуры, | СпрНоменклатура.ОсновноеИзображение, | ЦеныНоменклатурыСрезПоследних.Цена, | ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка) |ГДЕ | СпрНоменклатура.Код > &Код | И СпрНоменклатура.ЭтоГруппа = ЛОЖЬ | |УПОРЯДОЧИТЬ ПО | Код"; Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000004")); Если ЗначениеЗаполнено(КодПоследнегоЭлемента) Тогда Запрос.УстановитьПараметр("Код", КодПоследнегоЭлемента); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст, "СпрНоменклатура.Код > &Код", "ИСТИНА"); КонецЕсли; РезультатЗапроса = Запрос.Выполнить(); СтруктураОтвета = ПолучитьСтруктуруОтвета(); Если РезультатЗапроса.Пустой() Тогда Возврат СформироватьОтвет(СтруктураОтвета, 204); КонецЕсли; Код = 0; Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл ДанныеТовара = Новый Структура; ДанныеТовара.Вставить("guid", XMLСтрока(Выборка.Ссылка)); ДанныеТовара.Вставить("title", СтрШаблон("%1 - %2", Выборка.Наименование, Выборка.ХарактеристикаНоменклатуры)); ДанныеТовара.Вставить("price", Выборка.Цена); ДанныеТовара.Вставить("desk", Выборка.ДополнительноеОписаниеНоменклатуры); ДанныеТовара.Вставить("img", ПолучитьКартинкуДляHTML(Выборка.ОсновноеИзображение)); СтруктураОтвета.products.Добавить(ДанныеТовара); Код = Выборка.Код; КонецЦикла; СтруктураОтвета.lastcode = Код; Возврат СформироватьОтвет(СтруктураОтвета, 200); КонецФункции
Функция ПолучитьСтруктуруОтвета()
Товары = Новый Структура;
Товары.Вставить("lastcode", 0);
Товары.Вставить("products", Новый Массив);
Возврат Товары;
КонецФункции
Функция СформироватьJSON(СтруктураДанных)
Попытка
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(, Символы.Таб));
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
Возврат ЗаписьJSON.Закрыть();
Исключение
ЗаписьЖурналаРегистрации("Vue",,,, ОписаниеОшибки());
Возврат СформироватьJSON(ПолучитьСтруктуруОтвета());
КонецПопытки;
КонецФункции
Функция СформироватьОтвет(СтруктураОтвета, КодОтвета)
Ответ = Новый HTTPСервисОтвет(КодОтвета);
Ответ.УстановитьТелоИзСтроки(СформироватьJSON(СтруктураОтвета), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Возврат Ответ;
КонецФункции
Функция ПолучитьКартинкуДляHTML(ОсновноеИзображение)
ДвоичныеДанные = БиблиотекаКартинок.Заглушка.ПолучитьДвоичныеДанные();
Если НЕ ОсновноеИзображение.Хранилище.Получить() = Неопределено Тогда
ДвоичныеДанные = ОсновноеИзображение.Хранилище.Получить().ПолучитьДвоичныеДанные();
КонецЕсли;
СтрокаBase64 = ПолучитьBase64СтрокуИзДвоичныхДанных(ДвоичныеДанные);
СтрокаBase64 = СтрЗаменить(СтрокаBase64, Символы.ПС, "");
СтрокаBase64 = СтрЗаменить(СтрокаBase64, Символы.ВК, "");
Возврат СтрШаблон("data:image/jpg;base64, %1", СтрокаBase64);
КонецФункции
Вам также может понравиться
GIGACHAT ИЛИ CHATGPT ИИ МЕНЕДЖЕР ДЛЯ 1С
15 мая, 2024
ИИ МЕНЕДЖЕР НА БАЗЕ GIGACHAT
12 февраля, 2024
ChatGPT Антиспам. Часть 1
5 февраля, 2024