|   |   | 
| 
 | Условие проверки похожих полей табличной части | ☑ | ||
|---|---|---|---|---|
| 0
    
        grandmaster 22.11.17✎ 14:12 | 
        На управляемой форме, есть табличная часть (Накладные). По нажатию кнопки в таблицу прилетает более 400 записей. В каждой записи есть поле (Идентификатор) тип строка. Очень много записей, где этот Идентификатор повторяется. Так же есть поле (ВыбратьСтроку) тип булево, а вот теперь вопрос! Когда идёшь по списку накладных и проставляешь галку у нужных записей, необходимо сделать так, что если встречается запись с идентификатором, у которого уже стоит галка (т.е истина), сообщать ("запись с данным идентификатором уже выбрана") и на ней не проставлять галку.
 Вот чтоб было более понятно. Например сейчас смотрю у 5-12-23 записи один и тот же идентификатор. И у 8-21-35-41 записи такая же ситуация. Теперь если ставлю галку на 5 записи и после когда попытаюсь поставить на 23 записи - мне вылетит сообщение и не даст поставить галку. Надеюсь более-менее понятно изложил. | |||
| 1
    
        grandmaster 22.11.17✎ 14:14 | 
        Знаю что это надо делать через событие поля (ВыбратьСтроку) приизменение     | |||
| 2
    
        drcrasher 22.11.17✎ 14:16 | 
        что не получается?     | |||
| 3
    
        FIXXXL 22.11.17✎ 14:18 | 
        (1) при изменении флажка НайтиСтроки с Истина, долго думать     | |||
| 4
    
        grandmaster 22.11.17✎ 14:19 | 
        (3) я именно так и делаю, только через массив, чтоб находил именно записи истина, с данным идентификатором, ща скину     | |||
| 5
    
        grandmaster 22.11.17✎ 14:24 | 
        (2) &НаКлиенте
 Процедура ТТНВыбранаПартияПриИзменении(Элемент) ТекущиеДанные = Элементы.Накладные.ТекущиеДанные; ДанныеП = Новый Структура; ДанныеП.Вставить("Идентификатор", ТекущиеДанные.Идентификатор); ДанныеП.Вставить("СтрокаВыбрана", ТекущиеДанные.ВыбратьСтроку); Для каждого стр из Объект.Накладные Цикл ИдентификаторНакладной = стр.Идентификатор; СтруктураНакладной = Новый Структура; СтруктураНакладной.Вставить("Идентификатор", ИдентификаторНакладной); НайденныеСтроки = Объект.Накладные.НайтиСтроки(СтруктураНакладной); Если стр.ВыбратьСтроку= Истина Тогда Сообщить ("запись с данным идентификатором уже выбрана!"); Прервать; КонецЕсли; КонецПроцедуры | |||
| 6
    
        grandmaster 22.11.17✎ 14:26 | 
        на строчке
 СтруктураНакладной.Вставить("Идентификатор", ИдентификаторНакладной); прилетает Значение не является значением объектного типа (Вставить) | |||
| 7
    
        Numerus Mikhail 22.11.17✎ 14:30 | 
        (6) Кажется вы чего-то недоговариваете. На этой строчке не должно падать.     | |||
| 8
    
        FIXXXL 22.11.17✎ 14:30 | 
        (6) смотри в отладчике, что там в этой строке     | |||
| 9
    
        grandmaster 22.11.17✎ 14:38 | 
        Всё теперь проходит. Только как теперь сделать чтоб оно галку не проставляло и если выбираю первую запись (тоесть такой идентификатор ещё не выбран) на ней тоже почему-то прилетает сообщение     | |||
| 10
    
        Numerus Mikhail 22.11.17✎ 14:48 | 
        (9) потому что код неправильно написан     | |||
| 11
    
        grandmaster 22.11.17✎ 14:49 | 
        (10) ну подскажите где что исправить?
 я только учусь пока | |||
| 12
    
        Numerus Mikhail 22.11.17✎ 14:53 | 
        Как-то так
 Процедура ТТНВыбранаПартияПриИзменении(Элемент) ТекущиеДанные = Элементы.Накладные.ТекущиеДанные; Если НЕ Стр.ВыбратьСтроку Тогда Возврат; КонецЕсли; СтруктураНакладной = Новый Структура; СтруктураНакладной.Вставить("Идентификатор", ИдентификаторНакладной); СтруктураНакладной.Вставить("ВыбратьСтроку", Истина); НайденныеСтроки = Объект.Накладные.НайтиСтроки(СтруктураНакладной); Если НайденныеСтроки.Количество() > 1 Тогда Сообщить ("запись с данным идентификатором уже выбрана!"); ТекущиеДанные.ВыбратьСтроку = Ложь; КонецЕсли; КонецПроцедуры | |||
| 13
    
        FIXXXL 22.11.17✎ 14:54 | 
        (9) галку сам снимай, кодом
 и я не догоняю, зачем ты в цикле проверяешь? | |||
| 14
    
        FIXXXL 22.11.17✎ 14:55 | 
        (13) + ну вот, тебе уже все разжевали :)     | |||
| 15
    
        grandmaster 22.11.17✎ 15:14 | 
        (12) спасибо спасибо спасибо :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |