РК_ПроверкаСерий 1.3.1.80: дубли по виду, номеру и сроку, без даты производства.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mihailkudravcev
2026-08-17 14:37:34 +03:00
parent 5d2d0a2432
commit 2727353b50
5 changed files with 19 additions and 20 deletions
+7
View File
@@ -4,6 +4,13 @@
--- ---
## 1.3.1.80 (2026-08-17)
### РК_ПроверкаСерий — ключ дублей (#15)
- Группа дублей: вид + номер + срок годности. `ДатаПроизводства` не входит в ключ (политика вида у РАНА не используется).
- #14 заполняет номер из наименования, не нумератором; уникальные номера разбили бы группы с пустым номером.
## 1.3.1.79 (2026-08-17) ## 1.3.1.79 (2026-08-17)
### Исправление ### Исправление
+1 -1
View File
@@ -1 +1 @@
1.3.1.79 1.3.1.80
+1 -1
View File
@@ -62,7 +62,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item> <xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
</DefaultRoles> </DefaultRoles>
<Vendor/> <Vendor/>
<Version>1.3.1.79</Version> <Version>1.3.1.80</Version>
<DefaultStyle/> <DefaultStyle/>
<DefaultLanguage>Language.Русский</DefaultLanguage> <DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation/> <BriefInformation/>
@@ -676,7 +676,7 @@
<ToolTip> <ToolTip>
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
<v8:content>Найти группы дублей по виду, номеру, сроку и дате производства</v8:content> <v8:content>Найти группы дублей по виду, номеру и сроку годности</v8:content>
</v8:item> </v8:item>
</ToolTip> </ToolTip>
<Picture> <Picture>
@@ -1,5 +1,6 @@
// Проверка и исправление данных Справочник.СерииНоменклатуры (#14, #15). // Проверка и исправление данных Справочник.СерииНоменклатуры (#14, #15).
// Логика заполнения номера/срока из наименования — как docs/transfer/Код_исправления_серий_crm3-26.bsl. // Заполнение номера/срока — из наименования (не нумератор).
// Дубли: вид + номер + ГоденДо (ДатаПроизводства в ключ не входит).
#Область ОбработчикиСобытийФормы #Область ОбработчикиСобытийФормы
@@ -895,7 +896,6 @@
| Сер.ВидНоменклатуры КАК ВидНоменклатуры, | Сер.ВидНоменклатуры КАК ВидНоменклатуры,
| Сер.Номер КАК Номер, | Сер.Номер КАК Номер,
| Сер.ГоденДо КАК ГоденДо, | Сер.ГоденДо КАК ГоденДо,
| Сер.ДатаПроизводства КАК ДатаПроизводства,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сер.Ссылка) КАК КоличествоСерий | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сер.Ссылка) КАК КоличествоСерий
|ИЗ |ИЗ
| Справочник.СерииНоменклатуры КАК Сер | Справочник.СерииНоменклатуры КАК Сер
@@ -904,8 +904,7 @@
|СГРУППИРОВАТЬ ПО |СГРУППИРОВАТЬ ПО
| Сер.ВидНоменклатуры, | Сер.ВидНоменклатуры,
| Сер.Номер, | Сер.Номер,
| Сер.ГоденДо, | Сер.ГоденДо
| Сер.ДатаПроизводства
|ИМЕЮЩИЕ |ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сер.Ссылка) > 1"; | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сер.Ссылка) > 1";
@@ -917,8 +916,7 @@
Мастер = НайтиСериюМастерГруппы( Мастер = НайтиСериюМастерГруппы(
ВыбГруппы.ВидНоменклатуры, ВыбГруппы.ВидНоменклатуры,
ВыбГруппы.Номер, ВыбГруппы.Номер,
ВыбГруппы.ГоденДо, ВыбГруппы.ГоденДо);
ВыбГруппы.ДатаПроизводства);
Если Не ЗначениеЗаполнено(Мастер) Тогда Если Не ЗначениеЗаполнено(Мастер) Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -926,8 +924,7 @@
СерииГруппы = СерииГруппыДублей( СерииГруппы = СерииГруппыДублей(
ВыбГруппы.ВидНоменклатуры, ВыбГруппы.ВидНоменклатуры,
ВыбГруппы.Номер, ВыбГруппы.Номер,
ВыбГруппы.ГоденДо, ВыбГруппы.ГоденДо);
ВыбГруппы.ДатаПроизводства);
Если СерииГруппы.Количество() < 2 Тогда Если СерииГруппы.Количество() < 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 @@
СерииГруппы = СерииГруппыДублей( СерииГруппы = СерииГруппыДублей(
СтрГруппа.ВидНоменклатуры, СтрГруппа.ВидНоменклатуры,
СтрГруппа.Номер, СтрГруппа.Номер,
СтрГруппа.ГоденДо, СтрГруппа.ГоденДо);
СтрГруппа.ДатаПроизводства);
Для Каждого Серия Из СерииГруппы Цикл Для Каждого Серия Из СерииГруппы Цикл
Если Серия <> СтрГруппа.СерияМастер Тогда Если Серия <> СтрГруппа.СерияМастер Тогда
Заменяемые.Вставить(Серия, СтрГруппа.СерияМастер); Заменяемые.Вставить(Серия, СтрГруппа.СерияМастер);