From a9910531f91cbebd14013670321cb3b5be932dea Mon Sep 17 00:00:00 2001 From: mihailkudravcev Date: Fri, 4 Sep 2026 15:19:13 +0300 Subject: [PATCH] =?UTF-8?q?1.3.1.118:=20fix=20=D0=97=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=D0=97=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B0=20=D0=94=D0=BE=D0=BA=D1=83?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=9E=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=20?= =?UTF-8?q?+=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BE=D1=82=D0=B1=D0=BE=D1=80=20?= =?UTF-8?q?=D1=81=D0=BA=D0=BB=D0=B0=D0=B4=D0=BE=D0=B2/=D0=BE=D1=80=D0=B3?= =?UTF-8?q?=20(#40).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- CHANGELOG.md | 10 +++ VERSION | 2 +- src/ConfigDumpInfo.xml | 10 +-- src/Configuration.xml | 2 +- .../РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl | 22 ++++-- .../Forms/Форма/Ext/Form.xml | 14 ++++ .../Forms/Форма/Ext/Form/Module.bsl | 69 ++++++++++++++++++- 7 files changed, 116 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f388917..fc50b96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ --- +## 1.3.1.118 (2026-09-04) + +### РК_ЗагрузкаОстатков — fix create-лога + автоотбор (#40) + +- Fix: не вызывать `ЗначениеЗаполнено()` для `ДокументОбъект` (ошибка «Проверка мутабельных значений…» ломала `[DOC]`/`[SPEC]`/CSV docs после успешной записи). +- CSV спецификации пишется до протокола строк. +- При открытии формы — авто `ЗаполнитьСправочникиОтбора` (если задано подключение). +- Дефолтные отметки (только если нет сохранённого отбора): все склады кроме «Не использовать»; организации «Управленческая организация» и «ФК РАНА». +- Отметки складов/организаций сохраняются между сеансами. + ## 1.3.1.117 (2026-09-04) ### РК_ЗагрузкаОстатков — заполнение «Документы ввода» и диагностика create (#40) diff --git a/VERSION b/VERSION index 393a7c1..03cbda1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.1.117 +1.3.1.118 diff --git a/src/ConfigDumpInfo.xml b/src/ConfigDumpInfo.xml index 6ec6012..9a8aaf3 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 d21b737..fb107d2 100644 --- a/src/Configuration.xml +++ b/src/Configuration.xml @@ -62,7 +62,7 @@ Role.РК_ОсновнаяРоль - 1.3.1.117 + 1.3.1.118 Language.Русский diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl index 2890cb7..cb1195d 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl +++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl @@ -512,8 +512,8 @@ КонецЦикла; ДобавитьВСозданныеДокументы(Док.Ссылка, "Собственные", СкладДок, Неопределено, Неопределено, СтрокиСклада, Док.Комментарий, Ложь, Результат); - ДобавитьПротоколСозданногоДокумента(Результат, Док, Контекст, "own"); ДобавитьСтрокиCSVДокументаИзОбъекта(СтрокиCSVДокументов, "own", Док, СтрокиСклада); + ДобавитьПротоколСозданногоДокумента(Результат, Док, Контекст, "own"); ДобавитьСтрокуПротокола(Результат, "[POST] " + ПредставлениеДокументаДляПротокола(Док) + " — проведение не выполнялось (только Запись)"); Иначе @@ -563,8 +563,8 @@ КонецЦикла; ДобавитьВСозданныеДокументы(Док.Ссылка, "Комиссия 2.5", Неопределено, Док.СоглашениеСКомиссионером, Док.Партнер, СтрокиГруппы, Док.Комментарий, Ложь, Результат); - ДобавитьПротоколСозданногоДокумента(Результат, Док, Контекст, "comm"); ДобавитьСтрокиCSVДокументаИзОбъекта(СтрокиCSVДокументов, "comm", Док, СтрокиГруппы); + ДобавитьПротоколСозданногоДокумента(Результат, Док, Контекст, "comm"); ДобавитьСтрокуПротокола(Результат, "[POST] " + ПредставлениеДокументаДляПротокола(Док) + " — проведение не выполнялось (только Запись)"); Иначе @@ -640,7 +640,7 @@ Функция ПредставлениеДокументаДляПротокола(Док) - Если Не ЗначениеЗаполнено(Док) Тогда + Если Не ДокументВводаСозданУспешно(Док) Тогда Возврат "(нет документа)"; КонецЕсли; Возврат СокрЛП(Строка(Док.Ссылка)) @@ -874,12 +874,24 @@ Если Док = Неопределено Или Док = Null Тогда Возврат Ложь; КонецЕсли; + + // Нельзя вызывать ЗначениеЗаполнено() для ДокументОбъект — «Проверка мутабельных значений…». Попытка - Возврат ТипЗнч(Док) = Тип("ДокументОбъект.ВводОстатковТоваров") И ЗначениеЗаполнено(Док.Ссылка); + Если ТипЗнч(Док) = Тип("ДокументОбъект.ВводОстатковТоваров") Тогда + Возврат Не Док.Ссылка.Пустая(); + КонецЕсли; Исключение - Возврат ЗначениеЗаполнено(Док); КонецПопытки; + Попытка + Если ТипЗнч(Док) = Тип("ДокументСсылка.ВводОстатковТоваров") Тогда + Возврат Не Док.Пустая(); + КонецЕсли; + Исключение + КонецПопытки; + + Возврат Ложь; + КонецФункции Функция ТекстДиагностикиСопоставленияДляСозданияДокументов() diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml index 80199c3..9165297 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml +++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml @@ -51,6 +51,7 @@ ПриЗагрузкеДанныхИзНастроекНаСервере ПриСозданииНаСервере + ПриОткрытии @@ -1371,6 +1372,8 @@ Объект.ПутьКФайламВыгрузкиТаблиц Объект.РежимЗаписиФайловВыгрузки Объект.ВыгружатьДанныеТаблиц + Объект.ОтборСкладовВнешнейБазы + Объект.ОтборОрганизацийВнешнейБазы @@ -1460,6 +1463,17 @@ xs:boolean + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отбор загружен из настроек</v8:content> + </v8:item> + + + xs:boolean + + diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl index 54a86ca..3989e28 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl +++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl @@ -26,6 +26,7 @@ КонецЕсли; ПостроитьДеревоГруппИзТабличнойЧасти(); + ОтборЗагруженИзНастроек = Ложь; КонецПроцедуры @@ -37,6 +38,27 @@ Если ПустаяСтрока(Объект.РежимЗаписиФайловВыгрузки) Тогда Объект.РежимЗаписиФайловВыгрузки = "Клиент"; КонецЕсли; + ОтборЗагруженИзНастроек = (Объект.ОтборСкладовВнешнейБазы.Количество() > 0 + Или Объект.ОтборОрганизацийВнешнейБазы.Количество() > 0); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда + Возврат; + КонецЕсли; + + Попытка + Количество = ЗаполнитьСправочникиОтбораНаСервере(); + ПоказатьОповещениеПользователя("Справочники отбора", , + "Группы: " + Формат(Количество.Группы, "ЧН=0; ЧГ=0") + + "; склады: " + Формат(Количество.Склады, "ЧН=0; ЧГ=0") + + "; организации: " + Формат(Количество.Организации, "ЧН=0; ЧГ=0")); + Исключение + // При открытии не блокируем форму — пользователь заполнит отбор вручную. + КонецПопытки; КонецПроцедуры @@ -550,9 +572,19 @@ КонецЕсли; БылиОтметки = Новый Соответствие; + БылиСохранённыеОтметки = Ложь; Для Каждого Стр Из ТаблицаОтбора Цикл БылиОтметки.Вставить(Строка(Стр.Идентификатор), Стр.Отметка); + Если Стр.Отметка Тогда + БылиСохранённыеОтметки = Истина; + КонецЕсли; КонецЦикла; + Если ОтборЗагруженИзНастроек И ТаблицаОтбора.Количество() > 0 Тогда + БылиСохранённыеОтметки = Истина; + КонецЕсли; + + ЭтоСклады = (ИмяЭндпоинта = "/v1/stock/warehouses"); + ЭтоОрганизации = (ИмяЭндпоинта = "/v1/stock/organizations"); ТаблицаОтбора.Очистить(); Для Каждого СтрокаAPI Из Строки Цикл @@ -568,11 +600,46 @@ Продолжить; КонецПопытки; СтараяОтметка = БылиОтметки.Получить(Строка(НовСтр.Идентификатор)); - НовСтр.Отметка = ?(СтараяОтметка = Неопределено, Ложь, СтараяОтметка = Истина); + Если СтараяОтметка <> Неопределено Тогда + НовСтр.Отметка = (СтараяОтметка = Истина); + ИначеЕсли БылиСохранённыеОтметки Тогда + НовСтр.Отметка = Ложь; + ИначеЕсли ЭтоСклады Тогда + НовСтр.Отметка = ОтметкаСкладаПоУмолчанию(НовСтр.Наименование); + ИначеЕсли ЭтоОрганизации Тогда + НовСтр.Отметка = ОтметкаОрганизацииПоУмолчанию(НовСтр.Наименование); + Иначе + НовСтр.Отметка = Ложь; + КонецЕсли; КонецЦикла; КонецПроцедуры +&НаСервере +Функция ОтметкаСкладаПоУмолчанию(Наименование) + + Имя = ВРег(СокрЛП(Наименование)); + Если ПустаяСтрока(Имя) Тогда + Возврат Ложь; + КонецЕсли; + Если СтрНайти(Имя, "НЕ ИСПОЛЬЗОВАТЬ") > 0 Тогда + Возврат Ложь; + КонецЕсли; + Возврат Истина; + +КонецФункции + +&НаСервере +Функция ОтметкаОрганизацииПоУмолчанию(Наименование) + + Имя = ВРег(СокрЛП(Наименование)); + Если Имя = ВРег("Управленческая организация") Или Имя = ВРег("ФК РАНА") Тогда + Возврат Истина; + КонецЕсли; + Возврат Ложь; + +КонецФункции + &НаСервере Функция ЗагрузитьОстаткиНаСервере()