РК_ПроверкаСерий — объединение дублей СерииНоменклатуры с учётом остатков
#15
Notifications
Due Date
No due date set.
Depends on
#14 🪲 Проверка корректности данных в справочнике серий
1c/crm3_26.rhana
Reference: 1c/crm3_26.rhana#15
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
В целевой ИБ
crm3(crm3-26) вСправочник.СерииНоменклатурынакопились дубли (перенос, обмен, ручной ввод).#14: вкладка «Заполнение реквизитов». #15: вкладка «Объединение дублей».
Критерий группы дублей (с 1.3.1.80)
Одинаковые (не помеченные на удаление):
ВидНоменклатурыНомер(в т.ч. пустой)ГоденДоДатаПроизводстване входит в ключ (политика вида у РАНА не используется; иначе группы дробятся). Колонка остаётся справочно.Наименование в ключ не входит.
Связь с #14
#14 заполняет номер из наименования, не нумератором. Одинаковые имена → одинаковый номер → дубли остаются. Уникальный нумератор разбил бы группы с пустым номером.
Порядок: сначала объединить дубли с пустым номером (#15), затем заполнять реквизиты (#14).
Выбор мастер-серии
Наибольшее число регистраторов в
ДвиженияСерийТоваров; при равенстве — меньшая ссылка.Остатки
ТоварыНаСкладах.Остатки(ВНаличии).ДвиженияСерийТоваров— оборотный регистр,.Остаткинет.Реализация
ed9a0e9cf9f49d968e73eТоварыНаСкладах2727353ДатаПроизводстваКритерии приёмки
ЗаменитьСсылкиЗависимости: #14.
Проверка повторяемости серий (по номеру и дате срока годности) и объединениеto РК_ПроверкаСерий — объединение дублей `СерииНоменклатуры` с учётом остатковПри тестировании вкладки «Заполнение реквизитов» (#14) исправлены ошибки загрузки и поиска:
Сер.Владелец(в crm3-26 серии не подчинены номенклатуре); поле формы «Последняя ошибка» для копирования текста.Поиск проблем работает.
1.3.1.75 — доработка таблицы
ПроблемныеСерии:ДатаПроизводства- по политики учета в видах номенклатур вроде у нас нигде не настраивалось.Если мы в рамках #14 выполним автозаполнение номеров (нумератором) или наименований, то поиск дублей уже не сработает?
Дата производства
По политикам видов (
ИспользоватьДатуПроизводстваСерии) у РАНА поле, как правило, не используется. Если оставить его в ключе, группа развалится, когда у одной серии дата пустая, а у «того же» дубля случайно заполнена.С 1.3.1.80 ключ дубля: вид + номер + ГоденДо.
ДатаПроизводстватолько справочно (с мастера).Это совпадает с оценкой в плане: ~870 уникальных ключей «вид + номер + срок».
Сломает ли #14 поиск дублей?
Наименование в ключ не входит. Заполнение «до dd.MM.yy» поиск дублей не ломает.
Номер в ключ входит. Важно, чем заполняем:
Сейчас #14 не выдаёт номера нумератором, а вытаскивает текст из наименования (
… до 31.12.25→ номер слева).Практический порядок:
Если сначала проставить уникальные номера — шаг 1 по пустым номерам сделать будет уже нельзя.
Для серий, у которых нет срока годности (Пустой срок годности), но он должен быть по политики учета серий из настроек вида номенклатуры, в обработке
РК_ПроверкаСерийна форме надо добавить поле с датой срока годности, которая будет устанавливаться по умолчанию в такие серии.1.3.1.81 (
1fecdb5) — поле Срок годности по умолчанию на вкладке «Заполнение реквизитов» (#15#issuecomment-266).Для проблемы «Пустой срок годности» (срок обязателен по политике вида):
Подставляется при «Найти проблемы», «Сформировать предложения» и «Заполнить по предложениям». Пустое поле — умолчание не подставляется.
Ключ дублей (#15) не менялся.
Загрузить расширение из git после
git pull.После исправления данных в сериях (#17) - возвращаемся к данной задаче.
Начинаю тестировать процедуру анализа и объединения серий в версии расширения
1.3.1.96.В версию
1.3.1.97добавленоГруппыДублейДеталиОстатков1- отдельный элемент из таблицыГруппыДублейдля отображения деталий анализа дублирования для удобного отображения серий, которые пересекаются с текущей выделенной строкой таблицы.ГруппыДублейобработкиРК_ПроверкаСерийдобавлен реквизитИдентификаторСериидля заполнения UUID мастер серий. На форме дроблен элемент таблицыГруппыДублейИдентификаторСерии.ФормаИзмененияМастерСериив обработку для реализации выбора другой мастер серии.Надо добавить / доработать
ГруппыДублейнадо добавить возможность сортировки по столбам.ГруппыДублейИдентификаторСериив таблицеГруппыДублей.Выбор) - открывать форму элемента мастер серии текущей строки.ГруппыДублейВыбрать другую мастер серию (назначить горячу клавишу на команду -Ctrl + C) для текущей выбранной строки с открытием дополнительной формы выбора серий (ФормаИзмененияМастерСерии) в группе (совпадающие) с мастер серией в текущей строке таблицыГруппыДублей. После выбора - выполнить изменения в текущей строке в соответствии с выбранной серией (если она отлична от текущей мастер серии).Выявленные ошибки версии
1.3.1.96Остается в версии
1.3.1.97.ОбъединитьГруппыс несколькими отмеченными строками черезГруппыДублейОтметкаи отключенным режимом тестирования (Объект.РежимТест = Ложь) - выдается предупреждение "Отметьте группы для объединения". Надо уточнить при каких условиях выполнять объединение и проверить логику выполнения команды.Выполнено по comment-354 в версии 1.3.1.98 (
d2aa3cd).Исправление
ОбъединитьГруппыЗакончитьРедактированиеСтроки, чтобы значение колонкиОтметкауспело зафиксироваться.ГруппыДублейОтметкарежим редактирования изменён наDirectly.Объединено.Доработки таблицы
ГруппыДублейИдентификаторСерии(UUID мастер-серии) при поиске дублей и при смене мастера.Выбороткрывает форму элемента мастер-серии.Ctrl+C) →ФормаИзмененияМастерСериисо списком серий группы; после выбора пересчитываются мастер, остатки, детали, UUID.Можно
git pullи проверять на1.3.1.98.Проверяю версию
1.3.1.100на предмет установки пометки на удаление в дублирующие серии. По факту - работает, но нигде в интерфейсе не отображается отметка о пометке на удаление.Надо, например, в форме
ФормаИзмененияМастерСериидобавить поле с отображением этой информации, и при выполнении изменении пометки на удаление (при записи дублирующих серий во время объединения) - сообщать об этом пользователю.При повторном формировании таблицы дублей серии, которые помечены на удаление и по которым нет остатков в поиске дублей не учитывать.
Выполнено по comment-373 в 1.3.1.101 (
e7aa007).UI пометки удаления
ФормаИзмененияМастерСериидобавлена колонка Пометка удаления; помеченные серии тоже показываются в списке.Сообщение при объединении
Поиск дублей
Можно
git pullи проверять.В рабочую целевую базу установил расширение версии
1.3.1.101. Применил. Продолжаю тестирование.Окно для приёмки #15 (контекст crm3-migration#24)
В целевой ИБ
crm3на 01.08.2026 ТнС/комиссия = 0 (после #23). Это оптимальный момент объединить дубли до записи вводов 01.08.Расширение в цели уже 1.3.1.101 (comment-621).
Прогон
РК_ПроверкаСерий→ вкладка Объединение дублей → Найти дубли (ключ: вид + номер + срок).ЗаменитьСсылкине вызывается; группы без остатков автоотмечены (Отметкапри пустомПредупреждение).Код приёмки уже в 1.3.1.101; нужна операционная приёмка на пустых складах.
Срез дублей при пустых складах (BSL)
docs/transfer/Код_анализа_дублей_серий_crm3-26.bsl→data_transfer/crm3-26/series_dup_groups_20260827.logКритерии кода 1.3.1.101 для автоотметки выполняются на данных: все 292 группы без предупреждений.
Просьба: в
РК_ПроверкаСерий→ Найти дубли → тест → запись объединения всех отмеченных → повторный поиск → итог сюда (числа объединений). После этого закрываем #15.BSL merge attempt
Тест (
РежимТест=Да): групп=266, ссылок=9268, конфликт=0, ошибок=0 →series_merge_test_20260827.log.Запись через
ОбщегоНазначения.ЗаменитьСсылкизависла (~26 мин, 0% CPU, пустой лог) — процесс убит. Частичных итогов в логе нет.Просьба: объединить в UI
РК_ПроверкаСерий(1.3.1.101) — там тот же алгоритм, но с прогрессом/отменой. После — числа сюда.Код BSL оставлен:
docs/transfer/Код_объединения_дублей_серий_crm3-26.bsl(по умолчанию снова тест).Приёмка по данным ✅
Повторный BSL-анализ
series_dup_groups_now.log:Дубли по ключу вид+номер+срок в поиске больше не находятся (дубли помечены на удаление / ссылки сведены на мастера). Критерии приёмки по остаткам закрыты при пустых складах.
Закрываю #15. Дальше по порядку — #14 (заполнение реквизитов).