Помогите разобраться в решении задачи для CPL 9200 ALCO

Страницы: 1 2 След.
RSS
Помогите разобраться в решении задачи для CPL 9200 ALCO
 
Добрый день!
Модель терминала: CipherLAB 9200-2D ALCO (Win)
Cерийный номер: 200153Z00574
Есть такая задача по приемке алкоголя. Я опишу сначала, то что необходимо в идеале.

Если в общем, то нам необходимо получать количество принимаемого товара в разрезе штрих кодов и кодов ЕГАИС.
Для чего это нужно? а) сверка поступающего товара с ТТН ЕГАИС, б) формирование декларации по алкоголю, где нужно указывать обороты в разрезе производителей (производитель «узнается» из кода ЕГАИС).
Другими словами эта задача — не специфика нашего предприятия, а стоит перед всеми организациями торгующими алкоголем в розницу.

Причем надо иметь ввиду, что абсолютно одинаково выглядящий товар с одним и тем же штрих кодом может иметь разные коды ЕГАИС (поскольку производится на разных заводах). И наоборот товар с разным штрих кодом EAN13 может иметь одинаковый код ЕГАИС (когда скажем водка запакована в разные упаковки кожаную и картонную). Такая ситуация у большинства производителей. Бутылки разных заводов отличаются лишь клеймом на стекле или пробке, а этикетки с штрих кодом одинаковые.

Итак исходные данные: Есть ТТН ЕГАИС и составленная на ее основании накладная на поступление товара.
Т.е. на входе имеем базу данных: Штрих код товара EAN13, код ЕГАИС, наименование товара, цена товара, количество товара в накладной.
Работа приемщика:
1. Приемщик товара загружает имеющиеся базу данных.
2. Приемщик товара сканирует штрих код (EAN 13). Получает наименование алкогольной продукции и его количество в накладной.
3. Сканирует акцизные марки (PDF417) хотя бы по одной бутылке из каждого ящика этого товара, проверяет легальность в ФСРАР (идеально должен отсканировать все бутылки), вводит количество бутылок в каждом ящике. (При этом делаем допущение, что в одном ящике не могут находится бутылки разных производителей).
4. В процессе сканирования может посмотреть сколько еще в накладной количество этого товара по EAN13 и желательно по кодам ЕГАИС (есть известный алгоритм как из кода акцизной марки PDF417 получить код ЕГАИС).
5. Когда все ящики с алкоголем по этому штрих коду EAN13 отсканированы приступает вновь к 1 пункту.
6. Когда все товары отсканированы. Выгружает данные из ТСД в виде базы
Штрих код товара EAN13, код ЕГАИС, количество товара в накладной.
Или хотя бы вместо кода ЕГАИС, код акцизной марки.

Как подобное реализовать с помощью генератора приложений?
Изменено: Guran - 16.02.2017 10:48:18
 
Наконец, что-то получилось.
Форма1 , База Данных 1, Запись - Обновить.
запрашиваю Штрих код EAN13.
Показываю Имя, Цену.
Штрих код - Тип данных Переменная 1. Следующая форма 2

Форма 2. - База Данных 1, Запись - Сохранить
Штрих код - Источник (Переменная 1) - автоввод.
Показываю из базы данных - Имя и Количество из базы данных, которую отсканировали до этого.
Запрашиваю PDF417
Количество этой акцизной марки - в переменную 2
Хотелось бы сразу в этой форме и базу данных обновить, отняв введенное количество, и сохранить в файл данных, но так нельзя, насколько я понял. Поэтому следующая форма 3, где автовводом отнимается количество, от того, что в базе данных и обновляется база данных, чтобы потом в форме 2 показать обновленное количество.

Не получалось, насколько я понял, потому что ставил в первой форме Запись не обновить, а Передать в следующую форму.

В результате получил файл данных формата: "Штрих код" - "PDF417" - "Количество".

Но:
1. Не получается узнать остатки товара. В функциональных кнопках есть пункт "Показать остатки". Поставил его на F1. Источник первая база данных. Нажимаю на ТСД на красную кнопку и на кнопку "1". Ничего не происходит. Может я что-то не так делаю?

