Как программно заполнить значение поля в динамическом списке в мобильном приложении?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При разработке мобильных приложений на платформе 1С часто возникает задача организации интерфейса подбора товаров. Разработчики нередко пытаются сделать это «в лоб»: создать колонку Количество непосредственно в Динамическом списке и пытаться менять её значение при интерактивном выборе пользователем. Однако такой подход сталкивается с серьезными архитектурными ограничениями платформы.

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

Почему нельзя просто изменить данные в динамическом списке?

Динамический список — это инструмент, предназначенный исключительно для эффективного чтения и отображения данных из базы данных. Он работает через механизм КомпоновкиДанных и подгружает данные порциями. Когда вы пытаетесь изменить значение в текущей строке списка, вы сталкиваетесь со следующими проблемами:

Решение задачи: использование таблицы значений

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

  1. Разделение интерфейса: Разместите на форме два элемента. Первый — Динамический список (каталог номенклатуры). Второй — Таблица значений (или Таблица формы), в которой будут храниться уже выбранные товары с указанным количеством.
  2. Интерактивное взаимодействие: Используйте событие Выбор у элемента Динамический список. При выборе строки вызывайте вторую форму, в которой пользователь укажет необходимое количество.
  3. Перенос данных: После ввода количества в дополнительной форме, полученные данные (ссылка на товар и количество) нужно добавить в Таблицу значений, которую видит пользователь.

Как получить данные из динамического списка для анализа

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


&НаСервере
Функция ДинамическийСписокВТаблицуЗначений()
    Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Возврат Результат;
КонецФункции

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

Советы по UX для мобильных приложений

Работая над мобильным интерфейсом, мы должны учитывать специфику устройств:

Используя описанный архитектурный подход, вы избавите себя от необходимости реализовывать сложные и ненадежные «костыли», а ваше приложение будет работать стабильно и соответствовать стандартам разработки 1С.

← На главную