Введение

Система 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 (бесплатная версия), разрядность не имеет значения.

Системные требования

Серверная частьLink to Серверная часть

Требования к серверной части определяются требованиями к СУБД, с которой будет работать SHO4 - ниже описаны требования и рекомендации для СУБД SQL Server 2012, приведенные на оф. сайте Microsoft https://msdn.microsoft.com/ru-ru/library/ms143506(v=sql.110).aspx

Следующие требования и рекомендации относятся как к 32-разрядной, так и к 64-разрядной версиям SQL Server 2012.

Общие рекомендацииLink to Общие рекомендации

  • Рекомендуется запускать 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 через клиент службы терминалов не поддерживается

Требования к оборудованию

Компонент

Требования

Память (ОЗУ)

Минимальные:

  • Экспресс-выпуски: 512 МБ
  • Все другие выпуски: 1 ГБ

Рекомендуемые:

  • Экспресс-выпуски: 1 ГБ
  • Все другие выпуски: Для обеспечения оптимальной производительности требуется не менее 4 ГБ с последующим увеличением по мере роста размера базы данных.

Быстродействие процессора

Минимальные:

  • процессор x86: 1,0 ГГц
  • процессор x64: 1,4 ГГц

Рекомендуемые: 2,0 ГГц и выше

Тип процессора

  • процессор x64: AMD Opteron, AMD Athlon 64, Intel Xeon с поддержкой Intel EM64T, Intel Pentium IV с поддержкой EM64T.
  • процессор x86: Процессор, совместимый с Pentium III или выше

Жесткий диск

Для SQL Server 2012 требуется как минимум 6 ГБ свободного места на диске

Требования к операционной системеLink to Требования к операционной системе

Полный перечень версий и редакций ОС Windows, совместимых с SQL Server 2012, приведен на сайте Microsoft https://msdn.microsoft.com/ru-ru/library/ms143506(v=sql.110).aspx

Клиентская частьLink to Клиентская часть

  • ОС Windows XP Professional SP3 и выше
  • 32-разрядный (x86) или 64-разрядный (x64) процессор с тактовой частотой 1 гигагерц (ГГц) или выше
  • 512 мегабайт (МБ) (для 32-разрядной системы) или 1 ГБ (для 64-разрядной системы) оперативной памяти (ОЗУ)
  • 100 мегабайт (МБ) свободного пространства на жестком диске

Установка приложения

Создание пользователя SQL ServerLink to Создание пользователя SQL Server

Все модули SHO4 для работы требуют подключения к БД MSSQL -  можно использовать встроенную учетную запись 'sa', но рекомендуется создать отдельного пользователя, от имени которого будут осуществляться все обращения к серверу MSSQL.

Для создание нового пользователя MSSQL необходимо запустить среду "SQL Server Management Studio", выбрать рабочий экземпляр SQL-cервера и перейти в раздел Безопасность ⇒ Имена входа. Вызвать меню по правой кнопке мыши и выбрать пункт "Создать имя входа ...". 

В разделе "Общие" необходимо указать имя входа, например sho4, установить переключатель в положение "Проверка подлинности SQL Server" , ввести пароль и подтверждение пароля, убрать опцию "Требовать использования политики паролей". Остальные параметры оставляем по умолчанию

При создании пользователя имя входа и пароль должны быть разными - это требование политики безопасности MS SQL Server!

Далее переходим в раздел "Серверные роли", отмечаем все доступные роли и подтверждаем создание пользователя нажатием кнопки "ОК"

Установка приложенийLink to Установка приложений

Для запуска клиентских приложений 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.

Создание базы данныхLink to Создание базы данных

Для создания базы данных запустите приложение 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.

Создание предприятияLink to Создание предприятия

Предприятие - это единица, которая определяет локальный ресторан. При создании базы данных и заполнении ее первоначальными данными создается только одна корневая группа предприятий с названием "Корпорация" - вы можете изменить ее. 

Если SHO4 планируется использовать совместно с RK7 или RBO, предприятия НЕ ДОЛЖНЫ создаваться вручную - они будут сформированы автоматически при импорте данных из этих приложений.

