Приветствую, Форумчане!
1с8.3.12, УФ, самопис, БСП
В документе "Заказ" в табличной части есть реквизит "Размеры" выбирается из соответствующих справочников.
Некоторые элементы этих справочников помечены на удаление.
Когда пользователь выбирает размер вводом строки с клавиатуры и попадает удаленный элемент, то выходит сообщение, что элемент помечен на удаление с предложением о продолжении...
Как можно сделать так, чтобы если выбран элемент, помеченный на удаление, очистить этот реквизит от выбранного значения?
В обработчике события ПриИзменении нужен код следующего вида:
Если Значение.Пометкаудаления тогда
значение=справочники.Размеры.ПустаяСсылка();
Конецесли;
а может лучше подойти к решению вопроса с другой стороны? При выборе из документа не показывать помеченные на удаление элементы справочника.
pablo @ Сегодня, 17:23
,
Поставил
СтрокаТабличнойЧасти = Элементы.МодельИКомплектация.ТекущиеДанные;
Если СтрокаТабличнойЧасти.Размер.ПометкаУдаления Тогда
СтрокаТабличнойЧасти.Размер = Неопределено;
КонецЕсли;
Значение - это потому, что "на коленке" писал по памяти.
Обращение к реквизитам справочника на клиенте - не взлетит. Либо используйте серверный функцию для вычисления, либо ... дальше уже в зависимости от типа МодельИКомплектация.
P.S. Использовать неопределено при таких присвоениях - я бы назвал грязным трюком. В определенных ситуациях, например, реквизит составного типа, такое присвоение добавит проблем.
В общем, универсального решения нет. Решил проблему созданием функцию, которая проверяет элемент справочника на удаление, далее срабатывает процедура перед началом выбора элемента. Вроде получилось
Вам же вроде на инфостарте ответили просто параметры выбора прописать?
С этим только один косяк может быть, если быстрый выбор стоит и пользователь уже выбирал элемент, я не помню, он будет показываться или нет.
Это если для одного документа. Если для всех сразу хотите тоже провернуть, то ОбработкуПолученияДанныхВыбора в модуле менеджера справочника
Выкрутился так: на событие при изменении поставил код:
ОтветНаВсе = ПроверитьРазмерНаПометкуУдаления(СтрокаТабличнойЧасти.РазмерИзделия);
Если ОтветНаВсе.ПометкаУдаления Тогда
СтрокаТабличнойЧасти.РазмерИзделия = "";//ОтветНаВсе.ТипСправочника;
Сообщить("А ведь предупреждали, что помечен на удаление...");
МодельИКомплектацияРазмерИзделияНачалоВыбора(Элемент, Неопределено, Истина)
КонецЕсли;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua