Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 13:46

Определение типа данных в таблице (составной реквизит)

Автор Алексей_1985_06, 21 апр 2024, 12:09

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Всем привет! Уважаемые программисты, подскажите вот с такой задачкой:
1. Есть реквизит с составным типом данных: "ДолжностноеЛицо" в ТЧ "СписокСотрудников"
2. Создал свой список значений с выбором типа данных, но возникает ошибка, не могу поместить данные в соотвествиии с выбранным значением, помогите довести до ума!

&НаКлиенте
Процедура СписокСотрудниковДолжностноеЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь; 
СписокЗначений = Новый СписокЗначений();
СписокЗначений.Добавить(0, "• Значение из справочника");
СписокЗначений.Добавить(1, "• Значение типа: строка");

ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораЭлемента",ЭтотОбъект);
СписокЗначений.ПоказатьВыборЭлемента(ОписаниеОповещенияОЗакрытии, "Выбор типа данных",СписокЗначений [0]);

КонецПроцедуры


// Описание процедуры которая будет вызвана после закрытия окна диалога выбора элемента из списка значения
&НаКлиенте
Процедура ПослеВыбораЭлемента(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт

Если ВыбранныйЭлемент = Неопределено Тогда
Возврат
КонецЕсли;

// ЗДЕСЬ ВОТ ВОЗНИКЛИ ТРУДНОСТИ!!!

ТекДанные = Элементы.СписокСотрудников.ТекущиеДанные;  // Данные текущей строки

Если ВыбранныйЭлемент.Значение = 0 Тогда // Если выбран первый элемент из списка значений
ТекДанные.ДолжностноеЛицо.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Должности");
ИначеЕсли ВыбранныйЭлемент.Значение = 1 Тогда // Если выбран второй элемент из списка значений
ТекДанные.ДолжностноеЛицо.ОграничениеТипа = Новый ОписаниеТипов("Строка");
КонецЕсли;

КонецПроцедуры

fruitella

Наверно так

&НаКлиенте
Процедура СписокСотрудниковДолжностноеЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

        СтандартнаяОбработка = Ложь;     
        СписокЗначений = Новый СписокЗначений();
        СписокЗначений.Добавить(0, "• Значение из справочника");
        СписокЗначений.Добавить(1, "• Значение типа: строка");

        ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтотОбъект);
        СписокЗначений.ПоказатьВыборЭлемента(ОписаниеОповещенияОЗакрытии, "Выбор типа данных", СписокЗначений);   
   
КонецПроцедуры


// Описание процедуры которая будет вызвана после закрытия окна диалога выбора элемента из списка значения
&НаКлиенте
Процедура ПослеВыбораЭлемента(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
   
    Если ВыбранныйЭлемент = Неопределено Тогда
        Возврат
    КонецЕсли;

// ЗДЕСЬ ВОТ ВОЗНИКЛИ ТРУДНОСТИ!!!

    ТекДанные = Элементы.СписокСотрудников.ТекущиеДанные;  // Данные текущей строки
   
     Если ВыбранныйЭлемент.Значение = 0 Тогда // Если выбран первый элемент из списка значений   
        ТекДанные.ДолжностноеЛицо = ПредопределенноеЗначение("Справочник.Должности.ПустаяСсылка");
    ИначеЕсли ВыбранныйЭлемент.Значение = 1 Тогда // Если выбран второй элемент из списка значений
        ТекДанные.ДолжностноеЛицо = Новый ОписаниеТипов("Строка");
    КонецЕсли;
       
КонецПроцедуры

Алексей_1985_06

fruitella, Нет так не подходит, необходимо чтобы при выборе типа значений (строка или ссылка на справочник) была возможность выбора соответствующего значения....

fruitella

Алексей_1985_06, Ну тогда получать ссылки и добавлять их в список значений (если их немного), а если их много, то тогда открывать форму списка этого справочника для выбора значения

LexaK

а при выборе типа: Строка какое значение вы хотите выбирать в поле?
там только текст вводить!
(что наводит на неправильность постановки задачи  :fdbsdfbsd:  )
если помогло нажмите: Спасибо!

Алексей_1985_06

LexaK, Здравствуйте! Вопрос: <а при выборе типа: Строка какое значение вы хотите выбирать в поле?>
Ответ: Хочу записывать произвольное значение типа: Строка (дело в том, что часто возникает необходимо вести весь список должностей сотрудников, в том числе и ранее занимаемые должности вне организации - поэтому помимо ссылки на справочник с должностями организации, нужен еще и тип: строка).

Вот в таком случае в ТЧ поле выбора просто подставляется: либо надпись "Строка" либо "Должности"  :dfbsdfbsdf:  :dfbsdfbsdf:  :dfbsdfbsdf:

ТекДанные = Элементы.СписокСотрудников.ТекущиеДанные;  // Данные текущей строки ТЧ "СписокСотрудников"
   
     Если ВыбранныйЭлемент.Значение = 0 Тогда // Если выбран первый элемент из списка значений   
        ТекДанные.ДолжностноеЛицо = Новый ОписаниеТипов("СправочникСсылка.Должности");
    ИначеЕсли ВыбранныйЭлемент.Значение = 1 Тогда // Если выбран второй элемент из списка значений
        ТекДанные.ДолжностноеЛицо = Новый ОписаниеТипов("Строка");
    КонецЕсли;

Подскажите что не так сделал? Как при выборе типа данных, обеспечить выбор соответствующего значения в поле выбора?

LexaK

Алексей_1985_06,
Цитироватьв том числе и ранее занимаемые должности вне организации
в типовых, так не делают!
заведите/создайте "старые" должности, поместите их в группу "Старые" или "Не используемые"
и у вас эта проблема уйдет, у вас Должность всегда будет Ссылкой!
Все будет единообразно, не надо будет в будущем ломать голову как отличить и обработать должность-строка от Должности-ссылка!
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск