Данный текст является одним из выпусков моей рассылки "Автоматизация рутины - как это?". Все выпуски вы можете прочитать в каталоге выпусков. Чтобы ничего не пропустить - рекомендую подписаться:
Выпуск 6.
Письма и дилемма.
Ну никак не ожидал, что опросник будет настолько плодотворным. Впредь я буду включать его внизу рассылки :)
А теперь, собственно, одно из писем.
Андрей, добрый день!
Очень понравился подробно и профессинально изложенный материал в предыдущих рассылках. Надеюсь, что и в мою проблему, которая, наверняка, существует у многих, Вы поможете внести ясность.
В конце каждого рабочего дня на точке продажи сотовых телефонов необходимо "сводиться", т.е. сумма по кассовым чекам должна совпадать с суммой по товарным чекам. Кассовые чеки учитываются только в кассовом аппарате, а для учета товарных - используется программа на базе 1С. Если суммы не сходятся, то распечатывается список всех проданных товаров и кассовая лента со всеми суммами за день. Необходимо вручную найти различия в этих документах. Учитывая, что позиций может быть до 1000шт., то этот процесс затягивается на несколько часов после работы. За ошибки налогаются существенные штрафы. Следует учитывать, что на некоторые позиции товарные чеки не выписываются, т.е. номера кассовых чеков уже нельзя сверить.
Мне понравиласть Ваша мысль о том, что "...практически всю автоматизацию с расчетами таблиц можно сделать в Excel (от формул и до запросов на выборку из базы данных), обработку и хранение данных в Access." Кажется и мой случай подходит под такую автоматизацию.
Подскажите, какие есть варианты решения?
--
Заранее благодарен,
Константин
Задача, на мой взгляд, действительно насущная и вполне нетривиальная.
Для того, чтобы сравнивать данные, сначала нужно их иметь в электронном виде. Можно, конечно, сканировать кассовую ленту и распознавать цифири. Но это дополнительные затраты на сканер - следовательно, решение это слабое. Хотя и простое.
Насколько я понимаю, сейчас все работают на ККМах, которые завязаны на процессорной обработке (через микросхемы). Поэтому практически у всех имеется коммуникационный порт, которым можно соединять с другими устройствами, в т.ч. с компьютером. В принципе, в документации на ККМы должна быть информация о разъеме и принципе его действия. В случае ее отсутствия можно попробовать покопаться в интернете на ее наличие или обратиться в любой сервис-центр, который занимается их обслуживанием. У них она точно есть :) они и не такое делают.
Вся работа с портом строится на простом принцепе - послать данные на порт, считать данные с порта. К сожалению, мне неизвестно как в микрософт офисе выполнить эту операцию. Зато те языки программирования, которые все из нас учили в школе (паскаль, бейсик, си), превосходно с этим справляются. Главное - получить документацию по работе с коммуникационным портом (ну и шнурок иметь соответствующий). У кого есть - шлите, тогда можно говорить более предметно о процессе считывания данных. В смысле можно уже по факту пытаться написать блок считывания и сохранения данных.
Будем считать, что данные считаны и записаны в текстовый файл (скажем, в одну строку с каким-нибудь символом разделителем, обычно это TAB). Небольшая ремарка - программы по считыванию данных из ККМ имеются. Навскидку яндекс выдал по адресу http://metall-ltd.kiev.ua/soft6.htm программу ECRPro, предназначенную для быстрого считывания и перепрограммирования данных в кассовых аппаратах. Следовательно, реализовать задуманное можно.
Далее. В 1С данные уже имеются в электронном виде и, если я не ошибаюсь, выписка по товарным чекам представляется в виде таблицы, которую можно выделить и затем скопировать в Excel. Если это не так, то напишите как это выглядит.
После получения данных можно заняться их сравнением. Импортируем в Excel на один лист данные по кассовым чекам (предположительно из текстового файла) и на другой - данные по товарным чекам. Сначала их нужно выстроить по одной схеме - проще всего через бейсик для офиса. Делаем цикл по каждой строчке, смотрим сколько записей по реализации (это заполненные столбцы) и выстраиваем их на новый чистый лист в формате "код товара - сумма" (в одном столбце) и еще два столбца для кода товара и суммы отдельно (может пригодиться). Аналогично для товарных чеков.
Простую проверку этих двух столбцов (причем, по условию на первом листе больше записей) можно реализовать через подсчет количеств с условием (СУММЕСЛИ и СЧЕТЕСЛИ), более сложную можно реализовать через бейсик для офиса - общий цикл по строчкам и для каждой записи из колонки кассовых чеков искать запись в колонке товарных чеков, а после нахождения занулять строчки (заполнять пробелом). В конце останутся небьющиеся друг с другом цифры.
Проблемы с бейсиком у человека, желающего понять, не возникает. Достаточно сначала забежать в книжный и там полистать пару-тройку книжек по нему, а затем достаточно встроенной справки. В крайнем случая я готов написать авторский курс. Если будет хотя бы человек пять... :)
Есть еще один из вариантов решения - дописать вашу программу товарного учета, чтобы из нее подавалась команда на печать на ККМ. Это возможно, но опять все упирается в документацию :( В этом случае параллельно с командой на печать на кассовом аппарате можно записывать куда-нибудь информацию по чеку, т.е. мы получим искомую электронную запись пробития кассового чека.
Разумеется, я не претендую на правильность решения поставленной задачи, но кто может предложить что-то лучше?
Хорошо, оставляем решение этой задачи желающим "на подумать" и переходим к следующему пункту рассылки.
При обработке результатов анкетирования возникла следующая дилемма. Часть из вас считает, что нужно публиковать только сами идеи и принципы (методы) для возникающих задач автоматизации. А другая часть из вас настаивает, что нужно полностью описывать решение "от и до", вплоть до публикации скриптов и формул Excel'я. Для принятия решения прошу аргументировать ту точку зрения, которую каждый из вас отстаивает. Договорились? Пишите письма, доказывайте, опровергайте. Если вы явно не укажите на запрет, я буду публиковать письма в рассылке.
"ВАШЕ МНЕНИЕ"
Опрос работает в том случае, если у вас настроена почтовая программа (Outlook, The Bat! и пр.) При нажатии "Готово" просто создастся письмо с ответами, которое вам нужно разрешить отправить.