Установка HeadOffice v4
Введение
Система StoreHouse HeadOffice v4 (далее SHO4) предназначена для централизованного управления словарями и построения отчетов в разрезе всех ресторанов сети.
В отличии от предыдущей версии StoreHouse BackOffice v3, в версии 4 изменился принцип работы - для обновления словарей в локальных ресторанах требуется подключение из центрального офиса к локальным ресторанам, а не наоборот.
Система отчетов также изменилась - в SHO4 не хранятся накопительные данные по локальным точкам, а при построении отчета в центральном офисе происходит подключение к удаленным локальным серверам StoreHouse v4
Состав приложения
Примечание: Дистрибутив SHO4 доступен по ссылке ftp://ftp.ucs.ru/storehouse/SH4 HeadOffice
Система состоит из следующих модулей:
- SH HeadOffice Administrator - административное приложения для создания базы данных и управления пользователями системы
- SH HeadOffice Editor - основное приложение системы. Предназначено для управления словарями, импорта/экспорта данных
- SH HeadOffice Reports - приложение для создания различных отчетов по всем ресторанам сети
- SH Application Server - специальный многопоточный сервер приложений
В качестве СУБД используется Microsoft SQL Server (далее MSSQL). Рекомендуется использовать версию SQL Server 2012 (коммерческая версия) или SQL Server 2012 Express Edition (бесплатная версия), разрядность не имеет значения.
Системные требования
Серверная часть
Требования к серверной части определяются требованиями к СУБД, с которой будет работать SHO4 - ниже описаны требования и рекомендации для СУБД SQL Server 2012, приведенные на оф. сайте Microsoft https://msdn.microsoft.com/ru-ru/library/ms143506(v=sql.110).aspx
Следующие требования и рекомендации относятся как к 32-разрядной, так и к 64-разрядной версиям SQL Server 2012.
Общие рекомендации
- Рекомендуется запускать SQL Server 2012 на компьютерах с файловой системой NTFS. Установка SQL Server 2012 в файловой системе FAT32 поддерживается, но не рекомендуется, поскольку эта система менее защищена, чем NTFS.
- Установка SQL Server не допускается на диски со сжатием, сетевые диски и диски, доступные только для чтения
- Для установки SQL Server 2012 на компьютере под управлением Windows Vista с пакетом обновления SP2 или Windows Server 2008 с пакетом обновления SP2, необходимо предварительно установить обновления для платформы .NET Framework 3.5 с оф. сайта Microsoft https://support.microsoft.com/ru-ru/kb/956250, для компьютеров под управлением Windows 7 с пакетом обновления SP1, Windows Server 2008 R2 с пакетом обновления SP1, Windows Server 2012 или Windows 8 и выше, это обновление уже установлено
- Установка SQL Server 2012 через клиент службы терминалов не поддерживается
Требования к оборудованию
Компонент | Требования |
Память (ОЗУ) | Минимальные:
Рекомендуемые:
|
Быстродействие процессора | Минимальные:
Рекомендуемые: 2,0 ГГц и выше |
Тип процессора |
|
Жесткий диск | Для SQL Server 2012 требуется как минимум 6 ГБ свободного места на диске |
Требования к операционной системе
Полный перечень версий и редакций ОС Windows, совместимых с SQL Server 2012, приведен на сайте Microsoft https://msdn.microsoft.com/ru-ru/library/ms143506(v=sql.110).aspx
Клиентская часть
- ОС Windows XP Professional SP3 и выше
- 32-разрядный (x86) или 64-разрядный (x64) процессор с тактовой частотой 1 гигагерц (ГГц) или выше
- 512 мегабайт (МБ) (для 32-разрядной системы) или 1 ГБ (для 64-разрядной системы) оперативной памяти (ОЗУ)
- 100 мегабайт (МБ) свободного пространства на жестком диске
Установка приложения
Создание пользователя SQL Server
Все модули SHO4 для работы требуют подключения к БД MSSQL - можно использовать встроенную учетную запись 'sa', но рекомендуется создать отдельного пользователя, от имени которого будут осуществляться все обращения к серверу MSSQL.
Для создание нового пользователя MSSQL необходимо запустить среду "SQL Server Management Studio", выбрать рабочий экземпляр SQL-cервера и перейти в раздел Безопасность ⇒ Имена входа. Вызвать меню по правой кнопке мыши и выбрать пункт "Создать имя входа ...".
В разделе "Общие" необходимо указать имя входа, например sho4, установить переключатель в положение "Проверка подлинности SQL Server" , ввести пароль и подтверждение пароля, убрать опцию "Требовать использования политики паролей". Остальные параметры оставляем по умолчанию
При создании пользователя имя входа и пароль должны быть разными - это требование политики безопасности MS SQL Server!
Далее переходим в раздел "Серверные роли", отмечаем все доступные роли и подтверждаем создание пользователя нажатием кнопки "ОК"
Установка приложений
Для запуска клиентских приложений SHO4 требуется электронный ключ защиты USB Novex Stealth II,
прописанный специальным образом - ключ должен быть установлен на каждом рабочем месте! Сервер, если на нем нет рабочего места, не требует ключа защиты.
ключ защиты для SHO4 не имеет ограничений по сроку действия - он прописывается один раз с бессрочной лицензией.
Для установки скопируйте все файлы из дистрибутива в отдельную директорию, например D:\UCS\SHO4.
Для запуска редактора (SHO4edit.exe) необходимы дополнительные файлы из стандартного дистрибутива StoreHouse v4 той версии, с которой планируется использование SHO4:
- BORLNDMM.DLL
- DELPHIMM.DLL
- RTL60.BPL
- SdbCli.dll
- MIDAS.DLL
Кроме указанных библиотек для запуска SHO4edit.exe требуется библиотека SHTR.dll, которую можно взять на фтп ftp://ftp.ucs.ru/storehouse/sh4/shtr.dll/RK7/SHTR.dll
Создайте несколько разделов в реестре:
Примечание
При установке системы на 64-битных операционных системах обязательно ознакомьтесь с пунктом Тонкости развертывания системы на 64-х битных ОС ниже1.Раздел [HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4editor] - необходим для работы клиентского приложения SHO4edit.exe
В этом разделе создайте следующие строковые переменные (String Value):
- DBPath - перечень баз данных, к которым требуется подключение. Значения разделяются знаком ";" ("точка с запятой"). Значение параметра необходимо указывать в виде:
<имя компьютера-сервера>\<имя экземпляра сервера SQL>:<имя базы данных>
Например, Server1\SQLExpress:sho4_data1 или для нескольких баз Server1\SQLExpress:sho4_data1; Server2\SQLServer2005:sho4_data2
где:
- Server1 и Server 2 - имена компьютеров, на которых установлены СУБД SQL Server (могут быть одинаковы)
- SQLExpress и SQLServer2005 - экземпляры баз данных SQL Server
- sho4_data1 и sho4_data1 - базы данных SQL Server. На данном шаге можно не указывать эти значение, т.к. базу данных мы будем создавать на следующем этапе
- Db_user - имя пользователя, с помощью которого осуществляются все обращения к SQL Server. Необходимо указать пользователя, которого мы создали ранее
- Db_pwd - пароль пользователя, указанного в параметре Db_user
2.Раздел [HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4COM] - необходим для возможности обращения к серверу через DCOM. Используется приложением SH4 HeadOffice Reports(SHO4Rpt.exe)
В этом разделе создайте точно такие же строковые переменные, как и в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4editor]
Сервер приложений (SHAppSrv.exe), который вызывается при запуске приложения SH4 HeadOffice Reports, может подключаться только к одной базе данных SHO4,
поэтому в качестве значения параметра DBPath в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4COM] можно указать путь только к одной базе!
Для успешного запуска сервера приложений SHAppSrv.exe требуется файл SHAppSrv.txt, в котором формируется лог работы - если файл отсутствует, обязательно создайте его вручную (пустой)
После этого информация в реестре должна выглядеть примерно так (для одной базы данных):
[HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4editor]
DBPath=Server1\SQLExpress:sho4_data1
Db_user=sho
Db_pwd=ucs
[HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4COM]
DBPath=Server1\SQLExpress:sho4_data1
Db_user=sho
Db_pwd=ucs
Или в случае использования нескольких баз данных:
[HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4editor]
DBPath=Server1\SQLExpress:sho4_data1; Server2\SQLServer2005:sho4_data2
Db_user=sho
Db_pwd=ucs
[HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4COM]
DBPath=Server1\SQLExpress:sho4_data1
Db_user=sho
Db_pwd=ucs
Важно: После выполнения всех настроек, необходимо один раз запустить SHAppSrv.exe вручную для регистрации COM-объектов.
В дальнейшем сервер будет вызываться автоматически при запуске приложения SHO4Rpt.exe.
Создание базы данных
Для создания базы данных запустите приложение SH HeadOffice Administrator (SHO4Admin.exe) - при запуске приложение не запрашивает пароль
Далее выберите в меню Прочее ⇒ Создать базу данных...
В окне создания базы данных заполните следующие поля:
- Имя сервера - укажите имя сервера SQL в виде <имя компьютера>\<имя экземпляра>, например Server1\SQLExpress
- Имя БД - укажите имя базы данных, которую хотите создать. Если в реестре уже задано имя базы данных, укажите это же имя, если нет - укажите произвольное имя и затем пропишите его в реестре, как описано выше
- Директория БД - укажите полный путь к директории, в которой будет создана база данных. Необходимо указывать путь к существующей директории.
- Флаг "заполнить первоначальными данными" должен быть отмечен (по умолчанию)
Подтвердите создание базы данных нажатием кнопки ОК - если процесс пройдет успешно, появится соответствующее сообщение.
Если необходимо создать еще одну базу данных - повторите действия, описанные выше.
После создания базы можно проверить подключение к ней - выберите меню "Файл" ⇒ "Соединение с базой данных..". Появится окно с параметрами подключения - для входа используйте имя пользователя Admin без пароля.
Сброс пароля администратора
Если пароль для пользователя Admin утерян, можно сбросить его значение с помощью SQL-запроса:
SHO 4.46 и ниже:
update sho_users set pass = 'D41D8CD98F00B204E9800998ECF8427E' where rid = 0
SHO 4.48 и выше
update sho4SHO_USERS set pass = 'D41D8CD98F00B204E9800998ECF8427E' where rid = 0
Запрос можно выполнить в среде SQL Server Management Studio.
Создание предприятия
Предприятие - это единица, которая определяет локальный ресторан. При создании базы данных и заполнении ее первоначальными данными создается только одна корневая группа предприятий с названием "Корпорация" - вы можете изменить ее.
Если SHO4 планируется использовать совместно с RK7 или RBO, предприятия НЕ ДОЛЖНЫ создаваться вручную - они будут сформированы автоматически при импорте данных из этих приложений.
Создание роли с ограниченными правами
Для корректной работы SHO4 в удаленных (локальных) складах пользователи не должны иметь возможности редактировать основные словари.
Для этого необходимо создать специальную роль в локальном SH4 и назначить всем пользователям эту роль.
Создание роли:
- Запустите Sdb Server manager (Sdbman.exe)
- Выберите пункт меню "Прочее" ⇒ "Выполнить запрос"
- В поле "Процедура:" введите CreateHoRole, а в поле "Библиотека:" выберите библиотеку SH_CRTDB.DLL из рабочей директории локального SH4 (должен быть указан полный путь)
- Выполните процедуру с помощью меню "Прочее" ⇒ "Выполнить" либо выберите соответствующую иконку "Выполнить" на панели задач
- Если процедура выполнена успешно, на закладке "Результаты запросы" будет выдано сообщение "Процедура выполнена успешно"
В итоге будет создана роль "Head office", которую нужно назначить всем пользователям.
Если в локальном складе были созданы другие роли, отличные от роли "Public", и их нужно сохранить, необходимо использовать процедуру AlterHoRole, которая позволяет установить необходимые права для уже созданной роли (или ролей).
Выполнение этой процедуры аналогично вышеописанному процессу.
Выполнение процедуры AlterHoRole затрагивает все существующие роли!
Примечание: Процедуры CreateHoRole и AlterHoRole доступны начиная с версии SH 4.38.62
Настройка импорта данных (ImportRK.exe) в локальном складе
Технология работы StoreHouse HeadOffice предполагает, что базовые словари создаются и редактируются только в SHO4 - в локальных складах редактирование словарей должно быть запрещено.
Для исключения нарушения целостности данных, импорт в локальном складе должен использовать специальную версию SHTR.DLL, в описании которой присутствует фраза "EMPTY DISHLIST" (исключение импорта меню)
На момент последней редакции данного документа специальная библиотека SHTR.DLL имела версию 1.24.21 и размещалась на FTP по ссылке ftp://ftp.ucs.ru/storehouse/SH4 HeadOffice/SHTR_1_24_21.zip
Библиотеку SHTR.DLL необходимо скопировать в рабочий каталог локального SH4, откуда происходит запуск приложения ImportRK.exe
Начиная с версии склада 4.95.268 добавлен флаг "StoreHouse иcпользует словари SH HeadOffice", который определяет, импортируются или нет словари в SH4 из R-Keeper - флаг устанавливается через модуль IRkSetup.exe версии 4.56 и выше:
Модуль ImportRK.exe более ранних версий не будет работать с версией склада 4.95 и выше
Несмотря на появление флага "StoreHouse иcпользует словари SH HeadOffice" рекомендуется всегда устанавливать специальную версию SHTR.DLL на случай отключения флаге.
Установка дополнительного (удаленного) рабочего места SH4 HeadOffice
Перед установкой дополнительного рабочего места необходимо настроить SQL Server для возможности удаленного подключения.
Дальнейшее описание подразумевает, что SQL Server сконфигурирован и может обслуживать удаленные подключения клиентов по протоколу TCP/IP.
Также следует убедиться, что на клиенте и на сервере отключены файерволы (по крайней мере, на период конфигурирования), при необходимости проверить, что в настройках файерволов открыты все необходимые порты.
Для установки дополнительного рабочего места выполните следующие действия:
- скопируйте содержимое директории SHO4 на компьютер, где планируется установка доп. рабочего места
- в реестре пропишите путь к базе данных, к которой требуется подключение. Для этого создайте раздел HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SHO4editor и в нем три переменные типа String:
- DB_user - имя пользователя для подключения к SQL Server
- DB_pwd - пароль пользователя, указанного в параметре DB_user
- DBPath - путь к базе данных. Путь должен быть указан в формате <имя_сервера>\<имя_экземпляра>:<имя_базы_данных> , где <имя_сервера> - имя сервера (или IP адрес), к которому требуется подключение, <имя_экземпляра> - имя экземпляра SQL Server, с которым требуется установить соединение, <имя_базы_данных> - имя базы данных, с которой необходимо работать. Например, если требуется прописать подключение к серверу MYSERVER (IP адрес 192.168.0.100), на котором запущен экземпляр SQL Server с именем SQLEXPRESS, и базой данных sho4, то срока будет выгдядеть так: MYSERVER\SQLEXPRESS:sho4 или 192.168.0.100\SQLEXPRESS:sho4
В реестре можно прописать несколько подключение к разным базам и разным серверам - для этого разделяйте записи с помощью символа ";" ("точка с запятой"). Например: 192.168.0.100\SQLEXPRESS\sho4_work;192.168.0.100\SQLEXPRESS\sho4_reserve
Важно!
Если SQL Server настроен на прослушивание нестандартного порта (стандартный порт - 1433), то в строке подключения необходимо указать значение этого порта через запятую после имени (или IP адреса) сервера. Например, 192.168.0.100,3456\SQLEXPRESS:sho4 определяет подключение к серверу 192.168.0.100 через порт 3456
Обновление системы
Обновление версии SH4 HeadOffice включает в себя обновление исполняемых файлов, библиотек и базы данных.
Обновление базы данных происходит методом создания новой БД и копирования данных из текущей (рабочей) БД
Для обновления версии необходимо выполнить следующие действия:
- Сделать копию всей рабочей директории SHO4 и резервную копию (backup) рабочей SQL-базы SHO4 (с помощью среды "SQL Server Management Studio")
- Скопировать с FTP ftp://ftp.ucs.ru/storehouse/SH4 HeadOffice дистрибутив новой версии SHO4, распаковать его и заменить в рабочей директории все файлы, за исключением файла rk7tosh4.ini
- Запустить приложение SHO4Admin.ехе, не подключаясь к базе данных, перейти в меню "Прочее" ⇒ "Создать базу данных".
- В окне создания БД заполнить все поля (аналогично шагу 3) - имя новой БД указать отличное от текущей (рабочей) БД и обязательно снять флаг "Заполнить первоначальными данными"
- Прописать имя новой БД в реестре (см. шаг 2)
- Установить соединение с новой (чистой) БД, выбрать в меню "Пользователи" ⇒ "Копировать данные"
- В поле "БД источник" указать имя текущей (рабочей) БД - в этом поле необходимо указать ТОЛЬКО имя БД, без указания имени сервера и экземпляра
- В поле "Файл скриптов" указать файл скрипта, соотв. текущей (рабочей) версии - файл скрипта называется fromA_AA_xx.sql (А_АА - индекс текущей версии) и находится в подкаталоге \upgrade\toB_BB_00 (B_BB - индекс устанавливаемой версии). Например, при обновлении версии 4.22.хх до версии 4.28.хх, необходимо использовать скрипт from4_22_xx.sql из подкаталога upgrade\to4_28_00\
Версия, указанная в названии скрипта, соотв. версии базы данных, а не версии программы. Соответствие версии БД и версии исполняемых файлов можно посмотреть в файле SHO4.xls (ftp://ftp.ucs.ru/storehouse/SH4 HeadOffice/SHO4.xls)
Если в подкаталоге \upgrade\ отсутствует каталог toB_BB_00, это значит, что версия B_BB не содержит специфичных изменений и в процессе обновления необходимо применить скрипт из каталога с индексом, соотв. более ранней и наиболее близкой версии.
Например, для версий 4.50.64, 4.51.66 и 4.52.67 отсутствуют подкаталоги с соотв. индексами - в процессе обновления необходимо использовать скрипты из подкаталога \upgrade\to4_48_49_00
Если в подкаталоге \upgrade\toB_BB_00 отсутствуют скрипты fromA_AA_xx.sql , соотв. текущей версии, необходимо сначала выполнить обновление на более раннюю версию.
Например, при обновлении версии 4.40.51 до версии 4.52.67 сначала надо выполнить скрипт \upgrade\to4_45_00\from4_40_xx.sql, затем скрипт \upgrade\to4_48_49_00\from4_45_xx.sql
Интеграция с R-Keeper
R-Keeper v7
Связь с кассовой системой R-Keeper v7 (далее RK7) обеспечивает наполнение БД SHO4 данными о предприятиях (ресторанах) и товарах (меню). При использовании SHO4 предполагается, что система R-Keeper v7 также сконфигурирована для централизованного управления сетью предприятий (ресторанов).
Для связи SHO4 c RK7 необходимо скопировать в рабочий каталог SHO4 следующие файлы из дистрибутива используемой версии RK7:
- dllman.dll
- errors32.dll
- Netkern.dll
- TCPSOC.dll
- Thread32.dll
- rk7tosh4.dll
- rk7tosh4.ini
Файлы rk7tosh4.dll и rk7tosh4.ini находятся в каталоге \bin\sh4tr\ полного дистрибутива RK7
Если некоторые из перечисленных выше файлов уже присутствуют в рабочем каталоге SHO4, их необходимо перезаписать.
В файле rk7tosh4.ini необходимо прописать имя рабочего сервера справочников RK7 и уникальное имя клиента:
[REFSERVER7]
ServerName = RK7REFSRV
ClientName = SHO4_Client_XXX
В некоторых случаях может потребоваться принудительное преобразование имени сервера справочников в хост - для этого используется секция [TCPDNS] файла rk7tosh4.ini:
[TCPDNS]
RK7REFSRV=192.168.0.1
либо с указание порта сервера справочников:
[TCPDNS]
RK7REFSRV=192.168.0.1:12345
Для импорта данных в приложении SHO4edit.exe переходим в меню "Файл" ⇒ "Импорт" ⇒ "Импорт данных RK7" и устанавливаем необходимые параметры импорта:
Подробная информация по использованию SHO4 содержится в руководстве пользователя, электронный вариант на FTP ftp://ftp.ucs.ru/books/store_house_head-office_user_manual.pdf
Решение проблем
Сложности развертывания системы на 64-х битных ОС
Проблема: Невозможно зарегистрировать midas.dll
Решение: midas.dll необходимо скопировать в директорию {WINDOWS}\SysWow64
Проблема: при запуске SH невозможно выбирать база данных, появляются ошибки типа "недопустимое подключение" или "недопустимая спецификация авторизации" при попытке создать БД.
Сущность проблемы: некорректное определение целевой ветки реестра для 32-х битных приложений в 64-х битной среде.
Решение: вместо стандартной ветки реестра [HKEY_LOCAL_MACHINE\SOFTWARE\UCS\ надо использовать следующую ветку: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\UCS\
Пример:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\UCS\SHO4Editor]
"Db_user"="sho"
"Db_pwd"="ucs"
"DBPath"="127.0.0.1,1433:SHO"
Перенос данных из SH4 в SHO4
Операция переноса данных из локальной базы склада выполняется единоразово!
Последовательность действий:
- С помощью SHO4Admin.exe создать новую базу без заполнения первоначальных данных
- Создать корневую вершину для предприятий с помощью скрипта Создание корневой группы предприятий
- С помощью SHO4edit.exe импортировать предприятия из R-Keeper BackOffice Editor (если используется R-Keeper v6) либо из сервера справочников R-Keeper v7 (меню "Файл" \ "Импорт")
- С помощью SHO4edit.exe импортировать из локального склада словари (операция "Файл" \ "Импорт" \ "Импорт данных SH4")
- Удалить все меню из SHO4 - для этого выполнить два запроса "Удаление меню - 1" и "Удаление меню - 2"
- На всякий случай выполнить запрос "Добавление точки в коды товаров.sql". чтобы в дальнейшем не возникало ошибки неуникальности кодировки товаров
- Если остались не удаленные товары в группе "Меню Ресторана", удалить их вручную
- Установить версию базы, выполнив скрипт "Установка версии БД" - перед выполнение предварительно в скрипте указать корректную версию базы
Для выполнения скриптов можно использовать любую доступную среду, например "SQL Server Management Studio".
После выполненных действий информировать Заказчика о следующем:
- Необходимо связать товары с комплектами вручную (рекомендуется заранее предупредить заказчика о данной операции)
- Проверить и при необходимости переназначить категории на всех товарах из меню ресторана
- Проверить и при необходимости переназначить ставки налогов для всех товаров из меню
- Привести меню и корреспондентов в соответствие с локальными точкам (запреты/разрешения)
Используемые скрипты
Название скрипта | SHO 4.46 и ниже | SHO 4.48 и выше |
---|---|---|
Создание корневой группы предприятий | create procedure dbo.sp_POPULATE_DEPARTS as begin declare @DEPName varchar(47) set @DEPName = 'Корпорация' insert into dbo.DEPARTS ( RID,PARENT_REF,NAME, ISGROUP, DELETED ) values (1,NULL,@DEPName,2,0) end GO set IDENTITY_INSERT dbo.DEPARTS ON GO exec dbo.sp_POPULATE_DEPARTS GO set IDENTITY_INSERT dbo.DEPARTS OFF GO | create procedure dbo.sp_POPULATE_DEPARTS as begin declare @DEPName varchar(47) set @DEPName = 'Корпорация' insert into dbo.sho4DEPARTS ( RID,PARENT_REF,NAME, ISGROUP, DELETED ) values (1,NULL,@DEPName,2,0) end GO set IDENTITY_INSERT dbo.sho4DEPARTS ON GO exec dbo.sp_POPULATE_DEPARTS GO set IDENTITY_INSERT dbo.sho4DEPARTS OFF GO |
Примечание: Если процедура dbo.sp_POPULATE_DEPARTS уже существует в БД, для ее изменения вместо оператора create необходимо использовать оператор alter
Название скрипта | SHO 4.46 и ниже | SHO 4.48 и выше |
---|---|---|
Удаление меню - 1 | create procedure sp_Delete_SubTree (@ROOT_REF integer) as begin declare @RID integer declare cr cursor LOCAL for select RID from dbo.GOODS where EXT_INFO <> 0 open Cr fetch next from Cr into @RID while @@FETCH_STATUS = 0 begin exec dbo.sp_DELETE_GOODS 'Admin',@RID fetch next from Cr into @RID end close cr deallocate cr declare crT cursor LOCAL for select RID from dbo.fn_GoodsTree (@ROOT_REF) where RID <> @ROOT_REF order by IND desc open crT fetch next from crT into @RID while @@FETCH_STATUS = 0 begin delete from dbo.GOODSTREE where RID = @RID fetch next from crT into @RID end close crT deallocate crT end go | create procedure sp_Delete_SubTree (@ROOT_REF integer) as begin declare @RID integer declare cr cursor LOCAL for select RID from dbo.sho4GOODS where EXT_INFO <> 0 open Cr fetch next from Cr into @RID while @@FETCH_STATUS = 0 begin exec dbo.sp_DELETE_GOODS 'Admin',@RID fetch next from Cr into @RID end close cr deallocate cr declare crT cursor LOCAL for select RID from dbo.fn_GoodsTree (@ROOT_REF) where RID <> @ROOT_REF order by IND desc open crT fetch next from crT into @RID while @@FETCH_STATUS = 0 begin delete from dbo.sho4GOODSTREE where RID = @RID fetch next from crT into @RID end close crT deallocate crT end go |
Если процедура sp_Delete_SubTree уже существует в БД, для ее изменения вместо оператора create необходимо использовать оператор alter
Название скрипта | Для любой версии SHO |
---|---|
Удаление меню - 2 | exec sp_Delete_SubTree 2 |
Название скрипта | SHO 4.46 и ниже | SHO 4.48 и выше | |
---|---|---|---|
Добавление символа "точка" в коды (аббревиатуры) товаров | update dbo.GOODS set Abbr_text = Abbr_text+'.' where SUBSTRING ( Abbr_text,Len(Abbr_text),1)<>'.' and ext_info <>0 | update dbo.sho4GOODS set Abbr_text = Abbr_text+'.' where SUBSTRING ( Abbr_text,Len(Abbr_text),1)<>'.' and ext_info <>0 | |
Название скрипта | SHO 4.46 и ниже | SHO 4.48 и выше | |
Установка версии БД | update dbo.DATABASEPARAMS set db_version=43800 | update dbo.sho4DATABASEPARAMS set db_version=44900 |
Проблемы, ошибки и способы их решения 
Данные не экспортируются, в логе только операции login и logout
Описание проблемы:
При рассылке данных по локальным складам ошибок нет, но данные не экспортируются - в логе только две операции login и logout.
Решение:
1.Получаем список всех предприятий в базе и запоминает RID предприятия, по которому не происходит рассылка данных:
select * from departs
2.Определяем количество параметров (строк), которые нужно добавить
select * from repl_map
where depart_ref= <RID предприятия, где точно происходит репликация и смотрим количество строк>
3.Вставляем необходимые строки для предприятия, у которого проблемы
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,1,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,2,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,3,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,4,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,5,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,6,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,7,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,8,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,9,0,0,0)
insert into repl_map (depart_ref,table_id,last_date,pending_date,qerrors) values (<RID предприятия из п.1>,10,0,0,0)
4.Проверяем, что все добавилось
select * from repl_map
where depart_ref = <RID предприятия из п.1>
В некоторых случаях после выполнения операций требуется сделать backup/restore SQL-базы
Зацикливание комплекта
Описание проблемы:
Операция рассылки данных (все словари целиком) заканчивается без явных ошибок, но изменения не отображаются в локальных базах
Решение проблемы:
Для начала необходимо проверить в детализации протокола рассылки, какими операциями заканчивается процесс рассылки - если в конце списка операций отсутствуют операции login и/или logout, это свидетельствует о проблеме "зацикливания" комплекта
Для анализа проблемы необходимо создать две вспомогательные функции в БД. В связи с тем, что начиная с версии 4.48 в наименование таблиц БД добавлен префикс "sho4", скрипт создания функций будет различаться для разных версий:
SHO 4.46 и ниже | SHO 4.48 и выше | |
Функция fn_CompParents1 | create function dbo.fn_CompParents1 ( @CMBASE_REF integer, @LEV integer ) returns @Tree table ( RID integer, IND integer IDENTITY, L integer ) as begin if (@LEV>25) return; declare @ITEM_REF int declare @LL int declare cr cursor local for select b.CMBASE_REF, @LEV+1 from CMITEMS a left join CMHEADERS b on a.CMHEADERS_REF = b.RID where ( a.ITEM_TYPE = 1) and ( a.ITEM_REF = @CMBASE_REF ) group by b.CMBASE_REF insert into @Tree(RID,L) values (@CMBASE_REF,@LEV+1) open cr fetch next from cr into @ITEM_REF,@LL while @@FETCH_STATUS = 0 begin insert into @Tree (RID, L) select RID,L from dbo.fn_CompParents1 (@ITEM_REF,@LL) fetch next from cr into @ITEM_REF,@LL end close cr deallocate cr return end | create function dbo.fn_CompParents1 ( @CMBASE_REF integer, @LEV integer ) returns @Tree table ( RID integer, IND integer IDENTITY, L integer ) as begin if (@LEV>25) return; declare @ITEM_REF int declare @LL int declare cr cursor local for select b.CMBASE_REF, @LEV+1 from sho4CMITEMS a left join sho4CMHEADERS b on a.CMHEADERS_REF = b.RID where ( a.ITEM_TYPE = 1) and ( a.ITEM_REF = @CMBASE_REF ) group by b.CMBASE_REF insert into @Tree(RID,L) values (@CMBASE_REF,@LEV+1) open cr fetch next from cr into @ITEM_REF,@LL while @@FETCH_STATUS = 0 begin insert into @Tree (RID, L) select RID,L from dbo.fn_CompParents1 (@ITEM_REF,@LL) fetch next from cr into @ITEM_REF,@LL end close cr deallocate cr return end |
Функция fn_CheckCmpCicle | create function dbo.fn_CheckCmpCicle() returns @t table ( RID integer, NAME varchar (50), LEV integer ) as begin declare @RID integer declare @NAME varchar (50) declare @LEV integer declare cr cursor local for select RID,NAME from CMBASE open cr fetch next from cr into @RID,@NAME while @@FETCH_STATUS = 0 begin insert into @t (RID,NAME,LEV) select @RID,@NAME,max(L) from dbo.fn_CompParents1 (@RID,0) fetch next from cr into @RID,@NAME end close cr deallocate cr return end | create function dbo.fn_CheckCmpCicle() returns @t table ( RID integer, NAME varchar (50), LEV integer ) as begin declare @RID integer declare @NAME varchar (50) declare @LEV integer declare cr cursor local for select RID,NAME from sho4CMBASE open cr fetch next from cr into @RID,@NAME while @@FETCH_STATUS = 0 begin insert into @t (RID,NAME,LEV) select @RID,@NAME,max(L) from dbo.fn_CompParents1 (@RID,0) fetch next from cr into @RID,@NAME end close cr deallocate cr return end |
Если функция уже существует в БД, для ее изменения вместо оператора create необходимо использовать оператор alter
После создания функций необходимо выполнить запрос для выявления "зацикленных" комплектов - он также будет различным для разных версий SHO4:
SHO 4.46 и ниже | SHO 4.48 и выше | |
Проверочный запрос | select a.*,b.abbr_text, b.ABBR_NUMBER from dbo.fn_CheckCmpCicle() a left join CMBASE b on a.rid=b.rid where a.LEV>20 | select a.*,b.abbr_text, b.ABBR_NUMBER from dbo.fn_CheckCmpCicle() a left join SHO4CMBASE b on a.rid=b.rid where a.LEV>20 |
После выполнения запроса отобразятся проблемные комплекты - необходимо найти эти комплекты в редакторе SHO4 и проверить "зацикленность" (т.е. вхождение комплектов "самих в себя")
Ошибка "DB Error" при импорте данных из RK7
Описание проблемы:
Ошибка вида "DB Error: ..." признак нарушения логической структуры БД SHO4.
Решение проблемы:
Для локализации проблемы в первую очередь необходимо создать новую БД и выполнить в нее импорт данных - если ошибок не будет, значит проблема связана с рабочей БД SHO4.
Класс ошибок "DB Error" достаточно обширный, локализация и исправление может потребовать знания структуры БД и основ языка SQL - рекомендуется создать запрос на трекере с описанием проблемы, вложить скриншоты сообщений и бэкап рабочей БД.
Одна из причин ошибки "DB Error" может быть связана с таблицей [sho4DATABASEPARAMS] - если в этой таблице отсутствует запись или запись некорректная, при импорте данных будет возникать ошибка "DB Error".
Для решения проблемы необходимо заполнить таблицу [sho4DATABASEPARAMS]:
- при необходимости сначала очистить таблицу:
TRANCATE TABLE [sho4DATABASEPARAMS]
- выполнить следующий запрос:
INSERT INTO [sho4DATABASEPARAMS]
( ORGANIZATION, MUNITS_REF, CMUNITS_REF, TMUNITS_REF, CCDATE, BUCCATEG_REF, MAINCATEG_REF, DB_VERSION, REPL_PLDOCS)
values ('',1,6,2,'01.01.1980',2,1,44900,1)
В параметре value необходимо указать текущую версию БД - значение или весь запрос целиком можно посмотреть в файле populateSHO.sql (находится в корне рабочего директории SHO4).
Еще одна из причин ошибки "DB Error" может быть связана с таблицей [sho4DEPARTS] - если в этой таблице у одного из ресторанов вместо кода NULL, при импорте данных будет возникать ошибка "DB Error".
Ошибка "Could not convert variant of type (Null) into type (Integer)"
Описание проблемы:
В SHO4 при выборе "Словари" ⇒ "Предприятия" возникает ошибка "Could not convert variant of type (Null) into type (Integer)" - при нажатии ОК ошибка появляется еще раз и далее открывается форма "Set Depart Form" со списком предприятий, импорт из R-Keeper v7 (далее RK7) при этом выполняется успешно.
Решение проблемы:
Для решения проблемы необходимо выполнить частичное удаление данных (предприятий) в БД SHO4:
- выполнить резервное копирование рабочей базы данных SHO4
с помощью среды SQL Server Management Studio выполнить следующий скрипт для рабочей базы SHO4:
delete from DEP_GOODSTREE go delete from DEP_GOODS go delete from DEP_GOODSPARAMS go delete from REPL_MAP go delete from DEPARTS where PARENT_REF is not null go delete from DEPARTS go create procedure dbo.sp_POPULATE_DEPARTS as begin declare @DEPName varchar(47) set @DEPName = 'Корпорация' insert into dbo.DEPARTS ( RID,PARENT_REF,NAME, ISGROUP, DELETED ) values (1,NULL,@DEPName,2,0) end GO set IDENTITY_INSERT dbo.DEPARTS ON GO exec dbo.sp_POPULATE_DEPARTS GO set IDENTITY_INSERT dbo.DEPARTS OFF GO
SQL- выполнить импорт данных только по предприятиям из RK7, флаг импорт меню должен быть отключен
- проверить в SHHO корректность открытия и наполнения справочника предприятий
- выполнить импорт меню из RK7, при этом обязательно повторно выбрать группу "Меню ресторана" и установить флаг "цены блюд по ресторанам"
- т.к. скрипт удаляет список предприятий из базы SHHO, необходимо заново настроить связь каждого предприятия с соотв. локальным SH4
Слишком большие значение отпускных цен в свойствах товаров
Если после импорта данных из R-Keeper v7 в свойствах товаров отображаются слишком большие значения в полях отпускных цен, следует проверить актуальность библиотеки SHTR.DLL
Восстановление БД SHO4, используя сервер справочников RK7 и БД локального склада SH4
Если по каким-либо причинам БД SHO4 разрушена и/или утеряна и отсутствуют резервные копии, данные можно восстановить из БД сервера справочников RK7 и БД локального склада SH4.
Для этого необходимо выполнить операции, описанные в разделе Перенос данных из SH4 в SHO4, за исключением операций, указанных в п.5, 6 7.
Таким образом, список операций для восстановления БД SHO4 следующий:
- С помощью SHO4Admin.exe создать новую базу без заполнения первоначальных данных
- Создать корневую вершину для предприятий с помощью скрипта Создание корневой группы предприятий
- С помощью SHO4edit.exe импортировать предприятия из R-Keeper BackOffice Editor (если используется R-Keeper v6) либо из сервера справочников R-Keeper v7 (меню "Файл" \ "Импорт")
- С помощью SHO4edit.exe импортировать из локального склада словари (операция "Файл" \ "Импорт" \ "Импорт данных SH4")
- Установить версию базы, выполнив скрипт Установка версии БД - перед выполнение предварительно в скрипте указать корректную версию базы
Содержимое скриптов Создание корневой группы предприятий и Установка версии БД смотрите в разделе "Перенос данных из SH4 в SHO4"
Для выполнения скриптов можно использовать любую доступную среду, например "SQL Server Management Studio".
- Введение
- Состав приложения
- Системные требования
- Установка приложения
- Обновление системы
- Интеграция с R-Keeper
- Решение проблем
- Сложности развертывания системы на 64-х битных ОС
- Перенос данных из SH4 в SHO4
- Используемые скрипты
- Проблемы, ошибки и способы их решения
- Зацикливание комплекта
- Ошибка "Could not convert variant of type (Null) into type (Integer)"
- Слишком большие значение отпускных цен в свойствах товаров
- Восстановление БД SHO4, используя сервер справочников RK7 и БД локального склада SH4