Имя: Пароль:
1C
1C 7.7
v7: Штрихкод для справочника
0 dawina
 
04.05.16
13:55
Добрый день, форумчане!

Конфа ТиС 9.2, в нее добавили справочник скидочных карт, но никак не получается присвоить им штрихкод, при сканировании которого будет проставляться скидка, соответствующая карте с этим штрихкодом.
Так вот, как присвоить карте штрихкод?
1 Chameleon1980
 
04.05.16
15:11
реквизит добавить карте не катит?

в нужном месте в ОбработкаВнешнегоСобытия (или как там - уже забываю) получать шк искать запросом карту по шк и из карты смотреть нужные данные.

Или я чего не понял?
2 Dmitrith
 
04.05.16
15:15
Код справочника СкидочныеКарты делаешь цифровым (максимум 10 символов). Собираешь ШК по коду: Префикс + нужное кол-во нулей + Спр.Код + Контрольная сумма.
При сканировании обрезаешь все лишнее и ищешь по коду
3 dawina
 
05.05.16
16:44
Chameleon1980,
Есть у справочник скидочных карт реквизит ШК, в ОбработкеВнешнегоСобытия:
    Если Событие = "BarCodeValue" Тогда
        ПредположимЧтоСК=Сред(Данные,1,2);
        Если ПредположимЧтоСК="27" Тогда // если префикс 27, то это скидочная карта
        
            СК=глНайтиКарту(Данные);
            Если СК=0 Тогда
                Сообщить("Такой карты нет!");
            Иначе
                Карта=СК;
                глПриВыбореКарты();
            КонецЕсли;
            // Обработка закончена. Готовы к получению нового штрихкода.
        глСканерПосылкаДанных(1);    
    Иначе // ищем товар

но карту не находит

Dmitrith, На картах ШК уже есть, его формировать не надо. Нужно чтобы в справочнике скидочных карт был штрихкод у каждой карты и в доке ЧекККМ, при сканировании ШК с карты, автоматом скидка проставлялась.
4 пипец
 
05.05.16
16:47
сортировка стоит у штрихкода в справочнике ?
5 Звездец
 
05.05.16
16:48
В ТИС штатно нет функционала по дисконтным картам, так что вам его кто-то дописывал. По-этому надо смотреть почему дописки не работают. На самом деле там работы на несколько часов при разработке, делал как-то давно. Поэтому внимательно смотрите код и отладчик в руки
6 HawkEye
 
05.05.16
17:20
(3) что отладчик говорит?
7 Phanatom
 
05.05.16
17:55
(3) пример ШКс карты и аналогичный со справочника? он на 27 начинается? что считывается сканером в 1С? попробуй вывести сообщением или в отладчике переменную "Данные", что выдаст?
8 Chameleon1980
 
05.05.16
19:10
что в глНайтиКарту ?
9 Chameleon1980
 
05.05.16
19:12
и да. сообщить(Данные) что говорит
или отладчик?
10 dawina
 
05.05.16
21:22
(4), да, стоит.
(5), там это и не дописано.
(7), да, ШК на 27 начинается.
(8), в глНайтиКарту:
Функция глНайтиКарту(СК) Экспорт
    Кл=СоздатьОбъект("Справочник.СКарты");
    Кд=Сред(СК,8,5);
    Если Кл.НайтиПоРеквизиту("НомерКарты",Кд,1)=1 Тогда
        ВзКл=Кл.ТекущийЭлемент();
        Возврат ВзКл;
    Иначе
        ВзКл=0;
        Возврат ВзКл;
    КонецЕсли;    
КонецФункции
(6), (9), сообщить(Данные) сообщает сканируемый штрихкод.
11 HawkEye
 
05.05.16
21:52
(10) ну по русски же написано
Кд=Сред(СК,8,5);
    Если Кл.НайтиПоРеквизиту("НомерКарты",Кд,1)=1 Тогда
12 Chameleon1980
 
05.05.16
21:58
ага
а вот теперь посмотрите
Кд=Сред(СК,8,5);

тут вставьте сообщить(КД) или отладчиком
и найдите (попробуйте найти) карту с таким результатом

вобщем смотрите и думайте
13 Звездец
 
05.05.16
22:48
как оказывается в (5) я был прав, кто писал наг...но кодил.

Если в поле код содержится ШК, то и искать надо по нему, а не по пяти символам начиная с восьмого
14 Злопчинский
 
05.05.16
23:54
(11)  я бы понял, если 4 символа
Но похоже они в номер карты впендюрили контрольный 13 символ
15 dawina
 
06.05.16
08:59
(12),
при замене:
Кд=Сред(Карта,8,5);
на:
Кд=Сред(Карта,1,13);
находит карту по ШК. В этом была вся проблема?
PS: благодарю за помощь!
16 Chameleon1980
 
06.05.16
09:45
(15) ну, получается, да

не зря же вас все собеседники просили показывать строчки кода, значения переменных в определенных местах и определенные нюансы.


можно заменить:
Кд=Сред(Карта,1,13);
на
КД=Лев(Карта,13);

ну это уже так.
17 Chameleon1980
 
06.05.16
09:47
а может даже и вообще выкинуть эту (Кд=Сред(Карта,1,13);)
просто сделать КД=Карта строку (что скорее всего)

или поменять код ниже.

но это, опять же, лирика.
18 dawina
 
06.05.16
11:19
(17) спасибо, с КД=Карта тоже все работает.
19 HawkEye
 
06.05.16
11:36
(14) я давно уже не пытаюсь понять чужую логику, свою то иногда не понимаю )))
20 HawkEye
 
06.05.16
11:47
(15) ну как-то обычно исправления в коде, делаются осознавая что происходит в этом коде....
Программист всегда исправляет последнюю ошибку.