diff --git a/CHANGELOG.md b/CHANGELOG.md
index d3de6dd..8b02eb9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@
---
+## 1.3.1.89 (2026-08-19)
+
+### РК_ПроверкаСерий — UUID в форме и исправление записи (#17)
+
+- На странице заполнения под таблицей `ПроблемныеСерии` добавлено отображение UUID выбранной серии, а `ТекстПоследнейОшибки` перенесён на отдельную страницу `Отчетность`.
+- Новые строки таблицы проблем теперь создаются с `Отметка = Ложь`.
+- `Исправить отмеченные` теперь определяет необходимость записи по реальному объекту `СерииНоменклатуры` из базы, а не по уже заполненной строке формы после `ЗаполнитьПоПредложениям`.
+
## 1.3.1.88 (2026-08-19)
### РК_ПроверкаСерий — НГ/КГ по ссылке серии (#17)
diff --git a/VERSION b/VERSION
index 3e1b989..e881e6e 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.1.88
+1.3.1.89
diff --git a/src/Configuration.xml b/src/Configuration.xml
index 2319be5..ff80032 100644
--- a/src/Configuration.xml
+++ b/src/Configuration.xml
@@ -62,7 +62,7 @@
Role.РК_ОсновнаяРоль
- 1.3.1.88
+ 1.3.1.89
Language.Русский
diff --git a/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form.xml b/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form.xml
index 1105996..cb6a03f 100644
--- a/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form.xml
+++ b/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form.xml
@@ -26,23 +26,6 @@
-
- ТекстПоследнейОшибки
- true
-
-
- ru
- Последняя ошибка
-
-
- Top
- 3
- false
- false
- true
-
-
-
@@ -182,6 +165,9 @@
+
+ ПроблемныеСерииПриАктивизацииСтроки
+
Объект.ПроблемныеСерии.Отметка
@@ -307,6 +293,19 @@
+
+ UUIDВыбраннойСерии
+ true
+
+
+ ru
+ UUID выбранной серии
+
+
+ Top
+
+
+
@@ -516,6 +515,34 @@
+
+
+
+ ru
+ Отчетность
+
+
+
+
+
+ ТекстПоследнейОшибки
+ true
+
+
+ ru
+ Последняя ошибка
+
+
+ Top
+ 3
+ false
+ false
+ true
+
+
+
+
+
@@ -558,6 +585,21 @@
ТолькоСОстатком
+
+
+
+ ru
+ UUID выбранной серии
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+
diff --git a/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form/Module.bsl b/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form/Module.bsl
index 3337cd1..7d9c91e 100644
--- a/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form/Module.bsl
+++ b/src/DataProcessors/РК_ПроверкаСерий/Forms/Форма/Ext/Form/Module.bsl
@@ -2,12 +2,16 @@
// Заполнение номера — из наименования; при пустом номере и наличии срока — a-YYMMDD (#17).
// Дубли: вид + номер + ГоденДо (ДатаПроизводства в ключ не входит).
+&НаКлиенте
+Перем ПоследняяАктивированнаяСерия;
+
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.РежимТест = Истина;
+ UUIDВыбраннойСерии = "";
КонецПроцедуры
@@ -26,6 +30,8 @@
КонецПопытки;
ОчиститьТекстПоследнейОшибки();
ПрименитьОтборПроблемныхСерий();
+ ПоследняяАктивированнаяСерия = Неопределено;
+ ОбновитьUUIDВыбраннойСерии();
ПоказатьОповещениеПользователя("Проверка серий", ,
"Найдено проблем: " + Формат(Количество, "ЧН=0; ЧГ=0"));
@@ -81,6 +87,7 @@
Формат(Результат.Исправлено, "ЧН=0; ЧГ=0"),
Формат(Результат.Ошибок, "ЧН=0; ЧГ=0"),
?(Объект.РежимТест, " (тест)", ""));
+ ОбновитьUUIDВыбраннойСерии();
ПоказатьОповещениеПользователя("Проверка серий", , Текст);
КонецПроцедуры
@@ -105,6 +112,7 @@
Возврат;
КонецПопытки;
ОчиститьТекстПоследнейОшибки();
+ ОбновитьUUIDВыбраннойСерии();
ПоказатьОповещениеПользователя("Проверка серий", ,
"Заполнено полей в строках: " + Формат(Количество, "ЧН=0; ЧГ=0"));
@@ -130,6 +138,7 @@
Возврат;
КонецПопытки;
ОчиститьТекстПоследнейОшибки();
+ ОбновитьUUIDВыбраннойСерии();
ПоказатьОповещениеПользователя("Проверка серий", ,
СтрШаблон("Предложений: номер %1, годен до %2, наименование %3, номенклатура %4",
Формат(Результат.Номеров, "ЧН=0; ЧГ=0"),
@@ -168,6 +177,28 @@
ПрименитьОтборПроблемныхСерий();
КонецПроцедуры
+&НаКлиенте
+Процедура ПроблемныеСерииПриАктивизацииСтроки(Элемент)
+
+ ТекущаяСтрока = ТекущаяСтрокаПроблемнойСерии();
+ Если ТекущаяСтрока = Неопределено Тогда
+ UUIDВыбраннойСерии = "";
+ ПоследняяАктивированнаяСерия = Неопределено;
+ Возврат;
+ КонецЕсли;
+
+ ОбновитьUUIDВыбраннойСерии();
+ Если ЗначениеЗаполнено(ПоследняяАктивированнаяСерия)
+ И ПоследняяАктивированнаяСерия = ТекущаяСтрока.Серия Тогда
+ ОткрытьФормуСерии(ТекущаяСтрока.Серия);
+ ПоследняяАктивированнаяСерия = Неопределено;
+ Возврат;
+ КонецЕсли;
+
+ ПоследняяАктивированнаяСерия = ТекущаяСтрока.Серия;
+
+КонецПроцедуры
+
&НаКлиенте
Процедура Отметить(Команда)
УстановитьОтметкуВыделенныхСтрок("ПроблемныеСерии", Истина);
@@ -333,6 +364,41 @@
КонецФункции
+&НаКлиенте
+Функция ТекущаяСтрокаПроблемнойСерии()
+
+ Если Элементы.ПроблемныеСерии.ТекущиеДанные = Неопределено Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Возврат Элементы.ПроблемныеСерии.ТекущиеДанные;
+
+КонецФункции
+
+&НаКлиенте
+Процедура ОбновитьUUIDВыбраннойСерии()
+
+ ТекущаяСтрока = ТекущаяСтрокаПроблемнойСерии();
+ Если ТекущаяСтрока = Неопределено Или Не ЗначениеЗаполнено(ТекущаяСтрока.Серия) Тогда
+ UUIDВыбраннойСерии = "";
+ Возврат;
+ КонецЕсли;
+
+ UUIDВыбраннойСерии = НРег(XMLСтрока(ТекущаяСтрока.Серия.УникальныйИдентификатор()));
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОткрытьФормуСерии(Серия)
+
+ Если Не ЗначениеЗаполнено(Серия) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ОткрытьФорму("Catalog.СерииНоменклатуры.Form.ФормаЭлемента", Новый Структура("Ключ", Серия));
+
+КонецПроцедуры
+
&НаКлиенте
Процедура УстановитьОтметкуВыделенныхСтрок(ИмяТаблицы, Отметка)
@@ -479,7 +545,7 @@
Процедура ДобавитьСтрокуПроблемы(ДанныеСтроки, НомерСтроки, ОстаткиИНоменклатура)
НовСтр = Объект.ПроблемныеСерии.Добавить();
- НовСтр.Отметка = Истина;
+ НовСтр.Отметка = Ложь;
НовСтр.ПорядковыйНомер = НомерСтроки;
НовСтр.НомерГруппы = 0;
НовСтр.КоличествоВГруппе = 0;
@@ -685,43 +751,39 @@
ГоденДоЗаписи = ГоденДоДляИсправленияСтроки(Стр);
НаименованиеЗаписи = НаименованиеДляИсправленияСтроки(Стр);
- Если Не ЗначениеЗаполнено(СокрЛП(Стр.Номер))
- И ЗначениеЗаполнено(НомерЗаписи) Тогда
- ЕстьИзменения = Истина;
- КонецЕсли;
-
- Если СтрНайти(Стр.Проблема, "Пустой срок годности") > 0
- И СрокГодностиЗаполнен(ГоденДоЗаписи) Тогда
- ЕстьИзменения = Истина;
- КонецЕсли;
-
- Если Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование))
- И ЗначениеЗаполнено(НаименованиеЗаписи) Тогда
- ЕстьИзменения = Истина;
- КонецЕсли;
-
- Если Не ЕстьИзменения Тогда
- Стр.Комментарий = "Нет данных для исправления";
- Продолжить;
- КонецЕсли;
-
Попытка
+ ОбСерии = Стр.Серия.ПолучитьОбъект();
+ ЕстьИзменения = ТребуетсяЗаписьИсправленияСерии(
+ ОбСерии, НомерЗаписи, ГоденДоЗаписи, НаименованиеЗаписи);
+ Если Не ЕстьИзменения Тогда
+ Стр.Комментарий = "Нет данных для исправления";
+ Продолжить;
+ КонецЕсли;
+
Если Объект.РежимТест Тогда
+ Если ЗначениеЗаполнено(НомерЗаписи) Тогда
+ Стр.Номер = НомерЗаписи;
+ КонецЕсли;
+ Если СрокГодностиЗаполнен(ГоденДоЗаписи) Тогда
+ Стр.ГоденДо = ГоденДоЗаписи;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(НаименованиеЗаписи) Тогда
+ Стр.Наименование = НаименованиеЗаписи;
+ КонецЕсли;
Стр.Исправлено = Истина;
Результат.Исправлено = Результат.Исправлено + 1;
СинхронизироватьСтрокиСерии(Стр.Серия, Стр);
Иначе
- ОбСерии = Стр.Серия.ПолучитьОбъект();
- Если Не ЗначениеЗаполнено(СокрЛП(Стр.Номер))
- И ЗначениеЗаполнено(НомерЗаписи) Тогда
+ Если ЗначениеЗаполнено(НомерЗаписи)
+ И СокрЛП(ОбСерии.Номер) <> НомерЗаписи Тогда
ОбСерии.Номер = НомерЗаписи;
КонецЕсли;
- Если СтрНайти(Стр.Проблема, "Пустой срок годности") > 0
- И СрокГодностиЗаполнен(ГоденДоЗаписи) Тогда
+ Если СрокГодностиЗаполнен(ГоденДоЗаписи)
+ И ОбСерии.ГоденДо <> ГоденДоЗаписи Тогда
ОбСерии.ГоденДо = ГоденДоЗаписи;
КонецЕсли;
- Если Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование))
- И ЗначениеЗаполнено(НаименованиеЗаписи) Тогда
+ Если ЗначениеЗаполнено(НаименованиеЗаписи)
+ И СокрЛП(ОбСерии.Наименование) <> НаименованиеЗаписи Тогда
ОбСерии.Наименование = НаименованиеЗаписи;
КонецЕсли;
ОбСерии.Записать();
@@ -754,6 +816,28 @@
КонецФункции
+&НаСервере
+Функция ТребуетсяЗаписьИсправленияСерии(ОбСерии, НомерЗаписи, ГоденДоЗаписи, НаименованиеЗаписи)
+
+ Если ЗначениеЗаполнено(НомерЗаписи)
+ И СокрЛП(ОбСерии.Номер) <> НомерЗаписи Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Если СрокГодностиЗаполнен(ГоденДоЗаписи)
+ И ОбСерии.ГоденДо <> ГоденДоЗаписи Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(НаименованиеЗаписи)
+ И СокрЛП(ОбСерии.Наименование) <> НаименованиеЗаписи Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
&НаСервере
Функция ГоденДоДляИсправленияСтроки(Стр)