🔥 Горящие вакансии
Все статьи

УФ: Заполнение дерева значений на форме в 1С

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Рассмотрим задачу, когда на форме нужно заполнить элемент дерева значений.

👉 Смотрите также:   Заполнение реквизита формы (дерево значений) в 1С: внешняя обработка заполнения объекта

Рассмотрим на примере заполнения элемента ДеревоЦен формы документа Установка цен номенклатуры конфигурации УТ 11.0.7.21. В элемент ДеревоЦен записываются данные по номенклатуре, а в подчиненные номенклатуре строки – данные по характеристикам номенклатуры. В результате в табличной части Товары документа Установка цен номенклатуры находятся строки по Номенклатуре (без характеристики) и строки по Характеристикам номенклатуры (т.е. получается как развернутый вид дерева значений ДеревоЦен).

УФ: Заполнение дерева значений на форме в 1С

Элемент ДеревоЦен

В рассматриваемом примере на форму документа добавлена команда пр_ЗаполнитьДеревоЦен. В процедуре описания действия команды вызывается процедура пр_ЗаполнитьДеревоЦенСервер(). Элемент ДеревоЦен заполняется товарами из ассортимента выбранного партнера, для этого в конфигурацию добавлен регистр сведений пр_АссортиментТоваров с измерениями Партнер и Характеристика; в документ Установка цен номенклатуры добавлен реквизит пр_Партнер.

Пример процедуры для заполнения элемента ДеревоЦен:

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

Оставить коментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Раз в квартал — дайджест достойный внимания

Вести с полей 1С, кейсы работы с заказчиками и вакансии на удалёнке

Image

Отправить резюме

    Я согласен на обработку персональных данных в соответствии
    со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

    Отправить резюме

      Я согласен на обработку персональных данных в соответствии
      со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

      Pекомендовать друга

        Отправьте контактные данные вашего друга и предупредите его, что мы с ним свяжемся. Когда друг успешно отработает 3 месяца, вы получите 20 000 ₽.


        Выбрать вакансию
        • Ведущий аналитик 1С
        • Программист 1С
        • Консультант-аналитик 1С
        • Проекты для команды специалистов 1С
        • Проекты для специалистов 1С
        • Стажёр-программист 1С
        • Bitrix-разработчик
        Я согласен на обработку персональных данных в соответствии
        со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

        Pекомендовать друга

          Отправьте контактные данные вашего друга и предупредите его, что мы с ним свяжемся. Когда друг успешно отработает 3 месяца, вы получите 20 000 ₽.


          Выбрать вакансию
          • Ведущий аналитик 1С
          • Программист 1С
          • Консультант-аналитик 1С
          • Проекты для команды специалистов 1С
          • Проекты для специалистов 1С
          • Стажёр-программист 1С
          • Bitrix-разработчик
          Я согласен на обработку персональных данных в соответствии
          со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

          Спасибо!

          Мы получили ваше резюме. Менеджер свяжется с вами в течение трех дней

          Горящие вакансии