Создание роли с ограниченными правамиLink to Создание роли с ограниченными правами

Для корректной работы SHO4 в удаленных (локальных) складах пользователи не должны иметь возможности редактировать основные словари.

Для этого необходимо создать специальную роль в локальном SH4 и назначить всем пользователям эту роль.

Создание роли:

  1. Запустите Sdb Server manager (Sdbman.exe)
  2. Выберите пункт меню "Прочее" ⇒ "Выполнить запрос"
  3. В поле "Процедура:" введите CreateHoRole, а в поле "Библиотека:" выберите библиотеку SH_CRTDB.DLL из рабочей директории локального SH4 (должен быть указан полный путь)
  4. Выполните процедуру с помощью меню "Прочее" ⇒ "Выполнить" либо выберите соответствующую иконку "Выполнить" на панели задач
  5. Если процедура выполнена успешно, на закладке "Результаты запросы" будет выдано сообщение "Процедура выполнена успешно"

В итоге будет создана роль "Head office",  которую нужно назначить всем пользователям.

Если в локальном складе были созданы другие роли, отличные от роли "Public", и их нужно сохранить, необходимо использовать процедуру AlterHoRole, которая позволяет установить необходимые права для уже созданной роли (или ролей).

Выполнение этой процедуры аналогично вышеописанному процессу. 

Выполнение процедуры AlterHoRole затрагивает все существующие роли!

Примечание: Процедуры CreateHoRole и AlterHoRole доступны начиная с версии SH 4.38.62

Настройка импорта данных (ImportRK.exe) в локальном складеLink to Настройка импорта данных (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 HeadOfficeLink to Установка дополнительного (удаленного) рабочего места 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 включает в себя обновление исполняемых файлов, библиотек и базы данных.

Обновление базы данных происходит методом создания новой БД и копирования данных из текущей (рабочей) БД

Для обновления версии необходимо выполнить следующие действия:

  1. Сделать копию всей рабочей директории SHO4 и резервную копию (backup) рабочей SQL-базы SHO4 (с помощью среды "SQL Server Management Studio")
  2. Скопировать с FTP ftp://ftp.ucs.ru/storehouse/SH4 HeadOffice дистрибутив новой версии SHO4, распаковать его и заменить в рабочей директории все файлы, за исключением файла rk7tosh4.ini
  3. Запустить приложение SHO4Admin.ехе, не подключаясь к базе данных, перейти в меню "Прочее" ⇒ "Создать базу данных".
  4. В окне создания БД заполнить все поля (аналогично шагу 3) - имя новой БД указать отличное от текущей (рабочей) БД и обязательно снять флаг "Заполнить первоначальными данными"
  5. Прописать имя новой БД в реестре (см. шаг 2)
  6. Установить соединение с новой (чистой) БД, выбрать в меню "Пользователи" ⇒ "Копировать данные"
  7. В поле "БД источник" указать имя текущей (рабочей) БД - в этом поле необходимо указать ТОЛЬКО имя БД, без указания имени сервера и экземпляра
  8. В поле "Файл скриптов" указать файл скрипта, соотв. текущей (рабочей) версии - файл скрипта называется 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 v7Link to 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-х битных ОСLink to Сложности развертывания системы на 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 в SHO4Link to Перенос данных из SH4 в SHO4

Операция переноса данных из локальной базы склада выполняется единоразово!

Последовательность действий:

  1. С помощью SHO4Admin.exe создать новую базу без заполнения первоначальных данных
  2. Создать корневую вершину для предприятий с помощью скрипта Создание корневой группы предприятий
  3. С помощью SHO4edit.exe импортировать предприятия из R-Keeper BackOffice Editor (если используется R-Keeper v6) либо из сервера справочников R-Keeper v7 (меню "Файл" \ "Импорт")
  4. С помощью SHO4edit.exe импортировать из локального склада словари (операция "Файл" \ "Импорт" \ "Импорт данных SH4")
  5. Удалить все меню из SHO4 - для этого выполнить два запроса "Удаление меню - 1" и "Удаление меню - 2"
  6. На всякий случай выполнить запрос "Добавление точки в коды товаров.sql". чтобы в дальнейшем не возникало ошибки неуникальности кодировки товаров
  7. Если остались не удаленные товары в группе "Меню Ресторана", удалить их вручную
  8. Установить версию базы, выполнив скрипт "Установка версии БД" - перед выполнение предварительно в скрипте указать корректную версию базы

Для выполнения скриптов можно использовать любую доступную среду, например "SQL Server Management Studio".

После выполненных действий информировать Заказчика о следующем:

  • Необходимо связать товары с комплектами вручную (рекомендуется заранее предупредить заказчика о данной операции)
  • Проверить и при необходимости переназначить категории на всех товарах из меню ресторана
  • Проверить и при необходимости переназначить ставки налогов для всех товаров из меню
  • Привести меню и корреспондентов в соответствие с локальными точкам (запреты/разрешения) 

Используемые скриптыLink to Используемые скрипты

Название скрипта

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

Проблемы, ошибки и способы их решения Link to Проблемы, ошибки и способы их решения 

Данные не экспортируются, в логе только операции login и logout

Описание проблемы:

При рассылке данных по локальным складам ошибок нет, но данные не экспортируются - в логе только две операции login и logout.

Решение:

1.Получаем список всех предприятий в базе и запоминает RID предприятия, по которому не происходит рассылка данных:

select * from departs
SQL

2.Определяем количество параметров (строк), которые нужно добавить

select * from repl_map
where depart_ref= <RID предприятия, где точно происходит репликация и смотрим количество строк>
SQL

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)
SQL

