Версия для печати темы (https://pro1c.org.ua/index.php?s=69e59d2cbc33058ca3e37b8b3ce7fd73&showtopic=58686)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Отмена выбора элемента, помеченного на удаление

Автор: Constantus 29.04.20, 13:14

Приветствую, Форумчане!
1с8.3.12, УФ, самопис, БСП

В документе "Заказ" в табличной части есть реквизит "Размеры" выбирается из соответствующих справочников.

Некоторые элементы этих справочников помечены на удаление.

Когда пользователь выбирает размер вводом строки с клавиатуры и попадает удаленный элемент, то выходит сообщение, что элемент помечен на удаление с предложением о продолжении...

Как можно сделать так, чтобы если выбран элемент, помеченный на удаление, очистить этот реквизит от выбранного значения?

Автор: pablo 29.04.20, 13:23

В обработчике события ПриИзменении нужен код следующего вида:

Если Значение.Пометкаудаления тогда
значение=справочники.Размеры.ПустаяСсылка();
Конецесли;


P.S. Если это таки тонкий клиент, то можно создать реквизит формы ПустойРазмер и использовать его вместо Справочники.Размеры.ПустаяСсылка().

Автор: volodya1122 29.04.20, 13:26

а может лучше подойти к решению вопроса с другой стороны? При выборе из документа не показывать помеченные на удаление элементы справочника.

Автор: Constantus 29.04.20, 13:36

pablo @ Сегодня, 17:23 * ,

Поставил

    СтрокаТабличнойЧасти = Элементы.МодельИКомплектация.ТекущиеДанные;
    
    Если СтрокаТабличнойЧасти.Размер.ПометкаУдаления Тогда
         СтрокаТабличнойЧасти.Размер = Неопределено;
    КонецЕсли;


Не совсем понял в Вашем примере "Значение".
В моем коде пишет, что не нашел поле "ПометкаУдаления"

Автор: Vofka 29.04.20, 13:56

Цитата(volodya1122 @ 29.04.20, 14:26) *
а может лучше подойти к решению вопроса с другой стороны? При выборе из документа не показывать помеченные на удаление элементы справочника.

При вводе с клавиатуры это не сработает.

Автор: pablo 29.04.20, 13:59

Значение - это потому, что "на коленке" писал по памяти.
Обращение к реквизитам справочника на клиенте - не взлетит. Либо используйте серверный функцию для вычисления, либо ... дальше уже в зависимости от типа МодельИКомплектация.

P.S. Использовать неопределено при таких присвоениях - я бы назвал грязным трюком. В определенных ситуациях, например, реквизит составного типа, такое присвоение добавит проблем.

Автор: Constantus 29.04.20, 21:25

В общем, универсального решения нет. Решил проблему созданием функцию, которая проверяет элемент справочника на удаление, далее срабатывает процедура перед началом выбора элемента. Вроде получилось

Автор: daveal 30.04.20, 10:36

Вам же вроде на инфостарте ответили просто параметры выбора прописать?
С этим только один косяк может быть, если быстрый выбор стоит и пользователь уже выбирал элемент, я не помню, он будет показываться или нет.



Это если для одного документа. Если для всех сразу хотите тоже провернуть, то ОбработкуПолученияДанныхВыбора в модуле менеджера справочника

Автор: Constantus 11.05.20, 10:01

Выкрутился так: на событие при изменении поставил код:

    ОтветНаВсе = ПроверитьРазмерНаПометкуУдаления(СтрокаТабличнойЧасти.РазмерИзделия);
    
    Если ОтветНаВсе.ПометкаУдаления Тогда
         СтрокаТабличнойЧасти.РазмерИзделия = "";//ОтветНаВсе.ТипСправочника;
         Сообщить("А ведь предупреждали, что помечен на удаление...");
         МодельИКомплектацияРазмерИзделияНачалоВыбора(Элемент, Неопределено, Истина)
    КонецЕсли;


где ПроверитьРазмерНаПометкуУдаления(СтрокаТабличнойЧасти.РазмерИзделия)

есть прверка на отметку на удаление составного типа данных.

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


Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua