Важно! Если используется обрезание базы данных SH (любым способом), у которой настроена связка с 1С редакции 3.0 (как здесь - http://support.ucs.ru/ru/node/8219#header-6) - необходимо после успешной обрезки в SH ЗАЧИСТИТЬ старый "код базы" 1С ("Сервис\Собственные реквизиты"), а в настройках 1С прописать НОВЫЙ код 1С. Иначе произойдет РАССИНХРОНИЗАЦИЯ баз данных! 

Ручное удаление данных

Важно: Перед выполнением любой операции, связанной с удалением данных, обязательно выполняйте резервное копирование базы данных!

Вариант №1

  • строим ведомость остатков по складам
  • копируем их в приходные накладные, приходные накладные делаем активными
  • обязательно проверяем чтобы приходные накладные, созданные в предыдущем шаге, стояли первыми в предполагаемом периоде, который остается в базе
  • строим список документов без дат со всеми опциями в фильтре и пустыми значениями в полях поставщики/получатели
  • выделяем все накладные до этих накладных и нажимаем кнопку "Удалить накладные"
  • удаляем документы расхода блюд

Вариант №2  (если накладных много)

  • строим ведомость остатков по складам
  • копируем их в приходные накладные, приходные накладные делаем активными
  • строим расход блюд, выделяем его и удаляем документы, связанные с расходом блюд
  • после удаления снова выделяем весь расход блюд и удаляем
  • выделяем все накладные до этих накладных и нажимаем кнопку "Удалить накладные"

Вариант №3 (полное удаление документов)

  • строим ведомость остатков по складам
  • копируем их в приходные накладные, приходные накладные делаем активными
  • копируем полученные накладные в xml-файлы
  • выполняем резервное копирование базы данных
  • в конфигурационном файле сервера склада \SDBSrv\SH_CRTDB.ini  в секции [Options] прописываем параметр DelDocs=1 (если секция отсутствует, добавляем ее вручную)
  • выполняем восстановление базы из резервной копии
  • подключаемся к восстановленной базе данных и копируем накладные, сохранененые ранее в xml-файлы
  • в файле \SDBSrv\SH_CRTDB.ini  в секции [Options] устанавливаем параметр DelDocs=0

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

Автоматическое удаление данных

Важно: Перед выполнением любой операции, связанной с удалением данных, обязательно выполняйте резервное копирование базы данных!

Общая информация

Автоматическое удаление данных выполняется с помощью приложения ShCut.exe.

Дистрибутив приложения можно загрузить с FTP ftp://ftp.ucs.ru/storehouse/sh4/shCut/

Особенности приложения ShCut:

  • остатки сохраняются на указанную дату
  • остаткии и другие поправочные документы создаются с соблюдением очередей FIFO

Рекомендации по использованию:

  • рекомендуется использовать приложение ShCut с версиями склада 4.64 и выше
  • удаление данных рекомендуется выполянть только по запросу Заказачика либо в случае каких-либо технических ограничений системы (например, при достижении предельного размера базы данных 1,8 Гб)
  • если удаляемый период слишком большой, рекомендуется вначале использовать ручной вариант полного удаления данных, а затем периодически использовать приложение ShCut. Связано это с тем, что приложение ShCut сохраняет очереди FIFO и при необходимости может автоматически создавать доп. поправочные документы (эти документы будут созданы до даты начала удаляемого периода) - таким образом, чем больше информации в базе данных, тем больше поправочных документов останется после использования приложения ShCut (созданные документы необходимы для формирования остатков по FIFO и для всех документов будет установлен корреспондент "Входящие остатки")

Сервер склада версии 4.95.ххх и ниже

Примечание: Версия сервера склада определяется версией библиотеки \SDBSrv\ShServ.dll.

Важно: Удаление данных необходимо выполнять на дополнительном сервере склада, специально созданном для этих целей.

Порядок удаления данных для серверов версии 4.95.ххх и ниже:

  • выполнить резервное копирование рабочей базы данных
  • создать дополнительный сервер без создания базы данных
  • выполнить восстановление резервной копии рабочей БД на дополнительном сервере
  • в восстановленной базе данных создать спец. корреспондента "Входящие остатки"
  • проверить восстановленную базу данных на ошибки с помощью приложения \SH4\Sdbman.exe или \SH4\Shc.exe
  • скопировать приложение ShCut.ехе в рабочую директорию \SH4 на любом клиентском месте (рекомендуется использовать клиентскую часть на компьютере, где работает сервер склада)
  • в конфигурации клиентской части добавить подключение к дополнительному серверу склада, созданному ранее
  • запустить приложение ShCut.ехе и подключиться к дополнительному серверу:

  • в поле "Начало рабочего периода" установить дату, на которую будут сформированы входящие остатки (все документы до указанной даты будут удалены)
  • в поле "Корреспондент" выбрать корреспондента для формирования накладных (например, "Входящие остатки")
  • нажать кнопку "Установить рабочий период" и дождаться окончания процесса удаления данных
  • для уменьшения размера базы данных последовательно выполнить операцию резервного копирования и восстановление из резерной копии для обработанной базы данных
  • совместно с Заказчиком сравнить остатки в текущей и обработанной базах данных
  • проверить обработанную базу данных на ошибки с помощью приложения \SH4\Sdbman.exe или \SH4\Shc.exe
  • если остатки сходятся и ошибок не обнаружено, настроить обработанную базу данных в качестве рабочей

Сервер склада версии 4.95.хх и выше

Примечание: Версия сервера склада определяется версией библиотеки \SDBSrv\ShServ.dll.

Важно: Удаление данных необходимо выполнять на дополнительном сервере склада, специально созданном для этих целей.

Для удаления накладных в базе данных сервера склада 4.95.ххх и выше необходимо использовать версию ShCut.exe 4.96.276 и выше.

В версии ShCut 4.96.276 появились изменения, связанные с использованием алкогольной декларации.

При использовании несоотв. версии сервера склада и/или версии приложения ShCut, будет возникать ошибка при попытке подключения к серверу склада, например:

Порядок удаления данных для серверов версии 4.95.ххх и выше:

  • выполнить резервное копирование рабочей базы данных
  • создать дополнительный сервер без создания базы данных
  • если версия рабочего сервера 4.95.ххх, необходимо выполнить следующие действия:
    • остановить сервер
    • заменить в директории сервера \SDBSrv файлы ShServ.dll и Sdbserv.exe - обновленные файлы можно взять из дистрибутива серверной части версии 4.98.ххх и выше
    • запустить сервер
  • выполнить восстановление резервной копии рабочей БД на дополнительном сервере
  • в восстановленной базе данных создать дополнительный (виртуальный) склад с отличительным названием, например "Виртуальный склад"
  • в восстановленной базе данных создать спец. корреспондента "Входящие остатки"
  • проверить восстановленную базу данных на ошибки с помощью приложения \SH4\Sdbman.exe или \SH4\Shc.exe
  • в восстановленной базе данных с помощью приложения \SH4\Sdbman.exe снять ограничения на работу с отрицательными остатками (меню "Прочее" ⇒ "Ограничения на работу с отрицательными остатками ..."):

  • скопировать приложение ShCut.ехе в рабочую директорию \SH4 на любом клиентском месте (рекомендуется использовать клиентскую часть на компьютере, где работает сервер склада)
  • в конфигурации клиентской части добавить подключение к дополнительному серверу склада, созданному ранее
  • запустить приложение ShCut.ехе и подключиться к дополнительному серверу:

  • в поле "Начало рабочего периода" установить дату, на которую будут сформированы входящие остатки (все документы до указанной даты будут удалены)
  • в поле "Корреспондент остатков" выбрать корреспондента для формирования накладных (например, "Входящие остатки")
  • в поле "Склад поставщика в/п" выбрать созданный ранее доп. склад (например, "Виртуальный склад")

Примечание: Опцию "Только проверить ссылки" устанавливать не требуется - это сервисная функция.

  • нажать кнопку "Установить рабочий период" и дождаться окончания процесса удаления данных
  • после появления сообщения "Дата рабочего периода успешно установлена" проверить последние записи в лог-файле сервера (расположен в директории сервера \SDBSrv)

Пример записей в лог-файле сервера, созданных в процессе удаления данных:

Exception EmptyCm processing doc К___3922
Exception EmptyCm processing doc К___46
22.05.2013 15:45:27- Exp docs deletion ...
22.05.2013 15:45:43- Doc refs deletion ...
22.05.2013 15:50:32- Doc specs deletion ...
22.05.2013 15:51:44- Docs deletion ...
22.05.2013 15:59:17- Fifo data deletion ...
22.05.2013 15:59:41- Fifo queues building ...
22.05.2013 15:59:43- Fifo static data building ...
22.05.2013 15:59:43- SysFlag = 1
22.05.2013 15:59:43- Refs checking ...
22.05.2013 15:59:44- Attr depart checking ...
22.05.2013 15:59:44- Problem queues search ...
Ламбруско Медичи бел. Склад-бар
Хейнекен Бар №3 Боулинг
Золотой Фазан Бар №3 Боулинг
Бочкарев светлое Бар №3 Боулинг
Бочкарев светлое Бар №2 Бильярд
22.05.2013 15:59:45- Docs datestamp checking ...
22.05.2013 15:59:48- Docs creation ...
Exception EmptyCm processing doc К___38
22.05.2013 15:59:54- Exp docs deletion ...
22.05.2013 16:00:02- Doc refs deletion ...
22.05.2013 16:01:33- Doc specs deletion ...
22.05.2013 16:02:05- Docs deletion ...
22.05.2013 16:03:59- Fifo data deletion ...
22.05.2013 16:04:12- Fifo queues building ...
22.05.2013 16:04:13- Fifo static data building ...
22.05.2013 16:04:13- IDocs deletion ...
22.05.2013 16:04:13- *** CutDocs completed ***
22.05.2013 16:24:08- Logout. User=Admin, id=5, comp.name=W8D.

Обращать внимание следует на записи, которые следуют за сообщением "Problem queues search ...":

22.05.2013 15:59:44- Problem queues search ...
Ламбруско Медичи бел. Склад-бар
Хейнекен Бар №3 Боулинг
Золотой Фазан Бар №3 Боулинг
Бочкарев светлое Бар №3 Боулинг
Бочкарев светлое Бар №2 Бильярд

Наличие таких записей говорит о проблемах с расхождением остатков, которые не могут быть автоматически разрешены сервером.

В лог-файле сервера перечисляются проблемные очереди (Товар + Склад) - для разрешения проблемы необходимо вручную сопоставить/исправить остатки по указанным товарам.

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

  • для уменьшения размера базы данных последовательно выполнить операцию резервного копирования и восстановление из резерной копии для обработанной базы данных
  • совместно с Заказчиком сравнить остатки в текущей и обработанной базах данных
  • проверить обработанную базу данных на ошибки с помощью приложения \SH4\Sdbman.exe или \SH4\Shc.exe
  • если остатки сходятся и ошибок не обнаружено, настроить обработанную базу данных в качестве рабочей

Особенности удаления жесткосвязанных документов

 В некоторых случаях при удалении накладных с помощью приложения ShCut версии 4.96.ххх может происходить автоматический сдвиг даты, на которую формируются входящие остатки (обсуждение в трекере http://tracker.ucs.ru:8080/redmine/issues/27950)

При анализе лог-файла сервера могут быть обнаружены записи следующего типа:

 48757 11.11.2010 Адреналин <- 1113694458 31.08.2012 Адреналин
 48757 11.11.2010 Адреналин <- 1113694458 31.08.2012 Адреналин
 48777 09.11.2010 Пирожное "Эксклюзив" <- 49102 15.11.2010 Пирожное "Эксклюзив"
 48619 08.11.2010 Пирожное "Эксклюзив" <- 48627 09.11.2010 Пирожное "Эксклюзив"
 46805 15.10.2010 Пирожное "Нюаж шоколад" <- 49102 15.11.2010 Пирожное "Нюаж шоколад"
Причиной такой ситуации являются жестко связанные между собой документы, что фактически приводит к разрыву очереди FIFO.
 
Информация для понимания ситуации:
  • например, необходимо удалить накладные по дату DD.MM.YYYY
  • если существует жесткосвязанная пара документов, обе части которой находятся после даты DD.MM.YYYY, это не влияет на процесс удаления накладных
  • если существует жесткосвязанная пара документов, обе части которой находятся до даты DD.MM.YYYY, это не влияет на процесс удаления накладных
  • если существует жесткосвязанная пара документов где, например, приходная накладная "ПН" - до даты DD.MM.YYYY, а расходная накладная "РН" после даты DD.MM.YYYY, то ShCut будет выполнять удаление только по дату приходной накладной  "ПН", т.к. нельзя "расцепить" документы "ПН" и "РН"
  • если найдена такая пара "ПН"⇔ "РН", ShCut устанавливает дату DD.MM.YYYY соотв. дате документа "ПН"
  • далее процесс продолжается в том же ключе - дата удаления документов сдвигается назад, после чего снова проверяется, есть ли связанные документы уже относительно новой даты и т.д.

Итог: Чтобы выполнить удаление накладных по требуемую дату  DD.MM.YYYY,  достаточно избавиться от всех жесткосвязанных пар документов "ПН"⇔ "РН", где дата документа "ПН" до даты DD.MM.YYYY, а дата документа "РН" после даты  DD.MM.YYYY