8.х Как избавиться от дублей в таблице?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ogo, 8 окт 2010.

  1. TopicStarter Overlay
    ogo
    Offline

    ogo

    Регистрация:
    30 сен 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Подскажите,пожлуйста,что неправильно в процедуре?мне надо чтобы при вводе данных пользователем в таблицу в колонку Этап,если этот этап уже есть,выдавалось сообщение.Вот процедура:
    Код:
    Процедура СрокиЭтаповЭтапПриИзменении(Элемент)
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Этап", ТекущийЭлемент);
    
    НайденныеСтроки= Объект.СрокиЭтапов.НайтиСтроки(ПараметрыОтбора);
    Если НайденныеСтроки.Количество()>1 Тогда
    Сообщить("Дубль");
    КонецЕсли;
    
    КонецПроцедуры
    
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    А зачем обращение к Объект?
  3. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Молодой человек, Вы это о чём???
    Кто такой объект, с чем его кушать то? Что такое текущий элемент?
    В синтаксис-помощнике посмотрите метод "Найти"
  4. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    Попробуйте так:
    Код:
    Процедура СрокиЭтаповЭтапПриИзменении(Элемент)
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Этап", Элемент.значение);
    
    НайденныеСтроки= элементыформы.СрокиЭтапов.НайтиСтроки(ПараметрыОтбора);//если СтрокиЭтапов табличная часть, то можно без Элементыформы.
    Если НайденныеСтроки.Количество()>1 Тогда
    Сообщить("Дубль");
    Элемент.значение = "";//здесь необходимо затереть введенное значение (я предположил, что тип строка, вам необходимо подставить ваше значение в зависимости от типа)
    КонецЕсли;
    КонецПроцедуры
    
    
  5. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    А еще правильнее так: использовать событие не приизменении, а при окончаниивводатекста:
    Код:
    Процедура СрокиЭтаповЭтапОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
    если СрокиЭтапов.Найти(элемент.значение,"Этап")<>неопределено тогда
    сообщить("Дубль");
    СтандартнаяОбработка = ложь;
    Конецесли;
    КонецПроцедуры
    
    

Поделиться этой страницей