2. При экспорте данных нужно выделить, что именно будет экспортироваться база данных и/или файл данных. насколько я понял нужно выделить файлы, которые необходимо экспортировать. Однако с помощью кнопок не выделяется, только нажатием на сенсорный экран. Выделенный объект невыделяется. Т.е. нажал на базу 1, нажал файл данных, а то, что база 1 выделена невидно. Тоже самое при выборе того, что удалять (форма, которая появляется после экспорта). Это неудобно, поскольку объяснить невидимость выделения приемщикам будет трудно.

3. Если поставить "Настройка отображения данных" - "Без подсказки", то формы начинают неправильно себя вести (в частности автоввод: Авто(клав.) не срабатывает) и при выходе из задачи в самое главное меню, вообще зависает. Вверху написано "AG:Сообщение!" и белый экран. Помогает только снятие задачи в диспечере задач.

4. Установил флажек "Производить проверку АП" и теперь перед сканированием PDF417 каждый раз запускается Checkmark2. На это тратится время. Можно ли сделать так, чтобы он запускался один раз при загрузке задачи? Вообще было бы просто отлично, чтобы отсканированные акцизные марки передавались для проверки не при каждом сканировании, а сразу все отсканированные по нажатии какой-то кнопки. Т.е. Приемщик отсканировал весь алкоголь. Затем нажал кнопку и все акцизные марки передались в CheckMark2 для проверки.
Сейчас на сканирование одной марки с проверкой в ФСРАР нужно 40 секунд. Если бы все акцизные марки передавались для проверки после завершения сканирования, то и 30 минут можно подождать, но после каждой бутылки ждать 40 сек. - это довольно долго.

5. Попытался сделать в задаче отдельно пункт меню "с проверкой в ФСРАР" и отдельно "Без проверки в ФСРАР" и не получилось. Флажек "Производить проверку АП" ставится на всю задачу. Часто бывает, что нет связи и необходимо без проверки сканировать. Постоянные сообщения о недостаточности скорости интернета очень замедляют работу.

Задача во вложении.
Прошивка HBD.1.600.000A01.0419.20151109 Patch: no
Генератор приложений ПК (1.0.33.0) Win(1.0.61.0)
Изменено: Guran - 16.02.2017 13:28:57
 
Начнем с того, что это 2 совершенно разные задачи. В свое время столкнувшись с акцизными марками (АМ) в 1С, я был поражен тем, что они там не хранятся. И не загружаются и не выгружаются. Оказывается - они не нужны!!!! Ну в плане хранения в 1С и передачи в ФСРАР в частности. Поэтому делим одну казалось бы процедуру на 2 совершенно разных бизнес-процесса. Первый - сбор. Да, да. Обычный сбор данных ШК+количество. Для этого в ГП ничего менять и не нужно. Считали ШК, посмотрели название, цену (ну так исторически сложилась форма) и ввели количество.
Второй процесс - это проверка марок. Вот тут полет мысли. Можно просто тупо выгружать АМ и название товара. ШК в данном случае не обязателен, т.к. АМ уникальны и даже не в разрезе товара, а абсолютно. Можно выгружать часть марки (для экономии места в ТСД и времени обмена), а при сканировании обрезать эту часть и искать в БД с выводом на экран информации о товаре. Сами отсканированные марки можно потом куда-то выгрузить. Только зачем? Они нигде не хранятся. И никому не нужны
В итоге у Вас будет 2 формы и 2 процесса. Первый - принять товар по факту. Второй, проверить на возможный контрафакт. Какой из них сделать первым, а какой вторым - это уже организационный вопрос. Никто не помешает нажать ESC, выбрать другую операцию, а потом также вернуться к первой.

P.S. Может я и неправ, просьба переубедить меня.
 
По поводу вопросов из второго сообщения. К сожалению, оно появилось, пока я писал предыдущий ответ.
Многое станет ясно, после данного объяснения: Программа CheckMark2 написана не нашей фирмой. Не только мы, но и другие фирмы неоднакратно просили их написать внешний API для управления их программой. Но... мольбы не были услышаны. Т.к. она написана на .NET, то узнать функции и попытаться запустить их из чужого приложения не составляет большого труда, что нашим программистом и было сделано. Но... повлиять на ее работу или логику мы не в силах. Если не нравится как работает связка (ГП+CheckMark2), отключите ее использование.
Галку по проверке или нет на разных формах поправим. Остальные вопросы следует проверить и возможно, тоже поправим, либо объясним что не так. Это требует времени.
Ну и все-таки мое мнение - Вы стараетесь усложнить себе работу. Не стоит. Обдумайте мои ответы.
 
