1.3.1.115: автовыгрузка CSV таблиц по флагу ВыгружатьДанныеТаблиц (#29).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mihailkudravcev
2026-09-03 16:33:57 +03:00
parent 17c50a30d0
commit 65e67a1adb
7 changed files with 129 additions and 11 deletions
+10
View File
@@ -4,6 +4,16 @@
---
## 1.3.1.115 (2026-09-03)
### РК_ЗагрузкаОстатков — автовыгрузка CSV таблиц (#29)
- Реквизит `ВыгружатьДанныеТаблиц` (сохраняется): при включении после загрузки / сопоставления / свёртки / создания документов пишет CSV в каталог выгрузки.
- Фиксированные имена: `crm-dev_to_crm3-26_own.csv`, `crm-dev_to_crm3-26_comm.csv` (перезапись).
- «Свернуть комиссионные остатки» — перезапись только `*_comm.csv`.
- Ручная «Выгрузить таблицы в CSV» по-прежнему с уникальными timestamp-именами.
- Клиент/сервер — как у ручной выгрузки; без пути при включённом флаге — предупреждение.
## 1.3.1.114 (2026-09-03)
### РК_ЗагрузкаОстатков — раскладка вкладки Настройки (#29)
+1 -1
View File
@@ -1 +1 @@
1.3.1.114
1.3.1.115
+5 -4
View File
@@ -50,14 +50,14 @@
<Metadata name="CommonPicture.ПодписанЗашифрованСостояния" id="a0bd1007-a115-4d79-8160-d4f59cd57ffb" configVersion="08ed86b1653fc955004b703d7dce5d947956fdda"/>
<Metadata name="CommonPicture.СерииНоменклатурыКолонкаСтатусов" id="f2badc5e-4af7-4c05-be31-b4d5b7642ab5" configVersion="d070fbc999630568abec9d83770ed805666a24d9"/>
<Metadata name="CommonPicture.СтатусыУказанияСерий" id="cc5cab6d-e293-4890-a422-6e8cd2fb58bb" configVersion="17b11a4c6ec74254745177f7c136d38af0214bdf"/>
<Metadata name="Configuration.crm326RHANA" id="ef31d55b-3788-4972-affb-b7aefd3838aa" configVersion="1d348e5f245451d870047d29a5a95ea894869b29"/>
<Metadata name="Configuration.crm326RHANA" id="ef31d55b-3788-4972-affb-b7aefd3838aa" configVersion="d8b911be0e8a66a86d24f5878e92349e2df69ce6"/>
<Metadata name="Constant.РК_РабочееПодключениеЧерезАПИ" id="47f107f1-41f6-4f00-bb8a-aa1cf8b60191" configVersion="132678198dbf6e5b884c9ba219f5523cb63f7f8a"/>
<Metadata name="Constant.РК_РежимОтладкиРана" id="32d682cc-7aeb-45c8-abc6-68fef7f36011" configVersion="a12fe879a2594e605228c43059bb3a72d30fa471"/>
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла" id="b6fd11ac-f702-4d13-b328-9a78b0874483" configVersion="c39312c21ebce9b1bb7a4df34e3e489203b3f8a8"/>
<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.ЗагрузкаДанныхИзФайла.ManagerModule" id="b6fd11ac-f702-4d13-b328-9a78b0874483.2" configVersion="78276e2de46cee0ce6ddd3972858ba87a64b96c0"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков" id="5922bda8-8f69-487c-823a-8b09e343f59a" configVersion="73b97230198894aa437bb01f8d33b6fb01b9ccba">
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков" id="5922bda8-8f69-487c-823a-8b09e343f59a" configVersion="a9225a1d3afe3eb040f4fce93331feea6438a755">
<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="09d80a73-1aa6-4ecc-a39a-c667e99e3084"/>
@@ -178,6 +178,7 @@
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Attribute.СоздаватьЗаглушкиСерий" id="e41a311b-b962-4888-ab06-c8ee29eb6351"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Attribute.ПутьКФайламВыгрузкиТаблиц" id="82f9884b-f782-4b29-af1c-3512694ede64"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Attribute.РежимЗаписиФайловВыгрузки" id="28583859-cefe-4f6e-be17-c6973face4f5"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Attribute.ВыгружатьДанныеТаблиц" id="570cf0cd-82ef-4682-87ec-8da84f95d75e"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ВидНоменклатурыНаименование" id="e4d84e8b-fbd4-4967-9f84-67622403de0a"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ОтборСкладовВнешнейБазы" id="e7012345-a678-4bcd-9ef0-123456789abc"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ОтборСкладовВнешнейБазы.Attribute.Идентификатор" id="e7012345-a678-4bcd-9ef0-123456789abe"/>
@@ -203,8 +204,8 @@
</Metadata>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.ПодборСкладов" id="9dfcb2a8-bf22-44c3-97a7-a69f70ca4d61" configVersion="3bf7d51ed9ee398e1704b692c5cf543de885b35d"/>
<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="ebb0b4ecbbd4d68ef1ac197ede1d7f8c3d63d060"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма.Form" id="dc49348d-9257-4545-9c29-70c138312177.0" configVersion="14cda2f46df8eeb0898967aea589cad4643d1033"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма" id="dc49348d-9257-4545-9c29-70c138312177" configVersion="606a7a5859cd64675a4b7867a558d2c30f79eca7"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма.Form" id="dc49348d-9257-4545-9c29-70c138312177.0" configVersion="9d25269bf73f085cb17005bb781d5d23fe9f2acc"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.ObjectModule" id="5922bda8-8f69-487c-823a-8b09e343f59a.0" configVersion="c56db52af66e13a3d82e77ce60242a034db891f4"/>
<Metadata name="DataProcessor.РК_ЗагрузкаЦен" id="a18e1801-18e0-4000-8000-000000000001" configVersion="800c7286acdc6bcc40d47f7aa70bdf0f18e2aa5d">
<Metadata name="DataProcessor.РК_ЗагрузкаЦен.Attribute.ПодключениеКСтороннейБазе" id="a18e1801-18e0-4000-8000-000000000101"/>
+1 -1
View File
@@ -62,7 +62,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
</DefaultRoles>
<Vendor/>
<Version>1.3.1.114</Version>
<Version>1.3.1.115</Version>
<DefaultStyle/>
<DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation/>
@@ -314,6 +314,40 @@
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="570cf0cd-82ef-4682-87ec-8da84f95d75e">
<Properties>
<Name>ВыгружатьДанныеТаблиц</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выгружать данные таблиц</v8:content>
</v8:item>
</Synonym>
<Comment>АвтоCSV own/comm в каталог выгрузки (#29)</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<TabularSection uuid="11e438df-e73c-44d2-b3ed-08c04b320d8e">
<InternalInfo>
<xr:GeneratedType name="DataProcessorTabularSection.РК_ЗагрузкаОстатков.ВходящиеСобственныеТовары" category="TabularSection">
@@ -136,6 +136,19 @@
<ContextMenu name="ПисатьЛогиВПапкуКонтекстноеМеню" id="1576"/>
<ExtendedTooltip name="ПисатьЛогиВПапкуРасширеннаяПодсказка" id="1577"/>
</CheckBoxField>
<CheckBoxField name="ВыгружатьДанныеТаблиц" id="1583">
<DataPath>Объект.ВыгружатьДанныеТаблиц</DataPath>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>После загрузки/сопоставления/свёртки/создания документов автоматически писать CSV own и comm в каталог выгрузки (фиксированные имена; при свёртке комиссии — перезапись comm)</v8:content>
</v8:item>
</ToolTip>
<ToolTipRepresentation>ShowRight</ToolTipRepresentation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ВыгружатьДанныеТаблицКонтекстноеМеню" id="1584"/>
<ExtendedTooltip name="ВыгружатьДанныеТаблицРасширеннаяПодсказка" id="1585"/>
</CheckBoxField>
<InputField name="ПутьКФайламВыгрузкиТаблиц" id="1572">
<DataPath>Объект.ПутьКФайламВыгрузкиТаблиц</DataPath>
<ToolTip>
@@ -1357,6 +1370,7 @@
<Field>Объект.ПодключениеКСтороннейБазе</Field>
<Field>Объект.ПутьКФайламВыгрузкиТаблиц</Field>
<Field>Объект.РежимЗаписиФайловВыгрузки</Field>
<Field>Объект.ВыгружатьДанныеТаблиц</Field>
</Save>
<Columns>
<AdditionalColumns table="Объект.ВходящиеСобственныеТовары"/>
@@ -147,6 +147,7 @@
"Собственные: " + Формат(Количество.Собственные, "ЧН=0; ЧГ=0")
+ "; комиссия 2.5: " + Формат(Количество.Комиссия, "ЧН=0; ЧГ=0")
+ "; виды (политика): " + Формат(Количество.Политика, "ЧН=0; ЧГ=0"));
АвтоВыгрузитьТаблицыПриНеобходимости(Ложь);
КонецПроцедуры
@@ -183,6 +184,7 @@
Возврат;
КонецПопытки;
ПоказатьОповещениеПользователя("Сопоставление", , Текст);
АвтоВыгрузитьТаблицыПриНеобходимости(Ложь);
КонецПроцедуры
@@ -207,6 +209,7 @@
+ " (пар −/+: " + Формат(Рез.УдаленоПар, "ЧН=0; ЧГ=0")
+ ", net≈0: " + Формат(Рез.УдаленоГруппNetZero, "ЧН=0; ЧГ=0") + ")"
+ "; осталось: " + Формат(Рез.СталоСтрок, "ЧН=0; ЧГ=0"));
АвтоВыгрузитьТаблицыПриНеобходимости(Истина);
КонецПроцедуры
@@ -250,6 +253,7 @@
Если ПисатьЛогиВПапку Тогда
ЗаписатьЛогПрогона(ТекстЛога, "create_docs");
КонецЕсли;
АвтоВыгрузитьТаблицыПриНеобходимости(Ложь);
КонецПроцедуры
@@ -317,6 +321,45 @@
КонецФункции
&НаКлиенте
Процедура АвтоВыгрузитьТаблицыПриНеобходимости(ТолькоКомиссия)
Если Не Объект.ВыгружатьДанныеТаблиц Тогда
Возврат;
КонецЕсли;
Каталог = СокрЛП(Объект.ПутьКФайламВыгрузкиТаблиц);
Если ПустаяСтрока(Каталог) Тогда
ПоказатьПредупреждение(, "Включено «Выгружать данные таблиц», но путь к каталогу не задан");
Возврат;
КонецЕсли;
Попытка
Если ЗаписьФайловНаСервере() Тогда
РезультатЗаписи = ВыгрузитьИЗаписатьТаблицыCSVНаСервере(Истина, ТолькоКомиссия);
Текст = ?(ТолькоКомиссия, "Comm: " + РезультатЗаписи.Comm,
"Own: " + РезультатЗаписи.Own + Символы.ПС + "Comm: " + РезультатЗаписи.Comm);
Иначе
Данные = ВыгрузитьТаблицыВCSVНаСервере();
Разделитель = ПолучитьРазделительПути();
Кат = НормализоватьКаталогКлиент(Каталог, Разделитель);
ИмяOwn = "";
ИмяComm = Кат + "crm-dev_to_crm3-26_comm.csv";
Если Не ТолькоКомиссия Тогда
ИмяOwn = Кат + "crm-dev_to_crm3-26_own.csv";
ЗаписатьТекстUTF8BOM(ИмяOwn, Данные.Own);
КонецЕсли;
ЗаписатьТекстUTF8BOM(ИмяComm, Данные.Comm);
Текст = ?(ТолькоКомиссия, "Comm: " + ИмяComm,
"Own: " + ИмяOwn + Символы.ПС + "Comm: " + ИмяComm);
КонецЕсли;
ПоказатьОповещениеПользователя("Автовыгрузка CSV (" + РежимЗаписиФайловДляСообщения() + ")", , Текст);
Исключение
ПоказатьПредупреждение(, "Автовыгрузка таблиц: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Функция РежимЗаписиФайловДляСообщения()
@@ -707,7 +750,7 @@
КонецФункции
&НаСервере
Функция ВыгрузитьИЗаписатьТаблицыCSVНаСервере()
Функция ВыгрузитьИЗаписатьТаблицыCSVНаСервере(ФиксированныеИмена = Ложь, ТолькоКомиссия = Ложь)
Каталог = СокрЛП(Объект.ПутьКФайламВыгрузкиТаблиц);
Если ПустаяСтрока(Каталог) Тогда
@@ -717,10 +760,26 @@
ПроверитьКаталогВыгрузкиНаСервере(Каталог);
Данные = ВыгрузитьТаблицыВCSVНаСервере();
ИмяOwn = УникальноеИмяФайлаВКаталогеНаСервере(Каталог, "crm-dev_to_crm3-26_own", "csv");
ИмяComm = УникальноеИмяФайлаВКаталогеНаСервере(Каталог, "crm-dev_to_crm3-26_comm", "csv");
ЗаписатьТекстUTF8BOMНаСервере(ИмяOwn, Данные.Own);
ЗаписатьТекстUTF8BOMНаСервере(ИмяComm, Данные.Comm);
Разделитель = ПолучитьРазделительПути();
Кат = Каталог;
Если Не СтрЗаканчиваетсяНа(Кат, Разделитель) И Не СтрЗаканчиваетсяНа(Кат, "/") И Не СтрЗаканчиваетсяНа(Кат, "\") Тогда
Кат = Кат + Разделитель;
КонецЕсли;
ИмяOwn = "";
Если ФиксированныеИмена Тогда
ИмяComm = Кат + "crm-dev_to_crm3-26_comm.csv";
Если Не ТолькоКомиссия Тогда
ИмяOwn = Кат + "crm-dev_to_crm3-26_own.csv";
ЗаписатьТекстUTF8BOMНаСервере(ИмяOwn, Данные.Own);
КонецЕсли;
ЗаписатьТекстUTF8BOMНаСервере(ИмяComm, Данные.Comm);
Иначе
ИмяOwn = УникальноеИмяФайлаВКаталогеНаСервере(Каталог, "crm-dev_to_crm3-26_own", "csv");
ИмяComm = УникальноеИмяФайлаВКаталогеНаСервере(Каталог, "crm-dev_to_crm3-26_comm", "csv");
ЗаписатьТекстUTF8BOMНаСервере(ИмяOwn, Данные.Own);
ЗаписатьТекстUTF8BOMНаСервере(ИмяComm, Данные.Comm);
КонецЕсли;
Возврат Новый Структура("Own, Comm", ИмяOwn, ИмяComm);