@@ -1,5 +1,6 @@
// Проверка и исправление данных Справочник.СерииНоменклатуры (#14, #15).
// Логика з аполнения номера/срока из наименования — как docs/transfer/Код_исправления_серий_crm3-26.bsl .
// З аполнение номера/срока — из наименования (не нумератор) .
// Дубли: вид + номер + ГоденДо (ДатаПроизводства в ключ не входит).
#Область ОбработчикиСобытийФормы
@@ -895,7 +896,6 @@
| Сер.ВидНоменклатуры КАК ВидНоменклатуры,
| Сер.Номер КАК Номер,
| Сер.ГоденДо КАК ГоденДо,
| Сер.ДатаПроизводства КАК ДатаПроизводства,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сер.Ссылка) КАК КоличествоСерий
|ИЗ
| Справочник.СерииНоменклатуры КАК Сер
@@ -904,8 +904,7 @@
|СГРУППИРОВАТЬ ПО
| Сер.ВидНоменклатуры,
| Сер.Номер,
| Сер.ГоденДо,
| Сер.ДатаПроизводства
| Сер.ГоденДо
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сер.Ссылка) > 1";
@@ -917,8 +916,7 @@
Мастер = НайтиСериюМастерГруппы(
ВыбГруппы.ВидНоменклатуры,
ВыбГруппы.Номер,
ВыбГруппы.ГоденДо,
ВыбГруппы.ДатаПроизводства);
ВыбГруппы.ГоденДо);
Если Не ЗначениеЗаполнено(Мастер) Тогда
Продолжить;
КонецЕсли;
@@ -926,8 +924,7 @@
СерииГруппы = СерииГруппыДублей(
ВыбГруппы.ВидНоменклатуры,
ВыбГруппы.Номер,
ВыбГруппы.ГоденДо,
ВыбГруппы.ДатаПроизводства);
ВыбГруппы.ГоденДо);
Если СерииГруппы.Количество() < 2 Тогда
Продолжить;
КонецЕсли;
@@ -943,7 +940,7 @@
КонецФункции
&НаСервере
Функция НайтиСериюМастерГруппы(Вид, Номер, ГоденДо, ДатаПроизводства )
Функция НайтиСериюМастерГруппы(Вид, Номер, ГоденДо)
Запрос = Новый Запрос;
Запрос.Текст =
@@ -957,7 +954,6 @@
| Сер.ВидНоменклатуры = &Вид
| И Сер.Номер = &Номер
| И Сер.ГоденДо = &ГоденДо
| И Сер.ДатаПроизводства = &ДатаПроизводства
| И НЕ Сер.ПометкаУдаления
|СГРУППИРОВАТЬ ПО
| Сер.Ссылка
@@ -967,7 +963,6 @@
Запрос.УстановитьПараметр("Вид", Вид);
Запрос.УстановитьПараметр("Номер", Номер);
Запрос.УстановитьПараметр("ГоденДо", ГоденДо);
Запрос.УстановитьПараметр("ДатаПроизводства", ДатаПроизводства);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
@@ -978,7 +973,7 @@
КонецФункции
&НаСервере
Функция СерииГруппыДублей(Вид, Номер, ГоденДо, ДатаПроизводства )
Функция СерииГруппыДублей(Вид, Номер, ГоденДо)
Запрос = Новый Запрос;
Запрос.Текст =
@@ -990,12 +985,10 @@
| Сер.ВидНоменклатуры = &Вид
| И Сер.Номер = &Номер
| И Сер.ГоденДо = &ГоденДо
| И Сер.ДатаПроизводства = &ДатаПроизводства
| И НЕ Сер.ПометкаУдаления";
Запрос.УстановитьПараметр("Вид", Вид);
Запрос.УстановитьПараметр("Номер", Номер);
Запрос.УстановитьПараметр("ГоденДо", ГоденДо);
Запрос.УстановитьПараметр("ДатаПроизводства", ДатаПроизводства);
Результат = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
@@ -1116,7 +1109,7 @@
НовСтр.ВидНоменклатуры = ДанныеГруппы.ВидНоменклатуры;
НовСтр.Номер = ДанныеГруппы.Номер;
НовСтр.ГоденДо = ДанныеГруппы.ГоденДо;
НовСтр.ДатаПроизводства = ДанныеГруппы .ДатаПроизводства;
НовСтр.ДатаПроизводства = Мастер .ДатаПроизводства;
НовСтр.СерияМастер = Мастер;
НовСтр.КоличествоСерий = СерииГруппы.Количество();
НовСтр.КоличествоЗамен = КоличествоЗамен;
@@ -1203,8 +1196,7 @@
СерииГруппы = СерииГруппыДублей(
СтрГруппа.ВидНоменклатуры,
СтрГруппа.Номер,
СтрГруппа.ГоденДо,
СтрГруппа.ДатаПроизводства);
СтрГруппа.ГоденДо);
Для Каждого Серия Из СерииГруппы Цикл
Если Серия <> СтрГруппа.СерияМастер Тогда
Заменяемые.Вставить(Серия, СтрГруппа.СерияМастер);