Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отмена выбора элемента, помеченного на удаление
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Constantus
Приветствую, Форумчане!
1с8.3.12, УФ, самопис, БСП

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

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

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

Как можно сделать так, чтобы если выбран элемент, помеченный на удаление, очистить этот реквизит от выбранного значения?
pablo
В обработчике события ПриИзменении нужен код следующего вида:
Если Значение.Пометкаудаления тогда
значение=справочники.Размеры.ПустаяСсылка();
Конецесли;


P.S. Если это таки тонкий клиент, то можно создать реквизит формы ПустойРазмер и использовать его вместо Справочники.Размеры.ПустаяСсылка().
volodya1122
а может лучше подойти к решению вопроса с другой стороны? При выборе из документа не показывать помеченные на удаление элементы справочника.
Constantus
pablo @ Сегодня, 17:23 необходимо зарегистрироваться для просмотра ссылки ,

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


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

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

P.S. Использовать неопределено при таких присвоениях - я бы назвал грязным трюком. В определенных ситуациях, например, реквизит составного типа, такое присвоение добавит проблем.
Constantus
В общем, универсального решения нет. Решил проблему созданием функцию, которая проверяет элемент справочника на удаление, далее срабатывает процедура перед началом выбора элемента. Вроде получилось
daveal
Вам же вроде на инфостарте ответили просто параметры выбора прописать?
С этим только один косяк может быть, если быстрый выбор стоит и пользователь уже выбирал элемент, я не помню, он будет показываться или нет.



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

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


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

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

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

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.