series_expire → СерияГоденДо; при создании серии заполняются обязательные реквизиты; ключ заглушки = владелец серий + номенклатура + ГоденДо. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,6 +4,14 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 1.3.1.110 (2026-09-02)
|
||||||
|
|
||||||
|
### РК_ЗагрузкаОстатков — серии: ГоденДо и заглушки по номенклатуре (#30, #31)
|
||||||
|
|
||||||
|
- `series_expire` из API → реквизит ТЧ `СерияГоденДо`; при создании серии заполняются `ГоденДо`, `ДатаПроизводства`, `ВидНоменклатуры`.
|
||||||
|
- Fallback срока из имени серии (`до DD.MM.YY`); при отсутствии данных — дата среза cutover.
|
||||||
|
- Заглушки: ключ `ВидСер + Номенклатура + ГоденДо`, номер `Перенос_{код номенклатуры}_{yyyyMMdd}` (не одна серия на склад).
|
||||||
|
|
||||||
## 1.3.1.109 (2026-09-01)
|
## 1.3.1.109 (2026-09-01)
|
||||||
|
|
||||||
### РК_ЗагрузкаОстатков — маппинг соглашений комиссии cutover (#24)
|
### РК_ЗагрузкаОстатков — маппинг соглашений комиссии cutover (#24)
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.Form.ЗагрузкаДанныхИзФайла" id="f47d02ff-17f2-4764-a151-627f4067a479" configVersion="247298ad849a4d46b1f412e90c0184fe64756489"/>
|
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.Form.ЗагрузкаДанныхИзФайла" id="f47d02ff-17f2-4764-a151-627f4067a479" configVersion="247298ad849a4d46b1f412e90c0184fe64756489"/>
|
||||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.Form.ЗагрузкаДанныхИзФайла.Form" id="f47d02ff-17f2-4764-a151-627f4067a479.0" configVersion="e853a6b3591994346f9ce1d3b7d5cf0daf864fb8"/>
|
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.Form.ЗагрузкаДанныхИзФайла.Form" id="f47d02ff-17f2-4764-a151-627f4067a479.0" configVersion="e853a6b3591994346f9ce1d3b7d5cf0daf864fb8"/>
|
||||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.ManagerModule" id="b6fd11ac-f702-4d13-b328-9a78b0874483.2" configVersion="78276e2de46cee0ce6ddd3972858ba87a64b96c0"/>
|
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.ManagerModule" id="b6fd11ac-f702-4d13-b328-9a78b0874483.2" configVersion="78276e2de46cee0ce6ddd3972858ba87a64b96c0"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков" id="5922bda8-8f69-487c-823a-8b09e343f59a" configVersion="de8c3f8021f3297ede82b346053d1fb65ee041a9">
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков" id="5922bda8-8f69-487c-823a-8b09e343f59a" configVersion="153a9a8d7d574ab7d159818f9fe623770d339541">
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.СтоимостьРегл" id="068e3fcc-0bd5-4af0-a192-d100909a8cc1"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.СтоимостьРегл" id="068e3fcc-0bd5-4af0-a192-d100909a8cc1"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.СкладИдентификатор" id="086673fd-91b2-4966-8472-144da87650e6"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.СкладИдентификатор" id="086673fd-91b2-4966-8472-144da87650e6"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.КомментарийСопоставления" id="09d80a73-1aa6-4ecc-a39a-c667e99e3084"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.КомментарийСопоставления" id="09d80a73-1aa6-4ecc-a39a-c667e99e3084"/>
|
||||||
@@ -130,6 +130,8 @@
|
|||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.ХарактеристикаНаименование" id="8fa984e4-bbf2-4d38-a80d-33827c3645da"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.ХарактеристикаНаименование" id="8fa984e4-bbf2-4d38-a80d-33827c3645da"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ВидЗапасовИдентификатор" id="91c330ed-7136-4788-8516-9a67b86b2189"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ВидЗапасовИдентификатор" id="91c330ed-7136-4788-8516-9a67b86b2189"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.КоличествоКОтгрузке" id="96d40d10-3374-40d1-9daf-3ddcb1cb6b7a"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.КоличествоКОтгрузке" id="96d40d10-3374-40d1-9daf-3ddcb1cb6b7a"/>
|
||||||
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.СерияГоденДо" id="b2903fb8-adc2-4c9f-8da3-fc39923d5275"/>
|
||||||
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.СерияГоденДо" id="8b6cec45-bc8b-43ef-925f-74dd3702fbaf"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.СерияИдентификатор" id="a0b08c20-f11b-47bb-ab41-3c80166deab5"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.СерияИдентификатор" id="a0b08c20-f11b-47bb-ab41-3c80166deab5"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ТочностьУказанияСрокаГодностиСерии" id="a1296c97-525a-457d-870e-634d893cea01"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ТочностьУказанияСрокаГодностиСерии" id="a1296c97-525a-457d-870e-634d893cea01"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.ВидНоменклатурыНаименование" id="a1896aca-6eaf-46df-87dc-2e9f3ea8ae64"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.ВидНоменклатурыНаименование" id="a1896aca-6eaf-46df-87dc-2e9f3ea8ae64"/>
|
||||||
@@ -201,7 +203,7 @@
|
|||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.ПодборСкладов.Form" id="9dfcb2a8-bf22-44c3-97a7-a69f70ca4d61.0" configVersion="8cddcd809beef075b470c32dd5564aebb81e405c"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.ПодборСкладов.Form" id="9dfcb2a8-bf22-44c3-97a7-a69f70ca4d61.0" configVersion="8cddcd809beef075b470c32dd5564aebb81e405c"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма" id="dc49348d-9257-4545-9c29-70c138312177" configVersion="4541c8c382171c6c02021bcc8f500135f4358aa8"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма" id="dc49348d-9257-4545-9c29-70c138312177" configVersion="4541c8c382171c6c02021bcc8f500135f4358aa8"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма.Form" id="dc49348d-9257-4545-9c29-70c138312177.0" configVersion="3f9b96e3b263b978e4086e5e52f6d507782d1219"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма.Form" id="dc49348d-9257-4545-9c29-70c138312177.0" configVersion="3f9b96e3b263b978e4086e5e52f6d507782d1219"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.ObjectModule" id="5922bda8-8f69-487c-823a-8b09e343f59a.0" configVersion="7d05f2c1f47ed05f17d7eeefd806150befbae784"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.ObjectModule" id="5922bda8-8f69-487c-823a-8b09e343f59a.0" configVersion="b8b7d78016833e5e413fe849b304ff1e52f286c0"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаЦен" id="a18e1801-18e0-4000-8000-000000000001" configVersion="800c7286acdc6bcc40d47f7aa70bdf0f18e2aa5d">
|
<Metadata name="DataProcessor.РК_ЗагрузкаЦен" id="a18e1801-18e0-4000-8000-000000000001" configVersion="800c7286acdc6bcc40d47f7aa70bdf0f18e2aa5d">
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаЦен.Attribute.ПодключениеКСтороннейБазе" id="a18e1801-18e0-4000-8000-000000000101"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаЦен.Attribute.ПодключениеКСтороннейБазе" id="a18e1801-18e0-4000-8000-000000000101"/>
|
||||||
<Metadata name="DataProcessor.РК_ЗагрузкаЦен.Attribute.ДатаЦен" id="a18e1801-18e0-4000-8000-000000000102"/>
|
<Metadata name="DataProcessor.РК_ЗагрузкаЦен.Attribute.ДатаЦен" id="a18e1801-18e0-4000-8000-000000000102"/>
|
||||||
|
|||||||
@@ -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.109</Version>
|
<Version>1.3.1.110</Version>
|
||||||
<DefaultStyle/>
|
<DefaultStyle/>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
<BriefInformation/>
|
<BriefInformation/>
|
||||||
|
|||||||
@@ -1301,6 +1301,45 @@
|
|||||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
|
<Attribute uuid="b2903fb8-adc2-4c9f-8da3-fc39923d5275">
|
||||||
|
<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="5ac27167-fc94-42ea-81cb-a29ff122415d">
|
<Attribute uuid="5ac27167-fc94-42ea-81cb-a29ff122415d">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Name>СерияСсылка</Name>
|
<Name>СерияСсылка</Name>
|
||||||
@@ -2788,6 +2827,45 @@
|
|||||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
|
<Attribute uuid="8b6cec45-bc8b-43ef-925f-74dd3702fbaf">
|
||||||
|
<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="0ecc319e-eb67-4865-b355-b4c4f57caae1">
|
<Attribute uuid="0ecc319e-eb67-4865-b355-b4c4f57caae1">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Name>СерияСсылка</Name>
|
<Name>СерияСсылка</Name>
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Сопоставление строк ТЧ с НСИ целевой ИБ.
|
// Сопоставление строк ТЧ с НСИ целевой ИБ.
|
||||||
// Серии создаются только если не найдены; заглушки Перенос_* — только при СоздаватьЗаглушкиСерий.
|
// Серии создаются только если не найдены; заглушки Перенос_{номенклатура}_{срок} — только при СоздаватьЗаглушкиСерий.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// РежимТест - Булево - Истина: только поиск, без создания серий/характеристик
|
// РежимТест - Булево - Истина: только поиск, без создания серий/характеристик
|
||||||
@@ -835,6 +835,7 @@
|
|||||||
НовСтр.СерияИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "series_guid", ""));
|
НовСтр.СерияИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "series_guid", ""));
|
||||||
НовСтр.Серия = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_name", "")));
|
НовСтр.Серия = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_name", "")));
|
||||||
НовСтр.СерияНомер = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_number", "")));
|
НовСтр.СерияНомер = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_number", "")));
|
||||||
|
НовСтр.СерияГоденДо = ДатаИзSeriesExpire(ЗначениеСвойства(СтрокаAPI, "series_expire", ""));
|
||||||
Если ПустаяСтрока(НовСтр.Серия) И Не ПустаяСтрока(НовСтр.СерияНомер) Тогда
|
Если ПустаяСтрока(НовСтр.Серия) И Не ПустаяСтрока(НовСтр.СерияНомер) Тогда
|
||||||
НовСтр.Серия = НовСтр.СерияНомер;
|
НовСтр.Серия = НовСтр.СерияНомер;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -1169,6 +1170,173 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция ДатаИзSeriesExpire(СтрокаДаты)
|
||||||
|
|
||||||
|
Текст = СокрЛП(Строка(СтрокаДаты));
|
||||||
|
Если ПустаяСтрока(Текст) Тогда
|
||||||
|
Возврат '00010101';
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
ПозT = СтрНайти(Текст, "T");
|
||||||
|
Если ПозT > 0 Тогда
|
||||||
|
Текст = Лев(Текст, ПозT - 1);
|
||||||
|
КонецЕсли;
|
||||||
|
ПозПроб = СтрНайти(Текст, " ");
|
||||||
|
Если ПозПроб > 0 Тогда
|
||||||
|
Текст = Лев(Текст, ПозПроб - 1);
|
||||||
|
КонецЕсли;
|
||||||
|
Части = СтрРазделить(Текст, "-", Ложь);
|
||||||
|
Если Части.Количество() >= 3 Тогда
|
||||||
|
Возврат Дата(Число(Части[0]), Число(Части[1]), Число(Части[2]));
|
||||||
|
КонецЕсли;
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
Возврат '00010101';
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ДатаИзИмениСерии(ИмяСерии)
|
||||||
|
|
||||||
|
Текст = СокрЛП(Строка(ИмяСерии));
|
||||||
|
Если ПустаяСтрока(Текст) Тогда
|
||||||
|
Возврат '00010101';
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Позиция = СтрНайти(НРег(Текст), " до ");
|
||||||
|
Если Позиция = 0 Тогда
|
||||||
|
Возврат '00010101';
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Хвост = СокрЛП(Сред(Текст, Позиция + 4));
|
||||||
|
Части = СтрРазделить(Хвост, ".", Ложь);
|
||||||
|
Если Части.Количество() < 3 Тогда
|
||||||
|
Возврат '00010101';
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
День = Число(Части[0]);
|
||||||
|
Месяц = Число(Части[1]);
|
||||||
|
Год = Число(Части[2]);
|
||||||
|
Если Год < 100 Тогда
|
||||||
|
Если Год >= 50 Тогда
|
||||||
|
Год = 1900 + Год;
|
||||||
|
Иначе
|
||||||
|
Год = 2000 + Год;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Дата(Год, Месяц, День);
|
||||||
|
Исключение
|
||||||
|
Возврат '00010101';
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ДатаСрезаОстатковОбработки()
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(ДатаДокументовВвода) Тогда
|
||||||
|
Возврат ДатаДокументовВвода;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ЗначениеЗаполнено(ДатаОстатков) Тогда
|
||||||
|
Возврат ДатаОстатков;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат ТекущаяДатаСеанса();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ОпределитьГоденДоСерииСтроки(СтрТ)
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(СтрТ.СерияГоденДо) Тогда
|
||||||
|
Возврат СтрТ.СерияГоденДо;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ДатаИзИмени = ДатаИзИмениСерии(СокрЛП(СтрТ.Серия));
|
||||||
|
Если ЗначениеЗаполнено(ДатаИзИмени) Тогда
|
||||||
|
Возврат ДатаИзИмени;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат '00010101';
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция КодНоменклатурыДляЗаглушкиСерии(СтрТ, Ном)
|
||||||
|
|
||||||
|
Арт = СокрЛП(СтрТ.Артикул);
|
||||||
|
Если ЗначениеЗаполнено(Арт) Тогда
|
||||||
|
Возврат Лев(СтрЗаменить(СтрЗаменить(Арт, " ", "_"), "/", "_"), 20);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Код = СокрЛП(СтрТ.НоменклатураКод);
|
||||||
|
Если ЗначениеЗаполнено(Код) Тогда
|
||||||
|
Возврат Лев(СтрЗаменить(Код, " ", "_"), 20);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Ном) Тогда
|
||||||
|
Попытка
|
||||||
|
КодНом = СокрЛП(Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "Код")));
|
||||||
|
Если ЗначениеЗаполнено(КодНом) Тогда
|
||||||
|
Возврат Лев(СтрЗаменить(КодНом, " ", "_"), 20);
|
||||||
|
КонецЕсли;
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
Возврат Лев(СтрЗаменить(Строка(Ном.УникальныйИдентификатор()), "-", ""), 8);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Лев(СтрЗаменить(Строка(СтрТ.НоменклатураИдентификатор), "-", ""), 8);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СформироватьНомерЗаглушкиСерии(СтрТ, Ном, ГоденДо)
|
||||||
|
|
||||||
|
КодНом = КодНоменклатурыДляЗаглушкиСерии(СтрТ, Ном);
|
||||||
|
СуффиксСрока = Формат(ГоденДо, "ДФ=yyyyMMdd");
|
||||||
|
Возврат "Перенос_" + КодНом + "_" + СуффиксСрока;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СформироватьИмяЗаглушкиСерии(СтрТ, Ном, ГоденДо)
|
||||||
|
|
||||||
|
Номер = СформироватьНомерЗаглушкиСерии(СтрТ, Ном, ГоденДо);
|
||||||
|
Возврат Номер + " до " + Формат(ГоденДо, "ДФ=dd.MM.yyyy");
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция КлючКэшаСерииЗаглушки(ВидСер, Ном, ГоденДо)
|
||||||
|
|
||||||
|
Возврат Строка(ВидСер.УникальныйИдентификатор()) + "|"
|
||||||
|
+ Строка(Ном.УникальныйИдентификатор()) + "|"
|
||||||
|
+ Формат(ГоденДо, "ДФ=yyyyMMdd");
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ОпределитьДатуПроизводстваСерии(ГоденДо, ЭтоЗаглушка)
|
||||||
|
|
||||||
|
// Политика cutover: дата производства в API не передаётся — дата среза остатков.
|
||||||
|
Возврат НачалоДня(ДатаСрезаОстатковОбработки());
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ЗаполнитьОбязательныеРеквизитыСерии(ОбСер, ГоденДо, ВидНом, ЭтоЗаглушка)
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(ГоденДо) Тогда
|
||||||
|
ОбСер.ГоденДо = КонецДня(ГоденДо);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
ОбСер.ДатаПроизводства = ОпределитьДатуПроизводстваСерии(ГоденДо, ЭтоЗаглушка);
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
Если ЗначениеЗаполнено(ВидНом) Тогда
|
||||||
|
ОбСер.ВидНоменклатуры = ВидНом;
|
||||||
|
КонецЕсли;
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
Функция НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
|
Функция НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
|
||||||
КэшТребуетсяСерия, КэшСерий, Результат)
|
КэшТребуетсяСерия, КэшСерий, Результат)
|
||||||
|
|
||||||
@@ -1176,39 +1344,6 @@
|
|||||||
ВидНом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры");
|
ВидНом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры");
|
||||||
ТребуетсяСерия = НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия);
|
ТребуетсяСерия = НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия);
|
||||||
|
|
||||||
ИмяСерии = СокрЛП(СтрТ.Серия);
|
|
||||||
НомерСерии = СокрЛП(СтрТ.СерияНомер);
|
|
||||||
ЭтоЗаглушка = Ложь;
|
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(ИмяСерии) И Не ЗначениеЗаполнено(НомерСерии) Тогда
|
|
||||||
Если Не ТребуетсяСерия Тогда
|
|
||||||
Возврат Сер;
|
|
||||||
КонецЕсли;
|
|
||||||
Если Не СоздаватьЗаглушкиСерий Тогда
|
|
||||||
СтрТ.КомментарийСопоставления = "Серия обязательна, в источнике пустая (заглушки выключены)";
|
|
||||||
Возврат Сер;
|
|
||||||
КонецЕсли;
|
|
||||||
КодСклЗагл = "КОМ";
|
|
||||||
Если ЗначениеЗаполнено(СкладЦель) Тогда
|
|
||||||
Попытка
|
|
||||||
КодСклЗагл = СокрЛП(Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СкладЦель, "Код")));
|
|
||||||
Исключение
|
|
||||||
КодСклЗагл = "";
|
|
||||||
КонецПопытки;
|
|
||||||
Если ПустаяСтрока(КодСклЗагл) Тогда
|
|
||||||
КодСклЗагл = Лев(СтрЗаменить(Строка(СкладЦель.УникальныйИдентификатор()), "-", ""), 8);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
ИмяСерии = "Перенос_" + КодСклЗагл + "_" + СуффиксДатыСер;
|
|
||||||
СтрТ.Серия = ИмяСерии;
|
|
||||||
ЭтоЗаглушка = Истина;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
СсылкаПоГуид = СсылкаПоUUID(Справочники.СерииНоменклатуры, СтрТ.СерияИдентификатор);
|
|
||||||
Если ЗначениеЗаполнено(СсылкаПоГуид) И ОбщегоНазначения.СсылкаСуществует(СсылкаПоГуид) Тогда
|
|
||||||
Возврат СсылкаПоГуид;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ВидСер = Неопределено;
|
ВидСер = Неопределено;
|
||||||
ИспНомерСерии = Истина;
|
ИспНомерСерии = Истина;
|
||||||
Попытка
|
Попытка
|
||||||
@@ -1222,43 +1357,102 @@
|
|||||||
ВидСер = ВидНом;
|
ВидСер = ВидНом;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КлючПоискаНомера = ?(ЗначениеЗаполнено(НомерСерии), НомерСерии, ИмяСерии);
|
ИмяСерии = СокрЛП(СтрТ.Серия);
|
||||||
КлючКэшСер = Строка(ВидСер.УникальныйИдентификатор()) + "|" + ИмяСерии + "|" + КлючПоискаНомера;
|
НомерСерии = СокрЛП(СтрТ.СерияНомер);
|
||||||
|
ЭтоЗаглушка = Ложь;
|
||||||
|
ГоденДо = ОпределитьГоденДоСерииСтроки(СтрТ);
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(ИмяСерии) И Не ЗначениеЗаполнено(НомерСерии) Тогда
|
||||||
|
Если Не ТребуетсяСерия Тогда
|
||||||
|
Возврат Сер;
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не СоздаватьЗаглушкиСерий Тогда
|
||||||
|
СтрТ.КомментарийСопоставления = "Серия обязательна, в источнике пустая (заглушки выключены)";
|
||||||
|
Возврат Сер;
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(ГоденДо) Тогда
|
||||||
|
ГоденДо = КонецДня(ДатаСрезаОстатковОбработки());
|
||||||
|
КонецЕсли;
|
||||||
|
СтрТ.СерияГоденДо = ГоденДо;
|
||||||
|
НомерСерии = СформироватьНомерЗаглушкиСерии(СтрТ, Ном, ГоденДо);
|
||||||
|
ИмяСерии = СформироватьИмяЗаглушкиСерии(СтрТ, Ном, ГоденДо);
|
||||||
|
СтрТ.Серия = ИмяСерии;
|
||||||
|
СтрТ.СерияНомер = НомерСерии;
|
||||||
|
ЭтоЗаглушка = Истина;
|
||||||
|
Иначе
|
||||||
|
Если Не ЗначениеЗаполнено(ГоденДо) Тогда
|
||||||
|
ГоденДо = ДатаИзИмениСерии(ИмяСерии);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ЗначениеЗаполнено(ГоденДо) Тогда
|
||||||
|
СтрТ.СерияГоденДо = ГоденДо;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СсылкаПоГуид = СсылкаПоUUID(Справочники.СерииНоменклатуры, СтрТ.СерияИдентификатор);
|
||||||
|
Если ЗначениеЗаполнено(СсылкаПоГуид) И ОбщегоНазначения.СсылкаСуществует(СсылкаПоГуид) Тогда
|
||||||
|
Если ЭтоЗаглушка Тогда
|
||||||
|
КэшСерий.Вставить(КлючКэшаСерииЗаглушки(ВидСер, Ном, ГоденДо), СсылкаПоГуид);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат СсылкаПоГуид;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЭтоЗаглушка Тогда
|
||||||
|
КлючКэшСер = КлючКэшаСерииЗаглушки(ВидСер, Ном, ГоденДо);
|
||||||
|
Иначе
|
||||||
|
КлючПоискаНомера = ?(ЗначениеЗаполнено(НомерСерии), НомерСерии, ИмяСерии);
|
||||||
|
КлючКэшСер = Строка(ВидСер.УникальныйИдентификатор()) + "|" + ИмяСерии + "|" + КлючПоискаНомера;
|
||||||
|
Если ЗначениеЗаполнено(ГоденДо) Тогда
|
||||||
|
КлючКэшСер = КлючКэшСер + "|" + Формат(ГоденДо, "ДФ=yyyyMMdd");
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
СерИзКэш = КэшСерий.Получить(КлючКэшСер);
|
СерИзКэш = КэшСерий.Получить(КлючКэшСер);
|
||||||
Если СерИзКэш <> Неопределено Тогда
|
Если СерИзКэш <> Неопределено Тогда
|
||||||
Возврат СерИзКэш;
|
Возврат СерИзКэш;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ИспНомерСерии И ЗначениеЗаполнено(КлючПоискаНомера) Тогда
|
Если ЭтоЗаглушка Тогда
|
||||||
Сер = Справочники.СерииНоменклатуры.НайтиПоРеквизиту("Номер", КлючПоискаНомера, , ВидСер);
|
Если ИспНомерСерии И ЗначениеЗаполнено(НомерСерии) Тогда
|
||||||
КонецЕсли;
|
Сер = Справочники.СерииНоменклатуры.НайтиПоРеквизиту("Номер", НомерСерии, , ВидСер);
|
||||||
Если Не ЗначениеЗаполнено(Сер) И ЗначениеЗаполнено(ИмяСерии) Тогда
|
КонецЕсли;
|
||||||
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(ИмяСерии, Истина, , ВидСер);
|
Если Не ЗначениеЗаполнено(Сер) И ЗначениеЗаполнено(ИмяСерии) Тогда
|
||||||
КонецЕсли;
|
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(ИмяСерии, Истина, , ВидСер);
|
||||||
Если Не ЗначениеЗаполнено(Сер) И ЗначениеЗаполнено(НомерСерии) И НомерСерии <> ИмяСерии Тогда
|
КонецЕсли;
|
||||||
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(НомерСерии, Истина, , ВидСер);
|
Иначе
|
||||||
|
КлючПоискаНомера = ?(ЗначениеЗаполнено(НомерСерии), НомерСерии, ИмяСерии);
|
||||||
|
Если ИспНомерСерии И ЗначениеЗаполнено(КлючПоискаНомера) Тогда
|
||||||
|
Сер = Справочники.СерииНоменклатуры.НайтиПоРеквизиту("Номер", КлючПоискаНомера, , ВидСер);
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(Сер) И ЗначениеЗаполнено(ИмяСерии) Тогда
|
||||||
|
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(ИмяСерии, Истина, , ВидСер);
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(Сер) И ЗначениеЗаполнено(НомерСерии) И НомерСерии <> ИмяСерии Тогда
|
||||||
|
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(НомерСерии, Истина, , ВидСер);
|
||||||
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
МожноСоздать = Не РежимТест И ЗначениеЗаполнено(ИмяСерии);
|
МожноСоздать = Не РежимТест И (ЗначениеЗаполнено(ИмяСерии) Или ЗначениеЗаполнено(НомерСерии));
|
||||||
Если ЭтоЗаглушка Тогда
|
Если ЭтоЗаглушка Тогда
|
||||||
МожноСоздать = МожноСоздать И СоздаватьЗаглушкиСерий;
|
МожноСоздать = МожноСоздать И СоздаватьЗаглушкиСерий И ЗначениеЗаполнено(ГоденДо);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Сер) И МожноСоздать Тогда
|
Если Не ЗначениеЗаполнено(Сер) И МожноСоздать Тогда
|
||||||
Попытка
|
Попытка
|
||||||
|
Если Не ЗначениеЗаполнено(ГоденДо) Тогда
|
||||||
|
ГоденДо = КонецДня(ДатаСрезаОстатковОбработки());
|
||||||
|
СтрТ.СерияГоденДо = ГоденДо;
|
||||||
|
КонецЕсли;
|
||||||
ОбСер = Справочники.СерииНоменклатуры.ПустойОбъект(ВидСер);
|
ОбСер = Справочники.СерииНоменклатуры.ПустойОбъект(ВидСер);
|
||||||
Если ИспНомерСерии Тогда
|
Если ИспНомерСерии Тогда
|
||||||
НомерСер = КлючПоискаНомера;
|
ОбСер.Номер = ?(ЗначениеЗаполнено(НомерСерии), НомерСерии,
|
||||||
Если ЭтоЗаглушка И СтрНачинаетсяС(ИмяСерии, "Перенос_") Тогда
|
?(ЗначениеЗаполнено(ИмяСерии), ИмяСерии, ""));
|
||||||
НомерСер = Сред(ИмяСерии, СтрДлина("Перенос_") + 1);
|
|
||||||
КонецЕсли;
|
|
||||||
ОбСер.Номер = НомерСер;
|
|
||||||
Иначе
|
Иначе
|
||||||
Попытка
|
Попытка
|
||||||
ОбСер.Наименование = ИмяСерии;
|
ОбСер.Наименование = ИмяСерии;
|
||||||
Исключение
|
Исключение
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
ЗаполнитьОбязательныеРеквизитыСерии(ОбСер, ГоденДо, ВидНом, ЭтоЗаглушка);
|
||||||
ОбСер.Записать();
|
ОбСер.Записать();
|
||||||
Сер = ОбСер.Ссылка;
|
Сер = ОбСер.Ссылка;
|
||||||
Результат.СозданоСерий = Результат.СозданоСерий + 1;
|
Результат.СозданоСерий = Результат.СозданоСерий + 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user