Инструменты пользователя

Инструменты сайта


кассир5:всевнешниемодули:отт

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
кассир5:всевнешниемодули:отт [2020/04/28 10:22]
dzayonchkovskiy
кассир5:всевнешниемодули:отт [2024/04/04 17:42] (текущий)
maimakarov [Общая таблица транзакций (ОТТ)]
Строка 2: Строка 2:
 Модуль предназначен для централизованного хранения транзакций кассира 5 и работы с ними. Модуль предназначен для централизованного хранения транзакций кассира 5 и работы с ними.
  
-**Требования к программам**: 1С:Предприятие версии 8.3.5 или новее, Штрих-М "Кассир v.5" версии 5.1.7.6 или новее.\\+**Требования к программам**: 1С:Предприятие версии 8.3.5 или новее, "Кассир 5" версии 5.1.7.6 или новее.\\
  
 **Преимущества**: доступ к транзакциям всех ПОС, что позволяет подбирать чеки возврата, предоплаты, оплаты кредита и т.п. с других касс, разбитие доступности транзакций по группам ККМ.\\ **Преимущества**: доступ к транзакциям всех ПОС, что позволяет подбирать чеки возврата, предоплаты, оплаты кредита и т.п. с других касс, разбитие доступности транзакций по группам ККМ.\\
Строка 108: Строка 108:
  
 21. По окончании работы с группами ККМ, примените изменения и закройте форму.  21. По окончании работы с группами ККМ, примените изменения и закройте форму. 
 +
 +=====Удаление транзакций=====
 +Автоматической очистки транзакций нет. Очистку необходимо выполнять напрямую в СУБД.\\
 +Для этого необходимо создать хранимую процедуру в БД.\\
 +Это можно сделать в настройках Кассир 5 на вкладке ОТТ, если возникает ошибка, то это нужно сделать вручную в СУБД.\\
 +Для этого необходимо выполнить скрипт создания хранимой процедуры для удаления транзакций:
 +**для MSSQL**:\\
 +<code>SET ANSI_NULLS ON
 +GO
 +SET QUOTED_IDENTIFIER ON
 +GO
 +CREATE OR ALTER PROCEDURE dbo.cleanup_transactions @older_than_days INTEGER, @trans_deleted bigint OUTPUT, @checks_deleted bigint OUTPUT, @error_message nvarchar(max) OUTPUT
 +AS
 +SET NOCOUNT ON;
 +
 +DECLARE @border_code numeric(19, 0);
 +DECLARE @transrows_deleted bigint;
 +DECLARE @checkrows_deleted bigint;
 +
 +IF @older_than_days >= 30
 +BEGIN
 + SET @border_code = (
 + SELECT MAX(t.code)
 + FROM dbo.transactions AS t
 + WHERE t.transactiondate <= DATEADD(day, -@older_than_days, CURRENT_TIMESTAMP));
 +
 + IF @border_code > 0
 + BEGIN
 + DECLARE @TranCounter INT;  
 +    SET @TranCounter = @@TRANCOUNT;
 +
 + IF @TranCounter > 0
 + SAVE TRANSACTION SavePoint;
 + ELSE
 +         BEGIN TRANSACTION;
 +   
 + BEGIN TRY
 + DELETE FROM dbo.transactions
 + WHERE code <= @border_code;
 +
 + SELECT @transrows_deleted = @@ROWCOUNT;
 +
 + DELETE FROM dbo.receipts
 + WHERE startcode <= @border_code;
 +
 + SELECT @checkrows_deleted = @@ROWCOUNT;
 +
 + SET @trans_deleted = @transrows_deleted;
 + SET @checks_deleted = @checkrows_deleted;
 +
 + IF @TranCounter = 0 
 + COMMIT TRANSACTION;
 + END TRY
 + BEGIN CATCH
 + SET @error_message = ERROR_MESSAGE();
 +
 + IF @TranCounter = 0
 + ROLLBACK TRANSACTION;
 + ELSE IF XACT_STATE() = -1
 + ROLLBACK TRANSACTION SavePoint;
 + END CATCH
 + END
 +END
 +ELSE
 + SET @error_message = 'Можно очищать только транзакции старше 30 дней (' + CAST(@older_than_days AS NVARCHAR(10)) + ' < 30)';</code>
 +**для PostgreSQL**:\\
 +<code>CREATE OR REPLACE PROCEDURE dbo.cleanup_transactions(IN older_than_days integer, INOUT trans_deleted bigint, INOUT checks_deleted bigint, INOUT error_message text)
 +    LANGUAGE 'plpgsql'
 +    
 +AS $BODY$
 +DECLARE border_code numeric(19,0);
 +DECLARE transrows_deleted bigint;
 +DECLARE checkrows_deleted bigint;
 +
 +BEGIN
 + IF older_than_days >= 30 THEN
 + SELECT MAX(t.code)
 + INTO border_code
 + FROM dbo.transactions AS t
 + WHERE t.transactiondate <= CURRENT_TIMESTAMP - make_interval(days => older_than_days);
 +
 + IF border_code > 0 THEN
 + BEGIN
 + DELETE FROM dbo.transactions
 + WHERE code <= border_code;
 +
 + GET DIAGNOSTICS transrows_deleted = ROW_COUNT;
 +
 + DELETE FROM dbo.receipts
 + WHERE startcode <= border_code;
 +
 + GET DIAGNOSTICS checkrows_deleted = ROW_COUNT;
 +
 + trans_deleted = transrows_deleted;
 + checks_deleted = checkrows_deleted;
 + EXCEPTION WHEN OTHERS THEN
 + GET STACKED DIAGNOSTICS error_message = MESSAGE_TEXT;
 + END;
 + END IF;
 + ELSE
 + error_message = 'Можно очищать только транзакции старше 30 дней (' || CAST(older_than_days AS text) || ' < 30)';
 + END IF;
 +END$BODY$;</code>
 +
 +
  
  
кассир5/всевнешниемодули/отт.1588069360.txt.gz · Последнее изменение: 2020/04/28 10:22 — dzayonchkovskiy