4.Проверяем, что все добавилось

select * from repl_map
where depart_ref = <RID предприятия из п.1>
SQL

В некоторых случаях после выполнения операций требуется сделать backup/restore SQL-базы

Зацикливание комплектаLink to Зацикливание комплекта

Описание проблемы:

Операция рассылки данных (все словари целиком) заканчивается без явных ошибок, но изменения не отображаются в локальных базах

Решение проблемы:

Для начала необходимо проверить в детализации протокола рассылки, какими операциями заканчивается процесс рассылки - если в конце списка операций отсутствуют операции 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)"Link to Ошибка "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

Слишком большие значение отпускных цен в свойствах товаровLink to Слишком большие значение отпускных цен в свойствах товаров

Если после импорта данных из R-Keeper v7 в свойствах товаров отображаются слишком большие значения в полях отпускных цен, следует проверить актуальность библиотеки SHTR.DLL

Восстановление БД SHO4, используя сервер справочников RK7 и БД локального склада SH4Link to Восстановление БД SHO4, используя сервер справочников RK7 и БД локального склада SH4

Если по каким-либо причинам БД SHO4 разрушена и/или утеряна и отсутствуют резервные копии, данные можно восстановить из БД сервера справочников RK7 и БД локального склада SH4.

Для этого необходимо выполнить операции, описанные в разделе Перенос данных из SH4 в SHO4, за исключением операций, указанных в п.5, 6 7.

Таким образом, список операций для восстановления БД SHO4 следующий:

  1. С помощью SHO4Admin.exe создать новую базу без заполнения первоначальных данных
  2. Создать корневую вершину для предприятий с помощью скрипта Создание корневой группы предприятий
  3. С помощью SHO4edit.exe импортировать предприятия из R-Keeper BackOffice Editor (если используется R-Keeper v6) либо из сервера справочников R-Keeper v7 (меню "Файл" \ "Импорт")
  4. С помощью SHO4edit.exe импортировать из локального склада словари (операция "Файл" \ "Импорт" \ "Импорт данных SH4")
  5. Установить версию базы, выполнив скрипт Установка версии БД - перед выполнение предварительно в скрипте указать корректную версию базы

Содержимое скриптов  Создание корневой группы предприятий и Установка версии БД смотрите в разделе "Перенос данных из SH4 в SHO4"

Для выполнения скриптов можно использовать любую доступную среду, например "SQL Server Management Studio".