Имя: Пароль:
1C
1С v8
Вывести полное наименование
,
0 егаис
 
02.02.19
16:28
Чую вопрос ламерский, но все же
Есть иерархический справочник (иерархия элементов) Сегмент.
В справочнике Номенклатура есть реквизит с типом Спр.Сегмент.
Возможно ли штатно в поле формы элемента Номенклатуры вывести полное наименование Сегмента с учетом иерархии?
Пусть сегмент такой Сантехника, у него подчиненный Унитазы
В поле номенклатуры надо вывести "Сантехника / Унитазы"
1 Конструктор1С
 
02.02.19
16:33
ПолноеНаименование() ?
2 jsmith82
 
02.02.19
16:33
если только несколько полей (изменить форму)
ссылка.сегмент
ссылка.сегмент.родитель
3 егаис
 
02.02.19
16:36
(1) по сути да, но нужно изменить представление вывода во всех формах, где используется реквизит с типом Сегмент
4 jsmith82
 
02.02.19
16:37
ну штатно не получится
надо в модуль менеджера лезть
5 2S
 
02.02.19
16:42
ОбновлениеТекстаРедактирования?
6 егаис
 
02.02.19
17:18
не работает ((
&НаКлиенте
Процедура ПриОткрытии(Отказ)

...
    Если НЕ Объект.ТоварныйСегмент.Пустая() Тогда
        ОбновитьИнфорациюОТоварномСегменте();
    КонецЕсли;
    
КонецПроцедуры


&НаКлиенте
Процедура ОбновитьИнфорациюОТоварномСегменте()
    
    ПолноеНаименованиеСегмента = ПолучитьПолноеНаименованиеРеквизитаНаСервере(Объект.ТоварныйСегмент);
    Объект.ТоварныйСегмент = ПолноеНаименованиеСегмента;
        ЭтаФорма.ОбновитьОтображениеДанных(Элементы.ТоварныйСегмент);
    
КонецПроцедуры    

&НаСервере
Функция ПолучитьПолноеНаименованиеРеквизитаНаСервере(Реквизит)
    Возврат Реквизит.ПолноеНаименование();
КонецФункции    




что не так?
7 Sapiens_bru
 
02.02.19
17:21
Вставь вот этот код в модуль менеджера справочника Сегменты

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Сегменты.Ссылка КАК Ссылка,
        |    Сегменты.Наименование КАК Наименование
        |ИЗ
        |    Справочник.Сегменты КАК Сегменты
        |ГДЕ
        |    Сегменты.Ссылка = &Ссылка
        |ИТОГИ ПО
        |    Ссылка ТОЛЬКО ИЕРАРХИЯ";
    Запрос.УстановитьПараметр("Ссылка", Данные.Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        Если Представление="" тогда
            Представление = Выборка.Наименование;
        Иначе
            Представление = ""+ Представление + " \ " + Выборка.Наименование;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
8 егаис
 
02.02.19
17:24
(7) Это прелестно!
Не знал про такой метод в менеджере, често. Век живи, век учись, истинно
Благодарю
9 Ёпрст
 
02.02.19
18:05
(8) рано радуешься, эта шляпа будет потом везде так выводится
10 Ёпрст
 
02.02.19
18:05
оно точно надо ?
11 Sapiens_bru
 
02.02.19
18:46
(10) Ну не большая тема же. Можно же прочитать всю
12 Ёпрст
 
02.02.19
20:50
(11) к чему это ? Вы предложили не самое удачное решение. Врят ли автору нужно во всех местах, где будет реквизит данного типа в представлении видеть "иерархию"
13 Sapiens_bru
 
02.02.19
20:51
(12) Смотри (3)
14 Ёпрст
 
02.02.19
20:53
(13)а, не видел.
Основная теорема систематики: Новые системы плодят новые проблемы.