|
Поиск дублей в табличной части | ☑ | ||
---|---|---|---|---|
0
animatic
16.02.16
✎
10:25
|
Добрый день. Задача такая, нужно запретить пользователям продавать дублирующиеся товары. Подскажите что будет правильнее использовать с точки зрения производительности поиск дублей при изменении строки, например через НайтиСтроки и вывод сообщения пользователю. Либо в обработке проверки заполнения поиск уже по всей табличной части, например таким кодом:
ТаблицаДублей = Товары.Выгрузить(); ТаблицаДублей.Колонки.Добавить("КоличествоДублей"); ТаблицаДублей.ЗаполнитьЗначения(1, "КоличествоДублей"); ТаблицаДублей.Свернуть("Штрихкод", "КоличествоДублей"); Если Товары.Количество() <> ТаблицаДублей.Количество() Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТаблицаДублей.Штрихкод |ПОМЕСТИТЬ ВТ_ТаблицаДублей |ИЗ | &ТаблицаДублей КАК ТаблицаДублей |ГДЕ | ТаблицаДублей.КоличествоДублей > 1 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТаблицаДублей.Штрихкод |ИЗ | ВТ_ТаблицаДублей КАК ВТ_ТаблицаДублей"; Запрос.УстановитьПараметр("ТаблицаДублей", ТаблицаДублей); ВыборкаДубли = Запрос.Выполнить().Выбрать(); Пока ВыборкаДубли.Следующий() Цикл НомераСтрок = ""; СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("Штрихкод", ВыборкаДубли.Штрихкод); НайденныеСтроки = Товары.НайтиСтроки(СтруктураОтбора); Для Каждого ТекСтрока Из НайденныеСтроки Цикл НомераСтрок = ?(НомераСтрок = "", Строка(ТекСтрока.НомерСтроки), НомераСтрок + ", " + Строка(ТекСтрока.НомерСтроки)); КонецЦикла; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'В строках: %1 используется одинаковый шрихкод %2. Проведение невозможно!'"), НомераСтрок, ВыборкаДубли.Штрихкод); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ЭтотОбъект); КонецЦикла; Отказ = Истина; КонецЕсли; На штрихкод не обращать внимания, тут база такая кривая, в принципе логика поиска интересует, вместо него можно использовать Номенклатуру. |
|||
1
Cyberhawk
16.02.16
✎
10:26
|
Перед проведением на форме
|
|||
2
ObjectRelation Model
16.02.16
✎
10:26
|
и в первом и во втором случае проверять надо
но не запрещать, а сворачивать строки |
|||
3
Cyberhawk
16.02.16
✎
10:26
|
Ибо нельзя запрещать создавать черновик документа - может он там цены разные для одного товара хочет зафиксировать
|
|||
4
animatic
16.02.16
✎
10:29
|
(3) там говорю же прога специфическая, если не сказать матом. Там штрихкоды не связаны с номенклатурой и у одной номенклатуры может быть несколько штрихкодов. Как я понял это связано со штучным товаром. Т.е. товар один, но цена разная, зависящая от веса и еще чего-то, почему не использовали характеристики я не знаю. Но сейчас вопрос не в доработке программы, а в том, чтобы пользователь не мог продать в одном документе товары с одинаковыми штрихкодами. Объединять тут не пойдет.
|
|||
5
sash-ml
16.02.16
✎
10:29
|
посмотри как в типовых подбор реализован.
там что-то вроде СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТабличнаяЧасть, СтруктураОтбора); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |