|   |   | 
| 
 | v7: Переход к следующей строке во внешнем событии | ☑ | ||
|---|---|---|---|---|
| 0
    
        Mafiozaa 25.01.21✎ 03:38 | 
        Приветствую, ткните носом где у меня ошибка, ибо я не понимаю в чем затык, вообщем
 У меня в табличной части находится 2 колонки, номенклатура и кодмаркировки. Номенклатура заполняется путем выгрузки табличнойчасти При сканировании товара он должен позиционироваться на нужном товаре И проверять на заполненность колонку "кодмаркировки" и если заполнено переходить ниже Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные) // Процедура разбирает штрих-код, считанный сканером // и заполняет строки накладной Перем Упаковка,ТекКоличество, Спецификация; Перем ВремТовар, ВремЕдиница, ВремКоличество, ВремЦена; Перем СтрокаВозврЦена; Если Событие = "BarCodeValue" Тогда Штрихкод = СокрЛП(Данные); стр = 0; Если глПолучитьТоварПоШтрихкоду(Штрихкод, ВремТовар, ВремЕдиница, ВремКоличество) = 1 Тогда Если ТЗШКоды.НайтиЗначение(ВремТовар, стр, "Номенклатура") = 1 Тогда; АктивизироватьСтроку(стр); Если ПустоеЗначение(КодМаркировки) = 0 Тогда АктивизироватьСтроку(стр + 1); КонецЕсли; КонецЕсли; Иначе КодМаркировки = Штрихкод; КонецЕсли; глСканерПосылкаДанных(1); Иначе глОбработкаВнешнегоСобытия(Источник, Событие, Данные); КонецЕсли; При этом коде, все выполняется корректно но лишь до 2ой позиции, тоесть я пикаю товар, пикаю кодмаркировки, перешло ниже, пикаю еще раз, перешло ниже, потом пикаю и все замерло, в отладчике поймать не смог, условия все выполняются | |||
| 1
    
        Mafiozaa 25.01.21✎ 04:20 | 
        Один косяк нашел, устранил, при каждом пике стр = 0, поменял на штатное НомерСтроки     | |||
| 2
    
        Mafiozaa 25.01.21✎ 04:20 | 
        Теперь одну позицию пикаю, все условия проходят, а вторую позицию пикаю, не проходит условие 
 Если ТЗШКоды.НайтиЗначение(ВремТовар, стр, "Номенклатура") = 1 Тогда; АктивизироватьСтроку(стр); КонецЕсли; | |||
| 3
    
        Mafiozaa 25.01.21✎ 04:24 | 
        ТЗШкоды.НайтиЗначение(ВремТовар, НомерСтроки, "Номенклатура") - Возвращает 0, хотя товар есть в колонке "Номенклатура"     | |||
| 4
    
        Cthulhu 25.01.21✎ 04:33 | 
        (3): какой наф НомерСтроки???     | |||
| 5
    
        Cthulhu 25.01.21✎ 04:34 | 
        в отладчике ТЗШкоды.НайтиЗначение(ВремТовар, , "Номенклатура") что дает?     | |||
| 6
    
        Mafiozaa 25.01.21✎ 04:34 | 
        (4) НомерСтроки
 Синтаксис: НомерСтроки Назначение: Доступ к номеру строки многострочной части документа. Замечание: Атрибут имеет смысл только при выбранной строке. Подробнее см. в документации, глава 'Работа с Документами' | |||
| 7
    
        Mafiozaa 25.01.21✎ 04:34 | 
        (5) На одну позицию ворачивает 1, на другую позицию 0     | |||
| 8
    
        Mafiozaa 25.01.21✎ 04:35 | 
        При всем при том, что обе находятся в колонке номенклатура     | |||
| 9
    
        Mafiozaa 25.01.21✎ 04:38 | 
        Тоесть 2 позиции в колонке номенклатура, одну ищет, другую нет     | |||
| 10
    
        Cthulhu 25.01.21✎ 04:39 | 
        значит нету. тип не совпадает (того что ищешь и того что там есть)     | |||
| 11
    
        Mafiozaa 25.01.21✎ 04:40 | 
        ТЗШкоды.НайтиЗначение(ВремТовар, , "Номенклатура") отладчик 1 вернул     | |||
| 12
    
        Mafiozaa 25.01.21✎ 04:40 | 
        (11) Без номерастроки     | |||
