Удаление документов из SH4
Ручное удаление данных
Важно!
Перед выполнением любой операции, связанной с удалением данных, обязательно выполняйте резервное копирование базы данных!Вариант №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.ххх и ниже
Порядок удаления данных для серверов версии 4.95.ххх и ниже:
- выполнить резервное копирование рабочей базы данных
- создать дополнительный сервер без создания базы данных
- выполнить восстановление резервной копии рабочей БД на дополнительном сервере
- в восстановленной базе данных создать спец. корреспондента "Входящие остатки"
- проверить восстановленную базу данных на ошибки с помощью приложения \SH4\Sdbman.exe или \SH4\Shc.exe
- скопировать приложение ShCut.ехе в рабочую директорию \SH4 на любом клиентском месте (рекомендуется использовать клиентскую часть на компьютере, где работает сервер склада)
- в конфигурации клиентской части добавить подключение к дополнительному серверу склада, созданному ранее
- запустить приложение ShCut.ехе и подключиться к дополнительному серверу:
- в поле "Начало рабочего периода" установить дату, на которую будут сформированы входящие остатки (все документы до указанной даты будут удалены)
- в поле "Корреспондент" выбрать корреспондента для формирования накладных (например, "Входящие остатки")
- нажать кнопку "Установить рабочий период" и дождаться окончания процесса удаления данных
- для уменьшения размера базы данных последовательно выполнить операцию резервного копирования и восстановление из резервной копии для обработанной базы данных
- совместно с Заказчиком сравнить остатки в текущей и обработанной базах данных
- проверить обработанную базу данных на ошибки с помощью приложения \SH4\Sdbman.exe или \SH4\Shc.exe
- если остатки сходятся и ошибок не обнаружено, настроить обработанную базу данных в качестве рабочей
Сервер склада версии 4.95.хх и выше
Для удаления накладных в базе данных сервера склада 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)
Пример записей в лог-файле сервера, созданных в процессе удаления данных:
Обращать внимание следует на записи, которые следуют за сообщением "Problem queues search ...":
Наличие таких записей говорит о проблемах с расхождением остатков, которые не могут быть автоматически разрешены сервером.
В лог-файле сервера перечисляются проблемные очереди (Товар + Склад) - для разрешения проблемы необходимо вручную сопоставить/исправить остатки по указанным товарам.
Для анализа ситуации с расхождением можно использовать отчет "Остатки по приходам" - причиной, как правило, является невнимательное использование операции жесткого связывания расхода с приходом.
- для уменьшения размера базы данных последовательно выполнить операцию резервного копирования и восстановление из резервной копии для обработанной базы данных
- совместно с Заказчиком сравнить остатки в текущей и обработанной базах данных
- проверить обработанную базу данных на ошибки с помощью приложения \SH4\Sdbman.exe или \SH4\Shc.exe
- если остатки сходятся и ошибок не обнаружено, настроить обработанную базу данных в качестве рабочей
Особенности удаления жестко связанных документов
В некоторых случаях при удалении накладных с помощью приложения ShCut версии 4.96.ххх может происходить автоматический сдвиг даты, на которую формируются входящие остатки (обсуждение в трекере — http://tracker.ucs.ru/issues/27950
При анализе лог-файла сервера могут быть обнаружены записи следующего типа:
Причиной такой ситуации являются жестко связанные между собой документы, что фактически приводит к разрыву очереди 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