From f419fe067c127a4dca3bc17305bc04302ad43c51 Mon Sep 17 00:00:00 2001 From: mihailkudravcev Date: Mon, 31 Aug 2026 14:28:37 +0300 Subject: [PATCH] =?UTF-8?q?1.3.1.107:=20fix=20=D1=83=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D1=81=D1=85=D0=BB=D0=BE=D0=BF=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B8=20=D0=BA=D0=BE=D0=BC=D0=B8=D1=81=D1=81?= =?UTF-8?q?=D0=B8=D0=B8=20(#19).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Соответствие по ссылкам на строки ТЧ не срабатывало при Удалить(); пометка и удаление по индексам. Co-authored-by: Cursor --- src/Configuration.xml | 2 +- .../РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl | 61 ++++++++++--------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/Configuration.xml b/src/Configuration.xml index 4697219..3f03709 100644 --- a/src/Configuration.xml +++ b/src/Configuration.xml @@ -62,7 +62,7 @@ Role.РК_ОсновнаяРоль - 1.3.1.106 + 1.3.1.107 Language.Русский diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl index 55a82ad..010cf72 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl +++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl @@ -292,49 +292,51 @@ Возврат Результат; КонецЕсли; - Удаляемые = Новый Соответствие; + УдаляемыеИндексы = Новый Соответствие; Группы = Новый Соответствие; - Для Каждого СтрТ Из ВходящиеКомиссионныеТовары Цикл + Для Инд = 0 По ВходящиеКомиссионныеТовары.Количество() - 1 Цикл + СтрТ = ВходящиеКомиссионныеТовары[Инд]; Ключ = КлючАналитикиКомиссионнойСтроки(СтрТ); - СтрокиГруппы = Группы.Получить(Ключ); - Если СтрокиГруппы = Неопределено Тогда - СтрокиГруппы = Новый Массив; - Группы.Вставить(Ключ, СтрокиГруппы); + ИндексыГруппы = Группы.Получить(Ключ); + Если ИндексыГруппы = Неопределено Тогда + ИндексыГруппы = Новый Массив; + Группы.Вставить(Ключ, ИндексыГруппы); КонецЕсли; - СтрокиГруппы.Добавить(СтрТ); + ИндексыГруппы.Добавить(Инд); КонецЦикла; Для Каждого ЭлементГруппы Из Группы Цикл - СтрокиГруппы = ЭлементГруппы.Значение; + ИндексыГруппы = ЭлементГруппы.Значение; Помеченные = Новый Соответствие; Отрицательные = Новый Массив; ПоложительныеССерией = Новый Массив; - Для Каждого СтрТ Из СтрокиГруппы Цикл - Если Помеченные.Получить(СтрТ) <> Неопределено Тогда + Для Каждого Инд Из ИндексыГруппы Цикл + Если Помеченные.Получить(Инд) <> Неопределено Тогда Продолжить; КонецЕсли; + СтрТ = ВходящиеКомиссионныеТовары[Инд]; Кол = СтрТ.Количество; Если Кол < 0 И Не СерияЗаполненаВСтрокеКомиссии(СтрТ) Тогда - Отрицательные.Добавить(СтрТ); + Отрицательные.Добавить(Инд); ИначеЕсли Кол > 0 И СерияЗаполненаВСтрокеКомиссии(СтрТ) Тогда - ПоложительныеССерией.Добавить(СтрТ); + ПоложительныеССерией.Добавить(Инд); КонецЕсли; КонецЦикла; - Для Каждого НегСтр Из Отрицательные Цикл - Если Помеченные.Получить(НегСтр) <> Неопределено Тогда + Для Каждого ИндНег Из Отрицательные Цикл + Если Помеченные.Получить(ИндНег) <> Неопределено Тогда Продолжить; КонецЕсли; - НужноеКол = -НегСтр.Количество; - Для Каждого ПозСтр Из ПоложительныеССерией Цикл - Если Помеченные.Получить(ПозСтр) <> Неопределено Тогда + НужноеКол = -ВходящиеКомиссионныеТовары[ИндНег].Количество; + Для Каждого ИндПоз Из ПоложительныеССерией Цикл + Если Помеченные.Получить(ИндПоз) <> Неопределено Тогда Продолжить; КонецЕсли; - Если ПозСтр.Количество = НужноеКол Тогда - Помеченные.Вставить(НегСтр, Истина); - Помеченные.Вставить(ПозСтр, Истина); + Если ВходящиеКомиссионныеТовары[ИндПоз].Количество = НужноеКол Тогда + Помеченные.Вставить(ИндНег, Истина); + Помеченные.Вставить(ИндПоз, Истина); Результат.УдаленоПар = Результат.УдаленоПар + 1; Прервать; КонецЕсли; @@ -343,35 +345,34 @@ Остаток = Новый Массив; СуммаКол = 0; - Для Каждого СтрТ Из СтрокиГруппы Цикл - Если Помеченные.Получить(СтрТ) <> Неопределено Тогда + Для Каждого Инд Из ИндексыГруппы Цикл + Если Помеченные.Получить(Инд) <> Неопределено Тогда Продолжить; КонецЕсли; - Остаток.Добавить(СтрТ); - СуммаКол = СуммаКол + СтрТ.Количество; + Остаток.Добавить(Инд); + СуммаКол = СуммаКол + ВходящиеКомиссионныеТовары[Инд].Количество; КонецЦикла; Если Остаток.Количество() > 1 И ?(СуммаКол >= 0, СуммаКол, -СуммаКол) < 0.000001 Тогда - Для Каждого СтрТ Из Остаток Цикл - Помеченные.Вставить(СтрТ, Истина); + Для Каждого Инд Из Остаток Цикл + Помеченные.Вставить(Инд, Истина); КонецЦикла; Результат.УдаленоГруппNetZero = Результат.УдаленоГруппNetZero + 1; КонецЕсли; Для Каждого ЭлементПометки Из Помеченные Цикл - Удаляемые.Вставить(ЭлементПометки.Ключ, Истина); + УдаляемыеИндексы.Вставить(ЭлементПометки.Ключ, Истина); КонецЦикла; КонецЦикла; Для Инд = ВходящиеКомиссионныеТовары.Количество() - 1 По 0 Цикл - СтрТ = ВходящиеКомиссионныеТовары[Инд]; - Если Удаляемые.Получить(СтрТ) <> Неопределено Тогда + Если УдаляемыеИндексы.Получить(Инд) <> Неопределено Тогда ВходящиеКомиссионныеТовары.Удалить(Инд); КонецЕсли; КонецЦикла; - Результат.УдаленоСтрок = Удаляемые.Количество(); Результат.СталоСтрок = ВходящиеКомиссионныеТовары.Количество(); + Результат.УдаленоСтрок = Результат.БылоСтрок - Результат.СталоСтрок; Возврат Результат; КонецФункции