| 13
    
        Cthulhu 25.01.21✎ 04:42 | 
        (11),(12): блин. еще раз. какой нафиг номерстроки??? там должнно быть тстр, которое на момент поиска равно нулю - тогда при успешном поиске в тстр будет искомй номер строки.
 читать документацию - срочно! (по НайтиЗначение в частности) | |||
| 14
    
        Mafiozaa 25.01.21✎ 04:42 | 
        (12) Но теперь нет привязки к строке, и пикая любую позицию переходит ниже     | |||
| 15
    
        Cthulhu 25.01.21✎ 04:43 | 
        если в этом параметре (номер строки) задать ненулевое значение - то поиск будет выполться только(!) в указанной строке.     | |||
| 16
    
        Mafiozaa 25.01.21✎ 04:44 | 
        (15) С стр, максимум 2 раза вниз уходит,и все     | |||
| 17
    
        Mafiozaa 25.01.21✎ 04:45 | 
        (16) Перем Стр;
 ПриОткрытии Стр = 0 ОбработкаВнешСобытия Если ТЗШКоды.НайтиЗначение(ВремТовар, Стр , "Номенклатура") = 1 Тогда; Находит, но всего 2 раза вниз могу уйти и привет котенку | |||
| 18
    
        Cthulhu 25.01.21✎ 04:47 | 
        (16): как напрограммировано - так и делает. при этом находит то что есть (вопреки вашим утверждениям).
 программируйте не хрензнаетчто а то что надо - и будет вам щястье. | |||
| 19
    
        Cthulhu 25.01.21✎ 04:48 | 
        и - научитесь разговаривать не на птичьем языке. а то по вашим объяснениям - только вам самому понятно что вы имеете ввиду и что надо     | |||
| 20
    
        Mafiozaa 25.01.21✎ 04:48 | 
        (18) Я понимаю что как ему указано так он и делает, но в чем же я неправильно ему указываю     | |||
| 21
    
        Cthulhu 25.01.21✎ 04:49 | 
        (20): да хрен его знает что вам надо...     | |||
| 22
    
        Mafiozaa 25.01.21✎ 04:50 | 
        (19) Логика какая, я пикаю штрихкод товара (EAN - 13) он позиционируется на товаре, пикаю код маркировки, он заносит в соседнюю колонку.
 Следом я пикаю опять EAN13 он позиционируется на след строке | |||
| 23
    
        Cthulhu 25.01.21✎ 04:51 | 
        и - да, главное.
 если вы только начинаете - не надо ковыряться в 7-ке. надо идти ковыряться в 8-ку. оставьте семерку старым пердунам вроде меня. она (7-ка) все равно после 2037-го года перестанет работать (не верите - поставьте системную дату на 2038 и попробуйте запустить 7-ку))) | |||
| 24
    
        Cthulhu 25.01.21✎ 04:53 | 
        (22) а в тз точно ли все товары есть с теми еан-ами что вы пропикиваете?     | |||
| 25
    
        Mafiozaa 25.01.21✎ 04:54 | 
        (23) В ТЗ или табличной части? В табличной части точно, а тз щас проверю     | |||
| 26
    
        Cthulhu 25.01.21✎ 04:55 | 
        ну если у вас ТЗШКоды отличается от таб.части - то вообще нифига не должно работать...     | |||
| 27
    
        Cthulhu 25.01.21✎ 04:55 | 
        т.к. ищете в ТЗШКоды - а значение реквизита устанавливаете в таб.части     | |||
| 28
    
        Mafiozaa 25.01.21✎ 04:57 | 
        (24) А как оно может ТЗШкоды быть различным, если я в нее выгружаю табличную часть     | |||
| 29
    
        Mafiozaa 25.01.21✎ 05:00 | 
        (27) 
 ТЗШкоды.НайтиЗначение(ВремТовар, , "Номенклатура") = 1 ТЗШкоды.Номенклатура = Супер-клей Момент для Обуви на блистер карте 3гр. 12шт. [12;!] ТЗШкоды.КодТовара = "4600611312194" Данные = "4600611312194" С отладчика | |||
