7.3.4.1. Экспорт платежей за охрану объектов юридических лиц
Пакетная операция 'Экспорт платежей за охрану объектов юридических лиц' предназначена для выгрузки платежей за охрану объектов юридических лиц в файл с произвольной структурой (в качестве примера выбран формат файла XML).
В момент формирования пакета выбираются платежи за охрану объектов юридических лиц.
В момент выгрузки пакета формируется файл с информацией о платежах в формате XML. Файл с информацией о платежах можно загрузить в стороннем ПО (например, в 1С).
Импорт пакетной операции
Файл с пакетной операций "Corporate Contract Payment Script.xml" расположен в подкаталоге Script каталога, куда установлена программа CRM Охранная компания.
Импорт пакетной операции из файла выполняется в справочнике пакетных операций.
Поля пакетной операции
Поля пакета отсутствуют.
Поля записи имеют следующую структуру:
Поля операции имеют следующую структуру:
Скрипты пакетной операции
Скрипт модуля создания -> Блок создания пакета имеет вид:
var
FLastPaymentId : integer;
FPaymentId : integer;
FRecordCount : integer;
begin
FLastPaymentId := GetScriptField('LastPaymentId');
SQLOpen('viBillCorporatePayment', 'PaymentId > ' + IntToStr(FLastPaymentId), 'PaymentId');
FRecordCount := SQLRecordCount;
if FRecordCount = 0 then
begin
DialogInform('Создание пакета', 'Нет данных для формирование пакета!');
SQLClose();
Exit;
end;
DialogProgressInit('Создание пакета', FRecordCount);
CreatePacket();
while SQLEOF() = 0 do
begin
FPaymentId := SQLGetInt('PaymentId');
CreateRecord();
SetRecordField('PaymentId', FPaymentId);
SetRecordField('ContractNo', SQLGetStr('ContractNo'));
SetRecordField('ContractName', SQLGetStr('ContractName'));
SetRecordField('PaymentModeName', SQLGetStr('PaymentModeName'));
SetRecordField('DocNo', SQLGetInt('DocNo'));
SetRecordField('PaymentDate', SQLGetDate('PaymentDate'));
SetRecordField('Summa', SQLGetCurrency('Summa'));
SetRecordField('ExternalId', SQLGetStr('ExternalId'));
WriteRecord();
DialogProgressInc();
SQLNext();
end;
SQLClose();
if FPaymentId > FLastPaymentId then
SetScriptField('LastPaymentId', FPaymentId);
WritePacket();
DialogProgressDown();
end;
Скрипты модуля обработки отсутствуют.
Скрипт модуля выгрузки -> Блок выгрузки пакета имеет вид:
var
FPacketNo : integer;
FRecordCount : integer;
begin
FPacketNo := GetPacketNo;
RecordCursorOpen;
FRecordCount := RecordCursorCount;
if FRecordCount = 0 then
begin
DialogInform('Выгрузка пакета', 'Нет данных для выгрузки пакета!');
RecordCursorClose();
Exit;
end;
DialogProgressInit('Выгрузка пакета', FRecordCount);
XMLWriterCreate('d:\corporatecontractpayment_' + IntToStr(FPacketNo) + '.xml', 'Windows-1251', 'CorporateContractPayment');
XMLWriterComment('Платежи за охрану объектов юридических лиц');
while RecordCursorEOF() = 0 do
begin
XMLWriterStartElement('Payment');
XMLWriterAttribute('Id', GetRecordField('PaymentId'));
XMLWriterAttribute('ContractNo', GetRecordField('ContractNo'));
XMLWriterAttribute('PaymentMode', GetRecordField('PaymentModeName'));
XMLWriterAttribute('DocNo', GetRecordField('DocNo'));
XMLWriterAttribute('PaymentDate', GetRecordField('PaymentDate'));
XMLWriterAttribute('Summa', ConvertMoneyToStr(GetRecordField('Summa')));
XMLWriterAttribute('ExternalId', GetRecordField('ExternalId'));
XMLWriterEndElement;
DialogProgressInc();
RecordCursorNext();
end;
RecordCursorClose;
XMLWriterClose;
DialogProgressDown();
end;
Работа с пакетной операцией
В CRM Охранная компания на закладке 'Управление' необходимо нажать кнопку 'Пакетные операции'.
В диалоге выбора пакетных операций необходимо выбрать пакетную операцию 'Экспорт платежей за охрану объектов юридических лиц'.
Пакетная операция подразумевает функционал создания и выгрузки пакета. Обработка пакета не требуется.
В момент формирования пакета выбираются платежи за охрану объектов юридических лиц, код платежа которых больше значения поля пакетной операции 'Последний код платежа'.
После успешного формирования пакета поле пакетной операции 'Последний код платежа' автоматически обновится до значения последнего кода платежа, попавшего в сформированный пакет.
Если в момент формирования пакета новые платежи не найдены, на экране отобразится сообщение 'Нет данных для формирование пакета'.
В момент выгрузки пакета на диске d: (каталог и имя файла можно самостоятельно изменить в скрипте) появится файл формата XML с платежами (например, d:\corporatecontractpayment_1.xml).
При необходимости можно изменить номер последнего кода платежа на более ранний для повторной выгрузки платежей. Для этого в справочнике пакетных операций в редактировании поля 'Последний код платежа' необходимо установить новое значение кода платежа, например:
Пример файла
<?xml version="1.0" encoding="Windows-1251"?>
<CorporateContractPayment>
<!--Платежи за охрану объектов юридических лиц-->
<Payment Id="8136" ContractNo="0149.2" PaymentMode="Безналичный" DocNo="0" PaymentDate="14.03.2020" Summa="3475.00" ExternalId="149" />
<Payment Id="8137" ContractNo="0773.2" PaymentMode="Безналичный" DocNo="0" PaymentDate="14.03.2020" Summa="2250.00" ExternalId="773" />
<Payment Id="8138" ContractNo="0095.2" PaymentMode="Безналичный" DocNo="0" PaymentDate="14.03.2020" Summa="3500.00" ExternalId="95" />
</CorporateContractPayment>