Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Поменять у реквизита тип данных

Поменять у реквизита тип данных
Я
   Slon747
 
13.09.16 - 14:30
Есть реквизит обработки типа СправочникСсылка.
В разных конфигурациях этот справочник может называться по разному.
Есть ли возможность программно менять тип данных реквизита?
Т.е. Вместо "СправочниСсылка.ТипыЦенНоменклатуры" на "СправочниСсылка.ВидыЦен"?
 
 
   Casey1984
 
1 - 13.09.16 - 14:32
Тип: СправочникСсылка. А потом прописывай в коде для реквизита.
   Draconus
 
2 - 13.09.16 - 14:33
Ну как просто сделать...
    Если Объект.ИмяКонфигурации = "Розница" Тогда
        
        КассаККМ        = Справочники["КассыККМ"].ПустаяСсылка();
        ВидБезналОплаты = Справочники["ВидыОплатЧекаККМ"].ПустаяСсылка();
        ВидЦеныЗакупка  = Справочники["ВидыЦен"].ПустаяСсылка();
        ВидЦеныПродажа  = Справочники["ВидыЦен"].ПустаяСсылка();
        
    ИначеЕсли Объект.ИмяКонфигурации = "УправлениеТорговлей" Тогда
        
        КассаККМ        = Справочники["КассыККМ"].ПустаяСсылка();
        ВидЦеныЗакупка  = Справочники["ВидыЦен"].ПустаяСсылка();
        ВидЦеныПродажа  = Справочники["ВидыЦен"].ПустаяСсылка();
        
        Элементы.ВидБезналОплаты.Видимость              = Ложь;
        
    ИначеЕсли Объект.ИмяКонфигурации = "БухгалтерияПредприятия" Тогда
        
        ВидЦеныЗакупка  = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        ВидЦеныПродажа  = Справочники["ТипыЦенНоменклатуры"].ПустаяСсылка();
        
        Элементы.ВидБезналОплаты.Видимость              = Ложь;
        Элементы.КассаККМ.Видимость                     = Ложь;
        Элементы.СопоставитьДанныеСотрудников.Видимость = Ложь;
        
    КонецЕсли;


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

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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


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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует