Pull to refresh

Установка и настройка сервера кассовой программы UaMenu на платформе СУБД ORACLE

Перечень действий для установки и настройки кассовой программы


Инструкция составлялась по результатам внедрения, начиная с сети ритейл клиента, и последующих доработок, поэтому может не учитывать особенностей установки, настройки и функционирования кассовой программы в отличных от описываемых условиях. Требуется проверка, уточнение, дополнение…

Предварительные условия


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-объекта.
image
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'
then
execute immediate 'alter session set cursor_sharing=force';
end if;
А на уровне системы cursor_sharing установлен в exact.

5* Для кассовой схемы можно использовать только Oracle XE c однобайтной кодировкой (не уникодовый Universal). После установки однобайтового Oracle XE кодировка БД по умолчанию – WE8MSWIN1252 (Western European Latin1). Для изменения кодировки на требуемую CL8MSWIN1251 необходимо выполнить следующие действия:
shutdown

startup mount

alter system enable restricted session;

alter database open;

alter database character set internal_use CL8MSWIN1251;

shutdown

startup
Также необходимо проверить, чтобы часть параметра nls_lang, отвечающая за nls_territory, не была установлена в CIS (например, RUSSIAN_CIS.CL8MSWIN1251), т. к., в XE это значение устаревшее и подключиться в таком случае будет невозможно. RUSSIAN_CIS.CL8MSWIN1251 можно заменить на RUSSIAN_RUSSIA.CL8MSWIN1251. Параметр может быть задан как в реестре для используемого Oracle_Home, так и в через переменную окружения ОС.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.