02.08.2011 15:42
Приветствую! Возник очередной вопрос по СМ+
У нас в организации используется внешняя система ценообразования (на основе 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);
приводит к тому что при приемке почтовый модуль начинает ругатся на блокировку документа пользователем.
02.08.2011 16:35
А тупо воткнуть что-то в supermag.smdocuments чем не вариант?
02.08.2011 16:40
А зачем резервировать номер !? Не проще развести номера СМ и 1С по префиксам ?! То что передаешь из 1с никак не пересечется между собой (номерами заведует), а в СМ будут создаваться акты со своей нумерацией.
Или я не понял корень проблемы?!
02.08.2011 16:42
Поддерживаю Little. Кстати мы это на форуме уже обсуждали...
02.08.2011 16:44
Присоединяюсь к предложению разделить по префиксам.
02.08.2011 20:45
В свое время делали загрузку накладных из внешней 1С торговля и склад
тоже разруливали префиксами.
Но все-таки существует ли технология резервирования текущих номеров документов, например Центрального склада?
03.08.2011 04:23
Технология одна. Поскольку счетчики номеров игнорируются почтовиком, то единственный способ застолбить номер - создать запись в smdocuments с соответствующим bornin, чтобы приезжающие доки не поправили и в целом вставка обламывалась на ограничении уникальности.
27.12.2013 07:28
Я таки поменял место работы и теперь мне мозг выносит не СМ+ а некая ERP Галактика, однако общаясь с бывшими коллегами узнал что есть оказывается еще и функция
generatedocnosrv
которая как раз позволяет "столбить" номера документов. Если таки вышлют кусок кода - запощу.
27.12.2013 08:43
проблема в данном случае в том, что на разных версиях СМ процедуры могут не совпадать, т.е. шансы изменения базовой структуры куда меньше, чем изменения процедур и всякой новой мелочи. Поэтому воткнуть в smdocuments запись быстрее, правильнее и надежнее. Ее уже трудно будет обойти.
27.12.2013 09:37
Мы и заказы и АП и даже ПН создаем в других системах, выгружаем в СМ через XML, номера генерируем свои с префиксами. Например у тех же АП префикс РОЗ_XXXX - АП на розничную цену, ЗАК_XXX - АП на закупочную цену.
Процедуры СМ думаю вообще не стоит использовать(как Олег сказал может возникнуть проблема версионности, и тогда надо будет переписывать исходный внешний код), абсолютно все можно делать через XML обмен.
Часовой пояс GMT +3, время: 22:14.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.