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

УФ: Использование отбора настройки СКД в 1С

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

Реквизит формы с типом КомпоновщикНастроекКомпоновкиДанных

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

Рассмотрим на примере. На форму объекта внешней обработки добавляем реквизит НастройкиСКД с типом КомпоновщикНастроекКомпоновкиДанных:

УФ: Использование отбора настройки СКД в 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-ФЗ «О персональных данных»

          Спасибо!

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

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