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

Изменяемая форма справочника в зависимости от реквизита

Автор Iff, 14 авг 2019, 20:43

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

Iff

Салют!

Первые шаги и пока сложносложнонепонятно.

Нужно создать общий справочник со всей номенклатурой, но следать так, чтобы набор выводимых в форме реквизитов был разным, в зависимости от реквизита Вид номенклатуры.
Вид номенклатуры делаю Перечислением - съедобное и несъедобное.
Соответственно, реквизиты Дата изготовления и Срок годности нужно выводить только у съедобной Номенклатуры.

В форме нужно видимо создать проверку условия изменения реквизита Вид номенклатуры, а потом как-то установить флаг видимости, но как это практически - непонятно.
Не мог ли ктонить пояснить совсем по простому?

ЗЫ Там ещё надо будет как-то определиться с выводом табличной части с запчастями (странно когда у колбасы вылезет список запчастей), но это надеюсь потом по аналогии с реквизитами сумею смастерить.

alexandr_ll

Цитата: Iff от 14 авг 2019, 20:43
Салют!

Первые шаги и пока сложносложнонепонятно.

Нужно создать общий справочник со всей номенклатурой, но следать так, чтобы набор выводимых в форме реквизитов был разным, в зависимости от реквизита Вид номенклатуры.
Вид номенклатуры делаю Перечислением - съедобное и несъедобное.
Соответственно, реквизиты Дата изготовления и Срок годности нужно выводить только у съедобной Номенклатуры.

В форме нужно видимо создать проверку условия изменения реквизита Вид номенклатуры, а потом как-то установить флаг видимости, но как это практически - непонятно.
Не мог ли ктонить пояснить совсем по простому?

ЗЫ Там ещё надо будет как-то определиться с выводом табличной части с запчастями (странно когда у колбасы вылезет список запчастей), но это надеюсь потом по аналогии с реквизитами сумею смастерить.
https://forum.infostart.ru/forum9/topic95670/

Iff

Нашёл пример здесь.

Пример с отображением картинок в ФормеСписка.

Перенёс чек-бокс в ФормуЭлемента - заработало.

Тогда добавил Перечисление ВидНоменклатуры и 3 реквизита: ВидНоменклатуры со ссылкой на Перечисление и два строчных для проверки отображения - ЭтоМатерия и ЭтоТкань.

Добавил эти реквизиты в ФормуЭлемента с проверкой выбора реквизита ВыборНоменклатуры.
Сначала на Клиенте:

Цитировать&НаКлиенте
Процедура ВидНоменклатурыПриИзменении(Элемент)
   Если Элементы.ВидНоменклатуры = "Ткань" Тогда
         Элементы.ЭтоТкань.Видимость = Ложь;
      Иначе
         Элементы.ЭтоТкань.Видимость = Истина;
   КонецЕсли;
КонецПроцедуры

Работает, но всё время ЛОЖЬ.

Перенёс на сервер:
Цитировать&НаСервере
Процедура ВидНоменклатурыПриИзмененииНаСервере()
   Если Элементы.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Материя Тогда
         Элементы.ЭтоТкань.Видимость = Ложь;
      Иначе
         Элементы.ЭтоТкань.Видимость = Истина;
   КонецЕсли;
КонецПроцедуры

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

Аналогично, работает, но всегда ЛОЖЬ. (

Видимо, туплю с синтаксисом, но где?

И вот ещё что обнаружил - если окошко ФормыЭлемента расширилось при отображении картинки, при отключении картинки размер остаётся прежним.
Наверное надо как-то перерисовать окно формы?

А окошко ФормыСписка уменьшает таблицу, при этом размер окна не изменяется. Забавно.
Добавлено: 15 авг 2019, 16:04


Нашёл ответы!

Цитировать&НаКлиенте
Процедура ВидНоменклатурыПриИзменении(Элемент)
   Если Элементы.ВидНоменклатуры = "Ткань" Тогда
-----------------------------------------------------------      
   Элементы.ЭтоТкань.Видимость = Ложь;
      Иначе
         Элементы.ЭтоТкань.Видимость = Истина;
   КонецЕсли;
КонецПроцедуры

Оно и есть ЛОЖЬ, потому что сравниваются разные типы.

Цитировать&НаСервере
Процедура ВидНоменклатурыПриИзмененииНаСервере()
   Если Элементы.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Материя Тогда
------------------------------------------------------------------------------
         Элементы.ЭтоТкань.Видимость = Ложь;
      Иначе
         Элементы.ЭтоТкань.Видимость = Истина;
   КонецЕсли;
КонецПроцедуры

Элемент Формы не есть Реквизит Справочника, а для данной Формы Справочник является Объектом.

Значит надо писать
ЦитироватьЕсли Объект.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Материя Тогда

Вопрос с размером окна остался...

antoneus

Можно в одну строчку уместить

Элементы.ЭтоТкань.Видимость = Объект.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Материя

Centzontotochtin

Для управляемого приложения в модуле менеджера справочника есть событие "ОбработкаПолученияФормы".
Можно для справочника сделать несколько форм на все случаи жизни и переопределять их в обработчике этого события.

bsn-chita

Цитата: Centzontotochtin от 15 авг 2019, 23:56
Для управляемого приложения в модуле менеджера справочника есть событие "ОбработкаПолученияФормы".
Можно для справочника сделать несколько форм на все случаи жизни и переопределять их в обработчике этого события.
А если создается новый элемент какая форма тогда будет или же смениться тип в пользовательском режиме?

Centzontotochtin

Цитата: bsn-chita от 16 авг 2019, 01:17
А если создается новый элемент какая форма тогда будет или же смениться тип в пользовательском режиме?
Перед созданием нового элемента можно предложить пользователю выбрать вид номенклатуры (в данном случае выбор формы идет именно по этому признаку), и далее уже открывать нужную форму.

Теги:

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

Рейтинг@Mail.ru

Поиск