| 30
    
        Mafiozaa 25.01.21✎ 05:00 | 
        Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
 // Процедура разбирает штрих-код, считанный сканером // и заполняет строки накладной Перем Упаковка,ТекКоличество, Спецификация; Перем ВремТовар, ВремЕдиница, ВремКоличество, ВремЦена; Перем СтрокаВозврЦена; Если Событие = "BarCodeValue" Тогда Штрихкод = СокрЛП(Данные); Если глПолучитьТоварПоШтрихкоду(Штрихкод, ВремТовар, ВремЕдиница, ВремКоличество) = 1 Тогда Если ТЗШКоды.НайтиЗначение(ВремТовар, НомерСтроки , "Номенклатура") = 1 Тогда; АктивизироватьСтроку(НомерСтроки); Если ПустоеЗначение(КодМаркировки) = 0 Тогда Сообщить(ПустоеЗначение(КодМаркировки)); АктивизироватьСтроку(НомерСтроки + 1); КонецЕсли; Иначе Если ТЗШКоды.НайтиЗначение(ВремТовар, Стр , "Номенклатура") = 1 Тогда; АктивизироватьСтроку(Стр); Если ПустоеЗначение(КодМаркировки) = 0 Тогда Сообщить(ПустоеЗначение(КодМаркировки)); АктивизироватьСтроку(Стр + 1); КонецЕсли; КонецЕсли; КонецЕсли; Иначе КодМаркировки = Штрихкод; КонецЕсли; глСканерПосылкаДанных(1); Иначе глОбработкаВнешнегоСобытия(Источник, Событие, Данные); КонецЕсли; КонецПроцедуры // ОбработкаВнешнегоСобытия() Вот такой код работает, более менее правильно | |||
| 31
    
        Cthulhu 25.01.21✎ 05:03 | 
        (30) то за говнокод?
 Если ТЗШКоды.НайтиЗначение(ВремТовар, НомерСтроки , "Номенклатура") = 1 Тогда выполнится ТОЛЬКО ели раньше была активизирована строка таб.части, в которой стоит тот товар, который только что пропикали. хрень какая-то вместо поиска. но если вас устраивает - то вперед. удачи. | |||
| 32
    
        Mafiozaa 25.01.21✎ 05:04 | 
        Не это фигня какая то, не то пальто     | |||
| 33
    
        Mafiozaa 25.01.21✎ 05:05 | 
        (31) А разве он активизирует строку не при условии что находит это значение в ТЗШкоды?     | |||
| 34
    
        Cthulhu 25.01.21✎ 05:05 | 
        (31): и даже не так, а ещё кривее. только если в той же (по номеру) строке, которая активна в таб.части, та же самая номенклатура, что в тз. если таб.часть и тз синхронные - то это уловие будет выполняться всегда. если не синхронны - то не будет выполняться никогда.     | |||
| 35
    
        Cthulhu 25.01.21✎ 05:06 | 
        (33): еслинаходит в строке(!) тз с тем же номером. что активна в таб.части.     | |||
| 36
    
        Mafiozaa 25.01.21✎ 05:07 | 
        (34) Хорошо, как мне нужно это все переделать?     | |||
| 37
    
        Cthulhu 25.01.21✎ 05:08 | 
        (36) за вас сделать работу?
 потому что все подсказки уже вроде дали. и то именно неясно - не понятно. | |||
| 38
    
        Mafiozaa 25.01.21✎ 05:10 | 
        (37) Нет, за меня делать ничего не нужно, спасибо за отклик     | |||
| 39
    
        Bigbro 25.01.21✎ 05:10 | 
        Если ТЗШКоды.НайтиЗначение(ВремТовар, НомерСтроки , "Номенклатура") = 1 Тогда;
 это надо убрать, вторую часть оставить, но стр =0 добавить, не вижу где она обнуляется. | |||
| 40
    
        Mafiozaa 25.01.21✎ 05:13 | 
        (39) Так она тогда при каждом пике будет обнулятся     | |||
| 41
    
        Mafiozaa 25.01.21✎ 05:18 | 
        (39) Ну, дальше второй позиции не ухожу     | |||
| 42
    
        hhhh 25.01.21✎ 05:19 | 
        (40) тебе нужно перед каждым пиком обнулять: стр = 0. Сначала это было, а потом ты выкинул.     | |||
| 43
    
        Mafiozaa 25.01.21✎ 05:21 | 
        (42) Я вернул, обнуляю каждый пиком стр, и дальше второй строки не ухожу     | |||
| 44
    
        Mafiozaa 25.01.21✎ 05:23 | 
        (43) Но на другую позицию прыгает, и так же не более двух строк вниз     | |||
| 45
    
        Mafiozaa 25.01.21✎ 05:27 | 
        (42) Нашел строку -> Активизировал -> КодМаркировки заполнен -> Активизировал +1 и все, а дальше ничего     | |||
