Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Проверка дублей номенклатуры в ТабЧасти документа

Проверка дублей номенклатуры в ТабЧасти документа
Я
   Tihon_aka_kot
 
08.09.16 - 15:55
на приемке товара (кадастровые доки, по 6тыщ в день принимают) человек со сканером пикает штришкод и вносит номенклатуру в табчасть документа ПриходнаяНакладная. Иногда эти штрихкоды дублируются. Нужно гдето (наверно в модуле формы) написать код, да такой, чтоб оперативно, каждый пик сканера проверял табЧасть: есть ли в ней уже такая номенклатура с таким же названием. если есть - то выводил сообщение (ном строки. + Номенклатура. + "уже есть такое").

Подозрение на Процедура НомеклатураПриИзменении() на форме. Но тяжко с клинСерверными штуками мне приходится, запрос на сервере, отработать на клиенте итп. торможу, но учусь потихонечку... Спасибо этому форуму!

Может кто делал похожее, не прошу чтобы в лоб решение тыкали, а хотяб намек или наводку какую дали... куда копать то?
1. Докуемнт получается еще не записан, как к табЧасти обратиться?
2. В каком модуле и в какой процедуре писать код?
3. Структура примерно какая?? (запрос-обработка-сообщить, или чз ТЗ встречал старинные решения которые на 8.3 уже не отрабатывают)
Конфа УТ 11.2   8.3
 
 
   aleks_default
 
1 - 08.09.16 - 16:07
Ты хотя бы пойми какую процедуру вызывает штрихкодирование.
   aleks_default
 
2 - 08.09.16 - 16:08
И дальше уже можно будет разговаривать...
   Tihon_aka_kot
 
3 - 09.09.16 - 09:35
(2) так может мне не нужна процедура штрихкодирования. МНе нужен момент добавления номенклатуры в табчасть. Вдруг вручную будут вводить, вдруг сканер умрет итп.

Процедуру штрихкодирования я видел в модуле формы.
Давай дальше разговаривать!)
   aleks_default
 
4 - 09.09.16 - 09:38
(3) Ну так найди этот момент. Я именно про это и писал в (1).
   Tihon_aka_kot
 
5 - 09.09.16 - 10:05
(4) отладчик говорит что когда мы взаимодействуем со строками табЧасти сразу включается
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
вот с ней я хочу помудрить.

думаю пока так:
выше нее
&НаСервере
Функция ПолучитьТЗ ()
ТЗ = Объект.Товары.Выгрузить();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка",ТЗ); 
Запрос.Текст = "ВЫБРАТЬ
               |    ПоступлениеТоваровУслугТовары.Номенклатура.Код,
               |    КОЛИЧЕСТВО(ПоступлениеТоваровУслугТовары.Номенклатура.Наименование) КАК НоменклатураНаименование
               |ИЗ
               |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
               |ГДЕ
               |    ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
               |
               |СГРУППИРОВАТЬ ПО
               |    ПоступлениеТоваровУслугТовары.Номенклатура.Код";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();


а потом на клиенте помудрить с результатом запроса в 
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
   Serg_1960
 
6 - 09.09.16 - 10:17
Во-первых код не нужно анализировать, достаточно Номенклатуры(ссылка). Во-вторых редактируемый документ ещ не записан в базу, нет смысла анализировать что-либо по его ссылке - её может и не быть (для нового документа). Продолжайте учиться, успехов :)
   aleks_default
 
7 - 09.09.16 - 10:18
У меня результат штрихкодирования (найденная позиция) обрабатывается в ОбработкаОповещения. Найденная позиция  простым поиском НайтиСтроки() ищется в таб. части документа, если не находится, то добавляется новая строка.
Как это сделано у тебя, я не знаю.
   CMblCL
 
8 - 09.09.16 - 10:51
(0) Если абстрагироваться от сканера штрихкодирования, то при изменении поля "номенклатура" табличной части провести поиск по тч этой номенклатуры и анализировать результаты этого поиска
   Tihon_aka_kot
 
9 - 09.09.16 - 10:56
(6) Спасибо!
   Tihon_aka_kot
 
10 - 09.09.16 - 10:58
(7) Да все так.  в модуле формы дока есть
// Неизвестные штрихкоды

    Если Источник = "ПодключаемоеОборудование"
        И ИмяСобытия = "НеизвестныеШтрихкоды"
        И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
        
        КэшированныеЗначения.Штрихкоды.Очистить();
        ДанныеШтрихкодов = Новый Массив;
        Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
            ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
        КонецЦикла;
        Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
            ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
        КонецЦикла;
        
        ОбработатьШтрихкоды(ДанныеШтрихкодов);
        
    КонецЕсли;

ща попробую пройтись в цикле найти строки() если нашли - то сообщить("")
 
 Рекламное место пустует

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует