Zero Block
Click "Block Editor" to enter the edit mode. Use layers, shapes and customize adaptability. Everything is in your hands.
Tilda Publishing
create your own block from scratch
Zero Block
Click "Block Editor" to enter the edit mode. Use layers, shapes and customize adaptability. Everything is in your hands.
Tilda Publishing
create your own block from scratch
SQL. Запити, що стосуються чистки бази
Видалення номенклатури, документів, співроібтників, тестових продажів
Інформація по роботі скриптів:
Перед проведенням операції обнулення необхідно зробити бекап бази.
Скрипти необхідно скопіювати в папку: C:\Program Files\iikoRMS\Server\exploded\test
Скрипти запускаються по черзі: другий скрипт запускається тільки після успішного застосування першого та рестарту Томкат
Удаление тестовых продаж (ст. 13)
Скрипт cleanSales.jsp видаляє результати роботи фронтів
http://localhost:8080/resto/test/cleanSales.jsp
Видаляються:

  • Касові зміни, чеки, продані страви.
  • Автоматичні акти реалізації.
  • Нараховані штрафи та премії співробітникам.
  • Явки та розклад співробітників
  • Накази про зміну цін у прейскуранті
  • ·видаляє Акти Розбору
Скрипт не видаляє і не змінює:

· Всі довідники та налаштування, в т.ч. техкарти.
· Складські документи, в т.ч. ручні акти реалізації.
cleanStores.jsp видаляє складські документи
http://localhost:8080/resto/test/cleanStores.jsp)

Корисний у ситуаціях, коли потрібно обнулити всі складські залишки та розпочати облік «з нуля».

Видаляє:
  • Усі складські документи, в т.ч. автоматичні.

НЕ видаляє:
  • Касові зміни, чеки та страви.
  • Нескладські транзакції: штрафи, премії, ручні фінансові проведення тощо.
Важливе доповнення: після використання скриптів потрібно ОБОВ'ЯЗКОВО перестартувати службу сервера Tomcat

Коли скрипти очищення відпрацюють, необхідно видалити папку C:\Program Files\iikoRMS\Server\exploded\test і папку
c:\Program Files\iikoRMS\Server\Tomcat\work\Catalina\, щоб скрипти випадково не запустив користувач повторно.

Якщо ці папки не видалити, це може призвести до втрати даних.

Якщо не допомогли скрипти, а бажання очистити продаж та склади залишилися, то Вам потрібно перейти до наступного варіанту очищення.
Очищення від продажу та складських документів у базі (ст. 22)

Призначення:

Даний SQL скрипт, що видаляє таблиці цілком, краще використовувати для очищення великих БД, тому що:

  • Скрипт працює швидше.
  • Він не призводить до тривалого виконання операції в базі, величезного транзакційного логу та тривалого відкату транзакції у разі переривання чи помилки.
  • Перестворені таблиці будуть порожні. Тоді як таблиці, з яких видалені всі дані, збережуть свій попередній розмір.

Зверни увагу!


Альтернатива DROP TABLE - TRUNCATE TABLE, але т.к. сервер нормально перетворює таблиці, то DROP навіть надійніше і передбачуваніше.

Якщо ви вирішили очистити базу і відразу оновити версію в ній - потрібно замість DROP TABLE зробити TRUNCATE TABLE. Інакше сервер не запуститься.

Скрипт не видаляє інформацію про тестові доставки.

Якщо вам потрібно видалити тестові доставки, зверніться із заявкою на техпідтримку Syrve.


Якщо вам потрібно продовжити роботу в повністю пустій чистій базі без будь-яких старих даних взагалі, це робиться шляхом зупинки Томката, видаленням старої БД і рестартом Томката


Якщо ви зіткнулися з тим, що з якихось причин скрипти очищення продажу та складських документів (минулий крок\варіант очищення) не відпрацьовують взагалі, або частково
можна скористатися нижче описаним способом:
  1. Зупинити службу Tomcat
  2. На терміналах потрібно перейменувати при закритій касовій та особистих змінах папки
  • EntitiesStorage
  • UpdateQueue
  • CashServerInfo.xml - він зберігає інформацію для забезпечення послідовної нумерації касових змін
3. Зніміть бекап бази даних за допомогою SQL Management Studio.

4. Виконайте запит для створення списку таблиць, які можна видалити:

SELECT 'TRUNCATE TABLE '+Name +';'
FROM dbo.sysobjects
WHERE (xtype = 'U')
and Name not in ('AssemblyChart','AssemblyChartItem','DBVersion','entity',
'PreparedAssemblyChart','PreparedAssemblyChartItem','UpgradeScripts','TreeMenuChangeDocument','TreeMenuChangeDocumentItem'
,'PriceListItem','TerminalToken','Street')
ORDER BY 1
SQL-запит згенерує скрипт очищення, актуальний для тієї версії syrve, на основі якої було запущено скрипт.
Результатом цього скрипта буде скрипт, який потрібно скопіювати та виконати для очищення бази.
Даний скрипт залишить у базі всі довідники, номенклатуру, вулиці та накази
Гості БРД будуть видалені.
Для більш кастомного видалення, заведіть заявку на підтримку, додавши свій скрипт і описавши, що ви хочете змінити.

5. Коли запит проведено, запускаємо службу Tomcat, запускаємо бекофіс та перевіряємо.

Скрипт для обрізання бази за датою (ст. 57)

Особливості роботи зі скриптом:

  • Дата обрізки має бути ДО початку періоду.

