РК_ПроверкаСерий 1.3.1.83: автономер a-YYMMDD из срока годности (#17).
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// Проверка и исправление данных Справочник.СерииНоменклатуры (#14, #15).
|
||||
// Заполнение номера/срока — из наименования (не нумератор).
|
||||
// Проверка и исправление данных Справочник.СерииНоменклатуры (#14, #15, #17).
|
||||
// Заполнение номера — из наименования; при пустом номере и наличии срока — a-YYMMDD (#17).
|
||||
// Дубли: вид + номер + ГоденДо (ДатаПроизводства в ключ не входит).
|
||||
|
||||
#Область ОбработчикиСобытийФормы
|
||||
@@ -434,16 +434,21 @@
|
||||
ПредложенныйГоденДо = '00010101';
|
||||
ПредложенноеНаименование = "";
|
||||
|
||||
Если ИспНомер И ПустойНомер Тогда
|
||||
ПредложенныйНомер = ИзвлечьНомерИзНаименования(Выборка.Наименование);
|
||||
Проблемы.Добавить("Пустой номер");
|
||||
КонецЕсли;
|
||||
|
||||
Если ИспСрок И ПустойСрок Тогда
|
||||
ПредложенныйГоденДо = ПредложенныйГоденДоПоСтроке(Выборка.Наименование);
|
||||
Проблемы.Добавить("Пустой срок годности");
|
||||
КонецЕсли;
|
||||
|
||||
Если ИспНомер И ПустойНомер Тогда
|
||||
ПредложенияНомера = ПредложенияПоНомеруИзСрока(
|
||||
Выборка.Наименование, Выборка.ГоденДо, ПредложенныйГоденДо);
|
||||
ПредложенныйНомер = ПредложенияНомера.Номер;
|
||||
Если ПустоеИмя И ЗначениеЗаполнено(ПредложенияНомера.Наименование) Тогда
|
||||
ПредложенноеНаименование = ПредложенияНомера.Наименование;
|
||||
КонецЕсли;
|
||||
Проблемы.Добавить("Пустой номер");
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ИспНомер И ПустоеИмя И СрокГодностиЗаполнен(Выборка.ГоденДо) Тогда
|
||||
ПредложенноеНаименование = "до " + Формат(Выборка.ГоденДо, "ДФ=dd.MM.yy");
|
||||
Проблемы.Добавить("Пустое наименование");
|
||||
@@ -504,13 +509,6 @@
|
||||
ПересчитатьПредложенияСтрокиПроблемы(Стр, КэшНастроек);
|
||||
ИзмененийВСтроке = 0;
|
||||
|
||||
Если СтрНайти(Стр.Проблема, "Пустой номер") > 0
|
||||
И ЗначениеЗаполнено(СокрЛП(Стр.ПредложенныйНомер))
|
||||
И Не ЗначениеЗаполнено(СокрЛП(Стр.Номер)) Тогда
|
||||
Стр.Номер = СокрЛП(Стр.ПредложенныйНомер);
|
||||
ИзмененийВСтроке = ИзмененийВСтроке + 1;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(Стр.Проблема, "Пустой срок годности") > 0
|
||||
И СрокГодностиЗаполнен(Стр.ПредложенныйГоденДо)
|
||||
И Не СрокГодностиЗаполнен(Стр.ГоденДо) Тогда
|
||||
@@ -518,8 +516,28 @@
|
||||
ИзмененийВСтроке = ИзмененийВСтроке + 1;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(Стр.Проблема, "Пустое наименование") > 0
|
||||
И ЗначениеЗаполнено(СокрЛП(Стр.ПредложенноеНаименование))
|
||||
Если СтрНайти(Стр.Проблема, "Пустой номер") > 0
|
||||
И Не ЗначениеЗаполнено(СокрЛП(Стр.Номер))
|
||||
И Не ЗначениеЗаполнено(СокрЛП(Стр.ПредложенныйНомер)) Тогда
|
||||
ПредложенияНомера = ПредложенияПоНомеруИзСрока(
|
||||
Стр.Наименование, Стр.ГоденДо, Стр.ПредложенныйГоденДо);
|
||||
Если ЗначениеЗаполнено(ПредложенияНомера.Номер) Тогда
|
||||
Стр.ПредложенныйНомер = ПредложенияНомера.Номер;
|
||||
Если Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование))
|
||||
И ЗначениеЗаполнено(ПредложенияНомера.Наименование) Тогда
|
||||
Стр.ПредложенноеНаименование = ПредложенияНомера.Наименование;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(Стр.Проблема, "Пустой номер") > 0
|
||||
И ЗначениеЗаполнено(СокрЛП(Стр.ПредложенныйНомер))
|
||||
И Не ЗначениеЗаполнено(СокрЛП(Стр.Номер)) Тогда
|
||||
Стр.Номер = СокрЛП(Стр.ПредложенныйНомер);
|
||||
ИзмененийВСтроке = ИзмененийВСтроке + 1;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СокрЛП(Стр.ПредложенноеНаименование))
|
||||
И Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование)) Тогда
|
||||
Стр.Наименование = СокрЛП(Стр.ПредложенноеНаименование);
|
||||
ИзмененийВСтроке = ИзмененийВСтроке + 1;
|
||||
@@ -568,14 +586,6 @@
|
||||
Настройки = НастройкиСерийВида(Стр.ВидНоменклатуры, КэшНастроек);
|
||||
ТекстНаименования = Стр.Наименование;
|
||||
|
||||
Если Не ЗначениеЗаполнено(СокрЛП(Стр.Номер)) Или СтрНайти(Стр.Проблема, "Пустой номер") > 0 Тогда
|
||||
ПредложенныйНомер = ИзвлечьНомерИзНаименования(ТекстНаименования);
|
||||
Если ЗначениеЗаполнено(ПредложенныйНомер) Тогда
|
||||
Стр.ПредложенныйНомер = ПредложенныйНомер;
|
||||
Результат.Номеров = Результат.Номеров + 1;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не СрокГодностиЗаполнен(Стр.ГоденДо) Или СтрНайти(Стр.Проблема, "Пустой срок годности") > 0 Тогда
|
||||
ПодставлятьУмолчание = СтрНайти(Стр.Проблема, "Пустой срок годности") > 0;
|
||||
ПредложенныйГоденДо = ПредложенныйГоденДоПоСтроке(ТекстНаименования, ПодставлятьУмолчание);
|
||||
@@ -585,6 +595,20 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(СокрЛП(Стр.Номер)) Или СтрНайти(Стр.Проблема, "Пустой номер") > 0 Тогда
|
||||
ПредложенияНомера = ПредложенияПоНомеруИзСрока(
|
||||
ТекстНаименования, Стр.ГоденДо, Стр.ПредложенныйГоденДо);
|
||||
Если ЗначениеЗаполнено(ПредложенияНомера.Номер) Тогда
|
||||
Стр.ПредложенныйНомер = ПредложенияНомера.Номер;
|
||||
Результат.Номеров = Результат.Номеров + 1;
|
||||
Если Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование))
|
||||
И ЗначениеЗаполнено(ПредложенияНомера.Наименование) Тогда
|
||||
Стр.ПредложенноеНаименование = ПредложенияНомера.Наименование;
|
||||
Результат.Наименований = Результат.Наименований + 1;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если (Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование)) Или СтрНайти(Стр.Проблема, "Пустое наименование") > 0)
|
||||
И Не Настройки.ИспользоватьНомерСерии
|
||||
И СрокГодностиЗаполнен(Стр.ГоденДо) Тогда
|
||||
@@ -616,14 +640,20 @@
|
||||
ИспСрок = Настройки.ИспользоватьСрокГодностиСерии;
|
||||
ТекстНаименования = Стр.Наименование;
|
||||
|
||||
Если ИспНомер И СтрНайти(Стр.Проблема, "Пустой номер") > 0 Тогда
|
||||
Стр.ПредложенныйНомер = ИзвлечьНомерИзНаименования(ТекстНаименования);
|
||||
КонецЕсли;
|
||||
|
||||
Если ИспСрок И СтрНайти(Стр.Проблема, "Пустой срок годности") > 0 Тогда
|
||||
Стр.ПредложенныйГоденДо = ПредложенныйГоденДоПоСтроке(ТекстНаименования);
|
||||
КонецЕсли;
|
||||
|
||||
Если ИспНомер И СтрНайти(Стр.Проблема, "Пустой номер") > 0 Тогда
|
||||
ПредложенияНомера = ПредложенияПоНомеруИзСрока(
|
||||
ТекстНаименования, Стр.ГоденДо, Стр.ПредложенныйГоденДо);
|
||||
Стр.ПредложенныйНомер = ПредложенияНомера.Номер;
|
||||
Если Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование))
|
||||
И ЗначениеЗаполнено(ПредложенияНомера.Наименование) Тогда
|
||||
Стр.ПредложенноеНаименование = ПредложенияНомера.Наименование;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ИспНомер И СтрНайти(Стр.Проблема, "Пустое наименование") > 0
|
||||
И СрокГодностиЗаполнен(Стр.ГоденДо) Тогда
|
||||
Стр.ПредложенноеНаименование = "до " + Формат(Стр.ГоденДо, "ДФ=dd.MM.yy");
|
||||
@@ -658,7 +688,9 @@
|
||||
ЕстьИзменения = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(Стр.Проблема, "Пустое наименование") > 0
|
||||
Если (СтрНайти(Стр.Проблема, "Пустое наименование") > 0
|
||||
Или (СтрНайти(Стр.Проблема, "Пустой номер") > 0
|
||||
И Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование))))
|
||||
И ЗначениеЗаполнено(НаименованиеЗаписи) Тогда
|
||||
ЕстьИзменения = Истина;
|
||||
КонецЕсли;
|
||||
@@ -682,7 +714,9 @@
|
||||
И СрокГодностиЗаполнен(ГоденДоЗаписи) Тогда
|
||||
ОбСерии.ГоденДо = ГоденДоЗаписи;
|
||||
КонецЕсли;
|
||||
Если СтрНайти(Стр.Проблема, "Пустое наименование") > 0
|
||||
Если (СтрНайти(Стр.Проблема, "Пустое наименование") > 0
|
||||
Или (СтрНайти(Стр.Проблема, "Пустой номер") > 0
|
||||
И Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование))))
|
||||
И ЗначениеЗаполнено(НаименованиеЗаписи) Тогда
|
||||
ОбСерии.Наименование = НаименованиеЗаписи;
|
||||
КонецЕсли;
|
||||
@@ -783,6 +817,45 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПредложенияПоНомеруИзСрока(ТекстНаименования, ГоденДо, ПредложенныйГоденДо = '00010101')
|
||||
|
||||
Результат = Новый Структура("Номер, Наименование", "", "");
|
||||
|
||||
Номер = ИзвлечьНомерИзНаименования(ТекстНаименования);
|
||||
Если ЗначениеЗаполнено(Номер) Тогда
|
||||
Результат.Номер = Номер;
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ГоденДоДляНомера = ГоденДо;
|
||||
Если Не СрокГодностиЗаполнен(ГоденДоДляНомера) Тогда
|
||||
ГоденДоДляНомера = ПредложенныйГоденДо;
|
||||
КонецЕсли;
|
||||
|
||||
Если СрокГодностиЗаполнен(ГоденДоДляНомера) Тогда
|
||||
Результат.Номер = АвтоНомерСерииИзСрока(ГоденДоДляНомера);
|
||||
Результат.Наименование = НаименованиеСерииПоНомеруИСроку(Результат.Номер, ГоденДоДляНомера);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция АвтоНомерСерииИзСрока(ГоденДо)
|
||||
|
||||
Возврат "a-" + Формат(ГоденДо, "ДФ=yyMMdd");
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция НаименованиеСерииПоНомеруИСроку(Номер, ГоденДо)
|
||||
|
||||
Возврат СокрЛП(Номер) + " до " + Формат(ГоденДо, "ДФ=dd.MM.yyyy");
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ИзвлечьНомерИзНаименования(ТекстНаименования)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user