1.3.1.135: серия по UUID со сроком 01.01.2001 берёт номер и срок из источника.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mihailkudravcev
2026-10-14 15:08:17 +03:00
parent 1294d42613
commit c30dac7f2a
4 changed files with 59 additions and 2 deletions
+7
View File
@@ -4,6 +4,13 @@
---
## 1.3.1.135 (2026-10-14)
### Ввод остатков: серия по UUID со сроком 01.01.2001
- Если карточка серии уже есть по идентификатору источника, новая не создаётся.
- У карточки со сроком 01.01.2001 и цифровым номером срок и номер берутся из имени серии источника. Занятый номер другого элемента не перезаписывается.
## 1.3.1.134 (2026-10-13)
### Ввод остатков: серия строки в таблице товаров
+1 -1
View File
@@ -1 +1 @@
1.3.1.134
1.3.1.135
+1 -1
View File
@@ -62,7 +62,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
</DefaultRoles>
<Vendor/>
<Version>1.3.1.134</Version>
<Version>1.3.1.135</Version>
<DefaultStyle/>
<DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation/>
@@ -2234,6 +2234,53 @@
КонецПроцедуры
Процедура АктуализироватьСериюСПустымСроком(Сер, ИмяСерии, ГоденДо, РежимТест)
Если РежимТест Или Не ЗначениеЗаполнено(Сер) Или Не ЗначениеЗаполнено(ГоденДо) Тогда
Возврат;
КонецЕсли;
Если НачалоДня(ГоденДо) <= Дата(2001, 1, 1) Тогда
Возврат;
КонецЕсли;
Рекв = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Сер, "Номер, ГоденДо, ВидНоменклатуры");
Если ЗначениеЗаполнено(Рекв.ГоденДо) И НачалоДня(Рекв.ГоденДо) > Дата(2001, 1, 1) Тогда
Возврат;
КонецЕсли;
Попытка
Объект = Сер.ПолучитьОбъект();
Объект.ГоденДо = ГоденДо;
НомерИсточник = СокрЛП(ИмяСерии);
Если ЗначениеЗаполнено(НомерИсточник) И НомерСерииТолькоЦифры(СокрЛП(Рекв.Номер)) Тогда
Занятый = Справочники.СерииНоменклатуры.НайтиПоРеквизиту(
"Номер", НомерИсточник, , Рекв.ВидНоменклатуры);
Если Не ЗначениеЗаполнено(Занятый) Или Занятый = Сер Тогда
Объект.Номер = НомерИсточник;
КонецЕсли;
КонецЕсли;
Объект.Записать();
Исключение
// Срок карточки не обновлён. Строка остатка всё равно ссылается на найденную серию.
КонецПопытки;
КонецПроцедуры
Функция НомерСерииТолькоЦифры(Номер)
Если Не ЗначениеЗаполнено(Номер) Тогда
Возврат Ложь;
КонецЕсли;
Для Индекс = 1 По СтрДлина(Номер) Цикл
Символ = Сред(Номер, Индекс, 1);
Если Символ < "0" Или Символ > "9" Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
Функция НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
КэшТребуетсяСерия, КэшСерий, Результат)
@@ -2295,6 +2342,9 @@
СсылкаПоГуид = СсылкаПоUUID(Справочники.СерииНоменклатуры, СтрТ.СерияИдентификатор);
Если ЗначениеЗаполнено(СсылкаПоГуид) И ОбщегоНазначения.СсылкаСуществует(СсылкаПоГуид) Тогда
Если Не ЭтоЗаглушка Тогда
АктуализироватьСериюСПустымСроком(СсылкаПоГуид, ИмяСерии, ГоденДо, РежимТест);
КонецЕсли;
Если ЭтоЗаглушка Тогда
КэшСерий.Вставить(КлючКэшаСерииЗаглушки(ВидСер, Ном, ГоденДо), СсылкаПоГуид);
КонецЕсли;