Управляемая форма списка с данными двух таблиц - иерархического справочника и регистра сведений для мобильной платформы

16.11.12

Разработка - Работа с интерфейсом

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

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

Создаём форму списка для справочника (или общую форму), удаляем от туда Реквизит Список и добавляем Реквизит Дерево - с типом ДеревоЗначений. Добавляем необходимые колонки внутри реквизиты (в моём случае Ссылка и Цена) [для ссылки Заголовок указал - Товар].

Далее при создании на сервере описываем событие формы "ПриСозданииНаСервере"

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ТолькоПросмотр =  Истина;
    
    ВидЦен = ПолучитьВидЦен();
    НачалоДня = НачалоДня(ТекущаяДата());
    
    ОбновитьСписок();
    
КонецПроцедуры

Ну и сопутствующие функции в этот же модуль формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ТолькоПросмотр =  Истина;
    
    ВидЦен = ПолучитьВидЦен();
    НачалоДня = НачалоДня(ТекущаяДата());
    
    ОбновитьСписок();
    
КонецПроцедуры

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

&НаСервере
Функция ЗаполняемВеткуДерева(текКорень, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров)
    Корень = текКорень.ПолучитьЭлементы();
    текСсылка = ТоварыВыборка.Ссылка;
    
    Пока ТоварыВыборка.Следующий() Цикл
//выходИзИерархии:
        Если ТоварыВыборка.Родитель <> текСсылка Тогда Возврат Истина; КонецЕсли;
        
        текЭлемент = Корень.Добавить();
        ЗаполнитьЗначенияСвойств(текЭлемент, ТоварыВыборка);
        Если ТоварыВыборка.ЭтоГруппа Тогда
            Если ЗаполняемВеткуДерева(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров) Тогда
                Перейти ~выходИзИерархии;
            КонецЕсли;
            
            Возврат Ложь;
        Иначе
            ПодгружаемДополнительныеДанные(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров);
        КонецЕсли;
    КонецЦикла;
    
    Возврат Ложь;
КонецФункции

&НаСервере
Процедура ПодгружаемДополнительныеДанные(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров)
    ЦеныТоваровОтбор.Товар = ТоварыВыборка.Ссылка;
    СрезТоваров = ЦеныТоваров.СрезПоследних(НачалоДня, ЦеныТоваровОтбор);
    Если СрезТоваров.Количество() > 0 Тогда
        ЗаполнитьЗначенияСвойств(текЭлемент, СрезТоваров[0]);
    КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПолучитьВидЦен()
    выборкаВидыЦен = Справочники.ВидыЦен.Выбрать();
    выборкаВидыЦен.Следующий();
    Возврат выборкаВидыЦен.Ссылка;
КонецФункции

PS  в тестовом примере я работал с некоторой своей конфигурацией. ВидыЦен на этом этапе справочник, используется в измерении регистра сведений ЦеныТоваров, там всего одно значение, оно же прописано в записях самого регистра в реальных данных. ВидЦен и НачалоДня (Дата) - реквизиты формы в моём случае.

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    88079    63    44    

74

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

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3050 руб.

03.12.2018    71374    243    106    

189

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически. Решение предназначено для считывания штрихкодов, а не для их создания и печати.

3050 руб.

22.04.2019    122129    724    207    

383

Мобильная разработка 1С:Предприятие 8 1С:Управление торговлей 11 Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

"МРМ:Маркировка" для работы с конфигурациями 1С - готовое решение, позволяющее быстро автоматизировать работу учетной системы 1С на ордерном и безордерном складе при работе как с товарами, подлежащими обязательной маркировке, так и с товарами, учет которых построен на базе линейных штрих-кодов. Решение поддерживает большинство распространенных складских документов, необходимых для работы кладовщику на терминале сбора данных. Для начинающих пользователей имеется подробная инструкция по работе с приложением в разрезе видов документов.

19000 руб.

24.06.2025    3478    26    0    

4

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5246 руб.

29.06.2020    25410    34    6    

53

Консолидация данных Работа с интерфейсом Программист Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 1C:ERP Узбекистан Беларусь Кыргызстан Россия Казахстан Платные (руб)

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

6088 руб.

17.10.2025    2646    3    0    

2

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36600 руб.

28.08.2025    8813    2    2    

6
Для отправки сообщения требуется регистрация/авторизация