Олег Плюснин написал:
Цитата
Начнем с того, что это 2 совершенно разные задачи. В свое время столкнувшись с акцизными марками (АМ) в 1С, я был поражен тем, что они там не хранятся. И не загружаются и не выгружаются.
....
P.S. Может я и неправ, просьба переубедить меня.
В 1С учет алкоголя выполнен так же как и учет других товаров и не учитывает специфики учета алкоголя. Типовые конфигурации делают допущение, что один товар можно покупать и продавать только одного производителя. Но в реальности это не так. Иногда один товар производят и по 5 производителей. А это значит, что на один товар 5 разных кода ЕГАИС и нужно отдельно учитывать обороты и остатки в разрезе каждого производителя для декларации по алкоголю.
Я писал в 1С об этой проблеме учета в 1С, но у них в планах доработать конфигурацию нет. Приходится самому дорабатывать конфигурацию. Сейчас мы для каждого производителя завели свой элемент справочника Номенклатура, в дальнейшем планирую доработать, чтобы элемент справочника был один, но для каждого производителя была использована серия.
Без акцизной марки определить какого производителя товар приходуется или продается практически невозможно. А это значит, что и выбрать какой из товаров или какую серию товара приходовать невозможно.

Для примера Водка "Medoff" 1,0 дм. Королевский (Люкс) производится на 3-х заводах:
Крымская водочная компания ООО (910901001)
Татспиртпром ОАО Казанский (165902003)
Юпитер Инкорпорейтед ООО

Бутылка выглядит одинаково и имеет одинаковый штрих код на каком бы заводе она не была произведена. Если бы на каждом заводе клеили свой штрих код, то проблем бы не было и тот способ, что вы описали работал бы.
Но в ситуации с таким алкоголем нужно передать код акцизной марки, чтобы по акцизной марке определить код ЕГАИС поступаемого товара, чтобы сверить с кодом ЕГАИС в ТТН полученным из ЕГАИС и в случае отличия подать акт о расхождениях.
В декларации по алкоголю, которую нужно сдавать раз в квартал, необходимо по каждому товару указать сколько купили и сколько продали и какой остаток товара в разрезе производителей, который определяется в свою очередь из кода ЕГАИС. Т.е. мне нужно знать обороты и остатки Водка "Medoff" 1,0 дм. Королевский (Люкс) отдельно по Крымская водочная компании, отдельно по Татспиртпром, отдельно по Юпитер.
На этапе реализации сейчас мы уже определяем какой товар продали по акцизной марке, теперь надо и на этапе прихода товара тоже определять какой товар приходуется
Водка "Medoff" 1,0 дм. Королевский (Люкс) (Крымская водочная компания ООО (910901001)) бутылка,
Водка "Medoff" 1,0 дм. Королевский (Люкс) (Татспиртпром ОАО Казанский (165902003)) бутылка или
Водка "Medoff" 1,0 дм. Королевский (Люкс) (Юпитер Инкорпорейтед ООО) бутылка
Изменено: Guran - 16.02.2017 20:41:51
 
Вообщем, если коротко, то нам приходится решать либо делать декларацию по алкоголю полностью вручную, а ТТН ЕГАИС подтверждать несмотря на фактическое различие кодов ЕГАИС, либо вести учет товаров по производителям. У нас ассортимент алкоголя - порядка 3500 различных товаров. И сделать декларацию по алкоголю вручную - задача не из легких. Поэтому приходится определять производителя на этапе приемки и списывать по производителям при реализации товара.
Изменено: Guran - 16.02.2017 20:48:52
 
Не отчаивайтесь. Мы делаем то, что есть в 1С и подстраиваемся под них. Нюансов я не знаю, т.к. алкоголь не продаю и не покупаю даже для личных целей.
Если в коде АМ есть расположение, которое однозначно отвечает за производителя АП, то я Вам смогу помочь. Возможно, вместе создадим задачу, которую выложим как рабочую для работы с АП. Для ускорения процесса, можете писать напрямую на почту. Можете здесь, но форум я проглядываю реже.
 
