|
Проверка дублей номенклатуры в ТабЧасти документа | ☑ | ||
---|---|---|---|---|
0
Tihon_aka_kot
08.09.16
✎
15:55
|
на приемке товара (кадастровые доки, по 6тыщ в день принимают) человек со сканером пикает штришкод и вносит номенклатуру в табчасть документа ПриходнаяНакладная. Иногда эти штрихкоды дублируются. Нужно гдето (наверно в модуле формы) написать код, да такой, чтоб оперативно, каждый пик сканера проверял табЧасть: есть ли в ней уже такая номенклатура с таким же названием. если есть - то выводил сообщение (ном строки. + Номенклатура. + "уже есть такое").
Подозрение на Процедура НомеклатураПриИзменении() на форме. Но тяжко с клинСерверными штуками мне приходится, запрос на сервере, отработать на клиенте итп. торможу, но учусь потихонечку... Спасибо этому форуму! Может кто делал похожее, не прошу чтобы в лоб решение тыкали, а хотяб намек или наводку какую дали... куда копать то? 1. Докуемнт получается еще не записан, как к табЧасти обратиться? 2. В каком модуле и в какой процедуре писать код? 3. Структура примерно какая?? (запрос-обработка-сообщить, или чз ТЗ встречал старинные решения которые на 8.3 уже не отрабатывают) Конфа УТ 11.2 8.3 |
|||
1
aleks_default
08.09.16
✎
16:07
|
Ты хотя бы пойми какую процедуру вызывает штрихкодирование.
|
|||
2
aleks_default
08.09.16
✎
16:08
|
И дальше уже можно будет разговаривать...
|
|||
3
Tihon_aka_kot
09.09.16
✎
09:35
|
(2) так может мне не нужна процедура штрихкодирования. МНе нужен момент добавления номенклатуры в табчасть. Вдруг вручную будут вводить, вдруг сканер умрет итп.
Процедуру штрихкодирования я видел в модуле формы. Давай дальше разговаривать!) |
|||
4
aleks_default
09.09.16
✎
09:38
|
(3) Ну так найди этот момент. Я именно про это и писал в (1).
|
|||
5
Tihon_aka_kot
09.09.16
✎
10:05
|
(4) отладчик говорит что когда мы взаимодействуем со строками табЧасти сразу включается
Процедура ТоварыПриАктивизацииЯчейки(Элемент) вот с ней я хочу помудрить. думаю пока так: выше нее &НаСервере Функция ПолучитьТЗ () ТЗ = Объект.Товары.Выгрузить(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка",ТЗ); Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура.Код, | КОЛИЧЕСТВО(ПоступлениеТоваровУслугТовары.Номенклатура.Наименование) КАК НоменклатураНаименование |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ПоступлениеТоваровУслугТовары.Номенклатура.Код"; РезультатЗапроса = Запрос.Выполнить().Выгрузить(); а потом на клиенте помудрить с результатом запроса в Процедура ТоварыПриАктивизацииЯчейки(Элемент) |
|||
6
Serg_1960
09.09.16
✎
10:17
|
Во-первых код не нужно анализировать, достаточно Номенклатуры(ссылка). Во-вторых редактируемый документ ещ не записан в базу, нет смысла анализировать что-либо по его ссылке - её может и не быть (для нового документа). Продолжайте учиться, успехов :)
|
|||
7
aleks_default
09.09.16
✎
10:18
|
У меня результат штрихкодирования (найденная позиция) обрабатывается в ОбработкаОповещения. Найденная позиция простым поиском НайтиСтроки() ищется в таб. части документа, если не находится, то добавляется новая строка.
Как это сделано у тебя, я не знаю. |
|||
8
CMblCL
09.09.16
✎
10:51
|
(0) Если абстрагироваться от сканера штрихкодирования, то при изменении поля "номенклатура" табличной части провести поиск по тч этой номенклатуры и анализировать результаты этого поиска
|
|||
9
Tihon_aka_kot
09.09.16
✎
10:56
|
(6) Спасибо!
|
|||
10
Tihon_aka_kot
09.09.16
✎
10:58
|
(7) Да все так. в модуле формы дока есть
// Неизвестные штрихкоды Если Источник = "ПодключаемоеОборудование" И ИмяСобытия = "НеизвестныеШтрихкоды" И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда КэшированныеЗначения.Штрихкоды.Очистить(); ДанныеШтрихкодов = Новый Массив; Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод); КонецЦикла; Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод); КонецЦикла; ОбработатьШтрихкоды(ДанныеШтрихкодов); КонецЕсли; ща попробую пройтись в цикле найти строки() если нашли - то сообщить("") |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |