Показать сообщение отдельно
Старый 27.08.2021, 18:19   #4  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
X++:
static void eglaItemAttachment(Args _args)
{
    DocuRef             docuRef,docuRefCur;
    InventTable         inventTable,inventTableCur;
    DocuValue           docuValue,docuValueCur;
    str                 filePath;
    int                 record;
    ;

    try
    {

        while select inventTableCur
        where inventTableCur.dataAreaId == '116' && inventTableCur.ItemId like "610*"
        {
            while select docuRefCur
                where docuRefCur.RefRecId  == inventTableCur.RecId
                && docuRefCur.RefCompanyId == inventTableCur.dataAreaId
                && docuRefCur.RefTableId   == inventTableCur.TableId
            {
                select firstOnly docuValueCur
                        where docuValueCur.RecId == docuRefCur.ValueRecId;

                filePath = docuRefCur.completeFilename();
                changeCompany('101')
                {
                    select firstOnly inventTable
                    where inventTable.ItemId == inventTableCur.ItemId
                    && inventTable.dataAreaId == '101';

                    if (inventTable.RecId)
                    {
                        ttsBegin;
                        docuRef.clear();
                        buf2Buf(docuRefCur , docuRef );
                        docuRef.RefRecId        = inventTable.RecId;
                        docuRef.RefTableId      = inventTable.TableId;
                        docuRef.RefCompanyId    = inventTable.dataAreaId;
                        docuRef.ActualCompanyId = inventTable.dataAreaId;
                        docuRef.insert();
                        record++;

                        if (docuRef.RecId && docuValueCur.RecId)
                        {
                            docuValue.clear();
                            buf2Buf(docuValueCur , docuValue);

                            docuValue.insert();

                           if(docuValue.RecId)
                           {
                               ttsBegin;
                               docuRef.selectForUpdate(true);
                               docuRef.ValueRecId = docuValue.RecId;
                               docuRef.update();

                               docuValue.selectForUpdate(true);
                               docuValue =  DocuValue::writeDocuValue(docuref,filePath);
                               docuValue.update();
                               ttsCommit;
                            }
                        }
                        ttsCommit;
                    }
                }
            }
        }
        info(strFmt("Total attachments = %1",record));
    }
    catch (Exception::Error)
    {
        warning("An attachement could not be added to this item - %1", inventTableCur.ItemId);
    }
}
За это сообщение автора поблагодарили: RVS (3).