РК_ПроверкаСерий 1.3.1.87: группы строк серии и синхронизация значений (#17).

This commit is contained in:
mihailkudravcev
2026-08-19 11:49:42 +03:00
parent 6c4df3edd0
commit d5963a428b
7 changed files with 172 additions and 2 deletions
+7
View File
@@ -4,6 +4,13 @@
--- ---
## 1.3.1.87 (2026-08-19)
### РК_ПроверкаСерий — группы строк серии и синхронизация значений (#17 / #14)
- В таблицу `ПроблемныеСерии` добавлены колонки `НГ` и `КГ`: номер группы уникальной серии и количество строк этой серии в таблице.
- После применения предложенных значений и после исправления строки значения серии (`Номер`, `ГоденДо`, `Наименование`, предложенные поля, признак исправления) синхронизируются во всех строках той же серии.
## 1.3.1.86 (2026-08-19) ## 1.3.1.86 (2026-08-19)
### РК_ПроверкаСерий — приоритет автономера из срока (#17) ### РК_ПроверкаСерий — приоритет автономера из срока (#17)
+1 -1
View File
@@ -1 +1 @@
1.3.1.86 1.3.1.87
+2
View File
@@ -237,6 +237,8 @@
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ПорядковыйНомер" id="f14e0031-0031-4000-8000-000000000031"/> <Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ПорядковыйНомер" id="f14e0031-0031-4000-8000-000000000031"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Остаток" id="f14e0032-0032-4000-8000-000000000032"/> <Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Остаток" id="f14e0032-0032-4000-8000-000000000032"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ЕстьОстаток" id="f14e0033-0033-4000-8000-000000000033"/> <Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ЕстьОстаток" id="f14e0033-0033-4000-8000-000000000033"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.НомерГруппы" id="f14e0034-0034-4000-8000-000000000034"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.КоличествоВГруппе" id="f14e0035-0035-4000-8000-000000000035"/>
</Metadata> </Metadata>
<Metadata name="DataProcessor.РК_ПроверкаСерий.Form.Форма" id="f14e0001-0001-4000-8000-000000000001" configVersion="0717cd97a4a9d63560c7e131d1669d4a047a854d"/> <Metadata name="DataProcessor.РК_ПроверкаСерий.Form.Форма" id="f14e0001-0001-4000-8000-000000000001" configVersion="0717cd97a4a9d63560c7e131d1669d4a047a854d"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.Form.Форма.Form" id="f14e0001-0001-4000-8000-000000000001.0" configVersion="beb92a3d3dac1ead3ae9eb821c4d38aff763fda7"/> <Metadata name="DataProcessor.РК_ПроверкаСерий.Form.Форма.Form" id="f14e0001-0001-4000-8000-000000000001.0" configVersion="beb92a3d3dac1ead3ae9eb821c4d38aff763fda7"/>
+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.86</Version> <Version>1.3.1.87</Version>
<DefaultStyle/> <DefaultStyle/>
<DefaultLanguage>Language.Русский</DefaultLanguage> <DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation/> <BriefInformation/>
@@ -759,6 +759,88 @@
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput> <ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties> </Properties>
</Attribute> </Attribute>
<Attribute uuid="f14e0034-0034-4000-8000-000000000034">
<Properties>
<Name>НомерГруппы</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>НГ</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Nonnegative</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="f14e0035-0035-4000-8000-000000000035">
<Properties>
<Name>КоличествоВГруппе</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>КГ</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Nonnegative</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
</ChildObjects> </ChildObjects>
</TabularSection> </TabularSection>
<TabularSection uuid="f14e0020-0020-4000-8000-000000000020"> <TabularSection uuid="f14e0020-0020-4000-8000-000000000020">
@@ -198,6 +198,22 @@
<ContextMenu name="ПроблемныеСерииПорядковыйНомерКонтекстноеМеню" id="163"/> <ContextMenu name="ПроблемныеСерииПорядковыйНомерКонтекстноеМеню" id="163"/>
<ExtendedTooltip name="ПроблемныеСерииПорядковыйНомерРасширеннаяПодсказка" id="164"/> <ExtendedTooltip name="ПроблемныеСерииПорядковыйНомерРасширеннаяПодсказка" id="164"/>
</LabelField> </LabelField>
<LabelField name="ПроблемныеСерииНомерГруппы" id="187">
<DataPath>Объект.ПроблемныеСерии.НомерГруппы</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<Width>4</Width>
<ContextMenu name="ПроблемныеСерииНомерГруппыКонтекстноеМеню" id="188"/>
<ExtendedTooltip name="ПроблемныеСерииНомерГруппыРасширеннаяПодсказка" id="189"/>
</LabelField>
<LabelField name="ПроблемныеСерииКоличествоВГруппе" id="190">
<DataPath>Объект.ПроблемныеСерии.КоличествоВГруппе</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<Width>4</Width>
<ContextMenu name="ПроблемныеСерииКоличествоВГруппеКонтекстноеМеню" id="191"/>
<ExtendedTooltip name="ПроблемныеСерииКоличествоВГруппеРасширеннаяПодсказка" id="192"/>
</LabelField>
<InputField name="ПроблемныеСерииСерия" id="34"> <InputField name="ПроблемныеСерииСерия" id="34">
<DataPath>Объект.ПроблемныеСерии.Серия</DataPath> <DataPath>Объект.ПроблемныеСерии.Серия</DataPath>
<ReadOnly>true</ReadOnly> <ReadOnly>true</ReadOnly>
@@ -302,6 +302,8 @@
СоответствиеИмен = Новый Соответствие; СоответствиеИмен = Новый Соответствие;
СоответствиеИмен.Вставить("ПроблемныеСерииОтметка", "Отметка"); СоответствиеИмен.Вставить("ПроблемныеСерииОтметка", "Отметка");
СоответствиеИмен.Вставить("ПроблемныеСерииПорядковыйНомер", "ПорядковыйНомер"); СоответствиеИмен.Вставить("ПроблемныеСерииПорядковыйНомер", "ПорядковыйНомер");
СоответствиеИмен.Вставить("ПроблемныеСерииНомерГруппы", "НомерГруппы");
СоответствиеИмен.Вставить("ПроблемныеСерииКоличествоВГруппе", "КоличествоВГруппе");
СоответствиеИмен.Вставить("ПроблемныеСерииСерия", "Серия"); СоответствиеИмен.Вставить("ПроблемныеСерииСерия", "Серия");
СоответствиеИмен.Вставить("ПроблемныеСерииОстаток", "Остаток"); СоответствиеИмен.Вставить("ПроблемныеСерииОстаток", "Остаток");
СоответствиеИмен.Вставить("ПроблемныеСерииПроблема", "Проблема"); СоответствиеИмен.Вставить("ПроблемныеСерииПроблема", "Проблема");
@@ -414,6 +416,7 @@
КонецЦикла; КонецЦикла;
Объект.ПроблемныеСерии.Сортировать("Остаток Убыв, ПорядковыйНомер"); Объект.ПроблемныеСерии.Сортировать("Остаток Убыв, ПорядковыйНомер");
ОбновитьГруппыСтрокПоСериям();
Возврат Объект.ПроблемныеСерии.Количество(); Возврат Объект.ПроблемныеСерии.Количество();
КонецФункции КонецФункции
@@ -478,6 +481,8 @@
НовСтр = Объект.ПроблемныеСерии.Добавить(); НовСтр = Объект.ПроблемныеСерии.Добавить();
НовСтр.Отметка = Истина; НовСтр.Отметка = Истина;
НовСтр.ПорядковыйНомер = НомерСтроки; НовСтр.ПорядковыйНомер = НомерСтроки;
НовСтр.НомерГруппы = 0;
НовСтр.КоличествоВГруппе = 0;
НовСтр.Серия = ДанныеСтроки.Серия; НовСтр.Серия = ДанныеСтроки.Серия;
НовСтр.Номенклатура = НоменклатураСерииИзСоответствия( НовСтр.Номенклатура = НоменклатураСерииИзСоответствия(
ОстаткиИНоменклатура.Номенклатура, ДанныеСтроки.Серия); ОстаткиИНоменклатура.Номенклатура, ДанныеСтроки.Серия);
@@ -546,6 +551,7 @@
Если ИзмененийВСтроке > 0 Тогда Если ИзмененийВСтроке > 0 Тогда
Заполнено = Заполнено + 1; Заполнено = Заполнено + 1;
СинхронизироватьСтрокиСерии(Стр.Серия, Стр);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
@@ -703,6 +709,7 @@
Если Объект.РежимТест Тогда Если Объект.РежимТест Тогда
Стр.Исправлено = Истина; Стр.Исправлено = Истина;
Результат.Исправлено = Результат.Исправлено + 1; Результат.Исправлено = Результат.Исправлено + 1;
СинхронизироватьСтрокиСерии(Стр.Серия, Стр);
Иначе Иначе
ОбСерии = Стр.Серия.ПолучитьОбъект(); ОбСерии = Стр.Серия.ПолучитьОбъект();
Если Не ЗначениеЗаполнено(СокрЛП(Стр.Номер)) Если Не ЗначениеЗаполнено(СокрЛП(Стр.Номер))
@@ -723,6 +730,7 @@
Стр.ГоденДо = ОбСерии.ГоденДо; Стр.ГоденДо = ОбСерии.ГоденДо;
Стр.Наименование = ОбСерии.Наименование; Стр.Наименование = ОбСерии.Наименование;
Результат.Исправлено = Результат.Исправлено + 1; Результат.Исправлено = Результат.Исправлено + 1;
СинхронизироватьСтрокиСерии(Стр.Серия, Стр);
КонецЕсли; КонецЕсли;
Исключение Исключение
Стр.Комментарий = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); Стр.Комментарий = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
@@ -767,6 +775,61 @@
КонецФункции КонецФункции
&НаСервере
Процедура СинхронизироватьСтрокиСерии(Серия, ИсточникСтрока)
Если Не ЗначениеЗаполнено(Серия) Тогда
Возврат;
КонецЕсли;
Для Каждого СтрСерии Из Объект.ПроблемныеСерии Цикл
Если СтрСерии.Серия <> Серия Тогда
Продолжить;
КонецЕсли;
Если СтрСерии = ИсточникСтрока Тогда
Продолжить;
КонецЕсли;
СтрСерии.Номер = ИсточникСтрока.Номер;
СтрСерии.ГоденДо = ИсточникСтрока.ГоденДо;
СтрСерии.Наименование = ИсточникСтрока.Наименование;
СтрСерии.ПредложенныйНомер = ИсточникСтрока.ПредложенныйНомер;
СтрСерии.ПредложенныйГоденДо = ИсточникСтрока.ПредложенныйГоденДо;
СтрСерии.ПредложенноеНаименование = ИсточникСтрока.ПредложенноеНаименование;
СтрСерии.Исправлено = ИсточникСтрока.Исправлено;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьГруппыСтрокПоСериям()
СчетчикиСтрок = Новый Соответствие;
НомераГрупп = Новый Соответствие;
СледующийНомерГруппы = 0;
Для Каждого Стр Из Объект.ПроблемныеСерии Цикл
КлючСерии = Строка(Стр.Серия);
Количество = СчетчикиСтрок.Получить(КлючСерии);
Если Количество = Неопределено Тогда
Количество = 0;
КонецЕсли;
СчетчикиСтрок.Вставить(КлючСерии, Количество + 1);
Если НомераГрупп.Получить(КлючСерии) = Неопределено Тогда
СледующийНомерГруппы = СледующийНомерГруппы + 1;
НомераГрупп.Вставить(КлючСерии, СледующийНомерГруппы);
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из Объект.ПроблемныеСерии Цикл
КлючСерии = Строка(Стр.Серия);
Стр.НомерГруппы = НомераГрупп.Получить(КлючСерии);
Стр.КоличествоВГруппе = СчетчикиСтрок.Получить(КлючСерии);
КонецЦикла;
КонецПроцедуры
&НаСервере &НаСервере
Функция НастройкиСерийВида(ВидНоменклатуры, КэшНастроек) Функция НастройкиСерийВида(ВидНоменклатуры, КэшНастроек)