8.х УТ Найти доп. реквизит на форме

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем ЧКДзержинский, 5 дек 2018.

  1. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    530
    Симпатии:
    3
    Баллы:
    29
    Всем доброго дня. Как найти на форме элемент доп. реквизита, даже если значение для него не задано?
  2. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    530
    Симпатии:
    3
    Баллы:
    29
    В общем, на форму элементы доп. реквизитов помещаются с замороченными именами. Чтобы их получить написал вот такую функцию:
    Код:
    &НаСервере
    Функция ПолучитьТЗИдентификаторовДопРеквизитов()
        //Дополнительные реквизиты имеют имена (которые для разработчиков). Помещаете имена ваших реквизитов в массив.
        МассивДопРеквизитов = Новый Массив;
        МассивДопРеквизитов.Добавить("ИмяРеквизита1_%");
        МассивДопРеквизитов.Добавить("ИмяРеквизита2_%");
      
        ТекстЗапроса = "";
        Для каждого ЭлементМассива Из МассивДопРеквизитов Цикл
            Если ТекстЗапроса = "" Тогда
                ТекстЗапроса = "ВЫБРАТЬ """ + ЭлементМассива + """ КАК ИмяДопРеквизита
                |ПОМЕСТИТЬ ВТДопРеквизиты";
            Иначе
                ТекстЗапроса = ТекстЗапроса + "
                |ОБЪЕДИНИТЬ ВСЕ
                |ВЫБРАТЬ """ + ЭлементМассива + """ КАК ИмяДопРеквизита";
            КонецЕсли;
        КонецЦикла;
        ТекстЗапроса = ТекстЗапроса + "
        |;
        |ВЫБРАТЬ
        |    ДопРеквизиты.Ссылка КАК СсылкаНаборДР, ДопРеквизитыСвойства.Ссылка КАК СсылкаПВХ_ДР
        |ИЗ
        |    Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК ДопРеквизиты
        |    ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДопРеквизитыСвойства
        |        ПО  ДопРеквизитыСвойства.Ссылка = ДопРеквизиты.Свойство
        |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДопРеквизиты ПО (ДопРеквизитыСвойства.Имя ПОДОБНО ВТДопРеквизиты.ИмяДопРеквизита)
        |ГДЕ
        |    //в моем случае нужны были доп. реквизиты справочника Номенклатура, соответственно если у вас другой элемент метаданных, то подставляете его
        |    ДопРеквизиты.Ссылка В ИЕРАРХИИ(ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура))  
        |";
      
        Запрос = Новый Запрос;  
        Запрос.Текст = ТекстЗапроса;
      
        Результат = Запрос.Выполнить();
        ТЗ = Результат.Выгрузить();
      
        КС = Новый КвалификаторыСтроки(150);
        Массив = Новый Массив;
        Массив.Добавить(Тип("Строка"));
        ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
      
        ТЗ.Колонки.Добавить("ГУИД",ОписаниеТиповС);
      
        Для каждого СтрокаТЗ Из ТЗ Цикл      
            СтрокаТЗ.ГУИД = "ДополнительныйРеквизитЗначение_"
            + СтрЗаменить(Врег(Строка(СтрокаТЗ.СсылкаНаборДР.УникальныйИдентификатор())), "-", "x")
            + "_"      
            + СтрЗаменить(ВРег(Строка(СтрокаТЗ.СсылкаПВХ_ДР.УникальныйИдентификатор())), "-", "x");
        КонецЦикла;
    
        Возврат ТЗ;
    КонецФункции
    

    А потом уже можно используя результат этой функции работать с элементами доп. реквизитов.
    Код:
    ТЗИдентификаторы = ПолучитьТЗИдентификаторовДопРеквизитов();
    Для каждого СтрокаТЗДоп Из ТЗИдентификаторы Цикл
        ЭлементДоп = Элементы.Найти(СтрокаТЗДоп.ГУИД);      
        Если ЭлементДоп <> Неопределено Тогда
            ЭлементДоп.ТолькоПросмотр = Истина;
        КонецЕсли;
    КонецЦикла;  
    
  3. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.055
    Симпатии:
    188
    Баллы:
    104
    По-моему, сейчас в настройках доп. реквизитов можно настраивать его видимость/доступность в формах (если, конечно, все ради этого задумывалось).
  4. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    530
    Симпатии:
    3
    Баллы:
    29
    Я привел для примера часть кода, на самом деле кому-то реквизиты видны, а кому-то нет и состав пользователей, которым можно видеть эти реквизиты, может динамично меняться.

Поделиться этой страницей