Как установить тип для реквизита "произвольного" типа
Действительно, проверил только что!
Код вида:
Если Элемент.Имя = "НаименованиеПоследнегоСправочника" Тогда
СЗ = ВернутьСписокОбъектов("Справочник");
Элемент.Значение = ЭтаФорма.ВыбратьИзСписка(СЗ, Элемент);
Если Элемент.Значение = Неопределено Тогда
ЭлементыФормы.ГруппаСправочника.Значение = "";
ЭлементыФормы.ГруппаСправочника.Доступность = Ложь;
Иначе
НомСкобки = Найти(Элемент.Значение,"(");
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка."+Лев(Элемент.Значение,НомСкобки-1));
ЭлементыФормы.ГруппаСправочника.ОграничениеТипа = ОписаниеТипа;
ЭлементыФормы.ГруппаСправочника.Значение = ОписаниеТипа.ПривестиЗначение();
ЭлементыФормы.ГруппаСправочника.Доступность = Истина;
КонецЕсли;
ИначеЕсли Элемент.Имя = "НаименованиеПоследнегоДокумента" Тогда
СЗ = ВернутьСписокОбъектов("Документ");
..................
работает только если у реквизита (у меня это реквизит обработки) ГруппаСправочника.
Код вида:
Если Элемент.Имя = "НаименованиеПоследнегоСправочника" Тогда
СЗ = ВернутьСписокОбъектов("Справочник");
Элемент.Значение = ЭтаФорма.ВыбратьИзСписка(СЗ, Элемент);
Если Элемент.Значение = Неопределено Тогда
ЭлементыФормы.ГруппаСправочника.Значение = "";
ЭлементыФормы.ГруппаСправочника.Доступность = Ложь;
Иначе
НомСкобки = Найти(Элемент.Значение,"(");
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка."+Лев(Элемент.Значение,НомСкобки-1));
ЭлементыФормы.ГруппаСправочника.ОграничениеТипа = ОписаниеТипа;
ЭлементыФормы.ГруппаСправочника.Значение = ОписаниеТипа.ПривестиЗначение();
ЭлементыФормы.ГруппаСправочника.Доступность = Истина;
КонецЕсли;
ИначеЕсли Элемент.Имя = "НаименованиеПоследнегоДокумента" Тогда
СЗ = ВернутьСписокОбъектов("Документ");
..................
работает только если у реквизита (у меня это реквизит обработки) ГруппаСправочника.
По теме из базы знаний
- Типовая борьба - личный опыт работы с типовыми конфигурациями 1С:8
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Как сдать экзамен 1С:Специалист по платформе?
- Библиотека программного изменения формы (УФ)
- Как передать Таблицу Значений в Динамический Список?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот вариант:
Надеюсь кому поможет
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка.Контрагенты"); // вместо СправочникСсылка.Контрагенты ваше значение
ЭлементыФормы.ПолучательПСТретьеЛицо.ОграничениеТипа = ОписаниеТипа; //вместо ПолучательПСТретьеЛицо ваш реквизит
ЭлементыФормы.ПолучательПСТретьеЛицо.Значение = ОписаниеТипа.ПривестиЗначение()
Надеюсь кому поможет
А как бы назначить тип полю формы произвольного типа для УФ?
Метода Значение там нет.
Вообще не могу толком сделать что то типа отбора в СКД.
Есть ТЧ у справочника, там есть счет, некое поле (реквизит по которому фильтр), условие (это сз типа В списке), а потом поле формы типа произвольный в каждой строке в представлении этой ТЧ. Так вот при выборе "в списке" нужно как то сделать это поле списком значений с ограниченным типом справочников на выбор. Иначе если условие Равно, то просто это поле ТЧ пусть будет типом самого типа реквизита для выбора одного элемента.
Так вот назначить тип не получается. А потом еще как то это хранить в БД нужно.
Метода Значение там нет.
Вообще не могу толком сделать что то типа отбора в СКД.
Есть ТЧ у справочника, там есть счет, некое поле (реквизит по которому фильтр), условие (это сз типа В списке), а потом поле формы типа произвольный в каждой строке в представлении этой ТЧ. Так вот при выборе "в списке" нужно как то сделать это поле списком значений с ограниченным типом справочников на выбор. Иначе если условие Равно, то просто это поле ТЧ пусть будет типом самого типа реквизита для выбора одного элемента.
Так вот назначить тип не получается. А потом еще как то это хранить в БД нужно.
Может быть, кому-то поможет:
УФ у реквизита произвольного типа
Галку Выбирать Тип ставим, в Режим выбора из списка убираем
далее
(18)
УФ у реквизита произвольного типа
Галку Выбирать Тип ставим, в Режим выбора из списка убираем
далее
&НаКлиенте
Процедура РеквизитОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОписаниеТипа = Новый ОписаниеТипов("Ваш.Тип");
Элементы.Реквизит.ОграничениеТипа = ОписаниеТипа;
КонецПроцедуры
(18)
2(1): только после вот такой вот установики типа реквизита, при нажатии кнопки "Очистить" пользователю прийдется выбирать тип реквизита из специального списка.
Правильно делать надо так, если это реквизит формы:
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка.Организации");
ЭлементыФормы.Организация.ОграничениеТипа = ОписаниеТипа;
ЭлементыФормы.Организация.Значение = ОписаниеТипа.ПривестиЗначение();
ЭлементыФормы.ВыбиратьТип = Ложь; //это на всякий случай
вот тогда при очистке значения реквизита не будет необходимости заново выбирать тип реквизита
Правильно делать надо так, если это реквизит формы:
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка.Организации");
ЭлементыФормы.Организация.ОграничениеТипа = ОписаниеТипа;
ЭлементыФормы.Организация.Значение = ОписаниеТипа.ПривестиЗначение();
ЭлементыФормы.ВыбиратьТип = Ложь; //это на всякий случай
вот тогда при очистке значения реквизита не будет необходимости заново выбирать тип реквизита
(6): спасибо за подробный пример, но в итоге тип значения остается по прежнему строковым, при том что ОписаниеТипа установилось как надо (((
Плюс ко всему в поле ввода ничего не получается вести кнопка выбора срабатывает впустую, вручную ни одного символа не получается ввести...
приведите еще пример пожалуйста...
Плюс ко всему в поле ввода ничего не получается вести кнопка выбора срабатывает впустую, вручную ни одного символа не получается ввести...
приведите еще пример пожалуйста...
(8) сработало частично, установилось значение элемента фирмы, но по прежнему не допускает открыть форму списка справочника для перевыбора.
присваивал как пустую ссылку, так и конкретное значение. Перебрал много вариантов:
1.
Фирма=Справочники.Фирмы.найтипокоду("00000001").Ссылка;
ЭлементыФормы.фирма.Значение = Фирма;
2.
Фирма=Справочники.Фирмы.найтипокоду("00000001");
ЭлементыФормы.фирма.Значение = Фирма;
....
Реквизиты Доступность и Только Просмотр проверял...
но доступа к списку справочника почему то нет (((
навреное потому, что тип значения поля ввода на самой форме продолжает оставаться строковым....
P.S. я скоро от этого с ума сойду, помогите плиз !!! )))
присваивал как пустую ссылку, так и конкретное значение. Перебрал много вариантов:
1.
Фирма=Справочники.Фирмы.найтипокоду("00000001").Ссылка;
ЭлементыФормы.фирма.Значение = Фирма;
2.
Фирма=Справочники.Фирмы.найтипокоду("00000001");
ЭлементыФормы.фирма.Значение = Фирма;
....
Реквизиты Доступность и Только Просмотр проверял...
но доступа к списку справочника почему то нет (((
навреное потому, что тип значения поля ввода на самой форме продолжает оставаться строковым....
P.S. я скоро от этого с ума сойду, помогите плиз !!! )))
попробовал, по прежнему "ЭлементыФормы.Организация.Значение " остается быть текстовым ...
может где то в стандартной конфиге есть несложный пример, где произвольному типу задается конкретный тип и с ним можно работать пользователю непосредственно на форме ?
может где то в стандартной конфиге есть несложный пример, где произвольному типу задается конкретный тип и с ним можно работать пользователю непосредственно на форме ?
всё стало получаться, когда я поменял тип "произвольный" на Составной "СправочникСсылка.Фирма, СписокЗначений"
вот код при котором всё стало работать...
PS только в случая интерактивного очищения, тип остается таким, каким был перед очищением. Но в это меня устраивает.
вот код при котором всё стало работать...
перем СЗ;
Процедура Флажок1ПриИзменении(Элемент)
если ЭлементыФормы.Флажок.Значение=Истина тогда
Фирма=справочники.фирма.ПустаяСсылка();
иначе
Фирма=СЗ;
конецесли;
КонецПроцедуры
сз=новый списокзначений;
ОписаниеТипаФирма = Новый ОписаниеТипов("СправочникСсылка.Фирма,СписокЗначений");
ЭлементыФормы.Фирма.ОграничениеТипа = ОписаниеТипаФирма;
ПоказатьPS только в случая интерактивного очищения, тип остается таким, каким был перед очищением. Но в это меня устраивает.
Сработало:
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка.Контрагенты"); // вместо СправочникСсылка.Контрагенты ваше значение
ЭлементыФормы.ПолучательПСТретьеЛицо.ОграничениеТипа = ОписаниеТипа; //вместо ПолучательПСТретьеЛицо ваш реквизит
ЭлементыФормы.ПолучательПСТретьеЛицо.Значение = ОписаниеТипа.ПривестиЗначение()
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка.Контрагенты"); // вместо СправочникСсылка.Контрагенты ваше значение
ЭлементыФормы.ПолучательПСТретьеЛицо.ОграничениеТипа = ОписаниеТипа; //вместо ПолучательПСТретьеЛицо ваш реквизит
ЭлементыФормы.ПолучательПСТретьеЛицо.Значение = ОписаниеТипа.ПривестиЗначение()
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот