diff --git a/CHANGELOG.md b/CHANGELOG.md
index 84c6dd6..265dfe9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@
---
+## 1.3.1.120 (2026-09-04)
+
+### РК_ЗагрузкаОстатков — ДатаСрокаГодностиПоУмолчанию (#46)
+
+- Сохраняемый реквизит `ДатаСрокаГодностиПоУмолчанию` + поле на вкладке Настройки.
+- Fallback `ГоденДо` при создании серии без `series_expire` / даты в имени — из реквизита, **не** из даты среза.
+- Пустой реквизит: заглушка `Перенос_*` не создаётся (комментарий сопоставления).
+- `ДатаПроизводства` по-прежнему = дата среза остатков.
+
## 1.3.1.119 (2026-09-04)
### РК_ЗагрузкаОстатков — порядок команд + версия на форме (#40)
diff --git a/VERSION b/VERSION
index 1ce292c..302139d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.1.119
+1.3.1.120
diff --git a/src/ConfigDumpInfo.xml b/src/ConfigDumpInfo.xml
index dde8428..dfca237 100644
--- a/src/ConfigDumpInfo.xml
+++ b/src/ConfigDumpInfo.xml
@@ -57,7 +57,7 @@
-
+
@@ -179,6 +179,7 @@
+
@@ -204,8 +205,8 @@
-
-
+
+
diff --git a/src/Configuration.xml b/src/Configuration.xml
index 243a681..883e75b 100644
--- a/src/Configuration.xml
+++ b/src/Configuration.xml
@@ -62,7 +62,7 @@
Role.РК_ОсновнаяРоль
- 1.3.1.119
+ 1.3.1.120
Language.Русский
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков.xml b/src/DataProcessors/РК_ЗагрузкаОстатков.xml
index 1fcaf5c..f517d10 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков.xml
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков.xml
@@ -348,6 +348,43 @@
Auto
+
+
+ ДатаСрокаГодностиПоУмолчанию
+
+
+ ru
+ Дата срока годности по умолчанию
+
+
+ Fallback ГоденДо для серий без series_expire и без даты в имени (#46). Не путать с датой среза.
+
+ xs:dateTime
+
+ Date
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
index cb1195d..96854c2 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
@@ -119,7 +119,10 @@
ДобавитьСтрокуПротокола(Результат, "Режим: " + ?(РежимТест, "тест (без создания)", "запись"));
ДобавитьСтрокуПротокола(Результат, "Строк во входящих: "
+ Формат(ВходящиеСобственныеТовары.Количество(), "ЧН=0; ЧГ=0")
- + "; заглушки серий: " + ?(СоздаватьЗаглушкиСерий, "вкл", "выкл"));
+ + "; заглушки серий: " + ?(СоздаватьЗаглушкиСерий, "вкл", "выкл")
+ + "; ГоденДо по умолчанию: "
+ + ?(ЗначениеЗаполнено(ДатаСрокаГодностиПоУмолчанию),
+ Формат(ДатаСрокаГодностиПоУмолчанию, "ДФ=yyyy-MM-dd"), "(не задан)"));
СуффиксДатыСер = Формат(?(ЗначениеЗаполнено(ДатаДокументовВвода), ДатаДокументовВвода, ДатаОстатков), "ДФ=yyyyMMdd");
Если ПустаяСтрока(СуффиксДатыСер) Тогда
@@ -209,7 +212,10 @@
ДобавитьСтрокуПротокола(Результат, "Режим: " + ?(РежимТест, "тест (без создания)", "запись"));
ДобавитьСтрокуПротокола(Результат, "Строк во входящих: "
+ Формат(ВходящиеКомиссионныеТовары.Количество(), "ЧН=0; ЧГ=0")
- + "; заглушки серий: " + ?(СоздаватьЗаглушкиСерий, "вкл", "выкл"));
+ + "; заглушки серий: " + ?(СоздаватьЗаглушкиСерий, "вкл", "выкл")
+ + "; ГоденДо по умолчанию: "
+ + ?(ЗначениеЗаполнено(ДатаСрокаГодностиПоУмолчанию),
+ Формат(ДатаСрокаГодностиПоУмолчанию, "ДФ=yyyy-MM-dd"), "(не задан)"));
СуффиксДатыСер = Формат(?(ЗначениеЗаполнено(ДатаДокументовВвода), ДатаДокументовВвода, ДатаОстатков), "ДФ=yyyyMMdd");
Если ПустаяСтрока(СуффиксДатыСер) Тогда
@@ -1789,6 +1795,18 @@
КонецФункции
+// Fallback ГоденДо, если нет series_expire / СерияГоденДо и даты в имени (#46).
+// Дата среза остатков сюда НЕ подставляется.
+//
+Функция ГоденДоПоУмолчаниюОбработки()
+
+ Если ЗначениеЗаполнено(ДатаСрокаГодностиПоУмолчанию) Тогда
+ Возврат КонецДня(ДатаСрокаГодностиПоУмолчанию);
+ КонецЕсли;
+ Возврат '00010101';
+
+КонецФункции
+
Функция КодНоменклатурыДляЗаглушкиСерии(СтрТ, Ном)
Арт = СокрЛП(СтрТ.Артикул);
@@ -1900,7 +1918,12 @@
Возврат Сер;
КонецЕсли;
Если Не ЗначениеЗаполнено(ГоденДо) Тогда
- ГоденДо = КонецДня(ДатаСрезаОстатковОбработки());
+ ГоденДо = ГоденДоПоУмолчаниюОбработки();
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(ГоденДо) Тогда
+ СтрТ.КомментарийСопоставления =
+ "Серия обязательна, срок годности не определён (задайте «Дата срока годности по умолчанию»)";
+ Возврат Сер;
КонецЕсли;
СтрТ.СерияГоденДо = ГоденДо;
НомерСерии = СформироватьНомерЗаглушкиСерии(СтрТ, Ном, ГоденДо);
@@ -1912,6 +1935,9 @@
Если Не ЗначениеЗаполнено(ГоденДо) Тогда
ГоденДо = ДатаИзИмениСерии(ИмяСерии);
КонецЕсли;
+ Если Не ЗначениеЗаполнено(ГоденДо) Тогда
+ ГоденДо = ГоденДоПоУмолчаниюОбработки();
+ КонецЕсли;
Если ЗначениеЗаполнено(ГоденДо) Тогда
СтрТ.СерияГоденДо = ГоденДо;
КонецЕсли;
@@ -1968,8 +1994,15 @@
Если Не ЗначениеЗаполнено(Сер) И МожноСоздать Тогда
Попытка
Если Не ЗначениеЗаполнено(ГоденДо) Тогда
- ГоденДо = КонецДня(ДатаСрезаОстатковОбработки());
- СтрТ.СерияГоденДо = ГоденДо;
+ ГоденДо = ГоденДоПоУмолчаниюОбработки();
+ Если ЗначениеЗаполнено(ГоденДо) Тогда
+ СтрТ.СерияГоденДо = ГоденДо;
+ КонецЕсли;
+ КонецЕсли;
+ Если ЭтоЗаглушка И Не ЗначениеЗаполнено(ГоденДо) Тогда
+ СтрТ.КомментарийСопоставления =
+ "Серия обязательна, срок годности не определён (задайте «Дата срока годности по умолчанию»)";
+ Возврат Сер;
КонецЕсли;
ОбСер = Справочники.СерииНоменклатуры.ПустойОбъект(ВидСер);
Если ИспНомерСерии Тогда
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml
index 3abf84e..2c4b19a 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml
@@ -234,6 +234,19 @@
+
+ Объект.ДатаСрокаГодностиПоУмолчанию
+
+
+ ru
+ ГоденДо новых серий, если в API/имени серии срока нет. Дата среза остатков сюда не подставляется. Пустое значение — заглушки без срока не создаются
+
+
+ ShowRight
+ true
+
+
+
Объект.ПерезаписатьДокументы
@@ -1375,6 +1388,7 @@
Объект.ДатаДокументовВвода
Объект.ДатаОстатков
+ Объект.ДатаСрокаГодностиПоУмолчанию
Объект.Организация
Объект.ПодключениеКСтороннейБазе
Объект.ПутьКФайламВыгрузкиТаблиц