Имя: Пароль:
1C
1С v8
Поменять у реквизита тип данных
0 Slon747
 
13.09.16
14:30
Есть реквизит обработки типа СправочникСсылка.
В разных конфигурациях этот справочник может называться по разному.
Есть ли возможность программно менять тип данных реквизита?
Т.е. Вместо "СправочниСсылка.ТипыЦенНоменклатуры" на "СправочниСсылка.ВидыЦен"?
1 Casey1984
 
13.09.16
14:32
Тип: СправочникСсылка. А потом прописывай в коде для реквизита.
2 Draconus
 
13.09.16
14:33
Ну как просто сделать...

    Если Объект.ИмяКонфигурации = "Розница" Тогда
        
        КассаККМ        = Справочники["КассыККМ"].ПустаяСсылка();
        ВидБезналОплаты = Справочники["ВидыОплатЧекаККМ"].ПустаяСсылка();
        ВидЦеныЗакупка  = Справочники["ВидыЦен"].ПустаяСсылка();
        ВидЦеныПродажа  = Справочники["ВидыЦен"].ПустаяСсылка();
        
    ИначеЕсли Объект.ИмяКонфигурации = "УправлениеТорговлей" Тогда
        
        КассаККМ        = Справочники["КассыККМ"].ПустаяСсылка();
        ВидЦеныЗакупка  = Справочники["ВидыЦен"].ПустаяСсылка();
        ВидЦеныПродажа  = Справочники["ВидыЦен"].ПустаяСсылка();
        
        Элементы.ВидБезналОплаты.Видимость              = Ложь;
        
    ИначеЕсли Объект.ИмяКонфигурации = "БухгалтерияПредприятия" Тогда
        
        ВидЦеныЗакупка  = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        ВидЦеныПродажа  = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        
        Элементы.ВидБезналОплаты.Видимость              = Ложь;
        Элементы.КассаККМ.Видимость                     = Ложь;
        Элементы.СопоставитьДанныеСотрудников.Видимость = Ложь;
        
    КонецЕсли;


Из примера должно быть понятно.
3 k1noshkin
 
13.09.16
14:35
Метаданные.Версия - узнаешь конфигурацию, ну а дальше условиями обращение к нужному объекту
4 xafavute
 
13.09.16
14:36
долько програмно добавить
Или можно установить тип СправочникСсылка и потом ограничивать
5 Slon747
 
13.09.16
14:42
Всем спасибо.
Прописал тип "СправочникСсылка", после чего установил пустую ссылку нужного справочника.
6 Slon747
 
13.09.16
15:30
А подскажите пож. как для УФ это реализовать?

Сделал так.
Модуль формы:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ПриОткрытииНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
    
    Обработка = РеквизитФормыВЗначение("Объект");
    Обработка.УстановитьТипыРеквизитов();
    
КонецПроцедуры


Модуль объекта:

&НаСервере
Процедура ПриОткрытииНаСервере()
    
    Обработка = РеквизитФормыВЗначение("Объект");
    Обработка.УстановитьТипыРеквизитов();
    
КонецПроцедуры

Процедура УстановитьТипыРеквизитов() Экспорт

    //установка типов реквизитов в зависимости от конфигураций
    Если Метаданные.Справочники.Найти("ТипыЦенНоменклатуры") <> Неопределено Тогда
        ТипЦенРозничная = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        ТипЦенОптовая    = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        ТипЦенЗаказов    = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
    ИначеЕсли Метаданные.Справочники.Найти("ВидыЦен") <> Неопределено Тогда
        ТипЦенРозничная = Справочники["ВидыЦен"].ПустаяСсылка();
        ТипЦенОптовая    = Справочники["ВидыЦен"].ПустаяСсылка();
        ТипЦенЗаказов    = Справочники["ВидыЦен"].ПустаяСсылка();        
    КонецЕсли;
        
КонецПроцедуры


Отладчиком вижу, что отрабатывает.
Но на форму при выборе значения дает все типы справочников.
7 Slon747
 
13.09.16
15:30
Вернее так:

Модуль формы:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ПриОткрытииНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
    
    Обработка = РеквизитФормыВЗначение("Объект");
    Обработка.УстановитьТипыРеквизитов();
    
КонецПроцедуры


Модуль объекта:

&НаСервере
Процедура УстановитьТипыРеквизитов() Экспорт

    //установка типов реквизитов в зависимости от конфигураций

    Если Метаданные.Справочники.Найти("ТипыЦенНоменклатуры") <> Неопределено Тогда
        ТипЦенРозничная = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        ТипЦенОптовая    = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        ТипЦенЗаказов    = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
    ИначеЕсли Метаданные.Справочники.Найти("ВидыЦен") <> Неопределено Тогда
        ТипЦенРозничная = Справочники["ВидыЦен"].ПустаяСсылка();
        ТипЦенОптовая    = Справочники["ВидыЦен"].ПустаяСсылка();
        ТипЦенЗаказов    = Справочники["ВидыЦен"].ПустаяСсылка();        
    КонецЕсли;
        
КонецПроцедуры
8 xafavute
 
13.09.16
15:35
Элементы.Реквизит.ОграничениеТипа = Новый ОписаниеТипов(...)
9 Slon747
 
13.09.16
15:38
(8) Спасибо
10 aleks_default
 
13.09.16
17:46
(0)Там вообще произвольный тип можно поставить. А потом присвоить пустую ссылку нужного типа.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан