Введение

В статье описана ситуация поломки базы, когда в ней появляется блюдо с нулевым кодом.

Пример подобного поведения в кубическом отчете:

Возможные причины:

  1. Потеря связи и рассинхронизация между сервером справочников/отчетов и базой данных SQL
  2. Откат базы сервера справочников/отчетов на состояние, когда проданных блюд еще не было в меню менеджерской станции

Поиск причины ошибки

Первым делом необходимо выяснить причину ошибки. 

  1. Откройте SQL Server Management Studio и выполните запрос вашей базе данных:

    select distinct sifr from SESSIONDISHES where SIFR not in(select sifr from MENUITEMS)
    SQL
  2. Запрос показывает проданные блюда, которых нет в меню. В моем случае нашлось одно блюдо.
  3. Далее поиском в менеджерской станции проверьте, есть ли блюда с такими идентификаторами

 Если блюда есть, значит у нас случай №1. Решить проблему можно выгрузив справочники в базу данных SQL. Об этом читайте ниже.

Исправление для случая №1

Для этого:

  1. Перейдите в меню Сервис > Экспорт данных > Экспорт в другую БД
  2. Укажите параметры соединения, логин и пароль
  3. Проставьте галочки по умолчанию, убрав галочку у Накопительных данных. Если галку оставить — данные о продажах перезапишутся
  4. Нажмите кнопку Проверить и затем Ok
  5. Дождитесь окончания экспорта.

Если после этих действий блюдо есть в менеджерской станции, но отсутствует в базе SQL, создайте задачу для службы поддержки.

Исправление для случая №2

Если блюд нет и в менеджерской, значит случай №2 — базу сервера справочников/отчетов откатили на состояние, когда эти блюда еще не были созданы. Для исправления:

  1. Вспомнить, что это за блюда: цену, название и прочие данные
  2. Создайте в менеджерской станции новые блюда по параметрам из предыдущего пункта
  3. Выполните к SQL-базе запрос из поля ниже. Одному блюду — один запрос. То есть, для каждого блюда сделайте строку со старым и новым идентификатором блюда

    update sessiondishes set sifr=111111 where sifr=1000979
    SQL

    где 1000979 – идентификатор старого блюда, которое отсутствует в базе rk7.udb, а 111111 — новое блюдо которое создали в менеджерской станции.

  4. Готово. Теперь в кубовых отчетах будет фигурировать созданные нами блюда вместо блюд с нулевым кодом.