Це не просто захист від дурня, щоб не видалити надто багато. Після обрізки не можна розширювати період, щоб увімкнути дату обрізки, це призведе до розбіжності собівартості.

  • Баланси щодо контрагентів у версіях до 3.9 не зберігаються. Тобто з дати обрізання баланси постачальників обнуляються, а чи не переносяться.
  • Баг RMS-30701, виправлений 3.9 і вище.

Опис JSP- скрипта для обрізання бази за певною датою:

Процедури обрізки РМС та Чейн не залежать один від одного. Можна обрізати або те, або інше, або те й інше.

Як мінімум версія syrve має бути вищою ніж 3.9 ( нижче написано чому)

Скрипт запускається за адресою

Або якщо сервер на хостингу використовується протокол https:// та порт 443
http://host:port/resto/service/maintance/shrinkDatabase.jsp
Принцип роботи простий: запровадити дату, до якої обрізати, натиснути кнопку, через 2-10 хвилин урізана БД готова.

Порядок дії для оптимального обрізання:
  1. Зупинити томкет.
  2. Зняти бекап.
  3. Зробити період один день для прискорення запуску.
  4. У server.xml змінити порт зі штатного (як у статті 119), щоб нічого не заважало (фронти, беки, обміни)
  5. Запустити томкет.
  6. Запустити скрипт обрізки бази на зміненому раніше порту.
  7. Проконтролювати його роботу як у браузері, так і по логу за словами DBShrinker (Зручніше за все у FAR Manager .
  8. Після завершення роботи скрипта зупинити томкет.
  9. Дефрагментувати та стиснути базу за статтею 294
  10. Повернути на місце порт та період.
  11. Запустити томкет
Видаляються
  • всі історичні дані, які мають дату (документи, транзакції, техкарти, події тощо) до зазначеної дати.
Не видаляються:
  • довідники
  • початкові баланси за рахунками .
Після виконання обов'язково перевірити наявність накладних від користувача Адміністратор

Зверни увагу!


Прибуткові накладні, що створюються скриптом, не можна перепроводити, у тому числі реплікацією!

Вони не валідні: рядки можуть містити негативні кількості товарів, а проводки мають більшу точність, ніж у звичайних накладних, ця інформація втрачається при перепроведенні.

Початкові залишки та собівартість зберігаються у накладні від постачальника «Адміністратор».
При обрізанні дати необхідно вказати дату, на яку потрібно обрізати. Наприклад, потрібно видалити все до 1 липня - ставити дату 01.07.2011.
Віддаляться документи та касові зміни до цієї дати, на 00:00 залишки заведуть прибуткові накладні від імені постачальника Адміністратор.

Відомі проблеми лише для дуже старих версій:
на версія між 2.4.4 - 3.1.10085 обрізка призводила до помилок і база не обрізалася (*)
В базі на SQL Express 2008 R2 може дійти ситуації коли для виконання обрізки немає місця в рамках обмеження в 10 Gb для роботи скрипта.
Відслідковується з висновку на серверний full-log.log:
Caused by: java.sql.SQLException: Could not allocate space for object 'dbo.*'.'*' in database 'Resto' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup

где имя таблицы object 'dbo.*'.'*' может быть любым, например Could not allocate space for object 'dbo.ItemSaleEvent'.'ItemSaleEvent_date' 
Початкові залишки та собівартість зберігаються у накладні від постачальника «Адміністратор».
При обрізанні дати необхідно вказати дату, на яку потрібно обрізати. Наприклад, потрібно видалити все до 1 липня - ставити дату 01.07.2011.
Віддаляться документи та касові зміни до цієї дати, на 00:00 залишки заведуть прибуткові накладні від імені постачальника Адміністратор.

Відомі проблеми лише для дуже старих версій:
на версія між 2.4.4 - 3.1.10085 обрізка призводила до помилок і база не обрізалася (*)
В базі на SQL Express 2008 R2 може дійти ситуації коли для виконання обрізки немає місця в рамках обмеження в 10 Gb для роботи скрипта.

Це нормально, що у нас так швидко у клієнта росте БД?
Усього 2 ресторани, у кожному по 1 активній касі, +3 каса у вихідні та такий обсяг БД. Це нормально?
Відповідь: перегляньте статтю по дефрагментації індексів.

Якщо у вас велика база та період обрізки великий:
Якщо база даних клієнтів дуже велика і є сумніви, що ресурсів серверної машини вистачить для виконання обрізки, то процес обрізки краще проводити за таким сценарієм:
1. Якщо це Чейн, змініть порт, щоб не працювала реплікація на момент обрізки. Якщо це РМС, то розірвіть зв'язок і поміняйте порт. Можливо, є зовнішні служби та інтеграції, які також звертаються до сервера і навантажують його, зміна порту допоможе зняти навантаження.
2. Далі поетапно робіть обрізання невеликими фрагментами, вперше відріжте від крайньої дати обліку, наприклад, 6 місяців.
3. Після успішно "відрізаної" частини перевіряйте, що автоматично сформовані накладні були створені успішно та коректно. У випадку, якщо мережне рішення, звіртеся з даними з РМС. Якщо виникли проблеми, відкотіться до бекапу.
4. У разі успіху на кроці 3 зробіть бекап перед переходом до наступного етапу обрізки. Далі повторіть алгоритм з 2 кроку, якщо потрібно обрізати ще більше даних.
5. За підсумками після успішного обрізання в кілька етапів ви можете повернути порт та період на колишній.