Files
crm3_26.rhana/CHANGELOG.md
T
mihailkudravcev 8af7d4b927 1.3.1.124: ED договоры — партнёр по РК_КодСтаройБазы (#68).
После типовой отложенной обработки договора; fallback Transfer API как у контрагентов.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-07 14:20:54 +03:00

806 lines
59 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# История изменений crm3-26.rhana
Формат версии: `1.3.0.NNN` / `1.3.1.NNN` (синхронизируется с `VERSION` и `Configuration.xml`).
---
## 1.3.1.124 (2026-10-07)
### ED договоры: партнёр по РК_КодСтаройБазы ([#68](https://git.p7net.ru/rhana/crm3-migration/issues/68))
- Код партнёра из `AdditionalInfo` при получении договора (общий хук `ПриКонвертацииДанныхXDTO`).
- Перед записью и после `ОтложеннаяОбработка_ДоговорыКонтрагентов`: установка `Партнер` по `РК_КодСтаройБазы` (+ Transfer API fallback, как #67).
## 1.3.1.123 (2026-10-07)
### Fix: журнал при fallback партнёра ED ([#67](https://git.p7net.ru/rhana/crm3-migration/issues/67) comment-1632)
- `ЗаписатьОшибкуВЖурналРегистрации` больше не вызывается с `Неопределено` (падение `.Метаданные` при create отсутствующего партнёра).
- В предупреждение попадают meta/results `partners/load`; `update_existing=true` чтобы дописать `РК_КодСтаройБазы` при match по имени.
## 1.3.1.122 (2026-10-07)
### ED: fallback партнёра через Transfer API ([#67](https://git.p7net.ru/rhana/crm3-migration/issues/67))
- Если партнёр не найден по `РК_КодСтаройБазы`: `partners/export` на исходной ИБ через константу `РК_РабочееПодключениеЧерезАПИ` (как в `РК_ЗагрузкаОстатков`), затем `РВС_TransferAPIПартнеры.ВыполнитьЗагрузку` в целевой (без create контрагентов).
- `РК_ОбменСВнешнейБазой.ПартнерыВнешнейБазы` — обёртка `POST /v1/partners/export`.
- Кеш загруженных партнёров по коду в рамках сессии обмена.
## 1.3.1.121 (2026-10-07)
### Обмен ED crm3-dev → crm3-26: партнёр контрагента без дублей ([#67](https://git.p7net.ru/rhana/crm3-migration/issues/67))
- При получении контрагента: код партнёра исходной ИБ из `AdditionalInfo.РК_КодСтаройБазы` (кеш сессии обмена).
- `&Перед` `ОтложеннаяОбработка_Контрагенты`: поиск партнёра по доп. реквизиту `РК_КодСтаройБазы`, подстановка ссылки до типового создания.
- `&После`: запись `РК_КодСтаройБазы` на партнёре, созданном обменом (только если пусто).
## 1.3.1.120 (2026-09-04)
### РК_ЗагрузкаОстатков — ДатаСрокаГодностиПоУмолчанию (#46)
- Сохраняемый реквизит `ДатаСрокаГодностиПоУмолчанию` + поле на вкладке Настройки.
- Fallback `ГоденДо` при создании серии без `series_expire` / даты в имени — из реквизита, **не** из даты среза.
- Пустой реквизит: заглушка `Перенос_*` не создаётся (комментарий сопоставления).
- `ДатаПроизводства` по-прежнему = дата среза остатков.
## 1.3.1.119 (2026-09-04)
### РК_ЗагрузкаОстатков — порядок команд + версия на форме (#40)
- Кнопка «Свернуть комиссионные остатки» в командной панели перед «Сопоставить» (порядок: загрузить → свернуть → сопоставить → создать).
- Служебная строка с именем/версией расширения `crm326RHANA` под шапкой формы.
## 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)
- ТЧ `СозданныеДокументы` на форме заполняется явно из результата создания (не только через `ЗначениеВРеквизитФормы`).
- Если документов 0 — предупреждение: нужно сначала «Сопоставить».
- В лог create: диагностика ТЧ (всего / сопоставлено / готово qty>0) для own и comm.
- Проверка успешного создания документа: `ДокументОбъект` + заполненная ссылка.
## 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)
- Реквизит `ВыгружатьДанныеТаблиц` (сохраняется): при включении после загрузки / сопоставления / свёртки / создания документов пишет 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.3.1.113 (2026-09-03)
### РК_ЗагрузкаОстатков — расчёт НДС в строках ввода (#33)
- После заполнения ТЧ own/comm: `СуммаНДС`, `СуммаСНДС`, `СуммаБезНДС`, `НДСРегл` через `ПакетнаяОбработкаТабличнойЧасти` (fallback — `УчетНДСУПКлиентСервер.РассчитатьСуммуНДС`).
- Учитывает `ЦенаВключаетНДС` / `НалогообложениеНДС` / ставку «Без НДС» и процентные ставки.
## 1.3.1.112 (2026-09-03)
### РК_ЗагрузкаОстатков — CSV таблиц и файловый лог (#29)
- Реквизит `ПутьКФайламВыгрузкиТаблиц` (сохраняется между сеансами) + выбор каталога.
- Реквизит `РежимЗаписиФайловВыгрузки`: **Клиент** / **Сервер** (сохраняется); CSV и логи пишутся на выбранной стороне.
- Команда «Выгрузить таблицы в CSV»: own + comm, UTF-8, уникальные имена `crm-dev_to_crm3-26_*_yyyy-MM-dd_HHmmss.csv`.
- Флажок формы `ПисатьЛогиВПапку` (не сохраняется, по умолчанию выкл.): подробный протокол «Создать документы» (тест/запись) в `.log` в том же каталоге.
- Режим «Сервер»: путь — каталог/UNC, доступный серверу 1С; диалог выбора каталога клиента недоступен (подсказка).
## 1.3.1.111 (2026-09-03)
### РК_ЗагрузкаОстатков — договор комиссии 2.5 (#34)
- Поиск договора `ПередачаНаКомиссию` по партнёру/контрагенту/организации (предпочтительно `КомиссионныеПродажи25`).
- Соглашение не содержит реквизит `Договор`; API не отдаёт `contract_*`.
- Сопоставление и создание документа без договора — ошибка с понятным текстом.
## 1.3.1.110 (2026-09-02)
### РК_ЗагрузкаОстатков — серии: ГоденДо и заглушки по номенклатуре (#30, #31)
- `series_expire` из API → реквизит ТЧ `СерияГоденДо`; при создании серии заполняются `ГоденДо`, `ДатаПроизводства`, `ВидНоменклатуры`.
- Fallback срока из имени серии (`до DD.MM.YY`); при отсутствии данных — дата среза cutover.
- Заглушки: ключ `ВидСер + Номенклатура + ГоденДо`, номер `Перенос_{код номенклатуры}_{yyyyMMdd}` (не одна серия на склад).
## 1.3.1.109 (2026-09-01)
### РК_ЗагрузкаОстатков — маппинг соглашений комиссии cutover (#24)
- Dev GUID → target GUID для marketplace и plain «Основное соглашение по договорам» → individual Поварова (`189cf86f…`, не типовое).
- Plain без маппинга: не подставлять типовое продажи по наименованию.
- Fallback партнёра из `Контрагент.Партнер`, если в API пусто.
- Канон: `docs/transfer/mapping/map_commission_agreements_cutover_20260801.csv`.
## 1.3.1.106 (2026-08-31)
### РК_ЗагрузкаОстатков — ГТД вне ключа схлопывания (#19)
- `КлючАналитикиКомиссионнойСтроки`: поле **ГТД** исключено из ключа (как серия).
- Пары −/+ с пустой ГТД в отрицательной строке и заполненной в положительной теперь схлопываются (PLR-041047 и аналоги).
## 1.3.1.105 (2026-08-31)
### РК_ЗагрузкаОстатков — fix дубли id Form.xml (#19)
- Команда «Свернуть комиссионные остатки» использовала id **1518/1519/1521**, уже занятые таблицей `ОтборГруппНоменклатур` → дерево групп не заполнялось.
- Новые id кнопок: **1566–1569**.
## 1.3.1.104 (2026-08-31)
### РК_ЗагрузкаОстатков — fix компиляции Abs (#19)
- `Abs()` заменён на `?(СуммаКол >= 0, СуммаКол, -СуммаКол)` — в BSL 1С нет глобальной функции `Abs`.
## 1.3.1.103 (2026-08-31)
### РК_ЗагрузкаОстатков — fix загрузки Form.xml (#19)
- Удалён невалидный `StdPicture.CollapseTree` у команды «Свернуть комиссионные остатки» (ошибка XDTO Picture при загрузке из файлов).
## 1.3.1.102 (2026-08-31)
### РК_ЗагрузкаОстатков — свернуть комиссионные остатки (#19, crm3-migration#24)
- Команда **«Свернуть комиссионные остатки»** на форме и на вкладке комиссии.
- Алгоритм: пары «−qty без серии / +qty с серией» при равных |qty|; затем группы с net qty ≈ 0.
- Экспорт `СвернутьКомиссионныеОстатки()` в ObjectModule.
## 1.3.1.101 (2026-08-21)
### РК_ПроверкаСерий — отображение пометки удаления дублей (#15)
- В `ФормаИзмененияМастерСерии` добавлена колонка **Пометка удаления**; в списке видны и помеченные серии.
- После объединения при включённой настройке пометки — оповещение и сообщение пользователю о числе помеченных дублей; комментарий в строке группы.
- В поиске дублей не учитываются серии с пометкой удаления и без остатков.
## 1.3.1.100 (2026-08-20)
### РК_ПроверкаСерий — пометка дублей на удаление (#15)
- Добавлен сохраняемый реквизит формы `Помечать дубли серии на удаление`.
- При объединении (не в режиме теста), если настройка включена, после `ЗаменитьСсылки` не-мастер серии помечаются на удаление.
## 1.3.1.99 (2026-08-20)
### РК_ЗагрузкаЦен — актуальные цены из исходной ИБ (#18)
- Обработка `РК_ЗагрузкаЦен` в подсистеме «Обмен с внешней базой»: срез цен на дату через Transfer API (`POST /v1/prices/types`, `POST /v1/prices/slice`, нужен **ws-rhana ≥ 0.0.0.44** на исходной ИБ).
- Сопоставление и при необходимости создание видов цен; сопоставление номенклатуры (артикул → GUID → код → наименование).
- Документы `УстановкаЦенНоменклатуры` (ТЧ `Товары2_5` при ЦО 2.5, `СерияЦО` пустая — в источнике цены без серии).
- В таблице входящих цен — признаки посерийного складского учёта и ключа цен по серии в цели, текущая цена цели.
## 1.3.1.98 (2026-08-20)
### РК_ПроверкаСерий — доработка объединения дублей (#15)
- Исправлен ложный отказ «Отметьте группы для объединения»: перед проверкой завершается редактирование строки, колонка `Отметка` переведена в `EditMode=Directly`, уточнены сообщения (в т.ч. когда отмеченные группы уже объединены).
- При поиске дублей заполняется `ИдентификаторСерии` (UUID мастер-серии).
- Для таблицы `ГруппыДублей` добавлены сортировка по текущей колонке и открытие формы мастер-серии по событию `Выбор`.
- Команда **Выбрать другую мастер серию** (`Ctrl+C`) открывает `ФормаИзмененияМастерСерии` со списком серий группы; после выбора пересчитываются мастер, остатки и детали строки.
## 1.3.1.97 (2026-08-20)
### РК_ПроверкаСерий — заготовки UI объединения дублей (#15)
- Добавлены `ГруппыДублейДеталиОстатков1`, реквизит `ИдентификаторСерии`, пустая форма `ФормаИзмененияМастерСерии` (доработаны в 1.3.1.98).
## 1.3.1.96 (2026-08-20)
### РК_ПроверкаСерий — исправление события двойного клика (#17)
- Открытие формы серии привязано к событию таблицы `Выбор` (`Selection`), а не к `ОбработкаВыбора` (`ChoiceProcessing`).
- `ПроблемныеСерииПриАктивизацииСтроки` по-прежнему только обновляет UUID выбранной серии.
## 1.3.1.95 (2026-08-19)
### РК_ПроверкаСерий — открытие формы серии по событию выбора (#17)
- Открытие формы элемента серии переведено с `ПриАктивацииСтроки` на событие `Выбор` таблицы `ПроблемныеСерии`.
- Обработчик активации строки оставлен только для обновления UUID выбранной серии под таблицей.
## 1.3.1.89f (2026-08-19)
### РК_ПроверкаСерий — открытие формы серии без двойного клика (#17)
- Открытие формы элемента серии переведено на обработчик активации строки `ПроблемныеСерии`, чтобы не зависеть от повторной активации той же строки.
## 1.3.1.90 (2026-08-19, отменена)
### РК_ПроверкаСерий — критичные замечания (#17)
- В расширение добавлены зависимости на справочники `СерииНоменклатуры`, `Номенклатура`, `ВидыНоменклатуры`, чтобы в ТЧ `ПроблемныеСерии` корректно подтягивалось описание типов значений.
- Версия отменена; итоговая рабочая публикация перенесена в `1.3.1.89f`.
## 1.3.1.89 (2026-08-19)
### РК_ПроверкаСерий — UUID в форме и исправление записи (#17)
- На странице заполнения под таблицей `ПроблемныеСерии` добавлено отображение UUID выбранной серии, а `ТекстПоследнейОшибки` перенесён на отдельную страницу `Отчетность`.
- Новые строки таблицы проблем теперь создаются с `Отметка = Ложь`.
- `Исправить отмеченные` теперь определяет необходимость записи по реальному объекту `СерииНоменклатуры` из базы, а не по уже заполненной строке формы после `ЗаполнитьПоПредложениям`.
## 1.3.1.88 (2026-08-19)
### РК_ПроверкаСерий — НГ/КГ по ссылке серии (#17)
- Группировка строк `НГ` / `КГ` переведена с представления серии на саму ссылку `Серия`, чтобы разные элементы справочника с одинаковым текстом не объединялись в одну группу.
## 1.3.1.87 (2026-08-19)
### РК_ПроверкаСерий — группы строк серии и синхронизация значений (#17 / #14)
- В таблицу `ПроблемныеСерии` добавлены колонки `НГ` и `КГ`: номер группы уникальной серии и количество строк этой серии в таблице.
- После применения предложенных значений и после исправления строки значения серии (`Номер`, `ГоденДо`, `Наименование`, предложенные поля, признак исправления) синхронизируются во всех строках той же серии.
## 1.3.1.86 (2026-08-19)
### РК_ПроверкаСерий — приоритет автономера из срока (#17)
- Если `Номер` пустой и есть срок годности (включая **Срок годности по умолчанию**), то предложенный номер формируется как `a-YYMMDD` из даты срока в приоритете над разбором `Наименование`.
## 1.3.1.85 (2026-08-19)
### РК_ПроверкаСерий — номер/наименование при «Пустой срок годности» (#17 / #14)
- Для сценария, когда строка проблемы содержит только «Пустой срок годности», автономер `a-YYMMDD` и связанное `Наименование` (из даты срока) теперь применяются также на этапе «Исправить отмеченные».
## 1.3.1.84 (2026-08-19)
### РК_ПроверкаСерий — автономер при «Пустой срок годности» (#17 / #14)
- Если `Номер` пустой и по политике вида номер обязателен, то предложение номера `a-YYMMDD` формируется из даты срока (в т.ч. из **«Срок годности по умолчанию»**), даже когда строка проблемы содержит только «Пустой срок годности».
## 1.3.1.83 (2026-08-18)
### РК_ПроверкаСерий — автономер из срока годности (#17)
- Для «Пустой номер» (номер обязателен по политике вида): если из наименования не извлекли — номер `a-YYMMDD` из срока (фактического или предложенного).
- Пример: срок 01.02.2027 → номер `a-270201`, наименование `a-270201 до 01.02.2027` (если наименование пустое).
- Префикс `a-` — автоматически сгенерированный номер для исправления серии.
## 1.3.1.82 (2026-08-18)
### РК_ПроверкаСерий — сохранение срока годности по умолчанию
- Для формы включён автосохранение значений (`AutoSaveDataInSettings`).
- Реквизит `ГоденДоПоУмолчанию` на форме отмечен как сохраняемый.
## 1.3.1.81 (2026-08-18)
### РК_ПроверкаСерий — срок годности по умолчанию (#15 / #14)
- На вкладке «Заполнение реквизитов» поле **Срок годности по умолчанию**.
- Для проблемы «Пустой срок годности» (срок обязателен по политике вида): сначала дата из наименования, если не разобралась — значение поля.
- Используется при «Найти проблемы», «Сформировать предложения» и «Заполнить по предложениям».
## 1.3.1.80 (2026-08-17)
### РК_ПроверкаСерий — ключ дублей (#15)
- Группа дублей: вид + номер + срок годности. `ДатаПроизводства` не входит в ключ (политика вида у РАНА не используется).
- #14 заполняет номер из наименования, не нумератором; уникальные номера разбили бы группы с пустым номером.
## 1.3.1.79 (2026-08-17)
### Исправление
- Компиляция формы: `ДеньМесяца` заменён на платформенный `День()`; локальные переменные даты переименованы, чтобы не затенять функции.
## 1.3.1.78 (2026-08-17)
### РК_ПроверкаСерий — анализ таблицы проблем
- Отбор **Только с остатком**, поиск по строке в командной панели таблицы, сортировка по остатку и по текущей колонке.
- Номенклатура заполняется из `ТоварыНаСкладах` (при отсутствии остатка — из `ДвиженияСерийТоваров`).
- Кнопка **Сформировать предложения** — отдельная генерация предложенных номера/срока/наименования из наименования серии.
- Разбор срока: не только шаблон «до …», но и дата в тексте (`dd.MM.yy`, `MM.yyyy`).
## 1.3.1.77 (2026-08-17)
### Исправление
- Остатки по сериям: `ДвиженияСерийТоваров` — оборотный регистр (нет `.Остатки`); используется `ТоварыНаСкладах.Остатки` (`ВНаличииОстаток`).
## 1.3.1.76 (2026-08-17)
### Исправление
- `ПроблемныеСерии`: реквизит `НомерСтроки` переименован в `ПорядковыйНомер` (имя `НомерСтроки` зарезервировано платформой для ТЧ).
## 1.3.1.75 (2026-08-17)
### РК_ПроверкаСерий — вкладка «Заполнение реквизитов»
- ТЧ `ПроблемныеСерии`: колонки **№** (`ПорядковыйНомер`) и **Остаток** (`ТоварыНаСкладах.Остатки`).
- Команда **Заполнить по предложениям** — перенос предложенных значений в колонки таблицы для отмеченных строк (без записи в ИБ).
- **Исправить отмеченные** — запись из колонок таблицы (или предложений, если колонки пусты).
## 1.3.1.74 (2026-08-17)
### РК_ПроверкаСерий — парсинг наименования из выборки
- Исправлена ошибка «Поле объекта недоступно для записи (Наименование)» при «Найти проблемы»: параметры функций парсинга не перезаписываются.
## 1.3.1.73 (2026-08-17)
### РК_ПроверкаСерий — исправление поиска проблем
- Запрос: убрано несуществующее поле `Сер.Владелец` (в crm3-26 серии не подчинены номенклатуре).
- Поле формы **Последняя ошибка** — полный текст ошибки для копирования; дублируется в окно сообщений.
## 1.3.1.72 (2026-08-17)
### Исправление
- `РК_ПроверкаСерий.xml`: опечатка `<<FillValue` → `<FillValue` (ошибка загрузки расширения).
## 1.3.1.71 (2026-08-17)
### РК_ПроверкаСерий — объединение дублей с учётом остатков (#15)
- Вкладка **Объединение дублей**: поиск групп (вид + номер + срок + дата производства).
- Остатки из `ТоварыНаСкладах.Остатки` (сумма `ВНаличии` по серии); предупреждение при остатках у нескольких серий или у дублей.
- Группы без остатков отмечаются автоматически; с остатками — только вручную + подтверждение перед записью.
- Режим тест; объединение через `ОбщегоНазначения.ЗаменитьСсылки`.
## 1.3.1.70 (2026-08-17)
### РК_ПроверкаСерий — проверка и исправление серий (#14)
- Обработка **Проверка серий**: форма поиска проблем в `СерииНоменклатуры`.
- Учитываются настройки вида (`ИспользоватьНомерСерии`, `ИспользоватьСрокГодностиСерии`).
- Предложения: номер и срок из наименования; наименование «до dd.MM.yy» для серий без номера.
- Режим тест (без записи), исправление отмеченных строк.
## 1.3.1.69 (2026-08-17)
### РК_ЗагрузкаОстатков — исправление кнопки «Заполнить справочники отбора» (#12)
- Устранён конфликт id формы (`1547`/`1548`) с полем комиссионных товаров — команда не срабатывала.
- После успешного заполнения показывается оповещение с количеством групп, складов и организаций.
## 1.3.1.68 (2026-08-17)
### РК_ЗагрузкаОстатков — сохраняемые данные формы (#13)
- Сохранение в настройках: подключение, даты, организация, дерево групп номенклатуры.
- После восстановления настроек дерево синхронизируется в ТЧ `ОтборГруппНоменклатур`.
## 1.3.1.67 (2026-08-17)
### РК_ЗагрузкаОстатков — общая команда справочников отбора (#12)
- Команда **Заполнить справочники отбора** на вкладке «Отбор»: группы номенклатуры,
склады и организации загружаются одним действием.
- Удалены отдельные команды `ЗаполнитьГруппыНоменклатур`, `ЗаполнитьСклады`,
`ЗаполнитьОрганизации`.
## 1.3.1.66 (2026-08-14)
### РК_ЗагрузкаОстатков — дерево групп и отбор (#7)
- Таблица групп номенклатуры — `Representation=Tree` с вложенностью из `parent_guid`.
- Колонки **Отметка** и **Рекурсивно** (булево, по умолчанию Ложь).
- При загрузке остатков отмеченные группы уходят в `nomenclature_groups` /
`nomenclature_groups_recursive` (нужен **ws-rhana ≥ 0.0.0.42**).
## 1.3.1.65 (2026-08-14)
### РК_ЗагрузкаОстатков — исправление XML формы
- Восстановлен `Form.xml`: сломанный `ChildItems` таблицы комиссионных товаров (ошибка загрузки расширения).
## 1.3.1.64 (2026-08-14)
### РК_ЗагрузкаОстатков — TODO формы (#3–#7, #9)
- Отборы складов и организаций — ТЧ объекта, не реквизиты формы.
- `ра_ВидНоменклатурыCRM326` при загрузке остатков (нужен **ws-rhana ≥ 0.0.0.40**).
- Заполнение групп номенклатуры через `POST /v1/stock/nomenclature-groups`.
- Колонки комиссии сгруппированы как у собственных товаров.
## 1.3.1.63 (2026-08-13)
### РК_ЗагрузкаОстатков — серии и ГТД комиссии как в волне 1
- Комиссия: серии снова заполняются и сопоставляются (в т.ч. ТЧ Серии документа).
- ГТД комиссии не отключались — из `ТоварыПереданныеНаКомиссию`.
- Нужен **ws-rhana ≥ 0.0.0.39** (FIFO серий из передач на комиссию).
## 1.3.1.62 (2026-08-13)
### РК_ЗагрузкаОстатков — два количества, себестоимость rh_, комиссия без серий
- Столбцы **Кол. склад** и **Кол. финансовое** больше не смешиваются в одно количество.
- Себестоимость только у финансового контура (`rh_ТоварыНаСкладахСебестоимость` на исходной стороне).
- В документ ввода: количество — финансовое (если 0 — складское); сумма/цена из rh_; валюта упр. (USD), как волна 1.
- Комиссия 2.5: серии не заполняются и не сопоставляются.
- Нужен **ws-rhana ≥ 0.0.0.38** на исходной ИБ.
## 1.3.1.61 (2026-08-13)
### РК_ЗагрузкаОстатков — вид, стоимость, политика, ГТД/серии
- Вид номенклатуры из исходной ИБ в обеих входящих ТЧ (`kind_*`, не из policy).
- Стоимость упр./регл. и валюта в собственных и комиссионных строках.
- ТЧ **Политика учета номенклатуры** заполняется отдельным `POST /v1/stock/nomenclature-policy`.
- ГТД берётся из кода / регистрационного номера; количество — `qty_org`, если складское 0.
- Комиссия: колонки назначения и вида запасов (почему не схлопываются «+»/«−»).
- Нужен **ws-rhana ≥ 0.0.0.37** на исходной ИБ.
## 1.3.1.60 (2026-08-13)
### РК_ЗагрузкаОстатков — вкладка созданных документов
- ТЧ `СозданныеДокументы` и страница **«Документы ввода»**: ссылка, вид (собственные / комиссия 2.5),
склад / соглашение / партнёр, число строк и количество, комментарий, признак теста.
- Заполняется на 3-м этапе (в т.ч. в режиме теста без записи); после создания форма переключается на эту вкладку.
---
## 1.3.1.59 (2026-08-13)
### РК_ЗагрузкаОстатков — комиссия 2.5 и серии без лишних заглушек
- ТЧ `ВходящиеСобственныеТовары` (бывш. `ВходящиеДанные`) и `ВходящиеКомиссионныеТовары`.
- Загрузка: `mode=combined` + `mode=commission` (только переданные на комиссию 2.5).
- Сопоставление: серии создаются **только если не найдены** в целевой ИБ.
Заглушки `Перенос_*` — только при флаге **«Создавать заглушки серий»**.
- Документы: собственные (по складу) и `ВводОстатковТоваровПереданныхНаКомиссию2_5`
(по соглашению + партнёру, без склада). Количество, без себестоимости.
- Нужен **ws-rhana ≥ 0.0.0.36** на исходной ИБ.
---
## 1.3.1.58 (2026-08-12)
### РК_ЗагрузкаОстатков — отборы и заполнение входящих данных
- Команда **«Заполнить входящие данные»** (`ЗагрузитьОстатки`): остатки из выбранного
подключения в ТЧ `ВходящиеДанные` (фильтр по отмеченным складам и/или организациям).
- Отметки складов/организаций: команды панели и контекстного меню.
- **«Заполнить организации»** через `POST /v1/stock/organizations` (`РК_ОбменСВнешнейБазой`).
- Смена подключения: вопрос и очистка отборов + входящих данных.
---
## 1.3.1.57 (2026-08-12)
### РК_ЗагрузкаОстатков — понятная ошибка при Активно = Ложь
- Текст исключения в `РК_ОбменСВнешнейБазой.НастройкиПодключения`: что включить «Активно» и что проверка health работает без флажка.
- Команды формы (подбор складов, загрузка, сопоставление, создание документов) показывают предупреждение вместо стека исключения.
---
## 1.3.1.56 (2026-08-12)
### РК_ЗагрузкаОстатков — создание документов ввода остатков
- Реквизиты: `Организация`, `ПерезаписатьДокументы`.
- ТЧ: `ДокументВвода`, `ЗагруженоВДокумент`.
- Команда «Создать документы»: `ВводОстатковТоваров` (1 документ на склад, операция «собственные товары»),
только количество (без себестоимости — данных в API пока нет).
- Тег комментария: `РК_ПереносОстатков yyyyMMdd`; опционально удаление непроведённых документов волны.
---
## 1.3.1.55 (2026-08-11)
### Добавлено
- `РК_ФормаНастроекРана`: при открытии и смене `РК_РабочееПодключениеЧерезАПИ`
проверка через `СоединениеАктивно` — показ/скрытие `ДекорацияПодключениеНеСработает`.
---
## 1.3.1.54 (2026-08-11)
### Исправлено
- `РК_ОбменСВнешнейБазой`: заголовок `IBSession: start` при вызовах Transfer API —
иначе публикация с повторным использованием сеансов отвечает HTTP 400
(«Не указан заголовок управления сеансами…»).
- Краткий текст ошибки HTTP (из `<descr>` XML-ответа платформы) для формы проверки.
---
## 1.3.1.53 (2026-08-11)
### Исправлено
- Заимствован `CommonModule.ОбщегоНазначения` (Adopted, без доработки модуля) —
компилятор расширения видит только объекты расширения и заимствованные объекты хоста.
- В менеджере `РК_НастройкиПодключенияКВнешнейБазе` и `РК_ОбменСВнешнейБазой` снова
`ОбщегоНазначения.ЗначенияРеквизитовОбъекта` (как в `РК_ЗагрузкаОстатков` / `crm3-dev.rhana`).
---
## 1.3.1.52 (2026-08-11)
### Исправлено
- Модуль менеджера `РК_НастройкиПодключенияКВнешнейБазе` и `РК_ОбменСВнешнейБазой`:
убраны вызовы `ОбщегоНазначения.ЗначенияРеквизитовОбъекта` (модуль не заимствован в расширении) —
чтение реквизитов через ссылку/объект справочника.
---
## 1.3.1.51 (2026-08-11)
### РК_НастройкиПодключенияКВнешнейБазе
- Проверка соединения вынесена в модуль менеджера: `ПроверитьСоединение(Источник)`.
- Источник: ссылка, объект справочника или структура полей формы (без проверки «Активно»).
- Возврат: `Успех`, `Текст`, `Ответ`, `Ошибка` — для UI и вызова из кода.
- `СоединениеАктивно(Ссылка)` — «Активно» + совпадение `ИмяТекущейБазы` с текущей ИБ.
- `ИмяТекущейИнформационнойБазы()` — общее API менеджера.
---
## 1.3.1.50 (2026-08-11)
### РК_НастройкиПодключенияКВнешнейБазе
- Форма элемента: «Обновить имя текущей базы» — из `Ref=` / `File=` строки соединения.
- Форма элемента: «Проверить» — `GET /v1/health` по полям формы (без записи, без проверки «Активно»).
- `РК_ОбменСВнешнейБазой`: `ПроверитьСоединение`, `ВыполнитьGET`; токен передаётся в `X-Transfer-Token` (совместимо с Basic Auth).
---
## 1.3.1.49 (2026-08-10)
### Обработка РК_ЗагрузкаОстатков — подбор складов и предварительные остатки
- Общий модуль `РК_ОбменСВнешнейБазой`: HTTP-клиент Transfer API по `РК_НастройкиПодключенияКВнешнейБазе`.
- Подбор складов исходной ИБ (`POST /v1/stock/warehouses`) в отбор на форме.
- Загрузка остатков (`POST /v1/stock/balances`, mode=`combined`) в ТЧ `ВходящиеДанные` с детализацией (кол-во, артикул, код, характеристика, серия/ГТД GUID, вид, политика, организация).
- Шаг «Сопоставить»: поиск НСИ + создание серий-заглушек `Перенос_<склад>_<дата>` по логике BSL-переноса остатков (тест / запись).
- Создание документов ввода остатков — следующий шаг (пока не реализовано).
Пара: `ws-rhana` 0.0.0.30 (endpoint складов + `nomenclature_article`).
---
## 1.3.0.47 (2026-07-30)
### Обмен — приём СФ выданного без полей аванса в ТЧ
Модуль: `ОбменДаннымиXDTOСервер` (`&ИзменениеИКонтроль` `КонвертацияСвойстваСтруктурыОбъектаXDTO`).
Пакет из **crm3-dev** в `ПлатежноРасчетныеДокументы` передаёт только `ДатаДокумента` / `НомерДокумента`. Целевое ПКО также ждёт поля аванса (`ДатаИсправленияСчетаФактурыНаАванс` и др.). Типовой код при отсутствии свойства писал в `ПриемникДанных.ДополнительныеСвойства`, но у строки ТЧ этого поля нет → ошибка конвертации.
Исправление: фиксировать `СвойстваОтсутствующиеВПолученныхДанных` только если у приёмника есть `ДополнительныеСвойства`.
---
## 1.3.0.46 (2026-07-30)
### Обмен — приоритетный ВидНоменклатуры из ра_ВидНоменклатурыCRM326
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
При получении номенклатуры из **Рабочая CRM3**: если в пакете есть `AdditionalInfo.РК_ВидНоменклатурыCRM326`, `ВидНоменклатуры` сопоставляется по наименованию в целевой ИБ (перебивает защиту учётных реквизитов). Если значение не передано — действует прежний механизм обмена.
Пара с `crm3-dev.rhana` 1.0.1.342.
---
## 1.3.0.45 (2026-07-21)
### Обмен — ВидЦены строк из AdditionalInfo (Д1.3 / issue #10)
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
Заменяет дозаполнение из соглашения (1.3.0.44): передаём фактические виды цен из исходной ИБ.
- На отправке (`crm3-dev.rhana` 1.0.1.338): `AdditionalInfo.РК_ВидыЦенСтрок`.
- На приёме: сохранить карту при `*_ПриКонвертацииДанныхXDTO`; применить в `ОтложеннаяОбработка_*` по `ИндексВТЧ` (запасной ключ — `НомерСтроки`).
- Пустой вид цены в источнике остаётся пустым; цена/сумма не пересчитываются.
- Только узел **«Рабочая CRM3»**.
Refs: https://git.p7net.ru/rhana/crm3-migration/-/issues/10
---
## 1.3.0.44 (2026-07-21)
### Обмен — дозаполнение ВидЦены в строках ТЧ (Д1.3, вариант B)
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
ED 1.8 не передаёт `ВидЦены` / `ВидЦеныПоставщика` в строках табличных частей (XDTO-схема не меняется).
- `&После("ВыполнитьПроцедуруМодуляМенеджера")` — `РК_ВыполнитьПроцедуруМодуляМенеджера_ДозаполнитьВидЦены` для всех процедур `ОтложеннаяОбработка_*`.
- Универсально обходит все ТЧ документа; для пустых `ВидЦены` — `ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(ПоляЗаполнения = "ВидЦены")`; для `ВидЦеныПоставщика` — `ЦеныПартнеровЗаполнениеСервер` с тем же ограничением полей.
- Цена и сумма строк **не пересчитываются** (в отличие от `ЗаполнитьУсловияПродажПоСоглашению(Истина)`).
- Только для узла **«Рабочая CRM3»** (`РК_ЭтоОбменС_Crm3Dev`).
---
## 1.3.0.43 (2026-07-21)
### Серии номенклатуры — подбор по владельцу вида и сроку
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
- Для ПКО `Справочник_СерииНоменклатуры` добавлен подбор существующей серии с учетом
владельца серий вида номенклатуры в целевой ИБ:
- `ВладелецВида + Номер + ГоденДо`,
- `ВладелецВида + Номер`,
- при пустом номере: `ВладелецВида + ГоденДо`.
- Поиск теперь опирается на маппинг видов номенклатуры на target (через
`РК_ВладелецСерийДляВидаНоменклатуры`), что снимает конфликт, когда вид в source и target различается.
- При найденной серии с другим GUID создается предупреждение и запись из пакета пропускается
(без создания дубликата).
---
## 1.3.0.42 (2026-07-15)
### Обмен — этапы графика оплаты ЗаказКлиента (Д1.2)
База: **1.3.0.41** (ws-rhana + объекты расчётов 1.3.0.40).
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
- `&После("ОтложеннаяОбработка_ЗаказыПоставщикуКлиента")` — `РК_ОтложеннаяОбработка_ЗаказыПоставщикуКлиента_ЭтапыОплаты`.
- При «бедных» этапах из XDTO (пустые `ДатаПлатежа` / `ВариантОтсчета`) ТЧ очищается и перезаполняется типовым `ЭтапыОплатыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты` по соглашению / графику оплаты / договору.
- При пустых реквизитах шапки из соглашения подставляются `ГрафикОплаты`, `ФормаОплаты`.
- Только для узла **«Рабочая CRM3»** (`РК_ЭтоОбменС_Crm3Dev`).
Данные уже загруженных заказов: `docs/transfer/Код_дозаполнения_этапов_оплаты_заказов_crm3-26.bsl` (монорепозиторий).
---
## 1.3.0.41 (2026-07-09)
### HTTP Transfer API перенесён в ws-rhana
Удалены объекты `РК_TransferAPI` и связанные модули/константы/роль.
Read-only HTTP API — в универсальном расширении [`ws-rhana`](https://git.p7net.ru/1c/ws-rhana.git) (`РВС_TransferAPI`).
---
## 1.3.0.40 (2026-07-08)
### Обмен — объекты расчётов по договорам
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
В UT 11.5 `ОбъектыРасчетов` — отдельный справочник; в XDTO 1.8 не передаётся. Типовой `ВзаиморасчетыСервер.ПередЗаписью` при обмене crm3-dev → crm3-26 может не создать ОР (пустой партнёр на договоре, сбой `СоздатьПоКлючу`).
| Процедура/функция | Назначение |
|-------------------|------------|
| `РК_ПартнерКонтрагентДляДоговора` | партнёр/контрагент из договора, подсказок заказа или последнего заказа |
| `РК_ОбеспечитьОбъектРасчетовПоДоговору` | создание ОР через `СоздатьЭлемент`, если не найден |
| `РК_ПКО_ДоговорыКонтрагентов_ДозаполнитьПартнера` | `&После` ПКО договора — дозаполнение партнёра из контрагента |
| `РК_ОтложеннаяОбработка_ДосоздатьОбъектыРасчетов` | `&После` типовой отложенной обработки — досоздание ОР по договорам из пакета |
Применяется только к узлу «Рабочая CRM3» (`РК_ЭтоОбменС_Crm3Dev`).
---
## 1.3.0.39 (2026-07-06)
### Контрагенты — уникальность ИНН/КПП
Модуль: `ПартнерыИКонтрагентыЛокализация` (заимствован).
В целевой конфигурации (crm3-26) проверка уникальности ИНН/КПП реализована в модуле локализации, а не в `ПартнерыИКонтрагенты` (как в crm3-dev). Функция возвращает структуру `НайденныеСовпадения` / `ДоступноСоздание` и учитывает `ЮрФизЛицо` (различение ИП и физлица).
| Процедура/функция | Изменение |
|-------------------|-----------|
| `ИННКППУжеИспользуетсяВИнформационнойБазе` | при поиске дублей исключаются контрагенты с `ПометкаУдаления = Истина` |
| `ПроверитьКорректностьЗаполненияКонтрагента` | для записываемого контрагента с `ПометкаУдаления` проверка уникальности ИНН/КПП **не выполняется** |
**Поведение** — аналогично `crm3-dev.rhana` v1.0.1.333:
- обычная запись — уникальность среди непомеченных на удаление;
- запись с пометкой удаления — проверка уникальности ИНН/КПП пропускается;
- дубль только у помеченного контрагента не блокирует активную карточку.
**Примечание:** отдельная CRM-функция `CRM_КлиентыСервер.ИННКППУжеИспользуетсяВИнформационнойБазе` (поиск по `Партнеры.CRM_ИНН`) не затронута — она относится к сценариям CRM, не к типовой записи справочника `Контрагенты`.
---
## 1.3.0.38 (2026-07-06)
### Обмен — фильтр узла «Рабочая CRM3»
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
| Функция | Назначение |
|---------|------------|
| `РК_УзелCrm3Dev_GUID()` | GUID узла исходной ИБ в целевой (`97cd20ee-bb06-11f0-8dac-0cc47a7d055f`) |
| `РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена)` | Истина только для обмена crm3-dev ↔ crm3-26 |
**Поведение:** доработки получения (защита учёта номенклатуры, пропуск обновления видов и складов, нормализация серий) применяются **только** к узлу **«Рабочая CRM3»**. Обмен с **Бухгалтерией** не затрагивается.
---
## 1.3.0.37 (2026-07-06)
### Обмен crm3-dev → crm3-26 — приём данных
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
#### Номенклатура
| Обработчик | Изменение |
|------------|-----------|
| `&Перед` / `&После` `ПКО_Справочник_Номенклатура_Получение_ПередЗаписьюПолученныхДанных` | для существующей номенклатуры — снимок и восстановление учётных реквизитов целевой ИБ; для новой — заполнение по виду целевой ИБ |
| `&После` `ОтложеннаяОбработка_ЗаполнитьНоменклатуру` | повторное восстановление учёта после типовой отложенной обработки |
Защищаемые реквизиты: `ВидНоменклатуры`, `ОсобенностьУчета`, `ТипНоменклатуры`, `ИспользованиеХарактеристик`, `ВладелецСерий`, `ВладелецХарактеристик`, `ГруппаФинансовогоУчета`, `СкладскаяГруппа`.
#### Виды номенклатуры и склады
| Обработчик | Изменение |
|------------|-----------|
| `&ИзменениеИКонтроль` `ПКО_Справочник_ВидыНоменклатуры_ПередЗаписьюПолученныхДанных` | существующие виды не обновляются (сопоставление по GUID сохраняется) |
| `&ИзменениеИКонтроль` `ПКО_Справочник_Склады_Получение_ПередЗаписьюПолученныхДанных` | существующие склады не перезаписываются |
#### Серии номенклатуры
| Обработчик | Изменение |
|------------|-----------|
| `&После` `ДобавитьПКО_Справочник_СерииНоменклатуры` | подключение `РК_ПКО_Справочник_СерииНоменклатуры_ПередЗаписьюПолученныхДанных` |
| `РК_ПКО_Справочник_СерииНоменклатуры_ПередЗаписьюПолученныхДанных` | нормализация владельца серии по настройкам вида в целевой ИБ; пропуск при конфликте |
#### Ставки НДС 22%
| Обработчик | Изменение |
|------------|-----------|
| `&После` `ЗаполнитьПравилаКонвертацииПредопределенныхДанных` | ПКПД `Перечисление_СтавкиНДС`: значения `НДС22`, `НДС22_122` |
**Контекст:** политика защиты учётных настроек целевой ИБ при синхронизации с crm3-dev. Подробнее: `docs/transfer/Анализ_синхронизации_crm3-dev_crm3-26.md` в монорепозитории crm3-26.
---
## 1.3.0.36 (2026-07-01)
### Синхронизация — первичная защита учёта при получении
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
- Сохранение учётных реквизитов номенклатуры целевой ИБ при обновлении из crm3-dev.
- Существующие склады не перезаписываются данными из пакета обмена.
*Доработка развита в 1.3.0.37 (виды, серии, отложенная обработка, НДС22) и ограничена узлом CRM3 в 1.3.0.38.*
---
## Связанные объекты расширения (обмен)
| Модуль | Роль |
|--------|------|
| `МенеджерОбменаЧерезУниверсальныйФормат` | защита учёта при получении, фильтр узла, ПКПД НДС22 |