РК_ПроверкаСерий 1.3.1.70: форма проверки и исправления серий (#14).

Поиск пустых номеров/сроков с учётом настроек вида; предложения из наименования; режим тест.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mihailkudravcev
2026-08-17 10:32:10 +03:00
parent 349a719307
commit 890cf22274
7 changed files with 1282 additions and 5 deletions
+9
View File
@@ -4,6 +4,15 @@
---
## 1.3.1.70 (2026-08-17)
### РК_ПроверкаСерий — проверка и исправление серий (#14)
- Обработка **Проверка серий**: форма поиска проблем в `СерииНоменклатуры`.
- Учитываются настройки вида (`ИспользоватьНомерСерии`, `ИспользоватьСрокГодностиСерии`).
- Предложения: номер и срок из наименования; наименование «до dd.MM.yy» для серий без номера.
- Режим тест (без записи), исправление отмеченных строк.
## 1.3.1.69 (2026-08-17)
### РК_ЗагрузкаОстатков — исправление кнопки «Заполнить справочники отбора» (#12)
+1 -1
View File
@@ -1 +1 @@
1.3.1.69
1.3.1.70
+19 -1
View File
@@ -200,7 +200,25 @@
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.ObjectModule" id="5922bda8-8f69-487c-823a-8b09e343f59a.0" configVersion="5c12046699326069d36aeba244a9ef89b2b8018a"/>
<Metadata name="DataProcessor.РК_ОбработкаПарнеровКонтрагентов" id="323c24ca-5279-461a-b03a-9571cb4f0911" configVersion="61642f5832ac2ff8e4ddfeebbb89bcf83e000868"/>
<Metadata name="DataProcessor.РК_ОбработкаПарнеровКонтрагентов.ManagerModule" id="323c24ca-5279-461a-b03a-9571cb4f0911.2" configVersion="8634600cd7d76b5056a979c60692e47f616b3f5b"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий" id="dfe0cb7f-a442-4f22-9f10-bf20a425b4d9" configVersion="7a50748fae6d0ae1453705d741ade2df521a12ce"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий" id="dfe0cb7f-a442-4f22-9f10-bf20a425b4d9" configVersion="a1b2c3d4e5f6789012345678abcdef0123456789">
<Metadata name="DataProcessor.РК_ПроверкаСерий.Attribute.РежимТест" id="f14e0002-0002-4000-8000-000000000002"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии" id="f14e0003-0003-4000-8000-000000000003"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Отметка" id="f14e0010-0010-4000-8000-000000000010"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Серия" id="f14e0011-0011-4000-8000-000000000011"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Номенклатура" id="f14e0012-0012-4000-8000-000000000012"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ВидНоменклатуры" id="f14e0013-0013-4000-8000-000000000013"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Наименование" id="f14e0014-0014-4000-8000-000000000014"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Номер" id="f14e0015-0015-4000-8000-000000000015"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ГоденДо" id="f14e0016-0016-4000-8000-000000000016"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Проблема" id="f14e0017-0017-4000-8000-000000000017"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ПредложенныйНомер" id="f14e0018-0018-4000-8000-000000000018"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ПредложенныйГоденДо" id="f14e0019-0019-4000-8000-000000000019"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.ПредложенноеНаименование" id="f14e001a-001a-4000-8000-00000000001a"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Исправлено" id="f14e001b-001b-4000-8000-00000000001b"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.TabularSection.ПроблемныеСерии.Attribute.Комментарий" id="f14e001c-001c-4000-8000-00000000001c"/>
</Metadata>
<Metadata name="DataProcessor.РК_ПроверкаСерий.Form.Форма" id="f14e0001-0001-4000-8000-000000000001" configVersion="b2c3d4e5f678901234567890abcdef012345678901"/>
<Metadata name="DataProcessor.РК_ПроверкаСерий.Form.Форма.Form" id="f14e0001-0001-4000-8000-000000000001.0" configVersion="c3d4e5f678901234567890abcdef0123456789012"/>
<Metadata name="DefinedType.РаспоряжениеНаОтгрузку" id="afb3288b-968a-4b19-8b67-721e50974db4" configVersion="b4e7b9549112d57eb9da5a9947237f4f601039e7"/>
<Metadata name="Document.ЗаказКлиента" id="83c6bfba-2c6d-4fe7-a05b-1b54e8208966" configVersion="0f1941010a3f2e5c6ace2f57e4dab142a17f8f20"/>
<Metadata name="Document.РасходныйОрдерНаТовары" id="3d303157-526b-4725-8f94-4077b108b463" configVersion="43ce890f8166575f8e201b20e1bea4cf341f6e47">
@@ -21,12 +21,577 @@
</Synonym>
<Comment/>
<UseStandardCommands>true</UseStandardCommands>
<DefaultForm/>
<DefaultForm>DataProcessor.РК_ПроверкаСерий.Form.Форма</DefaultForm>
<AuxiliaryForm/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<ExtendedPresentation/>
<Explanation/>
</Properties>
<ChildObjects/>
<ChildObjects>
<Attribute uuid="f14e0002-0002-4000-8000-000000000002">
<Properties>
<Name>РежимТест</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Режим тест (без записи)</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Если включено — только показать, что будет исправлено, без записи в базу</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<TabularSection uuid="f14e0003-0003-4000-8000-000000000003">
<InternalInfo>
<xr:GeneratedType name="DataProcessorTabularSection.РК_ПроверкаСерий.ПроблемныеСерии" category="TabularSection">
<xr:TypeId>f14e0003-0003-4001-8000-000000000003</xr:TypeId>
<xr:ValueId>f14e0003-0003-4002-8000-000000000003</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="DataProcessorTabularSectionRow.РК_ПроверкаСерий.ПроблемныеСерии" category="TabularSectionRow">
<xr:TypeId>f14e0003-0003-4003-8000-000000000003</xr:TypeId>
<xr:ValueId>f14e0003-0003-4004-8000-000000000003</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>ПроблемныеСерии</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проблемные серии</v8:content>
</v8:item>
</Synonym>
<Comment/>
<ToolTip/>
<FillChecking>DontCheck</FillChecking>
</Properties>
<ChildObjects>
<Attribute uuid="f14e0010-0010-4000-8000-000000000010">
<Properties>
<Name>Отметка</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Отметка</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:boolean</v8:Type>
</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="f14e0011-0011-4000-8000-000000000011">
<Properties>
<Name>Серия</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Серия</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:CatalogRef.СерииНоменклатуры</v8:Type>
</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="f14e0012-0012-4000-8000-000000000012">
<Properties>
<Name>Номенклатура</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Номенклатура</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:CatalogRef.Номенклатура</v8:Type>
</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="f14e0013-0013-4000-8000-000000000013">
<Properties>
<Name>ВидНоменклатуры</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вид номенклатуры</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:CatalogRef.ВидыНоменклатуры</v8:Type>
</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="f14e0014-0014-4000-8000-000000000014">
<Properties>
<Name>Наименование</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>150</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="f14e0015-0015-4000-8000-000000000015">
<Properties>
<Name>Номер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Номер</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>200</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="f14e0016-0016-4000-8000-000000000016">
<Properties>
<Name>ГоденДо</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Годен до</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</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="f14e0017-0017-4000-8000-000000000017">
<Properties>
<Name>Проблема</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проблема</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="f14e0018-0018-4000-8000-000000000018">
<Properties>
<Name>ПредложенныйНомер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предложенный номер</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>200</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="f14e0019-0019-4000-8000-000000000019">
<Properties>
<Name>ПредложенныйГоденДо</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предложенный годен до</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</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="f14e001a-001a-4000-8000-00000000001a">
<Properties>
<Name>ПредложенноеНаименование</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предложенное наименование</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>150</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="f14e001b-001b-4000-8000-00000000001b">
<Properties>
<Name>Исправлено</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Исправлено</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:boolean</v8:Type>
</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="f14e001c-001c-4000-8000-00000000001c">
<Properties>
<Name>Комментарий</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Комментарий</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
</ChildObjects>
</TabularSection>
<Form>Форма</Form>
</ChildObjects>
</DataProcessor>
</MetaDataObject>
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="f14e0001-0001-4000-8000-000000000001">
<Properties>
<Name>Форма</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,273 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проверка и исправление серий номенклатуры</v8:content>
</v8:item>
</Title>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаНайтиПроблемы" id="1">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.НайтиПроблемы</CommandName>
<ExtendedTooltip name="ФормаНайтиПроблемыРасширеннаяПодсказка" id="2"/>
</Button>
<Button name="ФормаИсправитьОтмеченные" id="3">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ИсправитьОтмеченные</CommandName>
<ExtendedTooltip name="ФормаИсправитьОтмеченныеРасширеннаяПодсказка" id="4"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<CheckBoxField name="РежимТест" id="5">
<DataPath>Объект.РежимТест</DataPath>
<TitleLocation>Right</TitleLocation>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Без записи в базу — только показать результат исправления</v8:content>
</v8:item>
</ToolTip>
<ToolTipRepresentation>ShowRight</ToolTipRepresentation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="РежимТестКонтекстноеМеню" id="6"/>
<ExtendedTooltip name="РежимТестРасширеннаяПодсказка" id="7"/>
</CheckBoxField>
<Table name="ПроблемныеСерии" id="10">
<Representation>List</Representation>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<AutoInsertNewRow>false</AutoInsertNewRow>
<EnableStartDrag>false</EnableStartDrag>
<EnableDrag>false</EnableDrag>
<DataPath>Объект.ПроблемныеСерии</DataPath>
<RowFilter xsi:nil="true"/>
<ContextMenu name="ПроблемныеСерииКонтекстноеМеню" id="11">
<Autofill>false</Autofill>
<ChildItems>
<Button name="ПроблемныеСерииКонтекстноеМенюОтметить" id="12">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Отметить</CommandName>
<ExtendedTooltip name="ПроблемныеСерииКонтекстноеМенюОтметитьРасширеннаяПодсказка" id="13"/>
</Button>
<Button name="ПроблемныеСерииКонтекстноеМенюСнятьОтметку" id="14">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.СнятьОтметку</CommandName>
<ExtendedTooltip name="ПроблемныеСерииКонтекстноеМенюСнятьОтметкуРасширеннаяПодсказка" id="15"/>
</Button>
</ChildItems>
</ContextMenu>
<AutoCommandBar name="ПроблемныеСерииКоманднаяПанель" id="16">
<ChildItems>
<Button name="ПроблемныеСерииОтметить" id="17">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Отметить</CommandName>
<ExtendedTooltip name="ПроблемныеСерииОтметитьРасширеннаяПодсказка" id="18"/>
</Button>
<Button name="ПроблемныеСерииСнятьОтметку" id="19">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.СнятьОтметку</CommandName>
<ExtendedTooltip name="ПроблемныеСерииСнятьОтметкуРасширеннаяПодсказка" id="20"/>
</Button>
</ChildItems>
</AutoCommandBar>
<ExtendedTooltip name="ПроблемныеСерииРасширеннаяПодсказка" id="21"/>
<SearchStringAddition name="ПроблемныеСерииСтрокаПоиска" id="22">
<AdditionSource>
<Item>ПроблемныеСерии</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ПроблемныеСерииСтрокаПоискаКонтекстноеМеню" id="23"/>
<ExtendedTooltip name="ПроблемныеСерииСтрокаПоискаРасширеннаяПодсказка" id="24"/>
</SearchStringAddition>
<ViewStatusAddition name="ПроблемныеСерииСостояниеПросмотра" id="25">
<AdditionSource>
<Item>ПроблемныеСерии</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ПроблемныеСерииСостояниеПросмотраКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="ПроблемныеСерииСостояниеПросмотраРасширеннаяПодсказка" id="27"/>
</ViewStatusAddition>
<SearchControlAddition name="ПроблемныеСерииУправлениеПоиском" id="28">
<AdditionSource>
<Item>ПроблемныеСерии</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ПроблемныеСерииУправлениеПоискомКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="ПроблемныеСерииУправлениеПоискомРасширеннаяПодсказка" id="30"/>
</SearchControlAddition>
<ChildItems>
<CheckBoxField name="ПроблемныеСерииОтметка" id="31">
<DataPath>Объект.ПроблемныеСерии.Отметка</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПроблемныеСерииОтметкаКонтекстноеМеню" id="32"/>
<ExtendedTooltip name="ПроблемныеСерииОтметкаРасширеннаяПодсказка" id="33"/>
</CheckBoxField>
<InputField name="ПроблемныеСерииСерия" id="34">
<DataPath>Объект.ПроблемныеСерии.Серия</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<OpenButton>true</OpenButton>
<ContextMenu name="ПроблемныеСерииСерияКонтекстноеМеню" id="35"/>
<ExtendedTooltip name="ПроблемныеСерииСерияРасширеннаяПодсказка" id="36"/>
</InputField>
<InputField name="ПроблемныеСерииПроблема" id="37">
<DataPath>Объект.ПроблемныеСерии.Проблема</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииПроблемаКонтекстноеМеню" id="38"/>
<ExtendedTooltip name="ПроблемныеСерииПроблемаРасширеннаяПодсказка" id="39"/>
</InputField>
<InputField name="ПроблемныеСерииНоменклатура" id="40">
<DataPath>Объект.ПроблемныеСерии.Номенклатура</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииНоменклатураКонтекстноеМеню" id="41"/>
<ExtendedTooltip name="ПроблемныеСерииНоменклатураРасширеннаяПодсказка" id="42"/>
</InputField>
<InputField name="ПроблемныеСерииВидНоменклатуры" id="43">
<DataPath>Объект.ПроблемныеСерии.ВидНоменклатуры</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииВидНоменклатурыКонтекстноеМеню" id="44"/>
<ExtendedTooltip name="ПроблемныеСерииВидНоменклатурыРасширеннаяПодсказка" id="45"/>
</InputField>
<InputField name="ПроблемныеСерииНаименование" id="46">
<DataPath>Объект.ПроблемныеСерии.Наименование</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииНаименованиеКонтекстноеМеню" id="47"/>
<ExtendedTooltip name="ПроблемныеСерииНаименованиеРасширеннаяПодсказка" id="48"/>
</InputField>
<InputField name="ПроблемныеСерииНомер" id="49">
<DataPath>Объект.ПроблемныеСерии.Номер</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииНомерКонтекстноеМеню" id="50"/>
<ExtendedTooltip name="ПроблемныеСерииНомерРасширеннаяПодсказка" id="51"/>
</InputField>
<InputField name="ПроблемныеСерииГоденДо" id="52">
<DataPath>Объект.ПроблемныеСерии.ГоденДо</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииГоденДоКонтекстноеМеню" id="53"/>
<ExtendedTooltip name="ПроблемныеСерииГоденДоРасширеннаяПодсказка" id="54"/>
</InputField>
<InputField name="ПроблемныеСерииПредложенныйНомер" id="55">
<DataPath>Объект.ПроблемныеСерии.ПредложенныйНомер</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииПредложенныйНомерКонтекстноеМеню" id="56"/>
<ExtendedTooltip name="ПроблемныеСерииПредложенныйНомерРасширеннаяПодсказка" id="57"/>
</InputField>
<InputField name="ПроблемныеСерииПредложенныйГоденДо" id="58">
<DataPath>Объект.ПроблемныеСерии.ПредложенныйГоденДо</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииПредложенныйГоденДоКонтекстноеМеню" id="59"/>
<ExtendedTooltip name="ПроблемныеСерииПредложенныйГоденДоРасширеннаяПодсказка" id="60"/>
</InputField>
<InputField name="ПроблемныеСерииПредложенноеНаименование" id="61">
<DataPath>Объект.ПроблемныеСерии.ПредложенноеНаименование</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииПредложенноеНаименованиеКонтекстноеМеню" id="62"/>
<ExtendedTooltip name="ПроблемныеСерииПредложенноеНаименованиеРасширеннаяПодсказка" id="63"/>
</InputField>
<CheckBoxField name="ПроблемныеСерииИсправлено" id="64">
<DataPath>Объект.ПроблемныеСерии.Исправлено</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПроблемныеСерииИсправленоКонтекстноеМеню" id="65"/>
<ExtendedTooltip name="ПроблемныеСерииИсправленоРасширеннаяПодсказка" id="66"/>
</CheckBoxField>
<InputField name="ПроблемныеСерииКомментарий" id="67">
<DataPath>Объект.ПроблемныеСерии.Комментарий</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПроблемныеСерииКомментарийКонтекстноеМеню" id="68"/>
<ExtendedTooltip name="ПроблемныеСерииКомментарийРасширеннаяПодсказка" id="69"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:DataProcessorObject.РК_ПроверкаСерий</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
</Attributes>
<Commands>
<Command name="НайтиПроблемы" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Найти проблемы</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить таблицу сериями с пустым номером или сроком годности (с учётом настроек вида)</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.Find</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>НайтиПроблемы</Action>
</Command>
<Command name="ИсправитьОтмеченные" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Исправить отмеченные</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Записать предложенные значения в отмеченные серии</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.Write</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ИсправитьОтмеченные</Action>
</Command>
<Command name="Отметить" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Отметить</v8:content>
</v8:item>
</Title>
<Picture>
<xr:Ref>StdPicture.CheckAll</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>Отметить</Action>
</Command>
<Command name="СнятьОтметку" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Снять отметку</v8:content>
</v8:item>
</Title>
<Picture>
<xr:Ref>StdPicture.UncheckAll</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>СнятьОтметку</Action>
</Command>
</Commands>
</Form>
@@ -0,0 +1,390 @@
// Проверка и исправление данных Справочник.СерииНоменклатуры (#14).
// Логика заполнения номера/срока из наименования — как docs/transfer/Код_исправления_серий_crm3-26.bsl.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.РежимТест = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура НайтиПроблемы(Команда)
Попытка
Количество = НайтиПроблемыНаСервере();
Исключение
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
ПоказатьОповещениеПользователя("Проверка серий", ,
"Найдено проблем: " + Формат(Количество, "ЧН=0; ЧГ=0"));
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьОтмеченные(Команда)
Если Объект.ПроблемныеСерии.Количество() = 0 Тогда
ПоказатьПредупреждение(, "Сначала выполните поиск проблем");
Возврат;
КонецЕсли;
Если Не ЕстьОтмеченныеСтроки() Тогда
ПоказатьПредупреждение(, "Отметьте строки для исправления");
Возврат;
КонецЕсли;
Если Не Объект.РежимТест Тогда
Описание = Новый ОписаниеОповещения("ИсправитьОтмеченныеПослеВопроса", ЭтотОбъект);
ПоказатьВопрос(Описание,
"Записать исправления в справочник серий?",
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ВыполнитьИсправлениеНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьОтмеченныеПослеВопроса(РезультатВопроса, ДопПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ВыполнитьИсправлениеНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьИсправлениеНаКлиенте()
Попытка
Результат = ИсправитьОтмеченныеНаСервере();
Исключение
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
Текст = СтрШаблон("Исправлено: %1; ошибок: %2%3",
Формат(Результат.Исправлено, "ЧН=0; ЧГ=0"),
Формат(Результат.Ошибок, "ЧН=0; ЧГ=0"),
?(Объект.РежимТест, " (тест)", ""));
ПоказатьОповещениеПользователя("Проверка серий", , Текст);
КонецПроцедуры
&НаКлиенте
Процедура Отметить(Команда)
УстановитьОтметкуВыделенныхСтрок(Истина);
КонецПроцедуры
&НаКлиенте
Процедура СнятьОтметку(Команда)
УстановитьОтметкуВыделенныхСтрок(Ложь);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Функция ЕстьОтмеченныеСтроки()
Для Каждого Стр Из Объект.ПроблемныеСерии Цикл
Если Стр.Отметка Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура УстановитьОтметкуВыделенныхСтрок(Отметка)
ТаблицаФормы = Элементы.ПроблемныеСерии;
Выделенные = ТаблицаФормы.ВыделенныеСтроки;
Если Выделенные.Количество() = 0 Тогда
ПоказатьПредупреждение(, "Выделите строки в таблице");
Возврат;
КонецЕсли;
Для Каждого ИдентификаторСтроки Из Выделенные Цикл
СтрокаТЗ = Объект.ПроблемныеСерии.НайтиПоИдентификатору(ИдентификаторСтроки);
Если СтрокаТЗ <> Неопределено Тогда
СтрокаТЗ.Отметка = Отметка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция НайтиПроблемыНаСервере()
Объект.ПроблемныеСерии.Очистить();
КэшНастроек = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сер.Ссылка КАК Серия,
| Сер.Владелец КАК Номенклатура,
| Сер.ВидНоменклатуры КАК ВидНоменклатуры,
| Сер.Наименование КАК Наименование,
| Сер.Номер КАК Номер,
| Сер.ГоденДо КАК ГоденДо
|ИЗ
| Справочник.СерииНоменклатуры КАК Сер
|ГДЕ
| НЕ Сер.ПометкаУдаления
| И (
| Сер.Номер = """"
| ИЛИ Сер.Номер ЕСТЬ NULL
| ИЛИ Сер.ГоденДо <= ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ Сер.ГоденДо ЕСТЬ NULL
| ИЛИ (
| (Сер.Наименование = """" ИЛИ Сер.Наименование ЕСТЬ NULL)
| И Сер.ГоденДо > ДАТАВРЕМЯ(2000, 1, 1)
| )
| )";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДобавитьСтрокуПроблемы(Выборка, КэшНастроек);
КонецЦикла;
Возврат Объект.ПроблемныеСерии.Количество();
КонецФункции
&НаСервере
Процедура ДобавитьСтрокуПроблемы(Выборка, КэшНастроек)
Настройки = НастройкиСерийВида(Выборка.ВидНоменклатуры, КэшНастроек);
ИспНомер = Настройки.ИспользоватьНомерСерии;
ИспСрок = Настройки.ИспользоватьСрокГодностиСерии;
ПустойНомер = Не ЗначениеЗаполнено(СокрЛП(Выборка.Номер));
ПустойСрок = Не СрокГодностиЗаполнен(Выборка.ГоденДо);
ПустоеИмя = Не ЗначениеЗаполнено(СокрЛП(Выборка.Наименование));
Проблемы = Новый Массив;
ПредложенныйНомер = "";
ПредложенныйГоденДо = '00010101';
ПредложенноеНаименование = "";
Если ИспНомер И ПустойНомер Тогда
ПредложенныйНомер = ИзвлечьНомерИзНаименования(Выборка.Наименование);
Проблемы.Добавить("Пустой номер");
КонецЕсли;
Если ИспСрок И ПустойСрок Тогда
ПредложенныйГоденДо = ИзвлечьГоденДоИзНаименования(Выборка.Наименование);
Проблемы.Добавить("Пустой срок годности");
Если Не СрокГодностиЗаполнен(ПредложенныйГоденДо) Тогда
ПредложенныйГоденДо = '00010101';
КонецЕсли;
КонецЕсли;
Если Не ИспНомер И ПустоеИмя И СрокГодностиЗаполнен(Выборка.ГоденДо) Тогда
ПредложенноеНаименование = "до " + Формат(Выборка.ГоденДо, "ДФ=dd.MM.yy");
Проблемы.Добавить("Пустое наименование");
КонецЕсли;
Если Проблемы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
НовСтр = Объект.ПроблемныеСерии.Добавить();
НовСтр.Отметка = Истина;
НовСтр.Серия = Выборка.Серия;
НовСтр.Номенклатура = Выборка.Номенклатура;
НовСтр.ВидНоменклатуры = Выборка.ВидНоменклатуры;
НовСтр.Наименование = Выборка.Наименование;
НовСтр.Номер = Выборка.Номер;
НовСтр.ГоденДо = Выборка.ГоденДо;
НовСтр.Проблема = СтрСоединить(Проблемы, "; ");
НовСтр.ПредложенныйНомер = ПредложенныйНомер;
НовСтр.ПредложенныйГоденДо = ПредложенныйГоденДо;
НовСтр.ПредложенноеНаименование = ПредложенноеНаименование;
КонецПроцедуры
&НаСервере
Функция ИсправитьОтмеченныеНаСервере()
Результат = Новый Структура("Исправлено, Ошибок", 0, 0);
Для Каждого Стр Из Объект.ПроблемныеСерии Цикл
Если Не Стр.Отметка Или Стр.Исправлено Тогда
Продолжить;
КонецЕсли;
Стр.Комментарий = "";
ЕстьИзменения = Ложь;
Если СтрНайти(Стр.Проблема, "Пустой номер") > 0
И ЗначениеЗаполнено(СокрЛП(Стр.ПредложенныйНомер))
И Не ЗначениеЗаполнено(СокрЛП(Стр.Номер)) Тогда
ЕстьИзменения = Истина;
КонецЕсли;
Если СтрНайти(Стр.Проблема, "Пустой срок годности") > 0
И СрокГодностиЗаполнен(Стр.ПредложенныйГоденДо)
И Не СрокГодностиЗаполнен(Стр.ГоденДо) Тогда
ЕстьИзменения = Истина;
КонецЕсли;
Если СтрНайти(Стр.Проблема, "Пустое наименование") > 0
И ЗначениеЗаполнено(СокрЛП(Стр.ПредложенноеНаименование))
И Не ЗначениеЗаполнено(СокрЛП(Стр.Наименование)) Тогда
ЕстьИзменения = Истина;
КонецЕсли;
Если Не ЕстьИзменения Тогда
Стр.Комментарий = "Нет данных для исправления";
Продолжить;
КонецЕсли;
Попытка
Если Объект.РежимТест Тогда
Стр.Исправлено = Истина;
Результат.Исправлено = Результат.Исправлено + 1;
Иначе
ОбСерии = Стр.Серия.ПолучитьОбъект();
Если СтрНайти(Стр.Проблема, "Пустой номер") > 0
И ЗначениеЗаполнено(СокрЛП(Стр.ПредложенныйНомер)) Тогда
ОбСерии.Номер = СокрЛП(Стр.ПредложенныйНомер);
КонецЕсли;
Если СтрНайти(Стр.Проблема, "Пустой срок годности") > 0
И СрокГодностиЗаполнен(Стр.ПредложенныйГоденДо) Тогда
ОбСерии.ГоденДо = Стр.ПредложенныйГоденДо;
КонецЕсли;
Если СтрНайти(Стр.Проблема, "Пустое наименование") > 0
И ЗначениеЗаполнено(СокрЛП(Стр.ПредложенноеНаименование)) Тогда
ОбСерии.Наименование = СокрЛП(Стр.ПредложенноеНаименование);
КонецЕсли;
ОбСерии.Записать();
Стр.Исправлено = Истина;
Стр.Номер = ОбСерии.Номер;
Стр.ГоденДо = ОбСерии.ГоденДо;
Стр.Наименование = ОбСерии.Наименование;
Результат.Исправлено = Результат.Исправлено + 1;
КонецЕсли;
Исключение
Стр.Комментарий = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Результат.Ошибок = Результат.Ошибок + 1;
КонецПопытки;
КонецЦикла;
Возврат Результат;
КонецФункции
&НаСервере
Функция НастройкиСерийВида(ВидНоменклатуры, КэшНастроек)
Ключ = Строка(ВидНоменклатуры);
Настройки = КэшНастроек.Получить(Ключ);
Если Настройки <> Неопределено Тогда
Возврат Настройки;
КонецЕсли;
Настройки = Новый Структура("ИспользоватьНомерСерии, ИспользоватьСрокГодностиСерии", Ложь, Ложь);
Если ЗначениеЗаполнено(ВидНоменклатуры) Тогда
Попытка
Настр = Справочники.ВидыНоменклатуры.НастройкиИспользованияСерий(ВидНоменклатуры);
Настройки.ИспользоватьНомерСерии = Настр.ИспользоватьНомерСерии;
Настройки.ИспользоватьСрокГодностиСерии = Настр.ИспользоватьСрокГодностиСерии;
Исключение
КонецПопытки;
КонецЕсли;
КэшНастроек.Вставить(Ключ, Настройки);
Возврат Настройки;
КонецФункции
&НаСервере
Функция СрокГодностиЗаполнен(ГоденДо)
Возврат ЗначениеЗаполнено(ГоденДо) И ГоденДо > '20000101';
КонецФункции
&НаСервере
Функция ИзвлечьНомерИзНаименования(Текст)
Текст = СокрЛП(Текст);
Если Не ЗначениеЗаполнено(Текст) Тогда
Возврат "";
КонецЕсли;
ПозДо = Найти(НРег(Текст), "до ");
Если ПозДо > 0 Тогда
ЛеваяЧасть = СокрЛП(Лев(Текст, ПозДо - 1));
Если Не ЗначениеЗаполнено(ЛеваяЧасть) Тогда
Возврат "";
КонецЕсли;
ПозСлэш = СтрНайти(ЛеваяЧасть, "/");
Если ПозСлэш > 0 Тогда
Возврат СокрЛП(Сред(ЛеваяЧасть, ПозСлэш + 1));
КонецЕсли;
Возврат ЛеваяЧасть;
КонецЕсли;
Возврат Текст;
КонецФункции
&НаСервере
Функция ИзвлечьГоденДоИзНаименования(Текст)
Текст = СокрЛП(Текст);
Если Не ЗначениеЗаполнено(Текст) Тогда
Возврат '00010101';
КонецЕсли;
ПозДо = Найти(НРег(Текст), "до ");
Если ПозДо = 0 Тогда
Возврат '00010101';
КонецЕсли;
Фрагмент = СокрЛП(Сред(Текст, ПозДо + 3));
Возврат РазобратьДатуИзФрагмента(Фрагмент);
КонецФункции
&НаСервере
Функция РазобратьДатуИзФрагмента(Фрагмент)
Части = СтрРазделить(Фрагмент, ".", Ложь);
Если Части.Количество() < 3 Тогда
Возврат '00010101';
КонецЕсли;
Попытка
День = Число(СокрЛП(Части[0]));
Месяц = Число(СокрЛП(Части[1]));
Год = Число(СокрЛП(Части[2]));
Если Год < 100 Тогда
Год = Год + 2000;
КонецЕсли;
Возврат Дата(Год, Месяц, День);
Исключение
Возврат '00010101';
КонецПопытки;
КонецФункции
#КонецОбласти