6. Задача построена следующим образом. Сначала сканируется обычный штрих код EAN13, затем сканируются коды акцизных марок с вводом количества.
Сделал form 1, База данных - Пусто. Запись - Обновить. Следующая форма - form 2. Одно поле для ввода - ШК, которое сохраняется в Переменная 1 (тип данных - Переменная 1).
Сделал form 2, База данных - 1st lookup file, Запись - Сохранить и обновить. Следующая форма - form 2.
В линии 1. ШК с источником "Переменная 1" и другие поля для ввода (имя товара, цена, акцизная марка, количество с вычитанием).
Так вот.... Так не работает. При переходе на форму 2 - поля наложены друг на друга. Работает почему-то, только если в первой форме установить базу данных. Но мне не нужно, чтобы был поиск по штрих коду в этой форме. Только чтобы перенести штрих код в следующую форму и там уже будет поиск в базе данных по штрих коду.
Чтобы проверить в задаче из вложения в форме 1 установите базу данных = пусто и в линии 1 База данных = пусто.

7. Форма 1 и 2 для автовычитания (пункт - 1 в меню). А формы 3, 4 - точно так же сделаны, но для автосложения. Мне необходимо, формировать файл данных. Так вот в форме 4, там где автосложение, введенное количество не сохраняется в файле данных.
Чтобы проверить в задаче во вложении - просто выберите пункт 1 в меню и введите какой-нибудь ШК и затем количество, затем в пункте 4 тоже. и экспортируйте form 2.txt и form 4.txt. В первом файле будет Штрихкод, акцизная марка, введенное количество, а во втором количества не будет.
 
Цитата
Олег Плюснин написал:
Не отчаивайтесь. Мы делаем то, что есть в 1С и подстраиваемся под них. Нюансов я не знаю, т.к. алкоголь не продаю и не покупаю даже для личных целей.
Если в коде АМ есть расположение, которое однозначно отвечает за производителя АП, то я Вам смогу помочь. Возможно, вместе создадим задачу, которую выложим как рабочую для работы с АП. Для ускорения процесса, можете писать напрямую на почту. Можете здесь, но форум я проглядываю реже.
По поводу располжения в коде АМ кода ЕГАИС. Код ЕГАИС вычисляется из кода АМ по алгоритму (взято из типовой конфигурации 1С 8 :
Код
Функция КодКлассификатораНоменклатурыЕГАИС(ШтрихкодАкцизнойМарки) Экспорт
   Если Сред(ШтрихкодАкцизнойМарки, 4, 5) = "00000" Тогда
      Значение = Сред(ШтрихкодАкцизнойМарки, 9, 11);
      КоличествоИтераций = 11;
   Иначе
      Значение = Сред(ШтрихкодАкцизнойМарки, 8, 12);
      КоличествоИтераций = 12;      
   КонецЕсли;   
   Результат = 0;   
   Для Итерация = 1 По КоличествоИтераций Цикл      
      Сумматор = 1;
      Для Индекс = 1 По КоличествоИтераций - Итерация Цикл
         Сумматор = Сумматор * 36;
      КонецЦикла;      
      Результат = Результат + Сумматор * (Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Сред(Значение, Итерация, 1)) - 1);      
   КонецЦикла;   
   Возврат Формат(Результат, "ЧЦ=19; ЧВН=; ЧГ=0");   
КонецФункции 
Если будет возможность из отсканированного кода АМ получить Код ЕГАИС, чтобы, скажем потом внести/получить данные в/из базы данных ТСД в разрезе ШтрихкодEAN13_КодЕГАИС, то будет хорошо. Можно будет прямо на ТСД видеть насколько фактический товар соответствует ТТН ЕГАИС.
Хотя, думаю, в задачу приемщика не входит сверка еще и на соответствие ТТН ЕГАИС. Это задача бухгалтерии или оператора, кто набирает приходную накладную. И поэтому, возможно это будет только лишней информацией на ТСД. Думаю приемщикам будет достаточно видеть общее количество товара, а коды АМ передать другому отделу для обработки.
Изменено: Guran - 20.02.2017 08:39:16
 
Дайте пару дней на размышление и согласование. Я Вам сообщу сюда и на почту.
Страницы: 1 2 След.