| 46
    
        Bigbro 25.01.21✎ 05:31 | 
        (43) тебе и надо обнулять на каждом.
 у тебя событие случилось - ты по новой ищешь код если не находишь дальше 2й строки - может у тебя в данных ерунда. попробуй впереди этих строк 1-2 которые находятся вставить другие строки. | |||
| 47
    
        Mafiozaa 25.01.21✎ 05:35 | 
        (46) Ну данные то одни и те же, если находит первую строку, вторую строку, почему не находит 7,10?     | |||
| 48
    
        Mafiozaa 25.01.21✎ 05:38 | ||||
| 49
    
        Mafiozaa 25.01.21✎ 05:39 | 
        Это вот, дохожу до второй строки, дальше не иду, пикаю другую позицию прыгает на 12 строку, и дальше тоже мрем     | |||
| 50
    
        Bigbro 25.01.21✎ 05:43 | 
        так у тебя одинаковая номенклатура, она у тебя и находится, что не так?
 по какому принципу у тебя должна найтись не 1я строка? | |||
| 51
    
        Mafiozaa 25.01.21✎ 05:44 | 
        (50) По заполненности кодамаркировки     | |||
| 52
    
        Mafiozaa 25.01.21✎ 05:44 | 
        (50) Смотрю вижу что в этой строке код маркировки заполнен, перейти к следущей     | |||
| 53
    
        Cthulhu 25.01.21✎ 05:45 | 
 | |||
| 54
    
        Mafiozaa 25.01.21✎ 05:49 | 
        (53) Красавчик конечно, спасибо, но если дублей небыло бы, было бы сказочно     | |||
| 55
    
        hhhh 25.01.21✎ 05:55 | 
        (54) так тебе нужно просто сформировать список дублей, а потом спокойно их в цикле их обработать. Нахрена тут найти каждый раз?     | |||
| 56
    
        Cthulhu 25.01.21✎ 06:15 | 
        (54) совсем ленивый?
 ИначеЕсли ТЗШКоды.НомерСтроки<ТЗШКоды.КоличествоСтрок() Тогда тСтр=НомерСтроки; Пока Номерклатура=ТЗШКоды.Номерклатура Цикл Сообщить(СимволТабуляции+"в строке "+НомерСтроки+" для """+Номерклатура+"""" +?(КодМаркировки=0,"устоновлен Код маркировки ","Код маркировки "+КодМаркировки +" заменен на ")+Штрихкод,""); КодМаркировки = Штрихкод; тСтр=тСтр+1; Если тСтр>КоличествоСтрок() Тогда Прервать Иначе АктивизироватьСтроку(тСтр) КонецЕсли; КонецЦикла; Сообщить("=== Всего по номенклатуре """+ТЗШКоды.Номенклатура+""" Код маркировки " +Штрихкод+" установлен в "+(тСтр-ТЗШКоды.НомерСтроки)+" строках.","i"); | |||
| 57
    
        Bigbro 25.01.21✎ 06:55 | 
        а когда закончатся строки в таблице с незаполненными Маркировками и придет событие с тем же штрихом - что делать?     | |||
| 58
    
        Mafiozaa 25.01.21✎ 07:01 | 
        (56) Не ленивый, а не соображающий, ну не идет у меня))     | |||
| 59
    
        Mafiozaa 25.01.21✎ 07:12 | 
        (56) Не выходит     | |||
| 60
    
        Bigbro 25.01.21✎ 07:18 | 
        у тебя в 0 почти рабочий код
 только вместо вот этого Если ПустоеЗначение(КодМаркировки) = 0 Тогда АктивизироватьСтроку(стр + 1); КонецЕсли; сделай цикл по таблице начиная с стр и до конца таблицы. в цикле проверяй ПустоеЗначение(КодМаркировки) чтобы найти очередную пустую строку и дополнительно проверяй ВремТовар на равенство, чтобы не закончились пустые строки и ты не начал писать штрихи в другой товар. и все. | |||
| 61
    
        Mafiozaa 25.01.21✎ 07:47 | 
        (60) Пробую, отпишусь     | |||
| 62
    
        Mafiozaa 25.01.21✎ 08:10 | 
        (60) По пустой строке разобрался, но если пикаю другой товар, то переходит ниже, а не позиционнируется на пикнутой позиции     | |||
| 63
    
        Bigbro 25.01.21✎ 08:19 | 
        ну значит снова где то накуролесил)
 отладчик в зубы и вперед. задача то простая. | |||
| 64
    
        Mafiozaa 25.01.21✎ 08:23 | 
        (63) Согласен, буду лазить, все равно спасибо))     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |