|
Условие проверки похожих полей табличной части | ☑ | ||
---|---|---|---|---|
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) спасибо спасибо спасибо :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |