Приветствую! Возник очередной вопрос по СМ+
У нас в организации используется внешняя система ценообразования (на основе 1с 8.1.). При выгрузке сформированных ею актов переоценки, для получения очередного порядкого номера накорябал следующую обработку:
Код:
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Соединение;
Command.CommandText = "declare "
"core_result pls_integer; "
"vDocTypeID varchar2(2) := :vDocTypeID; "
"nLocationID number(3,0) := :nLocationID; "
"vDocID varchar2(50); "
"begin "
"if supermag.core.getproc is null then "
"core_result := supermag.Core.StartSMApp(); "
"end if; "
"vDocID := SUPERMAG.DOCUMENTS.GENERATEDOCNO(ADOCTYPE => vDocTypeID, ALOCATION => nLocationID); "
"SUPERMAG.DOCUMENTS.UNLOCKDOC(vDocTypeID, vDocID); "
":vDocID := vDocID; "
"end;";
Command.Prepared = True;
Command.Parameters.Append(Command.CreateParameter(":vDocTypeID", 200, 1, 2, ТипДокумента ) );
Command.Parameters.Append(Command.CreateParameter(":nLocationID", 139, 1, 5, МестоХраненияКод ) );
Command.Parameters.Append(Command.CreateParameter(":vDocID", 200, 2, 15, "" ) );
Command.Prepared = True;
Попытка
Command.Execute();
НомерДокумента = Command.Parameters.Item(2).Value;
Исключение
Сообщить("Невозможно получить номер документа с системы СМ+." + ОписаниеОшибки(), СтатусСообщения.Важное);
НомерДокумента = Неопределено;
КонецПопытки;
В общем все работает прекрасно, за исключением момента "затупа" почтового модуля (либо очень большой очереди в нем). Тогда номер документа может быть присвоен новому документу создаваемого пользователем в базе. Можно ли как-нибудь "застолбить" номер документа? Попытка удалить
Код:
SUPERMAG.DOCUMENTS.UNLOCKDOC(vDocTypeID, vDocID);
приводит к тому что при приемке почтовый модуль начинает ругатся на блокировку документа пользователем.