Установка и настройка сервера кассовой программы UaMenu на платформе СУБД ORACLE
Invite pending
Перечень действий для установки и настройки кассовой программы
Инструкция составлялась по результатам внедрения, начиная с сети ритейл клиента, и последующих доработок, поэтому может не учитывать особенностей установки, настройки и функционирования кассовой программы в отличных от описываемых условиях. Требуется проверка, уточнение, дополнение…
Предварительные условия
1. Необходимо наличие бухгалтерской схемы — отдельной схемы БД.
2. На кассовых серверах очень желательно наличие возможности одновременной удалённой работы нескольких пользователей (или возможность подключения при помощи RAdmin, VNC и т. п.).
3. На одном из кассовых серверов необходимо наличие дистрибутивов используемого ПО.
(Oracle Client, CoreFiles, Good/UAMnenu, QLoad, uniaccFileCopy, программа для разблокировки к.а.), а также документации для используемого оборудования (кассовый аппарат, сканеры, весы).
4. Требуемая кодировка БД – CL8MSWIN1251
(select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET').
Изменение кодировки для Oracle XE – см. примечание 5*.
5. Параметр global_names на всех БД должен быть установлен в true.
6. Имена БД на кассовых серверах (select global_name from global_name) должны быть уникальными.
В случае необходимости можно изменить:
alter database rename global_name to name.domain.7. Стабильная связь между бухгалтерской и кассовой схемой. (В случае проблем с VPN-соединениями см. примечание 1*).
8. В случае использования весов желательно заранее подготовить файлы настроек, необходимые для загрузки в весы (этикетка, название магазина, текстовые комментарии).
Содержимое файла с названием магазина для весов DIGI (F52) можно сформировать при помощи функции make_f52_shop_name из пакета Unirest_Util.
Установка кассовой схемы. Настройки на стороне БД
9. Установить кассовую схему.
1) Создать tablespaces (Good\Script\Sys\sys_Tablespaces.sql), подправив скрипт по необходимости (пути, размеры).
2) Создать пользователя un4public (Good\Script\un4public\un4public.sql).
3) Создать пользователя unirest_public (unirest_public.sql).
4) Создать пользователя кассы (кассовую схему — create_user.sql).
5) Импортировать дамп кассовой схемы.
10. Настроить tnsnames на бухгалтерском сервере.
11. Настроить tnsnames на кассовом сервере.
12. Создать необходимые db link'и в бухгалтерской схеме.
13. Создать db link к бухгалтерской схеме (если она на другой базе).
14. В бухгалтерской схеме необходимо заполнить таблицу с настройками связи с кассой (кассами) — ybmb_dif_cassa.
15. В бухгалтерской схеме заполнить справочники кассиров, справочник касс, справочник весов и типов весов, произвести привязку касс к магазинам (в карточке кассы).
16. В кассовой программе заполнить справочник кассиров (таблица tms_casir).
17. Настроить в кассовой схеме параметры в tms_init_params.
Обязательно:
1) Schema — имя бухгалтерской схемы
2) DBLink — линк к бухгалтерской схеме (если она на другой базе).
3) GlobalDep – код подразделения, к которому относятся работающие на кассовом сервере кассы
4) ServerID – порядковый номер сервера в рамках всей организации
18. Настроить в таблице object_list соответствие между объектами кассовой и бухгалтерской схем. Описание механизма fast refresh, который можно использовать для обновления справочников наряду с complete refresh, его настройки в object_list, плюсы/минусы — в Примечании 4*.
19. В случае использования для обновления справочников механизма fast refresh необходимо создать логи для соответствующих на бухгалтерской схеме —
create materialized view log on <table name>.
20. Создать триггер on logon on schema (trg_on_logon) (для инициализации контекстов) и переподключиться к кассовой схеме (в новых версиях — >= 01.01.2008 не нужно, инициализация и создание триггера производится перед созданием объектов в call_all_mv_v).
21. Запустить unirest_mv_v.call_all_mv_v. Эта процедура создаёт на основе данных из object_list необходимые объекты (синонимы, view, mat.view и т. д.).
22. Откомпилировать инвалидные объекты (можно при помощи dbms_utility.compile_schema(user,false)), в новых версиях — >= 01.03.2009 не нужно, компиляция производится после создания объектов в call_all_mv_v.
23. Настроить архивацию (backup) для кассовой схемы.
Установка, настройка и проверка кассовой программы
24. Скопировать нужную версию UAMenu + CoreFiles (или Good).
25. Скопировать cantina.ini в %windir% или в папку с программой. (см. примечание 2*)
Настроить необходимые параметры:
1) Server (обязательно) — имя сервера с кассовой схемой.
2) FiscalPrinter — тип используемого кассового аппарата.
3) PosID или CassaDatecsNrLogic — номер кассы (попадает в tmdb_sold.id_cassa). См. примечание 3*
4) ImageBackGroundPath (опционально ) — путь к логотипу для основного окна программы.
5) BonDir — каталог формирования чеков для TextSell (В случае FiscalPrinter=Datecs) или FPRWIN (ElicomECR).
26. Проверить запуск UAMenu.
27. В UAMenu выполнить «Работа с БД --> Обновить справочники с сервера» (обновление mat.view).
28. Временно установить в cantina.ini параметр BonFiscal в false (на время проверки).
29. Провести в кассовой программе операцию продажи товара.
30. Установить в cantina.ini параметр BonFiscal в true.
31. Проверить в бухгалтерской программе наличие данных по проданным товарам и возможность создания по ним документов. (Журналы -> Товары -> Расход ...). Тестовые документы после проверки удалить.
32. Почистить тестовые данные в кассовой схеме. (delete/truncate):
1) tmdb_fiscal_notes
2) tmdb_sync_log
3) tmdb_comenz
4) log_tmdb_comenzd
5) cass_log
6) tmdb_sold
7) txzlog
8) pptable
33. Сбросить sequences в кассовой схеме (опционально) — comenz, sec_comenzd, seq_comenzd_t, seq_txzlog, id_payments, id_pptable.
34. Сменить пароль администратора, используемого по умолчанию, для того чтобы было невозможно использовать комбинацию клавиш Ctrl+F12.
Настройки ОС и вспомогательных утилит
35. Создать пользователя ОС, под которым будут работать кассиры (если такового нет).
36. Отключить кэширование записи на диск на уровне ОС:
Disk drive properties->Policies->Optimize for quick removal
37. В случае использования Win2003 – уменьшить размер файлового кэша ОС:
Network connection properties-> General->File and Printer Sharing for Microsoft Networks->Properties->Maximize data throughput for network applications
38. Дать права на запись в папку с программой для пользователя-кассира (иначе не будут вестись логи работы программы).
39. Скопировать ярлык UAMenu на рабочий стол кассира и в автозагрузку.
40. Создать бат-файл для копирования измененной версии UAMenu с кассового сервера на другие кассовые компьютеры (при наличии таковых).
41. В случае использования к.а. DatecsFP550 скопировать программы FPWIN и FPTax для диагностики фискальных принтеров администратором (при необходимости печати клиентом Z-отчётов за прошедшие дни, создать ярлыки на рабочем столе кассира), создать ярлык для программы разблокирования фискального принтера на рабочем столе кассира.
42. Если в UAMenu некорректно отображаются кириллические сообщения об ошибках (можно проверить, например, набрав неправильный пароль), то необходимо проверить настройку серверных и клиентских NLS — параметров:
1) Ключ NLS_LANG в Oracle Home
(HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_)
2) Переменная окружения NLS_LANG
3) nls_database_parameters / nls_session_parameters
За подробностями — в Metalink Note:158577.1 и далее по ссылке или Oracle Database Globalization Support Guide — Setting Up a Globalization Support Environment
Если настройка NLS-параметров не помогла, то можно изменить в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage значение параметров 1250 и 1252 на c_1251.nls (необходима перезагрузка).
Настройки и проверка оборудования и сопутствующего ПО.
43. Настроить сканеры штрих-кодов (проверить наличие префикса $ и работу с программой).
44. Настроить сканеры, в случае необходимости, для расширения штрих-кодов до EAN13.
45. Настроить печать на кассовые аппараты в зависимости от модели аппарата (параметр FiscalPrinter в cantina.ini).
1) FiscalPrinter=Datecs (для Datecs MP-500/ Datecs MP-5000)
1.1 Установить программу для печати на кассовый аппарат. TextSell2035.
1.2 Прописать в автозагрузку пользователям, которые будут работать с кассой ярлыки для программы печати на к.а. (для текущего пользователя они прописываются при установке программы).
1.3 В Casyst.ini прописать ключи для кассовых аппаратов. (после изменения ключей перезапустить программу печати).
1.4 Проверить настройку параметров PosID и CassaDatecsNrLogic (см. примечание 3*).
2) FilcalPrinter=DatecsFP550 (для Datecs FP550) Wtdedit.dll есть в папке в программой UaMenu, можно регистрировать оттуда.
2.1 Скопировать Wtdedit.dll в Windows\System32s
2.2 Зарегистрировать dll — для этого в командной строке нужно выполнить команду «regsvr32 wtdedit.dll» — регистрация COM-объекта.
2.3 В cantina.ini установить COMBaudRate = 9600
3) FilcalPrinter=IKC_E260T (для IKC-E260T)
3.1 Скопировать IKC_E260T02.dll в Windows\System32
4) FiscalPrinter=IKC_E260T_RTI (для IKC-E260T)
4.1 Скопировать IKC_E260T_driver.dll в Windows\System32
4.2 Установить Microsoft Visual C++ 2005 Redistributable Package (x86) (vcredist_x86.exe), который включает в себя библиотеки msvcp80.dll и msvcr80.dll, нужные для работы драйвера.
5) FilcalPrinter=ElicomFP
5.1 Для модели на базе принтера Epson необходимо установить в cantina.ini COMbaudrate=115200
6) FilcalPrinter=ElicomECR
6.1 Скопировать fprwin_en.exe и fprwin_en.ini в отдельную директорию(например, C:\FPRWIN)
6.2 Прописать путь до fprwin_en.exe в параметре BonDir в cantina.ini
6.3 Прописать серийный номер кассового аппарата в параметре FiscalDeviceSerialNo в cantina.ini
46. Проверить фискализацию кассовых аппаратов. Для DatecsFP550 это можно сделать при помощи FPTax. Если используются DatecsFP550 и какие-либо ставки НДС для них недоступны(не настроены), то необходимо настроить маппинг символов ставок НДС для таких к.а. в таблице tva_print_letters_mapping:
id — уникальный номер строки настроек
id_cassa — значение параметра CassaDatecsNrLogic из cantina.ini соотв. кассового компьютера.
l_from — символ, который необходимо заменять
l_to — символ, на который необходимо заменять
start_date, end_date — время начала и окончания активности данной строки настроек
Периоды start_date, end_date не должны пересекаться для одних и тех же значений id_cassa, l_from.
47. Проверить печать чеков для каждой из имеющихся ставок НДС на каждом кассовом аппарате.
48. Установить, при необходимости, службу копирования файлов для загрузки в весы — uniaccFileCopy /install. На резервном сервере способ запуска данной службы должен быть «Ручной»(«Manual») — при переходе с основного на резервный сервер необходимо запустить эту службу вручную и сменить способ запуска на «Авто».
Настроить параметры службы:
1) SrcPath — откуда копировать
2) DestPath — куда копировать
3) SecondsInterval — интервал срабатывания
4) ReplaceExisting — true/false — флаг замены существующих файлов при перемещении (default=true).
5) FlushToDisk — сразу сбрасывать файлы из буфера ОС на диск (по умолчанию включен, можно не настраивать)
6) RestartService — включает/отключает перезапуск указанного сервиса (default = false).
7) RServiceName — имя перезапускаемого сервиса (default = "").
Параметры RestartService и RserviceName используются для перезапуска сервиса QLoadSMD перед началом переноса файлов для загрузи в весы в случае проблем с локальными политиками безопасности и в большинстве случаев не нужны.
Необходимо установить для службы учётную запись, которая имеет права на чтение/запись каталога SrcPath, т. к. по умолчанию служба запускается от имени Local System и не имеет доступа в сеть.
49. Установить, в случае использования весов DIGI, службу для загрузки PLU-файлов в весы QLoadSM / install. При помощи конфигуратора настроить службу загрузки (директория, интервал срабатывания, маска файлов, IP-адреса весов). На резервном сервере способ запуска данной службы должен быть «Ручной»(«Manual») — при переходе с основного на резервный сервер необходимо запустить эту службу вручную и сменить способ запуска на «Авто».
50. В случае использования весов Mettler Toledo для выгрузки данных на весы используется “Сервер весов” от RTI-Soft (настраивается сотрудниками RTI). В справочнике весов в поле “Тип весов” необходимо выбрать тип 3 (Mettler Toledo) для выгрузки данных в соответствующем формате (необходим также поддерживающий данный тип весов PL/SQL пакет, использующийся для выгрузки).
51. Для загрузки данных в весы EVL используется утилита ETSDriver.exe. Для её работы необходимы также EtsDriver.ini и DIGI.txt.
В весах должны быть установлены уникальные логические номера. Порядок установки:
1) PRG DW PRG
2) PRG PRG PRG PRG PRG
3) устанавливаем номер
4) PRG несколько раз, пока не закончится список параметров (на экране должно появиться 0.00)
5) Off/On
В EtsDriver.ini параметры SCALE* используются для указания логических номеров весов (например SCALE1=1), где первое число – порядковый номер весов в настройке, второе – логический номер, указанный в весах. Параметры FILEDATA* используются для указания имён (возможно указание полного пути) файлов, которые должны выгружаться в соответствующие весы.
В справочнике весов для EVL необходимо указывать DIGI в поле “Тип весов”, т. к. форматы выгружаемых файлов для них совпадают.
52. Проверить выгрузку файлов в весы.
53. Очистить PLU-файлы в весах и повторить выгрузку.
54. Настроить параметры для работы с кассовыми весами в случае использования таковых.
Используемые параметры:
- ScalesCOM (default = 1, ini/БД, статический) — № COM-порта для работы с весами;
- ScalesCOMBaudRate (default = 9600, ini/БД, статический) — скорость COM-порта для работы с весами;
- ScalesDriverLog (default = true, ini/БД, статический) — управляет логированием работы драйвера весов;
- IPCServerID (default = "", ini/БД, статический) — задаёт текстовый ID для работы с использованием InterProcess Communication (для весов используется un4Scales);
- ScalesServerPath (default = "", ini/БД, статический) — задаёт путь к утилите, выполняющей роль драйвера весов (un4Scales). По умолчанию — "", т. е., в папке с кассовой программой
Настройки для поддерживаемых моделей весов:
1) Metrologic MS2420
— В папке с программой должны находиться un4Scales.exe и un4s_any.dll
— параметр IPCServerID = un4Scales;
— параметр ScalesServerPath – не задан, если un4Scales находится в одной папке с UAMenu, иначе — путь к un4Scales;
— В un4Scales необходимо указать в качестве используемой DLL — un4s_any.dll (dll), номер весов = номеру COM-порта;
55. Настройка POS-терминала.
— POSTermEnabled (default = false, БД/ ini, статический) — управляет работой с POS-терминалом.
— POSTermPort (default = 9999, ini/БД, статический) — порт TCP/IP.
— POSTermLog (default = true, ini/БД, статический) — управляет логированием сообщений с POS- терминалом.
— POSTermNoOfCopies (default = 2, ini/БД, статический) — число копий для печати.
— TSPOSShowForm (default = false, ini/БД, статический) – при работе в режиме ТС включает отображение формы для ТС.
Примечания
1* В случае использования VPN-туннелей между бухгалтерской и кассовыми схемами возможны проблемы со стабильностью связи. Эти проблемы могут быть связаны с потенциальным различием максимально допустимых размеров пакета данных на различных участках маршрута (Для VPN-соединений размер пакета меньше, чем для Ethernet-соединений). Симптомы — частые обрывы связи при копировании файлов размером более 1MB, потери связи между БД во время обновления больших справочников, что приводит к зависанию обновляющей сессии, которая при этом может ждать до наступления тайм-аута TCP/IP соединения (по умолчанию 2 часа) и удерживать при этом блокировки на справочнике (снимается только через orakill или перезапуск экземпляра). Для устранения проблем, связанных с размером пакета, необходимо установить на бухгалтерском сервере меньший размер пакета (можно при помощи drTCP).
Более подробную информацию можно найти по следующим ссылкам:
support.microsoft.com/kb/q140375
support.microsoft.com/kb/826159
www.dslreports.com/drtcp
www.dslreports.com/faq/578
smallvoid.com/article/winnt-tcpip-mtu.html
www.dslreports.com/faq/5793
support.microsoft.com/kb/Q900926
support.microsoft.com/kb/Q283165
support.microsoft.com/kb/159211
support.microsoft.com/kb/898060
2* На Win2003 при редактировании файла параметров (cantina.ini) в C:\Windows (и при каждом запуске запуска программы) создаётся локальная копия файла в папке пользователя — \Documents and Settings\USER\Windows и затем используется программой, что создаёт трудности при настройке параметров инициализации, т. к. локальные дубли необходимо не забывать удалять. По этой причине изменён приоритет ini-файлов — больший приоритет будет у ini-файла, находящегося в каталоге программы (в одной папке с UAMenu.exe). На Win2003 проще будет использовать ini-файл, находящийся в папке с программой, тогда не нужно будет удалять созданные системой дубли после каждого изменения параметра.
3* Номер кассы должен быть уникальным для каждой кассы в рамках всей организации. Лучше делать двухуровневым — 2 символа на номер магазина (исключая незначащие нули) + 2 символа на номер кассы в рамках магазина. Также должен быть настроен справочник соответствий в бухгалтерской схеме.
Номер кассы может настраиваться двумя разными параметрами – PosID и CassaDatecsNrLogic. Если значение параметра PosID не задано, вместо него используется параметр CassaDatecsNrLogic (режим обратной совместимости). PosID нужен в случае использования кассовых аппаратов DatecsMP, в таком случае CassaDatecsNrLogic используется только при печати чеков, а для получения номера кассы используется PosID. В остальных случаях вместо PosID может использоваться CassaDatecsNrLogic.
4* Fast Refresh (copy/paste из заявки 20071221102542 + описание добавленных позже возможностей)
Краткое описание механизма.
В бухгалтерской БД создаются materialized view log's для нужных справочников. На кассовых схемах создаются fast refresh materialized view's для базовых справочников, а уже на их основе — view, аналогичные создававшимся при complete refresh. Предыдущий механизм работы со справочниками сохранён практически без изменений. Его можно (и нужно) использовать в случае, когда бухгалтерская и кассовая схемы находятся в одной БД. В таком случае справочники будут использоваться напрямую с бухгалтерской схемы.
Настройка и переключение между механизмами осуществляется при помощи таблицы object_list. В таблицу добавлены 4 поля:
1) fast_refresh — флаг, указывающий механизм обновления, используемый данным справочником. Y — fast, null — complete.
2) fr_object_name_buh — по аналогии с object_name_buh – базовый объект бухгалтерской схемы для данного справочника, используемый при создания fast refresh mv.
3) fr_mv_script — шаблон скрипта создания mv (имя объекта и префикс подставляются при создании).
4) fr_mv_add_script — шаблон скрипта для создания дополнительных объектов после создания всех mv.
5) use_truncate — (для версий >= 10.2). Настройка метода обновления при complete refresh: 'Y' — при complete refresh используется truncate/insert, null — при complete refresh используется delete/insert.
Для небольших справочников, для которых не реализован fast refresh лучше настраивать use_truncate = null, тогда при обновлении не произойдёт эффекта «пропадания данных» из справочника из-за применения truncate. Таким образом, если «тяжёлые» справочники обновляются через fast refresh, а небольшие — complete refresh с настройкой use_truncate = null, то мы получаем согласованное обновление всех справочников.
В случае использования complete refresh для обновления всех справочников, и «тяжёлых» и небольших, для «тяжёлых» лучше установить use_truncate = true, тогда обновление будет произведено существенно быстрее, т. к. не будет затрачено много времени на очистку больших справочников и будет сгенерировано меньше redo/undo. Но если необходима возможность работы пользователей одновременно с обновлением, то нужно для всех справочников установить use_truncate = null.
6) add_script_order — задаёт порядок выполнения скриптов из столбца fr_mv_add_script. (nulls last). Нужно в случае, когда в одном из скриптов используются объекты, создаваемые в другом.
Пока механизм fast refresh реализован только для «тяжёлых» справочников, полное обновление которых занимало много времени. syss, syssgrp и т. п. обновляются через complete refresh.
Плюсы:
- При обновлении справочника затрагиваются только строки, изменённые со времени предыдущего обновления, а не все данные справочника, как при complete refresh. Время обновления зависит от количества изменений, произведённых в бухгалтерской схеме. (При тестировании на резервном сервере клиента обновление за 1-2 дня происходило за 20-30 секунд на плохом канале связи.) Если никаких изменений в базовых справочниках не было, то вся процедура обновления занимает 2-3 секунды.
- Поскольку во время обновления не производится truncate справочников, то процедура обновления не мешает работе остальных касс. Можно также сделать, чтобы при запуске обновления из UAMenu создавался job и обновление производилось в фоне, тогда пользователь не будет вынужден ждать окончания процедуры обновления (в таком случае будет нужен лог, в котором можно будет просмотреть результат выполнения обновления, не возникло ли ошибки и т.д.)
Минусы:
- Необходимость создания дополнительных объектов в бухгалтерской схеме (materialized view log's).
- Необходимость мониторинга состояния логов (например, при помощи job'a). Если в момент удаления mv на кассовой схеме связи до бухгалтерской схемы не было, то необходимо производить дерегистрацию mv вручную, чтобы не росли логи. (Наличие такой «неучтёнки» тоже можно отслеживать job'ом).
- Если во время обновления произошёл сбой связи м/у кассой и бухгалтерией, то, в зависимости от текущей фазы обновления, может потребоваться пересоздание материализованных представлений (Можно сделать из UAMenu — Доплнительные формы -> Настройки -> Новая методика переключения… -> Кнопка «Создать»).
- Возможно ещё что-нибудь с чем пока не столкнулись…
На сервере клиента возникла проблема при использовании fast refresh.
Описание и решение:
Из-за Bug 5863277 при использовании cursor_sharing=force/similar возникает ошибка ORA-1008 — 'not all variables bound' при обновлении материализованных представлений.
Doc ID: Note:472261.1
Materialized View Refresh Fails on Second Attempt With ORA-01008 'Not All Variables Bound' Error
Fixed in 10.2.0.4
Т. к. при обновлении materialized view на сервере запускается сессия с module = 'ORACLE.EXE', то можно обойти этот баг, включая cursor_sharing=force только для пользователей BOMBA и CONCERN и module <> 'ORACLE.EXE'.
Для этого в схеме клиента был добавлен триггер ybmb_logon_trg с следующими строками:
if user in ('BOMBA','CONCERN') and sys_context('USERENV','MODULE') <> 'ORACLE.EXE'А на уровне системы cursor_sharing установлен в exact.
then
execute immediate 'alter session set cursor_sharing=force';
end if;
5* Для кассовой схемы можно использовать только Oracle XE c однобайтной кодировкой (не уникодовый Universal). После установки однобайтового Oracle XE кодировка БД по умолчанию – WE8MSWIN1252 (Western European Latin1). Для изменения кодировки на требуемую CL8MSWIN1251 необходимо выполнить следующие действия:
shutdownТакже необходимо проверить, чтобы часть параметра nls_lang, отвечающая за nls_territory, не была установлена в CIS (например, RUSSIAN_CIS.CL8MSWIN1251), т. к., в XE это значение устаревшее и подключиться в таком случае будет невозможно. RUSSIAN_CIS.CL8MSWIN1251 можно заменить на RUSSIAN_RUSSIA.CL8MSWIN1251. Параметр может быть задан как в реестре для используемого Oracle_Home, так и в через переменную окружения ОС.
startup mount
alter system enable restricted session;
alter database open;
alter database character set internal_use CL8MSWIN1251;
shutdown
startup