Показать сообщение отдельно
Старый 26.07.2018, 12:27   #19  
TalgatAb is offline
TalgatAb
Участник
 
18 / 11 (1) +
Регистрация: 31.01.2018
Создание Журнал переноса через Business Connector

Код:
                                 // Запуск специального класса для формирования журнала перемещения, в данном случае класс называется "ALA_CreateTransferJournal"
                                 using (bc.AxaptaObject axClass = ax.CreateAxaptaObject("ALA_CreateTransferJournal", con))
                                 {
                                    // Запускаем метод класса "CoCreate"
                                    object axJournalId = axClass.Call("CoCreate");
                                    // Проверяем возвратное значение метода. При успешной создании, метод возвращает номер журнала
                                    // Если значение не пустое, то обновляем локальную базу веб приложения
                                    if (axJournalId != null && axJournalId.ToString().Length > 0)
                                    {
                                       using (var cmd = cnn.CreateCommand())
                                       {
                                          cmd.CommandType = CommandType.Text;
                                          cmd.CommandText = "UPDATE dbo.InventJournalTable SET axJournalId = @axJournalId, axDescription = @axDescription ";
                                          cmd.CommandText += "WHERE (JournalId = @JournalId)";
                                          cmd.Parameters.Add("@axJournalId", SqlDbType.NVarChar, 20).Value = axJournalId;
                                          cmd.Parameters.Add("@axDescription", SqlDbType.NVarChar, 200).Value = axDescription;
                                          cmd.Parameters.Add("@JournalId", SqlDbType.Int).Value = journalId;
                                          cmd.ExecuteNonQuery();
                                          result = string.Format("1 Журнал: {0} {1}", axJournalId, axDescription);
                                       }
                                    }
                                 }
                              }
                              // Закрываем соединение
                              ax.Logoff();
X++:
public JournalId CoCreate()
{
    InventJournalTrans  inventJournalTrans;
    NumberSeq           numberSeq;
    // ----------------------
    InventLocationId    inventLocationIdFrom, inventLocationIdTo;
    ALA_InventPIC       inventPicFrom, inventPicTo;
    ItemId              itemId;
    Qty                 qty;

    InventDimGroupId    dimGroupId;
    InventJournalId     axJournalId;
    JournalNumOfLines   numOfLines = 0;
    str                 dimension1, dimension2, dimension5, dimension3, dimension7;

    str 100             userName;
    str 1000            sLine;

    List                hList = new List(Types::String);
    List                list = new List(Types::String);
    ListIterator        iterator, itemIterator;
    Container           packedList, itemList;

    int                 i;
    ;

    if (conLen(con) > 0)
    {
        ttsBegin;

        sLine = conPeek(con, 1);
        hList = Global::strSplit(sLine, '|');
        if (hList.elements() > 0)
        {
            iterator = new ListIterator(hList);
            while (iterator.more())
            {
                packedList += iterator.value();
                iterator.next();
            }

            transDate = str2date(conPeek(packedList, 1), 213);
            inventLocationIdFrom = conPeek(packedList, 2);
            inventPicFrom = conPeek(packedList, 3);
            inventLocationIdTo = conPeek(packedList, 4);
            inventPicTo = conPeek(packedList, 5);
            userName = conPeek(packedList, 6);
            dimension2 = conPeek(packedList, 7);
            dimension1 = conPeek(packedList, 8);
            dimension5 = conPeek(packedList, 9);
            dimension3 = conPeek(packedList, 10);
            dimension7 = conPeek(packedList, 11);
            axJournalId = conPeek(packedList, 12);

            // проверка на повторный запуск
            if (axJournalId)
            {
                if (InventJournalTable::find(axJournalId).RecId)
                  return "";
            }

            inventJournalTable.clear();
            numberSeq = new NumberSeq();
            numberSeq = NumberSeq::newGetNum(InventParameters::numRefInventJournalId());

            // ** Init value InventJournalTable
            inventJournalTable.initValue();
            inventJournalTable.JournalId = numberSeq.num();
            inventJournalTable.JournalNameId = "Перенос";
            inventJournalTable.TPF_Dimension[1] = dimension1;
            inventJournalTable.TPF_Dimension[2] = dimension2;
            inventJournalTable.TPF_Dimension[5] = dimension5;
            inventJournalTable.TPF_Dimension[3] = dimension3;
            inventJournalTable.TPF_Dimension[7] = dimension7;
            inventJournalTable.initFromInventJournalName(InventJournalName::find(InventParameters::find().TransferJournalNameId));
            inventJournalTable.Description = strFmt("%1 => %2, МОЛ-(%3) от %4", inventLocationIdFrom,
               inventLocationIdTo, inventPicTo, transDate);
            inventJournalTable.SystemBlocked = true;
            inventJournalTable.insert();

            journalId = inventJournalTable.JournalId;

            for (i = 2; i <= conLen(con); i += 1)
            {
               sLine = conPeek(con, i);
               list = Global::strSplit(sLine, '|');
               if (list.elements() > 0)
               {
                   itemIterator = new ListIterator(list);
                   while (itemIterator.more())
                   {
                       itemList += itemIterator.value();
                       itemIterator.next();
                   }
                   itemId = conPeek(itemList, 1);
                   qty    = str2num(conPeek(itemList, 2));

                   dimGroupId = InventTable::find(itemId).DimGroupId;
                   if (ALA_DimGroupId::find(dimGroupId).DimGroupId)
                   {
                       if (ALA_DimGroupId::find(dimGroupId).AnalyticsType == ALA_GroupAnalytics::NewAnalytics)
                          this.CreateInventJournalTrans(journalId, transDate, inventLocationIdFrom, inventLocationIdTo, inventPicTo, itemId, qty, dimension1, dimension2, dimension5, dimension3, dimension7, inventJournalTable);
                       else
                          this.CreateOldInventJournalTrans(journalId, transDate, inventLocationIdFrom, inventLocationIdTo, inventPicTo, itemId, qty, inventJournalTable);
                   } else
                   {
                       this.CreateOldInventJournalTrans(journalId, transDate, inventLocationIdFrom, inventLocationIdTo, inventPicTo, itemId, qty, inventJournalTable);
                   }

                   itemList = conDel(itemList, 1, conLen(itemList));
               }
            }

            inventJournalTable.SystemBlocked = false;
            inventJournalTable.update();

            select count(RecId) from inventJournalTrans where inventJournalTrans.JournalId == journalId;
            numOfLines = str2int(int642str(inventJournalTrans.RecId));
            inventJournalTable.NumOfLines = numOfLines;
            inventJournalTable.update();
        }

        ttsCommit;
    }

    return journalId;
}
Создается без проблем...