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

Запрет на выбор подгруппы справочника

Автор Vogde, 24 июн 2013, 15:07

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

Vogde

Здравствуйте уважаемые форумчани. Есть документ Оказание услуги, в табличной части документа есть реквизит у которого тип данных ссылка на справочник. Справочник иерархический в нем две подгруппы: Услуги и Материалы. Как сделать чтобы при заполнении документа в поле этого реквизита пользователь мог выбрать только элементы одной подгруппы Услуги, а при выборе элементов другой подгруппы выдавалось сообщение " в этом документе выбирать эти элементы нельзя"

Пытался найти подобную ситуацию по форуму через поиск, ничего подобного найти не смог.

Подскажите пожалуйста как можно выпольнить мою задачу?

Vit1501

В форме документа у нужного тебе поля прописываешь нужные обработчики событий. Скорее всего придется использовать "окончаниеВводаТекста" и "обработкаВыбора"

Vogde

Теоретически я это понимаю, но как это сделать на практике не хватает опыта и знаний.Если не сложно напишите код который нужно будет вставить в модуль при событии обработкаВыбора

Soulidium

Тоже хотел бы узнать ответ на этот вопрос, сложилась похожая ситуация.

Vit1501

В обработке выбора есть параметр "ВыбранноеЗначение" - это значение, которое вы выбрали и оно будет установлено в поле формы. Так же есть параметр "СтандартнаяОбработка" - если истина, тогда платформа устанавливает выбранное  значение в реквизит и т д делает все необходимое, если ложь - то ничего не делает - программист сам должен прописывать все действия. В обработчике "обработкаВыбора" можно проверить если ВыбранноеЗначение не удовлетворяет вашим условиям, то выставить стандарнаяОбработка = ложь и далее можно там вывести сообщение пользователю...

Vogde

Цитата: Vit1501 от 25 июн 2013, 13:40
программист сам должен прописывать все действия.
Покажите пожалуйста как можно программно в обработчике прописать условие отбора одной из подгрупп иерархического справочника. ( пробовал поНаименованию, поСписку нечего не выходит)
вот код который я написал, но в нем где-то косяк.

&НаКлиенте
Процедура ТабличнаяЧастьНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

      ПроверитьВыбранноеЗначние(ВыбранноеЗначение, СтандартнаяОбработка)
      Если СтандартнаяОбработка = Ложь Тогда
          Предупрежедение("в этом документе выбирать эти элементы нельзя");
      КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Процедура  ПроверитьВыбранноеЗначние(ВыбранноеЗначение, СтандартнаяОбработка)
       // тут нужно как-то найти разрешенную подгруппу Услуги. 
     
      РазрешенныйРодитель = Справочники.Номенклатура.НайтиПоНаименованию("РазрешенныеУслуги");

      Если ВыбранноеЗначение.Родитель <> РазрешенныйРодитель  Тогда
           СтандартнаяОбработка = Ложь Тогда
      КонецЕсли;

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

wise

 Если ВыбранноеЗначение.Родитель <> РазрешенныйРодитель  Тогда
           СтандартнаяОбработка = Ложь Тогда
      КонецЕсли;

ну а вообще в ТВОЁМ случае ЛУЧШЕ использовать проверку реквизита элемента "ВидНоменклатуры"
Добавлено: 26 июн 2013, 09:06


&НаКлиенте
Процедура ТабличнаяЧастьНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   
      Если ВыбранноеЗначение.ВидНоменклатуры <> Перечисления.ВидыНоменклатуры.Услуга Тогда
          Предупрежедение("в этом документе выбирать эти элементы нельзя");
            ВыбранноеЗначение = "";
      КонецЕсли;
КонецПроцедуры

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Vogde

Уважаемый wise непонятно почему но при использование вашего варианта компилятор выдает ошибку:

{Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(5,11)}: Процедура или функция с указанным именем не определена (Предупрежедение)
          <<?>>Предупрежедение("в этом документе выбирать эти элементы нельзя"); (Проверка: Тонкий клиент)

Добавлено: 26 июн 2013, 11:47


Понял в чем ошибка. Но теперь выдает другую:
{Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(4,45)}: Переменная не определена (Перечисления)
    Если ВыбранноеЗначение.ВидНоменклатуры <> <<?>>Перечисления.ВидНоменклатуры.Услуга Тогда (Проверка: Тонкий клиент)

Dethmontt

пользуйтесь функцией ПредопределенноеЗначение() - описание есть в синтаксис помощнике
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Besart

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

Теги:

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

Рейтинг@Mail.ru

Поиск