Files
crm3_26.rhana/CHANGELOG.md
T
mihailkudravcev 890cf22274 РК_ПроверкаСерий 1.3.1.70: форма проверки и исправления серий (#14).
Поиск пустых номеров/сроков с учётом настроек вида; предложения из наименования; режим тест.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 10:32:10 +03:00

440 lines
30 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.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 |