diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6136a9a..ba285ad 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@
---
+## 1.3.1.116 (2026-09-04)
+
+### РК_ЗагрузкаОстатков — детальный лог и CSV созданных документов (#29, #30)
+
+- При «Писать логи в папку»: лог сопоставления (`match`) с `[SERIES]` (номер, имя, ГоденДо, ДатаПроизводства, номенклатура).
+- Лог «Создать документы»: `[WRITE]`/`[DOC]` (номер, дата, шапка), до 30 строк `[SPEC]`, `[POST]` (проведение пока не выполняется командой).
+- CSV спецификации созданных документов: `rk_load_balances_docs_*.csv` (own/comm, артикул, серии, суммы/НДС, GUID источника).
+- `[WARN]`, если нет сопоставленных строк — документы не создаются.
+
## 1.3.1.115 (2026-09-03)
### РК_ЗагрузкаОстатков — автовыгрузка CSV таблиц (#29)
diff --git a/VERSION b/VERSION
index b2c44af..0d17019 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.1.115
+1.3.1.116
diff --git a/src/ConfigDumpInfo.xml b/src/ConfigDumpInfo.xml
index 3620676..6deb164 100644
--- a/src/ConfigDumpInfo.xml
+++ b/src/ConfigDumpInfo.xml
@@ -50,14 +50,14 @@
-
+
-
+
@@ -204,9 +204,9 @@
-
-
-
+
+
+
diff --git a/src/Configuration.xml b/src/Configuration.xml
index 8344948..4d811e2 100644
--- a/src/Configuration.xml
+++ b/src/Configuration.xml
@@ -62,7 +62,7 @@
Role.РК_ОсновнаяРоль
- 1.3.1.115
+ 1.3.1.116
Language.Русский
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
index e605d4d..5324e1c 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
@@ -113,6 +113,13 @@
Результат.Вставить("НеСопоставлено", 0);
Результат.Вставить("СозданоСерий", 0);
Результат.Вставить("СозданоХарактеристик", 0);
+ Результат.Вставить("Протокол", Новый Массив);
+
+ ДобавитьСтрокуПротокола(Результат, "=== Сопоставление own ===");
+ ДобавитьСтрокуПротокола(Результат, "Режим: " + ?(РежимТест, "тест (без создания)", "запись"));
+ ДобавитьСтрокуПротокола(Результат, "Строк во входящих: "
+ + Формат(ВходящиеСобственныеТовары.Количество(), "ЧН=0; ЧГ=0")
+ + "; заглушки серий: " + ?(СоздаватьЗаглушкиСерий, "вкл", "выкл"));
СуффиксДатыСер = Формат(?(ЗначениеЗаполнено(ДатаДокументовВвода), ДатаДокументовВвода, ДатаОстатков), "ДФ=yyyyMMdd");
Если ПустаяСтрока(СуффиксДатыСер) Тогда
@@ -176,6 +183,12 @@
КонецЦикла;
+ ДобавитьСтрокуПротокола(Результат, "=== Итог own ===");
+ ДобавитьСтрокуПротокола(Результат, "Сопоставлено: " + Формат(Результат.Сопоставлено, "ЧН=0; ЧГ=0")
+ + "; не: " + Формат(Результат.НеСопоставлено, "ЧН=0; ЧГ=0")
+ + "; серий создано: " + Формат(Результат.СозданоСерий, "ЧН=0; ЧГ=0")
+ + "; характеристик: " + Формат(Результат.СозданоХарактеристик, "ЧН=0; ЧГ=0"));
+
Возврат Результат;
КонецФункции
@@ -190,6 +203,13 @@
Результат.Вставить("НеСопоставлено", 0);
Результат.Вставить("СозданоСерий", 0);
Результат.Вставить("СозданоХарактеристик", 0);
+ Результат.Вставить("Протокол", Новый Массив);
+
+ ДобавитьСтрокуПротокола(Результат, "=== Сопоставление comm ===");
+ ДобавитьСтрокуПротокола(Результат, "Режим: " + ?(РежимТест, "тест (без создания)", "запись"));
+ ДобавитьСтрокуПротокола(Результат, "Строк во входящих: "
+ + Формат(ВходящиеКомиссионныеТовары.Количество(), "ЧН=0; ЧГ=0")
+ + "; заглушки серий: " + ?(СоздаватьЗаглушкиСерий, "вкл", "выкл"));
СуффиксДатыСер = Формат(?(ЗначениеЗаполнено(ДатаДокументовВвода), ДатаДокументовВвода, ДатаОстатков), "ДФ=yyyyMMdd");
Если ПустаяСтрока(СуффиксДатыСер) Тогда
@@ -273,6 +293,12 @@
КонецЦикла;
+ ДобавитьСтрокуПротокола(Результат, "=== Итог comm ===");
+ ДобавитьСтрокуПротокола(Результат, "Сопоставлено: " + Формат(Результат.Сопоставлено, "ЧН=0; ЧГ=0")
+ + "; не: " + Формат(Результат.НеСопоставлено, "ЧН=0; ЧГ=0")
+ + "; серий создано: " + Формат(Результат.СозданоСерий, "ЧН=0; ЧГ=0")
+ + "; характеристик: " + Формат(Результат.СозданоХарактеристик, "ЧН=0; ЧГ=0"));
+
Возврат Результат;
КонецФункции
@@ -409,6 +435,7 @@
Результат.Вставить("Ошибок", 0);
Результат.Вставить("ТекстТега", "");
Результат.Вставить("Протокол", Новый Массив);
+ Результат.Вставить("ТекстCSVДокументов", "");
Если Не ЗначениеЗаполнено(Организация) Тогда
ВызватьИсключение "Укажите организацию для документов ввода остатков";
@@ -424,14 +451,20 @@
ДобавитьСтрокуПротокола(Результат, "Организация: " + СокрЛП(Строка(Организация)));
ДобавитьСтрокуПротокола(Результат, "Дата документов: " + Формат(ДатаДокументовВвода, "ДЛФ=DT"));
ДобавитьСтрокуПротокола(Результат, "Тег: " + ТекстТега);
- ДобавитьСтрокуПротокола(Результат, "Примечание: команда выполняет Запись документов, проведение — отдельно.");
+ ДобавитьСтрокуПротокола(Результат, "Примечание: команда выполняет Запись документов; проведение — отдельным шагом (см. [POST]).");
СозданныеДокументы.Очистить();
+ СтрокиCSVДокументов = Новый Массив;
+ СтрокиCSVДокументов.Добавить(ЗаголовокCSVСозданныхДокументов());
СтрокиПоСкладу = СгруппироватьСопоставленныеСтрокиПоСкладу();
СтрокиКомиссии = СгруппироватьСопоставленныеСтрокиКомиссии();
ДобавитьСтрокуПротокола(Результат, "Групп own (складов): " + Формат(СтрокиПоСкладу.Количество(), "ЧН=0; ЧГ=0")
+ "; групп comm: " + Формат(СтрокиКомиссии.Количество(), "ЧН=0; ЧГ=0"));
+ Если СтрокиПоСкладу.Количество() = 0 И СтрокиКомиссии.Количество() = 0 Тогда
+ ДобавитьСтрокуПротокола(Результат,
+ "[WARN] Нет сопоставленных строк с количеством > 0 — документы не создаются. Сначала «Сопоставить».");
+ КонецЕсли;
Если ПерезаписатьДокументы И Не РежимТест
И (СтрокиПоСкладу.Количество() > 0 Или СтрокиКомиссии.Количество() > 0) Тогда
@@ -457,6 +490,8 @@
ДобавитьВСозданныеДокументы(Неопределено, "Собственные", СкладДок,
Неопределено, Неопределено, СтрокиСклада, ТекстТега + ", склад " + СокрЛП(Строка(СкладДок)), Истина);
ДобавитьСтрокуПротокола(Результат, "[TEST] " + Контекст);
+ ДобавитьСтрокиCSVДокументаИзВходящих(СтрокиCSVДокументов, "own", Неопределено, СкладДок,
+ Неопределено, Неопределено, Неопределено, СтрокиСклада, Истина);
Продолжить;
КонецЕсли;
@@ -471,9 +506,10 @@
КонецЦикла;
ДобавитьВСозданныеДокументы(Док.Ссылка, "Собственные", СкладДок,
Неопределено, Неопределено, СтрокиСклада, Док.Комментарий, Ложь);
- ДобавитьСтрокуПротокола(Результат, "[WRITE] " + Контекст
- + " → " + СокрЛП(Строка(Док.Ссылка))
- + "; товаров=" + Формат(Док.Товары.Количество(), "ЧН=0; ЧГ=0"));
+ ДобавитьПротоколСозданногоДокумента(Результат, Док, Контекст, "own");
+ ДобавитьСтрокиCSVДокументаИзОбъекта(СтрокиCSVДокументов, "own", Док, СтрокиСклада);
+ ДобавитьСтрокуПротокола(Результат, "[POST] " + ПредставлениеДокументаДляПротокола(Док)
+ + " — проведение не выполнялось (только Запись)");
Иначе
ДобавитьСтрокуПротокола(Результат, "[SKIP] " + Контекст + " — пустой документ");
КонецЕсли;
@@ -505,6 +541,8 @@
Первая.Соглашение, Первая.Партнер, СтрокиГруппы,
ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер)), Истина);
ДобавитьСтрокуПротокола(Результат, "[TEST] " + Контекст);
+ ДобавитьСтрокиCSVДокументаИзВходящих(СтрокиCSVДокументов, "comm", Неопределено, Неопределено,
+ Первая.Партнер, Первая.Соглашение, Первая.Договор, СтрокиГруппы, Истина);
Продолжить;
КонецЕсли;
@@ -519,10 +557,10 @@
КонецЦикла;
ДобавитьВСозданныеДокументы(Док.Ссылка, "Комиссия 2.5", Неопределено,
Док.СоглашениеСКомиссионером, Док.Партнер, СтрокиГруппы, Док.Комментарий, Ложь);
- ДобавитьСтрокуПротокола(Результат, "[WRITE] " + Контекст
- + " → " + СокрЛП(Строка(Док.Ссылка))
- + "; товаров=" + Формат(Док.Товары.Количество(), "ЧН=0; ЧГ=0")
- + "; договор=" + СокрЛП(Строка(Док.Договор)));
+ ДобавитьПротоколСозданногоДокумента(Результат, Док, Контекст, "comm");
+ ДобавитьСтрокиCSVДокументаИзОбъекта(СтрокиCSVДокументов, "comm", Док, СтрокиГруппы);
+ ДобавитьСтрокуПротокола(Результат, "[POST] " + ПредставлениеДокументаДляПротокола(Док)
+ + " — проведение не выполнялось (только Запись)");
Иначе
ДобавитьСтрокуПротокола(Результат, "[SKIP] " + Контекст + " — пустой документ");
КонецЕсли;
@@ -534,13 +572,15 @@
КонецЦикла;
+ Результат.ТекстCSVДокументов = СтрСоединить(СтрокиCSVДокументов, Символы.ПС);
ДобавитьСтрокуПротокола(Результат, "=== Итог ===");
ДобавитьСтрокуПротокола(Результат, "Own док.: " + Формат(Результат.СозданоДокументов, "ЧН=0; ЧГ=0")
+ " (" + Формат(Результат.СтрокВДокументах, "ЧН=0; ЧГ=0") + " стр.); comm: "
+ Формат(Результат.СозданоДокументовКомиссии, "ЧН=0; ЧГ=0")
+ " (" + Формат(Результат.СтрокКомиссии, "ЧН=0; ЧГ=0") + " стр.); удалено: "
+ Формат(Результат.УдаленоДокументов, "ЧН=0; ЧГ=0")
- + "; ошибок: " + Формат(Результат.Ошибок, "ЧН=0; ЧГ=0"));
+ + "; ошибок: " + Формат(Результат.Ошибок, "ЧН=0; ЧГ=0")
+ + "; CSV строк спецификации: " + Формат(Макс(СтрокиCSVДокументов.Количество() - 1, 0), "ЧН=0; ЧГ=0"));
Возврат Результат;
@@ -592,6 +632,162 @@
КонецПроцедуры
+Функция ПредставлениеДокументаДляПротокола(Док)
+
+ Если Не ЗначениеЗаполнено(Док) Тогда
+ Возврат "(нет документа)";
+ КонецЕсли;
+ Возврат СокрЛП(Строка(Док.Ссылка))
+ + " / № " + СокрЛП(Док.Номер)
+ + " / " + Формат(Док.Дата, "ДЛФ=D");
+
+КонецФункции
+
+Процедура ДобавитьПротоколСозданногоДокумента(Результат, Док, Контекст, Контур)
+
+ ДобавитьСтрокуПротокола(Результат, "[WRITE] " + Контекст
+ + " → " + ПредставлениеДокументаДляПротокола(Док)
+ + "; товаров=" + Формат(Док.Товары.Количество(), "ЧН=0; ЧГ=0"));
+ ДобавитьСтрокуПротокола(Результат, "[DOC] " + Контур
+ + "; орг=" + СокрЛП(Строка(Док.Организация))
+ + "; дата=" + Формат(Док.Дата, "ДЛФ=DT")
+ + "; номер=" + СокрЛП(Док.Номер)
+ + "; хоз=" + СокрЛП(Строка(Док.ХозяйственнаяОперация))
+ + "; склад=" + СокрЛП(Строка(Док.Склад))
+ + "; партнёр=" + СокрЛП(Строка(Док.Партнер))
+ + "; соглашение=" + СокрЛП(Строка(Док.СоглашениеСКомиссионером))
+ + "; договор=" + СокрЛП(Строка(Док.Договор))
+ + "; НДС=" + СокрЛП(Строка(Док.НалогообложениеНДС))
+ + "; валюта=" + СокрЛП(Строка(Док.Валюта))
+ + "; комментарий=" + СокрЛП(Док.Комментарий));
+
+ МаксСтрокВЛог = 30;
+ Инд = 0;
+ Для Каждого СтрТов Из Док.Товары Цикл
+ Инд = Инд + 1;
+ Если Инд > МаксСтрокВЛог Тогда
+ ДобавитьСтрокуПротокола(Результат, "[SPEC] … ещё "
+ + Формат(Док.Товары.Количество() - МаксСтрокВЛог, "ЧН=0; ЧГ=0")
+ + " стр. — см. CSV документов");
+ Прервать;
+ КонецЕсли;
+ ДобавитьСтрокуПротокола(Результат, "[SPEC] #" + Формат(Инд, "ЧН=0; ЧГ=0")
+ + "; ном=" + СокрЛП(Строка(СтрТов.Номенклатура))
+ + "; сер=" + СокрЛП(Строка(СтрТов.Серия))
+ + "; кол=" + Формат(СтрТов.Количество, "ЧН=0; ЧГ=0; ЧР=.")
+ + "; сумма=" + Формат(СтрТов.Сумма, "ЧН=0; ЧГ=0; ЧР=.")
+ + "; ставкаНДС=" + СокрЛП(Строка(СтрТов.СтавкаНДС))
+ + "; суммаНДС=" + Формат(СтрТов.СуммаНДС, "ЧН=0; ЧГ=0; ЧР=.")
+ + "; суммаСНДС=" + Формат(СтрТов.СуммаСНДС, "ЧН=0; ЧГ=0; ЧР=."));
+ КонецЦикла;
+
+КонецПроцедуры
+
+Функция ЗаголовокCSVСозданныхДокументов()
+
+ Возврат "Контур;Тест;Номер;Дата;Ссылка;Организация;Склад;Партнер;Соглашение;Договор;ХозОперация;"
+ + "НомерСтроки;Номенклатура;НоменклатураКод;Артикул;Характеристика;Серия;СерияНомер;СерияГоденДо;"
+ + "ГТД;Количество;Сумма;СуммаРегл;СтавкаНДС;СуммаНДС;СуммаСНДС;НДСРегл;"
+ + "НоменклатураИдентификатор;СерияИдентификатор;СкладИдентификатор;КомментарийСопоставления";
+
+КонецФункции
+
+Процедура ДобавитьСтрокиCSVДокументаИзОбъекта(СтрокиCSV, Контур, Док, СтрокиВходящие)
+
+ Инд = 0;
+ Для Каждого СтрТов Из Док.Товары Цикл
+ Инд = Инд + 1;
+ СтрВх = Неопределено;
+ Если Инд <= СтрокиВходящие.Количество() Тогда
+ СтрВх = СтрокиВходящие[Инд - 1];
+ КонецЕсли;
+ Значения = Новый Массив;
+ Значения.Добавить(ЗначениеДляCSV(Контур));
+ Значения.Добавить(ЗначениеДляCSV(Ложь));
+ Значения.Добавить(ЗначениеДляCSV(Док.Номер));
+ Значения.Добавить(ЗначениеДляCSV(Док.Дата));
+ Значения.Добавить(ЗначениеДляCSV(Док.Ссылка));
+ Значения.Добавить(ЗначениеДляCSV(Док.Организация));
+ Значения.Добавить(ЗначениеДляCSV(Док.Склад));
+ Значения.Добавить(ЗначениеДляCSV(Док.Партнер));
+ Значения.Добавить(ЗначениеДляCSV(Док.СоглашениеСКомиссионером));
+ Значения.Добавить(ЗначениеДляCSV(Док.Договор));
+ Значения.Добавить(ЗначениеДляCSV(Док.ХозяйственнаяОперация));
+ Значения.Добавить(ЗначениеДляCSV(Инд));
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.Номенклатура));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.НоменклатураКод)));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.Артикул)));
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.Характеристика));
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.Серия));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.СерияНомер)));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.СерияГоденДо)));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.ГТД)));
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.Количество));
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.Сумма));
+ Попытка
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.СуммаРегл));
+ Исключение
+ Значения.Добавить("");
+ КонецПопытки;
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.СтавкаНДС));
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.СуммаНДС));
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.СуммаСНДС));
+ Попытка
+ Значения.Добавить(ЗначениеДляCSV(СтрТов.НДСРегл));
+ Исключение
+ Значения.Добавить("");
+ КонецПопытки;
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.НоменклатураИдентификатор)));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.СерияИдентификатор)));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.СкладИдентификатор)));
+ Значения.Добавить(ЗначениеДляCSV(?(СтрВх = Неопределено, "", СтрВх.КомментарийСопоставления)));
+ СтрокиCSV.Добавить(СтрСоединить(Значения, ";"));
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ДобавитьСтрокиCSVДокументаИзВходящих(СтрокиCSV, Контур, ДокСсылка, Склад, Партнер, Соглашение, Договор, СтрокиВходящие, ЭтоТест)
+
+ Инд = 0;
+ Для Каждого СтрВх Из СтрокиВходящие Цикл
+ Инд = Инд + 1;
+ Значения = Новый Массив;
+ Значения.Добавить(ЗначениеДляCSV(Контур));
+ Значения.Добавить(ЗначениеДляCSV(ЭтоТест));
+ Значения.Добавить("");
+ Значения.Добавить(ЗначениеДляCSV(ДатаДокументовВвода));
+ Значения.Добавить(ЗначениеДляCSV(ДокСсылка));
+ Значения.Добавить(ЗначениеДляCSV(Организация));
+ Значения.Добавить(ЗначениеДляCSV(?(ЗначениеЗаполнено(Склад), Склад, СтрВх.Склад)));
+ Значения.Добавить(ЗначениеДляCSV(?(ЗначениеЗаполнено(Партнер), Партнер, ?(Контур = "comm", СтрВх.Партнер, ""))));
+ Значения.Добавить(ЗначениеДляCSV(?(ЗначениеЗаполнено(Соглашение), Соглашение, ?(Контур = "comm", СтрВх.Соглашение, ""))));
+ Значения.Добавить(ЗначениеДляCSV(?(ЗначениеЗаполнено(Договор), Договор, ?(Контур = "comm", СтрВх.Договор, ""))));
+ Значения.Добавить(ЗначениеДляCSV(?(Контур = "comm", "ВводОстатковТоваровПереданныхНаКомиссию2_5", "ВводОстатковСобственныхТоваров")));
+ Значения.Добавить(ЗначениеДляCSV(Инд));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.Номенклатура));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.НоменклатураКод));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.Артикул));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.Характеристика));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.СерияСсылка));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.СерияНомер));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.СерияГоденДо));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.ГТД));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.Количество));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.Стоимость));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.СтоимостьРегл));
+ Значения.Добавить("");
+ Значения.Добавить("");
+ Значения.Добавить("");
+ Значения.Добавить("");
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.НоменклатураИдентификатор));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.СерияИдентификатор));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.СкладИдентификатор));
+ Значения.Добавить(ЗначениеДляCSV(СтрВх.КомментарийСопоставления));
+ СтрокиCSV.Добавить(СтрСоединить(Значения, ";"));
+ КонецЦикла;
+
+КонецПроцедуры
+
Функция ЗначениеДляCSV(Значение)
Если Значение = Неопределено Или Значение = Null Тогда
@@ -1693,8 +1889,39 @@
ОбСер.Записать();
Сер = ОбСер.Ссылка;
Результат.СозданоСерий = Результат.СозданоСерий + 1;
+ ТекстГоден = "";
+ ТекстПроизв = "";
+ ТекстИмя = ИмяСерии;
+ Попытка
+ ТекстГоден = Формат(ОбСер.ГоденДо, "ДФ=yyyy-MM-dd");
+ Исключение
+ КонецПопытки;
+ Попытка
+ ТекстПроизв = Формат(ОбСер.ДатаПроизводства, "ДФ=yyyy-MM-dd");
+ Исключение
+ КонецПопытки;
+ Попытка
+ Если ЗначениеЗаполнено(ОбСер.Наименование) Тогда
+ ТекстИмя = ОбСер.Наименование;
+ КонецЕсли;
+ Исключение
+ КонецПопытки;
+ ДобавитьСтрокуПротокола(Результат, "[SERIES] "
+ + ?(ЭтоЗаглушка, "stub", "real")
+ + "; ном=" + СокрЛП(Строка(Ном))
+ + "; арт=" + СокрЛП(СтрТ.Артикул)
+ + "; код=" + СокрЛП(СтрТ.НоменклатураКод)
+ + "; номер=" + СокрЛП(ОбСер.Номер)
+ + "; имя=" + СокрЛП(ТекстИмя)
+ + "; ГоденДо=" + ТекстГоден
+ + "; ДатаПроизводства=" + ТекстПроизв
+ + "; видНом=" + СокрЛП(Строка(ВидНом))
+ + "; видСер=" + СокрЛП(Строка(ВидСер))
+ + "; guid=" + Строка(Сер.УникальныйИдентификатор()));
Исключение
СтрТ.КомментарийСопоставления = "Ошибка создания серии: " + ИмяСерии;
+ ДобавитьСтрокуПротокола(Результат, "[SERIES][ERROR] " + ИмяСерии + ": "
+ + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl
index e31e1cd..59c0697 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl
@@ -178,12 +178,17 @@
КонецЕсли;
РежимТест = (РезультатВопроса <> КодВозвратаДиалога.Да);
Попытка
- Текст = СопоставитьНаСервере(РежимТест);
+ РезультатСопоставления = СопоставитьНаСервере(РежимТест);
+ Текст = РезультатСопоставления.Текст;
+ ТекстЛога = РезультатСопоставления.ТекстЛога;
Исключение
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
ПоказатьОповещениеПользователя("Сопоставление", , Текст);
+ Если ПисатьЛогиВПапку Тогда
+ ЗаписатьЛогПрогона(ТекстЛога, "match");
+ КонецЕсли;
АвтоВыгрузитьТаблицыПриНеобходимости(Ложь);
КонецПроцедуры
@@ -244,6 +249,7 @@
РезультатВызова = СоздатьДокументыНаСервере(РежимТест);
Текст = РезультатВызова.Текст;
ТекстЛога = РезультатВызова.ТекстЛога;
+ ТекстCSVДокументов = РезультатВызова.ТекстCSVДокументов;
Исключение
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
@@ -252,6 +258,9 @@
ПоказатьОповещениеПользователя("Документы ввода", , Текст);
Если ПисатьЛогиВПапку Тогда
ЗаписатьЛогПрогона(ТекстЛога, "create_docs");
+ Если Не ПустаяСтрока(ТекстCSVДокументов) Тогда
+ ЗаписатьТекстВКаталогВыгрузки(ТекстCSVДокументов, "rk_load_balances_docs", "csv");
+ КонецЕсли;
КонецЕсли;
АвтоВыгрузитьТаблицыПриНеобходимости(Ложь);
@@ -370,6 +379,32 @@
КонецФункции
+&НаКлиенте
+Процедура ЗаписатьТекстВКаталогВыгрузки(Текст, ПрефиксИмени, Расширение)
+
+ Каталог = СокрЛП(Объект.ПутьКФайламВыгрузкиТаблиц);
+ Если ПустаяСтрока(Каталог) Тогда
+ ПоказатьПредупреждение(, "Включён «Писать логи в папку», но путь к каталогу не задан");
+ Возврат;
+ КонецЕсли;
+ Если ПустаяСтрока(Текст) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Попытка
+ Если ЗаписьФайловНаСервере() Тогда
+ ИмяФайла = ЗаписатьТекстВКаталогВыгрузкиНаСервере(Текст, ПрефиксИмени, Расширение);
+ Иначе
+ ИмяФайла = УникальноеИмяФайлаВКаталоге(Каталог, ПрефиксИмени, Расширение);
+ ЗаписатьТекстUTF8BOM(ИмяФайла, Текст);
+ КонецЕсли;
+ ПоказатьОповещениеПользователя("Файл записан (" + РежимЗаписиФайловДляСообщения() + ")", , ИмяФайла);
+ Исключение
+ ПоказатьПредупреждение(, "Не удалось записать файл: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
+ КонецПопытки;
+
+КонецПроцедуры
+
&НаКлиенте
Процедура ЗаписатьЛогПрогона(ТекстЛога, СуффиксОперации)
@@ -689,7 +724,7 @@
РезКом = ОбъектОбработки.СопоставитьВходящиеКомиссионныеТовары(РежимТест);
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
- Возврат СтрШаблон(
+ Текст = СтрШаблон(
"Собственные: %1 / не %2; комиссия: %3 / не %4; серий: %5; характеристик: %6%7",
Формат(РезСоб.Сопоставлено, "ЧН=0; ЧГ=0"),
Формат(РезСоб.НеСопоставлено, "ЧН=0; ЧГ=0"),
@@ -699,6 +734,20 @@
Формат(РезСоб.СозданоХарактеристик + РезКом.СозданоХарактеристик, "ЧН=0; ЧГ=0"),
?(РежимТест, " (тест)", ""));
+ ЧастиЛога = Новый Массив;
+ Если ТипЗнч(РезСоб.Протокол) = Тип("Массив") Тогда
+ Для Каждого СтрПрот Из РезСоб.Протокол Цикл
+ ЧастиЛога.Добавить(СтрПрот);
+ КонецЦикла;
+ КонецЕсли;
+ Если ТипЗнч(РезКом.Протокол) = Тип("Массив") Тогда
+ Для Каждого СтрПрот Из РезКом.Протокол Цикл
+ ЧастиЛога.Добавить(СтрПрот);
+ КонецЦикла;
+ КонецЕсли;
+
+ Возврат Новый Структура("Текст, ТекстЛога", Текст, СтрСоединить(ЧастиЛога, Символы.ПС));
+
КонецФункции
&НаСервере
@@ -734,7 +783,12 @@
ТекстЛога = СтрСоединить(Результат.Протокол, Символы.ПС);
КонецЕсли;
- Возврат Новый Структура("Текст, ТекстЛога", Текст, ТекстЛога);
+ ТекстCSVДокументов = "";
+ Если Результат.Свойство("ТекстCSVДокументов") Тогда
+ ТекстCSVДокументов = Результат.ТекстCSVДокументов;
+ КонецЕсли;
+
+ Возврат Новый Структура("Текст, ТекстЛога, ТекстCSVДокументов", Текст, ТекстЛога, ТекстCSVДокументов);
КонецФункции
@@ -800,6 +854,21 @@
КонецФункции
+&НаСервере
+Функция ЗаписатьТекстВКаталогВыгрузкиНаСервере(Текст, ПрефиксИмени, Расширение)
+
+ Каталог = СокрЛП(Объект.ПутьКФайламВыгрузкиТаблиц);
+ Если ПустаяСтрока(Каталог) Тогда
+ ВызватьИсключение "Путь к каталогу выгрузки не задан";
+ КонецЕсли;
+
+ ПроверитьКаталогВыгрузкиНаСервере(Каталог);
+ ИмяФайла = УникальноеИмяФайлаВКаталогеНаСервере(Каталог, ПрефиксИмени, Расширение);
+ ЗаписатьТекстUTF8BOMНаСервере(ИмяФайла, Текст);
+ Возврат ИмяФайла;
+
+КонецФункции
+
&НаСервере
Процедура ПроверитьКаталогВыгрузкиНаСервере(Каталог)