Нужно сделать РМК (рабочее место кассира) с работающим сканером и другим нужным функционалом.
Порядок действий:
1. Ставим 1с, конфигурацию.
Для начала сделаем пару пользователей, первый он всегда «Админ«, второго назовем «Кассир» и дадим ему полные права (для теста, по хорошему надо настраивать персональные права) .
В конфигураторе (от админа) подправим пользователя «Кассир». Ставим «тип запуска» & «обычное приложение»
Идем дальше, что бы в «Администрировании» появился пункт «Подключаемое оборудование» (иначе как мы его будем настраивать? ) нужно поставить галку на
«Использовать подключаемое оборудование» и «Использовать группы пользователей»
Администрирование & Настройка параметров учета.
Возможности пользователя в РМК настраиваем в Администрировании & Дополнительные права пользователя
2. Настраиваем сканер на эмуляцию com порта, это позволит нам работать в РМК со сканером без лишних заморочек.
Для этого мне потребовалось скачать драйвер Symbol COM Port Emulation Driver v 1.8.5
т.к. проверять уже не охота, а перед установкой драйвера была применена вот эта инструкция:
Настройка_сканеров_Symbol_в_1С прикладываю и ее, в ней показаны штрих кода для программирования сканера на эмуляцию и настройка в 1с сканера.
Ну и в принципе на этом настройка сканера завершена. Теперь в РМК будет перехватывать все сканированные штрихкода.
Все тоже самое только на Windows 7
Сканер установился автоматом. Заставить эмулировать его COM порт я не стал. Сканер работает как клавиатура. Для 1с пришлось настроить сканер что бы он сначала слал F7 (ввод по штриху) + сам штрих + enter.
Прежде чем купить сканер штрих кода обратите особое внимание на то, каким образом будет подключаться сканер к компьютеру.
Несмотря на обилие видов сканеров штрих кода на рынке все они, в конечном счете, подключаются через один из четырех типов коннекторов или интерфейсных портов:
- PS/2 Разрыв клавиатуры – из названия следует что сканер штрих кода подключается в разрыв между компьютером и клавиатурой.
- USB Эмуляция ( фактически подключение через порт usb а настройки как в PS/2)
- RS-232 Последовательный (Com) порт – подключается в Com порт компьютера, однако требует дополнительно блок питания.
- USB Эмуляция ( фактически подключение через порт usb а настройки как в RS-232)
Настройка сканера штрих-кода в программах 1С в разрыв клавиатуры
Настроить сканер штрих-кода 1С, подключаемый в разрыв клавиатуры, совсем не сложная задача. Первое что надо сделать - настроить префикс сканера штрих-кода. По умолчанию сканер штрих-кода, подключаемый в разрыв клавиатуры при сканировании штрих-кода товара он возвращает цифры штрих-кода и символ возврата – это аналогично тому, как если бы вы нажимали после сканирования клавишу ENTER на клавиатуре компьютера. Однако для сканирования штрих – кода товара в программе 1С нажать клавишу F7 - Возврат каретки необходимо. Чтобы постоянно не нажимать F7, нам и поможет добавление специального символа – префикса. Префиксом называется в данном случае некий набор символов, которые сканер отсылает перед отправкой штрих-кода. В качестве префикса в основном используют значение “150” - это ASCII-код клавиши F7. Этот способ подойдет и для USB-сканера в том случае, когда нет возможности установить драйвер эмуляции COM-порта.
Настройка сканера штрих-кода в программах 1С через порт USB.
Программа 1C не видит сканеры штрих-кода подключенные через USB-разъем, зато их прекрасно “видит” операционная система Windows. При первом включении сканера операционная система предложит установить его драйвер, но мы ей этого не позволим и откажемся от автоматической установки, а поставим драйвер вручную. Как правило, драйвер эмуляции COM-порта находится на диске из комплекта поставки сканера штрих-кода, там же есть и специализированные утилиты для настройки свойств самого сканера штрих-кода, такие как: громкость бипера, префикс, суфикс и т.п. Или же имеется специальное руководство пользователя с конфигурационными штрих-кодами, сканируя которые можно определенным образом настроить сканер. В процессе установки этого драйвера, операционная система создает виртуальный COM-порт. Далее нужно произвести конфигурирование порта. После того как настроен сам сканер – переходим к настройке в 1С. Для этого в меню Сервис?Настройки торгового оборудования?Находим закладку Сканеры и переходим в нее и устанавливаем новый сканер штрих-кодов. В качестве обработки обычно используют входящую в поставку стандартную обработку обслуживания «1CScanOPOSScan_v2.epf». Далее заходим в “Параметры” настраиваем COM-порт и параметр Скорость сканера. Сканер штрих-кода настроен!
Настройка сканера штрих кода в программах 1С через COM-порт.
Настройка сканера штрих-кода 1С производим как в предыдущем примере. После того как настроен сам сканер – переходим к настройке в 1С. Для этого в меню Сервис?Настройки торгового оборудования?Находим закладку Сканеры и переходим в нее и устанавливаем новый сканер штрих-кодов. В качестве обработки обычно используют входящую в поставку стандартную обработку обслуживания «1CScanOPOSScan_v2.epf». Далее заходим в “Параметры” настраиваем COM-порт и параметр Скорость сканера. Сканер штрих-кода настроен!
Бывают случаи когда есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже, итак поехали.
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:
После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:
После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.
PS: Для PostgreSQL открываем pgAdminIII и выполняем:
Чтоб заставить всех, кто работает без пароля, установить пароль. Можно применить программный ограничитель. Для этого в модуле приложения добавляем функцию:
и в предопредленной процедуре ПриНачалеРаботыСистемы (мы не можем использовать ПередНачаломРаботыСистемы т.к. в ней еще не существует окна программы и нет возможности открыть общую форму ввода пароля) делаем вызов
В современном мире люди используют Интернет не только для поиска информации, но и для приобретения каких либо товаров и услуг. Поэтому организации, например имеющие статус среднего бизнеса, стараются разместить свои прайс-листы в интернете или даже создать Интернет-магазин. Создать его не так-то просто. Если вы имеете «реальный» бизнес и используете определенную систему учета товаров (или услуг), нужно учитывать несколько немаловажных факторов:
* Каждый уважающий себя Интернет-магазин должен показывать остаток товара на складе, а также не показывать тот товар, которого уже нет в наличии. (а может быть что товар есть на разных региональных складах)
* Цены не должны расходиться с ценами в реальном магазине. Не учитывая доставку, хотя и это уже давно стало бесплатным практически везде.
Я привел только 2 факта, в действительности их может быть гораздо больше, всё зависит от того, какую цель вы ставите перед своим Интернет-проектом.
Многие организации для ведения учета товаров или оказанных услуг используют ПО «1С» и как показывает практика, большая часть организаций работает с версией 7.7, и не торопятся перейти на 8.х. так как это влечет за собой накладные расходы.
Для Реализации работы с WEB в 1С7.7 есть прекрасное решение - WEB-расширение, но оно работает только с Microsoft Internet Information Server (IIS). IIS используют не все хостинг – провайдеры, да и те кто использует вряд ли разрешат подключить свой сервер к чужой БД.
А держать «у себя» IIS сервер достаточно накладно для организаций среднего бизнеса (оборудование + интернет канал + лицензии ОС и ПО = увеличение стоимости товара).
Другое дело «свободное» ПО и ОС: Linux, Apache, PHP, MySQL. Эти четыре продукта использует большинство хостинг – провадеров, поэтому их использование как платформы для создания Интернет-проектов наиболее оптимально.
Как связать 1С 7.7 с MySQL? Можно использовать внешнюю компоненту MySQL,dll, но её использование не всегда возможно, особенно если ваш Веб-сервер находиться удаленно или вы покупаете хостинг у сторонней организации, так как не безопасно открывать доступ к БД из Интернета.
Для решения этой задачи я использовал технологию передачи данных через URL.
Возможно, звучит это немного дико, и многие подумают, что это неправильное решение. Однако эта система работает и работает достаточно хорошо и корректно.
И сейчас я бы хотел поделиться с коллегами приобретенным опытом реализации это технологии.
Кратко о принципе:
Выглядит это так: из 1С вызывается url и через него же передаются данные PHP-скрипу, который в свою очередь делает с ними все, что необходимо.
Например, нам нужно передать остаток товара на складе: из 1С должен будет сформироваться url: http://www.server.com/script.php?good=201&count=302&date=2009-06-09, где:
* http://www.server.com – адрес сервера
* script.php – исполняющий скрипт
* good=201 – переменная и код товара
* count=302 – переменная и количество остатка
* date=2009-06-09 – дата на которую передается остаток
причем для работы данной схемы достаточно лишь иметь доступ в Интернет с того компьютера на котором выполняется операция по передачи данных. (сервер БД нет необходимости подключать к Интернету)
Встреча с возможными ошибками:
Для начала хотелось бы рассказать о тех проблемах, с которыми я столкнулся и о том, как можно их наиболее эффективно решить:
1. Проблема передачи дробных чисел, а именно трудности, возникающие при использовании символа «точка» (.)
Если необходимо передать любое дробное число, то в 1С оно будет храниться виде 1.1. При передаче числа через url точка, отделяющая целую часть от дробной, вызывает ошибку, так как символ «точка» служит для разделения доменов. Следовательно, необходимо преобразовать эту самую «точку» в другой символ наиболее подходящий для этого. И этот символ - «запятая» (,). Для того чтобы осуществить это преобразование, я написал функцию, листинг которой приведен ниже:
Эта функция возвращает строку в которой все символы «.» заменены на «,» в строковой переменной Стр. Применимо это не только к числам, но и к текстовым данным.
Теперь при передаче число 1.1 будет иметь формат 1,1. Далее при получении мы должны привести это число обратно в «привычный» вид, это можно сделать на стороне PHP-скрипта функцией strtr() . краткое её описание я привел ниже:
Описание функции string strtr ( string $str , string $from , string $to ):
Эта функция возвращает строку str , в которой каждое вхождение любого символа из перечисленных в from заменено на соответствующий символ из строки to . (www.php.net)
Т.е. в нашем случае функция будет иметь вид strtr("1,1", ",", ".") и результатом её работы будет: 1.1
2. Проблема передачи даты. В 1С дата имеет вид «ДД.ММ.ГГГГ» например, 01.01.2009. При передаче такого вида данных будет вызвана такая же ошибка, как и при передаче числовых данных. Конечно, для решения и этой проблемы можно использовать указанную выше функцию ЧислоURL, но я решил пойти другим путём и конвертировал дату в формат MySQL, то есть «ГГГГ-ММ-ДД». Для этого я написал функцию МуДата, вот ее листинг:
Функция работает следующим образом – опять же выделяет из переменной Стр, Год, Месяц, Число и выстраивает их в формате ГГГГ-ММ-ДД, наиболее привычным при работе с MySQL. Об ошибках все.
Подготовка 1С:
Теперь расскажу о том, как заставить 1С работать с WEB.
Для того, чтобы иметь возможность работать с протоколом HTTP в 1С, я использовал библиотеку V7+, которая поставляется фирмой 1С и служит для расширения возможностей 1С 7.7.
Для начала необходимо подключить внешнюю компоненту (подробнее здесь), используя функцию «ЗагрузитьВнешнююКомпоненту("v7plus.dll")». Далее необходимо создать объект addin.v7httpreader, для этого я использовал переменную НТТР. А для передачи и получения данных используется метод ПолучитьКакСтроку(адрес, СтрокаДляПриёма); который получает данные в переменную СтрокаДляПриёма с адреса указанного в переменной адрес. В целом все это будет выглядеть примерно так:
Выше указанная процедура выведет в окно сообщений HTML-код заглавной страницы сайта http://www.google.ru
Таким образом, теперь мы знаем, как, из 1С, обратиться к нужному сайту, и получить его HTML-код.
Немного о PHP:
Теперь напишем PHP-скрипт, который просто будет выводить данные полученные методом GET. (ознакомиться с тем, как PHP получает данные можно здесь) Листинг такого скрипта:
Назовем его test.php и поместим в корневую папку web-сервера. Далее для проверки работы скрипта введем в адресную строку браузера http://localhost/test.php?text=hello%20wolrd В том случае, если все сделано верно, на экране появиться страница с текстом hello world.
«Соединяем» 1С и PHP:
Далее создаем в 1С внешнюю обработку и вставим в её модуль следующий код:
Отличается она от алгоритма, который мы создавали выше лишь значением в переменной адрес.
И так в случае успешной работы 1С и РНР-скпипта в окне сообщений 1С мы увидим надпись hello world.
Теперь очевидно, что с помощью 1C можно передать данные PHP-скриптам, а они в свою очередь делают с ними все что необходимо, например, записывают их в БД.
Пример записи данных в БД MySQL:
Запись в БД MYSQL будет производиться средствами PHP, об этом сказано уже не мало. Поэтому чтобы не повторяться, опишу пример из собственной практики.
Для начала создадим обработку в 1С:
На форму положим поле ввода и присвоим ему идентификатор текст, далее немного переделаем процедуру описанную в разделом выше:
Теперь необходимо создать БД в MySQL (как это сделать описано здесь). Создадим БД и присвоим ей имя TESTDB. Далее создадим таблицу с именем TEST:
Как видно из запроса, в таблице всего 2 поля:
* id – уникальный номер сроки;
* text – текстовое поле, куда будут помещаться данные из 1С.
Теперь необходимо написать PHP-скрипт, который и будет записывать данные из 1С в MySQL. Листинг данного скрипта приведен ниже:
Все готово! Теперь открываем Внешнюю обработку в 1С и пишем в поле ввода слово Hello! Нажимаем кнопку «Сформировать». Если все сделано правильно, то в созданной нами таблице появится запись со словом Hello! В противном случае, в окне сообщений 1С появится текст ошибки.
Заключение:
Весь тот опыт, которым я поделился в этой статье, можно использовать не только в Интернет-торговли, но и в корпоративных целях, например для того, чтобы:
* Консолидировать данные в единую БД MySQL;
* Предоставлять отчеты компетентным лицам, где бы они не находились.
И это еще далеко не весь перечень, ведь WEB-технологии - очень гибкий инструмент с неограниченным спектром возможностей, при условии умелого их использования.
В общем-то, мной был не только реализован механизм отправки данных, но и приема через HTTP, но вот это уже совсем другая история!