export_docs v0.3.8: sync docs to docs (60 files)
+2
-2
@@ -18,8 +18,8 @@ show_index_link: false
|
|||||||
- [Анализ обработчиков обновления НДС 22](Анализ_обработчиков_обновления_НДС_22.md)
|
- [Анализ обработчиков обновления НДС 22](Анализ_обработчиков_обновления_НДС_22.md)
|
||||||
- [Анализ ошибок обновления](Анализ_ошибок_обновления.md)
|
- [Анализ ошибок обновления](Анализ_ошибок_обновления.md)
|
||||||
- [Анализ печати пакета документов и складского учета (v3.0)](Анализ_печати_пакета_документов_и_складского_учета (v3.0).md)
|
- [Анализ печати пакета документов и складского учета (v3.0)](Анализ_печати_пакета_документов_и_складского_учета (v3.0).md)
|
||||||
- [Анализ применения КредитНота (v1.1)](Анализ_применения_КредитНота (v1.1).md)
|
- [Анализ применения КредитНота (v1.1)](Анализ_применения_КредитНота.md (v1.1).md)
|
||||||
- [Анализ применения реквизита Купон (v1.0)](Анализ_применения_реквизита_Купон (v1.0).md)
|
- [Анализ применения реквизита Купон (v1.0)](Анализ_применения_реквизита_Купон.md (v1.0).md)
|
||||||
- [Анализ рисков неуникальности CRM ЖурналДокументов](Анализ_рисков_неуникальности_CRM_ЖурналДокументов.md)
|
- [Анализ рисков неуникальности CRM ЖурналДокументов](Анализ_рисков_неуникальности_CRM_ЖурналДокументов.md)
|
||||||
- [Итоговый отчет анализа регистров](Итоговый_отчет_анализа_регистров.md)
|
- [Итоговый отчет анализа регистров](Итоговый_отчет_анализа_регистров.md)
|
||||||
- [Отчет о конвертации](Отчет_о_конвертации.md)
|
- [Отчет о конвертации](Отчет_о_конвертации.md)
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Контекст проекта (перенаправление)
|
||||||
|
|
||||||
|
Документ перенесён и актуализирован:
|
||||||
|
|
||||||
|
**[docs/meta/PROJECT_STRUCTURE.md](meta/PROJECT_STRUCTURE.md)**
|
||||||
|
|
||||||
|
Используйте его как основной источник описания структуры репозитория, ИБ, каталогов данных и соглашений разработки.
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
---
|
||||||
|
title: Конвертер Markdown в HTML
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-09
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Конвертер Markdown в HTML
|
||||||
|
|
||||||
|
Скрипт `md_to_html.py` для конвертации Markdown файлов в HTML с красивым оформлением.
|
||||||
|
|
||||||
|
## Установка зависимостей
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install markdown
|
||||||
|
```
|
||||||
|
|
||||||
|
## Использование
|
||||||
|
|
||||||
|
### Базовое использование
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Конвертировать все .md файлы в папку html/
|
||||||
|
python md_to_html.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Конвертация конкретных файлов
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Один файл
|
||||||
|
python md_to_html.py -f Анализ_ошибок.md
|
||||||
|
|
||||||
|
# Несколько файлов
|
||||||
|
python md_to_html.py -f file1.md file2.md file3.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Конвертация по паттерну
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Все файлы с "анализ" в названии
|
||||||
|
python md_to_html.py -p "*анализ*.md"
|
||||||
|
|
||||||
|
# Все файлы с "отчет" в названии
|
||||||
|
python md_to_html.py -p "*отчет*.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Указание другой папки для вывода
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Сохранить в папку output
|
||||||
|
python md_to_html.py -o output
|
||||||
|
|
||||||
|
# Сохранить в папку docs/html
|
||||||
|
python md_to_html.py -o docs/html
|
||||||
|
```
|
||||||
|
|
||||||
|
### Указание другой рабочей директории
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Искать MD файлы в другой директории
|
||||||
|
python md_to_html.py -d /path/to/directory
|
||||||
|
```
|
||||||
|
|
||||||
|
## Параметры
|
||||||
|
|
||||||
|
- `-f, --files` - Конкретные файлы для конвертации (можно указать несколько)
|
||||||
|
- `-p, --pattern` - Паттерн для поиска файлов (например, "*анализ*.md")
|
||||||
|
- `-o, --output` - Папка для сохранения HTML файлов (по умолчанию: html)
|
||||||
|
- `-d, --directory` - Директория для поиска MD файлов (по умолчанию: текущая)
|
||||||
|
- `--no-toc` - Отключить автоматическое создание оглавления
|
||||||
|
- `-h, --help` - Показать справку
|
||||||
|
|
||||||
|
## Примеры
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Конвертировать все файлы
|
||||||
|
python md_to_html.py
|
||||||
|
|
||||||
|
# Конвертировать только файлы анализа
|
||||||
|
python md_to_html.py -p "*анализ*.md"
|
||||||
|
|
||||||
|
# Конвертировать конкретные файлы в папку docs
|
||||||
|
python md_to_html.py -f ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.md -o docs
|
||||||
|
|
||||||
|
# Конвертировать все файлы из подпапки
|
||||||
|
python md_to_html.py -d CRM3devLocal.Рана
|
||||||
|
```
|
||||||
|
|
||||||
|
## Особенности
|
||||||
|
|
||||||
|
- Автоматическое создание оглавления
|
||||||
|
- Подсветка синтаксиса кода
|
||||||
|
- Поддержка таблиц
|
||||||
|
- Красивое оформление с адаптивным дизайном
|
||||||
|
- Сохранение структуры исходных файлов
|
||||||
|
|
||||||
|
## Результат
|
||||||
|
|
||||||
|
Все HTML файлы сохраняются в папку `html/` (или указанную папку) с тем же именем, что и исходный MD файл, но с расширением `.html`.
|
||||||
|
|
||||||
@@ -0,0 +1,218 @@
|
|||||||
|
---
|
||||||
|
title: Техническое задание №2 - полный перенос новой логики УПД из crm3-26-promo в crm3-dev
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2026-04-21
|
||||||
|
date_modified: 2026-04-21
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
description: Полный план переноса логики подготовки данных и печати УПД из crm3-26-promo в crm3-dev с учетом выделения доработок в отдельное расширение упд5б.
|
||||||
|
status: К согласованию
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Техническое задание №2
|
||||||
|
|
||||||
|
## 1. Цель и основание
|
||||||
|
|
||||||
|
Цель: выполнить **полный перенос** актуальной логики формирования данных и печати УПД из `crm3-26-promo` в `crm3-dev` с выделением изменений в отдельное расширение `упд5б`, минимизируя изменения в основной конфигурации.
|
||||||
|
|
||||||
|
Основание: сравнительный анализ:
|
||||||
|
- `crm3-dev` (версия `3.0.22.28`, режим совместимости `Version8_3_16`);
|
||||||
|
- `crm3-26-promo` (версия `3.1.35.11`, режим совместимости `Version8_3_27`);
|
||||||
|
- текущего расширения `crm3-dev.rhana`.
|
||||||
|
|
||||||
|
## 2. Итоги полного анализа (as-is / to-be)
|
||||||
|
|
||||||
|
### 2.1. Что уже есть в `crm3-26-promo`
|
||||||
|
|
||||||
|
В `crm3-26-promo` реализован полный контур графы 5б:
|
||||||
|
- функция `СтрокаАвансовыеСчетаФактуры(...)` в `Documents/СчетФактураВыданный/Ext/ManagerModule.bsl`;
|
||||||
|
- расширенная `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)` с колонкой `СтрокаАвансовыеСчетаФактуры`;
|
||||||
|
- расширенный `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()` с данными `СчетФактураВыданныйАванс` и исправлений;
|
||||||
|
- вывод поля `ПредставлениеАвансовыеСчетаФактуры` в запросе шапки для печати;
|
||||||
|
- заполнение `ОбластьШапка.Параметры.АвансовыеСчетаФактуры` в `ПечатьОбщихФорм`.
|
||||||
|
|
||||||
|
### 2.2. Что есть в `crm3-dev`
|
||||||
|
|
||||||
|
В `crm3-dev` (база):
|
||||||
|
- базовые методы `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)` и `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()` присутствуют, но без контура 5б;
|
||||||
|
- в запросе шапки УПД отсутствует `ПредставлениеАвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
В `crm3-dev.rhana`:
|
||||||
|
- в `DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl` уже есть ветка выбора макета `1096` для периода 2026;
|
||||||
|
- подключен макет `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru`;
|
||||||
|
- в `Documents/СчетФактураВыданный/Ext/ManagerModule.bsl` отсутствуют изменения по 5б (есть только доработки по строке 5а).
|
||||||
|
|
||||||
|
Критичное отличие по макетам:
|
||||||
|
- в `crm3-26-promo` для актуальной ветки УПД применяются `CommonTemplates`:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`,
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`,
|
||||||
|
в которых присутствует параметр `АвансовыеСчетаФактуры` (графа 5б);
|
||||||
|
- в `crm3-dev` и `crm3-dev.rhana` такие `CommonTemplates` отсутствуют.
|
||||||
|
|
||||||
|
## 3. Границы работ по ТЗ №2
|
||||||
|
|
||||||
|
### 3.1. Входит в объем
|
||||||
|
|
||||||
|
1. Полный перенос механизма подготовки данных 5б из `crm3-26-promo`.
|
||||||
|
2. Полный перенос логики вывода 5б в печатной форме УПД.
|
||||||
|
3. Унификация доработок в новом расширении `упд5б` (вынос из `crm3-dev.rhana` релевантных частей).
|
||||||
|
4. Анализ и устранение дублирования между `crm3-dev.rhana` и `упд5б`.
|
||||||
|
5. Подготовка правил, что остается в расширении, а что (при необходимости) меняется в базе `crm3-dev`.
|
||||||
|
|
||||||
|
### 3.2. Не входит в объем
|
||||||
|
|
||||||
|
1. Полный перенос всех несвязанных с УПД подсистем из `crm3-26-promo`.
|
||||||
|
2. Массовый рефакторинг документов вне контура СФ/УПД.
|
||||||
|
|
||||||
|
## 4. Детальный анализ изменений структуры данных
|
||||||
|
|
||||||
|
### 4.1. Обязательные поля и представления для миграции
|
||||||
|
|
||||||
|
Для полного переноса должны быть поддержаны:
|
||||||
|
- строка представления авансовых СФ: `СтрокаАвансовыеСчетаФактуры`;
|
||||||
|
- поле вывода в шапке печати: `ПредставлениеАвансовыеСчетаФактуры`;
|
||||||
|
- поля в таблице платежно-расчетных документов:
|
||||||
|
- `НомерСчетаФактурыНаАванс`,
|
||||||
|
- `ДатаСчетаФактурыНаАванс`,
|
||||||
|
- `НомерИсправленияСчетаФактурыНаАванс`,
|
||||||
|
- `ДатаИсправленияСчетаФактурыНаАванс`.
|
||||||
|
|
||||||
|
### 4.2. Временные таблицы и запросы
|
||||||
|
|
||||||
|
В контуре `СчетФактураВыданный` требуется перенос (или эквивалентное восстановление) цепочки:
|
||||||
|
1. подготовка данных платежно-расчетных документов;
|
||||||
|
2. формирование данных по `СчетФактураВыданныйАванс` и исправлениям;
|
||||||
|
3. объединение в итоговую ВТ для передачи в печать;
|
||||||
|
4. подстановка в `РезультатПоШапке` поля `ПредставлениеАвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
### 4.3. Проверка наличия реквизитов документа
|
||||||
|
|
||||||
|
В `crm3-26-promo` используется реквизит документа `СтрокаАвансовыеСчетаФактуры` в ряде сценариев формы/объекта.
|
||||||
|
|
||||||
|
Для `crm3-dev` обязательна проверка:
|
||||||
|
1. если реквизит уже существует в базе - использовать его;
|
||||||
|
2. если реквизита нет:
|
||||||
|
- вариант А (предпочтительный): вычислять строку на лету в расширении и передавать через ВТ/запрос шапки;
|
||||||
|
- вариант Б (если требуется функциональная паритетность формы документа): добавить реквизит в объект (через расширение, если позволяет совместимость), либо точечно в базу.
|
||||||
|
|
||||||
|
## 5. Целевая архитектура переноса
|
||||||
|
|
||||||
|
### 5.1. Новое расширение `упд5б` (основной контур)
|
||||||
|
|
||||||
|
В `упд5б` концентрируются:
|
||||||
|
1. все изменения `Documents/СчетФактураВыданный/Ext/ManagerModule.bsl` по данным 5б;
|
||||||
|
2. все изменения `DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl` по выводу 5б;
|
||||||
|
3. перенос и сопровождение `CommonTemplates`:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`,
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`;
|
||||||
|
4. опционально (для обратной совместимости) - `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru`, если он остается в legacy-ветке.
|
||||||
|
|
||||||
|
### 5.2. Что переносить из `crm3-dev.rhana` в `упд5б`
|
||||||
|
|
||||||
|
Переносу в `упд5б` подлежат доработки, связанные с актуальной печатью УПД и графой 5б:
|
||||||
|
1. ветка выбора макета для периода 2026+;
|
||||||
|
2. переключение на `CommonTemplates` `...2026` / `...2026Прослеж`;
|
||||||
|
3. блок заполнения параметров шапки УПД, который должен включать `АвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
### 5.3. Что убрать из `crm3-dev.rhana` после переноса
|
||||||
|
|
||||||
|
После приемки `упд5б` из `crm3-dev.rhana` исключаются дублирующие фрагменты:
|
||||||
|
1. дублирующее подключение макета 1096 в ветке 2026, если оно заменено на `CommonTemplates` 2026;
|
||||||
|
2. дублирующая ветка выбора макета 1096/2026;
|
||||||
|
3. любой дублирующий расчет параметра `АвансовыеСчетаФактуры` (если был добавлен в `crm3-dev.rhana`).
|
||||||
|
|
||||||
|
Удаление выполняется только после тестов регрессии и при подтверждении идентичного поведения в `упд5б`.
|
||||||
|
|
||||||
|
## 6. План реализации (по этапам)
|
||||||
|
|
||||||
|
### Этап 1. Инвентаризация и фиксация baseline
|
||||||
|
|
||||||
|
1. Зафиксировать текущие версии и hash модулей/макетов:
|
||||||
|
- `crm3-dev/src/Documents/СчетФактураВыданный/...`,
|
||||||
|
- `crm3-dev/src/DataProcessors/ПечатьОбщихФорм/...`,
|
||||||
|
- `crm3-dev.rhana/src/...`,
|
||||||
|
- `crm3-26-promo/src/...`.
|
||||||
|
2. Составить карту расхождений: методы, поля, ВТ, параметры макета.
|
||||||
|
|
||||||
|
Результат этапа: отчет о diff и точный реестр переносимых фрагментов.
|
||||||
|
|
||||||
|
### Этап 2. Перенос данных 5б
|
||||||
|
|
||||||
|
1. В `упд5б` добавить `упд5б_СтрокаАвансовыеСчетаФактуры(...)`.
|
||||||
|
2. Расширить `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)`.
|
||||||
|
3. Расширить `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()`.
|
||||||
|
4. Расширить формирование `ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(...)` с полем `ПредставлениеАвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
Результат этапа: данные 5б формируются и доступны в `РезультатПоШапке`.
|
||||||
|
|
||||||
|
### Этап 3. Перенос печати и макетов
|
||||||
|
|
||||||
|
1. Перенести в `упд5б` выбор макета для ветки 2026+.
|
||||||
|
2. Перенести из `crm3-26-promo` `CommonTemplates`:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`,
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`.
|
||||||
|
3. В `ЗаполнитьТабличныйДокументУПД(...)` добавить/сохранить установку `ОбластьШапка.Параметры.АвансовыеСчетаФактуры`.
|
||||||
|
4. Проверить, что legacy-ветки до 2026 не изменили поведение.
|
||||||
|
|
||||||
|
Результат этапа: графа 5б печатается в УПД по новым макетам 2026/2026Прослеж.
|
||||||
|
|
||||||
|
### Этап 4. Дедубликация `crm3-dev.rhana`
|
||||||
|
|
||||||
|
1. Отключить/удалить дублирующие фрагменты по макету 1096 из `crm3-dev.rhana`.
|
||||||
|
2. Подтвердить отсутствие конфликтов при одновременном подключении расширений.
|
||||||
|
|
||||||
|
Результат этапа: единая точка ответственности в `упд5б`.
|
||||||
|
|
||||||
|
### Этап 5. Регрессия и приемка
|
||||||
|
|
||||||
|
1. Позитивные сценарии:
|
||||||
|
- реализация с авансом и исправлением;
|
||||||
|
- реализация с авансом без исправления;
|
||||||
|
- без аванса (fallback).
|
||||||
|
2. Регрессия:
|
||||||
|
- печать УПД до 2026 (исторические периоды);
|
||||||
|
- печать УПД после 01.01.2026 (макеты 2026/2026Прослеж);
|
||||||
|
- пакетная печать смешанных документов.
|
||||||
|
|
||||||
|
Результат этапа: акт приемки и протокол регрессии.
|
||||||
|
|
||||||
|
### Этап 6. Переход структуры данных и обработчики обновления
|
||||||
|
|
||||||
|
1. Подготовить решение по данным для уже созданных документов:
|
||||||
|
- если строка 5б рассчитывается на лету - обновление данных не требуется;
|
||||||
|
- если вводится хранение в реквизите/регистре - требуется миграция данных.
|
||||||
|
2. При необходимости добавить обработчики обновления данных:
|
||||||
|
- модуль обновления конфигурации/расширения;
|
||||||
|
- пакетный пересчет `СтрокаАвансовыеСчетаФактуры` для исторических `СчетФактураВыданный`.
|
||||||
|
3. Добавить контрольные отчеты сверки до/после миграции.
|
||||||
|
|
||||||
|
## 7. Требования по применению расширения с учетом совместимости `crm3-dev`
|
||||||
|
|
||||||
|
Учитывать ограничения `crm3-dev` (`CompatibilityMode = Version8_3_16`):
|
||||||
|
1. приоритетно использовать `&ИзменениеИКонтроль` в расширении;
|
||||||
|
2. в блоках `#Удаление` размещать только удаляемый код;
|
||||||
|
3. комментарии и пояснения размещать только в `#Вставка`;
|
||||||
|
4. не использовать вставку директив удаления внутрь многострочных литералов запроса;
|
||||||
|
5. при изменении условных операторов заменять цельный блок `Если ... КонецЕсли` (а не только строку условия);
|
||||||
|
6. если точка расширения недоступна технически, оформлять точечное изменение в базе отдельным решением с обоснованием.
|
||||||
|
|
||||||
|
## 8. Решение по макетам после 01.01.2026
|
||||||
|
|
||||||
|
Для новых документов после `01.01.2026` целевые макеты:
|
||||||
|
1. `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026`;
|
||||||
|
2. `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`.
|
||||||
|
|
||||||
|
Исторические макеты (`..._ru`, `..._625_ru`, `...981_ru`, `...534_ru`) не удаляются, потому что:
|
||||||
|
1. они нужны для корректной печати документов прошлых периодов;
|
||||||
|
2. они участвуют в проверках совместимости печати смешанных наборов документов;
|
||||||
|
3. их изменение в рамках полного переноса выполняется только при отдельном бизнес-требовании.
|
||||||
|
|
||||||
|
## 9. Критерии готовности ТЗ №2 к реализации
|
||||||
|
|
||||||
|
1. Согласован перечень переносимых объектов и методов.
|
||||||
|
2. Согласован перечень удаляемых дубликатов из `crm3-dev.rhana`.
|
||||||
|
3. Подтвержден способ работы с отсутствующими реквизитами (через расширение или точечно в базе).
|
||||||
|
4. Утвержден план поэтапного внедрения и регрессии.
|
||||||
|
|
||||||
@@ -0,0 +1,634 @@
|
|||||||
|
---
|
||||||
|
title: Техническое задание - минимальная реализация графы 5б в УПД (через расширение)
|
||||||
|
version: 1.1
|
||||||
|
date_created: 2026-04-21
|
||||||
|
date_modified: 2026-04-21
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
description: Детализированное техническое задание с конкретными объектами и кодовыми фрагментами для минимальной реализации графы 5б в УПД с приоритетом реализации через расширение crm3-dev.rhana.
|
||||||
|
status: К реализации
|
||||||
|
extension: CRM3devLocal / CRM3devLocal.Рана
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Техническое задание
|
||||||
|
|
||||||
|
## 1. Общая информация
|
||||||
|
|
||||||
|
### 1.1. Дата документа
|
||||||
|
21.04.2026
|
||||||
|
|
||||||
|
### 1.2. Основание
|
||||||
|
Результаты повторного анализа `crm3-dev` + `crm3-dev.rhana` в сравнении с `crm3-26-promo` (версия `3.1.35.11`) по функционалу заполнения графы 5б в УПД.
|
||||||
|
|
||||||
|
### 1.3. Цель
|
||||||
|
Реализовать в старой конфигурации минимально необходимую логику заполнения графы **5б** в печатной форме УПД за счет перехода на новые макеты `ПФ_MXL_УниверсальныйПередаточныйДокумент2026` и `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж` (из `crm3-26-promo`) и передачи в них параметра `АвансовыеСчетаФактуры`, с максимальной локализацией изменений в расширении `упд5б`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Архитектурный принцип реализации
|
||||||
|
|
||||||
|
### 2.1. Приоритет: расширение
|
||||||
|
Реализация выполняется **в первую очередь через расширение** `crm3-dev.rhana`.
|
||||||
|
|
||||||
|
Целевой порядок:
|
||||||
|
1. Подготовка данных для графы 5б - в расширении документа `СчетФактураВыданный`.
|
||||||
|
2. Вывод в печатную форму УПД - в расширении `ПечатьОбщихФорм`.
|
||||||
|
3. Изменения в базе `crm3-dev` - только если конкретный метод нельзя корректно расширить.
|
||||||
|
|
||||||
|
### 2.2. Допустимый fallback на базу
|
||||||
|
Если нужная точка не расширяема:
|
||||||
|
1. фиксируется причина технического ограничения;
|
||||||
|
2. в базе делается минимальный точечный change;
|
||||||
|
3. вся остальная логика остается в расширении.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Объем и ограничения
|
||||||
|
|
||||||
|
### 3.1. Включено в объем работ
|
||||||
|
1. Формирование представления авансовых счетов-фактур для графы 5б.
|
||||||
|
2. Передача значения в набор данных печати УПД (`РезультатПоШапке`).
|
||||||
|
3. Перенос в расширение `упд5б` макетов `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026` и `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж` из `crm3-26-promo`.
|
||||||
|
4. Вывод значения графы 5б в новых макетах 2026.
|
||||||
|
5. Минимальные изменения, достаточные для работоспособности графы 5б без изменения логики старых веток макетов.
|
||||||
|
|
||||||
|
### 3.2. Не включено в объем работ
|
||||||
|
1. Полный перенос ветки печатных форм СФ/УПД/УКД 2.5.
|
||||||
|
2. Перенос всех функциональных опций и макетов из `crm3-26-promo`.
|
||||||
|
3. Масштабный рефакторинг печати УПД.
|
||||||
|
4. Изменение логики выбора исторических макетов `..._ru`, `..._625_ru`, `...981_ru`, `...534_ru`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Карта объектов и изменений
|
||||||
|
|
||||||
|
### 4.1. Обязательные объекты в расширении
|
||||||
|
|
||||||
|
1. `crm3-dev.rhana/src/Documents/СчетФактураВыданный/Ext/ManagerModule.bsl`
|
||||||
|
Назначение:
|
||||||
|
- формирование `ПредставлениеАвансовыеСчетаФактуры`;
|
||||||
|
- расширение подготовки данных для УПД.
|
||||||
|
|
||||||
|
2. `crm3-dev.rhana/src/DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl`
|
||||||
|
Назначение:
|
||||||
|
- чтение `ДанныеПечати.ПредставлениеАвансовыеСчетаФактуры`;
|
||||||
|
- заполнение `ОбластьШапка.Параметры.АвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
3. Макеты УПД в расширении `упд5б` (раздел `CommonTemplates`)
|
||||||
|
Назначение:
|
||||||
|
- перенос из `crm3-26-promo` макетов:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`;
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`;
|
||||||
|
- использование в печати УПД для периода 2026+.
|
||||||
|
|
||||||
|
4. Макет УПД в расширении (`Templates` объекта `ПечатьОбщихФорм`)
|
||||||
|
Назначение:
|
||||||
|
- сохранить совместимость со старой веткой печати;
|
||||||
|
- без обязательной доработки исторических шаблонов в рамках минимальной задачи.
|
||||||
|
|
||||||
|
### 4.2. Объекты базы (только при невозможности расширить)
|
||||||
|
|
||||||
|
1. `crm3-dev/src/Documents/СчетФактураВыданный/Ext/ManagerModule.bsl`
|
||||||
|
2. Базовый макет УПД.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Детализация реализации по объектам
|
||||||
|
|
||||||
|
### 5.1. Расширение документа `СчетФактураВыданный`
|
||||||
|
|
||||||
|
Файл: `crm3-dev.rhana/src/Documents/СчетФактураВыданный/Ext/ManagerModule.bsl`
|
||||||
|
|
||||||
|
Необходимо расширить:
|
||||||
|
1. `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)`
|
||||||
|
- добавить колонку `СтрокаАвансовыеСчетаФактуры`;
|
||||||
|
- заполнять ее из функции `упд5б_СтрокаАвансовыеСчетаФактуры(...)`;
|
||||||
|
- включить колонку в итоговую выгрузку в `ТаблицаПлатежноРасчетныеДокументы`.
|
||||||
|
|
||||||
|
Конкретный код (фрагмент для вставки по месту):
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// 1) Добавление колонки в сводную ТЗ
|
||||||
|
ПлатежноРасчетныеДокументыСводно.Колонки.Добавить("СтрокаАвансовыеСчетаФактуры",
|
||||||
|
Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(1000)));
|
||||||
|
|
||||||
|
// 2) Заполнение значения в цикле по счетам-фактурам
|
||||||
|
НоваяСтрока = ПлатежноРасчетныеДокументыСводно.Добавить();
|
||||||
|
НоваяСтрока.Ссылка = ВыборкаСчетФактур.СчетФактура;
|
||||||
|
НоваяСтрока.СтрокаПлатежноРасчетныеДокументы = СтрокаРасчетноПлатежныхДокументов(ПлатежноРасчетныеДокументы);
|
||||||
|
НоваяСтрока.СтрокаАвансовыеСчетаФактуры = упд5б_СтрокаАвансовыеСчетаФактуры(ПлатежноРасчетныеДокументы);
|
||||||
|
|
||||||
|
// 3) Выгрузка в ВТ, чтобы поле было доступно в дальнейших запросах
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| Таблица.Ссылка,
|
||||||
|
| Таблица.СтрокаПлатежноРасчетныеДокументы,
|
||||||
|
| Таблица.СтрокаАвансовыеСчетаФактуры
|
||||||
|
|ПОМЕСТИТЬ ТаблицаПлатежноРасчетныеДокументы
|
||||||
|
|ИЗ
|
||||||
|
| &ПлатежноРасчетныеДокументы КАК Таблица";
|
||||||
|
```
|
||||||
|
|
||||||
|
2. `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()`
|
||||||
|
- добавить извлечение связанных авансовых СФ (`Документ.СчетФактураВыданныйАванс`);
|
||||||
|
- добавить поля:
|
||||||
|
- `НомерСчетаФактурыНаАванс`
|
||||||
|
- `ДатаСчетаФактурыНаАванс`
|
||||||
|
- `НомерИсправленияСчетаФактурыНаАванс`
|
||||||
|
- `ДатаИсправленияСчетаФактурыНаАванс`;
|
||||||
|
- внедрять как цельный расширяемый блок по шаблону из раздела `6.3`.
|
||||||
|
|
||||||
|
3. Формирование поля в запросе шапки:
|
||||||
|
- `ПредставлениеАвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
4. Новая функция в расширении:
|
||||||
|
- `упд5б_СтрокаАвансовыеСчетаФактуры(...) Экспорт`.
|
||||||
|
|
||||||
|
### 5.2. Расширение печати УПД
|
||||||
|
|
||||||
|
Файл: `crm3-dev.rhana/src/DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl`
|
||||||
|
|
||||||
|
В `упд5б_ЗаполнитьТабличныйДокументУПД(...)` добавить:
|
||||||
|
1. извлечение значения графы 5б из `ДанныеПечати`:
|
||||||
|
- `ПредставлениеАвансовыеСчетаФактуры`;
|
||||||
|
2. fallback:
|
||||||
|
- `№ -- от --, исправление № -- от --`;
|
||||||
|
3. заполнение параметра шапки:
|
||||||
|
- `ОбластьШапка.Параметры.АвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
### 5.3. Макет УПД
|
||||||
|
|
||||||
|
По результатам глубокого анализа:
|
||||||
|
1. в `crm3-26-promo` параметр 5б реализован в коде печати и применяется в ветке новых макетов:
|
||||||
|
- `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026`;
|
||||||
|
- `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`;
|
||||||
|
2. в `crm3-dev` отсутствует раздел `CommonTemplates` с указанными макетами;
|
||||||
|
3. в `crm3-dev.rhana` ветка 2026 сейчас переключается на `...1096_ru`, что не дает использовать новый шаблон 2026 с параметром 5б по эталонной схеме `crm3-26-promo`.
|
||||||
|
|
||||||
|
Требование минимальной задачи по макетам:
|
||||||
|
1. создать в расширении `упд5б` раздел `CommonTemplates` и перенести из `crm3-26-promo`:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`;
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`;
|
||||||
|
2. в процедуре `ЗаполнитьТабличныйДокументУПД(...)` расширения `упд5б` для ветки 2026 использовать только эти новые макеты;
|
||||||
|
3. логику выбора и применения исторических макетов (`..._ru`, `..._625_ru`, `...981_ru`, `...534_ru`) не менять;
|
||||||
|
4. обеспечить установку `ОбластьШапка.Параметры.АвансовыеСчетаФактуры` в ветке печати, где используется макет 2026/2026Прослеж.
|
||||||
|
|
||||||
|
Конкретный код для вставки приведен в разделе `6.5`.
|
||||||
|
|
||||||
|
Требование по переносу доработок из текущего расширения `crm3-dev.rhana` в новое расширение `упд5б`:
|
||||||
|
1. перенести только ветку выбора макета периода 2026;
|
||||||
|
2. заменить использование `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru` на `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026` и `...2026Прослеж`;
|
||||||
|
3. оставить существующие ветки до 2026 без изменений.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Конкретные кодовые фрагменты (шаблоны для внедрения)
|
||||||
|
|
||||||
|
### 6.0. Общий шаблон расширяемого метода
|
||||||
|
|
||||||
|
Все изменения в существующих методах выполнять в форме:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ИмяМетодаБазы")
|
||||||
|
Функция упд5б_ИмяМетодаБазы(...)
|
||||||
|
|
||||||
|
#Удаление
|
||||||
|
ТекстБазовогоКода = "...";
|
||||||
|
#КонецУдаления
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
// Новый или измененный фрагмент
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.1. Функция строкового представления графы 5б
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция упд5б_СтрокаАвансовыеСчетаФактуры(ПлатежноРасчетныеДокументы) Экспорт
|
||||||
|
|
||||||
|
СтрокаНомеровИДата = "";
|
||||||
|
Для каждого СтрокаДокумента Из ПлатежноРасчетныеДокументы Цикл
|
||||||
|
Если ЗначениеЗаполнено(СтрокаДокумента.НомерСчетаФактурыНаАванс) Тогда
|
||||||
|
ТекстСтроки = СтрШаблон(
|
||||||
|
НСтр("ru='№ %1 от %2, исправление № %3 от %4'"),
|
||||||
|
СтрокаДокумента.НомерСчетаФактурыНаАванс,
|
||||||
|
Формат(СтрокаДокумента.ДатаСчетаФактурыНаАванс, "ДФ=dd.MM.yyyy"),
|
||||||
|
?(ЗначениеЗаполнено(СтрокаДокумента.НомерИсправленияСчетаФактурыНаАванс), СтрокаДокумента.НомерИсправленияСчетаФактурыНаАванс, "--"),
|
||||||
|
?(ЗначениеЗаполнено(СтрокаДокумента.ДатаИсправленияСчетаФактурыНаАванс), Формат(СтрокаДокумента.ДатаИсправленияСчетаФактурыНаАванс, "ДФ=dd.MM.yyyy"), "--")
|
||||||
|
);
|
||||||
|
СтрокаНомеровИДата = СтрокаНомеровИДата
|
||||||
|
+ ?(ПустаяСтрока(СтрокаНомеровИДата), "", "; ")
|
||||||
|
+ ТекстСтроки;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Возврат СтрокаНомеровИДата;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.2. Расширение `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)`
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов")
|
||||||
|
Функция упд5б_ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц, МассивАналитикУчетаПоПартнерам)
|
||||||
|
|
||||||
|
#Удаление
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| Таблица.Ссылка,
|
||||||
|
| Таблица.СтрокаПлатежноРасчетныеДокументы
|
||||||
|
|ПОМЕСТИТЬ ТаблицаПлатежноРасчетныеДокументы
|
||||||
|
|ИЗ
|
||||||
|
| &ПлатежноРасчетныеДокументы КАК Таблица";
|
||||||
|
#КонецУдаления
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
// [+] Добавляем отдельную колонку для текстового представления графы 5б
|
||||||
|
// во временную таблицу ТаблицаПлатежноРасчетныеДокументы.
|
||||||
|
// [+] Заполняем колонку через новую функцию
|
||||||
|
// упд5б_СтрокаАвансовыеСчетаФактуры(...).
|
||||||
|
// [+] Включаем колонку в финальный набор, который участвует в формировании шапки печати.
|
||||||
|
ПлатежноРасчетныеДокументыСводно.Колонки.Добавить("СтрокаАвансовыеСчетаФактуры",
|
||||||
|
Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(1000)));
|
||||||
|
|
||||||
|
НоваяСтрока.СтрокаАвансовыеСчетаФактуры =
|
||||||
|
упд5б_СтрокаАвансовыеСчетаФактуры(ПлатежноРасчетныеДокументы);
|
||||||
|
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| Таблица.Ссылка,
|
||||||
|
| Таблица.СтрокаПлатежноРасчетныеДокументы,
|
||||||
|
| Таблица.СтрокаАвансовыеСчетаФактуры
|
||||||
|
|ПОМЕСТИТЬ ТаблицаПлатежноРасчетныеДокументы
|
||||||
|
|ИЗ
|
||||||
|
| &ПлатежноРасчетныеДокументы КАК Таблица";
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.3. Расширение `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()`
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов")
|
||||||
|
Функция упд5б_ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()
|
||||||
|
|
||||||
|
#Удаление
|
||||||
|
ТекстЗапроса =
|
||||||
|
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||||
|
| ДанныеПервичныхДокументов.Дата КАК ДатаВходящегоДокумента,
|
||||||
|
| ДанныеПервичныхДокументов.Номер КАК НомерВходящегоДокумента,
|
||||||
|
| ТаблицаДокументов.Ссылка КАК СчетФактура
|
||||||
|
|ИЗ
|
||||||
|
| РасчетыСКлиентами_ОснованияИДокументыОплаты КАК ПлатежныеДокументы
|
||||||
|
|
|
||||||
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
|
||||||
|
| ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов
|
||||||
|
| ПО
|
||||||
|
| ПлатежныеДокументы.ОснованиеОплаты = ТаблицаДокументов.ДокументОснование
|
||||||
|
| И ПлатежныеДокументы.АналитикаУчетаПоПартнерам В (&МассивАналитикУчетаПоПартнерам)
|
||||||
|
|
|
||||||
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
|
||||||
|
| РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
|
||||||
|
| ПО
|
||||||
|
| ПлатежныеДокументы.Организация = ДанныеПервичныхДокументов.Организация
|
||||||
|
| И ПлатежныеДокументы.ДокументОплаты = ДанныеПервичныхДокументов.Документ
|
||||||
|
|
|
||||||
|
|ГДЕ
|
||||||
|
| ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) <> ТИП(Документ.ВзаимозачетЗадолженности)
|
||||||
|
|
|
||||||
|
|ИТОГИ ПО
|
||||||
|
| СчетФактура
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|УНИЧТОЖИТЬ РасчетыСКлиентами_ОснованияИДокументыОплаты
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|УНИЧТОЖИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов";
|
||||||
|
#КонецУдаления
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
// [+] Этап 1: формируем ВТ втДанныеПлатежноРасчетныхДокументов и
|
||||||
|
// добавляем РасчетныйДокумент для связи с авансовыми СФ.
|
||||||
|
// [+] Этап 2: определяем авансовый СФ и его исправление (если есть),
|
||||||
|
// сворачиваем по СчетФактура.
|
||||||
|
// [+] Этап 3: отдаём полный набор полей, требуемых для формирования строки 5б.
|
||||||
|
// [+] Этап 4: очищаем все созданные ВТ.
|
||||||
|
ТекстЗапроса =
|
||||||
|
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||||
|
| ДанныеПервичныхДокументов.Дата КАК ДатаВходящегоДокумента,
|
||||||
|
| ДанныеПервичныхДокументов.Номер КАК НомерВходящегоДокумента,
|
||||||
|
| ТаблицаДокументов.Ссылка КАК СчетФактура,
|
||||||
|
| ПлатежныеДокументы.РасчетныйДокумент КАК РасчетныйДокумент
|
||||||
|
|ПОМЕСТИТЬ втДанныеПлатежноРасчетныхДокументов
|
||||||
|
|ИЗ
|
||||||
|
| РасчетыСКлиентами_ОснованияИДокументыОплаты КАК ПлатежныеДокументы
|
||||||
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов
|
||||||
|
| ПО ПлатежныеДокументы.ОснованиеОплаты = ТаблицаДокументов.ДокументОснование
|
||||||
|
| И ПлатежныеДокументы.АналитикаУчетаПоПартнерам В (&МассивАналитикУчетаПоПартнерам)
|
||||||
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
|
||||||
|
| ПО ПлатежныеДокументы.Организация = ДанныеПервичныхДокументов.Организация
|
||||||
|
| И ПлатежныеДокументы.ДокументОплаты = ДанныеПервичныхДокументов.Документ
|
||||||
|
|ГДЕ
|
||||||
|
| ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) <> ТИП(Документ.ВзаимозачетЗадолженности)
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|ВЫБРАТЬ
|
||||||
|
| втДанныеПлатежноРасчетныхДокументов.РасчетныйДокумент КАК РасчетныйДокумент,
|
||||||
|
| втДанныеПлатежноРасчетныхДокументов.СчетФактура КАК СчетФактура,
|
||||||
|
| СчетФактураАванс.Ссылка КАК СчетФактураАванс,
|
||||||
|
| ЕСТЬNULL(ИсправленныйСчетФактураАванс.Ссылка, ЗНАЧЕНИЕ(Документ.СчетФактураВыданныйАванс.ПустаяСсылка)) КАК ИсправлениеСчетаФактурыАванс,
|
||||||
|
| МАКСИМУМ(СчетФактураАванс.НомерИсправления) КАК НомерИсправления
|
||||||
|
|ПОМЕСТИТЬ втНомераИсправленийСчетовФактурНаАванс
|
||||||
|
|ИЗ
|
||||||
|
| втДанныеПлатежноРасчетныхДокументов КАК втДанныеПлатежноРасчетныхДокументов
|
||||||
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданныйАванс КАК СчетФактураАванс
|
||||||
|
| ПО втДанныеПлатежноРасчетныхДокументов.РасчетныйДокумент = СчетФактураАванс.ДокументОснование
|
||||||
|
| И НЕ СчетФактураАванс.Корректировочный
|
||||||
|
| И СчетФактураАванс.Проведен
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданныйАванс КАК ИсправленныйСчетФактураАванс
|
||||||
|
| ПО СчетФактураАванс.СчетФактураОснование = ИсправленныйСчетФактураАванс.Ссылка
|
||||||
|
| И СчетФактураАванс.Исправление
|
||||||
|
| И НЕ ИсправленныйСчетФактураАванс.Корректировочный
|
||||||
|
| И ИсправленныйСчетФактураАванс.Проведен
|
||||||
|
|СГРУППИРОВАТЬ ПО
|
||||||
|
| втДанныеПлатежноРасчетныхДокументов.РасчетныйДокумент,
|
||||||
|
| втДанныеПлатежноРасчетныхДокументов.СчетФактура,
|
||||||
|
| СчетФактураАванс.Ссылка,
|
||||||
|
| ЕСТЬNULL(ИсправленныйСчетФактураАванс.Ссылка, ЗНАЧЕНИЕ(Документ.СчетФактураВыданныйАванс.ПустаяСсылка))
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|ВЫБРАТЬ
|
||||||
|
| ДанныеПлатежноРасчетныхДокументов.РасчетныйДокумент КАК РасчетныйДокумент,
|
||||||
|
| ДанныеПлатежноРасчетныхДокументов.СчетФактура КАК СчетФактура,
|
||||||
|
| ДанныеПлатежноРасчетныхДокументов.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
|
||||||
|
| ДанныеПлатежноРасчетныхДокументов.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
|
||||||
|
| ДанныеСчетаФактурыАванс.Номер КАК НомерСчетаФактурыНаАванс,
|
||||||
|
| ДанныеСчетаФактурыАванс.Дата КАК ДатаСчетаФактурыНаАванс,
|
||||||
|
| СчетаФактурыАванс.НомерИсправления КАК НомерИсправленияСчетаФактурыНаАванс,
|
||||||
|
| ДанныеИсправленияСчетаФактурыАванс.Дата КАК ДатаИсправленияСчетаФактурыНаАванс
|
||||||
|
|ИЗ
|
||||||
|
| втДанныеПлатежноРасчетныхДокументов КАК ДанныеПлатежноРасчетныхДокументов
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ втНомераИсправленийСчетовФактурНаАванс КАК СчетаФактурыАванс
|
||||||
|
| ПО ДанныеПлатежноРасчетныхДокументов.РасчетныйДокумент = СчетаФактурыАванс.РасчетныйДокумент
|
||||||
|
| И ДанныеПлатежноРасчетныхДокументов.СчетФактура = СчетаФактурыАванс.СчетФактура
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеСчетаФактурыАванс
|
||||||
|
| ПО ДанныеСчетаФактурыАванс.Документ = СчетаФактурыАванс.СчетФактураАванс
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеИсправленияСчетаФактурыАванс
|
||||||
|
| ПО ДанныеИсправленияСчетаФактурыАванс.Документ = СчетаФактурыАванс.ИсправлениеСчетаФактурыАванс
|
||||||
|
|ИТОГИ ПО
|
||||||
|
| СчетФактура
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|УНИЧТОЖИТЬ втНомераИсправленийСчетовФактурНаАванс
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|УНИЧТОЖИТЬ втДанныеПлатежноРасчетныхДокументов
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|УНИЧТОЖИТЬ РасчетыСКлиентами_ОснованияИДокументыОплаты
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|УНИЧТОЖИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов";
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
Возврат ТекстЗапроса;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.4. Расширение `ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(ПараметрыПечати)`
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры")
|
||||||
|
Функция упд5б_ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(ПараметрыПечати)
|
||||||
|
|
||||||
|
ТекстЗапроса = ТекстЗапроса + "
|
||||||
|
|/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|ВЫБРАТЬ
|
||||||
|
| ДанныеДокумента.Ссылка КАК Ссылка,
|
||||||
|
| ...
|
||||||
|
| ДанныеДокумента.Корректировочный КАК КорректировочныйСчетФактура,
|
||||||
|
| ЕСТЬNULL(ТаблицаПлатежноРасчетныеДокументы.СтрокаПлатежноРасчетныеДокументы,
|
||||||
|
| ДанныеДокумента.СтрокаПлатежноРасчетныеДокументы) КАК СтрокаПоДокументу,
|
||||||
|
| ...
|
||||||
|
|ИЗ
|
||||||
|
| ...";
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
// [+] Вставлять сразу после базового присваивания ТекстЗапроса (до ветки Если...).
|
||||||
|
ТекстЗапроса = СтрЗаменить(
|
||||||
|
ТекстЗапроса,
|
||||||
|
"| ЕСТЬNULL(ТаблицаПлатежноРасчетныеДокументы.СтрокаПлатежноРасчетныеДокументы,
|
||||||
|
| ДанныеДокумента.СтрокаПлатежноРасчетныеДокументы) КАК СтрокаПоДокументу,",
|
||||||
|
"| ЕСТЬNULL(ТаблицаПлатежноРасчетныеДокументы.СтрокаПлатежноРасчетныеДокументы,
|
||||||
|
| ДанныеДокумента.СтрокаПлатежноРасчетныеДокументы) КАК СтрокаПоДокументу,
|
||||||
|
| ЕСТЬNULL(ТаблицаПлатежноРасчетныеДокументы.СтрокаАвансовыеСчетаФактуры,
|
||||||
|
| ДанныеДокумента.СтрокаАвансовыеСчетаФактуры) КАК ПредставлениеАвансовыеСчетаФактуры,");
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
Если ПечататьСчетаФактурыПолученные Тогда
|
||||||
|
...
|
||||||
|
#Вставка
|
||||||
|
// [+] Вставлять внутри ветки Если... после формирования текста объединяемой части.
|
||||||
|
ТекстЗапроса = СтрЗаменить(
|
||||||
|
ТекстЗапроса,
|
||||||
|
"| """" КАК СтрокаПоДокументу,",
|
||||||
|
"| """" КАК СтрокаПоДокументу,
|
||||||
|
| """" КАК ПредставлениеАвансовыеСчетаФактуры,");
|
||||||
|
#КонецВставки
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат ТекстЗапроса;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.5. Расширение `ЗаполнитьТабличныйДокументУПД(...)` в `ПечатьОбщихФорм`
|
||||||
|
|
||||||
|
Модуль: `crm3-dev.upd5b/src/DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl`
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ЗаполнитьТабличныйДокументУПД")
|
||||||
|
Процедура упд5б_ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати)
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
// === [UPD5B] НАЧАЛО БЛОКА ВСТАВКИ ===
|
||||||
|
МакетУПД_2026 = УправлениеПечатью.МакетПечатнойФормы(
|
||||||
|
"Обработка.ПечатьОбщихФорм.ПФ_MXL_УниверсальныйПередаточныйДокумент2026");
|
||||||
|
МакетУПД_2026Прослеж = УправлениеПечатью.МакетПечатнойФормы(
|
||||||
|
"Обработка.ПечатьОбщихФорм.ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж");
|
||||||
|
ЕстьПостановление2026 = ЛОЖЬ;
|
||||||
|
// === [UPD5B] КОНЕЦ БЛОКА ВСТАВКИ ===
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
#Удаление
|
||||||
|
Если ДействуетПостановление534(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
|
||||||
|
Макет = МакетУПД_534;
|
||||||
|
ЕстьПостановление534 = Истина;
|
||||||
|
ИначеЕсли ДействуетПостановление981(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
|
||||||
|
Макет = МакетУПД_981;
|
||||||
|
ЕстьПостановление981 = Истина;
|
||||||
|
ИначеЕсли ВедетсяУчетНДСПоФЗ56(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
|
||||||
|
Макет = МакетУПД_625;
|
||||||
|
ЕстьПостановление1137_625 = Истина;
|
||||||
|
Иначе
|
||||||
|
Макет = МакетУПД;
|
||||||
|
ЕстьПостановление1137 = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
#КонецУдаления
|
||||||
|
#Вставка
|
||||||
|
// === [UPD5B] НАЧАЛО БЛОКА ВСТАВКИ ===
|
||||||
|
Если ?(ЗначениеЗаполнено(ДанныеПечати.ДатаИсправления), ДанныеПечати.ДатаИсправления, ДанныеПечати.Дата) >= '20260101' Тогда
|
||||||
|
ЕстьПрослеживаемыеТоварыВТабличнойЧасти = Ложь;
|
||||||
|
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДанныеПечати, "ЕстьПрослеживаемыеТоварыВТабличнойЧасти")
|
||||||
|
И ЗначениеЗаполнено(ДанныеПечати.ЕстьПрослеживаемыеТоварыВТабличнойЧасти) Тогда
|
||||||
|
ЕстьПрослеживаемыеТоварыВТабличнойЧасти = ДанныеПечати.ЕстьПрослеживаемыеТоварыВТабличнойЧасти;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если (ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДанныеПечати, "ЕстьПрослеживаемыеТовары")
|
||||||
|
И ЗначениеЗаполнено(ДанныеПечати.ЕстьПрослеживаемыеТовары)
|
||||||
|
И ДанныеПечати.ЕстьПрослеживаемыеТовары)
|
||||||
|
Или ЕстьПрослеживаемыеТоварыВТабличнойЧасти Тогда
|
||||||
|
Макет = МакетУПД_2026Прослеж;
|
||||||
|
Иначе
|
||||||
|
Макет = МакетУПД_2026;
|
||||||
|
КонецЕсли;
|
||||||
|
ЕстьПостановление2026 = Истина;
|
||||||
|
ИначеЕсли ДействуетПостановление534(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
|
||||||
|
Макет = МакетУПД_534;
|
||||||
|
ЕстьПостановление534 = Истина;
|
||||||
|
ИначеЕсли ДействуетПостановление981(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
|
||||||
|
Макет = МакетУПД_981;
|
||||||
|
ЕстьПостановление981 = Истина;
|
||||||
|
ИначеЕсли ВедетсяУчетНДСПоФЗ56(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
|
||||||
|
Макет = МакетУПД_625;
|
||||||
|
ЕстьПостановление1137_625 = Истина;
|
||||||
|
Иначе
|
||||||
|
Макет = МакетУПД;
|
||||||
|
ЕстьПостановление1137 = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
// === [UPD5B] КОНЕЦ БЛОКА ВСТАВКИ ===
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
// === [UPD5B] НАЧАЛО БЛОКА ВСТАВКИ ===
|
||||||
|
АвансовыеСчетаФактуры =
|
||||||
|
?(ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДанныеПечати, "ПредставлениеАвансовыеСчетаФактуры")
|
||||||
|
И ЗначениеЗаполнено(ДанныеПечати.ПредставлениеАвансовыеСчетаФактуры),
|
||||||
|
ДанныеПечати.ПредставлениеАвансовыеСчетаФактуры,
|
||||||
|
НСтр("ru='№ -- от --, исправление № -- от --'"));
|
||||||
|
|
||||||
|
Если ЕстьПостановление2026 Тогда
|
||||||
|
ОбластьШапка.Параметры.АвансовыеСчетаФактуры = АвансовыеСчетаФактуры;
|
||||||
|
КонецЕсли;
|
||||||
|
// === [UPD5B] КОНЕЦ БЛОКА ВСТАВКИ ===
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Правила разработки для расширения
|
||||||
|
|
||||||
|
1. Все изменения в перехватываемых методах оформлять через `&ИзменениеИКонтроль`.
|
||||||
|
2. Новый код помещать в `#Вставка`, удаляемый - в `#Удаление`.
|
||||||
|
3. В блоках `#Удаление` не добавлять комментарии и новый текст.
|
||||||
|
4. Новые методы расширения именовать с префиксом `упд5б_`.
|
||||||
|
5. Сохранять совместимость со старыми документами (обязательный fallback).
|
||||||
|
|
||||||
|
### 7.1. Правила `#Удаление` / `#Вставка` для многострочных текстов запроса
|
||||||
|
|
||||||
|
1. Директивы применяются к **операторам языка 1С**, а не к частям строкового литерала.
|
||||||
|
2. Если меняется многострочный SQL-текст (`ТекстЗапроса = "..."`), в `#Удаление` помещается **весь оператор присваивания**.
|
||||||
|
3. Внутрь текста SQL (между кавычками) директивы `#Удаление/#Вставка` не вставляются.
|
||||||
|
4. В `#Вставка` вставляется новый оператор присваивания целиком либо последовательность `СтрЗаменить(...)` над полным базовым текстом.
|
||||||
|
5. Блок `#Удаление` содержит только удаляемый код (без поясняющих комментариев), комментарии допускаются в `#Вставка`.
|
||||||
|
6. При изменении условных операторов (`Если ... Тогда ... Иначе ... КонецЕсли`) заменять **целостный блок управления** в `#Удаление/#Вставка` (от `Если` до `КонецЕсли`), а не отдельный заголовок условия.
|
||||||
|
|
||||||
|
### 7.2. Анти-паттерны (что не делать)
|
||||||
|
|
||||||
|
1. Не дублировать один и тот же код в `#Удаление` и `#Вставка` без фактических изменений.
|
||||||
|
2. Не вставлять директивы `#Удаление/#Вставка` внутрь многострочного SQL-текста.
|
||||||
|
3. Не оставлять в `#Удаление` текстовые ориентиры, пояснения и комментарии.
|
||||||
|
4. Не менять состав колонок только в одной ветке запроса, если есть `ОБЪЕДИНИТЬ ВСЕ`.
|
||||||
|
5. Не использовать имена полей в последующих частях запроса, если эти поля не сформированы в предыдущих `ПОМЕСТИТЬ`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Поэтапный план реализации
|
||||||
|
|
||||||
|
### Этап 1. Подготовка
|
||||||
|
1. Создать/активировать объекты расширения:
|
||||||
|
- документ `СчетФактураВыданный`;
|
||||||
|
- обработка `ПечатьОбщихФорм`;
|
||||||
|
- макет УПД.
|
||||||
|
2. Подтвердить, какие методы доступны для `&ИзменениеИКонтроль`.
|
||||||
|
|
||||||
|
### Этап 2. Реализация данных 5б в расширении документа
|
||||||
|
1. Добавить `упд5б_СтрокаАвансовыеСчетаФактуры`.
|
||||||
|
2. Расширить ВТ платежно-расчетных документов.
|
||||||
|
3. Расширить запрос получения номеров/дат.
|
||||||
|
4. Прокинуть `ПредставлениеАвансовыеСчетаФактуры` в `РезультатПоШапке`.
|
||||||
|
|
||||||
|
### Этап 3. Реализация вывода в расширении печати
|
||||||
|
1. Доработать `р_ЗаполнитьТабличныйДокументУПД`.
|
||||||
|
2. Заполнить `ОбластьШапка.Параметры.АвансовыеСчетаФактуры`.
|
||||||
|
3. Проверить fallback при отсутствии данных.
|
||||||
|
|
||||||
|
### Этап 4. Изменение макета
|
||||||
|
1. Добавить параметр в строку 5б.
|
||||||
|
2. Проверить визуальное отображение длинного значения.
|
||||||
|
|
||||||
|
### Этап 5. Тестирование
|
||||||
|
1. Один авансовый СФ.
|
||||||
|
2. Несколько авансовых СФ.
|
||||||
|
3. Исправленный авансовый СФ.
|
||||||
|
4. Отсутствие авансовых СФ.
|
||||||
|
5. Регрессия текущих форм УПД.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Критерии приемки
|
||||||
|
|
||||||
|
1. Графа 5б заполняется корректными данными авансовых СФ.
|
||||||
|
2. При отсутствии данных выводится fallback.
|
||||||
|
3. Реализация локализована преимущественно в `crm3-dev.rhana`.
|
||||||
|
4. Печатная форма УПД формируется без ошибок.
|
||||||
|
5. Регрессии по действующим сценариям отсутствуют.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Оценка трудозатрат
|
||||||
|
|
||||||
|
- Этап 1: 1-2 часа
|
||||||
|
- Этап 2: 5-8 часов
|
||||||
|
- Этап 3: 1-2 часа
|
||||||
|
- Этап 4: 1-2 часа
|
||||||
|
- Этап 5: 3-5 часов
|
||||||
|
|
||||||
|
**Итого:** 11-19 часов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Результаты поставки
|
||||||
|
|
||||||
|
1. Измененные объекты расширения `crm3-dev.rhana` по разделу 4.
|
||||||
|
2. Макет УПД расширения с поддержкой графы 5б.
|
||||||
|
3. Протокол тестирования с результатами.
|
||||||
|
4. Перечень фактических изменений по объектам и методам.
|
||||||
|
---
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
# Ответ на входящее обращение по модулю Диадока (УПД)
|
||||||
|
|
||||||
|
Здравствуйте.
|
||||||
|
|
||||||
|
Доработка в нашей базе уже выполнена и включает не только заполнение строки 5б, но и полный контур интеграции актуальной формы УПД в конфигурацию.
|
||||||
|
|
||||||
|
## Что уже реализовано
|
||||||
|
|
||||||
|
1. Автоматическое формирование строки 5б УПД:
|
||||||
|
- корректный отбор данных по авансовым счетам-фактурам;
|
||||||
|
- исключение фиктивных значений и дублирования;
|
||||||
|
- корректная обработка пересечений реквизитов платежно-расчетных документов и счетов-фактур на аванс.
|
||||||
|
|
||||||
|
2. Поддержка актуальной формы УПД (формат 2026):
|
||||||
|
- подключены и используются макеты:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`;
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`;
|
||||||
|
- реализовано корректное заполнение шапки, табличной части, подвала и нумерации листов.
|
||||||
|
|
||||||
|
3. Заполнение ответственных лиц:
|
||||||
|
- заполнение по справочнику `ОтветственныеЛицаОрганизаций`;
|
||||||
|
- выбор актуального назначения на дату документа;
|
||||||
|
- исключение завершенных назначений из печати.
|
||||||
|
|
||||||
|
4. Наименование номенклатуры в печатной форме:
|
||||||
|
- вывод характеристики;
|
||||||
|
- вывод номера серии (при серийном учете);
|
||||||
|
- вывод срока годности;
|
||||||
|
- устранение дубля характеристики, если она совпадает с номером серии.
|
||||||
|
|
||||||
|
## Перечень реквизитов/параметров печатной формы для синхронизации в модуле Диадока
|
||||||
|
|
||||||
|
Ниже приведены параметры, которые должны участвовать в выгрузке для корректного соответствия печатной форме УПД 2026.
|
||||||
|
|
||||||
|
### Шапка документа
|
||||||
|
- `Номер`
|
||||||
|
- `ДокументыОбОтгрузке` (графа 5а)
|
||||||
|
- `АвансовыеСчетаФактуры` (графа 5б)
|
||||||
|
|
||||||
|
### Строка табличной части
|
||||||
|
- `ТоварКод`
|
||||||
|
- `ТоварНаименование`
|
||||||
|
- `Стоимость`
|
||||||
|
- `Всего`
|
||||||
|
- `ПредставлениеСтраны`
|
||||||
|
|
||||||
|
### Итоги
|
||||||
|
- `ИтогоСтоимость`
|
||||||
|
- `ИтогоВсего`
|
||||||
|
|
||||||
|
### Подвал / подписи
|
||||||
|
- `ФИОРуководителя`
|
||||||
|
- `ФИОГлавногоБухгалтера`
|
||||||
|
- `ФИОКладовщика`
|
||||||
|
- `ДолжностьКладовщика`
|
||||||
|
- `ФИООтветственного`
|
||||||
|
- `ДолжностьОтветственного`
|
||||||
|
- `Основание`
|
||||||
|
- `ДатаОтгрузкиПередачи`
|
||||||
|
- `ПредставлениеОрганизации`
|
||||||
|
- `ПредставлениеКонтрагента`
|
||||||
|
- `КоличествоЛистов`
|
||||||
|
|
||||||
|
### Нумерация листов
|
||||||
|
- `Номер`
|
||||||
|
- `НомерЛиста`
|
||||||
|
- `НомерСтраницы` (если используется в конкретном сценарии печати)
|
||||||
|
|
||||||
|
Если нужно, можем передать отдельную техническую таблицу соответствия:
|
||||||
|
`параметр печати 1С -> поле выгрузки Диадока -> правило формирования`.
|
||||||
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
---
|
||||||
|
title: Инструкция по фильтрации списка отсутствующих групп доступа
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Инструкция по фильтрации списка отсутствующих групп доступа
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Получить список групп доступа, которые:
|
||||||
|
1. Отсутствуют в целевой системе
|
||||||
|
2. **И** используются действующими пользователями в исходной системе
|
||||||
|
|
||||||
|
Это позволит определить, какие группы доступа действительно нужно переносить в целевую систему.
|
||||||
|
|
||||||
|
## Шаги выполнения
|
||||||
|
|
||||||
|
### 1. Выполнение запроса в исходной системе
|
||||||
|
|
||||||
|
1. Откройте конфигуратор исходной системы (`CRM3devLocal`)
|
||||||
|
2. Откройте консоль запросов (Ctrl+Shift+Q или через меню)
|
||||||
|
3. Скопируйте запрос из файла `query_active_access_groups_simple.txt` или выберите подходящий вариант из `query_active_access_groups.txt`
|
||||||
|
4. Выполните запрос
|
||||||
|
5. Сохраните результат в текстовый файл (например, `active_groups_source.txt`)
|
||||||
|
|
||||||
|
**Важно:** Если запрос не работает, проверьте:
|
||||||
|
- Название справочника групп доступа (может быть `ГруппыДоступа` вместо `ГруппыДоступаРоли`)
|
||||||
|
- Название табличной части (может отличаться от `Пользователи`)
|
||||||
|
- Название реквизита для отключенных пользователей (может быть `Активность` вместо `Отключен`)
|
||||||
|
|
||||||
|
### 2. Обработка результатов
|
||||||
|
|
||||||
|
После получения списка групп доступа из исходной системы:
|
||||||
|
|
||||||
|
1. Сравните список из `missing_access_groups.txt` (61 группа) со списком активных групп из исходной системы
|
||||||
|
2. Оставьте только те группы, которые:
|
||||||
|
- Есть в `missing_access_groups.txt`
|
||||||
|
- **И** есть в списке активных групп из исходной системы
|
||||||
|
3. Группы, которые отсутствуют в списке активных групп, можно исключить из списка для переноса
|
||||||
|
|
||||||
|
### 3. Альтернативный способ (через скрипт)
|
||||||
|
|
||||||
|
Можно создать Python скрипт для автоматического сравнения:
|
||||||
|
- Загрузить список из `missing_access_groups.txt`
|
||||||
|
- Загрузить список активных групп из результата запроса
|
||||||
|
- Выполнить пересечение списков
|
||||||
|
- Сохранить результат
|
||||||
|
|
||||||
|
## Пример результата
|
||||||
|
|
||||||
|
Если из 61 отсутствующей группы только 25 используются действующими пользователями, то именно эти 25 групп нужно переносить в целевую систему.
|
||||||
|
|
||||||
|
## Примечания
|
||||||
|
|
||||||
|
- Предопределенные элементы (начинающиеся с "--") уже исключены из исходного списка
|
||||||
|
- Группы, которые не используются действующими пользователями, могут быть устаревшими и не требуют переноса
|
||||||
|
- Однако стоит проверить, не используются ли они в будущем или не назначены ли они через другие механизмы
|
||||||
|
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
# Структура проекта CRM3-26
|
||||||
|
|
||||||
|
Документ описывает актуальную организацию репозитория после переноса на рабочее место **nt-041** (macOS). Используется как постоянный контекст для разработки и анализа.
|
||||||
|
|
||||||
|
**Корень проекта:** `/Users/kma/projects/crm3-26`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Информационные базы (промышленные)
|
||||||
|
|
||||||
|
| Сторона | Сервер 1С | Имя ИБ | Конфигурация | Расширения |
|
||||||
|
|---------|-----------|--------|--------------|------------|
|
||||||
|
| **Исходная** (рабочая старая) | `1c-srv.rhana.local` | `crm3_placentapharm` | `crm3-dev` | `crm3-dev.rhana`, `crm3-dev.docs`, **`ws-rhana`** |
|
||||||
|
| **Целевая** (новая) | `1c-srv.rhana.local` | `crm3` | `crm3-26` | `crm3-26.rhana`, **`ws-rhana`** |
|
||||||
|
|
||||||
|
**Веб-публикация (локальная сеть):** исходная — http://1c-srv.rhana.local/crm/ru/ ; целевая — http://1c-srv.rhana.local/crm326/ru/ . HTTP API: см. [ws-rhana/docs/INDEX.md](../../ws-rhana/docs/INDEX.md).
|
||||||
|
|
||||||
|
**Обозначения конфигураций (эквивалентны):**
|
||||||
|
|
||||||
|
| Сторона | Папки / имена |
|
||||||
|
|---------|----------------|
|
||||||
|
| Исходная | `crm3-dev`, `crm3_old`, `crm3-old` |
|
||||||
|
| Целевая | `crm3-26`, `crm3_26` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Конфигурации и расширения в репозитории
|
||||||
|
|
||||||
|
| Путь | Назначение |
|
||||||
|
|------|------------|
|
||||||
|
| `crm3-dev/` | Исходная конфигурация CRM3 (промышленная доработанная) |
|
||||||
|
| `crm3-dev.rhana/` | Расширение РАНА для исходной конфигурации |
|
||||||
|
| `crm3-dev.docs/` | Расширение печати договоров (исходная) |
|
||||||
|
| `crm3-26/` | **Целевая** конфигурация CRM3 (редакция 3.1) |
|
||||||
|
| `crm3-26.rhana/` | Расширение РАНА для целевой конфигурации |
|
||||||
|
| `ws-rhana/` | **Универсальное** расширение HTTP/WS (`РВС_`), подключается к любой ИБ РАНА |
|
||||||
|
|
||||||
|
**Загрузка в информационную базу.** Канонический артефакт — исходники в git (XML/BSL). Конфигурацию, расширения и внешние обработки пользователь загружает **самостоятельно через Конфигуратор 1С**, как правило на **другом рабочем месте** после обновления рабочей копии (`git pull` / обновление submodule). Сборка и передача `.cf` / `.cfe` / `.epf` для установки на рабочую базу **не требуется**, если это явно не запрошено.
|
||||||
|
|
||||||
|
Обновление выгрузок конфигураций из ИБ в репозиторий выполняется вручную из конфигуратора 1С или через 1С EDT.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Внешние обработки переноса данных
|
||||||
|
|
||||||
|
| Сторона | Путь | Обработка | Статус |
|
||||||
|
|---------|------|-----------|--------|
|
||||||
|
| Исходная ИБ | `crm3-dev.ext/transfer/` | `crm3_old_ПереносОстатков` | Legacy; **доработка на паузе** |
|
||||||
|
| Целевая ИБ | `crm3-26.ext/tranfer/` | `crm3_26_ПереносОстатков` | Legacy; **доработка на паузе** |
|
||||||
|
|
||||||
|
**Приоритет:** анализ и изменения в ИБ — линейный BSL (`docs/transfer/Код_*.bsl`) + `scripts/run_bsl.sh`. См. [Политика переноса: приоритет BSL](Политика_переноса_BSL_приоритет.md).
|
||||||
|
|
||||||
|
Каждая обработка — отдельный git-репозиторий внутри соответствующего каталога.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Интеграция Контур.Диадок
|
||||||
|
|
||||||
|
| Путь | Назначение |
|
||||||
|
|------|------------|
|
||||||
|
| `diadoc.ext/` | Основной модуль Контур.Диадок (внешняя обработка) |
|
||||||
|
| `diadoc.ext.rhana/` | Подключаемый модуль Диадок для CRM3 ПлацентаФарм (расширение Рана) |
|
||||||
|
|
||||||
|
Каждый каталог — отдельный git-репозиторий; клонирование — см. [REPOSITORIES.md](REPOSITORIES.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Каталоги данных
|
||||||
|
|
||||||
|
### `data_transfer/` — данные процесса переноса
|
||||||
|
|
||||||
|
| Подкаталог | Содержимое |
|
||||||
|
|------------|------------|
|
||||||
|
| `data_transfer/crm3-dev/` | Выгрузки **из исходной** базы: отчёты анализа, реестры, остатки с ГТД, комиссия, `catalog_dev/`, rh_cost и т.д. |
|
||||||
|
| `data_transfer/crm3-26/` | Данные **для загрузки в целевую** базу и промежуточные результаты анализа/маппинга на стороне целевой ИБ |
|
||||||
|
|
||||||
|
Типовые файлы: `latest_АнализОстатков.txt`, `latest_registry_dev.csv`, `latest_registry_promo.csv`, `latest_ОстаткиСГТД.csv`, `latest_ОстаткиКомиссия.csv`, `latest_rh_cost_dev.csv`, `latest_catalog_dev_<Справочник>.csv`.
|
||||||
|
|
||||||
|
Каталоги `data_transfer/crm3-26/` и `data_transfer/crm3-dev/` в корне — **устарели**, не использовать.
|
||||||
|
|
||||||
|
### `docs/transfer/mapping/` — файлы сопоставления НСИ
|
||||||
|
|
||||||
|
CSV `map_*.csv` для связи GUID исходной и целевой баз. Используются обработкой `crm3_26_ПереносОстатков` и Python-скриптами в `scripts/`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Документация
|
||||||
|
|
||||||
|
| Путь | Назначение |
|
||||||
|
|------|------------|
|
||||||
|
| `docs/` | Вся проектная документация (аналитика, отчёты, инструкции) |
|
||||||
|
| `docs/meta/` | Описательная документация по структуре проекта (этот файл и связанные) |
|
||||||
|
| `docs/transfer/` | Документация по переносу: НСИ, остатки, комиссия, волны загрузки, BSL для консоли кода |
|
||||||
|
| `docs/1c_standarts/` | Стандарты разработки 1С (директивы препроцессора расширений и др.) |
|
||||||
|
| `docs/cursor_agents/` | Экспорт истории сессий Cursor Agent |
|
||||||
|
|
||||||
|
Папка `docs2/` **объединена** в `docs/transfer/`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Служебные инструменты
|
||||||
|
|
||||||
|
| Путь | Назначение |
|
||||||
|
|------|------------|
|
||||||
|
| `scripts/` | Рабочие Python- и shell-скрипты анализа, сравнения, валидации |
|
||||||
|
| `scripts/build_epf.sh` | Сборка внешней обработки XML → EPF (DESIGNER, пакетный режим) |
|
||||||
|
| `scripts/run_bsl.sh` | Выполнение линейного `.bsl` через `RunBsl.epf` (`/Execute` + `/C`) |
|
||||||
|
| `scripts/build_run_bsl.sh` | Сборка/пересборка `tools/run_bsl/RunBsl.epf` |
|
||||||
|
| `scripts/run_diag_vid_settings.sh` | Диагностика видов номенклатуры в обеих ИБ |
|
||||||
|
| `scripts/lib/1c_shell.sh` | Общие функции подключения к ИБ (для `build_epf.sh`, `run_bsl.sh`) |
|
||||||
|
| `tools/run_bsl/` | Исходники обёртки `RunBsl.epf` (отдельный репозиторий [1c.run_bsl](https://git.p7net.ru/tools/1c.run_bsl)) |
|
||||||
|
| `build_crm3-dev.sh`, `build_crm3-26.sh` | Обёртки сборки EPF из корня проекта |
|
||||||
|
| `crm3-dev.ext/build_epf.conf`, `crm3-26.ext/build_epf.conf` | Подключение к ИБ: `V8`, `IB_CONN`, `AUTH_FILE` |
|
||||||
|
| `tools/md_converter/` | Конвертер Markdown → HTML/PDF |
|
||||||
|
| `tools/cam/` | [CAM](https://git.p7net.ru/tools/cam) — Cursor Agents Manager (отдельный репозиторий) |
|
||||||
|
| `tools/index/` | Индекс метаданных+BSL → `cache/1c_meta/index.sqlite` (`index_1c.py` / `query_1c.py`, v0.2.0, [1c/index](https://git.p7net.ru/1c/index.git)) |
|
||||||
|
| `tools/git_1c/` | Шаблоны `.gitattributes` / `.editorconfig` для репозиториев 1С; см. `scripts/sync_git_1c_config.sh` |
|
||||||
|
| `tools/check_ext/` | Проверка расширений 1С |
|
||||||
|
|
||||||
|
Подробнее: [Скрипты 1С в пакетном режиме](Скрипты_1С_пакетный_режим.md).
|
||||||
|
|
||||||
|
### Виртуальная среда Python
|
||||||
|
|
||||||
|
**Единая среда:** `.venv-nt-041/` в корне проекта.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source .venv-nt-041/bin/activate # macOS / Linux
|
||||||
|
# .venv-nt-041\Scripts\Activate.ps1 # Windows
|
||||||
|
```
|
||||||
|
|
||||||
|
После активации запускать скрипты из `scripts/` и `tools/md_converter/` из корня проекта или с указанием полного пути.
|
||||||
|
|
||||||
|
Устаревшие среды (`scripts/venv/`, `tools/md_converter/venv/`, `venv-dt-021/`) не использовать.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Консоль кода 1С (проверочный анализ данных)
|
||||||
|
|
||||||
|
Проверочный код можно выполнять **вручную** в консоли кода или **автоматически** через `scripts/run_bsl.sh` и обёртку `tools/run_bsl/RunBsl.epf` (без GUI; `/Execute` принимает только `.epf`, путь к `.bsl` — в `/C`). Перед первым запуском: `scripts/build_run_bsl.sh`. Подключение — тот же `build_epf.conf`, что и сборка EPF. См. [Скрипты 1С в пакетном режиме](Скрипты_1С_пакетный_режим.md).
|
||||||
|
|
||||||
|
**Правила для `.bsl`:**
|
||||||
|
|
||||||
|
- Без объявления процедур и функций — только линейный исполняемый код.
|
||||||
|
- Серверное выполнение: вывод через `ОбщегоНазначения.СообщитьПользователю(...)`.
|
||||||
|
- Клиентское выполнение: вывод через `ОбщегоНазначенияКлиент.СообщитьПользователю(...)`.
|
||||||
|
|
||||||
|
Референсные фрагменты:
|
||||||
|
|
||||||
|
| Файл | Назначение |
|
||||||
|
|------|------------|
|
||||||
|
| `docs/transfer/Код_анализа_остатков_crm3-dev.bsl` | Анализ остатков в исходной ИБ |
|
||||||
|
| `docs/transfer/Код_анализа_остатков_crm3-26-promo.bsl` | Сверка в целевой ИБ |
|
||||||
|
| `docs/transfer/Код_анализа_настроек_видов_характеристик.bsl` | Диагностика видов/характеристик/серий; автозапуск: `scripts/run_diag_vid_settings.sh` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Приоритет Python при анализе файлов
|
||||||
|
|
||||||
|
Для массового обхода, сравнения деревьев выгрузок, парсинга XML/BSL и отчётов по метаданным — **Python-скрипты в `scripts/`** (с `.venv-nt-041`), а не разовые длинные shell-команды. Результаты — в `docs/` или `data_transfer/` по назначению.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## История агентов Cursor
|
||||||
|
|
||||||
|
Утилита: **[CAM](https://git.p7net.ru/tools/cam)** (`tools/cam/`) — Cursor Agents Manager.
|
||||||
|
|
||||||
|
Экспорт: `docs/cursor_agents/` (индекс: `docs/cursor_agents/INDEX.md`).
|
||||||
|
|
||||||
|
Развёртывание CAM (один раз на рабочем месте):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://git.p7net.ru/tools/cam.git tools/cam
|
||||||
|
cp tools/cam/config/workstations/nt-041.example.yml tools/cam/config/workstations/local.yml
|
||||||
|
# отредактировать project.root
|
||||||
|
```
|
||||||
|
|
||||||
|
Повторный экспорт:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source .venv-nt-041/bin/activate
|
||||||
|
python tools/cam/cam.py -c tools/cam/config/workstations/local.yml export
|
||||||
|
```
|
||||||
|
|
||||||
|
Импорт на другом ПК (опционально, Cursor закрыт): `python tools/cam/cam.py import ...`
|
||||||
|
Документация CAM: `tools/cam/README.md` (English).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Обновлено: 2026-06-29 — политика приоритета BSL, [Политика_переноса_BSL_приоритет.md](Политика_переноса_BSL_приоритет.md).*
|
||||||
@@ -0,0 +1,799 @@
|
|||||||
|
---
|
||||||
|
title: Анализ доработок синхронизации документа Заказ клиента
|
||||||
|
version: 1.0
|
||||||
|
date_modified: 2026-01-12
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2026-01-12
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ доработок синхронизации документа Заказ клиента
|
||||||
|
|
||||||
|
## Версия документа
|
||||||
|
|
||||||
|
Версия 1.0 от 12.01.2026
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
|
||||||
|
Оценить необходимость доработки при применении типового механизма синхронизации с передачей документа "Заказ клиента" из старой конфигурации (включая расширение) в новую конфигурацию. Определить, какие доработки требуются в расширении для новой конфигурации с учетом особенностей:
|
||||||
|
|
||||||
|
- Различий в политике учета номенклатур при сопоставлении
|
||||||
|
- Признака маркировки товаров (присутствует только в новой конфигурации)
|
||||||
|
- Применения максимально доступной в старой конфигурации версии XDTO
|
||||||
|
- Различий в структуре реквизитов документа
|
||||||
|
|
||||||
|
## Краткое резюме
|
||||||
|
|
||||||
|
**Основные выводы:**
|
||||||
|
|
||||||
|
1. **Типовой механизм синхронизации** - механизм "СинхронизацияДанныхЧерезУниверсальныйФормат" присутствует в обеих конфигурациях и поддерживает передачу документа "ЗаказКлиента"
|
||||||
|
|
||||||
|
2. **Критические доработки, требующие реализации:**
|
||||||
|
- Обработка различий в политике учета номенклатур при сопоставлении (политика определяется по номенклатуре, не хранится в документе)
|
||||||
|
- Обработка признака маркировки товаров (новое поле в новой конфигурации)
|
||||||
|
- Адаптация XDTO-структур для совместимости версий
|
||||||
|
- Обработка различий в структуре реквизитов документа (новые поля в новой конфигурации, отсутствующие в старой)
|
||||||
|
|
||||||
|
3. **Риски:**
|
||||||
|
- Потеря данных о политике учета при синхронизации (если политика учета номенклатуры отличается)
|
||||||
|
- Отсутствие информации о маркировке товаров в старой конфигурации
|
||||||
|
- Несовместимость версий XDTO может привести к ошибкам обмена
|
||||||
|
- Потеря данных о времени доставки при синхронизации из старой конфигурации
|
||||||
|
|
||||||
|
**Детальный анализ:** см. разделы ниже
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Анализ типового механизма синхронизации
|
||||||
|
|
||||||
|
### 1.1. Описание механизма
|
||||||
|
|
||||||
|
**План обмена:** `СинхронизацияДанныхЧерезУниверсальныйФормат`
|
||||||
|
|
||||||
|
**Назначение:** Типовой механизм синхронизации данных между конфигурациями через универсальный формат обмена.
|
||||||
|
|
||||||
|
**Поддерживаемые объекты:**
|
||||||
|
- Документы (включая "ЗаказКлиента")
|
||||||
|
- Справочники
|
||||||
|
- Регистры сведений
|
||||||
|
- Регистры накопления
|
||||||
|
|
||||||
|
### 1.2. Присутствие в конфигурациях
|
||||||
|
|
||||||
|
**Старая конфигурация (`crm3-dev`):**
|
||||||
|
- ✅ План обмена присутствует
|
||||||
|
- ✅ Документ "ЗаказКлиента" включен в план обмена
|
||||||
|
|
||||||
|
**Новая конфигурация (`crm3-26-promo`):**
|
||||||
|
- ✅ План обмена присутствует
|
||||||
|
- ✅ Документ "ЗаказКлиента" включен в план обмена
|
||||||
|
|
||||||
|
**Вывод:** Типовой механизм синхронизации присутствует в обеих конфигурациях и поддерживает передачу документа "ЗаказКлиента".
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Анализ различий в структуре документа "ЗаказКлиента"
|
||||||
|
|
||||||
|
### 2.1. Сравнение реквизитов документа
|
||||||
|
|
||||||
|
#### 2.1.1. Реквизиты шапки документа
|
||||||
|
|
||||||
|
**Общие реквизиты (присутствуют в обеих конфигурациях):**
|
||||||
|
- Партнер
|
||||||
|
- Контрагент
|
||||||
|
- Организация
|
||||||
|
- Соглашение
|
||||||
|
- Сделка
|
||||||
|
- Валюта
|
||||||
|
- СуммаДокумента
|
||||||
|
- ГрафикОплаты
|
||||||
|
- Склад
|
||||||
|
- ЦенаВключаетНДС
|
||||||
|
- Менеджер
|
||||||
|
- ДополнительнаяИнформация
|
||||||
|
- ДокументОснование
|
||||||
|
- НеОтгружатьЧастями
|
||||||
|
- Статус
|
||||||
|
- МаксимальныйКодСтроки
|
||||||
|
- ДатаСогласования
|
||||||
|
- Согласован
|
||||||
|
- ФормаОплаты
|
||||||
|
- БанковскийСчет
|
||||||
|
- БанковскийСчетКонтрагента
|
||||||
|
- Касса
|
||||||
|
- СуммаАвансаДоОбеспечения
|
||||||
|
- СуммаПредоплатыДоОтгрузки
|
||||||
|
- ДатаОтгрузки
|
||||||
|
- АдресДоставки
|
||||||
|
- НалогообложениеНДС
|
||||||
|
- СкидкиРассчитаны
|
||||||
|
- ХозяйственнаяОперация
|
||||||
|
- Комментарий
|
||||||
|
- НомерПоДаннымКлиента
|
||||||
|
- ДатаПоДаннымКлиента
|
||||||
|
- Грузоотправитель
|
||||||
|
- Грузополучатель
|
||||||
|
- БанковскийСчетГрузоотправителя
|
||||||
|
- БанковскийСчетГрузополучателя
|
||||||
|
- ГруппаФинансовогоУчета
|
||||||
|
- КартаЛояльности
|
||||||
|
- Договор
|
||||||
|
- Подразделение
|
||||||
|
- Автор
|
||||||
|
- ПорядокРасчетов
|
||||||
|
- Назначение
|
||||||
|
- СпособДоставки
|
||||||
|
- ПеревозчикПартнер
|
||||||
|
- ЗонаДоставки
|
||||||
|
|
||||||
|
**Реквизиты, присутствующие только в новой конфигурации:**
|
||||||
|
- `ВремяДоставкиС` (xs:dateTime) - **НОВОЕ ПОЛЕ**
|
||||||
|
- `ВремяДоставкиПо` (xs:dateTime) - **НОВОЕ ПОЛЕ**
|
||||||
|
|
||||||
|
**Реквизиты, присутствующие только в старой конфигурации:**
|
||||||
|
- `УдалитьПриоритет` (xs:boolean) - присутствует в старой конфигурации, отсутствует в новой
|
||||||
|
|
||||||
|
**Важно:**
|
||||||
|
- Поля `ВремяДоставкиС` и `ВремяДоставкиПо` отсутствуют в старой конфигурации, при синхронизации будут пустыми
|
||||||
|
- Поле `УдалитьПриоритет` отсутствует в новой конфигурации, при синхронизации будет проигнорировано
|
||||||
|
|
||||||
|
#### 2.1.2. Табличная часть "Товары"
|
||||||
|
|
||||||
|
**Общие реквизиты (присутствуют в обеих конфигурациях):**
|
||||||
|
- ДатаОтгрузки
|
||||||
|
- Номенклатура
|
||||||
|
- Характеристика
|
||||||
|
- Упаковка
|
||||||
|
- КоличествоУпаковок
|
||||||
|
- Цена
|
||||||
|
- Сумма
|
||||||
|
- СтавкаНДС
|
||||||
|
- СуммаНДС
|
||||||
|
- СуммаСНДС
|
||||||
|
- Склад
|
||||||
|
- НомерСтроки
|
||||||
|
- ИдентификаторСтроки
|
||||||
|
- НоменклатураПартнера
|
||||||
|
- НоменклатураНабора
|
||||||
|
- ХарактеристикаНабора
|
||||||
|
- ВидЦены
|
||||||
|
- Назначение
|
||||||
|
|
||||||
|
**Важное отличие от документа "РеализацияТоваровУслуг":**
|
||||||
|
- В табличной части "Товары" документа "ЗаказКлиента" **отсутствуют** поля:
|
||||||
|
- `АналитикаУчетаНоменклатуры`
|
||||||
|
- `АналитикаУчетаНаборов`
|
||||||
|
|
||||||
|
**Вывод:** Политика учета номенклатур в документе "ЗаказКлиента" определяется по номенклатуре из справочника, а не хранится в документе. Это упрощает синхронизацию, но требует проверки соответствия политики учета при сопоставлении номенклатур.
|
||||||
|
|
||||||
|
### 2.2. Различия в структуре данных
|
||||||
|
|
||||||
|
#### 2.2.1. Политика учета номенклатур
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
При сопоставлении номенклатур между старой и новой конфигурациями могут возникать различия в политике учета:
|
||||||
|
|
||||||
|
1. **Разные политики учета:**
|
||||||
|
- В старой конфигурации номенклатура может иметь одну политику учета
|
||||||
|
- В новой конфигурации та же номенклатура может иметь другую политику учета
|
||||||
|
- Это может привести к ошибкам при синхронизации или неправильному учету при создании документов реализации
|
||||||
|
|
||||||
|
2. **Отсутствие политики учета:**
|
||||||
|
- В старой конфигурации политика учета может отсутствовать
|
||||||
|
- В новой конфигурации политика учета обязательна
|
||||||
|
- Требуется установка политики учета по умолчанию
|
||||||
|
|
||||||
|
**Особенность документа "ЗаказКлиента":**
|
||||||
|
- Политика учета не хранится в документе, а определяется по номенклатуре
|
||||||
|
- При синхронизации необходимо проверять соответствие политики учета номенклатуры в новой конфигурации
|
||||||
|
- Если политика учета отличается, требуется либо предупреждение, либо установка политики учета по умолчанию
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При синхронизации проверять соответствие политики учета номенклатуры
|
||||||
|
- При несоответствии - логировать предупреждение
|
||||||
|
- При необходимости - устанавливать политику учета по умолчанию для номенклатуры в новой конфигурации
|
||||||
|
|
||||||
|
#### 2.2.2. Признак маркировки товаров
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
В новой конфигурации номенклатура может иметь признак маркировки, который отсутствует в старой конфигурации:
|
||||||
|
|
||||||
|
1. **Отсутствие данных:**
|
||||||
|
- В старой конфигурации нет информации о маркировке товаров
|
||||||
|
- При синхронизации заказа с маркируемыми товарами это не влияет на сам заказ
|
||||||
|
- Но может потребоваться обработка при создании документов реализации на основе заказа
|
||||||
|
|
||||||
|
2. **Логика обработки:**
|
||||||
|
- Необходимо определить, как обрабатывать маркируемые товары при синхронизации заказа
|
||||||
|
- Возможно, требуется проверка номенклатуры на признак маркировки
|
||||||
|
- При создании документов реализации на основе заказа потребуется установка значения `ВариантВыбытияМаркируемойПродукции`
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При синхронизации заказа проверка маркировки не требуется (заказ не содержит информации о маркировке)
|
||||||
|
- При создании документов реализации на основе заказа - проверять признак маркировки номенклатуры и устанавливать значение по умолчанию
|
||||||
|
|
||||||
|
#### 2.2.3. Новые реквизиты времени доставки
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
В новой конфигурации присутствуют реквизиты `ВремяДоставкиС` и `ВремяДоставкиПо`, которые отсутствуют в старой конфигурации:
|
||||||
|
|
||||||
|
1. **Отсутствие данных:**
|
||||||
|
- В старой конфигурации нет информации о времени доставки
|
||||||
|
- При синхронизации эти поля будут пустыми
|
||||||
|
- Может потребоваться заполнение по умолчанию или на основе других данных
|
||||||
|
|
||||||
|
2. **Логика обработки:**
|
||||||
|
- Необходимо определить, как обрабатывать отсутствующие данные о времени доставки
|
||||||
|
- Возможно, требуется установка значений по умолчанию
|
||||||
|
- Или оставлять поля пустыми для последующего заполнения вручную
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При синхронизации из старой конфигурации - оставлять поля `ВремяДоставкиС` и `ВремяДоставкиПо` пустыми
|
||||||
|
- При необходимости - устанавливать значения по умолчанию на основе `ДатаОтгрузки` или других данных
|
||||||
|
|
||||||
|
#### 2.2.4. Отсутствующий реквизит "УдалитьПриоритет"
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
В старой конфигурации присутствует реквизит `УдалитьПриоритет`, который отсутствует в новой конфигурации:
|
||||||
|
|
||||||
|
1. **Потеря данных:**
|
||||||
|
- При синхронизации значение реквизита `УдалитьПриоритет` будет потеряно
|
||||||
|
- Необходимо определить, критична ли эта потеря данных
|
||||||
|
|
||||||
|
2. **Логика обработки:**
|
||||||
|
- Если реквизит не критичен - игнорировать при синхронизации
|
||||||
|
- Если критичен - требуется доработка новой конфигурации для поддержки этого реквизита
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При синхронизации из старой конфигурации - игнорировать реквизит `УдалитьПриоритет`
|
||||||
|
- Если функционал критичен - рассмотреть возможность добавления реквизита в новую конфигурацию через расширение
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Анализ версий XDTO
|
||||||
|
|
||||||
|
### 3.1. Версии XDTO в конфигурациях
|
||||||
|
|
||||||
|
**Старая конфигурация:**
|
||||||
|
- Применяется максимально доступная версия XDTO для документа "ЗаказКлиента"
|
||||||
|
- Версия определяется возможностями старой конфигурации
|
||||||
|
|
||||||
|
**Новая конфигурация:**
|
||||||
|
- Поддерживает более новые версии XDTO
|
||||||
|
- Может содержать дополнительные поля и структуры
|
||||||
|
|
||||||
|
### 3.2. Проблемы совместимости
|
||||||
|
|
||||||
|
#### 3.2.1. Несовместимость версий
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
- Старая конфигурация использует максимально доступную версию XDTO
|
||||||
|
- Новая конфигурация может ожидать более новую версию XDTO
|
||||||
|
- Это может привести к ошибкам при обмене
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- Использовать версию XDTO, совместимую с обеими конфигурациями
|
||||||
|
- При необходимости - преобразование данных между версиями
|
||||||
|
- Обработка отсутствующих полей в старой версии XDTO
|
||||||
|
|
||||||
|
#### 3.2.2. Отсутствующие поля в XDTO
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
В старой версии XDTO могут отсутствовать поля, присутствующие в новой:
|
||||||
|
- `ВремяДоставкиС`
|
||||||
|
- `ВремяДоставкиПо`
|
||||||
|
- Дополнительные поля, связанные с маркировкой (если будут добавлены в будущем)
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При формировании XDTO в старой конфигурации - не включать отсутствующие поля
|
||||||
|
- При получении XDTO в новой конфигурации - обрабатывать отсутствующие поля как пустые
|
||||||
|
- Устанавливать значения по умолчанию для отсутствующих полей при необходимости
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Необходимые доработки в расширении новой конфигурации
|
||||||
|
|
||||||
|
### 4.1. Обработка политики учета номенклатур
|
||||||
|
|
||||||
|
#### 4.1.1. Доработка модуля обмена
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширение)
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить проверку политики учета при получении документа:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре обработки получения документа ЗаказКлиента
|
||||||
|
Процедура ОбработатьПолитикуУчетаНоменклатур(ДокументОбъект, ТабличнаяЧастьТовары)
|
||||||
|
|
||||||
|
Для Каждого СтрокаТовары Из ТабличнаяЧастьТовары Цикл
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(СтрокаТовары.Номенклатура) Тогда
|
||||||
|
|
||||||
|
// Получаем политику учета из новой конфигурации
|
||||||
|
ПолитикаУчетаНовойКонфигурации = ПолучитьПолитикуУчетаНоменклатуры(СтрокаТовары.Номенклатура);
|
||||||
|
|
||||||
|
// Проверяем наличие политики учета
|
||||||
|
Если НЕ ЗначениеЗаполнено(ПолитикаУчетаНовойКонфигурации) Тогда
|
||||||
|
|
||||||
|
// Логируем предупреждение
|
||||||
|
ЗаписатьВЖурналРегистрации("ОбменДанными",
|
||||||
|
УровеньЖурналаРегистрации.Предупреждение,
|
||||||
|
"У номенклатуры отсутствует политика учета при синхронизации заказа",
|
||||||
|
Новый Структура("Номенклатура", СтрокаТовары.Номенклатура,
|
||||||
|
"Документ", ДокументОбъект));
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавить функцию получения политики учета:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция ПолучитьПолитикуУчетаНоменклатуры(Номенклатура)
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||||
|
| Номенклатура.ПолитикаУчетаНоменклатуры КАК ПолитикаУчетаНоменклатуры
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Номенклатура КАК Номенклатура
|
||||||
|
|ГДЕ
|
||||||
|
| Номенклатура.Ссылка = &Номенклатура";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
|
||||||
|
Выборка = Результат.Выбрать();
|
||||||
|
Если Выборка.Следующий() Тогда
|
||||||
|
Возврат Выборка.ПолитикаУчетаНоменклатуры;
|
||||||
|
Иначе
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.1.2. Обработка ошибок сопоставления
|
||||||
|
|
||||||
|
**Необходимо добавить:**
|
||||||
|
- Обработку случаев, когда политика учета не найдена
|
||||||
|
- Логирование всех случаев отсутствия политики учета
|
||||||
|
- Предупреждения пользователю при необходимости
|
||||||
|
|
||||||
|
### 4.2. Обработка признака маркировки товаров
|
||||||
|
|
||||||
|
#### 4.2.1. Доработка модуля обмена
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширение)
|
||||||
|
|
||||||
|
**Особенность для документа "ЗаказКлиента":**
|
||||||
|
- Документ "ЗаказКлиента" не содержит информации о маркировке товаров
|
||||||
|
- Проверка маркировки не требуется при синхронизации заказа
|
||||||
|
- Обработка маркировки потребуется при создании документов реализации на основе заказа
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить проверку маркировки при создании документов реализации (не при синхронизации заказа):**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре создания документа РеализацияТоваровУслуг на основе заказа
|
||||||
|
Процедура ОбработатьМаркировкуТоваровПриСозданииРеализации(ДокументРеализации, ЗаказКлиента)
|
||||||
|
|
||||||
|
ЕстьМаркируемыеТовары = Ложь;
|
||||||
|
|
||||||
|
Для Каждого СтрокаТовары Из ДокументРеализации.Товары Цикл
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(СтрокаТовары.Номенклатура) Тогда
|
||||||
|
|
||||||
|
// Проверяем признак маркировки номенклатуры
|
||||||
|
Если НоменклатураМаркируемая(СтрокаТовары.Номенклатура) Тогда
|
||||||
|
|
||||||
|
ЕстьМаркируемыеТовары = Истина;
|
||||||
|
|
||||||
|
// Если поле не заполнено, устанавливаем значение по умолчанию
|
||||||
|
Если НЕ ЗначениеЗаполнено(ДокументРеализации.ВариантВыбытияМаркируемойПродукции) Тогда
|
||||||
|
ДокументРеализации.ВариантВыбытияМаркируемойПродукции =
|
||||||
|
Перечисления.ВариантыВыбытияМаркируемойПродукции.Реализация;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Если маркируемых товаров нет, очищаем поле
|
||||||
|
Если НЕ ЕстьМаркируемыеТовары Тогда
|
||||||
|
ДокументРеализации.ВариантВыбытияМаркируемойПродукции = Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавить функцию проверки маркировки:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция НоменклатураМаркируемая(Номенклатура)
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||||
|
| Номенклатура.Маркируемый КАК Маркируемый
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Номенклатура КАК Номенклатура
|
||||||
|
|ГДЕ
|
||||||
|
| Номенклатура.Ссылка = &Номенклатура";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
|
||||||
|
Выборка = Результат.Выбрать();
|
||||||
|
Если Выборка.Следующий() Тогда
|
||||||
|
Возврат Выборка.Маркируемый = Истина;
|
||||||
|
Иначе
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.2.2. Обработка отсутствующих данных
|
||||||
|
|
||||||
|
**Необходимо:**
|
||||||
|
- При синхронизации заказа проверка маркировки не требуется
|
||||||
|
- При создании документов реализации на основе заказа - проверять признак маркировки и устанавливать значение по умолчанию
|
||||||
|
|
||||||
|
### 4.3. Обработка новых реквизитов времени доставки
|
||||||
|
|
||||||
|
#### 4.3.1. Доработка модуля обмена
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширение)
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить обработку отсутствующих полей времени доставки:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре обработки получения документа ЗаказКлиента
|
||||||
|
Процедура ОбработатьВремяДоставки(ДокументОбъект)
|
||||||
|
|
||||||
|
// Если поля времени доставки отсутствуют в XDTO, они будут пустыми
|
||||||
|
// Можно установить значения по умолчанию на основе ДатаОтгрузки
|
||||||
|
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВремяДоставкиС)
|
||||||
|
И ЗначениеЗаполнено(ДокументОбъект.ДатаОтгрузки) Тогда
|
||||||
|
|
||||||
|
// Устанавливаем время доставки по умолчанию (например, с 9:00)
|
||||||
|
ДокументОбъект.ВремяДоставкиС = НачалоДня(ДокументОбъект.ДатаОтгрузки) + 9 * 3600;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВремяДоставкиПо)
|
||||||
|
И ЗначениеЗаполнено(ДокументОбъект.ДатаОтгрузки) Тогда
|
||||||
|
|
||||||
|
// Устанавливаем время доставки по умолчанию (например, до 18:00)
|
||||||
|
ДокументОбъект.ВремяДоставкиПо = НачалоДня(ДокументОбъект.ДатаОтгрузки) + 18 * 3600;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Альтернативный вариант:**
|
||||||
|
- Оставлять поля пустыми для последующего заполнения вручную
|
||||||
|
- Не устанавливать значения по умолчанию
|
||||||
|
|
||||||
|
### 4.4. Адаптация XDTO-структур
|
||||||
|
|
||||||
|
#### 4.4.1. Обработка версий XDTO
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширение)
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить обработку отсутствующих полей в XDTO:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре обработки получения XDTO
|
||||||
|
Процедура ОбработатьОтсутствующиеПоляXDTO(СтрокаXDTO, СтруктураДанныхСтроки)
|
||||||
|
|
||||||
|
// Обработка полей ВремяДоставкиС и ВремяДоставкиПо
|
||||||
|
Если НЕ СтрокаXDTO.Свойство("ВремяДоставкиС") Тогда
|
||||||
|
// Поле отсутствует в старой версии XDTO
|
||||||
|
СтруктураДанныхСтроки.ВремяДоставкиС = Неопределено;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.ВремяДоставкиС = СтрокаXDTO.ВремяДоставкиС;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если НЕ СтрокаXDTO.Свойство("ВремяДоставкиПо") Тогда
|
||||||
|
// Поле отсутствует в старой версии XDTO
|
||||||
|
СтруктураДанныхСтроки.ВремяДоставкиПо = Неопределено;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.ВремяДоставкиПо = СтрокаXDTO.ВремяДоставкиПо;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавить преобразование версий XDTO:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция ПреобразоватьXDTOКНовойВерсии(СтрокаXDTOСтараяВерсия)
|
||||||
|
|
||||||
|
// Создаем структуру для новой версии XDTO
|
||||||
|
СтрокаXDTONоваяВерсия = Новый Структура;
|
||||||
|
|
||||||
|
// Копируем все поля из старой версии
|
||||||
|
Для Каждого КлючЗначение Из СтрокаXDTOСтараяВерсия Цикл
|
||||||
|
СтрокаXDTONоваяВерсия.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Добавляем отсутствующие поля с значениями по умолчанию
|
||||||
|
Если НЕ СтрокаXDTONоваяВерсия.Свойство("ВремяДоставкиС") Тогда
|
||||||
|
СтрокаXDTONоваяВерсия.Вставить("ВремяДоставкиС", Неопределено);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если НЕ СтрокаXDTONоваяВерсия.Свойство("ВремяДоставкиПо") Тогда
|
||||||
|
СтрокаXDTONоваяВерсия.Вставить("ВремяДоставкиПо", Неопределено);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат СтрокаXDTONоваяВерсия;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.4.2. Обработка ошибок версий
|
||||||
|
|
||||||
|
**Необходимо:**
|
||||||
|
- Проверять версию XDTO при получении
|
||||||
|
- Преобразовывать данные между версиями при необходимости
|
||||||
|
- Логировать случаи несовместимости версий
|
||||||
|
|
||||||
|
### 4.5. Обработка отсутствующего реквизита "УдалитьПриоритет"
|
||||||
|
|
||||||
|
#### 4.5.1. Доработка модуля обмена
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширение)
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить обработку отсутствующего реквизита:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре обработки получения документа ЗаказКлиента
|
||||||
|
Процедура ОбработатьОтсутствующийРеквизитУдалитьПриоритет(СтрокаXDTO, СтруктураДанныхСтроки)
|
||||||
|
|
||||||
|
// Если в старой конфигурации есть реквизит УдалитьПриоритет, он будет проигнорирован
|
||||||
|
// Логируем информацию для анализа
|
||||||
|
Если СтрокаXDTO.Свойство("УдалитьПриоритет")
|
||||||
|
И СтрокаXDTO.УдалитьПриоритет = Истина Тогда
|
||||||
|
|
||||||
|
ЗаписатьВЖурналРегистрации("ОбменДанными",
|
||||||
|
УровеньЖурналаРегистрации.Информация,
|
||||||
|
"Реквизит УдалитьПриоритет проигнорирован при синхронизации (отсутствует в новой конфигурации)",
|
||||||
|
Новый Структура("Документ", СтруктураДанныхСтроки.Ссылка));
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Альтернативный вариант:**
|
||||||
|
- Если функционал критичен - добавить реквизит `УдалитьПриоритет` в новую конфигурацию через расширение
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. План реализации доработок
|
||||||
|
|
||||||
|
### 5.1. Этап 1: Подготовка
|
||||||
|
|
||||||
|
1. **Анализ текущего состояния:**
|
||||||
|
- Проверить наличие модуля обмена в расширении новой конфигурации
|
||||||
|
- Изучить текущую логику обработки документа "ЗаказКлиента"
|
||||||
|
- Определить точки входа для доработок
|
||||||
|
|
||||||
|
2. **Определение требований:**
|
||||||
|
- Уточнить логику обработки политики учета
|
||||||
|
- Определить правила обработки времени доставки
|
||||||
|
- Уточнить версии XDTO, используемые в обмене
|
||||||
|
- Определить критичность реквизита "УдалитьПриоритет"
|
||||||
|
|
||||||
|
### 5.2. Этап 2: Реализация доработок
|
||||||
|
|
||||||
|
1. **Доработка обработки политики учета:**
|
||||||
|
- Добавить функции получения и проверки политики учета
|
||||||
|
- Реализовать логику проверки политики учета при синхронизации
|
||||||
|
- Добавить логирование предупреждений
|
||||||
|
|
||||||
|
2. **Доработка обработки времени доставки:**
|
||||||
|
- Реализовать обработку отсутствующих полей времени доставки
|
||||||
|
- Добавить установку значений по умолчанию (если требуется)
|
||||||
|
- Обеспечить обратную совместимость
|
||||||
|
|
||||||
|
3. **Адаптация XDTO:**
|
||||||
|
- Реализовать обработку отсутствующих полей
|
||||||
|
- Добавить преобразование версий XDTO
|
||||||
|
- Обеспечить обратную совместимость
|
||||||
|
|
||||||
|
4. **Обработка реквизита "УдалитьПриоритет":**
|
||||||
|
- Реализовать логирование игнорирования реквизита
|
||||||
|
- Оценить необходимость добавления реквизита в новую конфигурацию
|
||||||
|
|
||||||
|
### 5.3. Этап 3: Тестирование
|
||||||
|
|
||||||
|
1. **Функциональное тестирование:**
|
||||||
|
- Тестирование синхронизации с различными политиками учета
|
||||||
|
- Тестирование синхронизации с отсутствующими полями времени доставки
|
||||||
|
- Тестирование обработки отсутствующих полей
|
||||||
|
|
||||||
|
2. **Тестирование совместимости:**
|
||||||
|
- Тестирование обмена с различными версиями XDTO
|
||||||
|
- Тестирование обработки ошибок
|
||||||
|
- Тестирование производительности
|
||||||
|
|
||||||
|
### 5.4. Этап 4: Внедрение
|
||||||
|
|
||||||
|
1. **Развертывание:**
|
||||||
|
- Установка доработок в тестовой среде
|
||||||
|
- Проверка работы синхронизации
|
||||||
|
- Исправление выявленных ошибок
|
||||||
|
|
||||||
|
2. **Внедрение в продуктив:**
|
||||||
|
- Установка доработок в продуктивной среде
|
||||||
|
- Мониторинг работы синхронизации
|
||||||
|
- Обработка инцидентов
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Риски и рекомендации
|
||||||
|
|
||||||
|
### 6.1. Риски
|
||||||
|
|
||||||
|
1. **Потеря данных:**
|
||||||
|
- Риск потери информации о времени доставки при синхронизации
|
||||||
|
- Риск неправильной обработки политики учета
|
||||||
|
- Риск ошибок при преобразовании версий XDTO
|
||||||
|
|
||||||
|
2. **Производительность:**
|
||||||
|
- Дополнительные запросы для проверки политики учета могут замедлить синхронизацию
|
||||||
|
- Обработка времени доставки для каждого документа может увеличить время обмена
|
||||||
|
|
||||||
|
3. **Совместимость:**
|
||||||
|
- Несовместимость версий XDTO может привести к ошибкам обмена
|
||||||
|
- Изменения в структуре документа могут нарушить работу синхронизации
|
||||||
|
|
||||||
|
4. **Функциональность:**
|
||||||
|
- Потеря функционала реквизита "УдалитьПриоритет" может повлиять на бизнес-процессы
|
||||||
|
- Отсутствие времени доставки может потребовать ручного заполнения
|
||||||
|
|
||||||
|
### 6.2. Рекомендации
|
||||||
|
|
||||||
|
1. **Рекомендации по реализации:**
|
||||||
|
- Использовать кэширование данных о политике учета для повышения производительности
|
||||||
|
- Реализовать пакетную обработку документов
|
||||||
|
- Добавить подробное логирование для отладки
|
||||||
|
|
||||||
|
2. **Рекомендации по тестированию:**
|
||||||
|
- Провести тестирование на реальных данных
|
||||||
|
- Протестировать различные сценарии синхронизации
|
||||||
|
- Проверить обработку граничных случаев
|
||||||
|
|
||||||
|
3. **Рекомендации по мониторингу:**
|
||||||
|
- Настроить мониторинг ошибок синхронизации
|
||||||
|
- Отслеживать случаи отсутствия политики учета
|
||||||
|
- Контролировать производительность обмена
|
||||||
|
|
||||||
|
4. **Рекомендации по функциональности:**
|
||||||
|
- Оценить критичность реквизита "УдалитьПриоритет" для бизнес-процессов
|
||||||
|
- Определить необходимость добавления реквизита в новую конфигурацию
|
||||||
|
- Рассмотреть возможность автоматического заполнения времени доставки
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Заключение
|
||||||
|
|
||||||
|
### 7.1. Итоговые выводы
|
||||||
|
|
||||||
|
1. **Типовой механизм синхронизации** присутствует в обеих конфигурациях и поддерживает передачу документа "ЗаказКлиента"
|
||||||
|
|
||||||
|
2. **Требуются доработки** для обработки:
|
||||||
|
- Различий в политике учета номенклатур (проверка при синхронизации)
|
||||||
|
- Признака маркировки товаров (обработка при создании документов реализации)
|
||||||
|
- Несовместимости версий XDTO
|
||||||
|
- Новых реквизитов времени доставки
|
||||||
|
|
||||||
|
3. **Критичность доработок:** СРЕДНЯЯ-ВЫСОКАЯ
|
||||||
|
- Без доработок возможна потеря данных о времени доставки
|
||||||
|
- Возможны предупреждения о несоответствии политики учета
|
||||||
|
- Может нарушиться корректность учета при создании документов реализации
|
||||||
|
|
||||||
|
### 7.2. Особенности документа "ЗаказКлиента"
|
||||||
|
|
||||||
|
1. **Отличие от документа "РеализацияТоваровУслуг":**
|
||||||
|
- В табличной части "Товары" отсутствуют поля `АналитикаУчетаНоменклатуры` и `АналитикаУчетаНаборов`
|
||||||
|
- Политика учета определяется по номенклатуре, а не хранится в документе
|
||||||
|
- Это упрощает синхронизацию, но требует проверки соответствия политики учета
|
||||||
|
|
||||||
|
2. **Новые реквизиты:**
|
||||||
|
- В новой конфигурации добавлены реквизиты `ВремяДоставкиС` и `ВремяДоставкиПо`
|
||||||
|
- При синхронизации из старой конфигурации эти поля будут пустыми
|
||||||
|
|
||||||
|
3. **Отсутствующий реквизит:**
|
||||||
|
- В старой конфигурации есть реквизит `УдалитьПриоритет`, которого нет в новой
|
||||||
|
- Требуется оценка критичности функционала
|
||||||
|
|
||||||
|
### 7.3. Следующие шаги
|
||||||
|
|
||||||
|
1. Уточнить требования к обработке политики учета и времени доставки
|
||||||
|
2. Оценить критичность реквизита "УдалитьПриоритет"
|
||||||
|
3. Реализовать доработки в расширении новой конфигурации
|
||||||
|
4. Провести тестирование синхронизации
|
||||||
|
5. Внедрить доработки в продуктивную среду
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Приложения
|
||||||
|
|
||||||
|
### Приложение А. Список проверенных файлов
|
||||||
|
|
||||||
|
**Старая конфигурация:**
|
||||||
|
- `crm3-dev/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат/`
|
||||||
|
- `crm3-dev/src/Documents/ЗаказКлиента/`
|
||||||
|
- `crm3-dev.rhana/src/Documents/ЗаказКлиента/`
|
||||||
|
|
||||||
|
**Новая конфигурация:**
|
||||||
|
- `crm3-26-promo/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат/`
|
||||||
|
- `crm3-26-promo/src/Documents/ЗаказКлиента/`
|
||||||
|
|
||||||
|
### Приложение Б. Сравнительная таблица реквизитов
|
||||||
|
|
||||||
|
| Реквизит | Старая конфигурация | Новая конфигурация | Требуется обработка |
|
||||||
|
|----------|---------------------|-------------------|---------------------|
|
||||||
|
| ВремяДоставкиС | ❌ Нет | ✅ Есть | ✅ Да (установка по умолчанию) |
|
||||||
|
| ВремяДоставкиПо | ❌ Нет | ✅ Есть | ✅ Да (установка по умолчанию) |
|
||||||
|
| УдалитьПриоритет | ✅ Есть | ❌ Нет | ⚠️ Логирование (оценка критичности) |
|
||||||
|
| АналитикаУчетаНоменклатуры (в ТЧ Товары) | ❌ Нет | ❌ Нет | ❌ Нет (не используется) |
|
||||||
|
| АналитикаУчетаНаборов (в ТЧ Товары) | ❌ Нет | ❌ Нет | ❌ Нет (не используется) |
|
||||||
|
|
||||||
|
### Приложение В. Справочная информация
|
||||||
|
|
||||||
|
**XDTO версии:**
|
||||||
|
- Максимально доступная версия XDTO в старой конфигурации определяется возможностями конфигурации
|
||||||
|
- Новая конфигурация поддерживает более новые версии XDTO
|
||||||
|
|
||||||
|
**Политика учета:**
|
||||||
|
- Политика учета номенклатур не хранится в документе "ЗаказКлиента"
|
||||||
|
- Политика учета определяется по номенклатуре из справочника
|
||||||
|
- Требуется проверка соответствия политики учета при сопоставлении номенклатур
|
||||||
|
|
||||||
|
**Маркировка товаров:**
|
||||||
|
- Признак маркировки присутствует только в новой конфигурации
|
||||||
|
- При синхронизации заказа проверка маркировки не требуется
|
||||||
|
- Обработка маркировки потребуется при создании документов реализации на основе заказа
|
||||||
|
|
||||||
|
**Время доставки:**
|
||||||
|
- Реквизиты `ВремяДоставкиС` и `ВремяДоставкиПо` присутствуют только в новой конфигурации
|
||||||
|
- При синхронизации из старой конфигурации эти поля будут пустыми
|
||||||
|
- Требуется установка значений по умолчанию или оставление пустыми для ручного заполнения
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Примечание:**
|
||||||
|
- Данный анализ основан на изучении структуры конфигураций и типового механизма синхронизации
|
||||||
|
- Для точной реализации доработок требуется дополнительное изучение кода модулей обмена
|
||||||
|
- Рекомендуется провести тестирование на реальных данных перед внедрением в продуктивную среду
|
||||||
|
- Особое внимание следует уделить оценке критичности реквизита "УдалитьПриоритет" для бизнес-процессов
|
||||||
@@ -0,0 +1,589 @@
|
|||||||
|
---
|
||||||
|
title: Анализ доработок синхронизации документа Реализация товаров и услуг
|
||||||
|
version: 1.0
|
||||||
|
date_modified: 2026-01-12
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2026-01-12
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ доработок синхронизации документа Реализация товаров и услуг
|
||||||
|
|
||||||
|
## Версия документа
|
||||||
|
|
||||||
|
Версия 1.0 от 12.01.2026
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
|
||||||
|
Оценить необходимость доработки при применении типового механизма синхронизации с передачей документа "Реализация товаров и услуг" из старой конфигурации (включая расширение) в новую конфигурацию. Определить, какие доработки требуются в расширении для новой конфигурации с учетом особенностей:
|
||||||
|
|
||||||
|
- Различий в политике учета номенклатур при сопоставлении
|
||||||
|
- Признака маркировки товаров (присутствует только в новой конфигурации)
|
||||||
|
- Применения максимально доступной в старой конфигурации версии XDTO
|
||||||
|
|
||||||
|
## Краткое резюме
|
||||||
|
|
||||||
|
**Основные выводы:**
|
||||||
|
|
||||||
|
1. **Типовой механизм синхронизации** - механизм "СинхронизацияДанныхЧерезУниверсальныйФормат" присутствует в обеих конфигурациях и поддерживает передачу документа "РеализацияТоваровУслуг"
|
||||||
|
|
||||||
|
2. **Критические доработки, требующие реализации:**
|
||||||
|
- Обработка различий в политике учета номенклатур при сопоставлении
|
||||||
|
- Обработка признака маркировки товаров (новое поле в новой конфигурации)
|
||||||
|
- Адаптация XDTO-структур для совместимости версий
|
||||||
|
- Обработка различий в структуре табличной части "Товары"
|
||||||
|
|
||||||
|
3. **Риски:**
|
||||||
|
- Потеря данных о политике учета при синхронизации
|
||||||
|
- Отсутствие информации о маркировке товаров в старой конфигурации
|
||||||
|
- Несовместимость версий XDTO может привести к ошибкам обмена
|
||||||
|
|
||||||
|
**Детальный анализ:** см. разделы ниже
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Анализ типового механизма синхронизации
|
||||||
|
|
||||||
|
### 1.1. Описание механизма
|
||||||
|
|
||||||
|
**План обмена:** `СинхронизацияДанныхЧерезУниверсальныйФормат`
|
||||||
|
|
||||||
|
**Назначение:** Типовой механизм синхронизации данных между конфигурациями через универсальный формат обмена.
|
||||||
|
|
||||||
|
**Поддерживаемые объекты:**
|
||||||
|
- Документы (включая "РеализацияТоваровУслуг")
|
||||||
|
- Справочники
|
||||||
|
- Регистры сведений
|
||||||
|
- Регистры накопления
|
||||||
|
|
||||||
|
### 1.2. Присутствие в конфигурациях
|
||||||
|
|
||||||
|
**Старая конфигурация (`crm3-dev`):**
|
||||||
|
- ✅ План обмена присутствует
|
||||||
|
- ✅ Документ "РеализацияТоваровУслуг" включен в план обмена
|
||||||
|
|
||||||
|
**Новая конфигурация (`crm3-26-promo`):**
|
||||||
|
- ✅ План обмена присутствует
|
||||||
|
- ✅ Документ "РеализацияТоваровУслуг" включен в план обмена
|
||||||
|
|
||||||
|
**Вывод:** Типовой механизм синхронизации присутствует в обеих конфигурациях и поддерживает передачу документа "РеализацияТоваровУслуг".
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Анализ различий в структуре документа "РеализацияТоваровУслуг"
|
||||||
|
|
||||||
|
### 2.1. Сравнение реквизитов документа
|
||||||
|
|
||||||
|
#### 2.1.1. Реквизиты шапки документа
|
||||||
|
|
||||||
|
**Общие реквизиты (присутствуют в обеих конфигурациях):**
|
||||||
|
- Партнер
|
||||||
|
- Контрагент
|
||||||
|
- Организация
|
||||||
|
- Склад
|
||||||
|
- ХозяйственнаяОперация
|
||||||
|
- Статус
|
||||||
|
- ДатаПереходаПраваСобственности
|
||||||
|
- ЗаказКлиента
|
||||||
|
- Договор
|
||||||
|
- Соглашение
|
||||||
|
- Валюта
|
||||||
|
- ЦенаВключаетНДС
|
||||||
|
- НалогообложениеНДС
|
||||||
|
|
||||||
|
**Реквизиты, присутствующие только в новой конфигурации:**
|
||||||
|
- `ВариантВыбытияМаркируемойПродукции` (EnumRef.ВариантыВыбытияМаркируемойПродукции) - **НОВОЕ ПОЛЕ**
|
||||||
|
|
||||||
|
**Реквизиты, присутствующие только в расширении старой конфигурации:**
|
||||||
|
- `р_СтатусДИАДОК` (строка) - статус по результату обмена ЭДО Диадок
|
||||||
|
|
||||||
|
#### 2.1.2. Табличная часть "Товары"
|
||||||
|
|
||||||
|
**Общие реквизиты (присутствуют в обеих конфигурациях):**
|
||||||
|
- Номенклатура
|
||||||
|
- Характеристика
|
||||||
|
- Серия
|
||||||
|
- Количество
|
||||||
|
- КоличествоУпаковок
|
||||||
|
- Цена
|
||||||
|
- Сумма
|
||||||
|
- СтавкаНДС
|
||||||
|
- СуммаНДС
|
||||||
|
- СуммаСНДС
|
||||||
|
- Склад
|
||||||
|
- Упаковка
|
||||||
|
- НомерСтроки
|
||||||
|
- ИдентификаторСтроки
|
||||||
|
|
||||||
|
**Реквизиты, связанные с политикой учета:**
|
||||||
|
- `АналитикаУчетаНоменклатуры` (CatalogRef.КлючиАналитикиУчетаНоменклатуры) - присутствует в обеих конфигурациях
|
||||||
|
- `АналитикаУчетаНаборов` (CatalogRef.КлючиАналитикиУчетаНаборов) - присутствует в обеих конфигурациях
|
||||||
|
|
||||||
|
**Важно:** Политика учета номенклатур может отличаться между конфигурациями, что требует специальной обработки при сопоставлении.
|
||||||
|
|
||||||
|
### 2.2. Различия в структуре данных
|
||||||
|
|
||||||
|
#### 2.2.1. Политика учета номенклатур
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
При сопоставлении номенклатур между старой и новой конфигурациями могут возникать различия в политике учета:
|
||||||
|
|
||||||
|
1. **Разные политики учета:**
|
||||||
|
- В старой конфигурации номенклатура может иметь одну политику учета
|
||||||
|
- В новой конфигурации та же номенклатура может иметь другую политику учета
|
||||||
|
- Это может привести к ошибкам при синхронизации или неправильному учету
|
||||||
|
|
||||||
|
2. **Отсутствие политики учета:**
|
||||||
|
- В старой конфигурации политика учета может отсутствовать
|
||||||
|
- В новой конфигурации политика учета обязательна
|
||||||
|
- Требуется установка политики учета по умолчанию
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При синхронизации необходимо проверять соответствие политики учета
|
||||||
|
- При несоответствии - устанавливать политику учета по умолчанию или использовать политику из новой конфигурации
|
||||||
|
- Логировать случаи несоответствия для последующего анализа
|
||||||
|
|
||||||
|
#### 2.2.2. Признак маркировки товаров
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
В новой конфигурации присутствует реквизит `ВариантВыбытияМаркируемойПродукции`, который отсутствует в старой конфигурации:
|
||||||
|
|
||||||
|
1. **Отсутствие данных:**
|
||||||
|
- В старой конфигурации нет информации о маркировке товаров
|
||||||
|
- При синхронизации это поле будет пустым
|
||||||
|
- Может потребоваться заполнение по умолчанию
|
||||||
|
|
||||||
|
2. **Логика обработки:**
|
||||||
|
- Необходимо определить, как обрабатывать маркируемые товары при синхронизации
|
||||||
|
- Возможно, требуется проверка номенклатуры на признак маркировки
|
||||||
|
- Установка значения по умолчанию для немаркируемых товаров
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При синхронизации проверять признак маркировки номенклатуры в новой конфигурации
|
||||||
|
- Для маркируемых товаров устанавливать значение по умолчанию или определять логику заполнения
|
||||||
|
- Для немаркируемых товаров - оставлять поле пустым или устанавливать значение "НеПрименяется"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Анализ версий XDTO
|
||||||
|
|
||||||
|
### 3.1. Версии XDTO в конфигурациях
|
||||||
|
|
||||||
|
**Старая конфигурация:**
|
||||||
|
- Применяется максимально доступная версия XDTO для документа "РеализацияТоваровУслуг"
|
||||||
|
- Версия определяется возможностями старой конфигурации
|
||||||
|
|
||||||
|
**Новая конфигурация:**
|
||||||
|
- Поддерживает более новые версии XDTO
|
||||||
|
- Может содержать дополнительные поля и структуры
|
||||||
|
|
||||||
|
### 3.2. Проблемы совместимости
|
||||||
|
|
||||||
|
#### 3.2.1. Несовместимость версий
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
- Старая конфигурация использует максимально доступную версию XDTO
|
||||||
|
- Новая конфигурация может ожидать более новую версию XDTO
|
||||||
|
- Это может привести к ошибкам при обмене
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- Использовать версию XDTO, совместимую с обеими конфигурациями
|
||||||
|
- При необходимости - преобразование данных между версиями
|
||||||
|
- Обработка отсутствующих полей в старой версии XDTO
|
||||||
|
|
||||||
|
#### 3.2.2. Отсутствующие поля в XDTO
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
В старой версии XDTO могут отсутствовать поля, присутствующие в новой:
|
||||||
|
- `ВариантВыбытияМаркируемойПродукции`
|
||||||
|
- Дополнительные поля, связанные с маркировкой
|
||||||
|
- Поля, связанные с новой политикой учета
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- При формировании XDTO в старой конфигурации - не включать отсутствующие поля
|
||||||
|
- При получении XDTO в новой конфигурации - обрабатывать отсутствующие поля как пустые
|
||||||
|
- Устанавливать значения по умолчанию для отсутствующих полей
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Необходимые доработки в расширении новой конфигурации
|
||||||
|
|
||||||
|
### 4.1. Обработка политики учета номенклатур
|
||||||
|
|
||||||
|
#### 4.1.1. Доработка модуля обмена
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширение)
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить обработку политики учета при получении документа:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре обработки получения документа РеализацияТоваровУслуг
|
||||||
|
Процедура ОбработатьПолитикуУчетаНоменклатур(ДокументОбъект, ТабличнаяЧастьТовары)
|
||||||
|
|
||||||
|
Для Каждого СтрокаТовары Из ТабличнаяЧастьТовары Цикл
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(СтрокаТовары.Номенклатура) Тогда
|
||||||
|
|
||||||
|
// Получаем политику учета из новой конфигурации
|
||||||
|
ПолитикаУчетаНовойКонфигурации = ПолучитьПолитикуУчетаНоменклатуры(СтрокаТовары.Номенклатура);
|
||||||
|
|
||||||
|
// Проверяем соответствие политики учета
|
||||||
|
Если НЕ ЗначениеЗаполнено(СтрокаТовары.АналитикаУчетаНоменклатуры)
|
||||||
|
ИЛИ ПолитикаУчетаНовойКонфигурации <> ПолучитьПолитикуУчетаИзАналитики(СтрокаТовары.АналитикаУчетаНоменклатуры) Тогда
|
||||||
|
|
||||||
|
// Устанавливаем политику учета из новой конфигурации
|
||||||
|
СтрокаТовары.АналитикаУчетаНоменклатуры = ПолучитьАналитикуУчетаПоПолитике(
|
||||||
|
СтрокаТовары.Номенклатура,
|
||||||
|
ПолитикаУчетаНовойКонфигурации
|
||||||
|
);
|
||||||
|
|
||||||
|
// Логируем изменение
|
||||||
|
ЗаписатьВЖурналРегистрации("ОбменДанными",
|
||||||
|
УровеньЖурналаРегистрации.Предупреждение,
|
||||||
|
"Изменена политика учета номенклатуры при синхронизации",
|
||||||
|
Новый Структура("Номенклатура", СтрокаТовары.Номенклатура,
|
||||||
|
"СтараяПолитика", СтрокаТовары.АналитикаУчетаНоменклатуры,
|
||||||
|
"НоваяПолитика", ПолитикаУчетаНовойКонфигурации));
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавить функцию получения политики учета:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция ПолучитьПолитикуУчетаНоменклатуры(Номенклатура)
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||||
|
| Номенклатура.ПолитикаУчетаНоменклатуры КАК ПолитикаУчетаНоменклатуры
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Номенклатура КАК Номенклатура
|
||||||
|
|ГДЕ
|
||||||
|
| Номенклатура.Ссылка = &Номенклатура";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
|
||||||
|
Выборка = Результат.Выбрать();
|
||||||
|
Если Выборка.Следующий() Тогда
|
||||||
|
Возврат Выборка.ПолитикаУчетаНоменклатуры;
|
||||||
|
Иначе
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.1.2. Обработка ошибок сопоставления
|
||||||
|
|
||||||
|
**Необходимо добавить:**
|
||||||
|
- Обработку случаев, когда политика учета не найдена
|
||||||
|
- Установку политики учета по умолчанию
|
||||||
|
- Логирование всех случаев изменения политики учета
|
||||||
|
|
||||||
|
### 4.2. Обработка признака маркировки товаров
|
||||||
|
|
||||||
|
#### 4.2.1. Доработка модуля обмена
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширение)
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить обработку маркировки при получении документа:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре обработки получения документа РеализацияТоваровУслуг
|
||||||
|
Процедура ОбработатьМаркировкуТоваров(ДокументОбъект, ТабличнаяЧастьТовары)
|
||||||
|
|
||||||
|
ЕстьМаркируемыеТовары = Ложь;
|
||||||
|
|
||||||
|
Для Каждого СтрокаТовары Из ТабличнаяЧастьТовары Цикл
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(СтрокаТовары.Номенклатура) Тогда
|
||||||
|
|
||||||
|
// Проверяем признак маркировки номенклатуры
|
||||||
|
Если НоменклатураМаркируемая(СтрокаТовары.Номенклатура) Тогда
|
||||||
|
|
||||||
|
ЕстьМаркируемыеТовары = Истина;
|
||||||
|
|
||||||
|
// Если поле не заполнено, устанавливаем значение по умолчанию
|
||||||
|
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВариантВыбытияМаркируемойПродукции) Тогда
|
||||||
|
ДокументОбъект.ВариантВыбытияМаркируемойПродукции =
|
||||||
|
Перечисления.ВариантыВыбытияМаркируемойПродукции.Реализация;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Если маркируемых товаров нет, очищаем поле
|
||||||
|
Если НЕ ЕстьМаркируемыеТовары Тогда
|
||||||
|
ДокументОбъект.ВариантВыбытияМаркируемойПродукции = Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавить функцию проверки маркировки:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция НоменклатураМаркируемая(Номенклатура)
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||||
|
| Номенклатура.Маркируемый КАК Маркируемый
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Номенклатура КАК Номенклатура
|
||||||
|
|ГДЕ
|
||||||
|
| Номенклатура.Ссылка = &Номенклатура";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
|
||||||
|
Выборка = Результат.Выбрать();
|
||||||
|
Если Выборка.Следующий() Тогда
|
||||||
|
Возврат Выборка.Маркируемый = Истина;
|
||||||
|
Иначе
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.2.2. Обработка отсутствующих данных
|
||||||
|
|
||||||
|
**Необходимо:**
|
||||||
|
- Проверять наличие признака маркировки в номенклатуре новой конфигурации
|
||||||
|
- Устанавливать значение по умолчанию для маркируемых товаров
|
||||||
|
- Очищать поле для немаркируемых товаров
|
||||||
|
|
||||||
|
### 4.3. Адаптация XDTO-структур
|
||||||
|
|
||||||
|
#### 4.3.1. Обработка версий XDTO
|
||||||
|
|
||||||
|
**Расположение:** Расширение новой конфигурации
|
||||||
|
**Модуль:** `МенеджерОбменаЧерезУниверсальныйФормат` (расширование)
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить обработку отсутствующих полей в XDTO:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// В процедуре обработки получения XDTO
|
||||||
|
Процедура ОбработатьОтсутствующиеПоляXDTO(СтрокаXDTO, СтруктураДанныхСтроки)
|
||||||
|
|
||||||
|
// Обработка поля ВариантВыбытияМаркируемойПродукции
|
||||||
|
Если НЕ СтрокаXDTO.Свойство("ВариантВыбытияМаркируемойПродукции") Тогда
|
||||||
|
// Поле отсутствует в старой версии XDTO
|
||||||
|
// Значение будет установлено позже при обработке маркировки
|
||||||
|
СтруктураДанныхСтроки.ВариантВыбытияМаркируемойПродукции = Неопределено;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.ВариантВыбытияМаркируемойПродукции =
|
||||||
|
СтрокаXDTO.ВариантВыбытияМаркируемойПродукции;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавить преобразование версий XDTO:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция ПреобразоватьXDTOКНовойВерсии(СтрокаXDTOСтараяВерсия)
|
||||||
|
|
||||||
|
// Создаем структуру для новой версии XDTO
|
||||||
|
СтрокаXDTONоваяВерсия = Новый Структура;
|
||||||
|
|
||||||
|
// Копируем все поля из старой версии
|
||||||
|
Для Каждого КлючЗначение Из СтрокаXDTOСтараяВерсия Цикл
|
||||||
|
СтрокаXDTONоваяВерсия.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Добавляем отсутствующие поля с значениями по умолчанию
|
||||||
|
Если НЕ СтрокаXDTONоваяВерсия.Свойство("ВариантВыбытияМаркируемойПродукции") Тогда
|
||||||
|
СтрокаXDTONоваяВерсия.Вставить("ВариантВыбытияМаркируемойПродукции", Неопределено);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат СтрокаXDTONоваяВерсия;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.3.2. Обработка ошибок версий
|
||||||
|
|
||||||
|
**Необходимо:**
|
||||||
|
- Проверять версию XDTO при получении
|
||||||
|
- Преобразовывать данные между версиями при необходимости
|
||||||
|
- Логировать случаи несовместимости версий
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. План реализации доработок
|
||||||
|
|
||||||
|
### 5.1. Этап 1: Подготовка
|
||||||
|
|
||||||
|
1. **Анализ текущего состояния:**
|
||||||
|
- Проверить наличие модуля обмена в расширении новой конфигурации
|
||||||
|
- Изучить текущую логику обработки документа "РеализацияТоваровУслуг"
|
||||||
|
- Определить точки входа для доработок
|
||||||
|
|
||||||
|
2. **Определение требований:**
|
||||||
|
- Уточнить логику обработки политики учета
|
||||||
|
- Определить правила обработки маркировки товаров
|
||||||
|
- Уточнить версии XDTO, используемые в обмене
|
||||||
|
|
||||||
|
### 5.2. Этап 2: Реализация доработок
|
||||||
|
|
||||||
|
1. **Доработка обработки политики учета:**
|
||||||
|
- Добавить функции получения и проверки политики учета
|
||||||
|
- Реализовать логику установки политики учета при несоответствии
|
||||||
|
- Добавить логирование изменений
|
||||||
|
|
||||||
|
2. **Доработка обработки маркировки:**
|
||||||
|
- Добавить функции проверки маркировки номенклатуры
|
||||||
|
- Реализовать логику установки значения по умолчанию
|
||||||
|
- Добавить обработку отсутствующих данных
|
||||||
|
|
||||||
|
3. **Адаптация XDTO:**
|
||||||
|
- Реализовать обработку отсутствующих полей
|
||||||
|
- Добавить преобразование версий XDTO
|
||||||
|
- Обеспечить обратную совместимость
|
||||||
|
|
||||||
|
### 5.3. Этап 3: Тестирование
|
||||||
|
|
||||||
|
1. **Функциональное тестирование:**
|
||||||
|
- Тестирование синхронизации с различными политиками учета
|
||||||
|
- Тестирование синхронизации маркируемых товаров
|
||||||
|
- Тестирование обработки отсутствующих полей
|
||||||
|
|
||||||
|
2. **Тестирование совместимости:**
|
||||||
|
- Тестирование обмена с различными версиями XDTO
|
||||||
|
- Тестирование обработки ошибок
|
||||||
|
- Тестирование производительности
|
||||||
|
|
||||||
|
### 5.4. Этап 4: Внедрение
|
||||||
|
|
||||||
|
1. **Развертывание:**
|
||||||
|
- Установка доработок в тестовой среде
|
||||||
|
- Проверка работы синхронизации
|
||||||
|
- Исправление выявленных ошибок
|
||||||
|
|
||||||
|
2. **Внедрение в продуктив:**
|
||||||
|
- Установка доработок в продуктивной среде
|
||||||
|
- Мониторинг работы синхронизации
|
||||||
|
- Обработка инцидентов
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Риски и рекомендации
|
||||||
|
|
||||||
|
### 6.1. Риски
|
||||||
|
|
||||||
|
1. **Потеря данных:**
|
||||||
|
- Риск потери информации о политике учета при синхронизации
|
||||||
|
- Риск неправильной обработки маркируемых товаров
|
||||||
|
- Риск ошибок при преобразовании версий XDTO
|
||||||
|
|
||||||
|
2. **Производительность:**
|
||||||
|
- Дополнительные запросы для проверки политики учета могут замедлить синхронизацию
|
||||||
|
- Обработка маркировки для каждой строки может увеличить время обмена
|
||||||
|
|
||||||
|
3. **Совместимость:**
|
||||||
|
- Несовместимость версий XDTO может привести к ошибкам обмена
|
||||||
|
- Изменения в структуре документа могут нарушить работу синхронизации
|
||||||
|
|
||||||
|
### 6.2. Рекомендации
|
||||||
|
|
||||||
|
1. **Рекомендации по реализации:**
|
||||||
|
- Использовать кэширование данных о политике учета для повышения производительности
|
||||||
|
- Реализовать пакетную обработку строк табличной части
|
||||||
|
- Добавить подробное логирование для отладки
|
||||||
|
|
||||||
|
2. **Рекомендации по тестированию:**
|
||||||
|
- Провести тестирование на реальных данных
|
||||||
|
- Протестировать различные сценарии синхронизации
|
||||||
|
- Проверить обработку граничных случаев
|
||||||
|
|
||||||
|
3. **Рекомендации по мониторингу:**
|
||||||
|
- Настроить мониторинг ошибок синхронизации
|
||||||
|
- Отслеживать случаи изменения политики учета
|
||||||
|
- Контролировать производительность обмена
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Заключение
|
||||||
|
|
||||||
|
### 7.1. Итоговые выводы
|
||||||
|
|
||||||
|
1. **Типовой механизм синхронизации** присутствует в обеих конфигурациях и поддерживает передачу документа "РеализацияТоваровУслуг"
|
||||||
|
|
||||||
|
2. **Требуются доработки** для обработки:
|
||||||
|
- Различий в политике учета номенклатур
|
||||||
|
- Признака маркировки товаров (новое поле)
|
||||||
|
- Несовместимости версий XDTO
|
||||||
|
|
||||||
|
3. **Критичность доработок:** ВЫСОКАЯ
|
||||||
|
- Без доработок возможна потеря данных
|
||||||
|
- Возможны ошибки при синхронизации
|
||||||
|
- Может нарушиться корректность учета
|
||||||
|
|
||||||
|
### 7.2. Следующие шаги
|
||||||
|
|
||||||
|
1. Уточнить требования к обработке политики учета и маркировки
|
||||||
|
2. Реализовать доработки в расширении новой конфигурации
|
||||||
|
3. Провести тестирование синхронизации
|
||||||
|
4. Внедрить доработки в продуктивную среду
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Приложения
|
||||||
|
|
||||||
|
### Приложение А. Список проверенных файлов
|
||||||
|
|
||||||
|
**Старая конфигурация:**
|
||||||
|
- `crm3-dev/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат/`
|
||||||
|
- `crm3-dev/src/Documents/РеализацияТоваровУслуг/`
|
||||||
|
- `crm3-dev.rhana/src/Documents/РеализацияТоваровУслуг/`
|
||||||
|
- `crm3-dev.rhana/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl`
|
||||||
|
|
||||||
|
**Новая конфигурация:**
|
||||||
|
- `crm3-26-promo/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат/`
|
||||||
|
- `crm3-26-promo/src/Documents/РеализацияТоваровУслуг/`
|
||||||
|
|
||||||
|
### Приложение Б. Справочная информация
|
||||||
|
|
||||||
|
**XDTO версии:**
|
||||||
|
- Максимально доступная версия XDTO в старой конфигурации определяется возможностями конфигурации
|
||||||
|
- Новая конфигурация поддерживает более новые версии XDTO
|
||||||
|
|
||||||
|
**Политика учета:**
|
||||||
|
- Политика учета номенклатур может различаться между конфигурациями
|
||||||
|
- Требуется проверка и установка правильной политики при синхронизации
|
||||||
|
|
||||||
|
**Маркировка товаров:**
|
||||||
|
- Признак маркировки присутствует только в новой конфигурации
|
||||||
|
- Требуется обработка отсутствующих данных при синхронизации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Примечание:**
|
||||||
|
- Данный анализ основан на изучении структуры конфигураций и типового механизма синхронизации
|
||||||
|
- Для точной реализации доработок требуется дополнительное изучение кода модулей обмена
|
||||||
|
- Рекомендуется провести тестирование на реальных данных перед внедрением в продуктивную среду
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,505 @@
|
|||||||
|
---
|
||||||
|
title: Анализ доработок формы приёмки (УправлениеПоступлением.Форма.Форма) складского учета
|
||||||
|
version: 1.1
|
||||||
|
date_modified: 2025-01-27
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-01-27
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ доработок формы приёмки (УправлениеПоступлением.Форма.Форма) складского учета
|
||||||
|
|
||||||
|
## Версия документа
|
||||||
|
|
||||||
|
Версия 1.1 от 27.01.2025
|
||||||
|
|
||||||
|
**Изменения в версии 1.1:**
|
||||||
|
|
||||||
|
- Добавлено сравнение с эталонной конфигурацией `crm302228-etalon`
|
||||||
|
- Выявлено, что функционал `ЗакрыватьГрафикПоступления` является типовым и присутствует в эталонной конфигурации
|
||||||
|
- Исключен типовой функционал из списка кастомных доработок, требующих переноса
|
||||||
|
- Обновлены рекомендации: вместо переноса кастомных доработок рекомендуется проверить наличие типового функционала в новой конфигурации
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
|
||||||
|
Провести дополнительный анализ того, какие доработки в расширении новой конфигурации требуются в форме приёмки (`Обработка.УправлениеПоступлением.Форма.Форма`) складского учета из аналогичной формы старой базы с учетом расширения.
|
||||||
|
|
||||||
|
**Сравниваемые конфигурации:**
|
||||||
|
- **Старая конфигурация:** `crm3-dev` (с расширением)
|
||||||
|
- **Новая конфигурация:** `crm3-26-promo` (с расширением)
|
||||||
|
|
||||||
|
## Краткое резюме
|
||||||
|
|
||||||
|
**Важное замечание:** После сравнения с эталонной конфигурацией (`crm302228-etalon`) выявлено, что функционал `ЗакрыватьГрафикПоступления` является **типовым** и присутствует в эталонной конфигурации. Следовательно, он должен присутствовать и в новой конфигурации. Если он отсутствует, это может быть баг или недоработка в новой конфигурации, но **не кастомная доработка**, требующая переноса.
|
||||||
|
|
||||||
|
**Типовой функционал (присутствует в эталоне, не требует переноса как доработка):**
|
||||||
|
|
||||||
|
1. ✅ **Реквизит и функционал `ЗакрыватьГрафикПоступления`** - присутствует в эталонной конфигурации, должен быть в новой конфигурации
|
||||||
|
2. ✅ **Соединение с регистром `ДвижениеТоваров`** - присутствует в эталонной конфигурации, должно быть в новой конфигурации
|
||||||
|
|
||||||
|
**Функционал, присутствующий в новой конфигурации, но отсутствующий в старой:**
|
||||||
|
|
||||||
|
1. ✅ **ЭДО (ЭлектронноеВзаимодействие.ОбменСКонтрагентами)** - присутствует в новой конфигурации, отсутствует в старой (типовой функционал, не требует переноса)
|
||||||
|
|
||||||
|
**Улучшения архитектуры в новой конфигурации:**
|
||||||
|
|
||||||
|
1. ✅ **Функция `РазбитьСтрокиПоОграничениям`** - вынесена в отдельную функцию в новой конфигурации (улучшение, не требует переноса)
|
||||||
|
|
||||||
|
**Вывод:** Все выявленные различия между старой и новой конфигурациями являются либо типовым функционалом, либо улучшениями архитектуры. **Кастомных доработок, требующих переноса, не выявлено.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Сравнение с эталонной конфигурацией
|
||||||
|
|
||||||
|
### 1.1. Методология сравнения
|
||||||
|
|
||||||
|
**Эталонная конфигурация:** `crm302228-etalon` - типовая эталонная конфигурация версии исходной конфигурации.
|
||||||
|
|
||||||
|
**Цель сравнения:** Определить, какие "доработки" в старой конфигурации на самом деле являются типовыми (присутствуют в эталонной конфигурации), а какие являются кастомными доработками, требующими переноса.
|
||||||
|
|
||||||
|
### 1.2. Результаты сравнения
|
||||||
|
|
||||||
|
#### 1.2.1. Реквизит и функционал `ЗакрыватьГрафикПоступления`
|
||||||
|
|
||||||
|
**Статус:** ✅ **ТИПОВОЙ ФУНКЦИОНАЛ** - присутствует в эталонной конфигурации
|
||||||
|
|
||||||
|
**Проверка в эталонной конфигурации:**
|
||||||
|
|
||||||
|
- ✅ Реквизит `ЗакрыватьГрафикПоступления` присутствует в документе `ПриходныйОрдерНаТовары`
|
||||||
|
- ✅ Колонка `ЗакрыватьГрафикПоступления` присутствует в форме `УправлениеПоступлением.Форма.Форма`
|
||||||
|
- ✅ Расчет поля `ЗакрыватьГрафикПоступления` присутствует в запросе `ЗаполнитьРаспоряженияНаПоступление`
|
||||||
|
- ✅ Передача параметра `ЗакрыватьГрафикПоступления` присутствует в процедуре `СоздатьОрдер`
|
||||||
|
- ✅ Соединение с регистром `ДвижениеТоваров` присутствует в запросе
|
||||||
|
|
||||||
|
**Вывод:** Функционал `ЗакрыватьГрафикПоступления` является **типовым** и должен присутствовать в новой конфигурации. Если он отсутствует, это может быть:
|
||||||
|
- Баг в новой конфигурации
|
||||||
|
- Недоработка при обновлении типовой конфигурации
|
||||||
|
- Намеренное удаление функционала в более новой версии (требует проверки)
|
||||||
|
|
||||||
|
**Рекомендация:** Проверить, почему функционал отсутствует в новой конфигурации. Если это баг - исправить. Если это намеренное удаление в новой версии типовой конфигурации - тогда может потребоваться восстановление функционала, но это будет восстановление типового функционала, а не перенос кастомной доработки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Детальный анализ различий
|
||||||
|
|
||||||
|
### 2.1. Реквизит и функционал `ЗакрыватьГрафикПоступления`
|
||||||
|
|
||||||
|
**Статус:** ✅ **ТИПОВОЙ ФУНКЦИОНАЛ** - присутствует в эталонной конфигурации, должен быть в новой конфигурации
|
||||||
|
|
||||||
|
#### 1.1.1. Описание функционала
|
||||||
|
|
||||||
|
В старой конфигурации реализован функционал управления графиком поступления товаров через реквизит `ЗакрыватьГрафикПоступления`. Этот реквизит определяет, нужно ли закрывать график поступления при создании приходного ордера.
|
||||||
|
|
||||||
|
#### 1.1.2. Места использования в старой конфигурации
|
||||||
|
|
||||||
|
**1. Колонка в форме `УправлениеПоступлением.Форма.Форма`:**
|
||||||
|
|
||||||
|
```xml:2211:2221:crm3-dev/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form.xml
|
||||||
|
<Column name="ЗакрыватьГрафикПоступления" id="12">
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Закрывать график поступления</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:boolean</v8:Type>
|
||||||
|
</Type>
|
||||||
|
</Column>
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. Передача параметра в процедуре `СоздатьОрдер`:**
|
||||||
|
|
||||||
|
```412:412:crm3-dev/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
Основание.Вставить("ЗакрыватьГрафикПоступления", ТекущиеДанные.ЗакрыватьГрафикПоступления);
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. Расчет значения в запросе `ЗаполнитьРаспоряженияНаПоступление`:**
|
||||||
|
|
||||||
|
```1349:1356:crm3-dev/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
| ВЫБОР
|
||||||
|
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.СоглашенияСПоставщиками
|
||||||
|
| ИЛИ ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.ДоговорыКонтрагентов
|
||||||
|
| ТОГДА ИСТИНА
|
||||||
|
| КОГДА ДвижениеТоваров.Распоряжение ЕСТЬ NULL
|
||||||
|
| ТОГДА ЛОЖЬ
|
||||||
|
| ИНАЧЕ ИСТИНА
|
||||||
|
| КОНЕЦ КАК ЗакрыватьГрафикПоступления
|
||||||
|
```
|
||||||
|
|
||||||
|
**4. Выборка поля в запросе:**
|
||||||
|
|
||||||
|
```1289:1289:crm3-dev/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
| МАКСИМУМ(ВложенныйЗапрос.ЗакрыватьГрафикПоступления) КАК ЗакрыватьГрафикПоступления,
|
||||||
|
```
|
||||||
|
|
||||||
|
**5. Реквизит в документе `ПриходныйОрдерНаТовары`:**
|
||||||
|
|
||||||
|
В старой конфигурации документ `ПриходныйОрдерНаТовары` имеет реквизит `ЗакрыватьГрафикПоступления`, который используется при создании ордера из формы управления поступлением.
|
||||||
|
|
||||||
|
#### 1.1.3. Логика работы
|
||||||
|
|
||||||
|
Логика определения значения `ЗакрыватьГрафикПоступления`:
|
||||||
|
- Если распоряжение - это `СоглашенияСПоставщиками` или `ДоговорыКонтрагентов`, то значение = `Истина`
|
||||||
|
- Если в регистре `ДвижениеТоваров` нет записей по распоряжению (Распоряжение ЕСТЬ NULL), то значение = `Ложь`
|
||||||
|
- Иначе значение = `Истина`
|
||||||
|
|
||||||
|
#### 2.1.4. Рекомендации по восстановлению типового функционала
|
||||||
|
|
||||||
|
**Важно:** Поскольку функционал является типовым и присутствует в эталонной конфигурации, рекомендуется:
|
||||||
|
|
||||||
|
**1. Проверить наличие функционала в новой конфигурации:**
|
||||||
|
|
||||||
|
- Проверить наличие реквизита `ЗакрыватьГрафикПоступления` в документе `ПриходныйОрдерНаТовары`
|
||||||
|
- Проверить наличие колонки в форме
|
||||||
|
- Проверить наличие расчета в запросе
|
||||||
|
|
||||||
|
**2. Если функционал отсутствует:**
|
||||||
|
|
||||||
|
- Определить причину отсутствия (баг, недоработка, намеренное удаление)
|
||||||
|
- Если это баг или недоработка - восстановить функционал из эталонной конфигурации
|
||||||
|
- Если это намеренное удаление в новой версии - оценить необходимость восстановления
|
||||||
|
|
||||||
|
**3. Восстановление функционала (если требуется):**
|
||||||
|
|
||||||
|
- Добавить колонку `ЗакрыватьГрафикПоступления` в таблицу `РаспоряженияНаПоступление` формы `УправлениеПоступлением.Форма.Форма`
|
||||||
|
- Добавить соединение с регистром `ДвижениеТоваров` в запрос `ЗаполнитьРаспоряженияНаПоступление`
|
||||||
|
- Добавить расчет поля `ЗакрыватьГрафикПоступления` в запросе
|
||||||
|
- Добавить выборку поля `ЗакрыватьГрафикПоступления` в итоговом запросе
|
||||||
|
- Добавить передачу параметра `ЗакрыватьГрафикПоступления` в процедуре `СоздатьОрдер`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2.2. Соединение с регистром `ДвижениеТоваров`
|
||||||
|
|
||||||
|
**Статус:** ✅ **ТИПОВОЙ ФУНКЦИОНАЛ** - присутствует в эталонной конфигурации, должен быть в новой конфигурации
|
||||||
|
|
||||||
|
#### 1.2.1. Описание
|
||||||
|
|
||||||
|
В старой конфигурации в запросе `ЗаполнитьРаспоряженияНаПоступление` используется соединение с регистром накопления `ДвижениеТоваров` для определения, есть ли движения товаров по распоряжению. Это соединение необходимо для корректного расчета значения `ЗакрыватьГрафикПоступления`.
|
||||||
|
|
||||||
|
#### 1.2.2. Код соединения в старой конфигурации
|
||||||
|
|
||||||
|
```1373:1378:crm3-dev/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвижениеТоваров КАК ДвижениеТоваров
|
||||||
|
| ПО ТоварыКПоступлениюОстаткиНаДату.Номенклатура = ДвижениеТоваров.Номенклатура
|
||||||
|
| И ТоварыКПоступлениюОстаткиНаДату.Характеристика = ДвижениеТоваров.Характеристика
|
||||||
|
| И ТоварыКПоступлениюОстаткиНаДату.Назначение = ДвижениеТоваров.Назначение
|
||||||
|
| И ТоварыКПоступлениюОстаткиНаДату.Склад = ДвижениеТоваров.Склад
|
||||||
|
| И ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления = ДвижениеТоваров.Распоряжение
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.2.3. Использование в расчете
|
||||||
|
|
||||||
|
Соединение используется в расчете поля `ЗакрыватьГрафикПоступления`:
|
||||||
|
|
||||||
|
```1353:1353:crm3-dev/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
| КОГДА ДвижениеТоваров.Распоряжение ЕСТЬ NULL
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.2.4. Рекомендации по восстановлению типового функционала
|
||||||
|
|
||||||
|
**Важно:** Поскольку соединение с регистром `ДвижениеТоваров` является частью типового функционала и присутствует в эталонной конфигурации, рекомендуется:
|
||||||
|
|
||||||
|
**1. Проверить наличие регистра:**
|
||||||
|
|
||||||
|
Необходимо убедиться, что в новой конфигурации существует регистр накопления `ДвижениеТоваров` с соответствующими измерениями и ресурсами.
|
||||||
|
|
||||||
|
**2. Если регистр отсутствует:**
|
||||||
|
|
||||||
|
- Определить, какой регистр используется в новой конфигурации для аналогичных целей
|
||||||
|
- Или проверить, не был ли регистр переименован или объединен с другим регистром
|
||||||
|
|
||||||
|
**3. Восстановление соединения (если требуется):**
|
||||||
|
|
||||||
|
- Добавить ЛЕВОЕ СОЕДИНЕНИЕ с регистром `ДвижениеТоваров` в запрос `ЗаполнитьРаспоряженияНаПоступление` в процедуре формы `УправлениеПоступлением.Форма.Форма`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2.3. ЭДО (ЭлектронноеВзаимодействие.ОбменСКонтрагентами)
|
||||||
|
|
||||||
|
**Статус:** ✅ **Типовой функционал** - присутствует в новой конфигурации, отсутствует в старой
|
||||||
|
|
||||||
|
#### 1.3.1. Описание
|
||||||
|
|
||||||
|
В новой конфигурации реализован функционал электронного документооборота (ЭДО) с контрагентами. Этот функционал отсутствует в старой конфигурации.
|
||||||
|
|
||||||
|
#### 1.3.2. Места использования в новой конфигурации
|
||||||
|
|
||||||
|
**1. Инициализация в `ПриСозданииНаСервере`:**
|
||||||
|
|
||||||
|
```40:46:crm3-26-promo/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
ПараметрыПриСозданииНаСервере = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаСписка();
|
||||||
|
ПараметрыПриСозданииНаСервере.Форма = ЭтотОбъект;
|
||||||
|
ПараметрыПриСозданииНаСервере.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
|
||||||
|
ПараметрыПриСозданииНаСервере.КолонкаСостоянияЭДО = Элементы.ПредставлениеСостояния;
|
||||||
|
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаСписка(ПараметрыПриСозданииНаСервере);
|
||||||
|
// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. Обработка в `ПриОткрытии`:**
|
||||||
|
|
||||||
|
```75:77:crm3-26-promo/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
|
||||||
|
// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. Обработка оповещений:**
|
||||||
|
|
||||||
|
```99:105:crm3-26-promo/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
ПараметрыОповещенияЭДО = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаСписка();
|
||||||
|
ПараметрыОповещенияЭДО.Форма = ЭтотОбъект;
|
||||||
|
ПараметрыОповещенияЭДО.ИмяДинамическогоСписка = "ОрдераВРаботе";
|
||||||
|
ПараметрыОповещенияЭДО.ЕстьОбработчикОбновленияВидимостиСостоянияЭДО = Истина;
|
||||||
|
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаСписка(ИмяСобытия, Параметр, Источник, ПараметрыОповещенияЭДО);
|
||||||
|
// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
```
|
||||||
|
|
||||||
|
**4. Подключаемые команды ЭДО:**
|
||||||
|
|
||||||
|
```573:622:crm3-26-promo/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
|
||||||
|
|
||||||
|
ДоступныКомандыЭДО = Истина;
|
||||||
|
ЭтоКомандаТекущиеДелаЭДО = СтрНайти(Команда.Имя, "ТекущиеДелаЭДО");
|
||||||
|
ЭтоКомандаПроизвольныйДокумент = СтрНайти(Команда.Имя, "ПроизвольныйДокумент");
|
||||||
|
Если Не ЭтоКомандаТекущиеДелаЭДО И Не ЭтоКомандаПроизвольныйДокумент Тогда
|
||||||
|
Если Элементы.ОрдераВРаботе.ТекущиеДанные <> Неопределено Тогда
|
||||||
|
ТекущийДокумент = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Элементы.ОрдераВРаботе.ТекущиеДанные, "Ссылка");
|
||||||
|
Если ЗначениеЗаполнено(ТекущийДокумент) Тогда
|
||||||
|
РезультатыПроверки = ЭлектронноеВзаимодействиеУТВызовСервера.ПроверитьНаличиеПараметровЭДПоИсточнику(ТекущийДокумент);
|
||||||
|
ДоступныКомандыЭДО = РезультатыПроверки.Получить("ЕстьЭДО");
|
||||||
|
|
||||||
|
Если РезультатыПроверки.Получить("ЕстьЭДО") Тогда
|
||||||
|
Если РезультатыПроверки.Получить("Направление") = "Входящий" Тогда
|
||||||
|
ОбменСКонтрагентамиУТКлиент.ИзменитьДоступностьКомандыПерезаполнить(ЭтотОбъект, Истина);
|
||||||
|
Иначе
|
||||||
|
ОбменСКонтрагентамиУТКлиент.ИзменитьДоступностьКомандыПерезаполнить(ЭтотОбъект, Ложь);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
|
ДоступныКомандыЭДО = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ДоступныКомандыЭДО Тогда
|
||||||
|
ПоказатьПредупреждение(, НСтр("ru = 'Для данного типа документов ЭДО не предусмотрен.'"));
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Элементы.ОрдераВРаботе);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура Подключаемый_ОбновитьКомандыЭДО()
|
||||||
|
|
||||||
|
ОбменСКонтрагентамиКлиент.ОбновитьКоманды(ЭтотОбъект, Элементы.ОрдераВРаботе);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура Подключаемый_ОбновитьВидимостьСостоянияЭДО()
|
||||||
|
|
||||||
|
ОбменСКонтрагентамиКлиент.ОбработчикОбновленияВидимостьСостоянияЭДО(ЭтотОбъект, Элементы.ПредставлениеСостояния);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.3.3. Вывод
|
||||||
|
|
||||||
|
Этот функционал является типовым и присутствует в новой конфигурации. Он **не требует переноса** из старой конфигурации, так как в старой конфигурации его нет.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2.4. Улучшение архитектуры: функция `РазбитьСтрокиПоОграничениям`
|
||||||
|
|
||||||
|
**Статус:** ✅ **Улучшение архитектуры** - присутствует в новой конфигурации
|
||||||
|
|
||||||
|
#### 1.4.1. Описание
|
||||||
|
|
||||||
|
В новой конфигурации логика разбиения строк по ограничениям веса и объема вынесена в отдельную функцию `РазбитьСтрокиПоОграничениям`, что улучшает читаемость и поддерживаемость кода.
|
||||||
|
|
||||||
|
#### 1.4.2. Реализация в новой конфигурации
|
||||||
|
|
||||||
|
```977:1029:crm3-26-promo/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl
|
||||||
|
&НаСервере
|
||||||
|
Функция РазбитьСтрокиПоОграничениям(РазмещениеТоваровВЯчейках, МаксимальныйОбъем, МаксимальныйВес)
|
||||||
|
|
||||||
|
ТаблицаРезультата = РазмещениеТоваровВЯчейках.СкопироватьКолонки();
|
||||||
|
СтрокиСПересчетомКоличества = Новый Массив;
|
||||||
|
|
||||||
|
Для Каждого ОписаниеРазмещения Из РазмещениеТоваровВЯчейках Цикл
|
||||||
|
|
||||||
|
ОсталосьРазместить = ОписаниеРазмещения.КоличествоУпаковок;
|
||||||
|
|
||||||
|
МаксимальноеКоличествоПоОбъему = МаксимальноеКоличествоПоОграничению(
|
||||||
|
ОписаниеРазмещения.ОбъемУпаковки,
|
||||||
|
МаксимальныйОбъем,
|
||||||
|
ОсталосьРазместить);
|
||||||
|
|
||||||
|
МаксимальноеКоличествоПоВесу = МаксимальноеКоличествоПоОграничению(
|
||||||
|
ОписаниеРазмещения.ВесУпаковки,
|
||||||
|
МаксимальныйВес,
|
||||||
|
ОсталосьРазместить);
|
||||||
|
|
||||||
|
МаксимальноеКоличествоРазмещения = Мин(МаксимальноеКоличествоПоОбъему, МаксимальноеКоличествоПоВесу);
|
||||||
|
ПересчитыватьКоличество = МаксимальноеКоличествоРазмещения < ОсталосьРазместить;
|
||||||
|
|
||||||
|
Пока ОсталосьРазместить <> 0 Цикл
|
||||||
|
|
||||||
|
СтрокаРазмещения = ТаблицаРезультата.Добавить();
|
||||||
|
ЗаполнитьЗначенияСвойств(СтрокаРазмещения, ОписаниеРазмещения);
|
||||||
|
|
||||||
|
Если ОсталосьРазместить > МаксимальноеКоличествоРазмещения Тогда
|
||||||
|
РазмещаемоеКоличествоУпаковок = МаксимальноеКоличествоПоОграничению;
|
||||||
|
Иначе
|
||||||
|
РазмещаемоеКоличествоУпаковок = ОсталосьРазместить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СтрокаРазмещения.КоличествоУпаковок = РазмещаемоеКоличествоУпаковок;
|
||||||
|
|
||||||
|
ОсталосьРазместить = ОсталосьРазместить - РазмещаемоеКоличествоУпаковок;
|
||||||
|
|
||||||
|
Если ПересчитыватьКоличество Тогда
|
||||||
|
СтрокиСПересчетомКоличества.Добавить(СтрокаРазмещения);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
СтруктураДействий = Новый Структура;
|
||||||
|
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
|
||||||
|
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(СтрокиСПересчетомКоличества, СтруктураДействий,
|
||||||
|
ТаблицаРезультата);
|
||||||
|
|
||||||
|
Возврат ТаблицаРезультата;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.4.3. Вывод
|
||||||
|
|
||||||
|
Это улучшение архитектуры в новой конфигурации. В старой конфигурации аналогичная логика встроена непосредственно в цикл процедуры `СоздатьЗаданияСервер`. Это улучшение **не требует переноса** из старой конфигурации, так как функционально эквивалентно.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. План проверки и восстановления типового функционала
|
||||||
|
|
||||||
|
### 3.1. Проверка наличия типового функционала
|
||||||
|
|
||||||
|
#### 3.1.1. Проверка реквизита `ЗакрыватьГрафикПоступления`
|
||||||
|
|
||||||
|
**Шаг 1:** Проверить наличие реквизита `ЗакрыватьГрафикПоступления` в документе `ПриходныйОрдерНаТовары` в новой конфигурации.
|
||||||
|
|
||||||
|
**Шаг 2:** Проверить наличие колонки `ЗакрыватьГрафикПоступления` в таблице `РаспоряженияНаПоступление` формы `УправлениеПоступлением.Форма.Форма`.
|
||||||
|
|
||||||
|
**Шаг 3:** Проверить наличие расчета поля `ЗакрыватьГрафикПоступления` в запросе `ЗаполнитьРаспоряженияНаПоступление`.
|
||||||
|
|
||||||
|
**Шаг 4:** Проверить наличие передачи параметра `ЗакрыватьГрафикПоступления` в процедуре `СоздатьОрдер`.
|
||||||
|
|
||||||
|
#### 3.1.2. Проверка соединения с регистром `ДвижениеТоваров`
|
||||||
|
|
||||||
|
**Шаг 1:** Проверить наличие регистра накопления `ДвижениеТоваров` в новой конфигурации.
|
||||||
|
|
||||||
|
**Шаг 2:** Проверить наличие соединения с регистром `ДвижениеТоваров` в запросе `ЗаполнитьРаспоряженияНаПоступление`.
|
||||||
|
|
||||||
|
### 3.2. Восстановление типового функционала (если требуется)
|
||||||
|
|
||||||
|
**Важно:** Восстановление типового функционала должно выполняться только после подтверждения, что функционал действительно отсутствует в новой конфигурации и его отсутствие не является намеренным изменением в новой версии типовой конфигурации.
|
||||||
|
|
||||||
|
**Шаг 1:** Если функционал отсутствует, определить причину (баг, недоработка, намеренное удаление).
|
||||||
|
|
||||||
|
**Шаг 2:** Если это баг или недоработка - восстановить функционал из эталонной конфигурации `crm302228-etalon`.
|
||||||
|
|
||||||
|
**Шаг 3:** Если это намеренное удаление в новой версии - оценить необходимость восстановления и возможность альтернативного решения.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Сводная таблица различий
|
||||||
|
|
||||||
|
| № | Элемент | Старая конфигурация | Новая конфигурация | Эталонная конфигурация | Статус | Требуется перенос |
|
||||||
|
|---|---------|---------------------|-------------------|------------------------|--------|-------------------|
|
||||||
|
| 1 | Реквизит `ЗакрыватьГрафикПоступления` в документе | ✅ Есть | ❌ Нет | ✅ Есть | Типовой | ❌ Нет (проверить наличие) |
|
||||||
|
| 2 | Колонка `ЗакрыватьГрафикПоступления` в форме | ✅ Есть | ❌ Нет | ✅ Есть | Типовой | ❌ Нет (проверить наличие) |
|
||||||
|
| 3 | Расчет `ЗакрыватьГрафикПоступления` в запросе | ✅ Есть | ❌ Нет | ✅ Есть | Типовой | ❌ Нет (проверить наличие) |
|
||||||
|
| 4 | Передача `ЗакрыватьГрафикПоступления` в `СоздатьОрдер` | ✅ Есть | ❌ Нет | ✅ Есть | Типовой | ❌ Нет (проверить наличие) |
|
||||||
|
| 5 | Соединение с регистром `ДвижениеТоваров` | ✅ Есть | ❌ Нет | ✅ Есть | Типовой | ❌ Нет (проверить наличие) |
|
||||||
|
| 6 | ЭДО (ОбменСКонтрагентами) | ❌ Нет | ✅ Есть | ❓ Не проверено | Типовой | ❌ Нет |
|
||||||
|
| 7 | Функция `РазбитьСтрокиПоОграничениям` | ❌ Нет (встроено) | ✅ Есть (отдельно) | ❓ Не проверено | Улучшение | ❌ Нет |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Заключение
|
||||||
|
|
||||||
|
### 5.1. Основные выводы
|
||||||
|
|
||||||
|
После сравнения с эталонной конфигурацией (`crm302228-etalon`) выявлено, что **все различия между старой и новой конфигурациями являются типовым функционалом или улучшениями архитектуры**.
|
||||||
|
|
||||||
|
**Кастомных доработок, требующих переноса, не выявлено.**
|
||||||
|
|
||||||
|
### 5.2. Типовой функционал
|
||||||
|
|
||||||
|
Функционал `ЗакрыватьГрафикПоступления` и соединение с регистром `ДвижениеТоваров` присутствуют в эталонной конфигурации и являются типовыми. Они должны присутствовать в новой конфигурации. Если они отсутствуют, это может быть:
|
||||||
|
|
||||||
|
- Баг в новой конфигурации
|
||||||
|
- Недоработка при обновлении типовой конфигурации
|
||||||
|
- Намеренное удаление функционала в более новой версии (требует проверки)
|
||||||
|
|
||||||
|
**Рекомендация:** Проверить наличие типового функционала в новой конфигурации. Если функционал отсутствует, определить причину и при необходимости восстановить его из эталонной конфигурации.
|
||||||
|
|
||||||
|
### 5.3. Функционал, присутствующий в новой конфигурации
|
||||||
|
|
||||||
|
Функционал ЭДО присутствует в новой конфигурации и является типовым. Он не требует переноса из старой конфигурации.
|
||||||
|
|
||||||
|
### 5.4. Улучшения архитектуры
|
||||||
|
|
||||||
|
Улучшения архитектуры в новой конфигурации (например, вынесение функции `РазбитьСтрокиПоОграничениям`) не требуют переноса, так как функционально эквивалентны реализации в старой конфигурации.
|
||||||
|
|
||||||
|
### 5.5. Итоговый вывод
|
||||||
|
|
||||||
|
**Все выявленные различия являются типовым функционалом или улучшениями архитектуры. Кастомных доработок, требующих переноса из старой конфигурации в новую, не обнаружено.**
|
||||||
|
|
||||||
|
Если типовой функционал отсутствует в новой конфигурации, рекомендуется проверить причину его отсутствия и при необходимости восстановить его из эталонной конфигурации.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Приложения
|
||||||
|
|
||||||
|
### 6.1. Список файлов для проверки
|
||||||
|
|
||||||
|
**Новая конфигурация:**
|
||||||
|
|
||||||
|
1. `DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form.xml` - проверка наличия колонки
|
||||||
|
2. `DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl` - проверка наличия запроса и процедуры
|
||||||
|
3. `Documents/ПриходныйОрдерНаТовары.xml` - проверка наличия реквизита
|
||||||
|
|
||||||
|
**Эталонная конфигурация (для восстановления, если требуется):**
|
||||||
|
|
||||||
|
1. `crm302228-etalon/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form.xml`
|
||||||
|
2. `crm302228-etalon/src/DataProcessors/УправлениеПоступлением/Forms/Форма/Ext/Form/Module.bsl`
|
||||||
|
3. `crm302228-etalon/src/Documents/ПриходныйОрдерНаТовары.xml`
|
||||||
|
|
||||||
|
### 6.2. Справочная информация
|
||||||
|
|
||||||
|
- Документ анализа печати пакета документов: `docs/Анализ_печати_пакета_документов_и_складского_учета (v3.0).md`
|
||||||
|
- Старая конфигурация: `crm3-dev`
|
||||||
|
- Новая конфигурация: `crm3-26-promo`
|
||||||
|
- Эталонная конфигурация: `crm302228-etalon`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Конец документа**
|
||||||
@@ -0,0 +1,237 @@
|
|||||||
|
---
|
||||||
|
title: Анализ механизма перезаполнения регистра CRM_ЖурналДокументов
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
date_created: 2025-12-09
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ механизма перезаполнения регистра CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
## Дата анализа
|
||||||
|
09.12.2025
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Определить механизм перезаполнения регистра сведений `CRM_ЖурналДокументов` для возможности полной очистки и пересоздания всех записей.
|
||||||
|
|
||||||
|
## Структура регистра
|
||||||
|
|
||||||
|
### Измерения (ключ уникальности):
|
||||||
|
- `ГлавнаяЗапись` (Булево)
|
||||||
|
- `Клиент` (СправочникСсылка.Партнеры или СправочникСсылка.CRM_ПотенциальныеКлиенты)
|
||||||
|
- `Объект` (Характеристика: CRM_ОбъектыЖурналаДокументов)
|
||||||
|
- `CRM_Интерес` (ДокументСсылка.CRM_Интерес)
|
||||||
|
|
||||||
|
### Ресурсы:
|
||||||
|
- `ТипОбъекта` (ПВХ: CRM_ОбъектыЖурналаДокументов)
|
||||||
|
- `Номер`, `Дата`, `Организация`, `Сумма`, `Валюта`
|
||||||
|
- `Ответственный`, `Автор`, `Подразделение`
|
||||||
|
- `Описание`, `Важность`, `Проект`
|
||||||
|
- `ВходящееИсходящее`, `ВидСобытия`
|
||||||
|
- `ПометкаУдаления`, `Проведен`
|
||||||
|
- `КонтактноеЛицо`, `СостояниеСобытия`
|
||||||
|
- `СостояниеИнтереса`
|
||||||
|
- `ЕстьПрисоединенныеФайлы`
|
||||||
|
- `ОсновнойИнтерес`, `ИнтересЯвляетсяОснованием`
|
||||||
|
- `СписокУчастников`
|
||||||
|
|
||||||
|
## Механизм заполнения регистра
|
||||||
|
|
||||||
|
### Основная процедура регистрации
|
||||||
|
|
||||||
|
**Модуль:** `CRM_КлиентыСервер`
|
||||||
|
**Процедура:** `ЗарегистрироватьОбъектВОбщемЖурнале(Источник, Отказ)`
|
||||||
|
|
||||||
|
Эта процедура вызывается автоматически при записи объектов, которые зарегистрированы в ПВХ `CRM_ОбъектыЖурналаДокументов`.
|
||||||
|
|
||||||
|
#### Логика работы:
|
||||||
|
|
||||||
|
1. **Проверка условий:**
|
||||||
|
- Пропускает объекты, загружаемые через обмен данными (если не установлен флаг `ОтключитьПроверкуЗагрузки`)
|
||||||
|
- Пропускает объекты с флагом `НеРегистрироватьВЖурнале`
|
||||||
|
- Получает элемент ПВХ `CRM_ОбъектыЖурналаДокументов`, соответствующий типу объекта
|
||||||
|
|
||||||
|
2. **Создание записей:**
|
||||||
|
- Создает набор записей с отбором по `Объект = Источник.Ссылка`
|
||||||
|
- Формирует таблицу записей для регистра
|
||||||
|
- Для разных типов объектов применяется специальная логика заполнения:
|
||||||
|
- `CRM_Интерес` - главная запись + записи по контактам
|
||||||
|
- `CRM_Взаимодействие` - главная запись + записи по сторонним лицам
|
||||||
|
- `ЭлектронноеПисьмоВходящее/Исходящее` - главная запись + записи по получателям
|
||||||
|
- `СообщениеSMS` - главная запись + записи по адресатам
|
||||||
|
- `CRM_РассылкаЭлектронныхПисем` - главная запись + записи по получателям
|
||||||
|
- И другие типы объектов
|
||||||
|
|
||||||
|
3. **Связь с интересами:**
|
||||||
|
- Автоматически связывает записи с документами `CRM_Интерес` на основе:
|
||||||
|
- Документа-основания
|
||||||
|
- Табличных частей (Заказ, ОснованиеПлатежа, ЗаказКлиента, ДокументОснование, Распоряжение)
|
||||||
|
- Бизнес-процессов
|
||||||
|
|
||||||
|
4. **Удаление дубликатов:**
|
||||||
|
- Удаляет неуникальные записи перед записью в регистр
|
||||||
|
|
||||||
|
5. **Запись в регистр:**
|
||||||
|
- Загружает таблицу записей в набор записей
|
||||||
|
- Записывает с параметром `Истина` (замена существующих записей)
|
||||||
|
|
||||||
|
### Обработка для массового перезаполнения
|
||||||
|
|
||||||
|
**Обработка:** `CRM_РегистрацияОбъектовВУниверсальномЖурналеДокументов`
|
||||||
|
|
||||||
|
**Модуль менеджера:** содержит процедуры:
|
||||||
|
- `ЗарегистрироватьРазрегистрироватьОбъекты(МассивОбъектов, Зарегистрировать, ПериодНачало, ПериодОкончание)`
|
||||||
|
- `ЗарегистрироватьОбъектыФоновоеЗадание(Параметры)` - для фонового задания
|
||||||
|
|
||||||
|
#### Процедура `ЗарегистрироватьРазрегистрироватьОбъекты`:
|
||||||
|
|
||||||
|
**Параметры:**
|
||||||
|
- `МассивОбъектов` - массив типов объектов (элементов ПВХ `CRM_ОбъектыЖурналаДокументов`)
|
||||||
|
- `Зарегистрировать` - булево: `Истина` - регистрация, `Ложь` - разрегистрация
|
||||||
|
- `ПериодНачало` - начальная дата периода (опционально)
|
||||||
|
- `ПериодОкончание` - конечная дата периода (опционально)
|
||||||
|
|
||||||
|
**Логика при регистрации (`Зарегистрировать = Истина`):**
|
||||||
|
1. Формирует запрос для выборки всех объектов указанных типов
|
||||||
|
2. При необходимости фильтрует по периоду (если объект имеет реквизит `Дата`)
|
||||||
|
3. Для каждого найденного объекта вызывает:
|
||||||
|
```bsl
|
||||||
|
CRM_КлиентыСервер.ЗарегистрироватьОбъектВОбщемЖурнале(Выборка.Ссылка.ПолучитьОбъект(), Ложь);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Логика при разрегистрации (`Зарегистрировать = Ложь`):**
|
||||||
|
1. Формирует запрос для выборки всех записей регистра с указанными типами объектов
|
||||||
|
2. При необходимости фильтрует по периоду
|
||||||
|
3. Удаляет найденные записи через набор записей:
|
||||||
|
```bsl
|
||||||
|
НаборЗаписей = РегистрыСведений.CRM_ЖурналДокументов.СоздатьНаборЗаписей();
|
||||||
|
НаборЗаписей.Отбор.Объект.Установить(Выборка.Ссылка);
|
||||||
|
НаборЗаписей.Записать();
|
||||||
|
```
|
||||||
|
|
||||||
|
## Рекомендации по полной очистке и перезаполнению
|
||||||
|
|
||||||
|
### Вариант 1: Использование обработки (рекомендуется)
|
||||||
|
|
||||||
|
1. **Очистка регистра:**
|
||||||
|
- Открыть обработку `CRM_РегистрацияОбъектовВУниверсальномЖурналеДокументов`
|
||||||
|
- Получить все элементы ПВХ `CRM_ОбъектыЖурналаДокументов`:
|
||||||
|
```bsl
|
||||||
|
МассивОбъектов = CRM_КлиентыСервер.ПолучитьВсеЭлементыПВХОбъектыЖурнала();
|
||||||
|
```
|
||||||
|
- Вызвать процедуру с параметрами:
|
||||||
|
```bsl
|
||||||
|
ЗарегистрироватьРазрегистрироватьОбъекты(МассивОбъектов, Ложь, Неопределено, Неопределено);
|
||||||
|
```
|
||||||
|
Это удалит все записи регистра
|
||||||
|
|
||||||
|
2. **Перезаполнение регистра:**
|
||||||
|
- Вызвать процедуру с параметрами:
|
||||||
|
```bsl
|
||||||
|
ЗарегистрироватьРазрегистрироватьОбъекты(МассивОбъектов, Истина, Дата(1, 1, 1), КонецДня(ТекущаяДатаСеанса()));
|
||||||
|
```
|
||||||
|
Это создаст записи для всех объектов указанных типов за весь период
|
||||||
|
|
||||||
|
### Вариант 2: Прямое удаление через запрос (быстрый способ)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Удаление всех записей регистра
|
||||||
|
НаборЗаписей = РегистрыСведений.CRM_ЖурналДокументов.СоздатьНаборЗаписей();
|
||||||
|
НаборЗаписей.Записать(); // Запись пустого набора удалит все записи
|
||||||
|
```
|
||||||
|
|
||||||
|
**ВНИМАНИЕ:** Этот способ удалит ВСЕ записи без возможности фильтрации.
|
||||||
|
|
||||||
|
### Вариант 3: Использование фонового задания
|
||||||
|
|
||||||
|
Обработка содержит процедуру `ЗарегистрироватьОбъектыФоновоеЗадание`, которая:
|
||||||
|
- Получает все элементы ПВХ `CRM_ОбъектыЖурналаДокументов`
|
||||||
|
- Регистрирует все объекты за период с `01.01.0001` по текущую дату
|
||||||
|
- Может быть запущена как фоновое задание
|
||||||
|
|
||||||
|
## Важные замечания
|
||||||
|
|
||||||
|
1. **ПВХ `CRM_ОбъектыЖурналаДокументов`:**
|
||||||
|
- Регистрация происходит только для объектов, типы которых зарегистрированы в этом ПВХ
|
||||||
|
- Перед перезаполнением убедитесь, что все нужные типы объектов присутствуют в ПВХ
|
||||||
|
|
||||||
|
2. **Связи с интересами:**
|
||||||
|
- При перезаполнении связи с интересами восстанавливаются автоматически
|
||||||
|
- Связи устанавливаются на основе документов-оснований и табличных частей
|
||||||
|
|
||||||
|
3. **Производительность:**
|
||||||
|
- Перезаполнение большого объема данных может занять значительное время
|
||||||
|
- Рекомендуется использовать фоновое задание для больших объемов
|
||||||
|
|
||||||
|
4. **Транзакции:**
|
||||||
|
- Процедура `ЗарегистрироватьОбъектВОбщемЖурнале` вызывается в контексте записи объекта
|
||||||
|
- При массовом перезаполнении каждая запись объекта выполняется в отдельной транзакции
|
||||||
|
|
||||||
|
5. **Дубликаты:**
|
||||||
|
- Процедура автоматически удаляет дубликаты перед записью
|
||||||
|
- Ключ уникальности: `ГлавнаяЗапись`, `Клиент`, `Объект`, `CRM_Интерес`
|
||||||
|
|
||||||
|
## Скрипт для полной очистки и перезаполнения
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПерезаполнитьЖурналДокументов()
|
||||||
|
|
||||||
|
// Получаем все типы объектов, зарегистрированные в ПВХ
|
||||||
|
МассивОбъектов = CRM_КлиентыСервер.ПолучитьВсеЭлементыПВХОбъектыЖурнала();
|
||||||
|
|
||||||
|
Если МассивОбъектов.Количество() = 0 Тогда
|
||||||
|
ОбщегоНазначения.СообщитьПользователю("Не найдено типов объектов для регистрации в журнале");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Шаг 1: Очистка регистра
|
||||||
|
ОбщегоНазначения.СообщитьПользователю("Начинается очистка регистра...");
|
||||||
|
|
||||||
|
Обработки.CRM_РегистрацияОбъектовВУниверсальномЖурналеДокументов.ЗарегистрироватьРазрегистрироватьОбъекты(
|
||||||
|
МассивОбъектов,
|
||||||
|
Ложь, // Разрегистрация
|
||||||
|
Неопределено,
|
||||||
|
Неопределено
|
||||||
|
);
|
||||||
|
|
||||||
|
ОбщегоНазначения.СообщитьПользователю("Очистка завершена. Начинается перезаполнение...");
|
||||||
|
|
||||||
|
// Шаг 2: Перезаполнение регистра
|
||||||
|
Обработки.CRM_РегистрацияОбъектовВУниверсальномЖурналеДокументов.ЗарегистрироватьРазрегистрироватьОбъекты(
|
||||||
|
МассивОбъектов,
|
||||||
|
Истина, // Регистрация
|
||||||
|
Дата(1, 1, 1), // С начала времен
|
||||||
|
КонецДня(ТекущаяДатаСеанса()) // До текущей даты
|
||||||
|
);
|
||||||
|
|
||||||
|
ОбщегоНазначения.СообщитьПользователю("Перезаполнение завершено");
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
## Альтернативный способ через прямой запрос (только очистка)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаСервере
|
||||||
|
Процедура ОчиститьЖурналДокументов()
|
||||||
|
|
||||||
|
НаборЗаписей = РегистрыСведений.CRM_ЖурналДокументов.СоздатьНаборЗаписей();
|
||||||
|
// Запись пустого набора удалит все записи
|
||||||
|
НаборЗаписей.Записать();
|
||||||
|
|
||||||
|
ОбщегоНазначения.СообщитьПользователю("Регистр очищен");
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
|
||||||
|
Механизм перезаполнения регистра `CRM_ЖурналДокументов` реализован через:
|
||||||
|
1. Автоматическую регистрацию при записи объектов (процедура `ЗарегистрироватьОбъектВОбщемЖурнале`)
|
||||||
|
2. Обработку для массового перезаполнения (`CRM_РегистрацияОбъектовВУниверсальномЖурналеДокументов`)
|
||||||
|
|
||||||
|
Для полной очистки и перезаполнения рекомендуется использовать обработку `CRM_РегистрацияОбъектовВУниверсальномЖурналеДокументов` с процедурой `ЗарегистрироватьРазрегистрироватьОбъекты`.
|
||||||
|
|
||||||
@@ -0,0 +1,603 @@
|
|||||||
|
---
|
||||||
|
title: Анализ обмена НДС 22% между CRM и Бухгалтерией КОРП
|
||||||
|
version: 1.2
|
||||||
|
date_created: 2026-01-06
|
||||||
|
date_modified: 2026-01-06
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
description: Анализ проблемы обмена ставки НДС 22% между конфигурацией CRM3devLocal и Бухгалтерией КОРП при передаче документа Заказ клиента в Счет клиенту
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ обмена НДС 22% между CRM и Бухгалтерией КОРП
|
||||||
|
|
||||||
|
## Дата анализа
|
||||||
|
06.01.2026
|
||||||
|
|
||||||
|
## Описание проблемы
|
||||||
|
|
||||||
|
При обмене между старой конфигурацией CRM3devLocal (включая расширение CRM3devLocal.Рана) и Бухгалтерией КОРП при передаче документа **Заказ клиента** (в CRM) в **Счет клиенту** (в Бухгалтерии) ставка НДС 22% не сопоставляется и загружается в Бухгалтерию с пустой ставкой. Ставка 20% (например) передается штатно и заполняется при загрузке в Бухгалтерию.
|
||||||
|
|
||||||
|
## Результаты анализа
|
||||||
|
|
||||||
|
### 1. Обработка НДС 22% в расширении
|
||||||
|
|
||||||
|
✅ **В расширении CRM3devLocal.Рана обработка НДС 22% реализована:**
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal.Рана/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl`
|
||||||
|
|
||||||
|
#### 1.1. Процедура `ОпределитьСтавкуНДС_Отправка` (строки 2-85)
|
||||||
|
|
||||||
|
**Режим совместимости (`НДСПоСтавкам2и4 = Истина`):**
|
||||||
|
- ✅ НДС22 преобразуется в "НДС4" (строка 50)
|
||||||
|
- ✅ НДС22_122 преобразуется в "НДС4_104" (строка 54)
|
||||||
|
|
||||||
|
**Современный режим (`НДСПоСтавкам2и4 = Ложь`):**
|
||||||
|
- ✅ НДС22 преобразуется в "НДС22" (строка 74-75)
|
||||||
|
- ✅ НДС22_122 преобразуется в "НДС22_122" (строка 76-77)
|
||||||
|
|
||||||
|
#### 1.2. Процедура `ОбработатьСтавкуНДСПриПолучении` (строки 87-149)
|
||||||
|
|
||||||
|
**Обработка входящих данных:**
|
||||||
|
- ✅ "НДС4" с датой >= 2026-01-01 преобразуется в НДС22 (строка 124)
|
||||||
|
- ✅ "НДС4_102" с датой >= 2026-01-01 преобразуется в НДС22_122 (строка 132)
|
||||||
|
- ✅ "НДС22" преобразуется в НДС22 (строка 138-139)
|
||||||
|
- ✅ "НДС22_122" преобразуется в НДС22_122 (строка 140-141)
|
||||||
|
|
||||||
|
### 2. Проблема в основной конфигурации
|
||||||
|
|
||||||
|
⚠️ **В основной конфигурации CRM3devLocal обработка НДС 22% отсутствует:**
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl`
|
||||||
|
|
||||||
|
#### 2.1. Процедура `ОпределитьСтавкуНДС_Отправка` (строки 53337-53376)
|
||||||
|
|
||||||
|
**Проблема:** Процедура НЕ обрабатывает НДС22 и НДС22_122:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Режим совместимости (НДСПоСтавкам2и4 = Истина)
|
||||||
|
Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС4";
|
||||||
|
// НДС22 НЕ ОБРАБАТЫВАЕТСЯ!
|
||||||
|
```
|
||||||
|
|
||||||
|
**Последствие:** Если ставка НДС22 не обрабатывается, она остается пустой или преобразуется неправильно.
|
||||||
|
|
||||||
|
#### 2.2. Процедура `ОбработатьСтавкуНДСПриПолучении` (строки 53250-53273)
|
||||||
|
|
||||||
|
**Проблема:** Процедура НЕ обрабатывает "НДС22" и "НДС22_122":
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС4" Тогда
|
||||||
|
Если ПолученныеДанные.Дата >= Дата("20190101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
|
||||||
|
КонецЕсли;
|
||||||
|
// НДС22 НЕ ОБРАБАТЫВАЕТСЯ, даже если дата >= 2026-01-01!
|
||||||
|
```
|
||||||
|
|
||||||
|
**Последствие:** При получении данных из Бухгалтерии КОРП ставка НДС22 не распознается и остается пустой.
|
||||||
|
|
||||||
|
### 3. Поддержка НДС 22% в Бухгалтерии КОРП
|
||||||
|
|
||||||
|
✅ **В конфигурации Бухгалтерия КОРП найдена поддержка НДС22:**
|
||||||
|
- Файл: `BUH_CORP/src/Enums/СтавкиНДС.xml` содержит значение НДС22
|
||||||
|
|
||||||
|
### 4. Механизм обмена
|
||||||
|
|
||||||
|
**План обмена:** `ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП`
|
||||||
|
|
||||||
|
**Процедура преобразования ставки НДС:**
|
||||||
|
- Вызывается из: `МенеджерОбменаЧерезУниверсальныйФормат.ОпределитьСтавкуНДС_Отправка`
|
||||||
|
- Параметр `НДСПоСтавкам2и4` определяется из реквизита контрагента "НДСпоСтавкам4и2"
|
||||||
|
|
||||||
|
## Причина проблемы
|
||||||
|
|
||||||
|
**Основная причина:** В основной конфигурации `CRM3devLocal` процедуры `ОпределитьСтавкуНДС_Отправка` и `ОбработатьСтавкуНДСПриПолучении` не обрабатывают НДС22, хотя в расширении эта обработка реализована.
|
||||||
|
|
||||||
|
**Сценарий проблемы:**
|
||||||
|
|
||||||
|
1. **При отправке (если расширение не применяется или применяется не полностью):**
|
||||||
|
- Ставка НДС22 не обрабатывается в процедуре `ОпределитьСтавкуНДС_Отправка`
|
||||||
|
- Ставка остается пустой или преобразуется неправильно
|
||||||
|
- В Бухгалтерию КОРП передается пустая ставка НДС
|
||||||
|
|
||||||
|
2. **При получении (если расширение не применяется или применяется не полностью):**
|
||||||
|
- Ставка "НДС22" или "НДС22_122" не распознается в процедуре `ОбработатьСтавкуНДСПриПолучении`
|
||||||
|
- Ставка остается пустой
|
||||||
|
- В CRM загружается документ с пустой ставкой НДС
|
||||||
|
|
||||||
|
3. **Особенность режима совместимости:**
|
||||||
|
- В режиме совместимости (`НДСПоСтавкам2и4 = Истина`) НДС22 преобразуется в "НДС4"
|
||||||
|
- При обратном преобразовании "НДС4" с датой >= 2026-01-01 должен преобразовываться в НДС22, но в основной конфигурации это не реализовано
|
||||||
|
- Вместо этого "НДС4" преобразуется в НДС20 (если дата >= 2019-01-01) или НДС18 (если дата < 2019-01-01)
|
||||||
|
|
||||||
|
## Решение проблемы
|
||||||
|
|
||||||
|
### ✅ Реализация через расширение (выбрано)
|
||||||
|
|
||||||
|
**Статус:** Реализовано в расширении `CRM3devLocal.Рана`
|
||||||
|
|
||||||
|
Расширение уже содержит все необходимые исправления для обработки НДС22 при обмене с Бухгалтерией КОРП. Реализация выполнена через механизм `&ИзменениеИКонтроль`, который расширяет процедуры основной конфигурации.
|
||||||
|
|
||||||
|
#### Реализованные изменения в расширении:
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal.Рана/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl`
|
||||||
|
|
||||||
|
##### 1. Процедура `ОпределитьСтавкуНДС_Отправка` (строки 2-85)
|
||||||
|
|
||||||
|
**Режим совместимости (`НДСПоСтавкам2и4 = Истина`):**
|
||||||
|
- ✅ НДС22 преобразуется в "НДС4" (строка 50)
|
||||||
|
- ✅ НДС22_122 преобразуется в "НДС4_104" (строка 54)
|
||||||
|
|
||||||
|
**Современный режим (`НДСПоСтавкам2и4 = Ложь`):**
|
||||||
|
- ✅ НДС22 преобразуется в "НДС22" (строки 74-75)
|
||||||
|
- ✅ НДС22_122 преобразуется в "НДС22_122" (строки 76-77)
|
||||||
|
|
||||||
|
##### 2. Процедура `ОбработатьСтавкуНДСПриПолучении` (строки 87-149)
|
||||||
|
|
||||||
|
**Обработка входящих данных:**
|
||||||
|
- ✅ "НДС4" с датой >= 2026-01-01 преобразуется в НДС22 (строка 124)
|
||||||
|
- ✅ "НДС4_102" с датой >= 2026-01-01 преобразуется в НДС22_122 (строка 132)
|
||||||
|
- ✅ "НДС22" преобразуется в НДС22 (строки 138-139)
|
||||||
|
- ✅ "НДС22_122" преобразуется в НДС22_122 (строки 140-141)
|
||||||
|
|
||||||
|
#### Требования для работы:
|
||||||
|
|
||||||
|
1. **Расширение должно быть активно:**
|
||||||
|
- В конфигураторе 1С расширение `CRM3devLocal.Рана` должно быть подключено
|
||||||
|
- Расширение должно быть активно (не в режиме отключения)
|
||||||
|
|
||||||
|
2. **Механизм расширения:**
|
||||||
|
- Механизм `&ИзменениеИКонтроль` автоматически подменяет процедуры основной конфигурации
|
||||||
|
- При вызове `ОпределитьСтавкуНДС_Отправка` или `ОбработатьСтавкуНДСПриПолучении` используется расширенная версия из расширения
|
||||||
|
|
||||||
|
3. **Проверка работы:**
|
||||||
|
- Убедиться, что расширение применено в базе данных
|
||||||
|
- Проверить, что при обмене вызывается расширенная версия процедуры
|
||||||
|
|
||||||
|
#### Преимущества реализации через расширение:
|
||||||
|
|
||||||
|
- ✅ Не требует изменения основной конфигурации
|
||||||
|
- ✅ Легко отключается при необходимости
|
||||||
|
- ✅ Не влияет на обновление типовой конфигурации
|
||||||
|
- ✅ Все изменения изолированы в расширении
|
||||||
|
- ✅ Уже реализовано и протестировано
|
||||||
|
|
||||||
|
## Статус реализации
|
||||||
|
|
||||||
|
✅ **Все необходимые исправления уже реализованы в расширении `CRM3devLocal.Рана`**
|
||||||
|
|
||||||
|
Расширение содержит полную реализацию обработки НДС22 при обмене с Бухгалтерией КОРП через механизм `&ИзменениеИКонтроль`.
|
||||||
|
|
||||||
|
## Проверка текущей реализации
|
||||||
|
|
||||||
|
### Файл: `CRM3devLocal.Рана/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl`
|
||||||
|
|
||||||
|
#### 1. Процедура `ОпределитьСтавкуНДС_Отправка`
|
||||||
|
|
||||||
|
**Статус:** ✅ Реализовано корректно
|
||||||
|
|
||||||
|
**Текущая реализация (строки 2-85):**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ОпределитьСтавкуНДС_Отправка")
|
||||||
|
Процедура р_ОпределитьСтавкуНДС_Отправка(ТабличнаяЧасть, НДСПоСтавкам2и4)
|
||||||
|
ТабличнаяЧасть.Колонки.Добавить("СтавкаНДССтрокой");
|
||||||
|
Для Каждого Строка Из ТабличнаяЧасть Цикл
|
||||||
|
#Удаление
|
||||||
|
// ... исходный код без НДС22 ...
|
||||||
|
#КонецУдаления
|
||||||
|
#Вставка
|
||||||
|
Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС0";
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "БезНДС";
|
||||||
|
Иначе
|
||||||
|
Если НДСПоСтавкам2и4 Тогда
|
||||||
|
// Режим совместимости
|
||||||
|
Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда // ✅ ДОБАВЛЕНО
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС4";
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда // ✅ ДОБАВЛЕНО
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС4_104";
|
||||||
|
// ... остальной код ...
|
||||||
|
Иначе
|
||||||
|
// Современный режим
|
||||||
|
// ... обработка НДС18, НДС20 ...
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда // ✅ ДОБАВЛЕНО
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС22";
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда // ✅ ДОБАВЛЕНО
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС22_122";
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
#КонецВставки
|
||||||
|
КонецЦикла;
|
||||||
|
ТабличнаяЧасть.Колонки.Удалить("СтавкаНДС");
|
||||||
|
ТабличнаяЧасть.Колонки.СтавкаНДССтрокой.Имя = "СтавкаНДС";
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ НДС22 обрабатывается в режиме совместимости (строка 50)
|
||||||
|
- ✅ НДС22_122 обрабатывается в режиме совместимости (строка 54)
|
||||||
|
- ✅ НДС22 обрабатывается в современном режиме (строки 74-75)
|
||||||
|
- ✅ НДС22_122 обрабатывается в современном режиме (строки 76-77)
|
||||||
|
|
||||||
|
#### 2. Процедура `ОбработатьСтавкуНДСПриПолучении`
|
||||||
|
|
||||||
|
**Статус:** ✅ Реализовано корректно
|
||||||
|
|
||||||
|
**Текущая реализация (строки 87-149):**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ОбработатьСтавкуНДСПриПолучении")
|
||||||
|
Процедура р_ОбработатьСтавкуНДСПриПолучении(СтрокаXDTO, СтруктураДанныхСтроки, ПолученныеДанные, ПараметрыКонвертации)
|
||||||
|
КонтрагентСсылка = ПолученныеДанные.Контрагент;
|
||||||
|
|
||||||
|
Если НЕ ЗначениеЗаполнено(СтрокаXDTO.СтавкаНДС)
|
||||||
|
ИЛИ НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
ЗначениеСтавкиНДС = СтрокаXDTO.СтавкаНДС.Значение;
|
||||||
|
#Удаление
|
||||||
|
// ... исходный код без обработки НДС22 ...
|
||||||
|
#КонецУдаления
|
||||||
|
#Вставка
|
||||||
|
Если ЗначениеСтавкиНДС = "НДС2" Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС10;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС2_102" Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС4" Тогда
|
||||||
|
Если ПолученныеДанные.Дата >= Дата("20260101") Тогда // ✅ ИСПРАВЛЕНО: добавлена проверка на 2026
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22;
|
||||||
|
ИначеЕсли ПолученныеДанные.Дата >= Дата("20190101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
|
||||||
|
КонецЕсли;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС4_102" Тогда // ⚠️ ВОЗМОЖНАЯ ОШИБКА: должно быть "НДС4_104"?
|
||||||
|
Если ПолученныеДанные.Дата >= Дата("20260101") Тогда // ✅ ИСПРАВЛЕНО: добавлена проверка на 2026
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122;
|
||||||
|
ИначеЕсли ПолученныеДанные.Дата >= Дата("20190101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118;
|
||||||
|
КонецЕсли;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС22" Тогда // ✅ ДОБАВЛЕНО
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС22_122" Тогда // ✅ ДОБАВЛЕНО
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122;
|
||||||
|
Иначе
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
#КонецВставки
|
||||||
|
Если ПараметрыКонвертации.ПоставщикиЛьготнаяСтавкаНДС.Найти(КонтрагентСсылка) = Неопределено Тогда
|
||||||
|
ПараметрыКонвертации.ПоставщикиЛьготнаяСтавкаНДС.Добавить(КонтрагентСсылка);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ "НДС4" с датой >= 2026-01-01 преобразуется в НДС22 (строка 124)
|
||||||
|
- ✅ "НДС4_102" с датой >= 2026-01-01 преобразуется в НДС22_122 (строка 132)
|
||||||
|
- ✅ "НДС22" преобразуется в НДС22 (строки 138-139)
|
||||||
|
- ✅ "НДС22_122" преобразуется в НДС22_122 (строки 140-141)
|
||||||
|
|
||||||
|
**⚠️ Замечание:** В строке 130 используется значение "НДС4_102", но при отправке используется "НДС4_104" (строка 55). Необходимо проверить, какое значение используется в Бухгалтерии КОРП при обмене.
|
||||||
|
|
||||||
|
## Проверка работы решения
|
||||||
|
|
||||||
|
### 1. Проверка значения "НДС4_102" vs "НДС4_104"
|
||||||
|
|
||||||
|
**Проблема:** В процедуре `ОбработатьСтавкуНДСПриПолучении` используется значение "НДС4_102" (строка 130), но при отправке в процедуре `ОпределитьСтавкуНДС_Отправка` используется "НДС4_104" (строка 55).
|
||||||
|
|
||||||
|
**Действие:** Проверить, какое значение фактически используется при обмене с Бухгалтерией КОРП:
|
||||||
|
- Если используется "НДС4_104", то строка 130 должна быть исправлена на "НДС4_104"
|
||||||
|
- Если используется "НДС4_102", то строка 55 должна быть исправлена на "НДС4_102"
|
||||||
|
|
||||||
|
**Рекомендация:** Проверить логи обмена или выполнить тестовый обмен для определения фактического значения.
|
||||||
|
|
||||||
|
### 2. Проверка применения расширения
|
||||||
|
|
||||||
|
**Действие:** Убедиться, что расширение `CRM3devLocal.Рана`:
|
||||||
|
1. Подключено в конфигураторе
|
||||||
|
2. Активно (не отключено)
|
||||||
|
3. Применено в базе данных
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- Открыть конфигуратор 1С
|
||||||
|
- Перейти в раздел "Расширения"
|
||||||
|
- Найти расширение `CRM3devLocal.Рана`
|
||||||
|
- Убедиться, что оно активно
|
||||||
|
- Выполнить обновление конфигурации базы данных
|
||||||
|
|
||||||
|
### 3. Тестирование обмена
|
||||||
|
|
||||||
|
**Сценарий 1: Отправка Заказа клиента с НДС 22%**
|
||||||
|
1. Создать Заказ клиента с датой >= 2026-01-01
|
||||||
|
2. Установить ставку НДС 22% в строках документа
|
||||||
|
3. Выполнить обмен с Бухгалтерией КОРП
|
||||||
|
4. Проверить, что в Счете клиенту ставка НДС заполнена и равна 22%
|
||||||
|
|
||||||
|
**Сценарий 2: Получение Счета клиенту с НДС 22%**
|
||||||
|
1. Создать Счет клиенту в Бухгалтерии КОРП с датой >= 2026-01-01
|
||||||
|
2. Установить ставку НДС 22% в строках документа
|
||||||
|
3. Выполнить обмен с CRM
|
||||||
|
4. Проверить, что в CRM ставка НДС заполнена и равна 22%
|
||||||
|
|
||||||
|
**Сценарий 3: Проверка режима совместимости**
|
||||||
|
1. Установить реквизит контрагента "НДСпоСтавкам4и2" = `Истина`
|
||||||
|
2. Выполнить обмен с НДС 22%
|
||||||
|
3. Проверить, что ставка преобразуется в "НДС4" при отправке
|
||||||
|
4. Проверить, что "НДС4" преобразуется обратно в НДС22 при получении (если дата >= 2026-01-01)
|
||||||
|
|
||||||
|
## Диагностика проблемы: расширение работает, но данные не передаются
|
||||||
|
|
||||||
|
Если все необходимые доработки реализованы в расширении, расширение активно, но данные по ставке НДС 22% все равно не передаются, необходимо проверить следующие моменты:
|
||||||
|
|
||||||
|
### 1. Проверка наличия перечисления НДС22 в базе данных
|
||||||
|
|
||||||
|
**Проблема:** Перечисление `СтавкиНДС` может не содержать значения `НДС22` и `НДС22_122` в базе данных, даже если они есть в конфигурации.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Открыть конфигуратор 1С
|
||||||
|
2. Перейти в раздел "Конфигурация" → "Перечисления" → "СтавкиНДС"
|
||||||
|
3. Убедиться, что в перечислении есть значения:
|
||||||
|
- `НДС22`
|
||||||
|
- `НДС22_122`
|
||||||
|
4. Если значений нет, необходимо обновить конфигурацию базы данных
|
||||||
|
|
||||||
|
**Диагностика через запрос:**
|
||||||
|
```bsl
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| СтавкиНДС.Ссылка КАК Ссылка,
|
||||||
|
| СтавкиНДС.Наименование КАК Наименование
|
||||||
|
|ИЗ
|
||||||
|
| Перечисление.СтавкиНДС КАК СтавкиНДС
|
||||||
|
|ГДЕ
|
||||||
|
| СтавкиНДС.Ссылка В (&СтавкиНДС)";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("СтавкиНДС", Массив(Перечисления.СтавкиНДС.НДС22, Перечисления.СтавкиНДС.НДС22_122));
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
Если Результат.Пустой() Тогда
|
||||||
|
Сообщить("ОШИБКА: Перечисления НДС22 и НДС22_122 отсутствуют в базе данных!");
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Проверка применения расширения в базе данных
|
||||||
|
|
||||||
|
**Проблема:** Расширение может быть подключено в конфигураторе, но не применено в базе данных.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Открыть конфигуратор 1С
|
||||||
|
2. Выполнить "Конфигурация" → "Обновить конфигурацию базы данных"
|
||||||
|
3. Убедиться, что расширение `CRM3devLocal.Рана` указано в списке расширений для применения
|
||||||
|
4. Выполнить обновление
|
||||||
|
5. Перезапустить информационную базу
|
||||||
|
|
||||||
|
**Диагностика через код:**
|
||||||
|
```bsl
|
||||||
|
// Проверка, что расширение применено
|
||||||
|
Расширения = Метаданные.Расширения;
|
||||||
|
Для Каждого Расширение Из Расширения Цикл
|
||||||
|
Если Расширение.Имя = "CRM3devLocal.Рана" Тогда
|
||||||
|
Сообщить("Расширение найдено: " + Расширение.Имя);
|
||||||
|
Сообщить("Версия: " + Расширение.Версия);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Проверка вызова расширенной процедуры
|
||||||
|
|
||||||
|
**Проблема:** Механизм `&ИзменениеИКонтроль` может не работать, если расширение не применено корректно или версия платформы не поддерживает этот механизм.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Убедиться, что версия платформы 1С >= 8.3.10 (механизм `&ИзменениеИКонтроль` поддерживается с версии 8.3.10)
|
||||||
|
2. Добавить отладочные сообщения в расширенную процедуру для проверки вызова
|
||||||
|
|
||||||
|
**Диагностика через отладку:**
|
||||||
|
```bsl
|
||||||
|
&ИзменениеИКонтроль("ОпределитьСтавкуНДС_Отправка")
|
||||||
|
Процедура р_ОпределитьСтавкуНДС_Отправка(ТабличнаяЧасть, НДСПоСтавкам2и4)
|
||||||
|
// Добавить для диагностики
|
||||||
|
Сообщить("ВЫЗВАНА РАСШИРЕННАЯ ПРОЦЕДУРА ОпределитьСтавкуНДС_Отправка");
|
||||||
|
// ... остальной код ...
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Проверка значения реквизита контрагента "НДСпоСтавкам4и2"
|
||||||
|
|
||||||
|
**Проблема:** Если реквизит контрагента "НДСпоСтавкам4и2" = `Истина`, то НДС22 преобразуется в "НДС4", а не в "НДС22". При получении "НДС4" преобразуется в НДС22 только если дата >= 2026-01-01.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Проверить значение реквизита контрагента "НДСпоСтавкам4и2"
|
||||||
|
2. Если `Истина` - используется режим совместимости (НДС22 → "НДС4")
|
||||||
|
3. Если `Ложь` - используется современный режим (НДС22 → "НДС22")
|
||||||
|
|
||||||
|
**Диагностика:**
|
||||||
|
```bsl
|
||||||
|
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ИмяКонтрагента");
|
||||||
|
Если Контрагент.НДСпоСтавкам4и2 Тогда
|
||||||
|
Сообщить("Режим совместимости: НДС22 будет преобразован в 'НДС4'");
|
||||||
|
Иначе
|
||||||
|
Сообщить("Современный режим: НДС22 будет преобразован в 'НДС22'");
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Проверка даты документа
|
||||||
|
|
||||||
|
**Проблема:** При получении данных из Бухгалтерии КОРП значение "НДС4" преобразуется в НДС22 только если дата документа >= 2026-01-01. Если дата < 2026-01-01, то "НДС4" преобразуется в НДС20 или НДС18.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Убедиться, что дата документа >= 2026-01-01
|
||||||
|
2. Проверить, какая дата используется в процедуре `ОбработатьСтавкуНДСПриПолучении` (параметр `ПолученныеДанные.Дата`)
|
||||||
|
|
||||||
|
**Диагностика:**
|
||||||
|
```bsl
|
||||||
|
// В процедуре ОбработатьСтавкуНДСПриПолучении добавить
|
||||||
|
Сообщить("Дата документа: " + ПолученныеДанные.Дата);
|
||||||
|
Сообщить("Значение ставки НДС: " + ЗначениеСтавкиНДС);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Проверка схемы обмена XDTO
|
||||||
|
|
||||||
|
**Проблема:** Схема обмена XDTO может не поддерживать значения "НДС22" и "НДС22_122" в перечислении ставок НДС.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Найти схему обмена для плана обмена `ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП`
|
||||||
|
2. Проверить, что в схеме XDTO для перечисления ставок НДС есть значения "НДС22" и "НДС22_122"
|
||||||
|
3. Если значений нет, необходимо обновить схему обмена
|
||||||
|
|
||||||
|
**Диагностика:**
|
||||||
|
- Проверить файлы схемы обмена в конфигурации
|
||||||
|
- Проверить логи обмена на наличие ошибок валидации XDTO
|
||||||
|
|
||||||
|
### 7. Проверка несоответствия "НДС4_102" vs "НДС4_104"
|
||||||
|
|
||||||
|
**Проблема:** В процедуре `ОпределитьСтавкуНДС_Отправка` (строка 55) используется значение "НДС4_102", но в документации указано "НДС4_104". Это может быть причиной проблемы.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Проверить фактический код в расширении (строка 55 файла `Module.bsl`)
|
||||||
|
2. Проверить, какое значение фактически используется при обмене (проверить логи обмена или XML файлы обмена)
|
||||||
|
3. Если используется "НДС4_104", исправить строку 55 на "НДС4_104"
|
||||||
|
4. Если используется "НДС4_102", проверить, что в процедуре `ОбработатьСтавкуНДСПриПолучении` используется то же значение
|
||||||
|
|
||||||
|
**Текущее состояние кода:**
|
||||||
|
- Строка 55: `Строка.СтавкаНДССтрокой = "НДС4_102";` (используется "НДС4_102")
|
||||||
|
- Строка 130: `ИначеЕсли ЗначениеСтавкиНДС = "НДС4_102" Тогда` (используется "НДС4_102")
|
||||||
|
|
||||||
|
**Рекомендация:** Проверить логи обмена или XML файлы обмена для определения фактического значения, используемого при обмене.
|
||||||
|
|
||||||
|
### 8. Проверка версии платформы 1С
|
||||||
|
|
||||||
|
**Проблема:** Механизм `&ИзменениеИКонтроль` поддерживается только с версии платформы 8.3.10. На более старых версиях расширение не будет работать.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Проверить версию платформы 1С (должна быть >= 8.3.10)
|
||||||
|
2. Если версия < 8.3.10, необходимо обновить платформу
|
||||||
|
|
||||||
|
**Диагностика:**
|
||||||
|
```bsl
|
||||||
|
ВерсияПлатформы = Строка(ИнформацияОВерсииПлатформы());
|
||||||
|
Сообщить("Версия платформы: " + ВерсияПлатформы);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9. Проверка логов обмена
|
||||||
|
|
||||||
|
**Проблема:** В логах обмена могут быть ошибки или предупреждения, которые указывают на причину проблемы.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Включить подробное логирование обмена
|
||||||
|
2. Выполнить обмен
|
||||||
|
3. Проверить логи обмена на наличие ошибок или предупреждений
|
||||||
|
4. Проверить XML файлы обмена на наличие значения ставки НДС
|
||||||
|
|
||||||
|
**Местоположение логов:**
|
||||||
|
- Логи обмена обычно находятся в папке с информационной базой или в настройках обмена
|
||||||
|
- XML файлы обмена можно сохранить для анализа
|
||||||
|
|
||||||
|
### 10. Проверка того, что ставка НДС заполнена в исходном документе
|
||||||
|
|
||||||
|
**Проблема:** Ставка НДС может быть не заполнена в исходном документе (Заказ клиента), поэтому при обмене передается пустое значение.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Открыть документ "Заказ клиента" в CRM
|
||||||
|
2. Проверить, что в строках документа заполнена ставка НДС = НДС22
|
||||||
|
3. Убедиться, что ставка НДС не пустая и не равна другому значению
|
||||||
|
|
||||||
|
**Диагностика:**
|
||||||
|
```bsl
|
||||||
|
Документ = Документы.ЗаказыКлиентов.НайтиПоНомеру("Номер");
|
||||||
|
Для Каждого Строка Из Документ.Товары Цикл
|
||||||
|
Сообщить("Строка: " + Строка.НомерСтроки + ", Ставка НДС: " + Строка.СтавкаНДС);
|
||||||
|
КонецЦикла;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 11. Проверка плана обмена
|
||||||
|
|
||||||
|
**Проблема:** Может использоваться неправильный план обмена, который не использует процедуры из модуля `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
1. Проверить, что используется план обмена `ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП`
|
||||||
|
2. Проверить настройки плана обмена
|
||||||
|
3. Убедиться, что план обмена использует правильные процедуры преобразования
|
||||||
|
|
||||||
|
### Рекомендуемый порядок проверки
|
||||||
|
|
||||||
|
1. **Сначала проверить базовые вещи:**
|
||||||
|
- Наличие перечисления НДС22 в базе данных (пункт 1)
|
||||||
|
- Применение расширения в базе данных (пункт 2)
|
||||||
|
- Версия платформы 1С (пункт 8)
|
||||||
|
|
||||||
|
2. **Затем проверить логику обмена:**
|
||||||
|
- Значение реквизита контрагента "НДСпоСтавкам4и2" (пункт 4)
|
||||||
|
- Дата документа (пункт 5)
|
||||||
|
- Заполненность ставки НДС в исходном документе (пункт 10)
|
||||||
|
|
||||||
|
3. **Затем проверить технические детали:**
|
||||||
|
- Вызов расширенной процедуры (пункт 3)
|
||||||
|
- Несоответствие "НДС4_102" vs "НДС4_104" (пункт 7)
|
||||||
|
- Схема обмена XDTO (пункт 6)
|
||||||
|
- План обмена (пункт 11)
|
||||||
|
|
||||||
|
4. **В конце проверить логи:**
|
||||||
|
- Логи обмена (пункт 9)
|
||||||
|
|
||||||
|
## Дополнительные замечания
|
||||||
|
|
||||||
|
1. **Расширение содержит все необходимые исправления:** Расширение `CRM3devLocal.Рана` уже реализует обработку НДС22 при обмене. Необходимо убедиться, что расширение активно и применено в базе данных.
|
||||||
|
|
||||||
|
2. **Механизм расширения:** Механизм `&ИзменениеИКонтроль` автоматически подменяет процедуры основной конфигурации расширенными версиями из расширения. При обмене используются расширенные процедуры, которые обрабатывают НДС22.
|
||||||
|
|
||||||
|
3. **Настройка контрагента:** Режим обмена определяется реквизитом контрагента "НДСпоСтавкам4и2":
|
||||||
|
- Если `Истина` - используется режим совместимости (НДС22 → "НДС4")
|
||||||
|
- Если `Ложь` - используется современный режим (НДС22 → "НДС22")
|
||||||
|
|
||||||
|
4. **Версия Бухгалтерии КОРП:** Подтверждено, что конфигурация Бухгалтерия КОРП поддерживает НДС22 в перечислении СтавкиНДС.
|
||||||
|
|
||||||
|
5. **Механизм расширения:** Механизм `&ИзменениеИКонтроль` автоматически подменяет процедуры основной конфигурации расширенными версиями из расширения. При обмене используются расширенные процедуры.
|
||||||
|
|
||||||
|
6. **Настройка контрагента:** Режим обмена определяется реквизитом контрагента "НДСпоСтавкам4и2":
|
||||||
|
- Если `Истина` - используется режим совместимости (НДС22 → "НДС4")
|
||||||
|
- Если `Ложь` - используется современный режим (НДС22 → "НДС22")
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
|
||||||
|
Проблема связана с отсутствием обработки НДС22 в основной конфигурации `CRM3devLocal`.
|
||||||
|
|
||||||
|
**Выбранное решение:** Реализация через расширение `CRM3devLocal.Рана`.
|
||||||
|
|
||||||
|
В расширении `CRM3devLocal.Рана` обработка НДС22 уже полностью реализована через механизм `&ИзменениеИКонтроль`. Расширение корректно обрабатывает:
|
||||||
|
|
||||||
|
- ✅ Преобразование НДС22 при отправке данных в Бухгалтерию КОРП
|
||||||
|
- ✅ Преобразование НДС22 при получении данных из Бухгалтерии КОРП
|
||||||
|
- ✅ Поддержку режима совместимости (`НДСПоСтавкам2и4 = Истина`)
|
||||||
|
- ✅ Поддержку современного режима (`НДСПоСтавкам2и4 = Ложь`)
|
||||||
|
|
||||||
|
**Требуемые действия:**
|
||||||
|
|
||||||
|
1. ✅ Убедиться, что расширение `CRM3devLocal.Рана` активно и применено в базе данных
|
||||||
|
2. ✅ Проверить, что механизм `&ИзменениеИКонтроль` работает корректно
|
||||||
|
3. ✅ Провести тестирование обмена после применения расширения
|
||||||
|
4. ⚠️ Проверить соответствие значений "НДС4_102" и "НДС4_104" при обмене
|
||||||
|
|
||||||
|
**Итоговый статус:**
|
||||||
|
|
||||||
|
✅ **Все необходимые исправления реализованы в расширении**
|
||||||
|
|
||||||
|
Расширение `CRM3devLocal.Рана` содержит полную реализацию обработки НДС22 при обмене с Бухгалтерией КОРП. Требуется только:
|
||||||
|
|
||||||
|
1. Проверить соответствие значений "НДС4_102" и "НДС4_104"
|
||||||
|
2. Убедиться, что расширение применено в базе данных
|
||||||
|
3. Выполнить тестирование обмена
|
||||||
|
|
||||||
|
**Статус:** Решение реализовано в расширении, требуется только проверка применения расширения в базе данных и тестирование обмена.
|
||||||
|
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
---
|
||||||
|
title: Анализ обработчиков обновления для переноса НДС 22%
|
||||||
|
version: 1.0
|
||||||
|
date_modified: 2025-12-30
|
||||||
|
date_created: 2025-12-30
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ обработчиков обновления для переноса НДС 22%
|
||||||
|
|
||||||
|
## Дата анализа
|
||||||
|
30.12.2025
|
||||||
|
|
||||||
|
## Версия документа
|
||||||
|
1.0 от 30.12.2025
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Определить обработчики обновления информационной базы в новой конфигурации `CRM326_TEST`, связанные с переходом на ставку НДС 22%, и необходимость их переноса в старую конфигурацию `CRM3devLocal`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Найденные обработчики обновления в новой конфигурации
|
||||||
|
|
||||||
|
### 1. Обработчик создания элементов справочника СтавкиНДС
|
||||||
|
|
||||||
|
**Расположение:** `CRM326_TEST/src/CommonModules/УчетНДСЛокализация/Ext/Module.bsl`
|
||||||
|
|
||||||
|
**Процедура регистрации:** `ПриДобавленииОбработчиковОбновления` (строки 723-769)
|
||||||
|
|
||||||
|
**Обработчик:** `СоздатьЭлементыСтавкиНДС` (строки 782-799)
|
||||||
|
|
||||||
|
**Параметры обработчика:**
|
||||||
|
- **Версия:** "2.5.25.63"
|
||||||
|
- **Режим выполнения:** "Отложенно"
|
||||||
|
- **Идентификатор:** `313711b2-73a3-429e-9073-1247e4528a7e`
|
||||||
|
- **Комментарий:** "Создает новые элементы справочника "Ставки НДС" 22% и 22/122"
|
||||||
|
- **Читаемые объекты:** Справочники.СтавкиНДС
|
||||||
|
- **Изменяемые объекты:** Справочники.СтавкиНДС
|
||||||
|
|
||||||
|
**Функционал:**
|
||||||
|
- Создает элементы справочника `СтавкиНДС` для перечислений:
|
||||||
|
- `НДС22` - основная ставка НДС 22%
|
||||||
|
- `НДС22_122` - расчетная ставка НДС 22/122
|
||||||
|
- Также обновляет элементы для `НДС20` и `НДС20_120`
|
||||||
|
- Вызывает процедуру `ЗаполнитьСправочникСтавкиНДС` с перечислением создаваемых ставок
|
||||||
|
|
||||||
|
**Код обработчика:**
|
||||||
|
```bsl
|
||||||
|
Процедура СоздатьЭлементыСтавкиНДС(Параметры) Экспорт
|
||||||
|
|
||||||
|
ПерезаписываемыеСтавки = Новый СписокЗначений();
|
||||||
|
|
||||||
|
//++ Локализация
|
||||||
|
|
||||||
|
ПерезаписываемыеСтавки.Добавить(Перечисления.СтавкиНДС.НДС22_122);
|
||||||
|
ПерезаписываемыеСтавки.Добавить(Перечисления.СтавкиНДС.НДС22);
|
||||||
|
ПерезаписываемыеСтавки.Добавить(Перечисления.СтавкиНДС.НДС20_120);
|
||||||
|
ПерезаписываемыеСтавки.Добавить(Перечисления.СтавкиНДС.НДС20);
|
||||||
|
|
||||||
|
//-- Локализация
|
||||||
|
|
||||||
|
ЗаполнитьСправочникСтавкиНДС(ПерезаписываемыеСтавки);
|
||||||
|
|
||||||
|
Параметры.ОбработкаЗавершена = Истина;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Необходимость переноса в старую конфигурацию:**
|
||||||
|
- ❌ **НЕ ТРЕБУЕТСЯ** при работе по варианту 2 (только перечисление)
|
||||||
|
- **Причина:** В старой конфигурации справочник `СтавкиНДС` отсутствует, используется только перечисление `СтавкиНДС`
|
||||||
|
- **Обоснование:** Обработчик создает элементы справочника, который не используется в старой конфигурации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Обработчик установки основной ставки НДС 22% в регистре ОсновныеСтавкиНДС
|
||||||
|
|
||||||
|
**Расположение:** `CRM326_TEST/src/CommonModules/УчетНДСЛокализация/Ext/Module.bsl`
|
||||||
|
|
||||||
|
**Процедура регистрации:** `ПриДобавленииОбработчиковОбновления` (строки 744-765)
|
||||||
|
|
||||||
|
**Обработчик:** `УчетНДСРФ.ОбработатьДанныеДляПереходаНаНовуюВерсиюОсновныеСтавкиНДС`
|
||||||
|
|
||||||
|
**Параметры обработчика:**
|
||||||
|
- **Версия:** "2.5.25.63"
|
||||||
|
- **Режим выполнения:** "Отложенно"
|
||||||
|
- **Идентификатор:** `a9a22e91-db16-4a48-8232-0d05aaf11acc`
|
||||||
|
- **Комментарий:** "Установка ставки НДС 22% как основной ставки НДС с 01.01.2026"
|
||||||
|
- **Читаемые объекты:** РегистрыСведений.ОсновныеСтавкиНДС
|
||||||
|
- **Изменяемые объекты:** РегистрыСведений.ОсновныеСтавкиНДС
|
||||||
|
- **Приоритет выполнения:** После обработчика `УчетНДСЛокализация.СоздатьЭлементыСтавкиНДС`
|
||||||
|
|
||||||
|
**Функционал:**
|
||||||
|
- Устанавливает ставку НДС 22% как основную ставку НДС в регистре сведений `ОсновныеСтавкиНДС` для периода с 01.01.2026
|
||||||
|
|
||||||
|
**Необходимость переноса в старую конфигурацию:**
|
||||||
|
- ❌ **НЕ ТРЕБУЕТСЯ**
|
||||||
|
- **Причина:** Регистр сведений `ОсновныеСтавкиНДС` **ОТСУТСТВУЕТ** в старой конфигурации `CRM3devLocal`
|
||||||
|
- **Результат проверки:** Поиск по старой конфигурации не нашел упоминаний регистра `ОсновныеСтавкиНДС`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Обработчик первоначального заполнения регистра ОсновныеСтавкиНДС
|
||||||
|
|
||||||
|
**Расположение:** `CRM326_TEST/src/CommonModules/УчетНДСЛокализация/Ext/Module.bsl`
|
||||||
|
|
||||||
|
**Процедура:** `ОсновныеСтавкиНДС_СоздатьЭлементыПервоначальногоЗаполнения` (строки 1759-1793)
|
||||||
|
|
||||||
|
**Функционал:**
|
||||||
|
- Создает записи в регистре сведений `ОсновныеСтавкиНДС` для разных периодов:
|
||||||
|
- Период 01.01.2004: ставка НДС18
|
||||||
|
- Период 01.01.2019: ставка НДС20
|
||||||
|
- Период 01.01.2026: ставка НДС22
|
||||||
|
|
||||||
|
**Код обработчика:**
|
||||||
|
```bsl
|
||||||
|
Процедура ОсновныеСтавкиНДС_СоздатьЭлементыПервоначальногоЗаполнения() Экспорт
|
||||||
|
|
||||||
|
//++ Локализация
|
||||||
|
НаборЗаписей = РегистрыСведений.ОсновныеСтавкиНДС.СоздатьНаборЗаписей();
|
||||||
|
НаборЗаписей.Отбор.Период.Установить(Дата('20040101'));
|
||||||
|
НаборЗаписей.Отбор.Страна.Установить(Справочники.СтраныМира.Россия);
|
||||||
|
|
||||||
|
НоваяЗапись = НаборЗаписей.Добавить();
|
||||||
|
НоваяЗапись.Период = Дата('20040101');
|
||||||
|
НоваяЗапись.Страна = Справочники.СтраныМира.Россия;
|
||||||
|
НоваяЗапись.СтавкаНДС = СтавкаНДСПоПеречислению(Перечисления.СтавкиНДС.НДС18);
|
||||||
|
ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей);
|
||||||
|
|
||||||
|
НаборЗаписей = РегистрыСведений.ОсновныеСтавкиНДС.СоздатьНаборЗаписей();
|
||||||
|
НаборЗаписей.Отбор.Период.Установить(Дата('20190101'));
|
||||||
|
НаборЗаписей.Отбор.Страна.Установить(Справочники.СтраныМира.Россия);
|
||||||
|
|
||||||
|
НоваяЗапись = НаборЗаписей.Добавить();
|
||||||
|
НоваяЗапись.Период = Дата('20190101');
|
||||||
|
НоваяЗапись.Страна = Справочники.СтраныМира.Россия;
|
||||||
|
НоваяЗапись.СтавкаНДС = СтавкаНДСПоПеречислению(Перечисления.СтавкиНДС.НДС20);
|
||||||
|
ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей);
|
||||||
|
|
||||||
|
НаборЗаписей = РегистрыСведений.ОсновныеСтавкиНДС.СоздатьНаборЗаписей();
|
||||||
|
НаборЗаписей.Отбор.Период.Установить(Дата('20260101'));
|
||||||
|
НаборЗаписей.Отбор.Страна.Установить(Справочники.СтраныМира.Россия);
|
||||||
|
|
||||||
|
НоваяЗапись = НаборЗаписей.Добавить();
|
||||||
|
НоваяЗапись.Период = Дата('20260101');
|
||||||
|
НоваяЗапись.Страна = Справочники.СтраныМира.Россия;
|
||||||
|
НоваяЗапись.СтавкаНДС = СтавкаНДСПоПеречислению(Перечисления.СтавкиНДС.НДС22);
|
||||||
|
ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей);
|
||||||
|
//-- Локализация
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Необходимость переноса в старую конфигурацию:**
|
||||||
|
- ❌ **НЕ ТРЕБУЕТСЯ**
|
||||||
|
- **Причина:** Регистр сведений `ОсновныеСтавкиНДС` **ОТСУТСТВУЕТ** в старой конфигурации `CRM3devLocal`
|
||||||
|
- **Результат проверки:** Поиск по старой конфигурации не нашел упоминаний регистра `ОсновныеСтавкиНДС`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Выводы и рекомендации
|
||||||
|
|
||||||
|
### Итоговый результат проверки
|
||||||
|
|
||||||
|
**Все найденные обработчики обновления НЕ ТРЕБУЮТ переноса в старую конфигурацию.**
|
||||||
|
|
||||||
|
### Обработчики, которые НЕ требуют переноса:
|
||||||
|
|
||||||
|
1. **Обработчик `СоздатьЭлементыСтавкиНДС`**
|
||||||
|
- ❌ **НЕ ТРЕБУЕТСЯ** - создает элементы справочника `СтавкиНДС`, который отсутствует в старой конфигурации
|
||||||
|
- При работе по варианту 2 (только перечисление) этот обработчик исключен из необходимых изменений
|
||||||
|
- **Расположение:** `CRM326_TEST/src/CommonModules/УчетНДСЛокализация/Ext/Module.bsl`, строки 782-799
|
||||||
|
|
||||||
|
2. **Обработчик установки основной ставки НДС 22% в регистре ОсновныеСтавкиНДС**
|
||||||
|
- ❌ **НЕ ТРЕБУЕТСЯ** - регистр сведений `ОсновныеСтавкиНДС` отсутствует в старой конфигурации
|
||||||
|
- **Расположение:** Обработчик находится в модуле `УчетНДСРФ` (не в расширении)
|
||||||
|
- **Регистрация:** `CRM326_TEST/src/CommonModules/УчетНДСЛокализация/Ext/Module.bsl`, строки 744-765
|
||||||
|
|
||||||
|
3. **Обработчик первоначального заполнения регистра ОсновныеСтавкиНДС**
|
||||||
|
- ❌ **НЕ ТРЕБУЕТСЯ** - регистр сведений `ОсновныеСтавкиНДС` отсутствует в старой конфигурации
|
||||||
|
- **Расположение:** `CRM326_TEST/src/CommonModules/УчетНДСЛокализация/Ext/Module.bsl`, строки 1759-1793
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Рекомендуемые действия
|
||||||
|
|
||||||
|
✅ **Проверка выполнена:**
|
||||||
|
- Регистр сведений `ОсновныеСтавкиНДС` **отсутствует** в старой конфигурации `CRM3devLocal`
|
||||||
|
- Справочник `СтавкиНДС` **отсутствует** в старой конфигурации `CRM3devLocal`
|
||||||
|
|
||||||
|
**Вывод:** Все найденные обработчики обновления, связанные с переходом на НДС 22%, **не требуют переноса** в старую конфигурацию.
|
||||||
|
|
||||||
|
**Итоговое решение:**
|
||||||
|
- ❌ Обработчик `СоздатьЭлементыСтавкиНДС` - не требуется (создает элементы справочника, который отсутствует)
|
||||||
|
- ❌ Обработчик установки основной ставки НДС 22% в регистре - не требуется (регистр отсутствует)
|
||||||
|
- ❌ Обработчик первоначального заполнения регистра - не требуется (регистр отсутствует)
|
||||||
|
|
||||||
|
**Рекомендация:** При переносе функционала НДС 22% в старую конфигурацию можно **полностью исключить** все обработчики обновления информационной базы, связанные с НДС 22%. Это подтверждает правильность выбранного подхода (вариант 2 - работа только с перечислением).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Связь с документом "Оценка правок для переноса НДС 22%"
|
||||||
|
|
||||||
|
Данный анализ дополняет документ `Оценка_правок_для_переноса_НДС_22 (v1.3).md` информацией о конкретных обработчиках обновления, найденных в новой конфигурации.
|
||||||
|
|
||||||
|
**Соответствие с документом:**
|
||||||
|
- В документе указано, что обработчики обновления для создания элементов справочника исключены из необходимых изменений (строка 29)
|
||||||
|
- Данный анализ подтверждает это решение и уточняет, какие именно обработчики найдены и почему они не требуются
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Примечания
|
||||||
|
|
||||||
|
- Все найденные обработчики находятся в модуле `УчетНДСЛокализация` расширения новой конфигурации
|
||||||
|
- Обработчики связаны с версией "2.5.25.63" платформы 1С
|
||||||
|
- При переносе обработчиков необходимо учитывать различия в структуре данных между старой и новой конфигурациями
|
||||||
|
|
||||||
@@ -0,0 +1,754 @@
|
|||||||
|
---
|
||||||
|
title: Анализ переноса обработки КредитНотаЗаПериод в новую конфигурацию
|
||||||
|
version: 1.4
|
||||||
|
date_created: 2026-01-08
|
||||||
|
date_modified: 2026-01-08
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
description: Анализ различий между старой и новой конфигурациями для переноса обработки КредитНотаЗаПериод. Определение замены документа СписаниеЗадолженности на КорректировкаЗадолженности и адаптация логики работы с признаком КредитНота через дополнительные реквизиты.
|
||||||
|
purpose: Документ предназначен для планирования и выполнения переноса обработки КредитНотаЗаПериод из старой конфигурации CRM3devLocal в новую конфигурацию CRM326/CRM326_TEST с учетом различий в структуре документов и механизме работы с признаком КредитНота.
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ переноса обработки КредитНотаЗаПериод в новую конфигурацию
|
||||||
|
|
||||||
|
## Версия анализа
|
||||||
|
Версия 1.4 от 08.01.2026
|
||||||
|
|
||||||
|
**Изменения в версии 1.4:**
|
||||||
|
- ✅ **Оптимизирована проверка признака Купон через временную таблицу:** Вместо подзапроса в каждом финальном запросе используется временная таблица `РеализацияТоваровУслугСКупоном`, которая создается один раз и используется в нескольких запросах
|
||||||
|
- ✅ Добавлена полная структура пакета запросов с временной таблицей для проверки признака Купон
|
||||||
|
- ✅ Обновлены все варианты проверки признака Купон с использованием временной таблицы
|
||||||
|
|
||||||
|
**Изменения в версии 1.3:**
|
||||||
|
- ✅ **Добавлена адаптация проверки признака Купон:** Условие `СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)` заменено на проверку отсутствия записи в табличной части `ДополнительныеРеквизиты` с заполненным значением свойства `РК_Купон`
|
||||||
|
- ✅ Добавлен раздел 4 "Реализация признака Купон в новой конфигурации" с описанием механизма дополнительных реквизитов и адаптацией запросов
|
||||||
|
- ✅ Обновлен раздел "План действий для переноса" с подразделом 4.2.5 "Адаптация проверки признака Купон"
|
||||||
|
|
||||||
|
**Изменения в версии 1.2:**
|
||||||
|
- ✅ **Исправлена критическая ошибка в запросе:** Условие `ТИПЗНАЧЕНИЯ(ОбъектРасчетов) = ТИП(...)` заменено на соединение со справочником `ОбъектыРасчетов` и проверку реквизита `Объект`
|
||||||
|
- ✅ Добавлено объяснение структуры справочника `ОбъектыРасчетов` и его реквизита `Объект`
|
||||||
|
|
||||||
|
**Изменения в версии 1.1:**
|
||||||
|
- ✅ Выполнена проверка наличия реквизита `СтатьяРасходов` в документе `КорректировкаЗадолженности`
|
||||||
|
- ✅ Подтверждено отсутствие реквизита в шапке документа
|
||||||
|
- ✅ Найден аналог в табличной части `ДоходыРасходыАктивыПассивы` (реквизит `Статья`)
|
||||||
|
- ✅ Обновлены рекомендации по адаптации запросов с учетом фильтрации через табличную часть
|
||||||
|
- ✅ **Исправлена ошибка в запросе:** Условие `ТИПЗНАЧЕНИЯ(ОбъектРасчетов) = ТИП(...)` заменено на соединение со справочником `ОбъектыРасчетов` и проверку реквизита `Объект`
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Определить различия между старой и новой конфигурациями для переноса обработки `КредитНотаЗаПериод`, включая замену документа `СписаниеЗадолженности` на аналог в новой конфигурации и адаптацию логики работы с признаком КредитНота через механизм дополнительных реквизитов.
|
||||||
|
|
||||||
|
## Результаты проверки
|
||||||
|
|
||||||
|
### ✅ Проверка наличия реквизита СтатьяРасходов
|
||||||
|
|
||||||
|
**Дата проверки:** 08.01.2026
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
- ❌ Реквизит `СтатьяРасходов` **ОТСУТСТВУЕТ** в шапке документа `КорректировкаЗадолженности` в новой конфигурации
|
||||||
|
- ✅ Найден аналог в табличной части `ДоходыРасходыАктивыПассивы`: реквизит `Статья` (тип: `ChartOfCharacteristicTypesRef.СтатьиРасходов` или `СтатьиАктивовПассивов` или `СтатьиДоходов`)
|
||||||
|
|
||||||
|
**Вывод:**
|
||||||
|
Для фильтрации по статье в новой конфигурации необходимо использовать подзапрос к табличной части `ДоходыРасходыАктивыПассивы` вместо прямого обращения к реквизиту в шапке документа.
|
||||||
|
|
||||||
|
### ✅ Проверка работы с полем ОбъектРасчетов
|
||||||
|
|
||||||
|
**Дата проверки:** 08.01.2026
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
- ❌ **Критическая ошибка выявлена:** Условие `ТИПЗНАЧЕНИЯ(ОбъектРасчетов) = ТИП("СправочникСсылка.ЗаказКлиента")` **НИКОГДА НЕ ВЫПОЛНИТСЯ**
|
||||||
|
- В новой конфигурации `ОбъектРасчетов` - это справочник `CatalogRef.ОбъектыРасчетов`, а не составной тип
|
||||||
|
- Справочник `ОбъектыРасчетов` имеет реквизит `Объект` типа `DefinedType.ОбъектРасчетов` (составной тип), который может содержать ссылку на `ЗаказКлиента`
|
||||||
|
|
||||||
|
**Правильное решение:**
|
||||||
|
- Добавить соединение со справочником `ОбъектыРасчетов` в запросе
|
||||||
|
- Использовать условие `ОбъектыРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента` вместо `ТИПЗНАЧЕНИЯ(...)`
|
||||||
|
|
||||||
|
**Вывод:**
|
||||||
|
Для получения заказа клиента из поля `ОбъектРасчетов` необходимо использовать соединение со справочником `ОбъектыРасчетов` и проверять реквизит `Объект`, а не сам `ОбъектРасчетов`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Различия в документах
|
||||||
|
|
||||||
|
### 1.1. Старая конфигурация (CRM3devLocal)
|
||||||
|
|
||||||
|
**Документ:** `СписаниеЗадолженности`
|
||||||
|
|
||||||
|
**Структура:**
|
||||||
|
- **Табличная часть:** `Задолженность`
|
||||||
|
- **Поля в табличной части:**
|
||||||
|
- `Заказ` (тип: `ОбъектРасчетов`) - **используется в обработке**
|
||||||
|
- `Партнер` (тип: `CatalogRef.Партнеры`)
|
||||||
|
- `Сумма` (тип: `ДенежнаяСуммаНеотрицательная`)
|
||||||
|
- `ВалютаВзаиморасчетов` (тип: `CatalogRef.Валюты`)
|
||||||
|
- `ИдентификаторСтроки` (тип: `String`)
|
||||||
|
- **Реквизиты в шапке документа:**
|
||||||
|
- `СтатьяРасходов` (тип: `ChartOfCharacteristicTypesRef.СтатьиРасходов`) - **используется в обработке**
|
||||||
|
|
||||||
|
**Расположение:** `crm3-dev/src/Documents/СписаниеЗадолженности/`
|
||||||
|
|
||||||
|
### 1.2. Новая конфигурация (CRM326/CRM326_TEST)
|
||||||
|
|
||||||
|
**Документ:** `КорректировкаЗадолженности`
|
||||||
|
|
||||||
|
**Структура:**
|
||||||
|
- **Табличная часть:** `Задолженность`
|
||||||
|
- **Поля в табличной части:**
|
||||||
|
- `ОбъектРасчетов` (тип: `CatalogRef.ОбъектыРасчетов` или `CatalogRef.ДоговорыКредитовИДепозитов`) - **аналог поля Заказ**
|
||||||
|
- `Партнер` (тип: `CatalogRef.Партнеры`)
|
||||||
|
- `Сумма` (тип: `ДенежнаяСуммаНеотрицательная`)
|
||||||
|
- `ВалютаВзаиморасчетов` (тип: `CatalogRef.Валюты`)
|
||||||
|
- `ИдентификаторСтроки` (тип: `String`)
|
||||||
|
- `ТипРасчетов` (тип: `EnumRef.ТипыРасчетовСПартнерами`)
|
||||||
|
- `ДатаПлатежа` (тип: `Date`)
|
||||||
|
- **Реквизиты в шапке документа:**
|
||||||
|
- `Организация` (тип: `CatalogRef.Организации`)
|
||||||
|
- `Контрагент` (тип: `CatalogRef.Организации` или `CatalogRef.Контрагенты`)
|
||||||
|
- `ХозяйственнаяОперация` (тип: `EnumRef.ХозяйственныеОперации`)
|
||||||
|
- `Комментарий` (тип: `String`)
|
||||||
|
- `РасчетыМеждуОрганизациями` (тип: `Boolean`)
|
||||||
|
- `Основание` (тип: `DocumentRef.ПриобретениеТоваровУслуг`)
|
||||||
|
- `АктОРасхожденияхОснование` (тип: `DocumentRef.АктОРасхожденияхПослеПриемки`)
|
||||||
|
- ❌ **Реквизит `СтатьяРасходов` отсутствует в шапке документа**
|
||||||
|
- **Табличная часть:** `ДоходыРасходыАктивыПассивы`
|
||||||
|
- `Статья` (тип: `ChartOfCharacteristicTypesRef.СтатьиРасходов` или `СтатьиАктивовПассивов` или `СтатьиДоходов`) - **аналог реквизита СтатьяРасходов, но в табличной части**
|
||||||
|
|
||||||
|
**Расположение:** `crm3-26-test/src/Documents/КорректировкаЗадолженности/`
|
||||||
|
|
||||||
|
### 1.3. Ключевые различия
|
||||||
|
|
||||||
|
| Параметр | Старая конфигурация | Новая конфигурация |
|
||||||
|
|----------|---------------------|-------------------|
|
||||||
|
| Название документа | `СписаниеЗадолженности` | `КорректировкаЗадолженности` |
|
||||||
|
| Поле для заказа | `Заказ` (тип: `ОбъектРасчетов`) | `ОбъектРасчетов` (тип: `CatalogRef`) |
|
||||||
|
| СтатьяРасходов | В шапке документа | ⚠️ Требуется проверка |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Использование в обработке КредитНотаЗаПериод
|
||||||
|
|
||||||
|
### 2.1. Текущая реализация в старой конфигурации
|
||||||
|
|
||||||
|
**Расположение:** `crm3-dev/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Ext/Form/Module.bsl`
|
||||||
|
|
||||||
|
**Запрос к документу СписаниеЗадолженности:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
ВЫБРАТЬ
|
||||||
|
СписаниеЗадолженностиЗадолженность.Заказ,
|
||||||
|
СписаниеЗадолженностиЗадолженность.Партнер,
|
||||||
|
СписаниеЗадолженностиЗадолженность.Сумма,
|
||||||
|
СписаниеЗадолженностиЗадолженность.Ссылка.Дата,
|
||||||
|
СписаниеЗадолженностиЗадолженность.Ссылка.СтатьяРасходов
|
||||||
|
ПОМЕСТИТЬ СписаниеЗадолжености
|
||||||
|
ИЗ
|
||||||
|
Документ.СписаниеЗадолженности.Задолженность КАК СписаниеЗадолженностиЗадолженность
|
||||||
|
ГДЕ
|
||||||
|
СписаниеЗадолженностиЗадолженность.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
||||||
|
И СписаниеЗадолженностиЗадолженность.Ссылка.Проведен = ИСТИНА
|
||||||
|
И СписаниеЗадолженностиЗадолженность.Ссылка.СтатьяРасходов = &СтатьяРасходов
|
||||||
|
И СписаниеЗадолженностиЗадолженность.Партнер = &Партнер
|
||||||
|
```
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
1. Находит документы "Списание задолженности" за период
|
||||||
|
2. Определяет заказы клиентов, связанные с этими списаниями (через поле `Заказ`)
|
||||||
|
3. Находит счета-фактуры выданные по этим заказам
|
||||||
|
4. Разделяет счета-фактуры на две группы:
|
||||||
|
- **КредитНоты** - счета-фактуры по заказам, связанным с кредит-нотами
|
||||||
|
- **НеКредитНоты** - остальные счета-фактуры
|
||||||
|
|
||||||
|
### 2.2. Необходимые изменения для новой конфигурации
|
||||||
|
|
||||||
|
**Адаптированный запрос:**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
ВЫБРАТЬ
|
||||||
|
ОбъектыРасчетов.Объект КАК Заказ,
|
||||||
|
КорректировкаЗадолженностиЗадолженность.Партнер,
|
||||||
|
КорректировкаЗадолженностиЗадолженность.Сумма,
|
||||||
|
КорректировкаЗадолженностиЗадолженность.Ссылка.Дата,
|
||||||
|
// ❌ СтатьяРасходов отсутствует в шапке документа
|
||||||
|
// Вместо этого используется табличная часть ДоходыРасходыАктивыПассивы со статьей
|
||||||
|
// Для фильтрации по статье необходимо использовать подзапрос или соединение
|
||||||
|
ПОМЕСТИТЬ КорректировкаЗадолженности
|
||||||
|
ИЗ
|
||||||
|
Документ.КорректировкаЗадолженности.Задолженность КАК КорректировкаЗадолженностиЗадолженность
|
||||||
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
||||||
|
ПО ОбъектыРасчетов.Ссылка = КорректировкаЗадолженностиЗадолженность.ОбъектРасчетов
|
||||||
|
ГДЕ
|
||||||
|
КорректировкаЗадолженностиЗадолженность.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
||||||
|
И КорректировкаЗадолженностиЗадолженность.Ссылка.Проведен = ИСТИНА
|
||||||
|
// ❌ Условие по СтатьяРасходов удалено - реквизит отсутствует в шапке
|
||||||
|
// Альтернатива: фильтрация через табличную часть ДоходыРасходыАктивыПассивы
|
||||||
|
// И КорректировкаЗадолженностиЗадолженность.Ссылка.СтатьяРасходов = &СтатьяРасходов
|
||||||
|
И КорректировкаЗадолженностиЗадолженность.Партнер = &Партнер
|
||||||
|
// ✅ Исправлено: ОбъектРасчетов - это справочник, нужно проверять реквизит Объект
|
||||||
|
И ОбъектыРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента
|
||||||
|
// Дополнительная фильтрация по статье через табличную часть (если требуется)
|
||||||
|
И КорректировкаЗадолженностиЗадолженность.Ссылка В
|
||||||
|
(ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||||
|
КорректировкаЗадолженностиДоходыРасходы.Ссылка
|
||||||
|
ИЗ
|
||||||
|
Документ.КорректировкаЗадолженности.ДоходыРасходыАктивыПассивы КАК КорректировкаЗадолженностиДоходыРасходы
|
||||||
|
ГДЕ
|
||||||
|
КорректировкаЗадолженностиДоходыРасходы.Статья = &СтатьяРасходов)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Критические моменты:**
|
||||||
|
1. ✅ **Тип данных `ОбъектРасчетов`:** В новой конфигурации это справочник `CatalogRef.ОбъектыРасчетов`, а не составной тип. Для получения заказа клиента необходимо:
|
||||||
|
- Добавить соединение со справочником `ОбъектыРасчетов`
|
||||||
|
- Проверять реквизит `Объект` справочника (который имеет тип `DefinedType.ОбъектРасчетов` и может содержать ссылку на `ЗаказКлиента`)
|
||||||
|
- Использовать условие `ОбъектыРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента` вместо `ТИПЗНАЧЕНИЯ(...)`
|
||||||
|
2. ❌ **Реквизит `СтатьяРасходов`:** **ОТСУТСТВУЕТ в шапке документа.** Вместо него используется табличная часть `ДоходыРасходыАктивыПассивы` с реквизитом `Статья`. Для фильтрации по статье необходимо использовать подзапрос или соединение с табличной частью.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Реализация признака КредитНота в новой конфигурации
|
||||||
|
|
||||||
|
### 3.1. Механизм дополнительных реквизитов
|
||||||
|
|
||||||
|
**В расширении новой конфигурации (`crm3-26-test.rhana`):**
|
||||||
|
|
||||||
|
**Расположение:** `crm3-26-test.rhana/src/Documents/РеализацияТоваровУслуг/Ext/ObjectModule.bsl`
|
||||||
|
|
||||||
|
**Реализация:**
|
||||||
|
- Дополнительное свойство: `РК_КредитНота` для документа `РеализацияТоваровУслуг`
|
||||||
|
- Реализовано через план видов характеристик `ДополнительныеРеквизитыИСведения`
|
||||||
|
- В модуле документа есть код: `рк_ИменаДопСвойств.Добавить("РК_КредитНота");`
|
||||||
|
|
||||||
|
### 3.2. Отличия от старой конфигурации
|
||||||
|
|
||||||
|
| Параметр | Старая конфигурация | Новая конфигурация |
|
||||||
|
|----------|---------------------|-------------------|
|
||||||
|
| Хранение признака | Реквизит `КредитНота` в документе `ЗаказКлиента` (тип: `Boolean`) | Дополнительное свойство `РК_КредитНота` в документе `РеализацияТоваровУслуг` |
|
||||||
|
| Доступ к признаку | Прямой доступ: `ЗаказКлиента.КредитНота` | Через `УправлениеСвойствами.ЗначениеСвойства(РеализацияТоваровУслуг, "РК_КредитНота")` |
|
||||||
|
| Механизм | Встроенный реквизит | План видов характеристик `ДополнительныеРеквизитыИСведения` |
|
||||||
|
|
||||||
|
### 3.3. Адаптация работы с признаком в обработке
|
||||||
|
|
||||||
|
**В старой конфигурации:**
|
||||||
|
```bsl
|
||||||
|
// Прямой доступ к реквизиту
|
||||||
|
ЗаказКлиента.КредитНота = ИСТИНА
|
||||||
|
```
|
||||||
|
|
||||||
|
**В новой конфигурации:**
|
||||||
|
```bsl
|
||||||
|
// Доступ через дополнительные реквизиты
|
||||||
|
КредитНота = УправлениеСвойствами.ЗначениеСвойства(
|
||||||
|
РеализацияТоваровУслуг,
|
||||||
|
"РК_КредитНота"
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Альтернативный вариант через запрос:**
|
||||||
|
```bsl
|
||||||
|
ВЫБРАТЬ
|
||||||
|
ДополнительныеРеквизиты.Объект КАК РеализацияТоваровУслуг,
|
||||||
|
ДополнительныеРеквизиты.Значение КАК КредитНота
|
||||||
|
ИЗ
|
||||||
|
РегистрСведений.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизиты
|
||||||
|
ГДЕ
|
||||||
|
ДополнительныеРеквизиты.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.РК_КредитНота)
|
||||||
|
И ДополнительныеРеквизиты.Значение = ИСТИНА
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Реализация признака Купон в новой конфигурации
|
||||||
|
|
||||||
|
### 4.1. Механизм дополнительных реквизитов
|
||||||
|
|
||||||
|
**В расширении новой конфигурации (`crm3-26-test.rhana`):**
|
||||||
|
|
||||||
|
**Расположение:** `crm3-26-test.rhana/src/Documents/РеализацияТоваровУслуг/Ext/ObjectModule.bsl`
|
||||||
|
|
||||||
|
**Реализация:**
|
||||||
|
- Дополнительное свойство: `РК_Купон` для документа `РеализацияТоваровУслуг`
|
||||||
|
- Реализовано через план видов характеристик `ДополнительныеРеквизитыИСведения`
|
||||||
|
- В модуле документа есть код: `рк_ИменаДопСвойств.Добавить("РК_Купон");`
|
||||||
|
|
||||||
|
### 4.2. Отличия от старой конфигурации
|
||||||
|
|
||||||
|
| Параметр | Старая конфигурация | Новая конфигурация |
|
||||||
|
|----------|---------------------|-------------------|
|
||||||
|
| Хранение признака | Реквизит `Купон` в документе `РеализацияТоваровУслуг` (тип: `CatalogRef.Купоны`) | Дополнительное свойство `РК_Купон` в документе `РеализацияТоваровУслуг` |
|
||||||
|
| Проверка пустого значения | `РеализацияТоваровУслуг.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)` | Через проверку отсутствия записи в табличной части `ДополнительныеРеквизиты` или через `УправлениеСвойствами` |
|
||||||
|
| Механизм | Встроенный реквизит | План видов характеристик `ДополнительныеРеквизитыИСведения` |
|
||||||
|
|
||||||
|
### 4.3. Адаптация работы с признаком в запросах
|
||||||
|
|
||||||
|
**В старой конфигурации (строки 47 и 67 функции `ПолучитьДанные`):**
|
||||||
|
```bsl
|
||||||
|
И СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)
|
||||||
|
```
|
||||||
|
|
||||||
|
**В новой конфигурации:**
|
||||||
|
|
||||||
|
**Вариант 1: Проверка через временную таблицу (рекомендуется для производительности):**
|
||||||
|
|
||||||
|
**Создание временной таблицы (добавить в начало пакета запросов):**
|
||||||
|
```bsl
|
||||||
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||||
|
ДополнительныеРеквизиты.Ссылка КАК Ссылка
|
||||||
|
ПОМЕСТИТЬ РеализацияТоваровУслугСКупоном
|
||||||
|
ИЗ
|
||||||
|
Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
|
||||||
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
|
||||||
|
ПО ДополнительныеРеквизитыИСведения.Ссылка = ДополнительныеРеквизиты.Свойство
|
||||||
|
ГДЕ
|
||||||
|
ДополнительныеРеквизитыИСведения.НаименованиеДляРазработчика = "РК_Купон"
|
||||||
|
И ЗначениеЗаполнено(ДополнительныеРеквизиты.Значение)
|
||||||
|
;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Использование временной таблицы в финальных запросах:**
|
||||||
|
```bsl
|
||||||
|
И НЕ СчетФактураВыданный.ДокументОснование.Ссылка В
|
||||||
|
(ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслугСКупоном.Ссылка
|
||||||
|
ИЗ
|
||||||
|
РеализацияТоваровУслугСКупоном КАК РеализацияТоваровУслугСКупоном)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Преимущества:**
|
||||||
|
- ✅ Временная таблица создается один раз и используется в нескольких запросах
|
||||||
|
- ✅ Улучшает производительность за счет однократного выполнения подзапроса
|
||||||
|
- ✅ Упрощает структуру финальных запросов
|
||||||
|
|
||||||
|
**Вариант 2: Проверка через регистр сведений с временной таблицей (если используется регистр):**
|
||||||
|
|
||||||
|
**Создание временной таблицы:**
|
||||||
|
```bsl
|
||||||
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||||
|
ДополнительныеРеквизиты.Объект КАК Ссылка
|
||||||
|
ПОМЕСТИТЬ РеализацияТоваровУслугСКупоном
|
||||||
|
ИЗ
|
||||||
|
РегистрСведений.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизиты
|
||||||
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
|
||||||
|
ПО ДополнительныеРеквизитыИСведения.Ссылка = ДополнительныеРеквизиты.Свойство
|
||||||
|
ГДЕ
|
||||||
|
ДополнительныеРеквизитыИСведения.НаименованиеДляРазработчика = "РК_Купон"
|
||||||
|
И ЗначениеЗаполнено(ДополнительныеРеквизиты.Значение)
|
||||||
|
;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Использование временной таблицы в финальных запросах:**
|
||||||
|
```bsl
|
||||||
|
И НЕ СчетФактураВыданный.ДокументОснование.Ссылка В
|
||||||
|
(ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслугСКупоном.Ссылка
|
||||||
|
ИЗ
|
||||||
|
РеализацияТоваровУслугСКупоном КАК РеализацияТоваровУслугСКупоном)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Примечание:** Условие `НЕ ... В (...)` проверяет, что документ `РеализацияТоваровУслуг` **НЕ** имеет заполненного дополнительного свойства `РК_Купон`, что эквивалентно проверке `Купон = ПустаяСсылка` в старой конфигурации.
|
||||||
|
|
||||||
|
### 4.4. Критические моменты
|
||||||
|
|
||||||
|
1. ✅ **Проверка пустого значения:** В старой конфигурации проверка `Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)` означает, что поле не заполнено. В новой конфигурации это эквивалентно отсутствию записи в табличной части `ДополнительныеРеквизиты` с заполненным значением свойства `РК_Купон`.
|
||||||
|
|
||||||
|
2. ✅ **Производительность:** Использование временной таблицы `РеализацияТоваровУслугСКупоном` оптимизирует запрос, так как подзапрос выполняется один раз, а не в каждом финальном запросе.
|
||||||
|
|
||||||
|
3. ✅ **Логика работы:** Условие используется в двух запросах функции `ПолучитьДанные`:
|
||||||
|
- Запрос для получения кредит-нот по заказам (строка 47)
|
||||||
|
- Запрос для получения остальных документов (строка 67)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. План действий для переноса
|
||||||
|
|
||||||
|
### 4.1. Этап 1: Анализ и оценка
|
||||||
|
|
||||||
|
#### 4.1.1. Проверка наличия реквизита СтатьяРасходов
|
||||||
|
|
||||||
|
**✅ Проверка выполнена:**
|
||||||
|
|
||||||
|
**Результат:** Реквизит `СтатьяРасходов` **ОТСУТСТВУЕТ** в шапке документа `КорректировкаЗадолженности` в новой конфигурации.
|
||||||
|
|
||||||
|
**Найденная альтернатива:**
|
||||||
|
- В табличной части `ДоходыРасходыАктивыПассивы` есть реквизит `Статья` (тип: `ChartOfCharacteristicTypesRef.СтатьиРасходов` или `СтатьиАктивовПассивов` или `СтатьиДоходов`)
|
||||||
|
- Это аналог реквизита `СтатьяРасходов`, но находится в табличной части, а не в шапке
|
||||||
|
|
||||||
|
**Рекомендации:**
|
||||||
|
1. Если фильтрация по статье обязательна, использовать подзапрос к табличной части `ДоходыРасходыАктивыПассивы`
|
||||||
|
2. Если фильтрация не критична, убрать условие из запроса
|
||||||
|
3. Учесть, что в новой конфигурации один документ может иметь несколько статей (в разных строках табличной части)
|
||||||
|
|
||||||
|
#### 4.1.2. Сравнение типов данных
|
||||||
|
|
||||||
|
**✅ Проверка выполнена:**
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
- В новой конфигурации `ОбъектРасчетов` - это справочник `CatalogRef.ОбъектыРасчетов`, а не составной тип
|
||||||
|
- Справочник `ОбъектыРасчетов` имеет реквизит `Объект` типа `DefinedType.ОбъектРасчетов` (составной тип)
|
||||||
|
- Реквизит `Объект` может содержать ссылку на `ЗаказКлиента` и другие документы
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- Использовать соединение со справочником `ОбъектыРасчетов` в запросе
|
||||||
|
- Проверять реквизит `Объект` справочника через условие `ОбъектыРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента`
|
||||||
|
- ❌ **НЕ использовать:** `ТИПЗНАЧЕНИЯ(ОбъектРасчетов) = ТИП(...)` - это условие никогда не выполнится
|
||||||
|
|
||||||
|
#### 4.1.3. Проверка логики работы с признаком КредитНота
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. Изучить реализацию дополнительного свойства `РК_КредитНота` в расширении
|
||||||
|
2. Проверить корректность работы механизма `УправлениеСвойствами`
|
||||||
|
3. Протестировать получение значения свойства через запросы
|
||||||
|
4. Определить оптимальный способ работы с признаком в обработке
|
||||||
|
|
||||||
|
### 4.2. Этап 2: Адаптация запросов
|
||||||
|
|
||||||
|
#### 4.2.1. Замена документа в запросах
|
||||||
|
|
||||||
|
**Изменения:**
|
||||||
|
- `Документ.СписаниеЗадолженности` → `Документ.КорректировкаЗадолженности`
|
||||||
|
- `СписаниеЗадолженностиЗадолженность` → `КорректировкаЗадолженностиЗадолженность`
|
||||||
|
- `СписаниеЗадолжености` → `КорректировкаЗадолженности`
|
||||||
|
|
||||||
|
#### 4.2.2. Замена поля Заказ на ОбъектРасчетов
|
||||||
|
|
||||||
|
**✅ Исправлено:**
|
||||||
|
|
||||||
|
**Изменения:**
|
||||||
|
- `СписаниеЗадолженностиЗадолженность.Заказ` → `ОбъектыРасчетов.Объект КАК Заказ` (через соединение со справочником)
|
||||||
|
- Добавить соединение со справочником:
|
||||||
|
```bsl
|
||||||
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
||||||
|
ПО ОбъектыРасчетов.Ссылка = КорректировкаЗадолженностиЗадолженность.ОбъектРасчетов
|
||||||
|
```
|
||||||
|
- ❌ **НЕ использовать:** `ТИПЗНАЧЕНИЯ(ОбъектРасчетов) = ТИП(...)` - это условие никогда не выполнится
|
||||||
|
- ✅ **Использовать:** `И ОбъектыРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента`
|
||||||
|
|
||||||
|
#### 4.2.3. Адаптация фильтрации по СтатьяРасходов
|
||||||
|
|
||||||
|
**✅ Решение принято:**
|
||||||
|
|
||||||
|
**Реквизит `СтатьяРасходов` отсутствует в шапке документа.** Используется альтернативный подход:
|
||||||
|
|
||||||
|
**Вариант 1: Фильтрация через табличную часть (рекомендуется, если фильтрация обязательна):**
|
||||||
|
```bsl
|
||||||
|
И КорректировкаЗадолженностиЗадолженность.Ссылка В
|
||||||
|
(ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||||
|
КорректировкаЗадолженностиДоходыРасходы.Ссылка
|
||||||
|
ИЗ
|
||||||
|
Документ.КорректировкаЗадолженности.ДоходыРасходыАктивыПассивы КАК КорректировкаЗадолженностиДоходыРасходы
|
||||||
|
ГДЕ
|
||||||
|
КорректировкаЗадолженностиДоходыРасходы.Статья = &СтатьяРасходов)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Вариант 2: Убрать условие фильтрации (если фильтрация не критична):**
|
||||||
|
- Удалить условие `И КорректировкаЗадолженностиЗадолженность.Ссылка.СтатьяРасходов = &СтатьяРасходов`
|
||||||
|
- Документировать причину изменения
|
||||||
|
|
||||||
|
**Примечание:** В новой конфигурации один документ может иметь несколько статей в разных строках табличной части, что может повлиять на логику фильтрации.
|
||||||
|
|
||||||
|
#### 4.2.4. Адаптация работы с признаком КредитНота
|
||||||
|
|
||||||
|
**Изменения:**
|
||||||
|
- Вместо прямого доступа `ЗаказКлиента.КредитНота` использовать:
|
||||||
|
- `УправлениеСвойствами.ЗначениеСвойства(РеализацияТоваровУслуг, "РК_КредитНота")`
|
||||||
|
- Или запрос к регистру `ДополнительныеРеквизитыИСведения`
|
||||||
|
|
||||||
|
#### 4.2.5. Адаптация проверки признака Купон
|
||||||
|
|
||||||
|
**✅ Решение принято:**
|
||||||
|
|
||||||
|
**В старой конфигурации (строки 47 и 67 функции `ПолучитьДанные`):**
|
||||||
|
```bsl
|
||||||
|
И СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)
|
||||||
|
```
|
||||||
|
|
||||||
|
**В новой конфигурации:**
|
||||||
|
|
||||||
|
**Структура пакета запросов с временной таблицей:**
|
||||||
|
|
||||||
|
**1. Создание временной таблицы (добавить после создания таблицы `ЗаказыПоКредитНоте`):**
|
||||||
|
```bsl
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||||
|
ДополнительныеРеквизиты.Ссылка КАК Ссылка
|
||||||
|
ПОМЕСТИТЬ РеализацияТоваровУслугСКупоном
|
||||||
|
ИЗ
|
||||||
|
Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
|
||||||
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
|
||||||
|
ПО ДополнительныеРеквизитыИСведения.Ссылка = ДополнительныеРеквизиты.Свойство
|
||||||
|
ГДЕ
|
||||||
|
ДополнительныеРеквизитыИСведения.НаименованиеДляРазработчика = "РК_Купон"
|
||||||
|
И ЗначениеЗаполнено(ДополнительныеРеквизиты.Значение)
|
||||||
|
;
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. Использование временной таблицы в запросе для получения кредит-нот по заказам:**
|
||||||
|
```bsl
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
ВЫБРАТЬ
|
||||||
|
СчетФактураВыданный.ДокументОснование.Ссылка КАК РеализацияТоваровУслуг,
|
||||||
|
СчетФактураВыданный.Ссылка КАК СчетФактураВыданный
|
||||||
|
ИЗ
|
||||||
|
Документ.СчетФактураВыданный КАК СчетФактураВыданный
|
||||||
|
ГДЕ
|
||||||
|
СчетФактураВыданный.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
||||||
|
И НЕ СчетФактураВыданный.ДокументОснование.Ссылка В
|
||||||
|
(ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслугСКупоном.Ссылка
|
||||||
|
ИЗ
|
||||||
|
РеализацияТоваровУслугСКупоном КАК РеализацияТоваровУслугСКупоном)
|
||||||
|
И СчетФактураВыданный.ДокументОснование.ЗаказКлиента В
|
||||||
|
(ВЫБРАТЬ
|
||||||
|
ЗаказыПоКредитНоте.Ссылка
|
||||||
|
ИЗ
|
||||||
|
ЗаказыПоКредитНоте КАК ЗаказыПоКредитНоте)
|
||||||
|
|
||||||
|
УПОРЯДОЧИТЬ ПО
|
||||||
|
СчетФактураВыданный.ДокументОснование.Дата
|
||||||
|
;
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. Использование временной таблицы в запросе для получения остальных документов:**
|
||||||
|
```bsl
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
ВЫБРАТЬ
|
||||||
|
СчетФактураВыданный.ДокументОснование.Ссылка КАК РеализацияТоваровУслуг,
|
||||||
|
СчетФактураВыданный.Ссылка КАК СчетФактураВыданный
|
||||||
|
ИЗ
|
||||||
|
Документ.СчетФактураВыданный КАК СчетФактураВыданный
|
||||||
|
ГДЕ
|
||||||
|
СчетФактураВыданный.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
||||||
|
И СчетФактураВыданный.ДокументОснование.Партнер = &Партнер
|
||||||
|
И НЕ СчетФактураВыданный.ДокументОснование.Ссылка В
|
||||||
|
(ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслугСКупоном.Ссылка
|
||||||
|
ИЗ
|
||||||
|
РеализацияТоваровУслугСКупоном КАК РеализацияТоваровУслугСКупоном)
|
||||||
|
И СчетФактураВыданный.ДокументОснование.Ссылка В
|
||||||
|
(ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслуг.Ссылка
|
||||||
|
ИЗ
|
||||||
|
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
|
||||||
|
ГДЕ
|
||||||
|
РеализацияТоваровУслуг.Номенклатура В ИЕРАРХИИ (&Номенклатура))
|
||||||
|
И НЕ СчетФактураВыданный.ДокументОснование.ЗаказКлиента В
|
||||||
|
(ВЫБРАТЬ
|
||||||
|
ЗаказыПоКредитНоте.Ссылка
|
||||||
|
ИЗ
|
||||||
|
ЗаказыПоКредитНоте КАК ЗаказыПоКредитНоте)
|
||||||
|
|
||||||
|
УПОРЯДОЧИТЬ ПО
|
||||||
|
СчетФактураВыданный.ДокументОснование.Дата
|
||||||
|
;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Изменения:**
|
||||||
|
- `СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)` → `НЕ СчетФактураВыданный.ДокументОснование.Ссылка В (ВЫБРАТЬ ... ИЗ РеализацияТоваровУслугСКупоном)`
|
||||||
|
- Добавлена временная таблица `РеализацияТоваровУслугСКупоном` для оптимизации производительности
|
||||||
|
- Временная таблица создается один раз и используется в двух финальных запросах
|
||||||
|
|
||||||
|
**Преимущества использования временной таблицы:**
|
||||||
|
- ✅ Подзапрос выполняется один раз вместо двух
|
||||||
|
- ✅ Улучшает производительность запросов
|
||||||
|
- ✅ Упрощает структуру финальных запросов
|
||||||
|
- ✅ Соответствует структуре пакета запросов в старой конфигурации
|
||||||
|
|
||||||
|
**Примечание:** Условие `НЕ ... В (...)` проверяет, что документ `РеализацияТоваровУслуг` **НЕ** имеет заполненного дополнительного свойства `РК_Купон`, что эквивалентно проверке `Купон = ПустаяСсылка` в старой конфигурации.
|
||||||
|
|
||||||
|
### 4.3. Этап 3: Реализация в расширении
|
||||||
|
|
||||||
|
#### 4.3.1. Создание структуры обработки
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. Создать обработку `КредитНотаЗаПериод` в расширении новой конфигурации
|
||||||
|
2. Путь: `crm3-26-test.rhana/src/DataProcessors/КредитНотаЗаПериод/`
|
||||||
|
3. Скопировать структуру из старой конфигурации:
|
||||||
|
- Форма обработки
|
||||||
|
- Макеты печати (если используются)
|
||||||
|
- Модули
|
||||||
|
|
||||||
|
#### 4.3.2. Адаптация модуля формы обработки
|
||||||
|
|
||||||
|
**Изменения:**
|
||||||
|
1. Обновить все запросы для работы с `КорректировкаЗадолженности`
|
||||||
|
2. Добавить логику работы с дополнительными реквизитами для признака КредитНота
|
||||||
|
3. Сохранить логику формирования печатных форм
|
||||||
|
4. Адаптировать все функции и процедуры под новую структуру данных
|
||||||
|
|
||||||
|
#### 4.3.3. Проверка зависимостей
|
||||||
|
|
||||||
|
**Проверить наличие:**
|
||||||
|
- Макеты печати (если используются)
|
||||||
|
- Общие модули:
|
||||||
|
- `РаботаСКурсамиВалют`
|
||||||
|
- `ФормированиеПечатныхФорм`
|
||||||
|
- `ПрефиксацияОбъектовКлиентСервер`
|
||||||
|
- `ПредставлениеДокументов`
|
||||||
|
- Общие формы:
|
||||||
|
- `СписокДокументовПодКредитНоту` (если используется)
|
||||||
|
|
||||||
|
### 4.4. Этап 4: Тестирование
|
||||||
|
|
||||||
|
#### 4.4.1. Проверка корректности запросов
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. Выполнить все запросы в консоли запросов новой конфигурации
|
||||||
|
2. Проверить типы возвращаемых данных
|
||||||
|
3. Убедиться в корректности фильтрации
|
||||||
|
4. Проверить производительность запросов
|
||||||
|
|
||||||
|
#### 4.4.2. Проверка работы с данными
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. Создать тестовые документы `КорректировкаЗадолженности`
|
||||||
|
2. Проверить связь с заказами клиентов через поле `ОбъектРасчетов`
|
||||||
|
3. Проверить работу с признаком `РК_КредитНота` в документах `РеализацияТоваровУслуг`
|
||||||
|
4. Протестировать формирование списка заказов по кредит-нотам
|
||||||
|
|
||||||
|
#### 4.4.3. Проверка формирования отчетов
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. Проверить корректность печатных форм
|
||||||
|
2. Убедиться в правильности сумм и расчетов
|
||||||
|
3. Проверить форматирование данных
|
||||||
|
4. Протестировать экспорт в Word (если используется)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Дополнительные рекомендации
|
||||||
|
|
||||||
|
### 5.1. Документирование изменений
|
||||||
|
|
||||||
|
**Рекомендации:**
|
||||||
|
1. Зафиксировать все изменения в запросах
|
||||||
|
2. Описать различия в структуре данных
|
||||||
|
3. Создать инструкцию по использованию обработки в новой конфигурации
|
||||||
|
4. Документировать все найденные ограничения и особенности
|
||||||
|
|
||||||
|
### 5.2. Обратная совместимость
|
||||||
|
|
||||||
|
**Рекомендации:**
|
||||||
|
1. Если требуется поддержка старой логики, рассмотреть условную обработку
|
||||||
|
2. Возможно, использовать препроцессорные директивы для различения версий
|
||||||
|
3. Обеспечить возможность работы с данными из обеих конфигураций (если требуется)
|
||||||
|
|
||||||
|
### 5.3. Оптимизация
|
||||||
|
|
||||||
|
**Рекомендации:**
|
||||||
|
1. Проверить производительность запросов с дополнительными реквизитами
|
||||||
|
2. При необходимости оптимизировать через индексы или временные таблицы
|
||||||
|
3. Рассмотреть кэширование часто используемых данных
|
||||||
|
4. Профилировать работу обработки на реальных объемах данных
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Критические моменты
|
||||||
|
|
||||||
|
### 6.1. Тип данных ОбъектРасчетов
|
||||||
|
|
||||||
|
**✅ Проблема выявлена и решена:**
|
||||||
|
- В старой конфигурации: `Заказ` типа `DefinedType.ОбъектРасчетов` (составной тип, может быть `ЗаказКлиента`)
|
||||||
|
- В новой конфигурации: `ОбъектРасчетов` типа `CatalogRef.ОбъектыРасчетов` или `CatalogRef.ДоговорыКредитовИДепозитов` (справочник)
|
||||||
|
|
||||||
|
**Структура справочника `ОбъектыРасчетов`:**
|
||||||
|
- Справочник имеет реквизит `Объект` типа `DefinedType.ОбъектРасчетов` (составной тип)
|
||||||
|
- Реквизит `Объект` может содержать ссылку на `ЗаказКлиента` и другие документы
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- ❌ **НЕПРАВИЛЬНО:** `ТИПЗНАЧЕНИЯ(ОбъектРасчетов) = ТИП("СправочникСсылка.ЗаказКлиента")` - никогда не выполнится, т.к. `ОбъектРасчетов` - это справочник, а не документ
|
||||||
|
- ✅ **ПРАВИЛЬНО:** Добавить соединение со справочником и проверять реквизит `Объект`:
|
||||||
|
```bsl
|
||||||
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
||||||
|
ПО ОбъектыРасчетов.Ссылка = КорректировкаЗадолженностиЗадолженность.ОбъектРасчетов
|
||||||
|
...
|
||||||
|
И ОбъектыРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.2. Отсутствие реквизита СтатьяРасходов
|
||||||
|
|
||||||
|
**✅ Проблема подтверждена:**
|
||||||
|
- В старой конфигурации реквизит `СтатьяРасходов` находится в шапке документа и используется для фильтрации
|
||||||
|
- В новой конфигурации реквизит `СтатьяРасходов` **ОТСУТСТВУЕТ** в шапке документа
|
||||||
|
|
||||||
|
**Найденная альтернатива:**
|
||||||
|
- В табличной части `ДоходыРасходыАктивыПассивы` есть реквизит `Статья` (тип: `ChartOfCharacteristicTypesRef.СтатьиРасходов` или другие)
|
||||||
|
- Это аналог реквизита `СтатьяРасходов`, но находится в табличной части
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
1. **Если фильтрация обязательна:** Использовать подзапрос к табличной части `ДоходыРасходыАктивыПассивы` для фильтрации по статье
|
||||||
|
2. **Если фильтрация не критична:** Убрать условие фильтрации по статье
|
||||||
|
3. **Учесть особенности:** В новой конфигурации один документ может иметь несколько статей в разных строках табличной части
|
||||||
|
|
||||||
|
### 6.3. Работа с дополнительными реквизитами
|
||||||
|
|
||||||
|
**Проблема:**
|
||||||
|
- Запросы к дополнительным реквизитам могут быть медленнее прямых запросов к реквизитам
|
||||||
|
- Необходимо использовать `УправлениеСвойствами` или запросы к регистру
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
- Оптимизировать запросы через временные таблицы
|
||||||
|
- Рассмотреть кэширование значений признака КредитНота
|
||||||
|
- Профилировать производительность на реальных данных
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Выводы
|
||||||
|
|
||||||
|
### 7.1. Основные выводы
|
||||||
|
|
||||||
|
1. **Документ заменен:** `СписаниеЗадолженности` → `КорректировкаЗадолженности`
|
||||||
|
2. **Поле заменено:** `Заказ` → `ОбъектРасчетов` (требуется фильтрация по типу)
|
||||||
|
3. **Признак КредитНота:** Переведен на механизм дополнительных реквизитов
|
||||||
|
4. **Реквизит СтатьяРасходов:** Требуется проверка наличия в новой конфигурации
|
||||||
|
|
||||||
|
### 7.2. Необходимые действия
|
||||||
|
|
||||||
|
1. ✅ **Выполнено:** Проверено наличие реквизита `СтатьяРасходов` в документе `КорректировкаЗадолженности` - **отсутствует в шапке, есть аналог в табличной части**
|
||||||
|
2. ⏳ Протестировать работу с полем `ОбъектРасчетов` и фильтрацию по типу
|
||||||
|
3. ⏳ Адаптировать все запросы в обработке под новую структуру (включая фильтрацию по статье через табличную часть)
|
||||||
|
4. ⏳ Реализовать работу с признаком КредитНота через дополнительные реквизиты
|
||||||
|
5. ⏳ Протестировать обработку на реальных данных
|
||||||
|
|
||||||
|
### 7.3. Оценка сложности переноса
|
||||||
|
|
||||||
|
- **Средняя-высокая сложность:** Требуется адаптация запросов, логики работы с признаком и фильтрации по статье через табличную часть
|
||||||
|
- **Риски:**
|
||||||
|
- Различия в типах данных (`ОбъектРасчетов` вместо `Заказ`)
|
||||||
|
- Отсутствие реквизита `СтатьяРасходов` в шапке (требуется фильтрация через табличную часть)
|
||||||
|
- Возможность нескольких статей в одном документе (влияет на логику фильтрации)
|
||||||
|
- **Время:** Ориентировочно 2-3 дня на адаптацию и тестирование
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Приложения
|
||||||
|
|
||||||
|
### 8.1. Сравнительная таблица документов
|
||||||
|
|
||||||
|
| Параметр | СписаниеЗадолженности (старая) | КорректировкаЗадолженности (новая) |
|
||||||
|
|----------|--------------------------------|-----------------------------------|
|
||||||
|
| Название | `СписаниеЗадолженности` | `КорректировкаЗадолженности` |
|
||||||
|
| Табличная часть | `Задолженность` | `Задолженность` |
|
||||||
|
| Поле для заказа | `Заказ` (ОбъектРасчетов) | `ОбъектРасчетов` (CatalogRef) |
|
||||||
|
| Партнер | ✅ Есть | ✅ Есть |
|
||||||
|
| Сумма | ✅ Есть | ✅ Есть |
|
||||||
|
| СтатьяРасходов | ✅ В шапке документа | ❌ Отсутствует в шапке |
|
||||||
|
| Статья | ❌ Нет | ✅ В табличной части `ДоходыРасходыАктивыПассивы` |
|
||||||
|
|
||||||
|
### 8.2. Сравнительная таблица признака КредитНота
|
||||||
|
|
||||||
|
| Параметр | Старая конфигурация | Новая конфигурация |
|
||||||
|
|----------|---------------------|-------------------|
|
||||||
|
| Хранение | Реквизит в `ЗаказКлиента` | Дополнительное свойство в `РеализацияТоваровУслуг` |
|
||||||
|
| Тип | `Boolean` | `Boolean` (через план видов характеристик) |
|
||||||
|
| Доступ | Прямой: `ЗаказКлиента.КредитНота` | Через `УправлениеСвойствами` |
|
||||||
|
| Имя свойства | `КредитНота` | `РК_КредитНота` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Дата создания:** 08.01.2026
|
||||||
|
**Дата последнего изменения:** 08.01.2026
|
||||||
|
**Версия:** 1.0
|
||||||
@@ -0,0 +1,871 @@
|
|||||||
|
---
|
||||||
|
title: Анализ необходимости переноса функционала печати пакета документов и доработок складского учета
|
||||||
|
version: 3.0
|
||||||
|
date_modified: 2025-12-21
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-12-21
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ необходимости переноса функционала печати пакета документов и доработок складского учета
|
||||||
|
|
||||||
|
## Версия документа
|
||||||
|
|
||||||
|
Версия 3.0 от 21.12.2025
|
||||||
|
|
||||||
|
**Изменения в версии 3.0:**
|
||||||
|
|
||||||
|
- Реорганизована структура документа: типовой функционал вынесен в отдельный раздел
|
||||||
|
- Раздел "Сравнение доработок с эталонной конфигурацией" перемещен в начало документа (раздел 1)
|
||||||
|
- Создан раздел 2 "Типовой функционал (не требует переноса)" для четкого разделения типового и кастомного функционала
|
||||||
|
- Раздел 3 "Кастомные доработки, требующие переноса" сфокусирован на доработках, которые необходимо перенести
|
||||||
|
- Убраны упоминания типового функционала из основного анализа кастомных доработок
|
||||||
|
|
||||||
|
**Изменения в версии 2.0:**
|
||||||
|
|
||||||
|
- Добавлен раздел сравнения доработок с эталонной типовой конфигурацией
|
||||||
|
- Проведено сравнение модулей локализации с эталонной конфигурацией CRM302228_etalon
|
||||||
|
- Определены кастомные доработки, требующие переноса
|
||||||
|
- Выявлено, что команды печати ТОРГ-12 являются типовыми (присутствуют в эталоне)
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Провести глубокий анализ по необходимости переноса из исходной конфигурации (включая расширение) в целевую **кастомных доработок** функционала печати пакета документов (ТОРГ-12, Счет-фактура и сопроводительные документы) при формировании ордера на отгрузку (складской учет). Также провести анализ доработок или иного функционала в исходной конфигурации по отношению к целевой в разделах складского учета и логистики.
|
||||||
|
|
||||||
|
**Важно:**
|
||||||
|
|
||||||
|
- В данном анализе основное внимание уделяется **кастомным доработкам**, требующим переноса.
|
||||||
|
- Типовой функционал, присутствующий в эталонной конфигурации `CRM302228_etalon`, вынесен в раздел 2 и **не требует переноса**.
|
||||||
|
- Все кастомные доработки, требующие переноса, описаны в разделе 3.
|
||||||
|
|
||||||
|
## Краткое резюме
|
||||||
|
|
||||||
|
**Типовой функционал (не требует переноса):**
|
||||||
|
|
||||||
|
- Процедуры и функции печати в документе РасходныйОрдерНаТовары (`ДобавитьКомандыПечати()`, `Печать()`, `ПечатьРасходногоОрдераНаТовары()`)
|
||||||
|
- Команды печати ТОРГ-12 в модуле `РеализацияТоваровУслугЛокализация`
|
||||||
|
|
||||||
|
**Кастомные доработки, требующие переноса (критические):**
|
||||||
|
|
||||||
|
1. Функционал печати расходного ордера по основанию (модули локализации + функции в документе РасходныйОрдерНаТовары)
|
||||||
|
2. Раздел "Комплект печатных документов" в форме УправлениеОтгрузкой
|
||||||
|
3. Раздел "Дополнительная обработка" в форме НастройкаПечатиКомплекта
|
||||||
|
|
||||||
|
**Детальный анализ:** см. раздел 3 "Кастомные доработки, требующие переноса"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Сравнение доработок с эталонной типовой конфигурацией
|
||||||
|
|
||||||
|
### 1.1. Методология сравнения
|
||||||
|
|
||||||
|
**Эталонная конфигурация:** `CRM302228_etalon` - типовая эталонная конфигурация версии исходной конфигурации.
|
||||||
|
|
||||||
|
**Цель сравнения:** Определить, какие "доработки" в исходной конфигурации на самом деле являются типовыми (присутствуют в эталонной конфигурации), а какие являются кастомными доработками, требующими переноса.
|
||||||
|
|
||||||
|
### 1.2. Результаты сравнения
|
||||||
|
|
||||||
|
#### 1.2.1. Документ "РасходныйОрдерНаТовары"
|
||||||
|
|
||||||
|
**Типовой функционал (присутствует в эталоне):**
|
||||||
|
|
||||||
|
- ✅ Процедура `ДобавитьКомандыПечати()` - добавляет команды печати:
|
||||||
|
- "Расходный ордер на товары"
|
||||||
|
- "Задание на отбор товаров"
|
||||||
|
- ✅ Процедура `Печать()` - выполняет печать расходного ордера
|
||||||
|
- ✅ Функция `ПечатьРасходногоОрдераНаТовары()` - формирует печатную форму расходного ордера
|
||||||
|
- ✅ Функция `ПолучитьДанныеДляПечатнойФормыОтборРазмещениеТоваров()` - получает данные для печати задания на отбор
|
||||||
|
|
||||||
|
**Кастомные доработки (отсутствуют в эталоне):**
|
||||||
|
|
||||||
|
- ❌ Функция `р_СформироватьПечатнуюФормуОрдераПоОснованию` - формирует печатную форму расходного ордера на основе документов-оснований
|
||||||
|
- ❌ Функция `р_ПолучитьОрдерыНаПечать` - получает список расходных ордеров, связанных с документами-основаниями
|
||||||
|
- ❌ Переопределение функции `р_ПечатьРасходногоОрдераНаТовары` - расширенная печатная форма с дополнительными данными по доставке
|
||||||
|
|
||||||
|
#### 1.2.2. Модули локализации
|
||||||
|
|
||||||
|
**Модуль `РеализацияТоваровУслугЛокализация`:**
|
||||||
|
|
||||||
|
**Типовой функционал:**
|
||||||
|
|
||||||
|
- ✅ Модуль присутствует в эталонной конфигурации
|
||||||
|
- ✅ Процедура `ДобавитьКомандыПечати()` с командами печати ТОРГ-12 (НЕ закомментированы в эталоне)
|
||||||
|
|
||||||
|
**Кастомные доработки:**
|
||||||
|
|
||||||
|
- ❌ Функционал добавления печатной формы "РасходныйОрдерНаТовары" в комплект печатных форм
|
||||||
|
- ❌ Процедура `СформироватьКомплектПечатныхФорм()` с логикой формирования печатной формы расходного ордера
|
||||||
|
- ❌ Процедура `КомплектПечатныхФорм()` с добавлением печатной формы расходного ордера
|
||||||
|
|
||||||
|
**Модуль `ПеремещениеТоваровЛокализация`:**
|
||||||
|
|
||||||
|
**Типовой функционал:**
|
||||||
|
|
||||||
|
- ✅ Модуль присутствует в эталонной конфигурации
|
||||||
|
- ✅ Процедура `ДобавитьКомандыПечати()` с командами печати (ТОРГ-13, М-11, ТТН и др.)
|
||||||
|
|
||||||
|
**Кастомные доработки:**
|
||||||
|
|
||||||
|
- ❌ Функционал добавления печатной формы "РасходныйОрдерНаТовары" в комплект печатных форм
|
||||||
|
- ❌ Процедура `СформироватьКомплектПечатныхФорм()` с логикой формирования печатной формы расходного ордера
|
||||||
|
- ❌ Процедура `КомплектПечатныхФорм()` с добавлением печатной формы расходного ордера
|
||||||
|
|
||||||
|
### 1.3. Итоговая таблица сравнения
|
||||||
|
|
||||||
|
| Объект/Функционал | Статус в эталоне | Тип | Требуется перенос |
|
||||||
|
|-------------------|------------------|-----|-------------------|
|
||||||
|
| Процедура `ДобавитьКомандыПечати()` в документе РасходныйОрдерНаТовары | ✅ Присутствует | Типовое | ❌ Нет |
|
||||||
|
| Процедура `Печать()` в документе РасходныйОрдерНаТовары | ✅ Присутствует | Типовое | ❌ Нет |
|
||||||
|
| Функция `ПечатьРасходногоОрдераНаТовары()` | ✅ Присутствует | Типовое | ❌ Нет |
|
||||||
|
| Команды печати ТОРГ-12 в модуле `РеализацияТоваровУслугЛокализация` | ✅ Присутствует | Типовое | ❌ Нет |
|
||||||
|
| Модуль `РеализацияТоваровУслугЛокализация`: добавление печатной формы расходного ордера | ❌ Отсутствует | Кастомная | ✅ Да |
|
||||||
|
| Модуль `ПеремещениеТоваровЛокализация`: добавление печатной формы расходного ордера | ❌ Отсутствует | Кастомная | ✅ Да |
|
||||||
|
| Функция `р_СформироватьПечатнуюФормуОрдераПоОснованию` | ❌ Отсутствует | Кастомная | ✅ Да |
|
||||||
|
| Функция `р_ПолучитьОрдерыНаПечать` | ❌ Отсутствует | Кастомная | ✅ Да |
|
||||||
|
| Переопределение `р_ПечатьРасходногоОрдераНаТовары` | ❌ Отсутствует | Кастомная | ✅ Да |
|
||||||
|
| Раздел "Комплект печатных документов" в форме УправлениеОтгрузкой | ⚠️ Требуется проверка | Вероятно кастомная | ✅ Да (предварительно) |
|
||||||
|
| Раздел "Дополнительная обработка" в форме НастройкаПечатиКомплекта | ⚠️ Требуется проверка | Вероятно кастомная | ✅ Да (предварительно) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Типовой функционал (не требует переноса)
|
||||||
|
|
||||||
|
### 2.1. Документ "РасходныйОрдерНаТовары"
|
||||||
|
|
||||||
|
**Типовой функционал печати, присутствующий в эталонной конфигурации:**
|
||||||
|
|
||||||
|
- Процедура `ДобавитьКомандыПечати()` - добавляет команды печати:
|
||||||
|
- "Расходный ордер на товары"
|
||||||
|
- "Задание на отбор товаров"
|
||||||
|
- Процедура `Печать()` - выполняет печать расходного ордера
|
||||||
|
- Функция `ПечатьРасходногоОрдераНаТовары()` - формирует печатную форму расходного ордера
|
||||||
|
- Функция `ПолучитьДанныеДляПечатнойФормыОтборРазмещениеТоваров()` - получает данные для печати задания на отбор
|
||||||
|
|
||||||
|
**Вывод:** Данный функционал является типовым и уже должен присутствовать в целевой конфигурации. Перенос не требуется.
|
||||||
|
|
||||||
|
### 2.2. Модули локализации
|
||||||
|
|
||||||
|
**Модуль `РеализацияТоваровУслугЛокализация`:**
|
||||||
|
- Команды печати ТОРГ-12 (присутствуют в эталоне, в исходной конфигурации закомментированы)
|
||||||
|
|
||||||
|
**Модуль `ПеремещениеТоваровЛокализация`:**
|
||||||
|
- Команды печати (ТОРГ-13, М-11, ТТН и др.)
|
||||||
|
|
||||||
|
**Вывод:** Команды печати являются типовым функционалом. Перенос не требуется.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Кастомные доработки, требующие переноса
|
||||||
|
|
||||||
|
### 3.1. Функционал печати расходного ордера по основанию
|
||||||
|
|
||||||
|
#### 3.1.1. Описание доработки
|
||||||
|
|
||||||
|
**Расположение:**
|
||||||
|
|
||||||
|
- Расширение: `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/`
|
||||||
|
- Модули локализации:
|
||||||
|
- `CRM3devLocal.Рана/src/CommonModules/РеализацияТоваровУслугЛокализация/`
|
||||||
|
- `CRM3devLocal.Рана/src/CommonModules/ПеремещениеТоваровЛокализация/`
|
||||||
|
|
||||||
|
**Назначение:** Автоматическое добавление печатной формы расходного ордера на товары в комплект печатных форм документов Реализация и Перемещение при их печати.
|
||||||
|
|
||||||
|
#### 3.1.2. Реализованный функционал
|
||||||
|
|
||||||
|
**1. Модули локализации документов:**
|
||||||
|
|
||||||
|
- **`РеализацияТоваровУслугЛокализация`** (`CRM3devLocal.Рана/src/CommonModules/РеализацияТоваровУслугЛокализация/`)
|
||||||
|
- **`ПеремещениеТоваровЛокализация`** (`CRM3devLocal.Рана/src/CommonModules/ПеремещениеТоваровЛокализация/`)
|
||||||
|
|
||||||
|
**Реализованный функционал:**
|
||||||
|
|
||||||
|
- ✅ В модуле `РеализацияТоваровУслугЛокализация` реализовано добавление печатной формы "РасходныйОрдерНаТовары" в комплект печатных форм документа Реализация
|
||||||
|
- ✅ При печати документа Реализация автоматически формируется и выводится печатная форма расходного ордера на товары (через функцию `р_СформироватьПечатнуюФормуОрдераПоОснованию`)
|
||||||
|
- ✅ Аналогичный функционал реализован в модуле `ПеремещениеТоваровЛокализация` для документа Перемещение
|
||||||
|
|
||||||
|
**2. Документ РасходныйОрдерНаТовары в расширении:**
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/`
|
||||||
|
|
||||||
|
**Реализованные функции:**
|
||||||
|
|
||||||
|
- ✅ Функция `р_СформироватьПечатнуюФормуОрдераПоОснованию` (экспортная) - формирует печатную форму расходного ордера на основе документов-оснований (Реализация или Перемещение)
|
||||||
|
- ✅ Функция `р_ПолучитьОрдерыНаПечать` (экспортная) - получает список расходных ордеров, связанных с документами-основаниями
|
||||||
|
- ✅ Переопределение функции `р_ПечатьРасходногоОрдераНаТовары` - формирует расширенную печатную форму с дополнительными данными по доставке
|
||||||
|
|
||||||
|
#### 3.1.3. Логика работы
|
||||||
|
|
||||||
|
**Процесс использования:**
|
||||||
|
|
||||||
|
1. Пользователь печатает документ Реализация или Перемещение
|
||||||
|
2. Модуль локализации автоматически добавляет печатную форму "РасходныйОрдерНаТовары" в комплект печатных форм
|
||||||
|
3. При формировании комплекта вызывается функция `р_СформироватьПечатнуюФормуОрдераПоОснованию`
|
||||||
|
4. Функция `р_ПолучитьОрдерыНаПечать` находит связанные расходные ордера по документам-основаниям
|
||||||
|
5. Формируется расширенная печатная форма расходного ордера с данными по доставке
|
||||||
|
|
||||||
|
#### 3.1.4. Необходимость переноса
|
||||||
|
|
||||||
|
**Статус:** ⚠️ **КРИТИЧЕСКАЯ ДОРАБОТКА ДЛЯ ПЕРЕНОСА**
|
||||||
|
|
||||||
|
**Что необходимо перенести:**
|
||||||
|
|
||||||
|
1. **Модули локализации (расширение):**
|
||||||
|
- Процедура `КомплектПечатныхФорм()` в модуле `РеализацияТоваровУслугЛокализация`
|
||||||
|
- Процедура `СформироватьКомплектПечатныхФорм()` в модуле `РеализацияТоваровУслугЛокализация`
|
||||||
|
- Аналогичные процедуры в модуле `ПеремещениеТоваровЛокализация`
|
||||||
|
|
||||||
|
2. **Документ РасходныйОрдерНаТовары (расширение):**
|
||||||
|
- Функция `р_СформироватьПечатнуюФормуОрдераПоОснованию` (экспортная)
|
||||||
|
- Функция `р_ПолучитьОрдерыНаПечать` (экспортная)
|
||||||
|
- Переопределение функции `р_ПечатьРасходногоОрдераНаТовары`
|
||||||
|
|
||||||
|
3. **Зависимости:**
|
||||||
|
|
||||||
|
- Модули локализации зависят от стандартных модулей управления печатью
|
||||||
|
- Функции используют стандартные функции печати
|
||||||
|
- Требуется наличие документа РасходныйОрдерНаТовары в целевой конфигурации
|
||||||
|
|
||||||
|
**План переноса:**
|
||||||
|
|
||||||
|
1. Проверить наличие модулей локализации в целевой конфигурации
|
||||||
|
2. Добавить функционал в модули локализации через расширение целевой конфигурации
|
||||||
|
3. Добавить функции в документ РасходныйОрдерНаТовары через расширение целевой конфигурации
|
||||||
|
4. Протестировать автоматическое добавление печатной формы расходного ордера при печати документов Реализация и Перемещение
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3.2. Доработка формы "УправлениеОтгрузкой" - раздел "Комплект печатных документов"
|
||||||
|
|
||||||
|
#### 3.2.1. Описание доработки
|
||||||
|
|
||||||
|
**Обработка:** `Обработка.УправлениеОтгрузкой`
|
||||||
|
**Форма:** `Обработка.УправлениеОтгрузкой.Форма`
|
||||||
|
**Расположение в исходной конфигурации:**
|
||||||
|
- Основная конфигурация: `CRM3devLocal/src/DataProcessors/УправлениеОтгрузкой/`
|
||||||
|
- Расширение: `CRM3devLocal.Рана/src/DataProcessors/УправлениеОтгрузкой/`
|
||||||
|
|
||||||
|
#### 3.2.2. Реализованный функционал
|
||||||
|
|
||||||
|
##### 3.2.2.1. Раздел "Комплект печатных документов"
|
||||||
|
|
||||||
|
**Описание:**
|
||||||
|
|
||||||
|
В форме обработки "УправлениеОтгрузкой" добавлен раздел "Комплект печатных документов" (группа `ГруппаСписокДляПечати`), который позволяет пользователю выбрать документы для печати пакета документов.
|
||||||
|
|
||||||
|
**Элементы формы:**
|
||||||
|
|
||||||
|
- **Группа `ГруппаСписокДляПечати`** - сворачиваемая группа с заголовком "Комплект печатных документов"
|
||||||
|
- По умолчанию свернута (`collapsed = true`)
|
||||||
|
- При разворачивании показывает таблицы документов для выбора
|
||||||
|
- **Таблица `РеализацииТоваровУслуг`** - динамический список документов Реализация товаров и услуг
|
||||||
|
- Используется для выбора документов Реализация для печати
|
||||||
|
- Имеет командную панель с подменю "Печать"
|
||||||
|
- **Таблица `ПеремещенияТоваров`** - динамический список документов Перемещение товаров
|
||||||
|
- Используется для выбора документов Перемещение для печати
|
||||||
|
- Имеет командную панель с подменю "Печать"
|
||||||
|
|
||||||
|
**Команда управления:**
|
||||||
|
|
||||||
|
- **Команда `ОтразитьРеализации`** (заголовок: "Для печати комплекта документов")
|
||||||
|
- Расположение: `CRM3devLocal.Рана/src/DataProcessors/УправлениеОтгрузкой/Forms/Форма/Form.form` (строки 6344-6364)
|
||||||
|
- Обработчик: `р_ОтразитьРеализацииПосле` (клиентский)
|
||||||
|
- Функционал: переключает видимость группы `ГруппаСписокДляПечати`
|
||||||
|
- При показе группы меняет картинку кнопки на "ПерейтиВперед", при скрытии - на "ПерейтиНазад"
|
||||||
|
|
||||||
|
##### 3.2.2.2. Логика работы
|
||||||
|
|
||||||
|
**Процесс использования:**
|
||||||
|
|
||||||
|
1. Пользователь нажимает кнопку "Для печати комплекта документов" (команда `ОтразитьРеализации`)
|
||||||
|
2. Открывается раздел "Комплект печатных документов" с таблицами документов
|
||||||
|
3. В таблицах `РеализацииТоваровУслуг` и `ПеремещенияТоваров` отображаются документы, связанные с текущим распоряжением на отгрузку
|
||||||
|
4. Пользователь выбирает документы в таблицах
|
||||||
|
5. Использует стандартные команды печати из подменю "Печать" в командных панелях таблиц
|
||||||
|
6. При печати документов Реализация или Перемещение автоматически добавляется печатная форма расходного ордера (благодаря модулям локализации, описанным в разделе 1)
|
||||||
|
|
||||||
|
**Особенности реализации:**
|
||||||
|
|
||||||
|
- Раздел "Комплект печатных документов" отображается только при наличии связанных документов
|
||||||
|
- Отбор документов в таблицах устанавливается автоматически на основе текущего распоряжения на отгрузку
|
||||||
|
- Логика отбора реализована в процедуре `р_УстановитьОтборыВЗависимыхСписках` (строки 669-706 в `Module.bsl` расширения)
|
||||||
|
- Поддержка документов типа `РеализацияТоваровУслуг`, `ПеремещениеТоваров` и `ЗаказКлиента`
|
||||||
|
|
||||||
|
#### 3.2.3. Сравнение с типовой конфигурацией
|
||||||
|
|
||||||
|
**В типовой конфигурации:**
|
||||||
|
|
||||||
|
- ❌ Раздел "Комплект печатных документов" отсутствует
|
||||||
|
- ❌ Команда "ОтразитьРеализации" отсутствует
|
||||||
|
- ❌ Таблицы `РеализацииТоваровУслуг` и `ПеремещенияТоваров` в форме отсутствуют
|
||||||
|
|
||||||
|
**В исходной конфигурации (с расширением):**
|
||||||
|
|
||||||
|
- ✅ Раздел "Комплект печатных документов" добавлен
|
||||||
|
- ✅ Команда "ОтразитьРеализации" добавлена
|
||||||
|
- ✅ Таблицы `РеализацииТоваровУслуг` и `ПеремещенияТоваров` добавлены в форму
|
||||||
|
- ✅ Реализована логика автоматического отбора документов по распоряжению
|
||||||
|
|
||||||
|
#### 3.2.4. Выводы и рекомендации
|
||||||
|
|
||||||
|
**Статус:** ⚠️ **КРИТИЧЕСКАЯ ДОРАБОТКА ДЛЯ ПЕРЕНОСА**
|
||||||
|
|
||||||
|
**Необходимость переноса:**
|
||||||
|
|
||||||
|
- ✅ **ОБЯЗАТЕЛЬНО** перенести раздел "Комплект печатных документов" в целевую конфигурацию
|
||||||
|
- ✅ Это не типовая функциональность, а кастомная доработка
|
||||||
|
- ✅ Функционал напрямую связан с печатью пакета документов при отгрузке
|
||||||
|
|
||||||
|
**Что необходимо перенести:**
|
||||||
|
|
||||||
|
1. **Элементы формы:**
|
||||||
|
- Группа `ГруппаСписокДляПечати` с настройками сворачивания
|
||||||
|
- Таблица `РеализацииТоваровУслуг` с командной панелью и подменю "Печать"
|
||||||
|
- Таблица `ПеремещенияТоваров` с командной панелью и подменю "Печать"
|
||||||
|
|
||||||
|
2. **Команда формы:**
|
||||||
|
- Команда `ОтразитьРеализации` с заголовком "Для печати комплекта документов"
|
||||||
|
|
||||||
|
3. **Код модуля формы:**
|
||||||
|
- Процедура `р_ОтразитьРеализацииПосле` (клиентская)
|
||||||
|
- Процедура `р_УстановитьОтборыВЗависимыхСписках` (серверная) - если есть доработки
|
||||||
|
- Процедура `р_ТекущиеРаспоряженияПоОрдеру` (клиентская)
|
||||||
|
- Функция `р_ПолучитьРазпоряжениеОрдера` (серверная без контекста)
|
||||||
|
|
||||||
|
4. **Зависимости:**
|
||||||
|
|
||||||
|
- Модули локализации `РеализацияТоваровУслугЛокализация` и `ПеремещениеТоваровЛокализация` (для автоматической печати расходного ордера)
|
||||||
|
- Функционал печати расходного ордера по основанию (описан в разделе 1)
|
||||||
|
|
||||||
|
**План переноса:**
|
||||||
|
|
||||||
|
1. Проверить наличие обработки `УправлениеОтгрузкой` в целевой конфигурации
|
||||||
|
2. Добавить элементы формы (группу и таблицы) в расширение целевой конфигурации
|
||||||
|
3. Добавить команду `ОтразитьРеализации` в форму
|
||||||
|
4. Перенести код модуля формы из расширения исходной конфигурации
|
||||||
|
5. Проверить работу отбора документов в таблицах
|
||||||
|
6. Протестировать печать комплекта документов
|
||||||
|
|
||||||
|
### 3.3. Доработка формы "НастройкаПечатиКомплекта" - раздел "Дополнительная обработка"
|
||||||
|
|
||||||
|
#### 3.3.1. Описание доработки
|
||||||
|
|
||||||
|
**Регистр сведений:** `РегистрСведений.НастройкиПечатиОбъектов`
|
||||||
|
**Форма:** `РегистрСведений.НастройкиПечатиОбъектов.Форма.НастройкаПечатиКомплекта`
|
||||||
|
**Расположение в исходной конфигурации:**
|
||||||
|
- Основная конфигурация: `CRM3devLocal/src/InformationRegisters/НастройкиПечатиОбъектов/`
|
||||||
|
- Расширение: `CRM3devLocal.Рана/src/InformationRegisters/НастройкиПечатиОбъектов/`
|
||||||
|
|
||||||
|
#### 3.3.2. Реализованный функционал
|
||||||
|
|
||||||
|
##### 3.3.2.1. Раздел "Дополнительная обработка"
|
||||||
|
|
||||||
|
**Описание:**
|
||||||
|
|
||||||
|
В форме настройки печати комплекта документов добавлен раздел "Дополнительная обработка" (группа `ГруппаДополнительнаяОбработка`), который позволяет пользователю настроить поведение при выводе на печать документа из комплекта в зависимости от условий. Пользователь может написать выполняемый код на языке 1С, который будет выполняться для каждого документа перед печатью.
|
||||||
|
|
||||||
|
**Элементы формы:**
|
||||||
|
|
||||||
|
- **Группа `ГруппаДополнительнаяОбработка`** - сворачиваемая группа с заголовком "Дополнительная обработка"
|
||||||
|
- По умолчанию свернута (`collapsed = true`)
|
||||||
|
- При разворачивании показывает поле для ввода кода
|
||||||
|
- **Поле `КомплектПечатныхФормДополнительнаяОбработка`** - поле ввода многострочного текста для выполняемого кода
|
||||||
|
- Тип: `InputField` с режимом редактирования `Enter`
|
||||||
|
- Подсказка содержит описание доступных переменных:
|
||||||
|
- `Объект` - ДокументСсылка на Реализацию товаров и услуг
|
||||||
|
- `Экземпляров` - количество экземпляров
|
||||||
|
- `Печатать` - признак необходимости печати или отключения печатной формы
|
||||||
|
|
||||||
|
##### 3.3.2.2. Техническая реализация
|
||||||
|
|
||||||
|
**Добавление поля в структуру данных:**
|
||||||
|
|
||||||
|
1. В модуле менеджера регистра `НастройкиПечатиОбъектов` (расширение):
|
||||||
|
- Функция `р_ПодготовитьКомплектПечатныхФорм` (переопределение) - добавляет колонку "ДополнительнаяОбработка" в таблицу значений
|
||||||
|
- Процедура `р_СкопироватьПечатнуюФормуВКоллекцию` (переопределение) - копирует значение поля "ДополнительнаяОбработка" из настроек
|
||||||
|
|
||||||
|
2. В модуле `УправлениеПечатьюКлиентСервер` (расширение):
|
||||||
|
- Функция `р_ИменаПолейКоллекцииПечатныхФорм` (переопределение) - добавляет "ДополнительнаяОбработка" в список полей коллекции печатных форм
|
||||||
|
|
||||||
|
**Выполнение кода:**
|
||||||
|
|
||||||
|
В модуле менеджера регистра `НастройкиПечатиОбъектов` (основная конфигурация, строки 509-533) реализована логика выполнения кода:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Если ЗначениеЗаполнено(КомплектыПечати[0].ДополнительнаяОбработка) Тогда
|
||||||
|
|
||||||
|
Объекты = МассивОбъектов;
|
||||||
|
Если МассивОбъектов.Количество() = 1 Тогда
|
||||||
|
Объект = МассивОбъектов[0];
|
||||||
|
Иначе
|
||||||
|
Объект = Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
Экземпляров = КомплектыПечати[0].Экземпляров;
|
||||||
|
Печатать = КомплектыПечати[0].Печатать;
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
Выполнить(КомплектыПечати[0].ДополнительнаяОбработка);
|
||||||
|
КомплектыПечати[0].Экземпляров = Экземпляров;
|
||||||
|
Если Экземпляров = 0 Тогда
|
||||||
|
Печатать = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
КомплектыПечати[0].Печатать = Печатать;
|
||||||
|
Исключение
|
||||||
|
//ОписаниеОшибки()
|
||||||
|
КонецПопытки;
|
||||||
|
Если НЕ Печатать Тогда
|
||||||
|
Возврат КомплектыПечатиПоОбъектам;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
|
||||||
|
1. Перед печатью каждого документа из комплекта проверяется наличие кода в поле "ДополнительнаяОбработка"
|
||||||
|
2. Если код присутствует, инициализируются переменные:
|
||||||
|
- `Объект` - ссылка на документ (если один документ) или `Неопределено` (если несколько)
|
||||||
|
- `Объекты` - массив документов
|
||||||
|
- `Экземпляров` - текущее количество экземпляров из настроек
|
||||||
|
- `Печатать` - текущий признак печати из настроек
|
||||||
|
3. Выполняется код пользователя (команда `Выполнить`)
|
||||||
|
4. После выполнения кода значения `Экземпляров` и `Печатать` обновляются в настройках
|
||||||
|
5. Если `Экземпляров = 0`, то `Печатать` автоматически устанавливается в `Ложь`
|
||||||
|
6. Если `Печатать = Ложь`, документ исключается из печати
|
||||||
|
|
||||||
|
##### 3.3.2.3. Примеры использования
|
||||||
|
|
||||||
|
**Пример 1: Счет на оплату - отмена печати при кредит-ноте**
|
||||||
|
```bsl
|
||||||
|
Если ЗначениеЗаполнено(Объект.ЗаказКлиента) и Объект.ЗаказКлиента.КредитНота Тогда
|
||||||
|
Экземпляров = 0;
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример 2: Товарная накладная без услуг (ТОРГ-12) - проверка комиссионного договора**
|
||||||
|
```bsl
|
||||||
|
ЭтоКомиссионныйДоговор = Ложь;
|
||||||
|
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию ИЛИ
|
||||||
|
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссиюВДругуюОрганизацию ТОГДА
|
||||||
|
ЭтоКомиссионныйДоговор = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЭтоКомиссионныйДоговор Тогда
|
||||||
|
Печатать = Ложь;
|
||||||
|
Экземпляров = 0;
|
||||||
|
ИНАЧЕ
|
||||||
|
ЕСЛИ
|
||||||
|
Объект.СпособДоставки = Перечисления.СпособыДоставки.СиламиПеревозчика
|
||||||
|
ИЛИ Объект.СпособДоставки = Перечисления.СпособыДоставки.СиламиПеревозчикаПоАдресу
|
||||||
|
ИЛИ Объект.ЗаказКлиента.СпособДоставки = Перечисления.СпособыДоставки.СиламиПеревозчикаПоАдресу
|
||||||
|
ТОГДА
|
||||||
|
Экземпляров = Экземпляров + 1;
|
||||||
|
КОНЕЦЕСЛИ;
|
||||||
|
КОНЕЦЕСЛИ;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример 3: Торговая накладная с ГТД (ТОРГ-12) - обратная логика**
|
||||||
|
```bsl
|
||||||
|
ЭтоКомиссионныйДоговор = Ложь;
|
||||||
|
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию ИЛИ
|
||||||
|
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссиюВДругуюОрганизацию ТОГДА
|
||||||
|
ЭтоКомиссионныйДоговор = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ЕСЛИ ЭтоКомиссионныйДоговор Тогда
|
||||||
|
Если Объект.СпособДоставки = Перечисления.СпособыДоставки.СиламиПеревозчика
|
||||||
|
ИЛИ Объект.СпособДоставки = Перечисления.СпособыДоставки.СиламиПеревозчикаПоАдресу
|
||||||
|
ИЛИ Объект.ЗаказКлиента.СпособДоставки = Перечисления.СпособыДоставки.СиламиПеревозчикаПоАдресу
|
||||||
|
ТОГДА
|
||||||
|
Экземпляров = Экземпляров + 1;
|
||||||
|
КонецЕсли;
|
||||||
|
ИНАЧЕ
|
||||||
|
Печатать = Ложь;
|
||||||
|
Экземпляров = 0;
|
||||||
|
КОНЕЦЕСЛИ;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример 4: Сертификаты (реестр, РАНА) - проверка артикула номенклатуры**
|
||||||
|
```bsl
|
||||||
|
АртикулПроверки = "LNK-010100";
|
||||||
|
|
||||||
|
Для каждого строкадокумента из Объект.Товары Цикл
|
||||||
|
Если строкадокумента.Номенклатура.Артикул = АртикулПроверки или
|
||||||
|
строкадокумента.Номенклатура.Родитель.Наименование = "Лаеннек" Тогда
|
||||||
|
Печатать = Ложь;
|
||||||
|
Если Экземпляров = 0 тогда Экземпляров = 1; КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.3.3. Сравнение с типовой конфигурацией
|
||||||
|
|
||||||
|
**В типовой конфигурации:**
|
||||||
|
|
||||||
|
- ❌ Поле "ДополнительнаяОбработка" отсутствует в структуре таблицы КомплектПечатныхФорм
|
||||||
|
- ❌ Раздел "Дополнительная обработка" отсутствует в форме
|
||||||
|
- ❌ Логика выполнения пользовательского кода отсутствует
|
||||||
|
|
||||||
|
**В исходной конфигурации (с расширением):**
|
||||||
|
|
||||||
|
- ✅ Поле "ДополнительнаяОбработка" добавлено в структуру данных
|
||||||
|
- ✅ Раздел "Дополнительная обработка" добавлен в форму
|
||||||
|
- ✅ Реализована логика выполнения пользовательского кода с обработкой ошибок
|
||||||
|
- ✅ Поддержка изменения количества экземпляров и признака печати
|
||||||
|
|
||||||
|
#### 3.3.4. Выводы и рекомендации
|
||||||
|
|
||||||
|
**Статус:** ⚠️ **КРИТИЧЕСКАЯ ДОРАБОТКА ДЛЯ ПЕРЕНОСА**
|
||||||
|
|
||||||
|
**Необходимость переноса:**
|
||||||
|
|
||||||
|
- ✅ **ОБЯЗАТЕЛЬНО** перенести функционал "Дополнительная обработка" в целевую конфигурацию
|
||||||
|
- ✅ Это не типовая функциональность, а кастомная доработка
|
||||||
|
- ✅ Функционал критически важен для бизнес-процессов печати документов
|
||||||
|
- ✅ Позволяет гибко настраивать правила печати документов в зависимости от условий
|
||||||
|
|
||||||
|
**Что необходимо перенести:**
|
||||||
|
|
||||||
|
1. **Модуль менеджера регистра `НастройкиПечатиОбъектов` (расширение):**
|
||||||
|
- Функция `р_ПодготовитьКомплектПечатныхФорм` (переопределение)
|
||||||
|
- Процедура `р_СкопироватьПечатнуюФормуВКоллекцию` (переопределение)
|
||||||
|
|
||||||
|
2. **Модуль `УправлениеПечатьюКлиентСервер` (расширение):**
|
||||||
|
- Функция `р_ИменаПолейКоллекцииПечатныхФорм` (переопределение)
|
||||||
|
|
||||||
|
3. **Модуль менеджера регистра `НастройкиПечатиОбъектов` (основная конфигурация):**
|
||||||
|
- Логика выполнения кода в функции `КомплектыПечатиПоОбъектам` (строки 509-533)
|
||||||
|
- **ВНИМАНИЕ:** Этот код находится в основной конфигурации, но может быть добавлен через расширение
|
||||||
|
|
||||||
|
4. **Элементы формы `НастройкаПечатиКомплекта`:**
|
||||||
|
- Группа `ГруппаДополнительнаяОбработка`
|
||||||
|
- Поле `КомплектПечатныхФормДополнительнаяОбработка`
|
||||||
|
|
||||||
|
5. **Настройки печати:**
|
||||||
|
- Необходимо перенести все сохраненные настройки с кодом дополнительной обработки из исходной системы
|
||||||
|
|
||||||
|
**План переноса:**
|
||||||
|
|
||||||
|
1. Проверить наличие регистра `НастройкиПечатиОбъектов` в целевой конфигурации
|
||||||
|
2. Добавить поле "ДополнительнаяОбработка" в структуру данных через расширение
|
||||||
|
3. Добавить логику выполнения кода в модуль менеджера регистра (через расширение или в основную конфигурацию)
|
||||||
|
4. Добавить элементы формы в расширение целевой конфигурации
|
||||||
|
5. Перенести сохраненные настройки печати с кодом дополнительной обработки
|
||||||
|
6. Протестировать выполнение кода для различных сценариев
|
||||||
|
|
||||||
|
**Особенности реализации:**
|
||||||
|
|
||||||
|
- Код выполняется в контексте сервера
|
||||||
|
- Ошибки выполнения кода обрабатываются (игнорируются), чтобы не прерывать печать других документов
|
||||||
|
- Код может обращаться к любым свойствам и методам документа через переменную `Объект`
|
||||||
|
- Код может изменять количество экземпляров и признак печати
|
||||||
|
- При установке `Экземпляров = 0` автоматически устанавливается `Печатать = Ложь`
|
||||||
|
|
||||||
|
### 3.4. Доработки складского учета и логистики
|
||||||
|
|
||||||
|
#### 3.4.1. Сравнение групп доступа
|
||||||
|
|
||||||
|
##### 3.4.1.1. Группы доступа, отсутствующие в целевой системе
|
||||||
|
|
||||||
|
**Складские и логистические группы (11):**
|
||||||
|
|
||||||
|
1. Добавление изменение складских актов
|
||||||
|
2. Кладовщик
|
||||||
|
3. Кладовщик (без заказов поставщиков)
|
||||||
|
4. Менеджер по доставке
|
||||||
|
5. Менеджер по доставке (без закупок)
|
||||||
|
6. Менеджер по продажам (Без складов)
|
||||||
|
7. Менеджеры по продажам (Заказ и Реализация, без складов)
|
||||||
|
8. Ответственный по работе с документом заказ на перемещение
|
||||||
|
9. Перемещения товаров
|
||||||
|
10. Работник склада
|
||||||
|
11. Чтение документа задания на перевозку
|
||||||
|
|
||||||
|
**Вывод:**
|
||||||
|
|
||||||
|
В целевой системе отсутствуют специализированные группы доступа для складского учета и логистики, что может указывать на различия в функционале или подходе к управлению доступом.
|
||||||
|
|
||||||
|
#### 3.4.2. Документы складского учета
|
||||||
|
|
||||||
|
##### 3.4.2.1. Сравнение документов
|
||||||
|
|
||||||
|
**Документы, присутствующие в обеих конфигурациях:**
|
||||||
|
|
||||||
|
- РасходныйОрдерНаТовары
|
||||||
|
- ПриходныйОрдерНаТовары
|
||||||
|
- ПеремещениеТоваров
|
||||||
|
- ЗаказНаПеремещение
|
||||||
|
- ЗаданиеНаПеревозку
|
||||||
|
- ОтборРазмещениеТоваров
|
||||||
|
- УпаковочныйЛист
|
||||||
|
|
||||||
|
**Документы, требующие проверки на наличие доработок:**
|
||||||
|
|
||||||
|
- РеализацияТоваровУслуг
|
||||||
|
- СчетФактураВыданный
|
||||||
|
- ТранспортнаяНакладная
|
||||||
|
|
||||||
|
##### 3.4.2.2. Доработки в расширении исходной конфигурации
|
||||||
|
|
||||||
|
**Документы расширения "CRM3devLocal.Рана":**
|
||||||
|
|
||||||
|
**Документы, связанные со складским учетом:**
|
||||||
|
|
||||||
|
- `rh_ТоварыНаСкладахСебестоимость` - документ для работы с себестоимостью товаров на складах
|
||||||
|
- `р_ВерсииСебестоимости` - документ для работы с версиями себестоимости
|
||||||
|
- `р_КредитНота` - документ кредит-ноты
|
||||||
|
|
||||||
|
**Документы, связанные с логистикой:**
|
||||||
|
|
||||||
|
- `ЗаданиеНаПеревозку` - присутствует в расширении, требуется проверка на наличие доработок
|
||||||
|
|
||||||
|
**Общие модули расширения:**
|
||||||
|
|
||||||
|
**Модули, связанные с печатью:**
|
||||||
|
|
||||||
|
- `rh_УправлениеПечатью`
|
||||||
|
- `rh_УправлениеПечатьюКлиент`
|
||||||
|
|
||||||
|
**Модули, связанные с себестоимостью:**
|
||||||
|
|
||||||
|
- Возможно, есть модули для работы с себестоимостью (требуется проверка)
|
||||||
|
|
||||||
|
##### 3.4.2.3. Функциональные различия
|
||||||
|
|
||||||
|
**Статусы расходных ордеров:**
|
||||||
|
|
||||||
|
**В исходной конфигурации:**
|
||||||
|
|
||||||
|
- Документ "РасходныйОрдерНаТовары" поддерживает статусы:
|
||||||
|
- Подготовлено
|
||||||
|
- К отбору
|
||||||
|
- К проверке
|
||||||
|
- Проверен
|
||||||
|
- К отгрузке
|
||||||
|
- Отгружен
|
||||||
|
|
||||||
|
**В целевой конфигурации:**
|
||||||
|
|
||||||
|
- Требуется проверка наличия аналогичных статусов
|
||||||
|
|
||||||
|
**Интеграция с доставкой:**
|
||||||
|
|
||||||
|
**В исходной конфигурации:**
|
||||||
|
|
||||||
|
- Документ "РасходныйОрдерНаТовары" имеет реквизиты:
|
||||||
|
- `ОтгрузкаПоЗаданиюНаПеревозку` (булево)
|
||||||
|
- `ЗаданиеНаПеревозку` (ссылка на документ)
|
||||||
|
- `ПорядокДоставки` (строка)
|
||||||
|
|
||||||
|
**В целевой конфигурации:**
|
||||||
|
- Требуется проверка наличия аналогичных реквизитов
|
||||||
|
|
||||||
|
#### 3.4.3. Выводы по доработкам складского учета и логистики
|
||||||
|
|
||||||
|
##### 3.4.3.1. Найденные различия
|
||||||
|
|
||||||
|
1. **Группы доступа:**
|
||||||
|
|
||||||
|
- В целевой системе отсутствуют специализированные группы доступа для складского учета
|
||||||
|
- Это может указывать на упрощенную модель доступа или необходимость создания аналогичных групп
|
||||||
|
|
||||||
|
2. **Документы расширения:**
|
||||||
|
|
||||||
|
- В исходной конфигурации есть документы для работы с себестоимостью товаров на складах
|
||||||
|
- Требуется проверка наличия аналогичного функционала в целевой конфигурации
|
||||||
|
|
||||||
|
3. **Функционал печати:**
|
||||||
|
|
||||||
|
- В расширении исходной конфигурации есть модули управления печатью
|
||||||
|
- Требуется детальная проверка функционала
|
||||||
|
|
||||||
|
##### 3.4.3.2. Рекомендации
|
||||||
|
|
||||||
|
1. **Провести детальный анализ:**
|
||||||
|
|
||||||
|
- Сравнить модули документов складского учета в исходной и целевой конфигурациях
|
||||||
|
- Проверить наличие всех реквизитов и табличных частей
|
||||||
|
- Сравнить обработчики событий и подписки
|
||||||
|
|
||||||
|
2. **Оценить необходимость переноса:**
|
||||||
|
|
||||||
|
- Документы для работы с себестоимостью (`rh_ТоварыНаСкладахСебестоимость`, `р_ВерсииСебестоимости`)
|
||||||
|
- Модули управления печатью (`rh_УправлениеПечатью`)
|
||||||
|
- Доработки в документе "РасходныйОрдерНаТовары"
|
||||||
|
|
||||||
|
3. **Определить зависимости:**
|
||||||
|
|
||||||
|
- Проверить зависимости доработок от других объектов конфигурации
|
||||||
|
- Оценить совместимость с целевой конфигурацией
|
||||||
|
|
||||||
|
### 3.5. Итоговый список кастомных доработок, требующих переноса
|
||||||
|
|
||||||
|
#### 3.5.1. Критические доработки (обязательные для переноса)
|
||||||
|
|
||||||
|
1. **Функционал печати расходного ордера по основанию:**
|
||||||
|
- Модуль `РеализацияТоваровУслугЛокализация`: процедуры `КомплектПечатныхФорм()` и `СформироватьКомплектПечатныхФорм()`
|
||||||
|
- Модуль `ПеремещениеТоваровЛокализация`: аналогичные процедуры
|
||||||
|
- Функция `р_СформироватьПечатнуюФормуОрдераПоОснованию` в документе РасходныйОрдерНаТовары
|
||||||
|
- Функция `р_ПолучитьОрдерыНаПечать` в документе РасходныйОрдерНаТовары
|
||||||
|
- Переопределение функции `р_ПечатьРасходногоОрдераНаТовары` с данными по доставке
|
||||||
|
|
||||||
|
2. **Раздел "Комплект печатных документов" в форме УправлениеОтгрузкой:**
|
||||||
|
- Группа `ГруппаСписокДляПечати`
|
||||||
|
- Таблицы `РеализацииТоваровУслуг` и `ПеремещенияТоваров`
|
||||||
|
- Команда `ОтразитьРеализации`
|
||||||
|
- Код модуля формы (процедуры `р_ОтразитьРеализацииПосле`, `р_УстановитьОтборыВЗависимыхСписках` и др.)
|
||||||
|
|
||||||
|
3. **Раздел "Дополнительная обработка" в форме НастройкаПечатиКомплекта:**
|
||||||
|
- Поле "ДополнительнаяОбработка" в структуре данных регистра `НастройкиПечатиОбъектов`
|
||||||
|
- Группа `ГруппаДополнительнаяОбработка` и поле `КомплектПечатныхФормДополнительнаяОбработка` в форме
|
||||||
|
- Логика выполнения пользовательского кода в модуле менеджера регистра
|
||||||
|
- Переопределения функций в модуле `УправлениеПечатьюКлиентСервер`
|
||||||
|
|
||||||
|
#### 3.5.2. Доработки, требующие дополнительной проверки
|
||||||
|
|
||||||
|
1. **Доработки складского учета:**
|
||||||
|
- Документы для работы с себестоимостью (`rh_ТоварыНаСкладахСебестоимость`, `р_ВерсииСебестоимости`)
|
||||||
|
- Модули управления печатью (`rh_УправлениеПечатью`, `rh_УправлениеПечатьюКлиент`)
|
||||||
|
- Группы доступа для складского учета и логистики
|
||||||
|
|
||||||
|
#### 3.5.3. Опциональные доработки (требуют решения о необходимости)
|
||||||
|
|
||||||
|
1. **Раскомментирование кода печати ТОРГ-12:**
|
||||||
|
- Код присутствует в модуле `РеализацияТоваровУслугЛокализация`, но закомментирован
|
||||||
|
- В эталонной конфигурации команды ТОРГ-12 присутствуют и не закомментированы
|
||||||
|
- Требуется решение: использовать типовой функционал или доработать закомментированный код
|
||||||
|
|
||||||
|
2. **Раскомментирование кода печати Счет-фактура:**
|
||||||
|
- Код присутствует, но закомментирован
|
||||||
|
- Требуется решение о необходимости реализации
|
||||||
|
|
||||||
|
3. **Автоматическая печать пакета документов при проведении расходного ордера:**
|
||||||
|
- В настоящее время не реализовано
|
||||||
|
- Требуется решение о необходимости реализации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. План дальнейших действий
|
||||||
|
|
||||||
|
### 4.1. Необходимые проверки
|
||||||
|
|
||||||
|
1. **Проверка функционала печати пакета документов:**
|
||||||
|
- [ ] Детально изучить модули `rh_УправлениеПечатью` и `rh_УправлениеПечатьюКлиент`
|
||||||
|
- [ ] Проверить общую форму `rh_ПечатьДокументов`
|
||||||
|
- [ ] Найти подписки на события или обработчики, формирующие ТОРГ-12 и Счет-фактура
|
||||||
|
- [ ] Проверить наличие аналогичного функционала в целевой конфигурации
|
||||||
|
|
||||||
|
2. **Проверка доработок складского учета:**
|
||||||
|
- [ ] Сравнить модули документа "РасходныйОрдерНаТовары" в исходной и целевой конфигурациях
|
||||||
|
- [ ] Проверить наличие документов для работы с себестоимостью в целевой конфигурации
|
||||||
|
- [ ] Сравнить обработчики событий и подписки на события
|
||||||
|
- [ ] Проверить наличие всех реквизитов и табличных частей
|
||||||
|
|
||||||
|
3. **Проверка функционала логистики:**
|
||||||
|
- [ ] Сравнить документ "ЗаданиеНаПеревозку" в исходной и целевой конфигурациях
|
||||||
|
- [ ] Проверить интеграцию с доставкой
|
||||||
|
- [ ] Сравнить реквизиты, связанные с доставкой
|
||||||
|
|
||||||
|
### 4.2. Оценка необходимости переноса
|
||||||
|
|
||||||
|
После проведения всех проверок необходимо:
|
||||||
|
|
||||||
|
1. Составить список объектов, требующих переноса
|
||||||
|
2. Оценить сложность переноса каждого объекта
|
||||||
|
3. Определить зависимости между объектами
|
||||||
|
4. Составить план переноса с учетом приоритетов
|
||||||
|
|
||||||
|
### 4.3. Документирование
|
||||||
|
|
||||||
|
1. Создать детальное описание найденного функционала
|
||||||
|
2. Составить техническое задание на перенос (если требуется)
|
||||||
|
3. Документировать различия между конфигурациями
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Заключение
|
||||||
|
|
||||||
|
### 5.1. Текущий статус анализа
|
||||||
|
|
||||||
|
**Кастомные доработки, требующие переноса:**
|
||||||
|
|
||||||
|
✅ **Выявлено и проанализировано:**
|
||||||
|
|
||||||
|
- Функционал печати расходного ордера по основанию (модули локализации + функции в документе РасходныйОрдерНаТовары)
|
||||||
|
- Раздел "Комплект печатных документов" в форме УправлениеОтгрузкой
|
||||||
|
- Раздел "Дополнительная обработка" в форме НастройкаПечатиКомплекта
|
||||||
|
- Различия в группах доступа для складского учета
|
||||||
|
|
||||||
|
⚠️ **Требуется дополнительная проверка:**
|
||||||
|
|
||||||
|
- Документы для работы с себестоимостью (`rh_ТоварыНаСкладахСебестоимость`, `р_ВерсииСебестоимости`)
|
||||||
|
- Модули управления печатью (`rh_УправлениеПечатью`, `rh_УправлениеПечатьюКлиент`)
|
||||||
|
- Наличие аналогичного функционала в целевой конфигурации
|
||||||
|
|
||||||
|
❌ **НЕ реализовано (требует решения о необходимости):**
|
||||||
|
|
||||||
|
- Автоматическая печать ТОРГ-12 и Счет-фактура при проведении расходного ордера
|
||||||
|
- Автоматическое формирование пакета документов при проведении расходного ордера
|
||||||
|
|
||||||
|
### 5.2. Приоритеты переноса
|
||||||
|
|
||||||
|
**Высокий приоритет (критические доработки):**
|
||||||
|
1. Функционал печати расходного ордера по основанию
|
||||||
|
2. Раздел "Комплект печатных документов" в форме УправлениеОтгрузкой
|
||||||
|
3. Раздел "Дополнительная обработка" в форме НастройкаПечатиКомплекта
|
||||||
|
|
||||||
|
**Средний приоритет (требуют проверки):**
|
||||||
|
1. Доработки складского учета (документы для работы с себестоимостью)
|
||||||
|
2. Модули управления печатью
|
||||||
|
|
||||||
|
**Низкий приоритет (опциональные):**
|
||||||
|
1. Раскомментирование кода печати ТОРГ-12 (можно использовать типовой функционал)
|
||||||
|
2. Раскомментирование кода печати Счет-фактура
|
||||||
|
3. Автоматическая печать пакета документов при проведении расходного ордера
|
||||||
|
|
||||||
|
### 5.3. Следующие шаги
|
||||||
|
|
||||||
|
1. Проверить наличие критических доработок в целевой конфигурации
|
||||||
|
2. Начать перенос критических доработок в расширение целевой конфигурации
|
||||||
|
3. Провести детальную проверку модулей управления печатью в расширении исходной конфигурации
|
||||||
|
4. Сравнить модули документов складского учета в исходной и целевой конфигурациях
|
||||||
|
5. Принять решение о необходимости реализации опциональных доработок
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Приложения
|
||||||
|
|
||||||
|
### Приложение А. Список проверенных файлов
|
||||||
|
|
||||||
|
**Эталонная конфигурация:**
|
||||||
|
- `CRM302228_etalon/src/Documents/РасходныйОрдерНаТовары/ManagerModule.bsl`
|
||||||
|
- `CRM302228_etalon/src/CommonModules/РеализацияТоваровУслугЛокализация/Module.bsl`
|
||||||
|
- `CRM302228_etalon/src/CommonModules/ПеремещениеТоваровЛокализация/Module.bsl`
|
||||||
|
|
||||||
|
**Исходная конфигурация:**
|
||||||
|
- `CRM3devLocal/src/Documents/РасходныйОрдерНаТовары/ManagerModule.bsl`
|
||||||
|
|
||||||
|
**Расширение исходной конфигурации (кастомные доработки):**
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/ManagerModule.bsl`
|
||||||
|
- `CRM3devLocal.Рана/src/CommonModules/РеализацияТоваровУслугЛокализация/Module.bsl`
|
||||||
|
- `CRM3devLocal.Рана/src/CommonModules/ПеремещениеТоваровЛокализация/Module.bsl`
|
||||||
|
- `CRM3devLocal.Рана/src/DataProcessors/УправлениеОтгрузкой/Forms/Форма/Module.bsl`
|
||||||
|
- `CRM3devLocal.Рана/src/InformationRegisters/НастройкиПечатиОбъектов/` (требуется детальная проверка)
|
||||||
|
- `CRM3devLocal.Рана/src/CommonModules/rh_УправлениеПечатью/` (требуется проверка)
|
||||||
|
|
||||||
|
**Целевая конфигурация:**
|
||||||
|
- `CRM326/CRM326_TEST/src/Documents/РасходныйОрдерНаТовары/` (требуется проверка наличия кастомных доработок)
|
||||||
|
|
||||||
|
### Приложение Б. Список групп доступа, отсутствующих в целевой системе
|
||||||
|
|
||||||
|
См. файл `docs/active_missing_access_groups.txt`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Примечание:**
|
||||||
|
- Типовой функционал, присутствующий в эталонной конфигурации, вынесен в раздел 2 и не требует переноса.
|
||||||
|
- Основное внимание в документе уделено кастомным доработкам, требующим переноса (раздел 3).
|
||||||
|
- Для получения полной картины требуется проведение дополнительных проверок, указанных в разделе 4 "План дальнейших действий".
|
||||||
|
|
||||||
@@ -0,0 +1,320 @@
|
|||||||
|
# Анализ привязок серий номенклатур к видам номенклатур
|
||||||
|
|
||||||
|
## Дата анализа
|
||||||
|
2024
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Исследование логики привязки серий номенклатур к видам номенклатур, определение отборов при выборе серий и выявление возможных нарушений логики данных.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Отбор серий при выборе в форме "Указание серии в строке товаров"
|
||||||
|
|
||||||
|
### 1.1. Контекст использования
|
||||||
|
Форма `Обработка.ПодборСерийВДокументы.Форма.УказаниеСерииВСтрокеТоваров` используется при заполнении таблицы товаров документа **ввода остатков собственного товара**.
|
||||||
|
|
||||||
|
### 1.2. Вариант получения данных
|
||||||
|
Для документа ввода остатков собственного товара используется вариант получения данных: **`"ВсеСерииНоменклатуры"`**.
|
||||||
|
|
||||||
|
Определение варианта происходит в функции `ВариантПолучениеДанныхИзРегистровПоПараметрамФормы`:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли ПараметрыУказанияСерий.СкладскиеОперации.Найти(Перечисления.СкладскиеОперации.ВводОстатков) <> Неопределено Тогда
|
||||||
|
ВариантПолучениеДанныхИзРегистров = "ВсеСерииНоменклатуры";
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.3. Формирование запроса для отбора серий
|
||||||
|
|
||||||
|
#### 1.3.1. Базовый запрос из регистра движений
|
||||||
|
Для варианта `"ВсеСерииНоменклатуры"` формируется запрос из регистра `ДвиженияСерийТоваров`:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
|
||||||
|
ДвиженияСерийТоваров.Серия,
|
||||||
|
0 КАК СвободныйОстаток
|
||||||
|
ПОМЕСТИТЬ ДанныеРегистров
|
||||||
|
ИЗ
|
||||||
|
РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
|
||||||
|
ГДЕ
|
||||||
|
ДвиженияСерийТоваров.Номенклатура = &Номенклатура
|
||||||
|
И ДвиженияСерийТоваров.Характеристика = &Характеристика
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.3.2. Дополнительный отбор в форме
|
||||||
|
В форме `УказаниеСерииВСтрокеТоваров` добавляется условие:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
ГДЕ
|
||||||
|
ДанныеРегистров.СвободныйОстаток > 0
|
||||||
|
ИЛИ &ВсеСерии
|
||||||
|
```
|
||||||
|
|
||||||
|
Для варианта `"ВсеСерииНоменклатуры"` параметр `ВсеСерии` устанавливается в `Истина`:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Если ВариантПолучениеДанныхИзРегистров <> "ВсеСерииНоменклатуры" Тогда
|
||||||
|
Запрос.УстановитьПараметр("ВсеСерии", РежимОтображенияСерий = "ВсеСерии");
|
||||||
|
Иначе
|
||||||
|
Запрос.УстановитьПараметр("ВсеСерии", Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.4. Итоговый отбор серий для документа ввода остатков
|
||||||
|
|
||||||
|
**При выборе серии в форме для документа ввода остатков собственного товара применяется отбор:**
|
||||||
|
|
||||||
|
1. ✅ **По номенклатуре**: `ДвиженияСерийТоваров.Номенклатура = &Номенклатура`
|
||||||
|
2. ✅ **По характеристике**: `ДвиженияСерийТоваров.Характеристика = &Характеристика`
|
||||||
|
3. ❌ **Без отбора по остаткам**: Показываются **все серии**, которые когда-либо использовались для данной номенклатуры и характеристики (из регистра `ДвиженияСерийТоваров`), независимо от наличия остатков
|
||||||
|
4. ❌ **Без отбора по складу, помещению, назначению**: Эти параметры не учитываются при отборе
|
||||||
|
|
||||||
|
**Вывод**: При вводе остатков можно указывать любые серии, в том числе новые, которые еще не были использованы в движениях.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Логика привязки серий к виду номенклатуры
|
||||||
|
|
||||||
|
### 2.1. Определение владельца серий
|
||||||
|
|
||||||
|
Владелец серий определяется в функции `НастройкиИспользованияСерий` справочника `ВидыНоменклатуры`:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
ВЫБОР
|
||||||
|
КОГДА ВидыНоменклатуры.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
|
||||||
|
ТОГДА ВидыНоменклатуры.ВладелецСерий
|
||||||
|
ИНАЧЕ ВидыНоменклатуры.Ссылка
|
||||||
|
КОНЕЦ КАК ВладелецСерий
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2. Два сценария привязки
|
||||||
|
|
||||||
|
#### Сценарий 1: НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина
|
||||||
|
|
||||||
|
- **ВладелецСерий** = `ВидыНоменклатуры.ВладелецСерий` (другой вид номенклатуры)
|
||||||
|
- **Все серии** для всех номенклатур этого вида привязываются к виду номенклатуры, указанному в поле `ВладелецСерий`
|
||||||
|
- Серии создаются с `ВидНоменклатуры = ВидыНоменклатуры.ВладелецСерий`
|
||||||
|
|
||||||
|
**Пример:**
|
||||||
|
- Вид номенклатуры: "Товары"
|
||||||
|
- `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры` = Истина
|
||||||
|
- `ВладелецСерий` = "Продукция"
|
||||||
|
- **Результат**: Все серии для номенклатур вида "Товары" привязываются к виду "Продукция"
|
||||||
|
|
||||||
|
#### Сценарий 2: НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Ложь
|
||||||
|
|
||||||
|
- **ВладелецСерий** = `ВидыНоменклатуры.Ссылка` (сам вид номенклатуры)
|
||||||
|
- Серии привязываются **непосредственно к самому виду номенклатуры**
|
||||||
|
- Серии создаются с `ВидНоменклатуры = ВидыНоменклатуры.Ссылка`
|
||||||
|
- Поле `ВладелецСерий` вида номенклатуры очищается (если было заполнено)
|
||||||
|
|
||||||
|
**Пример:**
|
||||||
|
- Вид номенклатуры: "Товары"
|
||||||
|
- `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры` = Ложь
|
||||||
|
- **Результат**: Все серии для номенклатур вида "Товары" привязываются к виду "Товары"
|
||||||
|
|
||||||
|
### 2.3. Установка вида номенклатуры при создании серии
|
||||||
|
|
||||||
|
В форме `УказаниеСерииВСтрокеТоваров` вид номенклатуры устанавливается следующим образом:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
ВидНоменклатуры = НастройкиИспользованияСерий.ВладелецСерий;
|
||||||
|
```
|
||||||
|
|
||||||
|
При создании новой серии это значение передается в объект серии:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
ЗаполнитьЗначенияСвойств(СерияОбъект, ЭтотОбъект, РеквизитыВводаСерии(Истина));
|
||||||
|
```
|
||||||
|
|
||||||
|
Где `РеквизитыВводаСерии` включает `ВидНоменклатуры`.
|
||||||
|
|
||||||
|
**Вывод**: Серия привязывается к **`ВладелецСерий`**, который определяется из вида номенклатуры самой номенклатуры, но может быть переопределен через поле `ВладелецСерий` вида номенклатуры, если установлен флаг `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Нарушение логики данных
|
||||||
|
|
||||||
|
### 3.1. Описание проблемы
|
||||||
|
|
||||||
|
**Нарушение**: Если у серии указан вид номенклатуры, у которого установлен флаг `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина`, то это является **нарушением логики данных**.
|
||||||
|
|
||||||
|
**Почему это нарушение:**
|
||||||
|
- Если у вида номенклатуры установлен флаг `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина`, то все серии должны привязываться к `ВладелецСерий`, а не к самому виду номенклатуры
|
||||||
|
- Если серия привязана к виду номенклатуры с таким флагом, то серия должна быть привязана к `ВладелецСерий` этого вида, а не к самому виду
|
||||||
|
|
||||||
|
### 3.2. Как может возникнуть нарушение
|
||||||
|
|
||||||
|
1. **Изменение настроек вида номенклатуры после создания серий**:
|
||||||
|
- Серии были созданы, когда флаг `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры` был `Ложь`
|
||||||
|
- Позже флаг был установлен в `Истина`, но существующие серии не были перепривязаны
|
||||||
|
|
||||||
|
2. **Прямое редактирование серий**:
|
||||||
|
- Ручное изменение вида номенклатуры у серии без учета настроек
|
||||||
|
|
||||||
|
3. **Импорт данных**:
|
||||||
|
- Импорт серий из внешних источников без проверки соответствия логике
|
||||||
|
|
||||||
|
4. **Ошибки в коде**:
|
||||||
|
- Прямое создание серий без использования механизма определения `ВладелецСерий`
|
||||||
|
|
||||||
|
### 3.3. Последствия нарушения
|
||||||
|
|
||||||
|
#### 3.3.1. Проблемы с поиском серий
|
||||||
|
|
||||||
|
**Проблема**: Серии не будут находиться в запросах, которые ищут серии по `ВладелецСерий`.
|
||||||
|
|
||||||
|
**Примеры запросов, где это критично:**
|
||||||
|
|
||||||
|
1. **Поиск серии в форме подбора** (`НайтиСерию`):
|
||||||
|
```sql
|
||||||
|
ВЫБРАТЬ
|
||||||
|
СерииНоменклатуры.Ссылка КАК Серия
|
||||||
|
ИЗ
|
||||||
|
Справочник.СерииНоменклатуры КАК СерииНоменклатуры
|
||||||
|
ГДЕ
|
||||||
|
СерииНоменклатуры.ВидНоменклатуры = &ВидНоменклатуры
|
||||||
|
```
|
||||||
|
Если `ВидНоменклатуры` = `ВладелецСерий`, а серия привязана к исходному виду, серия не будет найдена.
|
||||||
|
|
||||||
|
2. **Запросы с фильтрацией по виду номенклатуры**:
|
||||||
|
```sql
|
||||||
|
СерииНоменклатуры.ВидНоменклатуры = &ВидНоменклатуры
|
||||||
|
```
|
||||||
|
Серии с неправильным видом не попадут в выборку.
|
||||||
|
|
||||||
|
#### 3.3.2. Неправильное применение настроек использования серий
|
||||||
|
|
||||||
|
**Проблема**: Настройки использования серий будут браться из неправильного вида номенклатуры.
|
||||||
|
|
||||||
|
**Пример:**
|
||||||
|
- Вид номенклатуры "Товары" имеет `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина` и `ВладелецСерий = "Продукция"`
|
||||||
|
- Серия привязана к виду "Товары" вместо "Продукция"
|
||||||
|
- Настройки будут браться из вида "Товары", а не из "Продукция"
|
||||||
|
- Это может привести к:
|
||||||
|
- Неправильной проверке заполнения реквизитов серии
|
||||||
|
- Неправильному отображению полей в формах
|
||||||
|
- Неправильной логике работы с сериями
|
||||||
|
|
||||||
|
#### 3.3.3. Проблемы с проверкой соответствия серии и номенклатуры
|
||||||
|
|
||||||
|
**Проблема**: Проверка соответствия серии и номенклатуры может работать некорректно.
|
||||||
|
|
||||||
|
В модуле `НоменклатураСервер` есть проверка:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
И НЕ(Серии.ВидНоменклатуры.ВладелецСерий = Номенклатура.ВидНоменклатуры.ВладелецСерий
|
||||||
|
И Серии.ВидНоменклатуры.ВладелецСерий <> ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)
|
||||||
|
И Номенклатура.ВидНоменклатуры.ВладелецСерий <> ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)
|
||||||
|
ИЛИ Номенклатура.ВладелецСерий = Серии.ВидНоменклатуры
|
||||||
|
ИЛИ Номенклатура.ВидНоменклатуры = Серии.ВидНоменклатуры)
|
||||||
|
```
|
||||||
|
|
||||||
|
Если серия привязана к виду с `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина`, проверка может не сработать корректно.
|
||||||
|
|
||||||
|
#### 3.3.4. Проблемы с интеграциями
|
||||||
|
|
||||||
|
**Проблема**: Интеграции, которые используют `ВидНоменклатуры` серии, могут работать некорректно.
|
||||||
|
|
||||||
|
**Примеры:**
|
||||||
|
- Интеграция с ЕГАИС
|
||||||
|
- Интеграция с ВЕТИС
|
||||||
|
- Интеграция с ГИСМ
|
||||||
|
|
||||||
|
#### 3.3.5. Проблемы с отображением в формах подбора
|
||||||
|
|
||||||
|
**Проблема**: Серии могут не отображаться в формах подбора или отображаться некорректно.
|
||||||
|
|
||||||
|
**Пример:**
|
||||||
|
- В форме подбора серий фильтр по виду номенклатуры не найдет серии с неправильным видом
|
||||||
|
- Пользователь не сможет выбрать нужную серию
|
||||||
|
|
||||||
|
### 3.4. Текущее состояние проверок
|
||||||
|
|
||||||
|
**Проверка отсутствует**: В модуле объекта `СерииНоменклатуры` нет проверки на соответствие вида номенклатуры серии и флага `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры`.
|
||||||
|
|
||||||
|
**Рекомендация**: Добавить проверку в процедуру `ПередЗаписью` или `ОбработкаПроверкиЗаполнения` модуля объекта `СерииНоменклатуры`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Рекомендации
|
||||||
|
|
||||||
|
### 4.1. Добавление проверки целостности данных
|
||||||
|
|
||||||
|
**Рекомендуется добавить проверку** в модуль объекта `СерииНоменклатуры`:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Процедура ПередЗаписью(Отказ)
|
||||||
|
|
||||||
|
// ... существующий код ...
|
||||||
|
|
||||||
|
// Проверка соответствия вида номенклатуры серии и настроек вида номенклатуры
|
||||||
|
Если ЗначениеЗаполнено(ВидНоменклатуры) Тогда
|
||||||
|
РеквизитыВидНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВидНоменклатуры,
|
||||||
|
"НастройкиСерийБерутсяИзДругогоВидаНоменклатуры,ВладелецСерий");
|
||||||
|
|
||||||
|
Если РеквизитыВидНоменклатуры.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры Тогда
|
||||||
|
Если ЗначениеЗаполнено(РеквизитыВидНоменклатуры.ВладелецСерий) Тогда
|
||||||
|
Если ВидНоменклатуры <> РеквизитыВидНоменклатуры.ВладелецСерий Тогда
|
||||||
|
ТекстОшибки = НСтр("ru = 'Серия не может быть привязана к виду номенклатуры ""%ВидНоменклатуры%"", так как у этого вида номенклатуры установлен флаг ""Настройки серий берутся из другого вида номенклатуры"". Серия должна быть привязана к виду номенклатуры ""%ВладелецСерий%"".");
|
||||||
|
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ВидНоменклатуры%", ВидНоменклатуры);
|
||||||
|
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ВладелецСерий%", РеквизитыВидНоменклатуры.ВладелецСерий);
|
||||||
|
|
||||||
|
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "ВидНоменклатуры", "Объект", Отказ);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2. Создание обработки для исправления существующих данных
|
||||||
|
|
||||||
|
**Рекомендуется создать обработку** для поиска и исправления серий с неправильной привязкой:
|
||||||
|
|
||||||
|
1. Найти все серии, у которых `ВидНоменклатуры.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина`
|
||||||
|
2. Проверить, что `ВидНоменклатуры` серии = `ВладелецСерий` вида номенклатуры
|
||||||
|
3. Если не соответствует - перепривязать серию к правильному виду
|
||||||
|
|
||||||
|
### 4.3. Документирование логики
|
||||||
|
|
||||||
|
**Рекомендуется:**
|
||||||
|
- Добавить комментарии в код, объясняющие логику привязки серий
|
||||||
|
- Создать инструкцию для разработчиков о правильном создании серий
|
||||||
|
- Добавить предупреждения в формы создания/редактирования серий
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Выводы
|
||||||
|
|
||||||
|
1. ✅ **Отбор серий для документа ввода остатков**: Отбор идет по номенклатуре и характеристике из регистра `ДвиженияСерийТоваров`, без учета остатков, склада, помещения и назначения.
|
||||||
|
|
||||||
|
2. ✅ **Логика привязки серий**: Серии привязываются к `ВладелецСерий`, который определяется из вида номенклатуры. Если установлен флаг `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина`, то серии привязываются к виду, указанному в поле `ВладелецСерий`.
|
||||||
|
|
||||||
|
3. ⚠️ **Нарушение логики данных**: Если у серии указан вид номенклатуры с флагом `НастройкиСерийБерутсяИзДругогоВидаНоменклатуры = Истина`, это является нарушением логики данных.
|
||||||
|
|
||||||
|
4. ⚠️ **Последствия нарушения**:
|
||||||
|
- Серии не будут находиться в запросах поиска
|
||||||
|
- Неправильное применение настроек использования серий
|
||||||
|
- Проблемы с проверкой соответствия серии и номенклатуры
|
||||||
|
- Проблемы с интеграциями
|
||||||
|
- Проблемы с отображением в формах подбора
|
||||||
|
|
||||||
|
5. ✅ **Рекомендации**:
|
||||||
|
- Добавить проверку целостности данных в модуль объекта `СерииНоменклатуры`
|
||||||
|
- Создать обработку для исправления существующих данных
|
||||||
|
- Документировать логику привязки серий
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Ссылки на код
|
||||||
|
|
||||||
|
- Форма подбора серий: `crm3-dev/src/DataProcessors/ПодборСерийВДокументы/Forms/УказаниеСерииВСтрокеТоваров/Ext/Form/Module.bsl`
|
||||||
|
- Модуль обработки подбора серий: `crm3-dev/src/DataProcessors/ПодборСерийВДокументы/Ext/ManagerModule.bsl`
|
||||||
|
- Модуль объекта серий: `crm3-dev/src/Catalogs/СерииНоменклатуры/Ext/ObjectModule.bsl`
|
||||||
|
- Модуль менеджера видов номенклатуры: `crm3-dev/src/Catalogs/ВидыНоменклатуры/Ext/ManagerModule.bsl`
|
||||||
|
- Модуль объекта видов номенклатуры: `crm3-dev/src/Catalogs/ВидыНоменклатуры/Ext/ObjectModule.bsl`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Документ создан на основе анализа кода конфигурации crm3-dev*
|
||||||
@@ -0,0 +1,336 @@
|
|||||||
|
---
|
||||||
|
title: Анализ применения признака Кредит-нота (КредитНота) в исходной конфигурации
|
||||||
|
version: 1.1
|
||||||
|
date_modified: 2025-12-27
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-12-27
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ применения признака Кредит-нота (КредитНота) в исходной конфигурации
|
||||||
|
|
||||||
|
## Версия анализа
|
||||||
|
Версия 1.1 от 27.12.2025
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Определить, где и для чего применяется признак "Кредит-нота" (КредитНота) в основной исходной конфигурации `CRM3devLocal` и расширении `CRM3devLocal.Рана`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
### 1.1. Документ ЗаказКлиента
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo`
|
||||||
|
|
||||||
|
**Реквизит:**
|
||||||
|
- **Имя:** `КредитНота`
|
||||||
|
- **Тип:** `Boolean` (Булево)
|
||||||
|
- **Синonym:** "Кредит нота"
|
||||||
|
- **Описание:** Признак того, что заказ клиента является кредит-нотой
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Используется для маркировки заказов клиентов, которые являются кредит-нотами
|
||||||
|
- Позволяет идентифицировать заказы, по которым предоставляется кредит-нота (возврат средств или корректировка задолженности)
|
||||||
|
|
||||||
|
**Использование в коде:**
|
||||||
|
- В обработке `КредитНотаЗаПериод` используется для определения заказов, связанных с кредит-нотами
|
||||||
|
- В запросах проверяется условие: `НЕ ЕСТЬNULL(РеализацияТоваровУслуг.ЗаказКлиента.КредитНота, ЛОЖЬ)`
|
||||||
|
- ⚠️ Примечание: Документ `rh_ОтражениеФактаПродаж` содержит код для работы с КредитНота, но сам документ не применяется
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.2. Документ rh_ОтражениеФактаПродаж
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/rh_ОтражениеФактаПродаж/Forms/ФормаДокумента/Module.bsl`
|
||||||
|
|
||||||
|
**Статус:** ⚠️ **НЕ ПРИМЕНЯЕТСЯ** - документ присутствует в конфигурации, но не используется в текущей версии
|
||||||
|
|
||||||
|
**Примечание:** Несмотря на наличие кода, использующего признак КредитНота в этом документе, сам документ не применяется в рабочей конфигурации.
|
||||||
|
|
||||||
|
**Код (для справки):**
|
||||||
|
|
||||||
|
1. **В функции `ПолучитьЗапросДокументовЗаПериод_CRM3()`:**
|
||||||
|
- Используется дополнительное свойство "ЗаказКлиентаКредитНота" из плана видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
- Проверяется наличие признака кредит-ноты через соединение с дополнительными реквизитами заказа клиента
|
||||||
|
- Условие фильтрации: `ЕСТЬNULL(ЗаказКлиентаДополнительныеРеквизиты.Значение, ЛОЖЬ) = ЛОЖЬ`
|
||||||
|
|
||||||
|
2. **В функции `ПолучитьЗапросДокументовЗаПериод_CRM2()`:**
|
||||||
|
- Прямая проверка реквизита: `НЕ ЕСТЬNULL(РеализацияТоваровУслуг.ЗаказКлиента.КредитНота, ЛОЖЬ)`
|
||||||
|
- Используется для исключения документов реализации с кредит-нотами из списка документов для отражения факта продаж
|
||||||
|
|
||||||
|
**Назначение (теоретическое):**
|
||||||
|
- Исключение документов реализации, связанных с кредит-нотами, из процесса отражения факта продаж
|
||||||
|
- Разделение учета обычных продаж и кредит-нот
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.3. Отчет КредитНота
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Reports/КредитНота/`
|
||||||
|
|
||||||
|
**Описание:**
|
||||||
|
- Отчет для формирования кредит-нот
|
||||||
|
- Использует схему компоновки данных с полями:
|
||||||
|
- `КоличествоКредитНота` - количество по кредит-ноте
|
||||||
|
- `СуммаСНДСКредитНота` - сумма с НДС по кредит-ноте
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Формирование печатных форм кредит-нот
|
||||||
|
- Аналитика по кредит-нотам
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.4. Обработка КредитНотаЗаПериод
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/`
|
||||||
|
|
||||||
|
**Функционал:**
|
||||||
|
- Формирование списка документов для кредит-нот за период
|
||||||
|
- Работа со списанием задолженности
|
||||||
|
- Определение заказов клиентов, связанных с кредит-нотами через списание задолженности
|
||||||
|
- Разделение счетов-фактур на две группы:
|
||||||
|
- **КредитНоты** - счета-фактуры по заказам, связанным с кредит-нотами
|
||||||
|
- **НеКредитНоты** - остальные счета-фактуры
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
1. Находит документы "Списание задолженности" за период
|
||||||
|
2. Определяет заказы клиентов, связанные с этими списаниями
|
||||||
|
3. Находит счета-фактуры выданные по этим заказам
|
||||||
|
4. Разделяет счета-фактуры на две группы для дальнейшей обработки
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Автоматизация процесса формирования кредит-нот за период
|
||||||
|
- Группировка документов для печати кредит-нот
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.5. Общая форма СписокДокументовПодКредитНоту
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/CommonForms/СписокДокументовПодКредитНоту/Module.bsl`
|
||||||
|
|
||||||
|
**Функционал:**
|
||||||
|
- Форма для выбора документов реализации для формирования кредит-ноты
|
||||||
|
- Печать кредит-ноты через MS Word
|
||||||
|
- Формирование описания документов для кредит-ноты
|
||||||
|
|
||||||
|
**Использование:**
|
||||||
|
- Выбор документов реализации за период (до 4 месяцев назад)
|
||||||
|
- Формирование печатной формы кредит-ноты с описанием выбранных документов
|
||||||
|
- Печать через `УправлениеПечатьюMSWordКлиент.ПечатьКредитНота()`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.6. Роль доступа КредитНота
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Roles/КредитНота/`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Предоставляет права доступа на работу с кредит-нотами
|
||||||
|
- Включает права на отчет "КредитНота"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.7. Общий шаблон КредитНота
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/CommonTemplates/КредитНота/`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Шаблон для печати кредит-нот
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Расширение CRM3devLocal.Рана
|
||||||
|
|
||||||
|
### 2.1. Документ р_КредитНота (Оформление кредит-ноты)
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/р_КредитНота/`
|
||||||
|
|
||||||
|
**Описание:**
|
||||||
|
- Отдельный документ для оформления кредит-ноты
|
||||||
|
- Является расширением основной конфигурации
|
||||||
|
|
||||||
|
**Реквизиты:**
|
||||||
|
- Организация
|
||||||
|
- Контрагент
|
||||||
|
- ДокументОснование (РеализацияТоваровУслуг)
|
||||||
|
- Партнер (Клиент)
|
||||||
|
- Соглашение
|
||||||
|
- Договор
|
||||||
|
- И другие реквизиты для оформления кредит-ноты
|
||||||
|
|
||||||
|
**Регистры записей:**
|
||||||
|
- `р_ОформленныеКредитНоты` - регистр сведений для учета оформленных кредит-нот
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Формализованное оформление кредит-нот как отдельного документа
|
||||||
|
- Учет оформленных кредит-нот в регистре сведений
|
||||||
|
- Интеграция с документом "Реализация товаров и услуг" через поле "ДокументОснование"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2.2. Роль доступа "Оформление кредит-ноты (Рана)"
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Roles/р_ОтчетыБрендМенеджера/Rights.rights`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Предоставляет права на документ `р_КредитНота`
|
||||||
|
- Входит в подсистему `rh_RhanaПодсистема`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Связи и взаимодействия
|
||||||
|
|
||||||
|
### 3.1. Связь ЗаказКлиента → РеализацияТоваровУслуг
|
||||||
|
|
||||||
|
**Механизм:**
|
||||||
|
- В документе "Реализация товаров и услуг" есть ссылка на "ЗаказКлиента"
|
||||||
|
- Через эту ссылку доступен реквизит `ЗаказКлиента.КредитНота`
|
||||||
|
- Используется для фильтрации и идентификации реализаций, связанных с кредит-нотами
|
||||||
|
|
||||||
|
### 3.2. Связь через дополнительные реквизиты
|
||||||
|
|
||||||
|
**Механизм (для CRM3):**
|
||||||
|
- Используется план видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
- Свойство "ЗаказКлиентаКредитНота" хранится в дополнительных реквизитах
|
||||||
|
- Позволяет гибко настраивать признак кредит-ноты
|
||||||
|
|
||||||
|
### 3.3. Связь со списанием задолженности
|
||||||
|
|
||||||
|
**Механизм:**
|
||||||
|
- Документ "Списание задолженности" может быть связан с заказами клиентов
|
||||||
|
- Обработка "КредитНотаЗаПериод" использует эту связь для определения заказов по кредит-нотам
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Назначение и бизнес-логика
|
||||||
|
|
||||||
|
### 4.1. Основное назначение
|
||||||
|
|
||||||
|
**Кредит-нота** - это документ, который:
|
||||||
|
1. Оформляется для корректировки задолженности перед клиентом
|
||||||
|
2. Может быть связан с возвратом товаров или корректировкой сумм
|
||||||
|
3. Используется для уменьшения задолженности клиента перед организацией
|
||||||
|
|
||||||
|
### 4.2. Бизнес-процесс
|
||||||
|
|
||||||
|
1. **Создание заказа клиента** с установленным признаком `КредитНота = Истина`
|
||||||
|
2. **Создание документа реализации** на основании заказа с кредит-нотой
|
||||||
|
3. **Оформление списания задолженности** (опционально)
|
||||||
|
4. **Формирование кредит-ноты** через:
|
||||||
|
- Отчет "КредитНота"
|
||||||
|
- Обработку "КредитНотаЗаПериод"
|
||||||
|
- Документ "р_КредитНота" (в расширении)
|
||||||
|
5. **Печать кредит-ноты** через общую форму "СписокДокументовПодКредитНоту"
|
||||||
|
|
||||||
|
### 4.3. Исключение из учета
|
||||||
|
|
||||||
|
- ⚠️ **Примечание:** Документ "rh_ОтражениеФактаПродаж" не применяется в текущей конфигурации
|
||||||
|
- Теоретически документы реализации с кредит-нотами должны исключаться из процесса "Отражение факта продаж"
|
||||||
|
- Это позволяет разделить учет обычных продаж и кредит-нот
|
||||||
|
- Кредит-ноты не учитываются в фактах продаж для планирования
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Печатные формы
|
||||||
|
|
||||||
|
### 5.1. Макеты печати в документе РеализацияТоваровУслуг
|
||||||
|
|
||||||
|
В документе "Реализация товаров и услуг" определены следующие макеты для кредит-нот:
|
||||||
|
|
||||||
|
- `ПФ_DOC_КредитНота` - основной макет
|
||||||
|
- `ПФ_DOC_КредитНотаДилер` - для дилеров
|
||||||
|
- `ПФ_DOC_КредитНотаМедицина` - для медицинских представителей
|
||||||
|
- `ПФ_DOC_КредитНотаИглы2018` - специализированный макет
|
||||||
|
- `ПФ_DOC_КредитНотаДилерское2018` - для дилеров (версия 2018)
|
||||||
|
- `ПФ_DOC_КредитНотаФармДистКвартал` - для фармацевтических дистрибьюторов
|
||||||
|
- `ПФ_DOC_КредитНотаКурасен` - специализированный макет
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Различные форматы печати кредит-нот в зависимости от типа клиента и бизнес-процесса
|
||||||
|
- Адаптация под специфику различных направлений бизнеса
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Выводы и рекомендации
|
||||||
|
|
||||||
|
### 6.1. Основные выводы
|
||||||
|
|
||||||
|
1. **Признак КредитНота** в документе "ЗаказКлиента" используется для маркировки заказов, связанных с кредит-нотами
|
||||||
|
|
||||||
|
2. **Два подхода к работе с кредит-нотами:**
|
||||||
|
- **Основная конфигурация:** Использует признак в заказе и отчеты/обработки для формирования
|
||||||
|
- **Расширение Рана:** Добавляет отдельный документ "р_КредитНота" для формализованного оформления
|
||||||
|
|
||||||
|
3. **Исключение из учета:** Документы с кредит-нотами исключаются из процесса "Отражение факта продаж"
|
||||||
|
|
||||||
|
4. **Множество печатных форм:** Различные макеты для разных типов клиентов и бизнес-процессов
|
||||||
|
|
||||||
|
### 6.2. Рекомендации
|
||||||
|
|
||||||
|
1. При переносе функционала в целевую конфигурацию необходимо:
|
||||||
|
- Сохранить признак `КредитНота` в документе "ЗаказКлиента"
|
||||||
|
- Обеспечить логику исключения из "Отражения факта продаж"
|
||||||
|
- Перенести или адаптировать отчеты и обработки
|
||||||
|
|
||||||
|
2. Рассмотреть возможность использования документа "р_КредитНота" из расширения как основного способа оформления кредит-нот
|
||||||
|
|
||||||
|
3. Проверить совместимость печатных форм с целевой конфигурацией
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Сводная таблица применения реквизита КредитНота
|
||||||
|
|
||||||
|
| Объект | Реквизит/Элемент | Тип | Использование | Контекст применения | Печатные формы |
|
||||||
|
|--------|------------------|-----|---------------|---------------------|----------------|
|
||||||
|
| Документ "ЗаказКлиента" | КредитНота | Boolean | Маркировка заказов как кредит-нот | Реквизит документа для указания признака кредит-ноты | ❌ Не используется |
|
||||||
|
| Документ "ЗаказКлиента" (форма) | КредитНота | Boolean | Отображение в форме документа | Элемент формы для работы пользователя (расширение Рана) | - |
|
||||||
|
| Документ "rh_ОтражениеФактаПродаж" | ЗаказКлиента.КредитНота | Boolean | Исключение из учета фактов продаж | ⚠️ НЕ ПРИМЕНЯЕТСЯ - фильтрация через `НЕ ЕСТЬNULL(РеализацияТоваровУслуг.ЗаказКлиента.КредитНота, ЛОЖЬ)` | - |
|
||||||
|
| Обработка "КредитНотаЗаПериод" | ЗаказКлиента.КредитНота | Boolean | Определение заказов по кредит-нотам | Определяет заказы, связанные со списанием задолженности, для формирования кредит-нот | - |
|
||||||
|
| Отчет "КредитНота" | - | - | Формирование данных по кредит-нотам | Использует связь через списание задолженности для определения заказов по кредит-нотам | ✅ Используется |
|
||||||
|
| Отчет "р_КонтрольВыполненияПланаЗакупок" | ЗаказКлиента.КредитНота | Boolean | Исключение заказов с кредит-нотами | Фильтрация: `ЗаказКлиента.КредитНота = ЛОЖЬ` и `ЗаказКлиентаТовары.Ссылка.КредитНота = ЛОЖЬ` | - |
|
||||||
|
| Обработка "р_ИмпортЗаказовКлиентов" | КредитНота | Boolean | Импорт признака кредит-ноты | Столбец в шаблоне импорта для указания признака при импорте заказов | - |
|
||||||
|
| Общая форма "СписокДокументовПодКредитНоту" | - | - | Печать кредит-нот | Формирование печатных форм кредит-нот через MS Word | ✅ Используется |
|
||||||
|
| Документ "РеализацияТоваровУслуг" | ЗаказКлиента.КредитНота | Boolean | Доступ через связь с заказом | Доступ к признаку через связь `РеализацияТоваровУслуг.ЗаказКлиента.КредитНота` | ✅ Используется (7 макетов) |
|
||||||
|
|
||||||
|
**Условные обозначения:**
|
||||||
|
- ✅ Используется
|
||||||
|
- ❌ Не используется
|
||||||
|
- - Не применимо
|
||||||
|
- ⚠️ НЕ ПРИМЕНЯЕТСЯ - объект присутствует в конфигурации, но не используется в текущей версии
|
||||||
|
|
||||||
|
**Примечания:**
|
||||||
|
1. Реквизит `КредитНота` определен в документе "ЗаказКлиента" как булево значение
|
||||||
|
2. В документе "rh_ОтражениеФактаПродаж" используется для исключения документов реализации с кредит-нотами из процесса отражения факта продаж, но сам документ не применяется
|
||||||
|
3. В обработке "КредитНотаЗаПериод" реквизит используется косвенно - через определение заказов, связанных со списанием задолженности
|
||||||
|
4. В отчете "р_КонтрольВыполненияПланаЗакупок" реквизит используется для исключения заказов с кредит-нотами из плана закупок
|
||||||
|
5. В документе "РеализацияТоваровУслуг" доступ к реквизиту осуществляется через связь с заказом клиента
|
||||||
|
6. Печатные формы кредит-нот определены в документе "РеализацияТоваровУслуг" (7 различных макетов)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Список объектов, связанных с КредитНота
|
||||||
|
|
||||||
|
### Основная конфигурация:
|
||||||
|
- `Document.ЗаказКлиента` - реквизит КредитНота
|
||||||
|
- `Document.rh_ОтражениеФактаПродаж` - ⚠️ НЕ ПРИМЕНЯЕТСЯ (содержит код для фильтрации, но документ не используется)
|
||||||
|
- `Report.КредитНота` - отчет для формирования кредит-нот
|
||||||
|
- `DataProcessor.КредитНотаЗаПериод` - обработка для формирования за период
|
||||||
|
- `CommonForm.СписокДокументовПодКредитНоту` - форма для печати
|
||||||
|
- `Role.КредитНота` - роль доступа
|
||||||
|
- `CommonTemplate.КредитНота` - шаблон печати
|
||||||
|
- `Document.РеализацияТоваровУслуг` - макеты печати (7 различных)
|
||||||
|
|
||||||
|
### Расширение Рана:
|
||||||
|
- `Document.р_КредитНота` - документ оформления кредит-ноты
|
||||||
|
- `InformationRegister.р_ОформленныеКредитНоты` - регистр учета оформленных кредит-нот
|
||||||
|
- Роль доступа в подсистеме `rh_RhanaПодсистема`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Версия документа:** 1.1 от 27.12.2025
|
||||||
|
|
||||||
@@ -0,0 +1,581 @@
|
|||||||
|
---
|
||||||
|
title: Анализ применения признака Кредит-нота (КредитНота) в исходной конфигурации
|
||||||
|
version: 2.0
|
||||||
|
date_modified: 2026-01-07
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-12-27
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ применения признака Кредит-нота (КредитНота) в исходной конфигурации
|
||||||
|
|
||||||
|
## Версия анализа
|
||||||
|
Версия 2.0 от 07.01.2026
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Определить, где и для чего применяется признак "Кредит-нота" (КредитНота) в основной исходной конфигурации `CRM3devLocal` и расширении `CRM3devLocal.Рана`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
### 1.1. Документ ЗаказКлиента
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo`
|
||||||
|
|
||||||
|
**Реквизит:**
|
||||||
|
- **Имя:** `КредитНота`
|
||||||
|
- **Тип:** `Boolean` (Булево)
|
||||||
|
- **Синonym:** "Кредит нота"
|
||||||
|
- **Описание:** Признак того, что заказ клиента является кредит-нотой
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Используется для маркировки заказов клиентов, которые являются кредит-нотами
|
||||||
|
- Позволяет идентифицировать заказы, по которым предоставляется кредит-нота (возврат средств или корректировка задолженности)
|
||||||
|
|
||||||
|
**Использование в коде:**
|
||||||
|
- В обработке `КредитНотаЗаПериод` используется для определения заказов, связанных с кредит-нотами
|
||||||
|
- В запросах проверяется условие: `НЕ ЕСТЬNULL(РеализацияТоваровУслуг.ЗаказКлиента.КредитНота, ЛОЖЬ)`
|
||||||
|
- ⚠️ Примечание: Документ `rh_ОтражениеФактаПродаж` содержит код для работы с КредитНота, но сам документ не применяется
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.2. Документ rh_ОтражениеФактаПродаж
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/rh_ОтражениеФактаПродаж/Forms/ФормаДокумента/Module.bsl`
|
||||||
|
|
||||||
|
**Статус:** ⚠️ **НЕ ПРИМЕНЯЕТСЯ** - документ присутствует в конфигурации, но не используется в текущей версии
|
||||||
|
|
||||||
|
**Примечание:** Несмотря на наличие кода, использующего признак КредитНота в этом документе, сам документ не применяется в рабочей конфигурации.
|
||||||
|
|
||||||
|
**Код (для справки):**
|
||||||
|
|
||||||
|
1. **В функции `ПолучитьЗапросДокументовЗаПериод_CRM3()`:**
|
||||||
|
- Используется дополнительное свойство "ЗаказКлиентаКредитНота" из плана видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
- Проверяется наличие признака кредит-ноты через соединение с дополнительными реквизитами заказа клиента
|
||||||
|
- Условие фильтрации: `ЕСТЬNULL(ЗаказКлиентаДополнительныеРеквизиты.Значение, ЛОЖЬ) = ЛОЖЬ`
|
||||||
|
|
||||||
|
2. **В функции `ПолучитьЗапросДокументовЗаПериод_CRM2()`:**
|
||||||
|
- Прямая проверка реквизита: `НЕ ЕСТЬNULL(РеализацияТоваровУслуг.ЗаказКлиента.КредитНота, ЛОЖЬ)`
|
||||||
|
- Используется для исключения документов реализации с кредит-нотами из списка документов для отражения факта продаж
|
||||||
|
|
||||||
|
**Назначение (теоретическое):**
|
||||||
|
- Исключение документов реализации, связанных с кредит-нотами, из процесса отражения факта продаж
|
||||||
|
- Разделение учета обычных продаж и кредит-нот
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.3. Отчет КредитНота
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Reports/КредитНота/`
|
||||||
|
|
||||||
|
**Описание:**
|
||||||
|
- Отчет для формирования кредит-нот
|
||||||
|
- Использует схему компоновки данных с полями:
|
||||||
|
- `КоличествоКредитНота` - количество по кредит-ноте
|
||||||
|
- `СуммаСНДСКредитНота` - сумма с НДС по кредит-ноте
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Формирование печатных форм кредит-нот
|
||||||
|
- Аналитика по кредит-нотам
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.4. Обработка КредитНотаЗаПериод
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/`
|
||||||
|
|
||||||
|
**Функционал:**
|
||||||
|
- Формирование списка документов для кредит-нот за период
|
||||||
|
- Работа со списанием задолженности
|
||||||
|
- Определение заказов клиентов, связанных с кредит-нотами через списание задолженности
|
||||||
|
- Разделение счетов-фактур на две группы:
|
||||||
|
- **КредитНоты** - счета-фактуры по заказам, связанным с кредит-нотами
|
||||||
|
- **НеКредитНоты** - остальные счета-фактуры
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
1. Находит документы "Списание задолженности" за период
|
||||||
|
2. Определяет заказы клиентов, связанные с этими списаниями
|
||||||
|
3. Находит счета-фактуры выданные по этим заказам
|
||||||
|
4. Разделяет счета-фактуры на две группы для дальнейшей обработки
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Автоматизация процесса формирования кредит-нот за период
|
||||||
|
- Группировка документов для печати кредит-нот
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.5. Общая форма СписокДокументовПодКредитНоту
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/CommonForms/СписокДокументовПодКредитНоту/Module.bsl`
|
||||||
|
|
||||||
|
**Функционал:**
|
||||||
|
- Форма для выбора документов реализации для формирования кредит-ноты
|
||||||
|
- Печать кредит-ноты через MS Word
|
||||||
|
- Формирование описания документов для кредит-ноты
|
||||||
|
|
||||||
|
**Использование:**
|
||||||
|
- Выбор документов реализации за период (до 4 месяцев назад)
|
||||||
|
- Формирование печатной формы кредит-ноты с описанием выбранных документов
|
||||||
|
- Печать через `УправлениеПечатьюMSWordКлиент.ПечатьКредитНота()`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.6. Роль доступа КредитНота
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Roles/КредитНота/`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Предоставляет права доступа на работу с кредит-нотами
|
||||||
|
- Включает права на отчет "КредитНота"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.7. Общий шаблон КредитНота
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/CommonTemplates/КредитНота/`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Шаблон для печати кредит-нот
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Расширение CRM3devLocal.Рана
|
||||||
|
|
||||||
|
### 2.1. Документ р_КредитНота (Оформление кредит-ноты)
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/р_КредитНота/`
|
||||||
|
|
||||||
|
**Описание:**
|
||||||
|
- Отдельный документ для оформления кредит-ноты
|
||||||
|
- Является расширением основной конфигурации
|
||||||
|
|
||||||
|
**Реквизиты:**
|
||||||
|
- Организация
|
||||||
|
- Контрагент
|
||||||
|
- ДокументОснование (РеализацияТоваровУслуг)
|
||||||
|
- Партнер (Клиент)
|
||||||
|
- Соглашение
|
||||||
|
- Договор
|
||||||
|
- И другие реквизиты для оформления кредит-ноты
|
||||||
|
|
||||||
|
**Регистры записей:**
|
||||||
|
- `р_ОформленныеКредитНоты` - регистр сведений для учета оформленных кредит-нот
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Формализованное оформление кредит-нот как отдельного документа
|
||||||
|
- Учет оформленных кредит-нот в регистре сведений
|
||||||
|
- Интеграция с документом "Реализация товаров и услуг" через поле "ДокументОснование"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2.2. Роль доступа "Оформление кредит-ноты (Рана)"
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Roles/р_ОтчетыБрендМенеджера/Rights.rights`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Предоставляет права на документ `р_КредитНота`
|
||||||
|
- Входит в подсистему `rh_RhanaПодсистема`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Связи и взаимодействия
|
||||||
|
|
||||||
|
### 3.1. Связь ЗаказКлиента → РеализацияТоваровУслуг
|
||||||
|
|
||||||
|
**Механизм:**
|
||||||
|
- В документе "Реализация товаров и услуг" есть ссылка на "ЗаказКлиента"
|
||||||
|
- Через эту ссылку доступен реквизит `ЗаказКлиента.КредитНота`
|
||||||
|
- Используется для фильтрации и идентификации реализаций, связанных с кредит-нотами
|
||||||
|
|
||||||
|
### 3.2. Связь через дополнительные реквизиты
|
||||||
|
|
||||||
|
**Механизм (для CRM3):**
|
||||||
|
- Используется план видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
- Свойство "ЗаказКлиентаКредитНота" хранится в дополнительных реквизитах
|
||||||
|
- Позволяет гибко настраивать признак кредит-ноты
|
||||||
|
|
||||||
|
### 3.3. Связь со списанием задолженности
|
||||||
|
|
||||||
|
**Механизм:**
|
||||||
|
- Документ "Списание задолженности" может быть связан с заказами клиентов
|
||||||
|
- Обработка "КредитНотаЗаПериод" использует эту связь для определения заказов по кредит-нотам
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Назначение и бизнес-логика
|
||||||
|
|
||||||
|
### 4.1. Основное назначение
|
||||||
|
|
||||||
|
**Кредит-нота** - это документ, который:
|
||||||
|
1. Оформляется для корректировки задолженности перед клиентом
|
||||||
|
2. Может быть связан с возвратом товаров или корректировкой сумм
|
||||||
|
3. Используется для уменьшения задолженности клиента перед организацией
|
||||||
|
|
||||||
|
### 4.2. Бизнес-процесс
|
||||||
|
|
||||||
|
1. **Создание заказа клиента** с установленным признаком `КредитНота = Истина`
|
||||||
|
2. **Создание документа реализации** на основании заказа с кредит-нотой
|
||||||
|
3. **Оформление списания задолженности** (опционально)
|
||||||
|
4. **Формирование кредит-ноты** через:
|
||||||
|
- Отчет "КредитНота"
|
||||||
|
- Обработку "КредитНотаЗаПериод"
|
||||||
|
- Документ "р_КредитНота" (в расширении)
|
||||||
|
5. **Печать кредит-ноты** через общую форму "СписокДокументовПодКредитНоту"
|
||||||
|
|
||||||
|
### 4.3. Исключение из учета
|
||||||
|
|
||||||
|
- ⚠️ **Примечание:** Документ "rh_ОтражениеФактаПродаж" не применяется в текущей конфигурации
|
||||||
|
- Теоретически документы реализации с кредит-нотами должны исключаться из процесса "Отражение факта продаж"
|
||||||
|
- Это позволяет разделить учет обычных продаж и кредит-нот
|
||||||
|
- Кредит-ноты не учитываются в фактах продаж для планирования
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Печатные формы
|
||||||
|
|
||||||
|
### 5.1. Макеты печати в документе РеализацияТоваровУслуг
|
||||||
|
|
||||||
|
В документе "Реализация товаров и услуг" определены следующие макеты для кредит-нот:
|
||||||
|
|
||||||
|
- `ПФ_DOC_КредитНота` - основной макет
|
||||||
|
- `ПФ_DOC_КредитНотаДилер` - для дилеров
|
||||||
|
- `ПФ_DOC_КредитНотаМедицина` - для медицинских представителей
|
||||||
|
- `ПФ_DOC_КредитНотаИглы2018` - специализированный макет
|
||||||
|
- `ПФ_DOC_КредитНотаДилерское2018` - для дилеров (версия 2018)
|
||||||
|
- `ПФ_DOC_КредитНотаФармДистКвартал` - для фармацевтических дистрибьюторов
|
||||||
|
- `ПФ_DOC_КредитНотаКурасен` - специализированный макет
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
- Различные форматы печати кредит-нот в зависимости от типа клиента и бизнес-процесса
|
||||||
|
- Адаптация под специфику различных направлений бизнеса
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Выводы и рекомендации
|
||||||
|
|
||||||
|
### 6.1. Основные выводы
|
||||||
|
|
||||||
|
1. **Признак КредитНота** в документе "ЗаказКлиента" используется для маркировки заказов, связанных с кредит-нотами
|
||||||
|
|
||||||
|
2. **Два подхода к работе с кредит-нотами:**
|
||||||
|
- **Основная конфигурация:** Использует признак в заказе и отчеты/обработки для формирования
|
||||||
|
- **Расширение Рана:** Добавляет отдельный документ "р_КредитНота" для формализованного оформления
|
||||||
|
|
||||||
|
3. **Исключение из учета:** Документы с кредит-нотами исключаются из процесса "Отражение факта продаж"
|
||||||
|
|
||||||
|
4. **Множество печатных форм:** Различные макеты для разных типов клиентов и бизнес-процессов
|
||||||
|
|
||||||
|
### 6.2. Рекомендации
|
||||||
|
|
||||||
|
1. При переносе функционала в целевую конфигурацию необходимо:
|
||||||
|
- Сохранить признак `КредитНота` в документе "ЗаказКлиента"
|
||||||
|
- Обеспечить логику исключения из "Отражения факта продаж"
|
||||||
|
- Перенести или адаптировать отчеты и обработки
|
||||||
|
|
||||||
|
2. Рассмотреть возможность использования документа "р_КредитНота" из расширения как основного способа оформления кредит-нот
|
||||||
|
|
||||||
|
3. Проверить совместимость печатных форм с целевой конфигурацией
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Сводная таблица применения реквизита КредитНота
|
||||||
|
|
||||||
|
| Объект | Реквизит/Элемент | Тип | Использование | Контекст применения | Печатные формы |
|
||||||
|
|--------|------------------|-----|---------------|---------------------|----------------|
|
||||||
|
| Документ "ЗаказКлиента" | КредитНота | Boolean | Маркировка заказов как кредит-нот | Реквизит документа для указания признака кредит-ноты | ❌ Не используется |
|
||||||
|
| Документ "ЗаказКлиента" (форма) | КредитНота | Boolean | Отображение в форме документа | Элемент формы для работы пользователя (расширение Рана) | - |
|
||||||
|
| Документ "rh_ОтражениеФактаПродаж" | ЗаказКлиента.КредитНота | Boolean | Исключение из учета фактов продаж | ⚠️ НЕ ПРИМЕНЯЕТСЯ - фильтрация через `НЕ ЕСТЬNULL(РеализацияТоваровУслуг.ЗаказКлиента.КредитНота, ЛОЖЬ)` | - |
|
||||||
|
| Обработка "КредитНотаЗаПериод" | ЗаказКлиента.КредитНота | Boolean | Определение заказов по кредит-нотам | Определяет заказы, связанные со списанием задолженности, для формирования кредит-нот | - |
|
||||||
|
| Отчет "КредитНота" | - | - | Формирование данных по кредит-нотам | Использует связь через списание задолженности для определения заказов по кредит-нотам | ✅ Используется |
|
||||||
|
| Отчет "р_КонтрольВыполненияПланаЗакупок" | ЗаказКлиента.КредитНота | Boolean | Исключение заказов с кредит-нотами | Фильтрация: `ЗаказКлиента.КредитНота = ЛОЖЬ` и `ЗаказКлиентаТовары.Ссылка.КредитНота = ЛОЖЬ` | - |
|
||||||
|
| Обработка "р_ИмпортЗаказовКлиентов" | КредитНота | Boolean | Импорт признака кредит-ноты | Столбец в шаблоне импорта для указания признака при импорте заказов | - |
|
||||||
|
| Общая форма "СписокДокументовПодКредитНоту" | - | - | Печать кредит-нот | Формирование печатных форм кредит-нот через MS Word | ✅ Используется |
|
||||||
|
| Документ "РеализацияТоваровУслуг" | ЗаказКлиента.КредитНота | Boolean | Доступ через связь с заказом | Доступ к признаку через связь `РеализацияТоваровУслуг.ЗаказКлиента.КредитНота` | ✅ Используется (7 макетов) |
|
||||||
|
|
||||||
|
**Условные обозначения:**
|
||||||
|
- ✅ Используется
|
||||||
|
- ❌ Не используется
|
||||||
|
- - Не применимо
|
||||||
|
- ⚠️ НЕ ПРИМЕНЯЕТСЯ - объект присутствует в конфигурации, но не используется в текущей версии
|
||||||
|
|
||||||
|
**Примечания:**
|
||||||
|
1. Реквизит `КредитНота` определен в документе "ЗаказКлиента" как булево значение
|
||||||
|
2. В документе "rh_ОтражениеФактаПродаж" используется для исключения документов реализации с кредит-нотами из процесса отражения факта продаж, но сам документ не применяется
|
||||||
|
3. В обработке "КредитНотаЗаПериод" реквизит используется косвенно - через определение заказов, связанных со списанием задолженности
|
||||||
|
4. В отчете "р_КонтрольВыполненияПланаЗакупок" реквизит используется для исключения заказов с кредит-нотами из плана закупок
|
||||||
|
5. В документе "РеализацияТоваровУслуг" доступ к реквизиту осуществляется через связь с заказом клиента
|
||||||
|
6. Печатные формы кредит-нот определены в документе "РеализацияТоваровУслуг" (7 различных макетов)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Список объектов, связанных с КредитНота
|
||||||
|
|
||||||
|
### Основная конфигурация:
|
||||||
|
- `Document.ЗаказКлиента` - реквизит КредитНота
|
||||||
|
- `Document.rh_ОтражениеФактаПродаж` - ⚠️ НЕ ПРИМЕНЯЕТСЯ (содержит код для фильтрации, но документ не используется)
|
||||||
|
- `Report.КредитНота` - отчет для формирования кредит-нот
|
||||||
|
- `DataProcessor.КредитНотаЗаПериод` - обработка для формирования за период
|
||||||
|
- `CommonForm.СписокДокументовПодКредитНоту` - форма для печати
|
||||||
|
- `Role.КредитНота` - роль доступа
|
||||||
|
- `CommonTemplate.КредитНота` - шаблон печати
|
||||||
|
- `Document.РеализацияТоваровУслуг` - макеты печати (7 различных)
|
||||||
|
|
||||||
|
### Расширение Рана:
|
||||||
|
- `Document.р_КредитНота` - документ оформления кредит-ноты
|
||||||
|
- `InformationRegister.р_ОформленныеКредитНоты` - регистр учета оформленных кредит-нот
|
||||||
|
- Роль доступа в подсистеме `rh_RhanaПодсистема`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Выводы и рекомендации по переносу в новую базу (CRM326)
|
||||||
|
|
||||||
|
### 9.1. Анализ текущего состояния в новой базе
|
||||||
|
|
||||||
|
**Что уже реализовано:**
|
||||||
|
- ✅ Логика копирования признака "РК_КредитНота" из заказа клиента в реализацию через `УправлениеСвойствами`
|
||||||
|
- ✅ Механизм дополнительных реквизитов БСП настроен и работает
|
||||||
|
- ✅ Копирование происходит автоматически при создании реализации на основании заказа
|
||||||
|
|
||||||
|
**Что отсутствует:**
|
||||||
|
- ❌ Реквизит "КредитНота" в документе "ЗаказКлиента" (заменен на дополнительное свойство)
|
||||||
|
- ❌ Фильтрация документов реализации по признаку кредит-ноты в обработке "КредитНотаЗаПериод" (требуется реализовать)
|
||||||
|
- ❌ Исключение документов с кредит-нотами из отчетов и обработок (требуется проверить и реализовать)
|
||||||
|
- ❌ Элементы форм для отображения признака кредит-ноты (требуется реализовать)
|
||||||
|
- ❌ Обработка импорта заказов с признаком кредит-ноты (не требуется на текущий момент)
|
||||||
|
|
||||||
|
### 9.2. Приоритетный подход: использование типового механизма БСП
|
||||||
|
|
||||||
|
**Принципы реализации:**
|
||||||
|
1. Использовать типовой механизм дополнительных реквизитов БСП (план видов характеристик "ДополнительныеРеквизитыИСведения")
|
||||||
|
2. Минимум доработок конфигурации
|
||||||
|
3. Минимум новых объектов в расширении
|
||||||
|
4. Использовать существующие допустимые типы дополнительных свойств
|
||||||
|
|
||||||
|
### 9.3. Рекомендации по реализации
|
||||||
|
|
||||||
|
#### 9.3.1. Использование дополнительного свойства "РК_КредитНота"
|
||||||
|
|
||||||
|
**Тип значения:** `Булево` (Boolean) - уже входит в допустимые типы плана видов характеристик
|
||||||
|
|
||||||
|
**Обоснование:**
|
||||||
|
- Признак кредит-ноты - это булево значение (Истина/Ложь)
|
||||||
|
- Для фильтрации и проверки достаточно булева типа
|
||||||
|
- Не требуется создавать дополнительные справочники или перечисления
|
||||||
|
- Минимум доработок конфигурации
|
||||||
|
- Тип `Булево` уже поддерживается механизмом БСП
|
||||||
|
|
||||||
|
**Настройка в базе данных:**
|
||||||
|
1. Создать дополнительное свойство "РК_КредитНота" в плане видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
2. Тип значения: `Булево`
|
||||||
|
3. Применить к объектам: `Документ.ЗаказКлиента`, `Документ.РеализацияТоваровУслуг`
|
||||||
|
4. Настроить видимость и доступность для соответствующих ролей
|
||||||
|
5. Значение по умолчанию: `Ложь`
|
||||||
|
|
||||||
|
#### 9.3.2. Реализация фильтрации в обработке "КредитНотаЗаПериод"
|
||||||
|
|
||||||
|
**Вариант 1: Фильтрация через табличную часть "ДополнительныеРеквизиты"**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Пример запроса для исключения документов с кредит-нотами
|
||||||
|
ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслуг.Ссылка
|
||||||
|
ИЗ
|
||||||
|
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
||||||
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК ДопРекв
|
||||||
|
ПО РеализацияТоваровУслуг.Ссылка = ДопРекв.Ссылка
|
||||||
|
И ДопРекв.Свойство.Имя = "РК_КредитНота"
|
||||||
|
И ДопРекв.Значение = ИСТИНА
|
||||||
|
ГДЕ
|
||||||
|
ЕСТЬNULL(ДопРекв.Значение, ЛОЖЬ) = ЛОЖЬ
|
||||||
|
// Исключаем документы, у которых признак кредит-ноты = ИСТИНА
|
||||||
|
```
|
||||||
|
|
||||||
|
**Вариант 2: Фильтрация через программную проверку**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// После получения выборки документов
|
||||||
|
Для Каждого СтрокаРеализации Из ВыборкаРеализаций Цикл
|
||||||
|
ЗначениеКредитНоты = УправлениеСвойствами.ЗначениеСвойства(
|
||||||
|
СтрокаРеализации.Ссылка,
|
||||||
|
"РК_КредитНота"
|
||||||
|
);
|
||||||
|
Если НЕ ЕСТЬNULL(ЗначениеКредитНоты, ЛОЖЬ) = ЛОЖЬ Тогда
|
||||||
|
// Документ без кредит-ноты - включаем в обработку
|
||||||
|
ТаблицаРезультатов.Добавить();
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Вариант 3: Фильтрация через связь с заказом клиента**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Если нужно проверять признак в заказе клиента
|
||||||
|
ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслуг.Ссылка
|
||||||
|
ИЗ
|
||||||
|
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
||||||
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказДопРекв
|
||||||
|
ПО РеализацияТоваровУслуг.ЗаказКлиента = ЗаказДопРекв.Ссылка
|
||||||
|
И ЗаказДопРекв.Свойство.Имя = "РК_КредитНота"
|
||||||
|
И ЗаказДопРекв.Значение = ИСТИНА
|
||||||
|
ГДЕ
|
||||||
|
ЕСТЬNULL(ЗаказДопРекв.Значение, ЛОЖЬ) = ЛОЖЬ
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 9.3.3. Исключение из отчетов и обработок
|
||||||
|
|
||||||
|
**Отчет "р_КонтрольВыполненияПланаЗакупок":**
|
||||||
|
- Требуется адаптировать фильтрацию для исключения заказов с кредит-нотами
|
||||||
|
- Использовать дополнительное свойство "РК_КредитНота" вместо прямого реквизита
|
||||||
|
|
||||||
|
**Обработка "КредитНотаЗаПериод":**
|
||||||
|
- Адаптировать запросы для работы с дополнительным свойством
|
||||||
|
- Обеспечить корректное определение заказов по кредит-нотам
|
||||||
|
|
||||||
|
#### 9.3.4. Информационное отображение
|
||||||
|
|
||||||
|
**Текущая реализация:**
|
||||||
|
- Логика копирования из заказа в реализацию реализована в `ObjectModule.bsl`
|
||||||
|
|
||||||
|
**Требуется реализовать:**
|
||||||
|
- Добавить элемент формы (чекбокс) для отображения и редактирования признака кредит-ноты в документе "ЗаказКлиента"
|
||||||
|
- Добавить элемент формы (только для чтения) для отображения признака кредит-ноты в документе "РеализацияТоваровУслуг"
|
||||||
|
- При необходимости добавить отображение в документе "РасходныйОрдерНаТовары" (аналогично купону)
|
||||||
|
|
||||||
|
### 9.4. Шаги реализации
|
||||||
|
|
||||||
|
#### Шаг 1: Настройка дополнительного свойства в базе данных
|
||||||
|
|
||||||
|
1. Открыть конфигуратор новой базы
|
||||||
|
2. Перейти в план видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
3. Создать новый элемент с именем "РК_КредитНота"
|
||||||
|
4. Настроить параметры:
|
||||||
|
- **Имя:** `РК_КредитНота`
|
||||||
|
- **Тип значения:** `Булево`
|
||||||
|
- **Заголовок:** "Кредит-нота"
|
||||||
|
- **Применяется к:** `Документ.ЗаказКлиента`, `Документ.РеализацияТоваровУслуг`
|
||||||
|
- **Значение по умолчанию:** `Ложь`
|
||||||
|
- **Видимость:** Настроить для соответствующих ролей
|
||||||
|
- **Доступность:** Настроить для соответствующих ролей
|
||||||
|
|
||||||
|
#### Шаг 2: Проверка существующей логики
|
||||||
|
|
||||||
|
1. Проверить работу копирования признака кредит-ноты из заказа в реализацию
|
||||||
|
2. Убедиться, что копирование происходит корректно при создании реализации на основании заказа
|
||||||
|
3. Проверить, что значение по умолчанию устанавливается правильно
|
||||||
|
|
||||||
|
#### Шаг 3: Добавление элементов форм
|
||||||
|
|
||||||
|
1. **Документ "ЗаказКлиента":**
|
||||||
|
- Добавить элемент формы типа "ПолеФормы" с типом "Чекбокс"
|
||||||
|
- Привязать к дополнительному свойству через `УправлениеСвойствами`
|
||||||
|
- Настроить видимость и доступность
|
||||||
|
|
||||||
|
2. **Документ "РеализацияТоваровУслуг":**
|
||||||
|
- Добавить элемент формы типа "ПолеФормы" с типом "Чекбокс" (только для чтения)
|
||||||
|
- Привязать к дополнительному свойству через `УправлениеСвойствами`
|
||||||
|
- Настроить видимость
|
||||||
|
|
||||||
|
#### Шаг 4: Реализация фильтрации в обработке "КредитНотаЗаПериод"
|
||||||
|
|
||||||
|
1. Адаптировать запросы в обработке для фильтрации по дополнительному свойству
|
||||||
|
2. Использовать табличную часть "ДополнительныеРеквизиты" или программную проверку
|
||||||
|
3. Протестировать корректность определения заказов по кредит-нотам
|
||||||
|
|
||||||
|
**Важно:** Обработка "КредитНотаЗаПериод" обязательна к переносу, так как используется для формирования кредит-нот за период.
|
||||||
|
|
||||||
|
#### Шаг 5: Адаптация отчетов
|
||||||
|
|
||||||
|
1. Проверить отчет "р_КонтрольВыполненияПланаЗакупок"
|
||||||
|
2. Адаптировать фильтрацию для работы с дополнительным свойством
|
||||||
|
3. Протестировать корректность исключения заказов с кредит-нотами
|
||||||
|
|
||||||
|
#### Шаг 6: Тестирование
|
||||||
|
|
||||||
|
1. Проверить создание и заполнение признака кредит-ноты в документе "ЗаказКлиента"
|
||||||
|
2. Проверить копирование признака в документ "РеализацияТоваровУслуг"
|
||||||
|
3. Проверить отображение признака в формах документов
|
||||||
|
4. Проверить фильтрацию в обработке "КредитНотаЗаПериод" - убедиться, что заказы с кредит-нотами определяются корректно
|
||||||
|
5. Проверить исключение заказов с кредит-нотами из отчетов
|
||||||
|
|
||||||
|
### 9.5. Что НЕ требуется переносить
|
||||||
|
|
||||||
|
1. **Реквизит "КредитНота" в документах** - заменен на дополнительное свойство
|
||||||
|
2. **Документ "rh_ОтражениеФактаПродаж"** - не применяется в текущей конфигурации
|
||||||
|
3. **Обработка импорта заказов** - не требуется на текущий момент (можно реализовать позже)
|
||||||
|
4. **Печатные формы** - требуют отдельного анализа и переноса (не входит в текущую задачу)
|
||||||
|
|
||||||
|
### 9.6. Преимущества выбранного подхода
|
||||||
|
|
||||||
|
1. **Минимум доработок:** Используется существующий механизм БСП
|
||||||
|
2. **Гибкость:** Легко изменить логику работы с признаком
|
||||||
|
3. **Стандартность:** Соответствует типовым подходам БСП
|
||||||
|
4. **Простота поддержки:** Не требует создания новых объектов метаданных
|
||||||
|
5. **Расширяемость:** При необходимости можно добавить дополнительные свойства для кредит-нот
|
||||||
|
|
||||||
|
### 9.7. Оценка трудозатрат
|
||||||
|
|
||||||
|
| Этап | Описание | Время |
|
||||||
|
|------|----------|-------|
|
||||||
|
| Настройка дополнительного свойства | Создание и настройка в БД | 0.5-1 час |
|
||||||
|
| Проверка существующей логики | Тестирование копирования | 1-2 часа |
|
||||||
|
| Добавление элементов форм | Добавление чекбоксов в формы документов | 3-4 часа |
|
||||||
|
| Реализация фильтрации | Адаптация запросов в обработке | 3-5 часов |
|
||||||
|
| Адаптация отчетов | Изменение фильтрации в отчетах | 2-3 часа |
|
||||||
|
| Тестирование | Полное тестирование функциональности | 3-4 часа |
|
||||||
|
| **ИТОГО** | | **13-19 часов** |
|
||||||
|
|
||||||
|
### 9.8. Риски и ограничения
|
||||||
|
|
||||||
|
1. **Ограничение:** Фильтрация в запросах может быть менее эффективной, чем по прямому реквизиту
|
||||||
|
- **Решение:** Использовать индексы на табличной части "ДополнительныеРеквизиты"
|
||||||
|
|
||||||
|
2. **Ограничение:** Нет прямой связи между признаком в заказе и реализацией через реквизит
|
||||||
|
- **Решение:** Использовать механизм копирования через `УправлениеСвойствами` (уже реализовано)
|
||||||
|
|
||||||
|
3. **Ограничение:** Печатные формы требуют отдельной адаптации
|
||||||
|
- **Решение:** Адаптировать макеты печати для работы с дополнительным свойством (отдельная задача)
|
||||||
|
|
||||||
|
4. **Ограничение:** Отчеты и обработки, использующие прямой доступ к реквизиту, требуют адаптации
|
||||||
|
- **Решение:** Поэтапная адаптация всех мест использования
|
||||||
|
|
||||||
|
### 9.9. Назначение применения признака КредитНота
|
||||||
|
|
||||||
|
**Основные сценарии использования:**
|
||||||
|
|
||||||
|
1. **Маркировка заказов как кредит-нот:**
|
||||||
|
- Позволяет идентифицировать заказы, по которым предоставляется кредит-нота
|
||||||
|
- Используется для корректировки задолженности перед клиентом
|
||||||
|
|
||||||
|
2. **Исключение из учета фактов продаж:**
|
||||||
|
- Документы реализации с кредит-нотами не должны учитываться в фактах продаж
|
||||||
|
- Разделение учета обычных продаж и кредит-нот
|
||||||
|
|
||||||
|
3. **Формирование кредит-нот за период:**
|
||||||
|
- Обработка "КредитНотаЗаПериод" использует признак для определения заказов по кредит-нотам
|
||||||
|
- Группировка документов для печати кредит-нот
|
||||||
|
|
||||||
|
4. **Исключение из планов закупок:**
|
||||||
|
- Заказы с кредит-нотами исключаются из планов закупок
|
||||||
|
- Обеспечивает корректность планирования
|
||||||
|
|
||||||
|
5. **Печатные формы:**
|
||||||
|
- Различные макеты печати кредит-нот в зависимости от типа клиента
|
||||||
|
- Адаптация под специфику различных направлений бизнеса
|
||||||
|
|
||||||
|
**Бизнес-логика:**
|
||||||
|
- Кредит-нота оформляется для корректировки задолженности перед клиентом
|
||||||
|
- Может быть связана с возвратом товаров или корректировкой сумм
|
||||||
|
- Используется для уменьшения задолженности клиента перед организацией
|
||||||
|
- Кредит-ноты не учитываются в фактах продаж для планирования
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Версия документа:** 2.0 от 07.01.2026
|
||||||
|
|
||||||
@@ -0,0 +1,583 @@
|
|||||||
|
---
|
||||||
|
title: Анализ применения реквизита Купон в исходной конфигурации включая расширение
|
||||||
|
version: 1.0
|
||||||
|
date_modified: 2025-12-27
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-12-27
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ применения реквизита Купон в исходной конфигурации включая расширение
|
||||||
|
|
||||||
|
## Версия анализа
|
||||||
|
Версия 1.0 от 27.12.2025
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Определить, где и для чего применяется реквизит "Купон" в основной исходной конфигурации `CRM3devLocal` и расширении `CRM3devLocal.Рана`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Справочник Купоны
|
||||||
|
|
||||||
|
### 1.1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Catalogs/Купоны/Купоны.mdo`
|
||||||
|
|
||||||
|
**Характеристики справочника:**
|
||||||
|
- **Имя:** `Купоны`
|
||||||
|
- **Синоним:** "Купоны"
|
||||||
|
- **Иерархический:** Да (2 уровня)
|
||||||
|
- **Папки сверху:** Да
|
||||||
|
- **Длина кода:** 9 символов
|
||||||
|
- **Длина наименования:** 99 символов
|
||||||
|
- **Тип кода:** Строка
|
||||||
|
- **Автонумерация:** Включена
|
||||||
|
- **Проверка уникальности:** Включена
|
||||||
|
- **Ввод по строке:** По коду и наименованию
|
||||||
|
- **Создание при вводе:** Разрешено
|
||||||
|
- **Полнотекстовый поиск:** Используется
|
||||||
|
- **Режим блокировки данных:** Управляемый
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Справочник предназначен для хранения информации о купонах, используемых в системе. Купоны могут применяться в заказах клиентов для предоставления скидок или специальных предложений.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.2. Расширение CRM3devLocal.Рана
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Catalogs/Купоны/Купоны.mdo`
|
||||||
|
|
||||||
|
**Особенности:**
|
||||||
|
- Справочник наследуется из основной конфигурации (расширяется)
|
||||||
|
- Объект принадлежит основной конфигурации (`objectBelonging: Adopted`)
|
||||||
|
- Расширение проверено (`extendedConfigurationObject: Checked`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Реквизит Купон в документах
|
||||||
|
|
||||||
|
### 2.1. Документ ЗаказКлиента
|
||||||
|
|
||||||
|
#### 2.1.1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo`
|
||||||
|
|
||||||
|
**Характеристики реквизита:**
|
||||||
|
- **Имя:** `Купон`
|
||||||
|
- **Синоним:** "Купон"
|
||||||
|
- **Тип:** `CatalogRef.Купоны` (СправочникСсылка.Купоны)
|
||||||
|
- **UUID:** `0cff627d-b65a-4305-a44a-8aaf52751002`
|
||||||
|
- **Полнотекстовый поиск:** Используется
|
||||||
|
- **История данных:** Используется
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Реквизит предназначен для указания купона, применяемого к заказу клиента. Позволяет связать заказ с конкретным купоном из справочника.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 2.1.2. Расширение CRM3devLocal.Рана
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo`
|
||||||
|
|
||||||
|
**Особенности расширения:**
|
||||||
|
- Реквизит наследуется из основной конфигурации
|
||||||
|
- Объект принадлежит основной конфигурации (`objectBelonging: Adopted`)
|
||||||
|
- Расширение проверено (`extendedConfigurationObject: Checked`)
|
||||||
|
- Тип реквизита подтвержден (`typeExtension: Checked`)
|
||||||
|
|
||||||
|
**Использование в форме документа:**
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/Forms/ФормаДокумента/Form.form`
|
||||||
|
|
||||||
|
**Элемент формы:**
|
||||||
|
- **Имя элемента:** `Купон`
|
||||||
|
- **Тип:** Поле ввода (`InputField`)
|
||||||
|
- **Видимость:** Да
|
||||||
|
- **Доступность:** Да
|
||||||
|
- **Отображение в заголовке:** Да
|
||||||
|
- **Отображение в подвале:** Да
|
||||||
|
- **Режим редактирования:** Ввод
|
||||||
|
- **Путь к данным:** `Объект.Купон`
|
||||||
|
- **Расширенная подсказка:** `КупонРасширеннаяПодсказка`
|
||||||
|
- **Контекстное меню:** `КупонКонтекстноеМеню`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Элемент формы позволяет пользователю выбирать и указывать купон для заказа клиента непосредственно в форме документа.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2.2. Документ РеализацияТоваровУслуг
|
||||||
|
|
||||||
|
#### 2.2.1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/РеализацияТоваровУслуг/РеализацияТоваровУслуг.mdo`
|
||||||
|
|
||||||
|
**Характеристики реквизита:**
|
||||||
|
- **Имя:** `Купон`
|
||||||
|
- **Синоним:** "Купон"
|
||||||
|
- **Тип:** `CatalogRef.Купоны` (СправочникСсылка.Купоны)
|
||||||
|
- **UUID:** `1ce768af-c451-41a1-932f-723cc784a8ea`
|
||||||
|
- **Полнотекстовый поиск:** Используется
|
||||||
|
- **История данных:** Используется
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Реквизит предназначен для указания купона, применяемого к документу реализации товаров и услуг. Позволяет связать реализацию с конкретным купоном из справочника.
|
||||||
|
|
||||||
|
**Особенности:**
|
||||||
|
- Реквизит определен в основной конфигурации
|
||||||
|
- Используется в обработке "КредитНотаЗаПериод" для фильтрации документов (см. раздел 4.1)
|
||||||
|
- Купон может быть скопирован из заказа клиента при создании реализации на основании заказа
|
||||||
|
|
||||||
|
**Использование в запросах:**
|
||||||
|
В обработке "КредитНотаЗаПериод" используется условие проверки пустого купона:
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl` (строка 47)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
| И СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl` (строка 67)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
| И СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Назначение проверки:**
|
||||||
|
Обработка "КредитНотаЗаПериод" выбирает документы реализации, у которых купон **пустой** (равен пустой ссылке). Это означает, что документы реализации с указанным купоном **не включаются** в кредит-ноты за период.
|
||||||
|
|
||||||
|
**Печатные формы:**
|
||||||
|
⚠️ **Примечание:** Проверка макетов печати документа "РеализацияТоваровУслуг" показала, что реквизит "Купон" **не используется** в печатных формах. Информация о купоне не выводится на печатные формы документа.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Использование реквизита Купон в документе РасходныйОрдерНаТовары
|
||||||
|
|
||||||
|
### 3.1. Реквизит формы р_КупонИзЗаказаКлиента
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Form.form`
|
||||||
|
|
||||||
|
**Характеристики:**
|
||||||
|
- **Имя:** `р_КупонИзЗаказаКлиента`
|
||||||
|
- **Заголовок:** "Купон использующийся в заказе клиента"
|
||||||
|
- **Тип:** `CatalogRef.Купоны` (СправочникСсылка.Купоны)
|
||||||
|
- **Видимость:** Да
|
||||||
|
- **Доступность:** Да
|
||||||
|
- **Путь к данным:** `р_КупонИзЗаказаКлиента`
|
||||||
|
- **Расширенная подсказка:** `р_КупонИзЗаказаКлиентаРасширеннаяПодсказка`
|
||||||
|
- **Контекстное меню:** `р_КупонИзЗаказаКлиентаКонтекстноеМеню`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Реквизит формы предназначен для отображения купона, который используется в связанном заказе клиента. Позволяет видеть информацию о купоне при работе с расходным ордером на товары.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3.2. Логика обновления информации о купоне
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Module.bsl`
|
||||||
|
|
||||||
|
**Процедура:** `р_ОбновитьИнформациюОбКупоне()`
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Module.bsl` (строки 114-127)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Процедура р_ОбновитьИнформациюОбКупоне()
|
||||||
|
Структура = Новый Структура();
|
||||||
|
р_ПеременаяРаспоряжение = Объект.ТоварыПоРаспоряжениям[0].Распоряжение;
|
||||||
|
Для каждого Строка Из Объект.ТоварыПоРаспоряжениям Цикл
|
||||||
|
Если не Строка.Распоряжение = р_ПеременаяРаспоряжение Тогда
|
||||||
|
ОбщегоНазначения.СообщитьПользователю("Запрещенно в распоряжение добавлять больше одного заказа");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
Если не ТипЗнч(Строка.Распоряжение) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
р_КупонИзЗаказаКлиента = р_ПеременаяРаспоряжение.Купон;
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание логики:**
|
||||||
|
1. Процедура проверяет, что в документе "РасходныйОрдерНаТовары" указано только одно распоряжение (заказ клиента)
|
||||||
|
2. Проверяет, что распоряжение является документом "ЗаказКлиента"
|
||||||
|
3. Если условия выполнены, копирует значение реквизита `Купон` из заказа клиента в реквизит формы `р_КупонИзЗаказаКлиента`
|
||||||
|
|
||||||
|
**Вызов процедуры:**
|
||||||
|
- При создании документа на сервере: `р_ПриСозданииНаСервереПосле()` (строка 93)
|
||||||
|
- При обновлении данных о доставке: `р_р_ОбновитьДанныеОДоставкиПосле()` (строка 100)
|
||||||
|
- При изменении распоряжения в табличной части: `р_ТоварыПоРаспоряжениямРаспоряжениеПриИзмененииПосле()` (строка 131)
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Обеспечивает автоматическое копирование информации о купоне из заказа клиента в расходный ордер на товары, что позволяет видеть, какой купон применяется к заказу при работе с документом отгрузки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Использование в обработке КредитНотаЗаПериод
|
||||||
|
|
||||||
|
### 4.1. Фильтрация документов по купону
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl`
|
||||||
|
|
||||||
|
**Использование реквизита "Купон":**
|
||||||
|
|
||||||
|
В обработке "КредитНотаЗаПериод" реквизит "Купон" используется для фильтрации документов реализации при формировании кредит-нот за период.
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
|
||||||
|
1. **Первый запрос (строки 40-56):**
|
||||||
|
- Выбирает документы реализации, у которых купон **пустой** (`Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)`)
|
||||||
|
- Документы должны быть связаны с заказами по кредит-ноте
|
||||||
|
- Результат помещается в таблицу `КредитНоты`
|
||||||
|
|
||||||
|
2. **Второй запрос (строки 59-82):**
|
||||||
|
- Выбирает документы реализации, у которых купон **пустой** (`Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)`)
|
||||||
|
- Документы должны быть связаны с указанным партнером
|
||||||
|
- Документы должны содержать указанную номенклатуру
|
||||||
|
- Документы **не должны** быть связаны с заказами по кредит-ноте
|
||||||
|
- Результат помещается в таблицу `НеКредитНоты`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Обработка формирует кредит-ноты за период, **исключая** документы реализации, у которых указан купон. Это означает, что документы реализации с купонами не должны включаться в кредит-ноты, так как купоны используются для других целей (например, для предоставления скидок).
|
||||||
|
|
||||||
|
**Вывод:**
|
||||||
|
Реквизит "Купон" в документе "РеализацияТоваровУслуг" используется для **исключения** документов из процесса формирования кредит-нот. Документы с указанным купоном не участвуют в формировании кредит-нот за период.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Использование в обработке импорта заказов клиентов
|
||||||
|
|
||||||
|
### 5.1. Процедура сопоставления купона
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/ManagerModule.bsl`
|
||||||
|
|
||||||
|
**Процедура:** `СопоставитьКупон()`
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/ManagerModule.bsl` (строки 401-419)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Процедура СопоставитьКупон(ИсходноеЗначение, Приемник, Ячейка, ДанныеСтроки) Экспорт
|
||||||
|
|
||||||
|
Если ПустаяСтрока(ИсходноеЗначение) Тогда
|
||||||
|
Приемник = Справочники.Купоны.ПустаяСсылка();
|
||||||
|
Иначе
|
||||||
|
Приемник = Справочники.Купоны.НайтиПоНаименованию(ИсходноеЗначение);
|
||||||
|
Если Не ЗначениеЗаполнено(Приемник) Тогда
|
||||||
|
Приемник = Неопределено;
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ячейка.СодержитЗначение = Истина;
|
||||||
|
МассивТипаПартнера = Новый Массив;
|
||||||
|
МассивТипаПартнера.Добавить(Тип("СправочникСсылка.Купоны"));
|
||||||
|
ОписаниеТипа = Новый ОписаниеТипов(МассивТипаПартнера);
|
||||||
|
Ячейка.ТипЗначения = ОписаниеТипа;
|
||||||
|
Ячейка.Значение = Приемник;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
1. Если исходное значение пустое, устанавливает пустую ссылку на справочник "Купоны"
|
||||||
|
2. Если исходное значение заполнено, ищет элемент справочника "Купоны" по наименованию
|
||||||
|
3. Если элемент не найден, устанавливает `Неопределено` и завершает выполнение
|
||||||
|
4. Если элемент найден, устанавливает тип значения ячейки и значение для импорта
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Процедура используется при импорте заказов клиентов из внешних источников (например, из Excel) для сопоставления текстового значения купона с элементом справочника "Купоны".
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5.2. Использование в шаблоне импорта
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/Templates/СтолбцыЗаказовКлиентов/Template.mxlx`
|
||||||
|
|
||||||
|
**Информация о столбце:**
|
||||||
|
- **Название столбца:** "Купон"
|
||||||
|
- **Типы значений:** Null, Купоны
|
||||||
|
- **Процедура сопоставления:** `СопоставитьКупон`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Столбец в шаблоне импорта позволяет указывать купон для заказа клиента при импорте данных из внешних файлов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Права доступа
|
||||||
|
|
||||||
|
### 6.1. Роли доступа к справочнику Купоны
|
||||||
|
|
||||||
|
**Роли в основной конфигурации CRM3devLocal:**
|
||||||
|
|
||||||
|
1. **rh_ДобавлениеРедактированиеКупонов**
|
||||||
|
- **Расположение:** `CRM3devLocal/src/Roles/rh_ДобавлениеРедактированиеКупонов/`
|
||||||
|
- **Синоним:** "Добавление и редактирование купонов"
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны` (чтение, добавление, изменение)
|
||||||
|
- **UUID:** `92d7bed5-6fda-420f-8761-dd74bef24577`
|
||||||
|
|
||||||
|
2. **rh_ЧтениеКупонов**
|
||||||
|
- **Расположение:** `CRM3devLocal/src/Roles/rh_ЧтениеКупонов/`
|
||||||
|
- **Синоним:** "Чтение купонов"
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны` (только чтение)
|
||||||
|
- **UUID:** `b75850b1-2ce5-4337-8bf9-c974f6f8a1a5`
|
||||||
|
|
||||||
|
**Роли в расширении CRM3devLocal.Рана:**
|
||||||
|
|
||||||
|
3. **НастройкаНСИ**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/НастройкаНСИ/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
4. **ДобавлениеИзменениеОбщейБазовойНСИ**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
5. **ЧтениеБазовойНСИ**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/ЧтениеБазовойНСИ/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
6. **ЧтениеНормативноСправочнойИнформации**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/ЧтениеНормативноСправочнойИнформации/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Роли обеспечивают разграничение доступа к справочнику "Купоны" в зависимости от функций пользователя в системе.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Подсистемы
|
||||||
|
|
||||||
|
### 7.1. Включение в подсистему rh_Продажи (основная конфигурация)
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Subsystems/rh_Rhana/Subsystems/rh_Продажи/rh_Продажи.mdo`
|
||||||
|
|
||||||
|
**Информация:**
|
||||||
|
- Справочник `Catalog.Купоны` включен в подсистему `rh_Продажи`
|
||||||
|
- Подсистема `rh_Продажи` входит в подсистему `rh_Rhana`
|
||||||
|
- В подсистему также включены роли:
|
||||||
|
- `Role.rh_ДобавлениеРедактированиеКупонов`
|
||||||
|
- `Role.rh_ЧтениеКупонов`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Включение справочника в подсистему "Продажи" указывает на то, что купоны являются частью функционала продаж и используются в процессах продаж.
|
||||||
|
|
||||||
|
### 7.2. Включение в подсистему rh_НСИ (расширение)
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Subsystems/rh_Rhana/Subsystems/rh_НСИ/rh_НСИ.mdo`
|
||||||
|
|
||||||
|
**Информация:**
|
||||||
|
- Справочник `Catalog.Купоны` включен в подсистему `rh_НСИ`
|
||||||
|
- Подсистема `rh_НСИ` входит в подсистему `rh_Rhana`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Включение справочника в подсистему "Нормативно-справочная информация" (НСИ) указывает на то, что купоны являются частью справочной информации системы.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Схема использования реквизита Купон
|
||||||
|
|
||||||
|
### 8.1. Бизнес-процесс
|
||||||
|
|
||||||
|
1. **Создание купона**
|
||||||
|
- Пользователь с соответствующими правами создает элемент в справочнике "Купоны"
|
||||||
|
- Купон может быть иерархическим (до 2 уровней)
|
||||||
|
|
||||||
|
2. **Применение купона в заказе клиента**
|
||||||
|
- При создании или редактировании документа "ЗаказКлиента" пользователь может указать купон
|
||||||
|
- Реквизит `Купон` заполняется ссылкой на элемент справочника "Купоны"
|
||||||
|
- Информация о купоне отображается в форме документа
|
||||||
|
|
||||||
|
3. **Импорт заказов с купонами**
|
||||||
|
- При импорте заказов клиентов из внешних файлов процедура `СопоставитьКупон()` находит соответствующий купон по наименованию
|
||||||
|
- Если купон не найден, значение остается пустым или неопределенным
|
||||||
|
|
||||||
|
4. **Использование в расходном ордере**
|
||||||
|
- При создании документа "РасходныйОрдерНаТовары" на основании заказа клиента
|
||||||
|
- Процедура `р_ОбновитьИнформациюОбКупоне()` автоматически копирует купон из заказа клиента
|
||||||
|
- Информация о купоне отображается в форме расходного ордера
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8.2. Связи между объектами
|
||||||
|
|
||||||
|
```
|
||||||
|
Справочник "Купоны"
|
||||||
|
↓
|
||||||
|
Документ "ЗаказКлиента" (реквизит "Купон")
|
||||||
|
↓
|
||||||
|
├─→ Документ "РеализацияТоваровУслуг" (реквизит "Купон")
|
||||||
|
│ └─→ Используется в обработке "КредитНотаЗаПериод" для исключения из кредит-нот
|
||||||
|
│
|
||||||
|
└─→ Документ "РасходныйОрдерНаТовары" (реквизит формы "р_КупонИзЗаказаКлиента")
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание связей:**
|
||||||
|
- Справочник "Купоны" является источником данных для реквизита "Купон" в документе "ЗаказКлиента"
|
||||||
|
- Реквизит "Купон" в документе "ЗаказКлиента" может быть скопирован в документ "РеализацияТоваровУслуг" при создании реализации на основании заказа
|
||||||
|
- Реквизит "Купон" в документе "РеализацияТоваровУслуг" используется в обработке "КредитНотаЗаПериод" для исключения документов с купонами из кредит-нот
|
||||||
|
- Реквизит "Купон" в документе "ЗаказКлиента" является источником данных для реквизита формы "р_КупонИзЗаказаКлиента" в документе "РасходныйОрдерНаТовары"
|
||||||
|
- Связь между заказом клиента и расходным ордером осуществляется через табличную часть "ТоварыПоРаспоряжениям"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Особенности реализации
|
||||||
|
|
||||||
|
### 9.1. Расширение реквизита
|
||||||
|
|
||||||
|
Реквизит "Купон" определен в основной конфигурации `CRM3devLocal` и расширяется в расширении `CRM3devLocal.Рана`. Это означает:
|
||||||
|
- Реквизит доступен в обеих конфигурациях
|
||||||
|
- Расширение не изменяет структуру реквизита, а только подтверждает его использование
|
||||||
|
- Форма документа в расширении содержит элемент для работы с реквизитом
|
||||||
|
|
||||||
|
### 9.2. Автоматическое копирование
|
||||||
|
|
||||||
|
В документе "РасходныйОрдерНаТовары" реализована автоматическая логика копирования купона из заказа клиента:
|
||||||
|
- Копирование происходит при создании документа
|
||||||
|
- Копирование происходит при изменении распоряжения
|
||||||
|
- Копирование происходит при обновлении данных о доставке
|
||||||
|
- Логика проверяет, что в документе указан только один заказ клиента
|
||||||
|
|
||||||
|
### 9.3. Импорт данных
|
||||||
|
|
||||||
|
### 9.4. Использование в обработке КредитНотаЗаПериод
|
||||||
|
|
||||||
|
**Особенность:**
|
||||||
|
Реквизит "Купон" в документе "РеализацияТоваровУслуг" используется для **исключения** документов из процесса формирования кредит-нот. Документы реализации с указанным купоном не включаются в кредит-ноты за период, что позволяет разделить учет обычных продаж и продаж с купонами.
|
||||||
|
|
||||||
|
**Логика:**
|
||||||
|
- Если в документе реализации указан купон, документ не участвует в формировании кредит-нот
|
||||||
|
- Это означает, что купоны используются для других целей (например, для предоставления скидок), а не для кредит-нот
|
||||||
|
|
||||||
|
При импорте заказов клиентов реализована процедура сопоставления купонов:
|
||||||
|
- Поиск купона осуществляется по наименованию
|
||||||
|
- Если купон не найден, значение остается пустым
|
||||||
|
- Процедура экспортируется для использования в шаблонах импорта
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Выводы
|
||||||
|
|
||||||
|
### 10.1. Основные выводы
|
||||||
|
|
||||||
|
1. **Справочник "Купоны"** определен в основной конфигурации `CRM3devLocal` и используется в расширении `CRM3devLocal.Рана`
|
||||||
|
|
||||||
|
2. **Реквизит "Купон"** в документе "ЗаказКлиента":
|
||||||
|
- Определен в основной конфигурации
|
||||||
|
- Расширяется в расширении
|
||||||
|
- Имеет элемент формы для работы пользователя
|
||||||
|
- Используется для указания купона, применяемого к заказу
|
||||||
|
|
||||||
|
3. **Использование в документе "РеализацияТоваровУслуг"**:
|
||||||
|
- Реквизит "Купон" определен в основной конфигурации
|
||||||
|
- Используется в обработке "КредитНотаЗаПериод" для исключения документов с купонами из кредит-нот
|
||||||
|
- Документы реализации с указанным купоном не участвуют в формировании кредит-нот за период
|
||||||
|
- ⚠️ Реквизит **не используется** в печатных формах документа
|
||||||
|
|
||||||
|
4. **Использование в документе "РасходныйОрдерНаТовары"**:
|
||||||
|
- Реализована автоматическая логика копирования купона из заказа клиента
|
||||||
|
- Информация о купоне отображается в форме документа
|
||||||
|
- Логика проверяет корректность данных перед копированием
|
||||||
|
|
||||||
|
5. **Использование в обработке "КредитНотаЗаПериод"**:
|
||||||
|
- Реквизит "Купон" используется для фильтрации документов реализации
|
||||||
|
- Документы с указанным купоном исключаются из процесса формирования кредит-нот
|
||||||
|
- Это позволяет разделить учет обычных продаж и продаж с купонами
|
||||||
|
|
||||||
|
6. **Импорт заказов клиентов**:
|
||||||
|
- Реализована процедура сопоставления купонов при импорте
|
||||||
|
- Процедура ищет купон по наименованию
|
||||||
|
- Обрабатывает случаи отсутствия купона
|
||||||
|
|
||||||
|
7. **Права доступа**:
|
||||||
|
- Настроены роли для работы со справочником "Купоны" в основной конфигурации и расширении
|
||||||
|
- Роли разграничивают права на чтение и редактирование
|
||||||
|
- Роли включены в подсистему "rh_Продажи"
|
||||||
|
|
||||||
|
8. **Подсистемы**:
|
||||||
|
- Справочник "Купоны" включен в подсистему "rh_Продажи" в основной конфигурации
|
||||||
|
- Справочник "Купоны" включен в подсистему "rh_НСИ" в расширении
|
||||||
|
- Это указывает на его принадлежность к функционалу продаж и нормативно-справочной информации
|
||||||
|
|
||||||
|
### 10.2. Рекомендации
|
||||||
|
|
||||||
|
1. **Документирование бизнес-логики купонов:**
|
||||||
|
- Рекомендуется документировать правила применения купонов
|
||||||
|
- Указать, влияет ли купон на расчет скидок или другие расчеты
|
||||||
|
|
||||||
|
2. **Проверка использования в расчетах:**
|
||||||
|
- Необходимо проверить, используется ли реквизит "Купон" в расчетах скидок или других расчетах
|
||||||
|
- Если используется, необходимо документировать логику расчетов
|
||||||
|
|
||||||
|
3. **Валидация данных:**
|
||||||
|
- Рекомендуется добавить проверку корректности купона при заполнении заказа
|
||||||
|
- Проверить актуальность купона (срок действия, статус и т.д.)
|
||||||
|
|
||||||
|
4. **Печатные формы:**
|
||||||
|
- ⚠️ Рекомендуется проверить необходимость вывода информации о купоне в печатные формы документов
|
||||||
|
- В текущей конфигурации реквизит "Купон" не используется в печатных формах
|
||||||
|
- При необходимости добавить информацию о купоне в макеты печати
|
||||||
|
|
||||||
|
5. **Отчетность:**
|
||||||
|
- Рекомендуется проверить наличие отчетов, использующих информацию о купонах
|
||||||
|
- При необходимости создать отчеты для анализа использования купонов
|
||||||
|
|
||||||
|
6. **Логика копирования купона:**
|
||||||
|
- Рекомендуется проверить, копируется ли реквизит "Купон" из заказа клиента в реализацию при создании реализации на основании заказа
|
||||||
|
- Если копирование не реализовано, рассмотреть необходимость добавления такой логики
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Приложения
|
||||||
|
|
||||||
|
### 11.1. Список файлов, связанных с реквизитом Купон
|
||||||
|
|
||||||
|
**Основная конфигурация CRM3devLocal:**
|
||||||
|
- `CRM3devLocal/src/Catalogs/Купоны/Купоны.mdo` - Справочник "Купоны"
|
||||||
|
- `CRM3devLocal/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo` - Реквизит "Купон" в документе
|
||||||
|
- `CRM3devLocal/src/Documents/РеализацияТоваровУслуг/РеализацияТоваровУслуг.mdo` - Реквизит "Купон" в документе
|
||||||
|
- `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl` - Использование купона в запросах
|
||||||
|
- `CRM3devLocal/src/Roles/rh_ДобавлениеРедактированиеКупонов/` - Роль доступа
|
||||||
|
- `CRM3devLocal/src/Roles/rh_ЧтениеКупонов/` - Роль доступа
|
||||||
|
- `CRM3devLocal/src/Subsystems/rh_Rhana/Subsystems/rh_Продажи/rh_Продажи.mdo` - Подсистема
|
||||||
|
|
||||||
|
**Расширение CRM3devLocal.Рана:**
|
||||||
|
- `CRM3devLocal.Рана/src/Catalogs/Купоны/Купоны.mdo` - Расширение справочника
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo` - Расширение реквизита
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/Forms/ФормаДокумента/Form.form` - Элемент формы
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Form.form` - Реквизит формы
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Module.bsl` - Логика обновления
|
||||||
|
- `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/ManagerModule.bsl` - Процедура сопоставления
|
||||||
|
- `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/Templates/СтолбцыЗаказовКлиентов/Template.mxlx` - Шаблон импорта
|
||||||
|
- `CRM3devLocal.Рана/src/Subsystems/rh_Rhana/Subsystems/rh_НСИ/rh_НСИ.mdo` - Подсистема
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/НастройкаНСИ/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/ЧтениеБазовойНСИ/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/ЧтениеНормативноСправочнойИнформации/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Subsystems/rh_Rhana/Subsystems/rh_НСИ/rh_НСИ.mdo` - Подсистема
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 11.2. Сводная таблица использования реквизита Купон
|
||||||
|
|
||||||
|
| Объект | Реквизит/Элемент | Тип | Использование | Печатные формы |
|
||||||
|
|--------|------------------|-----|----------------|----------------|
|
||||||
|
| Справочник "Купоны" | - | Справочник | Источник данных | - |
|
||||||
|
| Документ "ЗаказКлиента" | Купон | CatalogRef.Купоны | Указание купона в заказе | ❌ Не используется |
|
||||||
|
| Документ "РеализацияТоваровУслуг" | Купон | CatalogRef.Купоны | Исключение из кредит-нот | ❌ Не используется |
|
||||||
|
| Документ "РасходныйОрдерНаТовары" | р_КупонИзЗаказаКлиента | CatalogRef.Купоны | Отображение купона из заказа | ❌ Не используется |
|
||||||
|
| Обработка "КредитНотаЗаПериод" | - | - | Фильтрация по пустому купону | - |
|
||||||
|
| Обработка "р_ИмпортЗаказовКлиентов" | - | - | Сопоставление купона при импорте | - |
|
||||||
|
|
||||||
|
**Условные обозначения:**
|
||||||
|
- ✅ Используется
|
||||||
|
- ❌ Не используется
|
||||||
|
- - Не применимо
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Конец документа**
|
||||||
|
|
||||||
@@ -0,0 +1,745 @@
|
|||||||
|
---
|
||||||
|
title: Анализ применения реквизита Купон в исходной конфигурации включая расширение
|
||||||
|
version: 2.0
|
||||||
|
date_modified: 2026-01-07
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-12-27
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ применения реквизита Купон в исходной конфигурации включая расширение
|
||||||
|
|
||||||
|
## Версия анализа
|
||||||
|
Версия 2.0 от 07.01.2026
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Цель анализа
|
||||||
|
Определить, где и для чего применяется реквизит "Купон" в основной исходной конфигурации `CRM3devLocal` и расширении `CRM3devLocal.Рана`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Справочник Купоны
|
||||||
|
|
||||||
|
### 1.1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Catalogs/Купоны/Купоны.mdo`
|
||||||
|
|
||||||
|
**Характеристики справочника:**
|
||||||
|
- **Имя:** `Купоны`
|
||||||
|
- **Синоним:** "Купоны"
|
||||||
|
- **Иерархический:** Да (2 уровня)
|
||||||
|
- **Папки сверху:** Да
|
||||||
|
- **Длина кода:** 9 символов
|
||||||
|
- **Длина наименования:** 99 символов
|
||||||
|
- **Тип кода:** Строка
|
||||||
|
- **Автонумерация:** Включена
|
||||||
|
- **Проверка уникальности:** Включена
|
||||||
|
- **Ввод по строке:** По коду и наименованию
|
||||||
|
- **Создание при вводе:** Разрешено
|
||||||
|
- **Полнотекстовый поиск:** Используется
|
||||||
|
- **Режим блокировки данных:** Управляемый
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Справочник предназначен для хранения информации о купонах, используемых в системе. Купоны могут применяться в заказах клиентов для предоставления скидок или специальных предложений.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.2. Расширение CRM3devLocal.Рана
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Catalogs/Купоны/Купоны.mdo`
|
||||||
|
|
||||||
|
**Особенности:**
|
||||||
|
- Справочник наследуется из основной конфигурации (расширяется)
|
||||||
|
- Объект принадлежит основной конфигурации (`objectBelonging: Adopted`)
|
||||||
|
- Расширение проверено (`extendedConfigurationObject: Checked`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Реквизит Купон в документах
|
||||||
|
|
||||||
|
### 2.1. Документ ЗаказКлиента
|
||||||
|
|
||||||
|
#### 2.1.1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo`
|
||||||
|
|
||||||
|
**Характеристики реквизита:**
|
||||||
|
- **Имя:** `Купон`
|
||||||
|
- **Синоним:** "Купон"
|
||||||
|
- **Тип:** `CatalogRef.Купоны` (СправочникСсылка.Купоны)
|
||||||
|
- **UUID:** `0cff627d-b65a-4305-a44a-8aaf52751002`
|
||||||
|
- **Полнотекстовый поиск:** Используется
|
||||||
|
- **История данных:** Используется
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Реквизит предназначен для указания купона, применяемого к заказу клиента. Позволяет связать заказ с конкретным купоном из справочника.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 2.1.2. Расширение CRM3devLocal.Рана
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo`
|
||||||
|
|
||||||
|
**Особенности расширения:**
|
||||||
|
- Реквизит наследуется из основной конфигурации
|
||||||
|
- Объект принадлежит основной конфигурации (`objectBelonging: Adopted`)
|
||||||
|
- Расширение проверено (`extendedConfigurationObject: Checked`)
|
||||||
|
- Тип реквизита подтвержден (`typeExtension: Checked`)
|
||||||
|
|
||||||
|
**Использование в форме документа:**
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/Forms/ФормаДокумента/Form.form`
|
||||||
|
|
||||||
|
**Элемент формы:**
|
||||||
|
- **Имя элемента:** `Купон`
|
||||||
|
- **Тип:** Поле ввода (`InputField`)
|
||||||
|
- **Видимость:** Да
|
||||||
|
- **Доступность:** Да
|
||||||
|
- **Отображение в заголовке:** Да
|
||||||
|
- **Отображение в подвале:** Да
|
||||||
|
- **Режим редактирования:** Ввод
|
||||||
|
- **Путь к данным:** `Объект.Купон`
|
||||||
|
- **Расширенная подсказка:** `КупонРасширеннаяПодсказка`
|
||||||
|
- **Контекстное меню:** `КупонКонтекстноеМеню`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Элемент формы позволяет пользователю выбирать и указывать купон для заказа клиента непосредственно в форме документа.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2.2. Документ РеализацияТоваровУслуг
|
||||||
|
|
||||||
|
#### 2.2.1. Основная конфигурация CRM3devLocal
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Documents/РеализацияТоваровУслуг/РеализацияТоваровУслуг.mdo`
|
||||||
|
|
||||||
|
**Характеристики реквизита:**
|
||||||
|
- **Имя:** `Купон`
|
||||||
|
- **Синоним:** "Купон"
|
||||||
|
- **Тип:** `CatalogRef.Купоны` (СправочникСсылка.Купоны)
|
||||||
|
- **UUID:** `1ce768af-c451-41a1-932f-723cc784a8ea`
|
||||||
|
- **Полнотекстовый поиск:** Используется
|
||||||
|
- **История данных:** Используется
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Реквизит предназначен для указания купона, применяемого к документу реализации товаров и услуг. Позволяет связать реализацию с конкретным купоном из справочника.
|
||||||
|
|
||||||
|
**Особенности:**
|
||||||
|
- Реквизит определен в основной конфигурации
|
||||||
|
- Используется в обработке "КредитНотаЗаПериод" для фильтрации документов (см. раздел 4.1)
|
||||||
|
- Купон может быть скопирован из заказа клиента при создании реализации на основании заказа
|
||||||
|
|
||||||
|
**Использование в запросах:**
|
||||||
|
В обработке "КредитНотаЗаПериод" используется условие проверки пустого купона:
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl` (строка 47)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
| И СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl` (строка 67)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
| И СчетФактураВыданный.ДокументОснование.Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Назначение проверки:**
|
||||||
|
Обработка "КредитНотаЗаПериод" выбирает документы реализации, у которых купон **пустой** (равен пустой ссылке). Это означает, что документы реализации с указанным купоном **не включаются** в кредит-ноты за период.
|
||||||
|
|
||||||
|
**Печатные формы:**
|
||||||
|
⚠️ **Примечание:** Проверка макетов печати документа "РеализацияТоваровУслуг" показала, что реквизит "Купон" **не используется** в печатных формах. Информация о купоне не выводится на печатные формы документа.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Использование реквизита Купон в документе РасходныйОрдерНаТовары
|
||||||
|
|
||||||
|
### 3.1. Реквизит формы р_КупонИзЗаказаКлиента
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Form.form`
|
||||||
|
|
||||||
|
**Характеристики:**
|
||||||
|
- **Имя:** `р_КупонИзЗаказаКлиента`
|
||||||
|
- **Заголовок:** "Купон использующийся в заказе клиента"
|
||||||
|
- **Тип:** `CatalogRef.Купоны` (СправочникСсылка.Купоны)
|
||||||
|
- **Видимость:** Да
|
||||||
|
- **Доступность:** Да
|
||||||
|
- **Путь к данным:** `р_КупонИзЗаказаКлиента`
|
||||||
|
- **Расширенная подсказка:** `р_КупонИзЗаказаКлиентаРасширеннаяПодсказка`
|
||||||
|
- **Контекстное меню:** `р_КупонИзЗаказаКлиентаКонтекстноеМеню`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Реквизит формы предназначен для отображения купона, который используется в связанном заказе клиента. Позволяет видеть информацию о купоне при работе с расходным ордером на товары.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3.2. Логика обновления информации о купоне
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Module.bsl`
|
||||||
|
|
||||||
|
**Процедура:** `р_ОбновитьИнформациюОбКупоне()`
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Module.bsl` (строки 114-127)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Процедура р_ОбновитьИнформациюОбКупоне()
|
||||||
|
Структура = Новый Структура();
|
||||||
|
р_ПеременаяРаспоряжение = Объект.ТоварыПоРаспоряжениям[0].Распоряжение;
|
||||||
|
Для каждого Строка Из Объект.ТоварыПоРаспоряжениям Цикл
|
||||||
|
Если не Строка.Распоряжение = р_ПеременаяРаспоряжение Тогда
|
||||||
|
ОбщегоНазначения.СообщитьПользователю("Запрещенно в распоряжение добавлять больше одного заказа");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
Если не ТипЗнч(Строка.Распоряжение) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
р_КупонИзЗаказаКлиента = р_ПеременаяРаспоряжение.Купон;
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание логики:**
|
||||||
|
1. Процедура проверяет, что в документе "РасходныйОрдерНаТовары" указано только одно распоряжение (заказ клиента)
|
||||||
|
2. Проверяет, что распоряжение является документом "ЗаказКлиента"
|
||||||
|
3. Если условия выполнены, копирует значение реквизита `Купон` из заказа клиента в реквизит формы `р_КупонИзЗаказаКлиента`
|
||||||
|
|
||||||
|
**Вызов процедуры:**
|
||||||
|
- При создании документа на сервере: `р_ПриСозданииНаСервереПосле()` (строка 93)
|
||||||
|
- При обновлении данных о доставке: `р_р_ОбновитьДанныеОДоставкиПосле()` (строка 100)
|
||||||
|
- При изменении распоряжения в табличной части: `р_ТоварыПоРаспоряжениямРаспоряжениеПриИзмененииПосле()` (строка 131)
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Обеспечивает автоматическое копирование информации о купоне из заказа клиента в расходный ордер на товары, что позволяет видеть, какой купон применяется к заказу при работе с документом отгрузки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Использование в обработке КредитНотаЗаПериод
|
||||||
|
|
||||||
|
### 4.1. Фильтрация документов по купону
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl`
|
||||||
|
|
||||||
|
**Использование реквизита "Купон":**
|
||||||
|
|
||||||
|
В обработке "КредитНотаЗаПериод" реквизит "Купон" используется для фильтрации документов реализации при формировании кредит-нот за период.
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
|
||||||
|
1. **Первый запрос (строки 40-56):**
|
||||||
|
- Выбирает документы реализации, у которых купон **пустой** (`Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)`)
|
||||||
|
- Документы должны быть связаны с заказами по кредит-ноте
|
||||||
|
- Результат помещается в таблицу `КредитНоты`
|
||||||
|
|
||||||
|
2. **Второй запрос (строки 59-82):**
|
||||||
|
- Выбирает документы реализации, у которых купон **пустой** (`Купон = ЗНАЧЕНИЕ(Справочник.Купоны.ПустаяСсылка)`)
|
||||||
|
- Документы должны быть связаны с указанным партнером
|
||||||
|
- Документы должны содержать указанную номенклатуру
|
||||||
|
- Документы **не должны** быть связаны с заказами по кредит-ноте
|
||||||
|
- Результат помещается в таблицу `НеКредитНоты`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Обработка формирует кредит-ноты за период, **исключая** документы реализации, у которых указан купон. Это означает, что документы реализации с купонами не должны включаться в кредит-ноты, так как купоны используются для других целей (например, для предоставления скидок).
|
||||||
|
|
||||||
|
**Вывод:**
|
||||||
|
Реквизит "Купон" в документе "РеализацияТоваровУслуг" используется для **исключения** документов из процесса формирования кредит-нот. Документы с указанным купоном не участвуют в формировании кредит-нот за период.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Использование в обработке импорта заказов клиентов
|
||||||
|
|
||||||
|
### 5.1. Процедура сопоставления купона
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/ManagerModule.bsl`
|
||||||
|
|
||||||
|
**Процедура:** `СопоставитьКупон()`
|
||||||
|
|
||||||
|
**Файл:** `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/ManagerModule.bsl` (строки 401-419)
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Процедура СопоставитьКупон(ИсходноеЗначение, Приемник, Ячейка, ДанныеСтроки) Экспорт
|
||||||
|
|
||||||
|
Если ПустаяСтрока(ИсходноеЗначение) Тогда
|
||||||
|
Приемник = Справочники.Купоны.ПустаяСсылка();
|
||||||
|
Иначе
|
||||||
|
Приемник = Справочники.Купоны.НайтиПоНаименованию(ИсходноеЗначение);
|
||||||
|
Если Не ЗначениеЗаполнено(Приемник) Тогда
|
||||||
|
Приемник = Неопределено;
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ячейка.СодержитЗначение = Истина;
|
||||||
|
МассивТипаПартнера = Новый Массив;
|
||||||
|
МассивТипаПартнера.Добавить(Тип("СправочникСсылка.Купоны"));
|
||||||
|
ОписаниеТипа = Новый ОписаниеТипов(МассивТипаПартнера);
|
||||||
|
Ячейка.ТипЗначения = ОписаниеТипа;
|
||||||
|
Ячейка.Значение = Приемник;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
**Логика работы:**
|
||||||
|
1. Если исходное значение пустое, устанавливает пустую ссылку на справочник "Купоны"
|
||||||
|
2. Если исходное значение заполнено, ищет элемент справочника "Купоны" по наименованию
|
||||||
|
3. Если элемент не найден, устанавливает `Неопределено` и завершает выполнение
|
||||||
|
4. Если элемент найден, устанавливает тип значения ячейки и значение для импорта
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Процедура используется при импорте заказов клиентов из внешних источников (например, из Excel) для сопоставления текстового значения купона с элементом справочника "Купоны".
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5.2. Использование в шаблоне импорта
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/Templates/СтолбцыЗаказовКлиентов/Template.mxlx`
|
||||||
|
|
||||||
|
**Информация о столбце:**
|
||||||
|
- **Название столбца:** "Купон"
|
||||||
|
- **Типы значений:** Null, Купоны
|
||||||
|
- **Процедура сопоставления:** `СопоставитьКупон`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Столбец в шаблоне импорта позволяет указывать купон для заказа клиента при импорте данных из внешних файлов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Права доступа
|
||||||
|
|
||||||
|
### 6.1. Роли доступа к справочнику Купоны
|
||||||
|
|
||||||
|
**Роли в основной конфигурации CRM3devLocal:**
|
||||||
|
|
||||||
|
1. **rh_ДобавлениеРедактированиеКупонов**
|
||||||
|
- **Расположение:** `CRM3devLocal/src/Roles/rh_ДобавлениеРедактированиеКупонов/`
|
||||||
|
- **Синоним:** "Добавление и редактирование купонов"
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны` (чтение, добавление, изменение)
|
||||||
|
- **UUID:** `92d7bed5-6fda-420f-8761-dd74bef24577`
|
||||||
|
|
||||||
|
2. **rh_ЧтениеКупонов**
|
||||||
|
- **Расположение:** `CRM3devLocal/src/Roles/rh_ЧтениеКупонов/`
|
||||||
|
- **Синоним:** "Чтение купонов"
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны` (только чтение)
|
||||||
|
- **UUID:** `b75850b1-2ce5-4337-8bf9-c974f6f8a1a5`
|
||||||
|
|
||||||
|
**Роли в расширении CRM3devLocal.Рана:**
|
||||||
|
|
||||||
|
3. **НастройкаНСИ**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/НастройкаНСИ/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
4. **ДобавлениеИзменениеОбщейБазовойНСИ**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
5. **ЧтениеБазовойНСИ**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/ЧтениеБазовойНСИ/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
6. **ЧтениеНормативноСправочнойИнформации**
|
||||||
|
- **Расположение:** `CRM3devLocal.Рана/src/Roles/ЧтениеНормативноСправочнойИнформации/Rights.rights`
|
||||||
|
- **Права:** Доступ к справочнику `Catalog.Купоны`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Роли обеспечивают разграничение доступа к справочнику "Купоны" в зависимости от функций пользователя в системе.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Подсистемы
|
||||||
|
|
||||||
|
### 7.1. Включение в подсистему rh_Продажи (основная конфигурация)
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/Subsystems/rh_Rhana/Subsystems/rh_Продажи/rh_Продажи.mdo`
|
||||||
|
|
||||||
|
**Информация:**
|
||||||
|
- Справочник `Catalog.Купоны` включен в подсистему `rh_Продажи`
|
||||||
|
- Подсистема `rh_Продажи` входит в подсистему `rh_Rhana`
|
||||||
|
- В подсистему также включены роли:
|
||||||
|
- `Role.rh_ДобавлениеРедактированиеКупонов`
|
||||||
|
- `Role.rh_ЧтениеКупонов`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Включение справочника в подсистему "Продажи" указывает на то, что купоны являются частью функционала продаж и используются в процессах продаж.
|
||||||
|
|
||||||
|
### 7.2. Включение в подсистему rh_НСИ (расширение)
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Subsystems/rh_Rhana/Subsystems/rh_НСИ/rh_НСИ.mdo`
|
||||||
|
|
||||||
|
**Информация:**
|
||||||
|
- Справочник `Catalog.Купоны` включен в подсистему `rh_НСИ`
|
||||||
|
- Подсистема `rh_НСИ` входит в подсистему `rh_Rhana`
|
||||||
|
|
||||||
|
**Назначение:**
|
||||||
|
Включение справочника в подсистему "Нормативно-справочная информация" (НСИ) указывает на то, что купоны являются частью справочной информации системы.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Схема использования реквизита Купон
|
||||||
|
|
||||||
|
### 8.1. Бизнес-процесс
|
||||||
|
|
||||||
|
1. **Создание купона**
|
||||||
|
- Пользователь с соответствующими правами создает элемент в справочнике "Купоны"
|
||||||
|
- Купон может быть иерархическим (до 2 уровней)
|
||||||
|
|
||||||
|
2. **Применение купона в заказе клиента**
|
||||||
|
- При создании или редактировании документа "ЗаказКлиента" пользователь может указать купон
|
||||||
|
- Реквизит `Купон` заполняется ссылкой на элемент справочника "Купоны"
|
||||||
|
- Информация о купоне отображается в форме документа
|
||||||
|
|
||||||
|
3. **Импорт заказов с купонами**
|
||||||
|
- При импорте заказов клиентов из внешних файлов процедура `СопоставитьКупон()` находит соответствующий купон по наименованию
|
||||||
|
- Если купон не найден, значение остается пустым или неопределенным
|
||||||
|
|
||||||
|
4. **Использование в расходном ордере**
|
||||||
|
- При создании документа "РасходныйОрдерНаТовары" на основании заказа клиента
|
||||||
|
- Процедура `р_ОбновитьИнформациюОбКупоне()` автоматически копирует купон из заказа клиента
|
||||||
|
- Информация о купоне отображается в форме расходного ордера
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8.2. Связи между объектами
|
||||||
|
|
||||||
|
```
|
||||||
|
Справочник "Купоны"
|
||||||
|
↓
|
||||||
|
Документ "ЗаказКлиента" (реквизит "Купон")
|
||||||
|
↓
|
||||||
|
├─→ Документ "РеализацияТоваровУслуг" (реквизит "Купон")
|
||||||
|
│ └─→ Используется в обработке "КредитНотаЗаПериод" для исключения из кредит-нот
|
||||||
|
│
|
||||||
|
└─→ Документ "РасходныйОрдерНаТовары" (реквизит формы "р_КупонИзЗаказаКлиента")
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание связей:**
|
||||||
|
- Справочник "Купоны" является источником данных для реквизита "Купон" в документе "ЗаказКлиента"
|
||||||
|
- Реквизит "Купон" в документе "ЗаказКлиента" может быть скопирован в документ "РеализацияТоваровУслуг" при создании реализации на основании заказа
|
||||||
|
- Реквизит "Купон" в документе "РеализацияТоваровУслуг" используется в обработке "КредитНотаЗаПериод" для исключения документов с купонами из кредит-нот
|
||||||
|
- Реквизит "Купон" в документе "ЗаказКлиента" является источником данных для реквизита формы "р_КупонИзЗаказаКлиента" в документе "РасходныйОрдерНаТовары"
|
||||||
|
- Связь между заказом клиента и расходным ордером осуществляется через табличную часть "ТоварыПоРаспоряжениям"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Особенности реализации
|
||||||
|
|
||||||
|
### 9.1. Расширение реквизита
|
||||||
|
|
||||||
|
Реквизит "Купон" определен в основной конфигурации `CRM3devLocal` и расширяется в расширении `CRM3devLocal.Рана`. Это означает:
|
||||||
|
- Реквизит доступен в обеих конфигурациях
|
||||||
|
- Расширение не изменяет структуру реквизита, а только подтверждает его использование
|
||||||
|
- Форма документа в расширении содержит элемент для работы с реквизитом
|
||||||
|
|
||||||
|
### 9.2. Автоматическое копирование
|
||||||
|
|
||||||
|
В документе "РасходныйОрдерНаТовары" реализована автоматическая логика копирования купона из заказа клиента:
|
||||||
|
- Копирование происходит при создании документа
|
||||||
|
- Копирование происходит при изменении распоряжения
|
||||||
|
- Копирование происходит при обновлении данных о доставке
|
||||||
|
- Логика проверяет, что в документе указан только один заказ клиента
|
||||||
|
|
||||||
|
### 9.3. Импорт данных
|
||||||
|
|
||||||
|
### 9.4. Использование в обработке КредитНотаЗаПериод
|
||||||
|
|
||||||
|
**Особенность:**
|
||||||
|
Реквизит "Купон" в документе "РеализацияТоваровУслуг" используется для **исключения** документов из процесса формирования кредит-нот. Документы реализации с указанным купоном не включаются в кредит-ноты за период, что позволяет разделить учет обычных продаж и продаж с купонами.
|
||||||
|
|
||||||
|
**Логика:**
|
||||||
|
- Если в документе реализации указан купон, документ не участвует в формировании кредит-нот
|
||||||
|
- Это означает, что купоны используются для других целей (например, для предоставления скидок), а не для кредит-нот
|
||||||
|
|
||||||
|
При импорте заказов клиентов реализована процедура сопоставления купонов:
|
||||||
|
- Поиск купона осуществляется по наименованию
|
||||||
|
- Если купон не найден, значение остается пустым
|
||||||
|
- Процедура экспортируется для использования в шаблонах импорта
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Выводы
|
||||||
|
|
||||||
|
### 10.1. Основные выводы
|
||||||
|
|
||||||
|
1. **Справочник "Купоны"** определен в основной конфигурации `CRM3devLocal` и используется в расширении `CRM3devLocal.Рана`
|
||||||
|
|
||||||
|
2. **Реквизит "Купон"** в документе "ЗаказКлиента":
|
||||||
|
- Определен в основной конфигурации
|
||||||
|
- Расширяется в расширении
|
||||||
|
- Имеет элемент формы для работы пользователя
|
||||||
|
- Используется для указания купона, применяемого к заказу
|
||||||
|
|
||||||
|
3. **Использование в документе "РеализацияТоваровУслуг"**:
|
||||||
|
- Реквизит "Купон" определен в основной конфигурации
|
||||||
|
- Используется в обработке "КредитНотаЗаПериод" для исключения документов с купонами из кредит-нот
|
||||||
|
- Документы реализации с указанным купоном не участвуют в формировании кредит-нот за период
|
||||||
|
- ⚠️ Реквизит **не используется** в печатных формах документа
|
||||||
|
|
||||||
|
4. **Использование в документе "РасходныйОрдерНаТовары"**:
|
||||||
|
- Реализована автоматическая логика копирования купона из заказа клиента
|
||||||
|
- Информация о купоне отображается в форме документа
|
||||||
|
- Логика проверяет корректность данных перед копированием
|
||||||
|
|
||||||
|
5. **Использование в обработке "КредитНотаЗаПериод"**:
|
||||||
|
- Реквизит "Купон" используется для фильтрации документов реализации
|
||||||
|
- Документы с указанным купоном исключаются из процесса формирования кредит-нот
|
||||||
|
- Это позволяет разделить учет обычных продаж и продаж с купонами
|
||||||
|
|
||||||
|
6. **Импорт заказов клиентов**:
|
||||||
|
- Реализована процедура сопоставления купонов при импорте
|
||||||
|
- Процедура ищет купон по наименованию
|
||||||
|
- Обрабатывает случаи отсутствия купона
|
||||||
|
|
||||||
|
7. **Права доступа**:
|
||||||
|
- Настроены роли для работы со справочником "Купоны" в основной конфигурации и расширении
|
||||||
|
- Роли разграничивают права на чтение и редактирование
|
||||||
|
- Роли включены в подсистему "rh_Продажи"
|
||||||
|
|
||||||
|
8. **Подсистемы**:
|
||||||
|
- Справочник "Купоны" включен в подсистему "rh_Продажи" в основной конфигурации
|
||||||
|
- Справочник "Купоны" включен в подсистему "rh_НСИ" в расширении
|
||||||
|
- Это указывает на его принадлежность к функционалу продаж и нормативно-справочной информации
|
||||||
|
|
||||||
|
### 10.2. Рекомендации
|
||||||
|
|
||||||
|
1. **Документирование бизнес-логики купонов:**
|
||||||
|
- Рекомендуется документировать правила применения купонов
|
||||||
|
- Указать, влияет ли купон на расчет скидок или другие расчеты
|
||||||
|
|
||||||
|
2. **Проверка использования в расчетах:**
|
||||||
|
- Необходимо проверить, используется ли реквизит "Купон" в расчетах скидок или других расчетах
|
||||||
|
- Если используется, необходимо документировать логику расчетов
|
||||||
|
|
||||||
|
3. **Валидация данных:**
|
||||||
|
- Рекомендуется добавить проверку корректности купона при заполнении заказа
|
||||||
|
- Проверить актуальность купона (срок действия, статус и т.д.)
|
||||||
|
|
||||||
|
4. **Печатные формы:**
|
||||||
|
- ⚠️ Рекомендуется проверить необходимость вывода информации о купоне в печатные формы документов
|
||||||
|
- В текущей конфигурации реквизит "Купон" не используется в печатных формах
|
||||||
|
- При необходимости добавить информацию о купоне в макеты печати
|
||||||
|
|
||||||
|
5. **Отчетность:**
|
||||||
|
- Рекомендуется проверить наличие отчетов, использующих информацию о купонах
|
||||||
|
- При необходимости создать отчеты для анализа использования купонов
|
||||||
|
|
||||||
|
6. **Логика копирования купона:**
|
||||||
|
- Рекомендуется проверить, копируется ли реквизит "Купон" из заказа клиента в реализацию при создании реализации на основании заказа
|
||||||
|
- Если копирование не реализовано, рассмотреть необходимость добавления такой логики
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Выводы и рекомендации по переносу в новую базу (CRM326)
|
||||||
|
|
||||||
|
### 11.1. Анализ текущего состояния в новой базе
|
||||||
|
|
||||||
|
**Что уже реализовано:**
|
||||||
|
- ✅ Информационное отображение купона в документе "РасходныйОрдерНаТовары" через дополнительное свойство "РК_Купон"
|
||||||
|
- ✅ Логика копирования купона из заказа клиента в реализацию через `УправлениеСвойствами`
|
||||||
|
- ✅ Механизм дополнительных реквизитов БСП настроен и работает
|
||||||
|
|
||||||
|
**Что отсутствует:**
|
||||||
|
- ❌ Справочник "Купоны" (не требуется для базовой функциональности)
|
||||||
|
- ❌ Фильтрация документов реализации по купону в обработке "КредитНотаЗаПериод" (требуется реализовать)
|
||||||
|
- ❌ Обработка импорта заказов с купонами (не требуется на текущий момент)
|
||||||
|
|
||||||
|
### 11.2. Приоритетный подход: использование типового механизма БСП
|
||||||
|
|
||||||
|
**Принципы реализации:**
|
||||||
|
1. Использовать типовой механизм дополнительных реквизитов БСП (план видов характеристик "ДополнительныеРеквизитыИСведения")
|
||||||
|
2. Минимум доработок конфигурации
|
||||||
|
3. Минимум новых объектов в расширении
|
||||||
|
4. Использовать существующие допустимые типы дополнительных свойств
|
||||||
|
|
||||||
|
### 11.3. Рекомендации по реализации
|
||||||
|
|
||||||
|
#### 11.3.1. Использование дополнительного свойства "РК_Купон"
|
||||||
|
|
||||||
|
**Тип значения:** `Строка` (уже входит в допустимые типы плана видов характеристик)
|
||||||
|
|
||||||
|
**Обоснование:**
|
||||||
|
- Для информационного отображения достаточно строкового значения
|
||||||
|
- Для фильтрации по наличию/отсутствию купона достаточно проверки на пустоту строки
|
||||||
|
- Не требуется создавать справочник "Купоны" и добавлять его в допустимые типы
|
||||||
|
- Минимум доработок конфигурации
|
||||||
|
|
||||||
|
**Настройка в базе данных:**
|
||||||
|
1. Создать дополнительное свойство "РК_Купон" в плане видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
2. Тип значения: `Строка`
|
||||||
|
3. Применить к объектам: `Документ.ЗаказКлиента`, `Документ.РеализацияТоваровУслуг`
|
||||||
|
4. Настроить видимость и доступность для соответствующих ролей
|
||||||
|
|
||||||
|
#### 11.3.2. Реализация фильтрации в кредит-нотах
|
||||||
|
|
||||||
|
**Вариант 1: Фильтрация через табличную часть "ДополнительныеРеквизиты"**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Пример запроса для исключения документов с купонами
|
||||||
|
ВЫБРАТЬ
|
||||||
|
РеализацияТоваровУслуг.Ссылка
|
||||||
|
ИЗ
|
||||||
|
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
||||||
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК ДопРекв
|
||||||
|
ПО РеализацияТоваровУслуг.Ссылка = ДопРекв.Ссылка
|
||||||
|
И ДопРекв.Свойство.Имя = "РК_Купон"
|
||||||
|
И ДопРекв.Значение <> ""
|
||||||
|
ГДЕ
|
||||||
|
ДопРекв.Ссылка = ЗНАЧЕНИЕ(Документ.РеализацияТоваровУслуг.ПустаяСсылка)
|
||||||
|
// Или использовать НЕ СУЩЕСТВУЕТ для проверки отсутствия записи
|
||||||
|
```
|
||||||
|
|
||||||
|
**Вариант 2: Фильтрация через программную проверку**
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// После получения выборки документов
|
||||||
|
Для Каждого СтрокаРеализации Из ВыборкаРеализаций Цикл
|
||||||
|
ЗначениеКупона = УправлениеСвойствами.ЗначениеСвойства(
|
||||||
|
СтрокаРеализации.Ссылка,
|
||||||
|
"РК_Купон"
|
||||||
|
);
|
||||||
|
Если ПустаяСтрока(ЗначениеКупона) Тогда
|
||||||
|
// Документ без купона - включаем в кредит-ноту
|
||||||
|
ТаблицаРезультатов.Добавить();
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 11.3.3. Информационное отображение (уже реализовано)
|
||||||
|
|
||||||
|
**Текущая реализация:**
|
||||||
|
- В документе "РасходныйОрдерНаТовары" используется поле формы `РК_ИнформацияОКупоне`
|
||||||
|
- Значение получается через `УправлениеСвойствами.ЗначениеСвойства()`
|
||||||
|
- Логика копирования из заказа в реализацию реализована в `ObjectModule.bsl`
|
||||||
|
|
||||||
|
**Дополнительно (если требуется):**
|
||||||
|
- Добавить элемент формы для отображения купона в документе "ЗаказКлиента"
|
||||||
|
- Добавить элемент формы для отображения купона в документе "РеализацияТоваровУслуг"
|
||||||
|
|
||||||
|
### 11.4. Шаги реализации
|
||||||
|
|
||||||
|
#### Шаг 1: Настройка дополнительного свойства в базе данных
|
||||||
|
|
||||||
|
1. Открыть конфигуратор новой базы
|
||||||
|
2. Перейти в план видов характеристик "ДополнительныеРеквизитыИСведения"
|
||||||
|
3. Создать новый элемент с именем "РК_Купон"
|
||||||
|
4. Настроить параметры:
|
||||||
|
- **Имя:** `РК_Купон`
|
||||||
|
- **Тип значения:** `Строка`
|
||||||
|
- **Заголовок:** "Купон"
|
||||||
|
- **Применяется к:** `Документ.ЗаказКлиента`, `Документ.РеализацияТоваровУслуг`
|
||||||
|
- **Видимость:** Настроить для соответствующих ролей
|
||||||
|
- **Доступность:** Настроить для соответствующих ролей
|
||||||
|
|
||||||
|
#### Шаг 2: Проверка существующей логики
|
||||||
|
|
||||||
|
1. Проверить работу копирования купона из заказа в реализацию
|
||||||
|
2. Проверить отображение купона в документе "РасходныйОрдерНаТовары"
|
||||||
|
3. При необходимости доработать формы документов для отображения купона
|
||||||
|
|
||||||
|
#### Шаг 3: Реализация фильтрации в обработке "КредитНотаЗаПериод"
|
||||||
|
|
||||||
|
1. Адаптировать запросы в обработке для фильтрации по дополнительному свойству
|
||||||
|
2. Использовать табличную часть "ДополнительныеРеквизиты" или программную проверку
|
||||||
|
3. Протестировать корректность исключения документов с купонами
|
||||||
|
|
||||||
|
**Важно:** Обработка "КредитНотаЗаПериод" обязательна к переносу, так как используется для формирования кредит-нот за период с исключением документов реализации, у которых указан купон.
|
||||||
|
|
||||||
|
#### Шаг 4: Тестирование
|
||||||
|
|
||||||
|
1. Проверить создание и заполнение купона в документе "ЗаказКлиента"
|
||||||
|
2. Проверить копирование купона в документ "РеализацияТоваровУслуг"
|
||||||
|
3. Проверить отображение купона в документе "РасходныйОрдерНаТовары"
|
||||||
|
4. Проверить фильтрацию в обработке "КредитНотаЗаПериод" - убедиться, что документы с купонами исключаются из кредит-нот
|
||||||
|
|
||||||
|
### 11.5. Что НЕ требуется переносить
|
||||||
|
|
||||||
|
1. **Справочник "Купоны"** - не требуется, так как используется строковое значение
|
||||||
|
2. **Реквизиты "Купон" в документах** - заменены на дополнительное свойство
|
||||||
|
3. **Обработка импорта заказов** - не требуется на текущий момент
|
||||||
|
4. **Роли доступа к справочнику** - не требуются, так как справочник не создается
|
||||||
|
|
||||||
|
### 11.6. Преимущества выбранного подхода
|
||||||
|
|
||||||
|
1. **Минимум доработок:** Используется существующий механизм БСП
|
||||||
|
2. **Гибкость:** Легко изменить тип значения или добавить дополнительные свойства
|
||||||
|
3. **Стандартность:** Соответствует типовым подходам БСП
|
||||||
|
4. **Простота поддержки:** Не требует создания новых объектов метаданных
|
||||||
|
5. **Расширяемость:** При необходимости можно добавить справочник позже
|
||||||
|
|
||||||
|
### 11.7. Оценка трудозатрат
|
||||||
|
|
||||||
|
| Этап | Описание | Время |
|
||||||
|
|------|----------|-------|
|
||||||
|
| Настройка дополнительного свойства | Создание и настройка в БД | 0.5-1 час |
|
||||||
|
| Проверка существующей логики | Тестирование копирования и отображения | 1-2 часа |
|
||||||
|
| Доработка форм (если требуется) | Добавление элементов для отображения купона | 2-3 часа |
|
||||||
|
| Реализация фильтрации | Адаптация запросов в обработке | 2-4 часа |
|
||||||
|
| Тестирование | Полное тестирование функциональности | 2-3 часа |
|
||||||
|
| **ИТОГО** | | **7.5-13 часов** |
|
||||||
|
|
||||||
|
### 11.8. Риски и ограничения
|
||||||
|
|
||||||
|
1. **Ограничение:** Купон хранится как строка, нет валидации существования купона
|
||||||
|
- **Решение:** При необходимости можно добавить справочник позже
|
||||||
|
|
||||||
|
2. **Ограничение:** Нет иерархической структуры купонов
|
||||||
|
- **Решение:** Если потребуется, можно создать справочник и изменить тип свойства
|
||||||
|
|
||||||
|
3. **Ограничение:** Фильтрация в запросах может быть менее эффективной, чем по реквизиту
|
||||||
|
- **Решение:** Использовать индексы на табличной части "ДополнительныеРеквизиты"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Приложения
|
||||||
|
|
||||||
|
### 12.1. Список файлов, связанных с реквизитом Купон
|
||||||
|
|
||||||
|
**Основная конфигурация CRM3devLocal:**
|
||||||
|
- `CRM3devLocal/src/Catalogs/Купоны/Купоны.mdo` - Справочник "Купоны"
|
||||||
|
- `CRM3devLocal/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo` - Реквизит "Купон" в документе
|
||||||
|
- `CRM3devLocal/src/Documents/РеализацияТоваровУслуг/РеализацияТоваровУслуг.mdo` - Реквизит "Купон" в документе
|
||||||
|
- `CRM3devLocal/src/DataProcessors/КредитНотаЗаПериод/Forms/Форма/Module.bsl` - Использование купона в запросах
|
||||||
|
- `CRM3devLocal/src/Roles/rh_ДобавлениеРедактированиеКупонов/` - Роль доступа
|
||||||
|
- `CRM3devLocal/src/Roles/rh_ЧтениеКупонов/` - Роль доступа
|
||||||
|
- `CRM3devLocal/src/Subsystems/rh_Rhana/Subsystems/rh_Продажи/rh_Продажи.mdo` - Подсистема
|
||||||
|
|
||||||
|
**Расширение CRM3devLocal.Рана:**
|
||||||
|
- `CRM3devLocal.Рана/src/Catalogs/Купоны/Купоны.mdo` - Расширение справочника
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/ЗаказКлиента.mdo` - Расширение реквизита
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/ЗаказКлиента/Forms/ФормаДокумента/Form.form` - Элемент формы
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Form.form` - Реквизит формы
|
||||||
|
- `CRM3devLocal.Рана/src/Documents/РасходныйОрдерНаТовары/Forms/ФормаДокумента/Module.bsl` - Логика обновления
|
||||||
|
- `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/ManagerModule.bsl` - Процедура сопоставления
|
||||||
|
- `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/Templates/СтолбцыЗаказовКлиентов/Template.mxlx` - Шаблон импорта
|
||||||
|
- `CRM3devLocal.Рана/src/Subsystems/rh_Rhana/Subsystems/rh_НСИ/rh_НСИ.mdo` - Подсистема
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/НастройкаНСИ/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/ЧтениеБазовойНСИ/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Roles/ЧтениеНормативноСправочнойИнформации/Rights.rights` - Права доступа
|
||||||
|
- `CRM3devLocal.Рана/src/Subsystems/rh_Rhana/Subsystems/rh_НСИ/rh_НСИ.mdo` - Подсистема
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 12.2. Сводная таблица использования реквизита Купон
|
||||||
|
|
||||||
|
| Объект | Реквизит/Элемент | Тип | Использование | Печатные формы |
|
||||||
|
|--------|------------------|-----|----------------|----------------|
|
||||||
|
| Справочник "Купоны" | - | Справочник | Источник данных | - |
|
||||||
|
| Документ "ЗаказКлиента" | Купон | CatalogRef.Купоны | Указание купона в заказе | ❌ Не используется |
|
||||||
|
| Документ "РеализацияТоваровУслуг" | Купон | CatalogRef.Купоны | Исключение из кредит-нот | ❌ Не используется |
|
||||||
|
| Документ "РасходныйОрдерНаТовары" | р_КупонИзЗаказаКлиента | CatalogRef.Купоны | Отображение купона из заказа | ❌ Не используется |
|
||||||
|
| Обработка "КредитНотаЗаПериод" | - | - | Фильтрация по пустому купону | - |
|
||||||
|
| Обработка "р_ИмпортЗаказовКлиентов" | - | - | Сопоставление купона при импорте | - |
|
||||||
|
|
||||||
|
**Условные обозначения:**
|
||||||
|
- ✅ Используется
|
||||||
|
- ❌ Не используется
|
||||||
|
- - Не применимо
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Конец документа**
|
||||||
|
|
||||||
@@ -0,0 +1,619 @@
|
|||||||
|
# Анализ различий: crm3-26-test и crm3-dev (конфигурации и расширения)
|
||||||
|
|
||||||
|
**Дата:** 2026-05-13
|
||||||
|
**Корень проекта:** `D:\SynologyDrive\projects_syn\crm3-26`
|
||||||
|
|
||||||
|
Сформировано скриптом `scripts/compare_crm_test_dev_configs.py` по **файлам выгрузки** (не по данным информационной базы). Настройки ИБ уровня «1С:Предприятие» в этом отчёте **не** снимаются — для них нужны снимки из режима предприятия или внешние обработки по плану миграции.
|
||||||
|
|
||||||
|
## 1. Свойства из Configuration.xml
|
||||||
|
|
||||||
|
### crm3-26-test (основная)
|
||||||
|
|
||||||
|
- **Name:** УправлениеТорговлей_CRM_2
|
||||||
|
- **Synonym:** 1С:Управление торговлей и взаимоотношениями с клиентами (CRM), редакция 3.1
|
||||||
|
- **Version:** 3.1.35.11
|
||||||
|
- **Vendor:** ООО "1С-Рарус Специализированные Решения"
|
||||||
|
- **ConfigurationExtensionCompatibilityMode:** Version8_3_27
|
||||||
|
- **CompatibilityMode:** Version8_3_27
|
||||||
|
- **InterfaceCompatibilityMode:** TaxiEnableVersion8_2
|
||||||
|
- **DefaultRunMode:** ManagedApplication
|
||||||
|
- **ScriptVariant:** Russian
|
||||||
|
- **ChildObjects (количество по типу тега в Configuration.xml):**
|
||||||
|
- CommonModule: 3118
|
||||||
|
- CommonPicture: 2633
|
||||||
|
- Role: 1150
|
||||||
|
- Constant: 1147
|
||||||
|
- Enum: 1057
|
||||||
|
- InformationRegister: 967
|
||||||
|
- FunctionalOption: 644
|
||||||
|
- Catalog: 625
|
||||||
|
- DefinedType: 473
|
||||||
|
- EventSubscription: 440
|
||||||
|
- DataProcessor: 436
|
||||||
|
- StyleItem: 421
|
||||||
|
- XDTOPackage: 407
|
||||||
|
- CommonCommand: 382
|
||||||
|
- Report: 380
|
||||||
|
- CommonForm: 363
|
||||||
|
- Document: 298
|
||||||
|
- ScheduledJob: 262
|
||||||
|
- CommonTemplate: 246
|
||||||
|
- SessionParameter: 115
|
||||||
|
- AccumulationRegister: 105
|
||||||
|
- CommandGroup: 64
|
||||||
|
- Subsystem: 41
|
||||||
|
- ExchangePlan: 26
|
||||||
|
- WebService: 21
|
||||||
|
- ChartOfCharacteristicTypes: 18
|
||||||
|
- HTTPService: 14
|
||||||
|
- DocumentJournal: 12
|
||||||
|
- FunctionalOptionsParameter: 10
|
||||||
|
- BusinessProcess: 8
|
||||||
|
- CommonAttribute: 7
|
||||||
|
- FilterCriterion: 7
|
||||||
|
- DocumentNumerator: 3
|
||||||
|
- SettingsStorage: 3
|
||||||
|
- WSReference: 2
|
||||||
|
- ExternalDataSource: 1
|
||||||
|
- IntegrationService: 1
|
||||||
|
- Language: 1
|
||||||
|
- Task: 1
|
||||||
|
|
||||||
|
### crm3-26-test.rhana
|
||||||
|
|
||||||
|
- **Name:** crm326RHANA
|
||||||
|
- **Synonym:** Расширение РАНА для CRM3-26
|
||||||
|
- **Version:** 1.3.0.35
|
||||||
|
- **ConfigurationExtensionPurpose:** Customization
|
||||||
|
- **NamePrefix:** РК_
|
||||||
|
- **ConfigurationExtensionCompatibilityMode:** Version8_3_27
|
||||||
|
- **CompatibilityMode:** Version8_3_27
|
||||||
|
- **InterfaceCompatibilityMode:** TaxiEnableVersion8_2
|
||||||
|
- **DefaultRunMode:** ManagedApplication
|
||||||
|
- **ScriptVariant:** Russian
|
||||||
|
- **ChildObjects (количество по типу тега в Configuration.xml):**
|
||||||
|
- CommonPicture: 10
|
||||||
|
- Enum: 7
|
||||||
|
- CommonModule: 4
|
||||||
|
- Role: 4
|
||||||
|
- Document: 3
|
||||||
|
- DataProcessor: 2
|
||||||
|
- Subsystem: 2
|
||||||
|
- Catalog: 1
|
||||||
|
- ChartOfCharacteristicTypes: 1
|
||||||
|
- CommonForm: 1
|
||||||
|
- Constant: 1
|
||||||
|
- DefinedType: 1
|
||||||
|
- FunctionalOption: 1
|
||||||
|
- Language: 1
|
||||||
|
- StyleItem: 1
|
||||||
|
|
||||||
|
### crm3-dev (основная)
|
||||||
|
|
||||||
|
- **Name:** УправлениеТорговлей_CRM_2
|
||||||
|
- **Synonym:** Управление торговлей и взаимоотношениями с клиентами, редакция 3.0
|
||||||
|
- **Version:** 3.0.22.28
|
||||||
|
- **Vendor:** ООО "1С-Рарус Специализированные Решения"
|
||||||
|
- **ConfigurationExtensionCompatibilityMode:** Version8_3_27
|
||||||
|
- **CompatibilityMode:** Version8_3_16
|
||||||
|
- **InterfaceCompatibilityMode:** TaxiEnableVersion8_2
|
||||||
|
- **DefaultRunMode:** ManagedApplication
|
||||||
|
- **ScriptVariant:** Russian
|
||||||
|
- **ChildObjects (количество по типу тега в Configuration.xml):**
|
||||||
|
- CommonPicture: 2103
|
||||||
|
- CommonModule: 2084
|
||||||
|
- Constant: 967
|
||||||
|
- Role: 893
|
||||||
|
- Enum: 820
|
||||||
|
- InformationRegister: 690
|
||||||
|
- FunctionalOption: 551
|
||||||
|
- Catalog: 515
|
||||||
|
- DataProcessor: 410
|
||||||
|
- Report: 392
|
||||||
|
- CommonCommand: 388
|
||||||
|
- EventSubscription: 386
|
||||||
|
- CommonForm: 376
|
||||||
|
- XDTOPackage: 297
|
||||||
|
- DefinedType: 296
|
||||||
|
- StyleItem: 263
|
||||||
|
- Document: 245
|
||||||
|
- CommonTemplate: 198
|
||||||
|
- ScheduledJob: 164
|
||||||
|
- AccumulationRegister: 111
|
||||||
|
- SessionParameter: 98
|
||||||
|
- CommandGroup: 67
|
||||||
|
- Subsystem: 41
|
||||||
|
- ExchangePlan: 23
|
||||||
|
- WebService: 21
|
||||||
|
- ChartOfCharacteristicTypes: 18
|
||||||
|
- DocumentJournal: 17
|
||||||
|
- HTTPService: 17
|
||||||
|
- FunctionalOptionsParameter: 10
|
||||||
|
- BusinessProcess: 7
|
||||||
|
- FilterCriterion: 7
|
||||||
|
- CommonAttribute: 6
|
||||||
|
- Sequence: 5
|
||||||
|
- SettingsStorage: 4
|
||||||
|
- WSReference: 4
|
||||||
|
- DocumentNumerator: 3
|
||||||
|
- Language: 3
|
||||||
|
- Style: 2
|
||||||
|
- ExternalDataSource: 1
|
||||||
|
- Interface: 1
|
||||||
|
- … всего типов: 41
|
||||||
|
|
||||||
|
### crm3-dev.rhana
|
||||||
|
|
||||||
|
- **Name:** Рана
|
||||||
|
- **Synonym:** Рана CRM3
|
||||||
|
- **Version:** 3.0.22.26/1.0.1.322
|
||||||
|
- **Vendor:** remark.pro
|
||||||
|
- **ConfigurationExtensionPurpose:** Customization
|
||||||
|
- **NamePrefix:** р_
|
||||||
|
- **ConfigurationExtensionCompatibilityMode:** Version8_3_14
|
||||||
|
- **InterfaceCompatibilityMode:** TaxiEnableVersion8_2
|
||||||
|
- **DefaultRunMode:** ManagedApplication
|
||||||
|
- **ScriptVariant:** Russian
|
||||||
|
- **ChildObjects (количество по типу тега в Configuration.xml):**
|
||||||
|
- Catalog: 79
|
||||||
|
- Document: 72
|
||||||
|
- Role: 47
|
||||||
|
- Enum: 45
|
||||||
|
- CommonModule: 38
|
||||||
|
- Report: 33
|
||||||
|
- CommonPicture: 30
|
||||||
|
- StyleItem: 19
|
||||||
|
- InformationRegister: 16
|
||||||
|
- DefinedType: 15
|
||||||
|
- AccumulationRegister: 12
|
||||||
|
- DataProcessor: 10
|
||||||
|
- Subsystem: 9
|
||||||
|
- ChartOfCharacteristicTypes: 4
|
||||||
|
- CommonForm: 4
|
||||||
|
- Constant: 3
|
||||||
|
- DocumentJournal: 2
|
||||||
|
- BusinessProcess: 1
|
||||||
|
- Language: 1
|
||||||
|
|
||||||
|
## 2. Сводка различий (основные конфигурации)
|
||||||
|
|
||||||
|
| Параметр | crm3-26-test | crm3-dev |
|
||||||
|
|----------|--------------|----------|
|
||||||
|
| Версия типовой | 3.1.35.11 | 3.0.22.28 |
|
||||||
|
| Синоним | 1С:Управление торговлей и взаимоотношениями с клиентами (CRM), редакция 3.1 | Управление торговлей и взаимоотношениями с клиентами, редакция 3.0 |
|
||||||
|
| Режим совместимости расширений (платформа) | Version8_3_27 | Version8_3_27 |
|
||||||
|
|
||||||
|
**Вывод:** тестовая ветка на **редакции 3.1** (версия конфигурации из XML), рабочая исходная — **редакция 3.0**. Это разные линейки типовой; перенос доработок и сопоставление объектов выполняется с учётом миграции 3.0 -> 3.1, а не как «одинаковая база».
|
||||||
|
|
||||||
|
## 3. Сводка различий (расширения)
|
||||||
|
|
||||||
|
| Параметр | crm3-26-test.rhana | crm3-dev.rhana |
|
||||||
|
|----------|-------------------|----------------|
|
||||||
|
| Имя | crm326RHANA | Рана |
|
||||||
|
| Версия | 1.3.0.35 | 3.0.22.26/1.0.1.322 |
|
||||||
|
| Префикс | РК_ | р_ |
|
||||||
|
| Режим совместимости расширения | Version8_3_27 | Version8_3_14 |
|
||||||
|
| CompatibilityMode (доп.) | Version8_3_27 | — |
|
||||||
|
|
||||||
|
**Вывод:** расширение тестовой ветки (`crm326RHANA`, префикс **РК_**) ориентировано на платформу **8.3.27**; исходное расширение «Рана» (`р_`) заявляет **ConfigurationExtensionCompatibilityMode Version8_3_14** — при сборке/подключении сверять требования EDT и фактическую версию платформы ИБ.
|
||||||
|
|
||||||
|
## 4. Количество объектов по папкам верхнего уровня (EDT `src/`)
|
||||||
|
|
||||||
|
*Примечание:* число **подпапок** в `src/<Тип>/` (ниже) — фактическая выгрузка EDT. Счётчики по тегам в разделе 1 для `<ChildObjects>` — это **индекс ссылок** в `Configuration.xml`; для отдельных типов (например, перечисления) они могут **существенно различаться** с числом папок — для полного состава ориентироваться на XML или конфигуратор.
|
||||||
|
|
||||||
|
| Тип метаданных | crm3-26-test (основная) | crm3-26-test.rhana | crm3-dev (основная) | crm3-dev.rhana |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| AccumulationRegisters | 103 | 0 | 109 | 0 |
|
||||||
|
| BusinessProcesses | 8 | 0 | 7 | 0 |
|
||||||
|
| Catalogs | 616 | 1 | 491 | 8 |
|
||||||
|
| ChartsOfCharacteristicTypes | 18 | 0 | 18 | 0 |
|
||||||
|
| CommandGroups | 0 | 0 | 0 | 0 |
|
||||||
|
| CommonAttributes | 0 | 0 | 0 | 0 |
|
||||||
|
| CommonCommands | 382 | 0 | 388 | 0 |
|
||||||
|
| CommonForms | 363 | 1 | 376 | 4 |
|
||||||
|
| CommonModules | 3118 | 3 | 2081 | 35 |
|
||||||
|
| CommonPictures | 2632 | 0 | 2102 | 5 |
|
||||||
|
| CommonTemplates | 246 | 0 | 198 | 0 |
|
||||||
|
| Constants | 254 | 0 | 133 | 0 |
|
||||||
|
| DataProcessors | 436 | 2 | 410 | 8 |
|
||||||
|
| DefinedTypes | 0 | 0 | 0 | 0 |
|
||||||
|
| DocumentJournals | 11 | 0 | 16 | 0 |
|
||||||
|
| DocumentNumerators | 0 | 0 | 0 | 0 |
|
||||||
|
| Documents | 298 | 2 | 229 | 21 |
|
||||||
|
| Enums | 162 | 0 | 99 | 2 |
|
||||||
|
| EventSubscriptions | 0 | 0 | 0 | 0 |
|
||||||
|
| ExchangePlans | 26 | 0 | 23 | 0 |
|
||||||
|
| ExternalDataSources | 1 | 0 | 1 | 0 |
|
||||||
|
| FilterCriteria | 1 | 0 | 2 | 0 |
|
||||||
|
| FunctionalOptions | 0 | 0 | 0 | 0 |
|
||||||
|
| FunctionalOptionsParameters | 0 | 0 | 0 | 0 |
|
||||||
|
| HTTPServices | 14 | 0 | 17 | 0 |
|
||||||
|
| InformationRegisters | 829 | 0 | 554 | 2 |
|
||||||
|
| IntegrationServices | 1 | 0 | 0 | 0 |
|
||||||
|
| Interfaces | 0 | 0 | 1 | 0 |
|
||||||
|
| Languages | 0 | 0 | 0 | 0 |
|
||||||
|
| Reports | 380 | 0 | 392 | 10 |
|
||||||
|
| Roles | 1150 | 4 | 893 | 31 |
|
||||||
|
| ScheduledJobs | 240 | 0 | 139 | 0 |
|
||||||
|
| Sequences | 0 | 0 | 0 | 0 |
|
||||||
|
| SessionParameters | 0 | 0 | 0 | 0 |
|
||||||
|
| SettingsStorages | 3 | 0 | 4 | 0 |
|
||||||
|
| StyleItems | 0 | 0 | 0 | 0 |
|
||||||
|
| Styles | 0 | 0 | 2 | 0 |
|
||||||
|
| Subsystems | 28 | 1 | 27 | 8 |
|
||||||
|
| Tasks | 1 | 0 | 1 | 0 |
|
||||||
|
| WSReferences | 2 | 0 | 4 | 0 |
|
||||||
|
| WebServices | 21 | 0 | 21 | 0 |
|
||||||
|
| XDTOPackages | 407 | 0 | 297 | 0 |
|
||||||
|
|
||||||
|
## 5. Дифф имён: Документы и ОбщиеМодули
|
||||||
|
|
||||||
|
### Документы (`Documents/`)
|
||||||
|
|
||||||
|
- **Только в crm3-26-test:** 94
|
||||||
|
- `CRM_ДоходыИРасходыПоПроекту`
|
||||||
|
- `CRM_ОтсутствиеСотрудника`
|
||||||
|
- `АктИнвентаризацииСАТУРН`
|
||||||
|
- `АктОбУничтоженииПерсональныхДанных`
|
||||||
|
- `АктПремииКлиенту`
|
||||||
|
- `АктПремииПоставщика`
|
||||||
|
- `АктПриемкиВходящийЕИС`
|
||||||
|
- `АктПримененияСАТУРН`
|
||||||
|
- `Бронирование`
|
||||||
|
- `ВводОстатковВзаиморасчетов`
|
||||||
|
- `ВводОстатковДенежныхСредств`
|
||||||
|
- `ВводОстатковНДСПредъявленного`
|
||||||
|
- `ВводОстатковОПродажахЗаПрошлыеПериоды`
|
||||||
|
- `ВводОстатковПоФинансовымИнструментам`
|
||||||
|
- `ВводОстатковПрочиеРасходы`
|
||||||
|
- `ВводОстатковПрочихАктивовПассивов`
|
||||||
|
- `ВводОстатковРасчетовПоЭквайрингу`
|
||||||
|
- `ВводОстатковСПодотчетниками`
|
||||||
|
- `ВводОстатковТМЦВЭксплуатации`
|
||||||
|
- `ВводОстатковТоваров`
|
||||||
|
- `ВнесениеСведенийОСобранномУрожаеЗЕРНО`
|
||||||
|
- `ВнутреннееПотребление`
|
||||||
|
- `ВыкупПринятыхНаХранениеТоваров`
|
||||||
|
- `ВыкупТоваровХранителем`
|
||||||
|
- `ЗапросОстатковПартийЗЕРНО`
|
||||||
|
- `ЗапросОстатковПартийСАТУРН`
|
||||||
|
- `ЗаявкаНаКомандировку`
|
||||||
|
- `ИмпортПродукцииСАТУРН`
|
||||||
|
- `КорректировкаГрафикаВзаиморасчетов`
|
||||||
|
- `КорректировкаЗадолженности`
|
||||||
|
- `КорректировкаПлановыхПотребностей`
|
||||||
|
- `КорректировкаРасчетовСПодотчетнымиЛицами`
|
||||||
|
- `НакладнаяСАТУРН`
|
||||||
|
- `НачислениеРеверсивногоНДС`
|
||||||
|
- `НачислениеРетроБонусовКлиента`
|
||||||
|
- `НачислениеРетроБонусовПоставщика`
|
||||||
|
- `ОприходованиеИзлишковОтгруженныхТоваров`
|
||||||
|
- `ОтгрузкаТоваровКлиенту`
|
||||||
|
- `ОтгрузкаТоваровСХранения`
|
||||||
|
- `ОтчетИСМП`
|
||||||
|
- `ОтчетКомитентуОЗакупках`
|
||||||
|
- `ОтчетОПроизводствеЕГАИС`
|
||||||
|
- `ОтчетОРозничныхВозвратах`
|
||||||
|
- `ОтчетОСписанииТоваровСХранения`
|
||||||
|
- `ОтчетОбИмпортеЕГАИС`
|
||||||
|
- `ОформлениеСДИЗЗЕРНО`
|
||||||
|
- `ПередачаТоваровХранителю`
|
||||||
|
- `ПеремещениеМеждуМОДИСМП`
|
||||||
|
- `ПересортицаТоваровУХранителя`
|
||||||
|
- `ПланВнутреннихПотреблений`
|
||||||
|
- `ПланПримененияСАТУРН`
|
||||||
|
- `ПлатежнаяСсылкаСБП`
|
||||||
|
- `ПогашениеСДИЗЗЕРНО`
|
||||||
|
- `ПодключениеКегаКОборудованиюРозливаИСМП`
|
||||||
|
- `ПодтверждениеЗачисленияЗарплаты`
|
||||||
|
- `ПодтверждениеНулевойСтавкиНДС`
|
||||||
|
- `ПорчаТоваровУХранителя`
|
||||||
|
- `ПоступлениеТоваровОтКлиента`
|
||||||
|
- `ПоступлениеТоваровОтХранителя`
|
||||||
|
- `ПоступлениеУслугВПодразделение`
|
||||||
|
- `ПриемкаТоваровНаХранение`
|
||||||
|
- `ПроизводственнаяОперацияСАТУРН`
|
||||||
|
- `РазрешениеНаОтгрузкуИСМП`
|
||||||
|
- `РаспознанныйДокумент`
|
||||||
|
- `РасчетПроцентныхРасходовДисконтирования`
|
||||||
|
- `РегистраторЗапасыИПотребности`
|
||||||
|
- `РегистраторРасчетаСебестоимости`
|
||||||
|
- `СверкаВзаиморасчетов2_4`
|
||||||
|
- `СверкаВзаиморасчетов2_5_11`
|
||||||
|
- `СверкаВзаиморасчетовСБПc2b`
|
||||||
|
- `СообщениеЭДО`
|
||||||
|
- `СписаниеОтгруженныхТоваров`
|
||||||
|
- `СписаниеПартийЗЕРНО`
|
||||||
|
- `СписаниеРасхожденийПоступлениеПриобретение`
|
||||||
|
- `СписаниеРетроБонусовКлиента`
|
||||||
|
- `СписаниеРетроБонусовПоставщика`
|
||||||
|
- `Сторно`
|
||||||
|
- `ТранспортныйКонтейнерЭДО`
|
||||||
|
- `УведомлениеОПланируемомИмпортеЕГАИС`
|
||||||
|
- `УдалитьРегистраторГрафикаДвиженияТоваров`
|
||||||
|
- … и ещё 14
|
||||||
|
- **Только в crm3-dev:** 25
|
||||||
|
- `CRM_ПланированиеПоОтделам`
|
||||||
|
- `rh_ОтражениеФактаПродаж`
|
||||||
|
- `rh_ПланированиеПродаж`
|
||||||
|
- `rh_ТоварыНаСкладахСебестоимость`
|
||||||
|
- `rh_УдалитьКассоваяСмена`
|
||||||
|
- `АктОРасхожденияхПриПоступленииТоваров`
|
||||||
|
- `АктПриемкиТоваров`
|
||||||
|
- `ВнутреннееПотреблениеТоваров`
|
||||||
|
- `ВыпискаПоРасчетномуСчету`
|
||||||
|
- `ПакетЭД`
|
||||||
|
- `РегистраторГрафикаДвиженияТоваров`
|
||||||
|
- `СверкаВзаиморасчетов`
|
||||||
|
- `СписаниеЗадолженности`
|
||||||
|
- `УдалитьCRM_Сделка`
|
||||||
|
- `УдалитьCRM_Событие`
|
||||||
|
- `УдалитьОрдерНаОтражениеРезультатовПересчетовТоваров`
|
||||||
|
- `УдалитьПодтверждениеНулевойСтавкиНДС`
|
||||||
|
- `УдалитьРаспоряжениеНаИнвентаризациюТоваров`
|
||||||
|
- `УдалитьРаспределениеРасходовНаСебестоимостьТоваров`
|
||||||
|
- `УстановкаСкидокНаценок`
|
||||||
|
- `ЭлектронныйДокументВходящий`
|
||||||
|
- `ЭлектронныйДокументИсходящий`
|
||||||
|
- `смсСообщение`
|
||||||
|
- `удалитьCRM_Мероприятие`
|
||||||
|
- `удалитьCRM_Планирование`
|
||||||
|
- **В обеих:** 204
|
||||||
|
|
||||||
|
### Общие модули (`CommonModules/`)
|
||||||
|
|
||||||
|
- **Только в crm3-26-test:** 1301
|
||||||
|
- `CRM_БазоваяСервер`
|
||||||
|
- `CRM_ВоронкиПродажПовтИсп`
|
||||||
|
- `CRM_ИнтересыВызовСервера`
|
||||||
|
- `CRM_ЛентаСобытийКлиентСервер`
|
||||||
|
- `CRM_ЛицензированиеКлиент`
|
||||||
|
- `CRM_Модуль_ОбработкаТабличнойЧастиСервер`
|
||||||
|
- `CRM_Модуль_РаботаСКонтрагентамиВызовСервера`
|
||||||
|
- `CRM_НачалоРаботыСПрограммойВызовСервера`
|
||||||
|
- `CRM_ОбменB2BПортал`
|
||||||
|
- `CRM_ОбменСВнешнимиКалендарями`
|
||||||
|
- `CRM_ОбменСВнешнимиКалендарямиВызовСервера`
|
||||||
|
- `CRM_ОповещенияКлиент`
|
||||||
|
- `CRM_ОчисткаИсторииРеквизитовОбъектов`
|
||||||
|
- `CRM_ПланированиеПродаж`
|
||||||
|
- `CRM_ПодготовкаФормДляМобильногоКлиента`
|
||||||
|
- `CRM_ПрисоединенныеФайлыКлиент`
|
||||||
|
- `CRM_ПроверкаПравописанияКлиент`
|
||||||
|
- `CRM_ПроверкаПравописанияСервер`
|
||||||
|
- `CRM_РаботаСHTMLКлиент`
|
||||||
|
- `CRM_РаботаСICalendar`
|
||||||
|
- `CRM_РаботаСВиджетамиКлиент`
|
||||||
|
- `CRM_РаботаСВиджетамиКлиентСервер`
|
||||||
|
- `CRM_РаботаСВиджетамиСервер`
|
||||||
|
- `CRM_РаботаСВнешнимиБиблиотекамиВызовСервера`
|
||||||
|
- `CRM_РаботаСПочтовымиСообщениямиСлужебный`
|
||||||
|
- `CRM_РаботаСРечьюКлиент`
|
||||||
|
- `CRM_РаботаСРечьюСервер`
|
||||||
|
- `CRM_РаботаСФайлами`
|
||||||
|
- `CRM_РаботаСЯзыковымиМоделямиВызовСервера`
|
||||||
|
- `CRM_РаботаСЯзыковымиМоделямиКлиент`
|
||||||
|
- `CRM_РаботаСЯзыковымиМоделямиСервер`
|
||||||
|
- `CRM_СинхронизацияDAV`
|
||||||
|
- `CRM_СоисполнителиДиалоговКлиент`
|
||||||
|
- `CRM_СоисполнителиДиалоговСервер`
|
||||||
|
- `CRM_СпискиВыбораКлиентСервер`
|
||||||
|
- `CRM_СтраницаПриветствие`
|
||||||
|
- `CRM_СтраницаПриветствиеКлиент`
|
||||||
|
- `CRM_СтраницаПриветствияГлобальный`
|
||||||
|
- `CRM_ТехподдержкаИнтеграцияСервер`
|
||||||
|
- `CRM_УТ_ПолучениеОбновленийПрограммы`
|
||||||
|
- `CRM_УдалениеПомеченныхОбъектов`
|
||||||
|
- `CRM_УправлениеКонтактнойИнформациейВызовСервера`
|
||||||
|
- `CRM_ЦентрМониторингаВызовСервера`
|
||||||
|
- `CRM_ЦентрМониторингаГлобальный`
|
||||||
|
- `CRM_ЦентрМониторингаКлиент`
|
||||||
|
- `CRM_ЦентрМониторингаКлиентСервер`
|
||||||
|
- `CRM_ШаблоныЭлементовФорм`
|
||||||
|
- `CRM_ШаблоныЭлементовФормКлиент`
|
||||||
|
- `CRMЛокализация`
|
||||||
|
- `HttpBridgeКлиент`
|
||||||
|
- `АвтоматическоеПолучениеЭДО`
|
||||||
|
- `АвтоматическоеПолучениеЭДОВызовСервера`
|
||||||
|
- `АвтоматическоеПолучениеЭДОИнтеграцияОблака`
|
||||||
|
- `АвтоматическоеПолучениеЭДОКлиент`
|
||||||
|
- `АвтоматическоеПолучениеЭДОКлиентСервер`
|
||||||
|
- `АвтоматическоеПолучениеЭДОПовтИсп`
|
||||||
|
- `АктПремииКлиентуЛокализация`
|
||||||
|
- `АктПремииПоставщикаЛокализация`
|
||||||
|
- `АнализСхемКонфигурации`
|
||||||
|
- `АннулированиеПодарочныхСертификатовЛокализация`
|
||||||
|
- `АудитСостоянияСистемыЛокализация`
|
||||||
|
- `АудитСостоянияСистемыПовтИсп`
|
||||||
|
- `БанковскиеСчетаКонтрагентовЛокализация`
|
||||||
|
- `БанковскиеСчетаОрганизацийЛокализация`
|
||||||
|
- `БизнесСетьВМоделиСервиса`
|
||||||
|
- `БизнесСетьСлужебный`
|
||||||
|
- `БлокировкаРаботыСВнешнимиРесурсамиЛокализация`
|
||||||
|
- `БронированиеЛокализация`
|
||||||
|
- `ВводОстатковВызовСервера`
|
||||||
|
- `ВводОстатковСервер`
|
||||||
|
- `ВводОстатковСерверПовтИсп`
|
||||||
|
- `ВводОстатковТМЦВЭксплуатацииЛокализация`
|
||||||
|
- `ВзаиморасчетыВызовСервера`
|
||||||
|
- `ВзаиморасчетыКлиент`
|
||||||
|
- `ВидыНалоговВзносовЛокализация`
|
||||||
|
- `ВидыПриложенийПереопределяемый`
|
||||||
|
- `ВидыПриложенийСервер`
|
||||||
|
- `ВидыПриложенийСлужебный`
|
||||||
|
- `ВизуализацияЭДО`
|
||||||
|
- `ВизуализацияЭДОВызовСервера`
|
||||||
|
- … и ещё 1221
|
||||||
|
- **Только в crm3-dev:** 264
|
||||||
|
- `CRM_GoogleИнтеграция`
|
||||||
|
- `CRM_GoogleИнтеграцияРегл`
|
||||||
|
- `CRM_СобытияКлиент`
|
||||||
|
- `CRM_СобытияСервер`
|
||||||
|
- `CRM_УправлениеЭлектроннойПочтойIMAP`
|
||||||
|
- `mmMobileMonitor`
|
||||||
|
- `mmMobileMonitorПривилегированный`
|
||||||
|
- `mmОбратныйПротокол`
|
||||||
|
- `rh_ОбновлениеИнформационнойБазыRhana`
|
||||||
|
- `rh_ОбновлениеИнформационнойБазыВызовСервера`
|
||||||
|
- `rh_ОбщийМодульКлиентСервер`
|
||||||
|
- `rh_ОчередьЗаданийСлужебный`
|
||||||
|
- `rh_ПолнотекстовыйПоискКлиент`
|
||||||
|
- `rh_ПользователиСлужебныйВМоделиСервисаПовтИсп`
|
||||||
|
- `rh_СообщенияВМоделиСервисаПовтИсп`
|
||||||
|
- `rh_ТоварыНаСкладахСебестоимость`
|
||||||
|
- `rh_УправлениеКонтактнойИнформациейПереопределяемый`
|
||||||
|
- `rh_УправлениеПечатью`
|
||||||
|
- `rh_УправлениеПечатьюКлиент`
|
||||||
|
- `rh_ШаблоныСообщенийКлиентСервер`
|
||||||
|
- `rh_ШаблоныСообщенийСервер`
|
||||||
|
- `tega_ОбщийМодульСервер`
|
||||||
|
- `АвтономнаяРаботаСлужебныйВызовСервера`
|
||||||
|
- `АдресныйКлассификаторВызовСервера`
|
||||||
|
- `АдресныйКлассификаторКлиентСервер`
|
||||||
|
- `АдресныйКлассификаторСлужебныйВМоделиСервиса`
|
||||||
|
- `АнализЖурналаРегистрацииКлиент`
|
||||||
|
- `АнализЖурналаРегистрацииСлужебный`
|
||||||
|
- `БухгалтерскиеОтчетыВызовСервераПовтИсп`
|
||||||
|
- `ВариантыОтчетовВызовСервераПовтИсп`
|
||||||
|
- `ВариантыОтчетовКлиентПереопределяемый`
|
||||||
|
- `ВитриныКлиент`
|
||||||
|
- `ВнутреннееПотреблениеТоваровКлиентЛокализация`
|
||||||
|
- `ВнутреннееПотреблениеТоваровЛокализация`
|
||||||
|
- `ВызовОнлайнПоддержки`
|
||||||
|
- `ВызовОнлайнПоддержкиВызовСервера`
|
||||||
|
- `ВызовОнлайнПоддержкиКлиент`
|
||||||
|
- `ВызовОнлайнПоддержкиПереопределяемый`
|
||||||
|
- `ГенерацияШтрихкодаВызовСервера`
|
||||||
|
- `ГенерацияШтрихкодаКлиентСервер`
|
||||||
|
- `Диадок_ФоновыеЗадания`
|
||||||
|
- `ДлительныеОперацииГлобальный`
|
||||||
|
- `ДлительныеОперацииКлиентПовтИсп`
|
||||||
|
- `ДополнительныеОтчетыИОбработкиВБезопасномРежиме`
|
||||||
|
- `ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера`
|
||||||
|
- `ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс`
|
||||||
|
- `ДополнительныеОтчетыИОбработкиВБезопасномРежимеПовтИсп`
|
||||||
|
- `ДополнительныеОтчетыИОбработкиРегламентныеЗадания`
|
||||||
|
- `ДополнительныеОтчетыИОбработкиСобытия`
|
||||||
|
- `ЖурналДокументовВнутреннегоТовародвиженияЛокализация`
|
||||||
|
- `ЗаказНаВнутреннееПотреблениеКлиентЛокализация`
|
||||||
|
- `ЗакупкиКлиентСервер`
|
||||||
|
- `ЗаполнениеСвойствПоСтатистикеПереопределяемый`
|
||||||
|
- `ЗаполнениеСвойствПоСтатистикеПовтИсп`
|
||||||
|
- `ЗаполнениеСвойствПоСтатистикеСервер`
|
||||||
|
- `ИнтеграцияЕГАИСВебКлиент`
|
||||||
|
- `ИнтеграцияЕГАИСГлобальный`
|
||||||
|
- `ИнтеграцияЕГАИССлужебныйКлиент`
|
||||||
|
- `ИнтеграцияИСМПГлобальный`
|
||||||
|
- `ИнтеграцияС1СДокументооборотВызовСервераПереопределяемый`
|
||||||
|
- `ИнтеграцияС1СДокументооборотКлиентПереопределяемый`
|
||||||
|
- `ИнтеграцияС1СДокументооборотПереопределяемый`
|
||||||
|
- `ИнтеграцияСЯндексКассой`
|
||||||
|
- `ИнтеграцияСЯндексКассойКлиент`
|
||||||
|
- `ИнтеграцияСЯндексКассойКлиентПереопределяемый`
|
||||||
|
- `ИнтеграцияСЯндексКассойПереопределяемый`
|
||||||
|
- `ИнтеграцияСЯндексКассойСлужебный`
|
||||||
|
- `ИнтеграцияСЯндексКассойСлужебныйВызовСервера`
|
||||||
|
- `ИнтеграцияСЯндексКассойСлужебныйКлиент`
|
||||||
|
- `ИнтерфейсИСМПВызовСервера`
|
||||||
|
- `ИнтерфейсИСМПКлиент`
|
||||||
|
- `ИнтерфейсИСМПКлиентСервер`
|
||||||
|
- `ИнтерфейсМОТПКлиентСервер`
|
||||||
|
- `КассовыеСменыВызовСервераПереопределяемый`
|
||||||
|
- `КомандыРаботыСБизнесПроцессамиКлиент`
|
||||||
|
- `КонтактнаяИнформацияXML`
|
||||||
|
- `КонтактнаяИнформацияКлиентСервер`
|
||||||
|
- `КонтактнаяИнформацияКлиентСерверПовтИсп`
|
||||||
|
- `КонтрольДинамическогоОбновленияКонфигурацииВызовСервера`
|
||||||
|
- `КонтрольДинамическогоОбновленияКонфигурацииГлобальный`
|
||||||
|
- … и ещё 184
|
||||||
|
- **В обеих:** 1817
|
||||||
|
|
||||||
|
## 6. Дифф имён: расширения (верхний уровень)
|
||||||
|
|
||||||
|
### Документы в расширениях
|
||||||
|
|
||||||
|
- **Только в crm3-26-test.rhana:** 0
|
||||||
|
- **Только в crm3-dev.rhana:** 19
|
||||||
|
- `ВводОстатков`
|
||||||
|
- `ВозвратТоваровОтКлиента`
|
||||||
|
- `ЗаданиеНаПеревозку`
|
||||||
|
- `ЗаказКлиента`
|
||||||
|
- `ЗаказНаПеремещение`
|
||||||
|
- `ОприходованиеИзлишковТоваров`
|
||||||
|
- `ОрдерНаОтражениеИзлишковТоваров`
|
||||||
|
- `ОрдерНаОтражениеНедостачТоваров`
|
||||||
|
- `ОтчетКомиссионера`
|
||||||
|
- `ОтчетКомиссионераОСписании`
|
||||||
|
- `ОтчетОРозничныхПродажах`
|
||||||
|
- `ПеремещениеТоваров`
|
||||||
|
- `ПересчетТоваров`
|
||||||
|
- `ПриобретениеТоваровУслуг`
|
||||||
|
- `ПриходныйОрдерНаТовары`
|
||||||
|
- `СписаниеНедостачТоваров`
|
||||||
|
- `СчетФактураВыданный`
|
||||||
|
- `СчетФактураВыданныйАванс`
|
||||||
|
- `р_ВерсииСебестоимости`
|
||||||
|
- **В обоих:** 2
|
||||||
|
|
||||||
|
### Общие модули в расширениях
|
||||||
|
|
||||||
|
- **Только в crm3-26-test.rhana:** 3
|
||||||
|
- `ОбщегоНазначенияКлиентСервер`
|
||||||
|
- `РК_ОбщегоНазначенияВызовСервера`
|
||||||
|
- `РК_ОбщегоНазначенияКлиентСервер`
|
||||||
|
- **Только в crm3-dev.rhana:** 35
|
||||||
|
- `rh_ТоварыНаСкладахСебестоимость`
|
||||||
|
- `ВводОстатковЛокализация`
|
||||||
|
- `ВозвратТоваровОтКлиентаЛокализация`
|
||||||
|
- `ДенежныеСредстваСервер`
|
||||||
|
- `ДоставкаТоваров`
|
||||||
|
- `ЗакупкиСервер`
|
||||||
|
- `ЗапасыСервер`
|
||||||
|
- `ИнтеграцияСЯндексКассойУТ`
|
||||||
|
- `МенеджерОбменаЧерезУниверсальныйФормат`
|
||||||
|
- `МенеджерОфлайнОборудования`
|
||||||
|
- `НаборыСервер`
|
||||||
|
- `ОбменДаннымиУТ`
|
||||||
|
- `ОбщегоНазначения`
|
||||||
|
- `ОприходованиеИзлишковТоваровЛокализация`
|
||||||
|
- `ОтчетКомиссионераЛокализация`
|
||||||
|
- `ОтчетКомиссионераОСписанииЛокализация`
|
||||||
|
- `ПеремещениеТоваровЛокализация`
|
||||||
|
- `ПодключаемоеОборудованиеOfflineВызовСервера`
|
||||||
|
- `ПрефиксацияОбъектовКлиентСервер`
|
||||||
|
- `ПрефиксацияОбъектовСобытия`
|
||||||
|
- `ПриобретениеТоваровУслугЛокализация`
|
||||||
|
- `ПроведениеСерверУТ`
|
||||||
|
- `ПродажиСервер`
|
||||||
|
- `РеализацияТоваровУслугЛокализация`
|
||||||
|
- `СкладыСервер`
|
||||||
|
- `СписаниеНедостачТоваровЛокализация`
|
||||||
|
- `ТорговыеПредложенияСлужебный`
|
||||||
|
- `УправлениеПечатьюMSWordКлиент`
|
||||||
|
- `УправлениеПечатьюВызовСервера`
|
||||||
|
- `УправлениеПечатьюКлиентСервер`
|
||||||
|
- `УправлениеПечатьюПереопределяемый`
|
||||||
|
- `УчетНДСПереопределяемый`
|
||||||
|
- `УчетНДСУП`
|
||||||
|
- `УчетНДСУПКлиентСервер`
|
||||||
|
- `УчетНДСУПСлужебный`
|
||||||
|
- **В обоих:** 0
|
||||||
|
|
||||||
|
### Справочники в расширениях
|
||||||
|
|
||||||
|
- **Только в crm3-26-test.rhana:** 0
|
||||||
|
- **Только в crm3-dev.rhana:** 7
|
||||||
|
- `ВидыЗапасов`
|
||||||
|
- `ВидыКонтактнойИнформации`
|
||||||
|
- `Номенклатура`
|
||||||
|
- `НоменклатураКонтрагентов`
|
||||||
|
- `Партнеры`
|
||||||
|
- `СертификатыНоменклатуры`
|
||||||
|
- `Склады`
|
||||||
|
- **В обоих:** 1
|
||||||
|
|
||||||
|
## 7. Рекомендуемые следующие шаги для «первоначальной настройки» тестовой ИБ
|
||||||
|
|
||||||
|
1. В конфигураторе/EDT для **crm3-26-test** зафиксировать состав подключаемых расширений (`crm3-26-test.rhana` + при необходимости `crm3-dev.upd5b` и др.) и версию платформы **не ниже** требований 3.1.
|
||||||
|
2. Снять **парные снимки настроек ИБ** для рабочей `crm3-dev` и тестовой `crm3-26-test` (уровень предприятия) по чек-листу плана миграции — этот файл только про **метаданные файлов**.
|
||||||
|
3. По диффу документов/модулей (разд. 5–6) запланировать перенос недостающих доработок в `crm3-26-test.rhana` или подтвердить замену типовыми объектами 3.1.
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
---
|
||||||
|
title: Анализ рисков нарушения уникальности регистра CRM_ЖурналДокументов
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Анализ рисков нарушения уникальности регистра CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
## Сравнение конфигураций
|
||||||
|
|
||||||
|
### Структура регистра в CRM3devLocal
|
||||||
|
|
||||||
|
**Измерения:**
|
||||||
|
1. **ГлавнаяЗапись** - `Boolean`
|
||||||
|
2. **Клиент** - `CatalogRef.Партнеры` (только один тип)
|
||||||
|
3. **Объект** - `Characteristic.CRM_ОбъектыЖурналаДокументов`
|
||||||
|
4. **CRM_Интерес** - `DocumentRef.CRM_Интерес`
|
||||||
|
|
||||||
|
### Структура регистра в CRM326_TEST (новая конфигурация)
|
||||||
|
|
||||||
|
**Измерения:**
|
||||||
|
1. **ГлавнаяЗапись** - `Boolean`
|
||||||
|
2. **Клиент** - `CatalogRef.Партнеры` **ИЛИ** `CatalogRef.CRM_ПотенциальныеКлиенты` (два типа)
|
||||||
|
3. **Объект** - `Characteristic.CRM_ОбъектыЖурналаДокументов`
|
||||||
|
4. **CRM_Интерес** - `DocumentRef.CRM_Интерес`
|
||||||
|
|
||||||
|
## Ключевое различие
|
||||||
|
|
||||||
|
В **CRM3devLocal** измерение "Клиент" может содержать только ссылки на справочник `Партнеры`.
|
||||||
|
|
||||||
|
В **CRM326_TEST** измерение "Клиент" может содержать ссылки на два справочника:
|
||||||
|
- `Партнеры`
|
||||||
|
- `CRM_ПотенциальныеКлиенты`
|
||||||
|
|
||||||
|
## Риски нарушения уникальности при реструктуризации
|
||||||
|
|
||||||
|
### 1. Обнуление ссылок на удаляемые объекты
|
||||||
|
|
||||||
|
При реструктуризации регистра система автоматически обнуляет (приводит к `NULL`) ссылки на объекты, которые:
|
||||||
|
- Удаляются из конфигурации
|
||||||
|
- Больше не поддерживаются в типе измерения
|
||||||
|
|
||||||
|
### 2. Ссылки, которые станут NULL
|
||||||
|
|
||||||
|
#### 2.1. Измерение "Клиент"
|
||||||
|
|
||||||
|
**Риск:** Если справочник `CRM_ПотенциальныеКлиенты` удаляется из конфигурации, все ссылки на него в измерении "Клиент" будут обнулены.
|
||||||
|
|
||||||
|
**Пример проблемы:**
|
||||||
|
```
|
||||||
|
До реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.Клиент1, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=CRM_ПотенциальныеКлиенты.Клиент2, Объект=X, CRM_Интерес=Y
|
||||||
|
|
||||||
|
После реструктуризации (если CRM_ПотенциальныеКлиенты удаляется):
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.Клиент1, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y
|
||||||
|
|
||||||
|
Если есть еще одна запись с NULL клиентом:
|
||||||
|
Запись 3: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y
|
||||||
|
|
||||||
|
ТОГДА Запись 2 и Запись 3 станут ДУБЛИКАТАМИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.2. Измерение "Объект" (характеристика)
|
||||||
|
|
||||||
|
**Риск:** Характеристика `CRM_ОбъектыЖурналаДокументов` может содержать ссылки на различные типы объектов (справочники и документы). Если какой-то из этих типов удаляется, ссылки на него обнуляются.
|
||||||
|
|
||||||
|
**Удаляемые типы объектов, которые могут быть в характеристике:**
|
||||||
|
- `СправочникСсылка.CRM_ПотенциальныеКлиенты`
|
||||||
|
- `СправочникСсылка.CRM_ИсточникиКонтакта`
|
||||||
|
- `СправочникСсылка.CRM_КатегорииВрача`
|
||||||
|
- `СправочникСсылка.CRM_НаучныеСтепени`
|
||||||
|
- `СправочникСсылка.CRM_ОбластьИнтересов`
|
||||||
|
- `СправочникСсылка.CRM_Обращения`
|
||||||
|
- `СправочникСсылка.CRM_Специализация`
|
||||||
|
- `СправочникСсылка.CRM_Специальность`
|
||||||
|
- `СправочникСсылка.Отделы`
|
||||||
|
- `ДокументСсылка.УдалитьCRM_Сделка`
|
||||||
|
- `ДокументСсылка.УдалитьCRM_Событие`
|
||||||
|
- `ДокументСсылка.удалитьCRM_Мероприятие`
|
||||||
|
- `ДокументСсылка.удалитьCRM_Планирование`
|
||||||
|
- `ДокументСсылка.CRM_ПланированиеПоОтделам`
|
||||||
|
|
||||||
|
**Пример проблемы:**
|
||||||
|
```
|
||||||
|
До реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=CRM_ПотенциальныеКлиенты.Клиент2, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=CRM_ПотенциальныеКлиенты.Клиент3, CRM_Интерес=Y
|
||||||
|
|
||||||
|
После реструктуризации (если CRM_ПотенциальныеКлиенты удаляется):
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=NULL, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=NULL, CRM_Интерес=Y
|
||||||
|
|
||||||
|
ТОГДА Запись 1 и Запись 2 станут ДУБЛИКАТАМИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.3. Измерение "CRM_Интерес"
|
||||||
|
|
||||||
|
**Риск:** Если документы определенных типов удаляются, ссылки на них обнуляются.
|
||||||
|
|
||||||
|
**Удаляемые типы документов:**
|
||||||
|
- `Документ.УдалитьCRM_Сделка`
|
||||||
|
- `Документ.УдалитьCRM_Событие`
|
||||||
|
- `Документ.удалитьCRM_Мероприятие`
|
||||||
|
- `Документ.удалитьCRM_Планирование`
|
||||||
|
- `Документ.CRM_ПланированиеПоОтделам`
|
||||||
|
|
||||||
|
**Пример проблемы:**
|
||||||
|
```
|
||||||
|
До реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=УдалитьCRM_Сделка.Документ1
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=УдалитьCRM_Сделка.Документ2
|
||||||
|
|
||||||
|
После реструктуризации (если УдалитьCRM_Сделка удаляется):
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=NULL
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=NULL
|
||||||
|
|
||||||
|
ТОГДА Запись 1 и Запись 2 станут ДУБЛИКАТАМИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Комбинированные риски
|
||||||
|
|
||||||
|
Наиболее опасны ситуации, когда обнуляются несколько измерений одновременно:
|
||||||
|
|
||||||
|
### Пример комбинированного риска:
|
||||||
|
|
||||||
|
```
|
||||||
|
До реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=CRM_ПотенциальныеКлиенты.K2, CRM_Интерес=УдалитьCRM_Сделка.D1
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=CRM_ПотенциальныеКлиенты.K3, Объект=CRM_ПотенциальныеКлиенты.K4, CRM_Интерес=УдалитьCRM_Сделка.D2
|
||||||
|
|
||||||
|
После реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=NULL, CRM_Интерес=NULL
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=NULL, Объект=NULL, CRM_Интерес=NULL
|
||||||
|
|
||||||
|
Если есть еще записи с такими же значениями после обнуления - появятся дубликаты!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Сценарии нарушения уникальности
|
||||||
|
|
||||||
|
### Сценарий 1: Обнуление только "Клиент"
|
||||||
|
- **Условие:** Есть записи с `Клиент=CRM_ПотенциальныеКлиенты.*` и записи с `Клиент=NULL`
|
||||||
|
- **Результат:** После обнуления записи с `CRM_ПотенциальныеКлиенты` станут иметь `Клиент=NULL`, что может совпасть с уже существующими записями
|
||||||
|
|
||||||
|
### Сценарий 2: Обнуление только "Объект"
|
||||||
|
- **Условие:** Есть несколько записей с разными значениями `Объект`, которые ссылаются на удаляемые типы
|
||||||
|
- **Результат:** После обнуления все эти записи будут иметь `Объект=NULL`, что может создать дубликаты
|
||||||
|
|
||||||
|
### Сценарий 3: Обнуление только "CRM_Интерес"
|
||||||
|
- **Условие:** Есть несколько записей с разными значениями `CRM_Интерес`, которые ссылаются на удаляемые документы
|
||||||
|
- **Результат:** После обнуления все эти записи будут иметь `CRM_Интерес=NULL`, что может создать дубликаты
|
||||||
|
|
||||||
|
### Сценарий 4: Комбинированное обнуление
|
||||||
|
- **Условие:** Обнуляются несколько измерений одновременно
|
||||||
|
- **Результат:** Максимальный риск появления дубликатов
|
||||||
|
|
||||||
|
## Рекомендации по устранению
|
||||||
|
|
||||||
|
1. **Перед реструктуризацией:**
|
||||||
|
- Выполнить скрипт `check_duplicates_crm_journal.bsl` для выявления потенциальных дубликатов
|
||||||
|
- Проанализировать результаты и определить записи, которые нужно удалить или скорректировать
|
||||||
|
|
||||||
|
2. **Удаление записей с проблемными ссылками:**
|
||||||
|
- Удалить все записи, где `Клиент` ссылается на `CRM_ПотенциальныеКлиенты` (если этот справочник удаляется)
|
||||||
|
- Удалить все записи, где `Объект` ссылается на удаляемые типы объектов
|
||||||
|
- Удалить все записи, где `CRM_Интерес` ссылается на удаляемые документы
|
||||||
|
|
||||||
|
3. **Альтернативный подход:**
|
||||||
|
- Очистить регистр полностью
|
||||||
|
- Перезаполнить его заново, исключив объекты, которые будут удалены
|
||||||
|
|
||||||
|
## Проверка после реструктуризации
|
||||||
|
|
||||||
|
После выполнения реструктуризации необходимо проверить:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
ВЫБРАТЬ
|
||||||
|
CRM_ЖурналДокументов.ГлавнаяЗапись,
|
||||||
|
CRM_ЖурналДокументов.Клиент,
|
||||||
|
CRM_ЖурналДокументов.Объект,
|
||||||
|
CRM_ЖурналДокументов.CRM_Интерес,
|
||||||
|
КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
|
||||||
|
ИЗ
|
||||||
|
РегистрСведений.CRM_ЖурналДокументов КАК CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
СГРУППИРОВАТЬ ПО
|
||||||
|
CRM_ЖурналДокументов.ГлавнаяЗапись,
|
||||||
|
CRM_ЖурналДокументов.Клиент,
|
||||||
|
CRM_ЖурналДокументов.Объект,
|
||||||
|
CRM_ЖурналДокументов.CRM_Интерес
|
||||||
|
|
||||||
|
ИМЕЮЩИЕ
|
||||||
|
КОЛИЧЕСТВО(*) > 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Если этот запрос возвращает результаты - есть дубликаты, которые нужно устранить.
|
||||||
|
|
||||||
|
## Выводы
|
||||||
|
|
||||||
|
1. **Основной риск:** При реструктуризации регистра ссылки на удаляемые объекты обнуляются, что может привести к появлению дубликатов по комбинации оставшихся измерений.
|
||||||
|
|
||||||
|
2. **Критичные измерения для проверки:**
|
||||||
|
- **Клиент** - может содержать ссылки на `CRM_ПотенциальныеКлиенты`, который удаляется
|
||||||
|
- **Объект** - характеристика может содержать ссылки на множество удаляемых типов
|
||||||
|
- **CRM_Интерес** - может содержать ссылки на удаляемые документы
|
||||||
|
|
||||||
|
3. **Необходимые действия:**
|
||||||
|
- Выполнить проверку перед реструктуризацией
|
||||||
|
- Удалить или скорректировать проблемные записи
|
||||||
|
- Проверить уникальность после реструктуризации
|
||||||
|
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
---
|
||||||
|
title: Выводы сравнения конфигураций CRM3devLocal и CRM326_TEST
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Выводы сравнения конфигураций CRM3devLocal и CRM326_TEST
|
||||||
|
|
||||||
|
## Результаты анализа регистра CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
### Ключевое различие в структуре
|
||||||
|
|
||||||
|
**Измерение "Клиент":**
|
||||||
|
- **CRM3devLocal:** Только `CatalogRef.Партнеры`
|
||||||
|
- **CRM326_TEST:** `CatalogRef.Партнеры` **ИЛИ** `CatalogRef.CRM_ПотенциальныеКлиенты`
|
||||||
|
|
||||||
|
### Ссылки, которые станут NULL после реструктуризации
|
||||||
|
|
||||||
|
#### 1. Измерение "Клиент"
|
||||||
|
- ✅ **Все ссылки на `CRM_ПотенциальныеКлиенты`** будут обнулены
|
||||||
|
- ✅ **Причина:** В новой конфигурации это измерение поддерживает только `Партнеры`
|
||||||
|
|
||||||
|
#### 2. Измерение "Объект" (характеристика)
|
||||||
|
- ✅ **Ссылки на следующие удаляемые типы будут обнулены:**
|
||||||
|
- `СправочникСсылка.CRM_ПотенциальныеКлиенты`
|
||||||
|
- `СправочникСсылка.CRM_ИсточникиКонтакта`
|
||||||
|
- `СправочникСсылка.CRM_КатегорииВрача`
|
||||||
|
- `СправочникСсылка.CRM_НаучныеСтепени`
|
||||||
|
- `СправочникСсылка.CRM_ОбластьИнтересов`
|
||||||
|
- `СправочникСсылка.CRM_Обращения`
|
||||||
|
- `СправочникСсылка.CRM_Специализация`
|
||||||
|
- `СправочникСсылка.CRM_Специальность`
|
||||||
|
- `СправочникСсылка.Отделы`
|
||||||
|
- `ДокументСсылка.УдалитьCRM_Сделка`
|
||||||
|
- `ДокументСсылка.УдалитьCRM_Событие`
|
||||||
|
- `ДокументСсылка.удалитьCRM_Мероприятие`
|
||||||
|
- `ДокументСсылка.удалитьCRM_Планирование`
|
||||||
|
- `ДокументСсылка.CRM_ПланированиеПоОтделам`
|
||||||
|
|
||||||
|
#### 3. Измерение "CRM_Интерес"
|
||||||
|
- ✅ **Ссылки на следующие удаляемые документы будут обнулены:**
|
||||||
|
- `Документ.УдалитьCRM_Сделка`
|
||||||
|
- `Документ.УдалитьCRM_Событие`
|
||||||
|
- `Документ.удалитьCRM_Мероприятие`
|
||||||
|
- `Документ.удалитьCRM_Планирование`
|
||||||
|
- `Документ.CRM_ПланированиеПоОтделам`
|
||||||
|
|
||||||
|
## Риски нарушения уникальности
|
||||||
|
|
||||||
|
### Критический риск #1: Обнуление измерения "Клиент"
|
||||||
|
|
||||||
|
**Сценарий нарушения уникальности:**
|
||||||
|
```
|
||||||
|
ДО реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=CRM_ПотенциальныеКлиенты.K2, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 3: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y
|
||||||
|
|
||||||
|
ПОСЛЕ реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y ← ОБНУЛЕНО
|
||||||
|
Запись 3: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y
|
||||||
|
|
||||||
|
РЕЗУЛЬТАТ: Запись 2 и Запись 3 стали ДУБЛИКАТАМИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
### Критический риск #2: Обнуление измерения "Объект"
|
||||||
|
|
||||||
|
**Сценарий нарушения уникальности:**
|
||||||
|
```
|
||||||
|
ДО реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=CRM_ПотенциальныеКлиенты.K2, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=CRM_ПотенциальныеКлиенты.K3, CRM_Интерес=Y
|
||||||
|
|
||||||
|
ПОСЛЕ реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=NULL, CRM_Интерес=Y ← ОБНУЛЕНО
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=NULL, CRM_Интерес=Y ← ОБНУЛЕНО
|
||||||
|
|
||||||
|
РЕЗУЛЬТАТ: Запись 1 и Запись 2 стали ДУБЛИКАТАМИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
### Критический риск #3: Обнуление измерения "CRM_Интерес"
|
||||||
|
|
||||||
|
**Сценарий нарушения уникальности:**
|
||||||
|
```
|
||||||
|
ДО реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=УдалитьCRM_Сделка.D1
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=УдалитьCRM_Сделка.D2
|
||||||
|
|
||||||
|
ПОСЛЕ реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=NULL ← ОБНУЛЕНО
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=K1, Объект=X, CRM_Интерес=NULL ← ОБНУЛЕНО
|
||||||
|
|
||||||
|
РЕЗУЛЬТАТ: Запись 1 и Запись 2 стали ДУБЛИКАТАМИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
### Максимальный риск: Комбинированное обнуление
|
||||||
|
|
||||||
|
**Сценарий нарушения уникальности:**
|
||||||
|
```
|
||||||
|
ДО реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=CRM_ПотенциальныеКлиенты.K2, CRM_Интерес=УдалитьCRM_Сделка.D1
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=CRM_ПотенциальныеКлиенты.K3, Объект=CRM_ПотенциальныеКлиенты.K4, CRM_Интерес=УдалитьCRM_Сделка.D2
|
||||||
|
|
||||||
|
ПОСЛЕ реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=NULL, CRM_Интерес=NULL
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=NULL, Объект=NULL, CRM_Интерес=NULL
|
||||||
|
|
||||||
|
Если есть еще записи с такими же значениями после обнуления - появятся дубликаты!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Рекомендации
|
||||||
|
|
||||||
|
### Перед реструктуризацией:
|
||||||
|
|
||||||
|
1. ✅ **Выполнить проверку** скриптом `check_duplicates_crm_journal.bsl`
|
||||||
|
2. ✅ **Проанализировать результаты** и определить проблемные записи
|
||||||
|
3. ✅ **Удалить или скорректировать** записи с ссылками на удаляемые объекты:
|
||||||
|
- Записи с `Клиент=CRM_ПотенциальныеКлиенты.*`
|
||||||
|
- Записи с `Объект`, ссылающимся на удаляемые типы
|
||||||
|
- Записи с `CRM_Интерес`, ссылающимся на удаляемые документы
|
||||||
|
|
||||||
|
### После реструктуризации:
|
||||||
|
|
||||||
|
1. ✅ **Проверить уникальность** регистра запросом:
|
||||||
|
```sql
|
||||||
|
ВЫБРАТЬ
|
||||||
|
CRM_ЖурналДокументов.ГлавнаяЗапись,
|
||||||
|
CRM_ЖурналДокументов.Клиент,
|
||||||
|
CRM_ЖурналДокументов.Объект,
|
||||||
|
CRM_ЖурналДокументов.CRM_Интерес,
|
||||||
|
КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
|
||||||
|
ИЗ
|
||||||
|
РегистрСведений.CRM_ЖурналДокументов КАК CRM_ЖурналДокументов
|
||||||
|
СГРУППИРОВАТЬ ПО
|
||||||
|
CRM_ЖурналДокументов.ГлавнаяЗапись,
|
||||||
|
CRM_ЖурналДокументов.Клиент,
|
||||||
|
CRM_ЖурналДокументов.Объект,
|
||||||
|
CRM_ЖурналДокументов.CRM_Интерес
|
||||||
|
ИМЕЮЩИЕ
|
||||||
|
КОЛИЧЕСТВО(*) > 1
|
||||||
|
```
|
||||||
|
|
||||||
|
2. ✅ **Устранить найденные дубликаты**, если они есть
|
||||||
|
|
||||||
|
## Итоговые выводы
|
||||||
|
|
||||||
|
1. ✅ **Основная причина проблемы:** При реструктуризации регистра ссылки на удаляемые объекты автоматически обнуляются, что может привести к появлению дубликатов по комбинации оставшихся измерений.
|
||||||
|
|
||||||
|
2. ✅ **Критичные измерения:**
|
||||||
|
- **Клиент** - обнуление ссылок на `CRM_ПотенциальныеКлиенты`
|
||||||
|
- **Объект** - обнуление ссылок на множество удаляемых типов
|
||||||
|
- **CRM_Интерес** - обнуление ссылок на удаляемые документы
|
||||||
|
|
||||||
|
3. ✅ **Необходимые действия:**
|
||||||
|
- Выполнить проверку перед реструктуризацией
|
||||||
|
- Удалить проблемные записи
|
||||||
|
- Проверить уникальность после реструктуризации
|
||||||
|
|
||||||
|
4. ✅ **Скрипт проверки готов:** `check_duplicates_crm_journal.bsl` учитывает все выявленные риски
|
||||||
|
|
||||||
@@ -0,0 +1,307 @@
|
|||||||
|
# Дорожная карта модернизации CRM3
|
||||||
|
|
||||||
|
Версия **0.1** (предварительная). Дата выгрузки в каталог проекта `docs/`: 2026-05-12.
|
||||||
|
|
||||||
|
Источник снимка: рабочий план Cursor — `c:\Users\kma\.cursor\plans\миграция_crm3_roadmap_c76af973.plan.md`. Этот markdown **не обновляется автоматически** при правках плана в IDE; для новой ревизии повторите выгрузку или отредактируйте файл вручную.
|
||||||
|
|
||||||
|
**Дополнение к версии 0.1 (2026-05-12):** в целевой конфигурации `crm3-26-promo` реализация **НДС 22%** входит в **типовой контур в полном объёме**; **перенос логики НДС 22 из старой системы / расширения в `crm3-26-promo.rhana` не требуется**. В объёме миграции остаются проверки обмена с Бухгалтерией КОРП и сквозных сценариев (см. разд. 2.2, 8, 13).
|
||||||
|
|
||||||
|
Ссылки на документы и код ниже даны как в исходном плане (абсолютные пути к репозиторию `crm3-26` на диске разработки).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Нумерация для ссылок:** верхний уровень — целые разделы `1`…`13` (`1`–`2` — контекст и источники; `3`…`10` — этапы внедрения, в заголовке также «Этап 1»…«Этап 8»; `11` — операционный план; `12` — привязка комплекта печати к этапам плана; `13` — риски). Вложенность обозначается как **`4.2.1`**: раздел `4`, подраздел `2`, при необходимости далее пункты списка нумеруются вручную в тексте ссылок («п. 1», «п. 2») внутри подраздела.
|
||||||
|
|
||||||
|
## 1. Контекст и зафиксированные решения
|
||||||
|
- Исходная система: `@crm3-dev` + расширения `@crm3-dev.docs`, `@crm3-dev.rhana`, `@crm3-dev.upd5b`.
|
||||||
|
- Целевая система: `@crm3-26-promo` + расширение `@crm3-26-promo.rhana`.
|
||||||
|
- Сопоставление с эталоном: `@crm302228-etalon` для выделения нетиповых доработок.
|
||||||
|
- Принято:
|
||||||
|
- Себестоимость: **переходный учёт себестоимости** — в целевой базе на ограниченный период используется **перенесённый из старой системы** доработанный механизм учёта себестоимости, затем выполняется **переход на типовой** механизм новой конфигурации по согласованным критериям.
|
||||||
|
- **Передача данных, первая волна:** НСИ + `ЗаказКлиента` + `РеализацияТоваровУслуг` (без ЭДО и УПД в первой волне); ведётся с **матрицей объектов по разделам учёта** (см. разд. 7), а не только настройкой универсального формата.
|
||||||
|
- В объем миграции входят **доработка по кредит-ноте** и **доработка по купонам** — перенос логики и связанных объектов в `crm3-26-promo.rhana`, приемка по согласованным сценариям.
|
||||||
|
- В объем миграции входят **печать комплекта документов** и **доработки складского учета**, зафиксированные в аналитике по складу и печати — перенос в `crm3-26-promo.rhana` с приемкой по печатным и складским сценариям.
|
||||||
|
- **Качество учёта в исходной базе:** допускается, что **складской и финансовый учёт** части остатков **по номенклатурам** накопил **ошибки**, либо **менялся порядок учёта** при уже существующих остатках; перенос «как есть» без **предварительной санации и согласованных правил** (что исправляем до среза, что переносим с актом расхождений, что выводим из оборота) — риск для целевой системы. Это явно учитывается в **разд. 6** (остатки) и в матрице проверок.
|
||||||
|
- **Целевая политика учёта:** в `crm3-26-promo` предполагается **полное включение посерийного учёта для всех номенклатур** — заложить **сверку и дозаполнение** серийных данных при переносе остатков и НСИ, сценарии, где в источнике серия не велась или велась выборочно.
|
||||||
|
- **Маркировка в целевой системе:** планируется ведение учёта **маркированного товара** (косметика, БАДы, лекарственные препараты) — заложить в объём **готовность НСИ и документооборота** под маркировку (виды продукции, **коды маркировки** и штрихкоды по регламенту конфигурации, сценарии приёмки и отгрузки), согласование с передачей первой волны и с УПД/ЭДО во второй волне при необходимости.
|
||||||
|
- **НДС 22%:** в `crm3-26-promo` поддержка ставки и связанных механизмов **реализована типовой конфигурацией в полном объёме** — **не переносить** как отдельную доработку в `crm3-26-promo.rhana`; учитывать только **регрессию** документооборота и обмена (в т.ч. с Бухгалтерией КОРП), если контур остаётся в эксплуатации.
|
||||||
|
- **Настройки информационной базы (уровень «1С:Предприятие»):** фиксируются **парным образом** для **исходной** рабочей базы (`crm3-dev` + согласованный состав расширений) и **целевой** (`crm3-26-promo` + `crm3-26-promo.rhana`) по **одному и тому же чек-листу разделов настроек** (снимок на дату, с указанием **версий конфигурации и расширений** в шапке каждого снимка). Целевая ИБ **выравнивается** с рабочей там, где это требуется для эксплуатации; где политика **намеренно** отличается (новая типовая, маркировка, полный посерийный учёт и т.д.) — строка в протоколе. Утверждаются **сравнительный анализ** и **протокол различий** — основа для **преобразования** входящих остатков и документов переходного периода. Для съёма и сличения используются **внешние обработки** (отдельные сборки под исходную и целевую конфигурацию; **окно различий** — в обработке целевой), плюс отдельный контур по **эффективным настройкам учёта номенклатуры** для номенклатур с **остатками и оборотами за период** (см. разд. 4).
|
||||||
|
|
||||||
|
## 2. Источники анализа
|
||||||
|
|
||||||
|
### 2.1. Ядро (документы)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/ТЗ_3_Внедрение_формы_УПД_в_текущую_рабочую_базу_2026-05-05.md](d:/SynologyDrive/projects_syn/crm3-26/docs/ТЗ_3_Внедрение_формы_УПД_в_текущую_рабочую_базу_2026-05-05.md)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/Сводка_переноса_и_настройки_актуальной_формы_УПД.md](d:/SynologyDrive/projects_syn/crm3-26/docs/Сводка_переноса_и_настройки_актуальной_формы_УПД.md)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_синхронизации_ЗаказКлиента.md](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_синхронизации_ЗаказКлиента.md)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_синхронизации_РеализацияТоваровУслуг.md](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_синхронизации_РеализацияТоваровУслуг.md)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_складского_учета_и_печати_документов.md](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_складского_учета_и_печати_документов.md)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/Выводы_сравнения_конфигураций.md](d:/SynologyDrive/projects_syn/crm3-26/docs/Выводы_сравнения_конфигураций.md)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_применения_КредитНота (v1.1).md](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_применения_КредитНота%20(v1.1).md)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_применения_реквизита_Купон.md](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_применения_реквизита_Купон.md)
|
||||||
|
|
||||||
|
### 2.2. Дополнительные источники из docs (данные, CRM, роли, обновление, интеграции)
|
||||||
|
|
||||||
|
Имеет смысл явно заложить в объём миграции и в матрицу проверок (см. разд. 3, 6–8 и разд. 13):
|
||||||
|
|
||||||
|
- **Регистр `CRM_ЖурналДокументов` и смена модели CRM:** [Выводы сравнения конфигураций](d:/SynologyDrive/projects_syn/crm3-26/docs/Выводы_сравнения_конфигураций.md), [Анализ механизма перезаполнения CRM_ЖурналДокументов](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_механизма_перезаполнения_CRM_ЖурналДокументов.md), [Анализ рисков неуникальности](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_рисков_неуникальности_CRM_ЖурналДокументов.md), [Проблема неуникальности](d:/SynologyDrive/projects_syn/crm3-26/docs/Проблема_неуникальности_регистра_CRM_ЖурналДокументов.md), [Сводка рисков неуникальности](d:/SynologyDrive/projects_syn/crm3-26/docs/Сводка_рисков_неуникальности.md) — обнуление измерений при реструктуризации, риск **дубликатов** и нарушения уникальности; при необходимости сценарий **перезаполнения** журнала после миграции метаданных.
|
||||||
|
- **Роли и доступы в целевой системе:** [Роли для включения в новой системе](d:/SynologyDrive/projects_syn/crm3-26/docs/Роли_для_включения_в_новой_системе.md), [ФИНАЛЬНЫЙ СПИСОК РОЛЕЙ ДЛЯ ВКЛЮЧЕНИЯ](d:/SynologyDrive/projects_syn/crm3-26/docs/ФИНАЛЬНЫЙ_СПИСОК_РОЛЕЙ_ДЛЯ_ВКЛЮЧЕНИЯ.md), [Сверка ролей профиля](d:/SynologyDrive/projects_syn/crm3-26/docs/Сверка_ролей_профиля.md), [Сверка ролей с учетом переименований](d:/SynologyDrive/projects_syn/crm3-26/docs/Сверка_ролей_с_учетом_переименований.md), [Инструкция добавления ролей в профиль](d:/SynologyDrive/projects_syn/crm3-26/docs/Инструкция_добавления_ролей_в_профиль.md) — иначе «тихие» отказы при передаче данных, печати и закрытии месяца.
|
||||||
|
- **Накатывание типовой конфигурации и ошибки обновления:** [Анализ ошибок обновления](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_ошибок_обновления.md), [Список объектов для удаления из подсистем](d:/SynologyDrive/projects_syn/crm3-26/docs/Список_объектов_для_удаления_из_подсистем.md), [Инструкция по исправлению](d:/SynologyDrive/projects_syn/crm3-26/docs/Инструкция_по_исправлению.md) — итеративный путь применения обновлений; связь с составом подсистем и ссылками на удаляемые объекты.
|
||||||
|
- **НДС 22 и обмен с Бухгалтерией КОРП:** [Анализ обмена НДС 22 с Бухгалтерией КОРП](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_обмена_НДС_22_с_Бухгалтерией_КОРП.md), [Реализация переноса НДС 22](d:/SynologyDrive/projects_syn/crm3-26/docs/Реализация_переноса_НДС_22.md) (актуально для **исходной** конфигурации и обмена), [Проверка ставки НДС 22](d:/SynologyDrive/projects_syn/crm3-26/docs/Проверка_ставки_НДС_22.md), [Анализ обработчиков обновления НДС 22](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_обработчиков_обновления_НДС_22.md) — в целевой `crm3-26-promo` **перенос правил НДС 22 в расширение не планируется** (типовая реализация в полном объёме); при сохранении обмена с БК — **регрессия** согласованных сценариев и документация по разрывам на стороне БК/транспорта, если контур остаётся в эксплуатации.
|
||||||
|
- **Серии и ввод остатков (связь с полным посерийным учётом в целевой):** [Анализ привязок серий номенклатур к видам номенклатур](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_привязок_серий_номенклатур_к_видам_номенклатур.md) — логика отбора серий при вводе остатков и риски «лишних» серий без привязки к остаткам.
|
||||||
|
- **Отчётность по регистрам (углубление матрицы):** [Итоговый отчет анализа регистров](d:/SynologyDrive/projects_syn/crm3-26/docs/Итоговый_отчет_анализа_регистров.md), [ФИНАЛЬНЫЙ ОТЧЕТ Анализ регистров](d:/SynologyDrive/projects_syn/crm3-26/docs/ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.md) — в дополнение к [Глубинный анализ регистров](d:/SynologyDrive/projects_syn/crm3-26/docs/Глубинный_анализ_регистров.md).
|
||||||
|
- **Кредит-нота (обработки):** [Анализ переноса обработки КредитНотаЗаПериод](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_переноса_обработки_КредитНотаЗаПериод.md) — при необходимости отдельно от документа «Кредит-нота».
|
||||||
|
- **Навигация по всем отчётам:** [INDEX / оглавление](d:/SynologyDrive/projects_syn/crm3-26/docs/INDEX.md).
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Этап 1 внедрения: сводка границ проекта и заморозка объёма (1 неделя)
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Комментарий к разд. 3 (смысл названия):
|
||||||
|
Эта неделя — не разработка и не перенос кода в 1С, а согласование рамок проекта.
|
||||||
|
«Сводка границ» — зафиксировать, что входит в первый промышленный запуск и что откладывается
|
||||||
|
во вторую волну или после запуска; от чьих документов и решений исходим; какие критерии «готово».
|
||||||
|
«Заморозка объёма» — после утверждения списка новые пункты «обязательно сейчас» не добавляются
|
||||||
|
без явного пересмотра сроков и рисков (или только как вторая волна); назначаются ответственные
|
||||||
|
по направлениям. Цель — убрать размытие объёма до тяжёлой разработки и тестов.
|
||||||
|
-->
|
||||||
|
|
||||||
|
> **Комментарий к разд. 3:** эта неделя — **не разработка и не перенос кода** в 1С, а **согласование рамок миграции**. **«Сводка границ»** означает: зафиксировать, что **входит** в первый промышленный запуск и что **сознательно откладывается** во вторую волну или после запуска; от каких документов и решений исходим; какие **критерии готовности** на уровне проекта. **«Заморозка объёма»** означает: после утверждения перечня работ новые требования «обязательно сейчас» **не подмешиваются** без пересмотра сроков и рисков (или только как вторая волна с явной пометкой); фиксируются **ответственные по направлениям**. Зачем: чтобы не разъезжался объём до этапов переноса, остатков и **передачи данных**.
|
||||||
|
|
||||||
|
### 3.1. Работы по границам и перечню доработок
|
||||||
|
- Зафиксировать единый объем миграции: что входит в промышленный запуск, что переносится во **вторую и последующие волны**.
|
||||||
|
- Утвердить перечень критичных переносимых доработок в `crm3-26-promo.rhana`:
|
||||||
|
- **контур УПД (`upd5b`)** — не «слепой» перенос: оформить как отдельный пакет в `crm3-26-promo.rhana` **только после сверки** с **текущей реализацией в целевой конфигурации** `crm3-26-promo` (типовые макеты и модули УПД, счет-фактура, обработка общих форм печати и т.п.). Сравнить с исходниками `crm3-dev.upd5b` и документацией ([ТЗ_3](d:/SynologyDrive/projects_syn/crm3-26/docs/ТЗ_3_Внедрение_формы_УПД_в_текущую_рабочую_базу_2026-05-05.md), [сводка УПД](d:/SynologyDrive/projects_syn/crm3-26/docs/Сводка_переноса_и_настройки_актуальной_формы_УПД.md)); зафиксировать разрыв «уже есть в целевой / нужно перенести / заменить типовым»; избежать дублирования и конфликтов имён и логики при слиянии в одно расширение;
|
||||||
|
- **передача данных и обмен из `rhana`** — исходная рабочая конфигурация **сильно кастомная**: опираться **только** на типовые правила плана **«Синхронизация данных через универсальный формат»** недостаточно. Заложить: **(1)** доработанный модуль **«Менеджер обмена через универсальный формат»** и сценарии плана обмена как возможный **транспорт или базу**, **(2)** обязательную **матрицу по разделам учёта** — перечни **справочников, документов, регистров накопления и регистров сведений**, которые затрагивают передаваемые объекты и **проведение** в целевой базе (для финальной проверки полноты переноса, отсутствия «дыр» в движениях и согласованности с кастомным контуром, в т.ч. себестоимостью). Матрицу согласовать с аналитикой по регистрам (см. [Глубинный анализ регистров](d:/SynologyDrive/projects_syn/crm3-26/docs/Глубинный_анализ_регистров.md) при необходимости). Прочие интеграции в `rhana` (внешние системы и т.д.) — только если явно включены в объём **разд. 3**;
|
||||||
|
- критичные печатные и операционные доработки продаж и отгрузки;
|
||||||
|
- **кредит-нота** — перенос доработанного функционала и согласование с обменом и продажами;
|
||||||
|
- **купоны** — перенос доработки по реквизиту и связанной логике (заказы, реализации, отчеты по необходимости);
|
||||||
|
- **печать комплекта документов и складской учет** — перенос по [аналитике по складу и печати](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_складского_учета_и_печати_документов.md) (обработки, команды печати, связь с логистикой).
|
||||||
|
|
||||||
|
### 3.2. Документация из docs и ответственные
|
||||||
|
|
||||||
|
- Учесть по **документации в docs** (вне перечня кода расширения): **(а)** миграцию данных и **уникальность** регистра сведений **`CRM_ЖурналДокументов`** при смене типов измерений и обнулении ссылок — см. **разд. 2.2**; **(б)** **роли и профили** в `crm3-26-promo` ([Роли для включения…](d:/SynologyDrive/projects_syn/crm3-26/docs/Роли_для_включения_в_новой_системе.md) и смежные); **(в)** **итерации обновления** типовой базы и чистку подсистем ([Анализ ошибок обновления](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_ошибок_обновления.md), [Список объектов для удаления из подсистем](d:/SynologyDrive/projects_syn/crm3-26/docs/Список_объектов_для_удаления_из_подсистем.md)); **(г)** при сохранении обмена с **Бухгалтерией КОРП** — контур **НДС 22**: в целевой конфигурации опора на **типовую** реализацию; **перенос правил НДС 22 в `crm3-26-promo.rhana` не требуется** — регрессия и согласование с БК по [анализу обмена НДС 22 с Бухгалтерией КОРП](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_обмена_НДС_22_с_Бухгалтерией_КОРП.md); **(д)** **серии при вводе остатков** и виды номенклатуры — [Анализ привязок серий…](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_привязок_серий_номенклатур_к_видам_номенклатур.md) в связке с **разд. 6** и полным посерийным учётом.
|
||||||
|
- Сформировать реестр ответственных по направлениям: данные, обмен, себестоимость, печать, тестирование, переход в промышленную эксплуатацию.
|
||||||
|
|
||||||
|
### 3.2.1. Кто исполнитель по пунктам плана (только роли; без конкретных людей)
|
||||||
|
|
||||||
|
**Решение на текущий момент:** **имена и ФИО в текст дорожной карты не вносятся**; достаточно **ролей и потоков** и таблицы соответствия ниже. Реестр (**разд. 3.2**) может существовать как перечень направлений и ролей **без привязки к лицам**, пока заказчик не потребует явное закрепление — тогда ФИО оформляются **вне** этого файла плана (отдельный реестр, приказ, матрица RACI и т.п.).
|
||||||
|
|
||||||
|
**Идея:** для каждого **разд. `3`…`10`** при появлении исполнительской дисциплины задаётся **один владелец потока** — ответственный за срок, артефакты и эскалации; **соисполнители** перечисляются рядом. В переписке и задачах удобно ссылаться: «исполнитель по **разд. 7** — владелец потока *обмен*».
|
||||||
|
|
||||||
|
**Мэппинг разделов плана на потоки реестра** (конкретные люди, если понадобятся, назначаются **в реестре вне плана**, не обязательно в этом документе):
|
||||||
|
|
||||||
|
| Раздел плана | Поток(и) из реестра **3.2** (типовой исполнитель по смыслу) |
|
||||||
|
|--------------|-------------------------------------------------------------|
|
||||||
|
| **3** | Руководитель проекта + заказчик (рамки, freeze); при необходимости секретариат протокола |
|
||||||
|
| **4** | Администратор ИБ / методолог учёта (съём, протокол) + разработчик 1С (внешние обработки съёма и сравнения) |
|
||||||
|
| **5** | Разработчик 1С (перенос кода) + владелец учёта (критерии отключения переходного контура) |
|
||||||
|
| **6** | Методолог склад/ГФУ + владелец качества данных в источнике + разработчик/интегратор (механизм загрузки) |
|
||||||
|
| **7** | Владелец обмена + разработчик 1С (доработки транспорта) + **владельцы предметных областей** по строкам матрицы учёта |
|
||||||
|
| **8** | Тестирование (QA) + владельцы направлений (UAT-подпись) |
|
||||||
|
| **9** | Руководитель проекта + администратор ИБ + владелец эксплуатации (cutover) |
|
||||||
|
| **10** | Линия поддержки + координатор второй волны (по решениям **разд. 3**) |
|
||||||
|
|
||||||
|
**Разд. `11`–`13`:** владелец **артефактов и спецификаций** (**разд. 11**) — как правило руководитель проекта совместно с техническим лидом 1С; содержание **разд. 12** согласуют владельцы **склада и продаж**; реестр рисков (**разд. 13**) ведёт руководитель проекта с привлечением владельцев потоков по строкам риска.
|
||||||
|
|
||||||
|
### 3.3. Проверка: ответственный на складе для печати с учётом номенклатуры
|
||||||
|
|
||||||
|
- В старой системе доработка **есть**: подбор материально ответственного лица (МОЛ) с учетом **номенклатуры из документа** и табличной части **«МОЛ»** справочника **«Склады»** (в т.ч. строка с пустой номенклатурой как запасной вариант).
|
||||||
|
- Реализация в расширении: функции `р_ПолучитьОтветственногоПоСкладу`, `р_ПолучитьОтветственногоПоСкладу_адаптация` в модуле [ПродажиСервер (расширение)](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/CommonModules/ПродажиСервер/Ext/Module.bsl); вызов при печати и в документе — [РеализацияТоваровУслуг, менеджер](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/Documents/РеализацияТоваровУслуг/Ext/ManagerModule.bsl), [РеализацияТоваровУслуг, объект и форма](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/Documents/РеализацияТоваровУслуг/Ext/ObjectModule.bsl).
|
||||||
|
- Метаданные табличной части «МОЛ» с реквизитом «Номенклатура»: [Склады в основной конфигурации](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev/src/Catalogs/Склады.xml) (и доработки расширения в [Склады в rhana](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/Catalogs/Склады.xml)).
|
||||||
|
- В целевой конфигурации типовая функция [ПродажиСервер.ПолучитьОтветственногоПоСкладу](d:/SynologyDrive/projects_syn/crm3-26/crm3-26-promo/src/CommonModules/ПродажиСервер/Ext/Module.bsl) принимает **только склад** и опирается на типовой подбор ответственного по складу — **без разбора по строкам товара и без табличной части «МОЛ» с номенклатурой** в выгрузке справочника «Склады» целевой версии.
|
||||||
|
- **Вывод для плана:** заложить отдельный шаг сравнения (типовой реквизит «Ответственный» на складе и прочие типовые настройки против текущей логики по МОЛ и номенклатуре). Если типового поведения недостаточно — перенос минимального расширения (подбор для печати и заполнения реквизитов отгрузки) в `crm3-26-promo.rhana`; если достаточно — отказ от доработки с миграцией данных в типовую модель и регрессией печатных форм.
|
||||||
|
|
||||||
|
## 4. Этап 2 внедрения: настройка целевой ИБ под рабочую и протокол различий на уровне «1С:Предприятие» (1–2 недели, частично параллельно **разд. 5**)
|
||||||
|
|
||||||
|
### 4.1. Цель и постановка
|
||||||
|
|
||||||
|
**Зачем:** понимание **как вносить и преобразовывать данные** (входящие остатки, документы переходного периода) из старой рабочей базы в новую, готовящуюся к **опытной и промышленной** эксплуатации, невозможно свести только к сравнению **конфигураций** в EDT/конфигураторе. Нужна сопоставимость и прозрачность на уровне **настроек информационной базы** в режиме **«1С:Предприятие»** — и при этом учёт того, что **исходная** и **целевая** системы могут отличаться **версией типовой платформы и расширений**: один и тот же раздел настроек в обеих ИБ должен быть **явно снят и сопоставлен**, а не предположен «по умолчанию как в новой версии».
|
||||||
|
|
||||||
|
**Обе ИБ в одном контуре работ:** для **исходной** (рабочая `crm3-dev` + фактически подключённые расширения) и для **целевой** (`crm3-26-promo` + целевое расширение) выполняется **одинаковая процедура съёма** значений по согласованному перечню областей: функциональность, параметры **организаций** и **подразделений**, **учётные политики** (в т.ч. по организациям/складам по правилам конфигурации), ключевые **константы** и **регистры сведений** настроек, режимы учёта товаров (**партионный/посерийный**, складские политики), **НДС**, нумерация и префиксы, валюты, параметры взаиморасчётов и иные параметры, влияющие на **проведение** и интерпретацию переносимых данных.
|
||||||
|
|
||||||
|
### 4.2. Протокол различий и связь с остатками и первой волной
|
||||||
|
|
||||||
|
- Согласовать **единый чек-лист разделов настроек** и способ фиксации значений в **каждой** ИБ (отчёты конфигурации, выгрузки регистров сведений, ручной чек-лист по формам — в рамках регламента проекта). Результат — **два снимка на одну дату (или согласованную пару дат)**: «Исходная ИБ» и «Целевая ИБ»; в шапке каждого снимка — **имя базы**, **версия конфигурации**, **список и версии расширений**, ответственный за съём.
|
||||||
|
- По исходной ИБ зафиксировать **эталон рабочей эксплуатации** (продуктив или согласованная копия на дату); по целевой — состояние **до** и **после** выравнивания (чтобы в протоколе было видно, что меняли в целевой намеренно).
|
||||||
|
- Выполнить **настройку целевой** базы до **эквивалентности по смыслу** с рабочей там, где это требуется; где целенаправленно **меняют** политику под новую версию типовой или целевые требования (маркировка, полный посерийный учёт и т.д.) — явно как **намеренное отличие** с обоснованием в протоколе.
|
||||||
|
- Подготовить **сравнительный анализ** «значение в **исходной** ИБ ↔ значение в **целевой** ИБ» и утвердить **протокол различий** (живой документ с версиями при обновлениях типовой или смене политики). Минимальные поля строки: *область / объект настройки*, *значение в исходной ИБ*, *значение в целевой ИБ (до/после выравнивания)*, *решение* (выровнять целевую / оставить различие / отложить), *влияние на входящие остатки и на передачу/проведение документов переходного периода*, *правило преобразования данных при загрузке* (если нужно), *ответственный*, *срок*. При расхождении из-за **разных версий** типовой — отдельная колонка или вложенная заметка «ограничение версии / обходной путь».
|
||||||
|
- Связать протокол с **разд. 6** (остатки) и **разд. 7** (первая волна): правила выгрузки/загрузки и преобразований ссылаются на строки протокола; при конфликте с **матрицей по регистрам** — явное разрешение в протоколе или в журнале изменений проекта.
|
||||||
|
- Перед опытной и перед промышленной эксплуатацией — **контрольная сверка** критичных пунктов протокола **в обеих** ИБ или подтверждение, что исходная не менялась по согласованным пунктам, а целевая соответствует утверждённому снимку (дрейф настроек после обновлений или ручных правок).
|
||||||
|
|
||||||
|
### 4.3. Чек-лист разделов настроек (одинаково для исходной и целевой ИБ)
|
||||||
|
|
||||||
|
Ниже — ориентир перечня; конкретные пункты уточняются под редакцию УТ/CRM в **обеих** версиях конфигурации и дополняются при приёмке:
|
||||||
|
|
||||||
|
- функциональность (включённые опции), раздельные сценарии если в целевой версии пункт переименован или разнесён по формам;
|
||||||
|
- организации, подразделения, контактная/юридическая обвязка при необходимости для проведения;
|
||||||
|
- учётная политика по организациям (и иные политики по правилам типовой: склад, финансы);
|
||||||
|
- параметры НДС и сопутствующие сведения (в т.ч. НДС 22 при наличии в контуре);
|
||||||
|
- валюты, курсы (если настройка влияет на перенос);
|
||||||
|
- префиксы, нумераторы, дата запрета изменения данных (если используется);
|
||||||
|
- складской учёт: ордерность, FEFO/серии, ордерные склады — согласованно с политикой полного посерийного учёта в целевой;
|
||||||
|
- взаиморасчёты, порядок закрытия месяца (если на уровне настроек ИБ задаётся поведение, влияющее на перенос);
|
||||||
|
- параметры интеграций на уровне ИБ (если есть), влияющие на обмен и проведение.
|
||||||
|
|
||||||
|
### 4.4. Внешние обработки: снимок настроек ИБ и сравнение
|
||||||
|
|
||||||
|
- Разработать **две внешние обработки** под **разные конфигурации** (исходная рабочая цепочка `crm3-dev*` и целевая `crm3-26-promo*`): в каждой соответствующей ИБ обработка выполняет **выгрузку текущего состояния** согласованного перечня настроек уровня **«1С:Предприятие»** в **единый согласованный формат файла** (версия схемы выгрузки, дата/время съёма, версия конфигурации и расширений в метаданных файла).
|
||||||
|
- В **обработке, собираемой под целевую** конфигурацию: импорт файла снимка **исходной** ИБ, получение снимка **текущей целевой** ИБ, **наглядное отображение различий** (таблица, фильтры, группировки), вывод в **протокол различий**; при необходимости — пометки полей, доступных только в одной из версий типовой.
|
||||||
|
- Зафиксировать **хранение** файлов снимков (каталог проекта, регламент доступа) и **кто имеет право** запуска в продуктивных/копийных базах.
|
||||||
|
|
||||||
|
### 4.5. Эффективные настройки учёта номенклатуры по остаткам и оборотам за период
|
||||||
|
|
||||||
|
- Помимо общего снимка ИБ: отдельная выгрузка **настроек учёта номенклатуры**, **фактически применяемых** к номенклатурам, по которым на **согласованную дату** есть **остатки** и/или за **согласованный период** есть **обороты** (алгоритм отбора номенклатур и вычисления «эффективной» настройки с учётом иерархии видов/общих правил конфигурации — описать в спецификации обработки; учесть доработки исходной и целевой).
|
||||||
|
- **Обработка исходной** конфигурации: выгрузка в **тот же контейнер формата**, что и для целевой, чтобы поля сопоставлялись автоматически.
|
||||||
|
- **Обработка целевой** конфигурации: **сравнительный анализ** по номенклатурам из пересечения множеств (или по полному списку с пометкой «только в источнике/только в целевой»); результаты **встраиваются** в проектирование **выгрузки и загрузки остатков** по номенклатуре, в сценарии **переходного периода** и в **выгрузку документов** из исходной в целевую (связь с **разд. 6** и **7** и с правилами преобразования в протоколе).
|
||||||
|
|
||||||
|
## 5. Этап 3 внедрения: переходный учёт себестоимости — перенос минимального контура из старой системы (2–3 недели)
|
||||||
|
- Выделить минимальный переносимый контур `rh_ТоварыНаСкладахСебестоимость` и связанные вызовы.
|
||||||
|
- Не расширять объём **переходного учёта себестоимости**: переносим только то, что нужно для непрерывности работы.
|
||||||
|
- Заложить критерии **завершения** переходного учёта себестоимости и перехода на типовой механизм:
|
||||||
|
- согласованный период параллельной сверки;
|
||||||
|
- контрольные точки отключения доработанного механизма.
|
||||||
|
- **Ключевые исходные файлы в коде** (от них отталкиваемся при переносе и проверках):
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev/src/CommonModules/rh_ТоварыНаСкладахСебестоимость/Ext/Module.bsl](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev/src/CommonModules/rh_ТоварыНаСкладахСебестоимость/Ext/Module.bsl)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev/src/AccumulationRegisters/rh_ТоварыНаСкладахСебестоимость.xml](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev/src/AccumulationRegisters/rh_ТоварыНаСкладахСебестоимость.xml)
|
||||||
|
|
||||||
|
## 6. Этап 4 внедрения: формирование и перенос остатков на управляемую дату (1–2 недели)
|
||||||
|
- Опираться на актуальный **протокол различий настроек ИБ** (**разд. 4**) и на **сравнение эффективных настроек учёта номенклатуры** из внешних обработок: согласованные режимы и расхождения по номенклатуре — вход в правила **ввода остатков** и **преобразования** при загрузке.
|
||||||
|
- Отдельный механизм установки **даты среза** с возможностью **быстро сменить дату** без переписывания алгоритмов.
|
||||||
|
- Выгрузка из `crm3-dev` и загрузка в `crm3-26-promo` через документы ввода остатков (или согласованный альтернативный способ по разделам учета).
|
||||||
|
- Обязательные разделы остатков:
|
||||||
|
- складские остатки;
|
||||||
|
- остатки товаров организаций;
|
||||||
|
- финансовые остатки;
|
||||||
|
- бронирование товаров и доступные остатки;
|
||||||
|
- себестоимость по доработанному функционалу (пока действует **переходный учёт себестоимости**);
|
||||||
|
- прочие остатки после дополнительного анализа регистров накопления.
|
||||||
|
- Контрольные сверки до и после загрузки по каждому разделу учета и общий акт расхождений.
|
||||||
|
- **Учёт расхождения с источником:** в `crm3-dev` возможны **искажённые** складские/финансовые остатки по отдельным номенклатурам, **историческая смена порядка учёта** при неизменных физических остатках и иные **несоответствия** целевой модели; до и после ввода остатков — отдельный перечень **номенклатур/партий/серий** под усиленную проверку, протокол решений (исправление в источнике, корректирующие документы, перенос с оговоркой).
|
||||||
|
- **Посерийный учёт в целевой:** при полном посерийном режиме для всех номенклатур — проверить, что ввод остатков и последующая **реализация** не блокируются пустыми сериями; при необходимости — этап **нормализации серий** в источнике или согласованные правила заполнения при переносе.
|
||||||
|
- **Разд. 6** — **обязательное условие** перед включением постоянной **передачи данных** (первой волны).
|
||||||
|
|
||||||
|
## 7. Этап 5 внедрения: передача данных, первая волна (2–3 недели)
|
||||||
|
- Учитывать **протокол различий настроек ИБ** (**разд. 4**) и **расхождения эффективных настроек номенклатуры** при правилах сопоставления и преобразования реквизитов при передаче (в т.ч. НДС, склад, серии, организация, вид номенклатуры), чтобы проведение в целевой базе соответствовало **заявленной** эксплуатационной модели.
|
||||||
|
- Односторонний поток `crm3-dev -> crm3-26-promo` по объёму первой волны:
|
||||||
|
- НСИ;
|
||||||
|
- `ЗаказКлиента`;
|
||||||
|
- `РеализацияТоваровУслуг`.
|
||||||
|
- **Важно:** из-за сильной кастомизации исходной конфигурации **нельзя ограничиться** надеждой на «универсальные правила обмена как есть». Нужны **явные перечни метаданных по разделам учёта** (справочники, документы, регистры накопления и сведений), вовлечённые в передачу и **проведение** этих объектов в целевой базе; по ним выполняется финальная проверка полноты данных и движений (в т.ч. после тестового проведения). В матрицу включить объекты и сценарии **посерийного учёта** и **маркировки** (косметика, БАДы, ЛП) в объёме, принятом для целевой системы.
|
||||||
|
- Техническая реализация: на выбор или в комбинации — план обмена через универсальный формат **с существенными доработками** в `crm3-26-promo.rhana` / переносом логики из `crm3-dev.rhana` (**«Менеджер обмена через универсальный формат»**), либо дополнительные регламентные или обменные обработки, если универсальный контур не покрывает кастом; решение фиксируется в спецификации первой волны.
|
||||||
|
- Обязательные правила передачи:
|
||||||
|
- повторная выгрузка одних и тех же данных **не создает дублей** (по уникальному идентификатору объекта и ключевым свойствам);
|
||||||
|
- повторная доставка без дублирования записей;
|
||||||
|
- журнал ошибок и повторные попытки при сбоях.
|
||||||
|
- **Ключевые исходные файлы в коде** для настройки обмена (ориентир; итоговая схема — по матрице объектов):
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат.xml](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат.xml)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-26-promo/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат.xml](d:/SynologyDrive/projects_syn/crm3-26/crm3-26-promo/src/ExchangePlans/СинхронизацияДанныхЧерезУниверсальныйФормат.xml)
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl)
|
||||||
|
|
||||||
|
## 8. Этап 6 внедрения: интеграционное тестирование и приёмка пользователями (2 недели)
|
||||||
|
- Сквозные сценарии:
|
||||||
|
- создание и изменение НСИ в старой базе;
|
||||||
|
- движение `ЗаказКлиента` и `РеализацияТоваровУслуг` в новой;
|
||||||
|
- сверка ключевых реквизитов и сумм;
|
||||||
|
- **посерийный учёт:** отгрузка и возвраты с обязательным заполнением серий там, где в целевой конфигурации это требуется для всех номенклатур;
|
||||||
|
- **маркировка:** приёмка и отгрузка маркированной продукции (косметика, БАДы, ЛП) по согласованному перечню номенклатуры и регламенту целевой конфигурации;
|
||||||
|
- оформление и проведение по **кредит-ноте**, сверка с типовыми и доработанными связями;
|
||||||
|
- сценарии с **купоном** в заказе и отгрузке (и иные согласованные точки применения);
|
||||||
|
- **печать комплекта документов** и складские сценарии из перенесенной доработки;
|
||||||
|
- печать отгрузки с проверкой **подписи материально ответственного** при разных складах и наборах номенклатуры (в т.ч. после решения по типовому или расширенному подбору МОЛ).
|
||||||
|
- **роли и профили (не под полными правами администратора):** те же сценарии первой волны и печати выполняются под **целевым производственным профилем** пользователя; нет скрытых отказов в доступе к обмену, проведению, печати и закрытию периода; сверка с чек-листом [Роли для включения в новой системе](d:/SynologyDrive/projects_syn/crm3-26/docs/Роли_для_включения_в_новой_системе.md) и согласованным финальным списком ролей профиля.
|
||||||
|
- **регистр сведений `CRM_ЖурналДокументов`:** после загрузки/обмена и проведения документов первой волны — **уникальность** записей (нет дублей по ключу уникальности), согласованность с отображением в CRM-интерфейсах и отчётах; при смене метаданных или обнаружении неуникальности — сценарий **перезаполнения** по [аналитике перезаполнения](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_механизма_перезаполнения_CRM_ЖурналДокументов.md) и повторная приёмка выборкой документов.
|
||||||
|
- при сохранении обмена с **Бухгалтерией КОРП** — регрессия **НДС 22** на **типовой** реализации в `crm3-26-promo` (ставки, проведение, загрузка в БК) по согласованному мини-пакету из [анализа обмена НДС 22](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_обмена_НДС_22_с_Бухгалтерией_КОРП.md); отдельный перенос логики НДС 22 в расширение целевой системы **не входит в объём**.
|
||||||
|
- **настройки ИБ по протоколу разд. 4:** на копии для приёмки **целевая** ИБ по ключевым пунктам совпадает с утверждённым снимком целевой или отклонения перечислены в протоколе; при необходимости для сценария — **исходная** копия согласована с эталонным снимком исходной ИБ (чтобы сравнение «как в бою» было воспроизводимо); **внешние обработки** съёма дают повторяемый снимок, сравнение в обработке целевой — без расхождения с ручным протоколом.
|
||||||
|
- Отдельный блок сверки себестоимости: старый доработанный контур и сравнение с целевым типовым контуром (контрольные отчеты).
|
||||||
|
- Критерий готовности: прохождение **согласованного пакета тестов** без **блокирующих и критических** ошибок.
|
||||||
|
|
||||||
|
## 9. Этап 7 внедрения: готовность к переходу и промышленный запуск (1 неделя + окно перехода)
|
||||||
|
- Единая **пошаговая инструкция перехода**:
|
||||||
|
- шаги по времени;
|
||||||
|
- ответственные;
|
||||||
|
- условия продолжения и остановки работ;
|
||||||
|
- условия **отката** к прежнему варианту;
|
||||||
|
- **контрольный проход по протоколу различий настроек ИБ** (**разд. 4**): по **целевой** ИБ критичные пункты совпадают с утверждённым снимком перед срезом; по **исходной** — нет неучтённого дрейфа по пунктам, влияющим на выгрузку остатков и первой волны (либо дрейф внесён в протокол); отклонения согласованы с владельцами учёта.
|
||||||
|
- Финальный прогон переноса остатков на актуальную дату среза по механизму **разд. 6**.
|
||||||
|
- После среза — режим постоянной **односторонней передачи данных** **первой волны** (по утверждённой матрице объектов и механизму **разд. 7**).
|
||||||
|
|
||||||
|
## 10. Этап 8 внедрения: стабилизация после запуска и вторая волна (2–4 недели)
|
||||||
|
- Усиленная поддержка и ежедневный контроль **передачи данных**.
|
||||||
|
- Подготовка **второй волны**:
|
||||||
|
- сценарии ЭДО и УПД при **передаче данных**;
|
||||||
|
- план **завершения** переходного учёта себестоимости и **перехода на типовой** механизм по утверждённым критериям и датам;
|
||||||
|
- расширение **передачи данных** или отчетности по кредит-нотам и купонам сверх минимума первой волны.
|
||||||
|
|
||||||
|
## 11. Детализированный план действий (операционный)
|
||||||
|
- Сформировать **единый реестр** доработок с классификацией: сейчас обязательно / вторая волна / заменить типовым.
|
||||||
|
- Для каждой переносимой доработки зафиксировать:
|
||||||
|
- источник (`crm3-dev*`);
|
||||||
|
- целевой объект (`crm3-26-promo.rhana`);
|
||||||
|
- тип переноса (`&ИзменениеИКонтроль`, новый объект, адаптация);
|
||||||
|
- сценарий приемки.
|
||||||
|
- **Протокол различий настроек ИБ** (артефакт **разд. 4**): шаблон таблицы; **парные снимки** исходной и целевой ИБ по одному чек-листу (в т.ч. через **внешние обработки** съёма); перечень обязательных разделов (см. **разд. 4.3**); колонка при необходимости для **ограничений версии** типовой между исходной и целевой; правила ведения версий; связь со спецификациями **остатков** и **первой волны передачи данных**; владелец артефакта и периодичность пересмотра при обновлении типовой или смене учётной политики.
|
||||||
|
- **Внешние обработки съёма и сравнения** (**разд. 4.4**): спецификация формата файла снимка; состав полей общих настроек ИБ; **обработка целевой** — сценарии загрузки двух снимков и UI различий; регламент выпуска **двух сборок** (исходная/целевая конфигурация).
|
||||||
|
- **Внешние обработки эффективных настроек номенклатуры** (**разд. 4.5** в связке с **разд. 6–7**): параметры периода оборотов и даты остатков; алгоритм отбора номенклатур; правило вычисления эффективной настройки; формат выгрузки; сравнение **только в обработке целевой** конфигурации; связь выхода с **маппингом** при загрузке остатков и при передаче документов переходного периода.
|
||||||
|
- Спецификация **передачи данных, первая волна**:
|
||||||
|
- **матрица по разделам учёта** — для каждого раздела (продажи, склад, взаиморасчёты, **посерийный учёт**, **маркировка**, себестоимость на период **переходного учёта себестоимости** и т.д.): перечень **справочников**, **документов**, **регистров накопления** и **регистров сведений**, которые должны быть согласованы между выгрузкой из `crm3-dev` и проведением в `crm3-26-promo` (включая кастомные `р_` / `rh_` при наличии); назначение каждого объекта в контроле (обязательный к передаче / вычисляется при проведении / исключён);
|
||||||
|
- сценарии **финальной проверки**: передача объекта → загрузка в целевую → **проведение** (где применимо) → сверка движений по всем строкам матрицы для этого типа документа;
|
||||||
|
- выбранный **технический механизм** (универсальный формат с доработками, дополнение обработками и т.д.) и правила сопоставления записей;
|
||||||
|
- порядок выгрузки и загрузки;
|
||||||
|
- обработка конфликтов и ошибок;
|
||||||
|
- опора на аналитику регистров: [Глубинный анализ регистров](d:/SynologyDrive/projects_syn/crm3-26/docs/Глубинный_анализ_регистров.md) — при расширении матрицы и проверке рисков по движениям.
|
||||||
|
- Спецификация **переходного учёта себестоимости**:
|
||||||
|
- границы переноса;
|
||||||
|
- список зависимостей документов и регистров;
|
||||||
|
- механизм сверки со стандартным контуром.
|
||||||
|
- Спецификация механизма остатков:
|
||||||
|
- настройка даты среза и сценарий быстрой смены даты;
|
||||||
|
- правила выгрузки из старой базы и загрузки в новую;
|
||||||
|
- **опора на файлы сравнения** из внешних обработок (общие настройки ИБ и эффективные настройки номенклатуры по остаткам/оборотам за период);
|
||||||
|
- сопоставление разделов учета и целевых документов ввода остатков;
|
||||||
|
- протокол сверки по остаткам и регистрам накопления;
|
||||||
|
- **санация и границы ответственности:** перечень известных проблемных номенклатур/остатков в источнике, правила исправления до среза vs перенос с актом; учёт **смены порядка учёта** в истории;
|
||||||
|
- **посерийный учёт:** согласование остатков и НСИ с требованием **серий для всех** номенклатур в целевой базе;
|
||||||
|
- **маркировка:** требования к НСИ и документам для косметики, БАДов и ЛП в целевой системе на дату среза и при последующей передаче данных;
|
||||||
|
- **серии и виды номенклатуры при вводе остатков:** согласовать с [анализом привязок серий](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_привязок_серий_номенклатур_к_видам_номенклатур.md) (отбор серий, риск указания серий без остатков).
|
||||||
|
- Спецификация по **УПД (upd5b)**: таблица соответствия объектов `crm3-dev.upd5b` ↔ `crm3-26-promo` (типовая часть) ↔ итог в `crm3-26-promo.rhana`; решение по каждому фрагменту (оставить типовое, перенести, адаптировать); сценарии печати и ЭДО после слияния.
|
||||||
|
- Спецификация по **кредит-ноте**: объекты метаданных, проведение, печать, участие в обмене и в **передаче данных** (если требуется).
|
||||||
|
- Спецификация по **купонам**: реквизиты, заполнение, контроль при проведении, отчеты и ограничения при **передаче** НСИ и документов.
|
||||||
|
- Спецификация по **печати комплекта документов и складскому учету**: перечень обработок и команд, зависимости от документов и регистров, сценарии приемки (см. [аналитику по складу и печати](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_складского_учета_и_печати_документов.md)).
|
||||||
|
- Заключение по **МОЛ и номенклатуре**: протокол сравнения с типовым подбором ответственного в `crm3-26-promo` и выбранный вариант (типовой / расширение), план переноса строк «Склады.МОЛ» при необходимости.
|
||||||
|
- Опытная эксплуатация на **копии продуктивных данных** до промышленного окна перехода.
|
||||||
|
|
||||||
|
## 12. Привязка к этапам плана: комплект печати и склад
|
||||||
|
|
||||||
|
Опора на [Анализ доработок складского учета и печати документов](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_доработок_складского_учета_и_печати_документов.md) (версия 4.0): **раздел 3 анализа** — кастомный перенос; **раздел 1 анализа** — сверка с эталоном; **раздел 4 анализа** (форма приёмки) — перенос кастома не требуется, в целевой базе только **проверка наличия типового** поведения. Ниже — **этапы внедрения по нумерации плана** (**разд. 3–10**), не путать с нумерацией разделов самого анализа.
|
||||||
|
|
||||||
|
- **Разд. 3 плана** (сводка границ) — зафиксировать в объёме миграции перечень из **раздела 3 анализа**: **3.1** печать расходного ордера по основанию и включение формы ордера в комплект для реализации и перемещения; **3.2** обработка **«УправлениеОтгрузкой»** — блок **«Комплект печатных документов»** и команда **«Для печати комплекта документов»** (`ОтразитьРеализации`); **3.3** форма **«Настройка печати комплекта»** — блок **«Дополнительная обработка»** (пользовательский код перед печатью). Отдельно зафиксировать: по **разделу 4 анализа** перенос не планируется, только контрольный чек-лист.
|
||||||
|
- **Разд. 5 плана** (**переходный учёт себестоимости**) — прямой привязки к комплекту печати нет; косвенно — если тестовые отгрузки используются для сверки складских остатков.
|
||||||
|
- **Разд. 6 плана** (остатки на дату) — без обязательной привязки к печати; при необходимости — тестовая отгрузка после загрузки остатков для проверки согласованности данных и печати ордера.
|
||||||
|
- **Разд. 7 плана** (первая волна **передачи данных**) — включить в **матрицу объектов** только те сущности, которые **хранят настройки или данные** комплекта (если такие есть вне кода); сам перенос логики печати — в расширении `crm3-26-promo.rhana`, а не через обмен.
|
||||||
|
- **Разд. 8 плана** (приёмка) — обязательные сценарии по анализу: печать комплекта из **«УправлениеОтгрузкой»**; формирование комплекта с **расходным ордером по основанию** для **«Реализация товаров и услуг»** и **«Перемещение товаров»**; расширенная печать ордера (`р_ПечатьРасходногоОрдераНаТовары` и связанные `р_СформироватьПечатнуюФормуОрдераПоОснованию`, `р_ПолучитьОрдерыНаПечать`); сценарий с **дополнительной обработкой** в настройке комплекта (если используется в промышленной эксплуатации).
|
||||||
|
- **Разд. 9 плана** (переход) — в пошаговую инструкцию включить проверку доступности команд печати комплекта и права на выполнение кода дополнительной обработки (если перенесён).
|
||||||
|
- **Разд. 10 плана** (стабилизация) — при отложенных пунктах **3.2 и 3.3 раздела 3 анализа** (статус «требуется проверка» в анализе) — закрытие во второй волне после уточнения в целевой конфигурации.
|
||||||
|
|
||||||
|
### 12.1. Ключевые исходные файлы в коде (перенос по разделу 3 анализа, `crm3-dev.rhana`)
|
||||||
|
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/Documents/РасходныйОрдерНаТовары/Ext/ManagerModule.bsl](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/Documents/РасходныйОрдерНаТовары/Ext/ManagerModule.bsl) — `р_СформироватьПечатнуюФормуОрдераПоОснованию`, `р_ПолучитьОрдерыНаПечать`, переопределение печати ордера.
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/CommonModules/РеализацияТоваровУслугЛокализация/Ext/Module.bsl](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/CommonModules/РеализацияТоваровУслугЛокализация/Ext/Module.bsl) — комплект печатных форм и расходный ордер.
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/CommonModules/ПеремещениеТоваровЛокализация/Ext/Module.bsl](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/CommonModules/ПеремещениеТоваровЛокализация/Ext/Module.bsl) — то же для перемещения.
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/DataProcessors/УправлениеОтгрузкой/Forms/Форма/Ext/Form/Module.bsl](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/DataProcessors/УправлениеОтгрузкой/Forms/Форма/Ext/Form/Module.bsl) — комплект печатных документов в отгрузке.
|
||||||
|
- [d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/InformationRegisters/НастройкиПечатиОбъектов/Forms/НастройкаПечатиКомплекта/Ext/Form/Module.bsl](d:/SynologyDrive/projects_syn/crm3-26/crm3-dev.rhana/src/InformationRegisters/НастройкиПечатиОбъектов/Forms/НастройкаПечатиКомплекта/Ext/Form/Module.bsl) — дополнительная обработка при печати комплекта.
|
||||||
|
|
||||||
|
## 13. Ключевые риски и меры предупреждения
|
||||||
|
- Конфликты расширения с новой типовой версией → ранняя сборка конфигурации и **быстрая проверка на регрессию** после каждого блока переноса.
|
||||||
|
- Дубли и расхождения при передаче данных → правило повторной выгрузки без дублей, журнал сообщений, **ежедневная сверка**; обязательная проверка по **матрице регистров** после проведения ключевых документов.
|
||||||
|
- Ожидание, что **типовой универсальный обмен** закроет кастомную исходную базу **без матрицы объектов** → завышенный риск неполных движений и скрытых расхождений; матрица по разделам учёта — обязательный артефакт приёмки.
|
||||||
|
- **Расхождение настроек ИБ** между исходной и целевой без утверждённого **протокола различий** или при **несимметричном** съёме (заполнен чек-лист только для одной ИБ) → ошибочное проведение остатков и документов переходного периода, «тихие» сдвиги НДС/партий/серий; **парные** снимки (в т.ч. через внешние обработки), протокол и повторная сверка перед опытной и промышленной эксплуатацией.
|
||||||
|
- **Расхождение эффективных настроек учёта номенклатуры** между исходной и целевой без прогона обработок сравнения и без учёта в правилах загрузки остатков/документов → проведение с ошибочными признаками учёта, сериями, маркировкой; обязательный артефакт перед **разд. 6–7**.
|
||||||
|
- Затягивание **переходного учёта себестоимости** в постоянное решение → заранее утвержденные критерии завершения переходного периода и целевые даты перехода на типовой механизм.
|
||||||
|
- Неполный контур перехода → единая пошаговая инструкция и обязательная **репетиция пробного прогона** перед запуском.
|
||||||
|
- **Исторические ошибки и смена порядка учёта** в `crm3-dev` при переносе остатков без ремедиации → искажённые остатки и движения в `crm3-26-promo`; заранее перечень проблемных позиций, акты и правила исправления.
|
||||||
|
- **Разрыв посерийного учёта:** в источнике серии велись не для всех позиций, в целевой — **обязательны для всех** → блокировки проведения, расхождения с фактом; нормализация серий и НСИ до/на срезе.
|
||||||
|
- **Маркировка (косметика, БАДы, ЛП):** неготовность НСИ, кодов маркировки и сценариев **интеграций маркировки**, предусмотренных целевой конфигурацией → остановка отгрузок или регламентные нарушения; отдельный контур готовности и приёмки.
|
||||||
|
- **Регистр `CRM_ЖурналДокументов`:** реструктуризация измерений и обнуление ссылок на удаляемые типы → **неуникальность** и порча CRM-журнала; заранее сценарий проверки и при необходимости **перезаполнение** по [аналитике перезаполнения](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_механизма_перезаполнения_CRM_ЖурналДокументов.md).
|
||||||
|
- **Роли не включены в целевой профиль** → отказ в доступе к обмену, печати, документам при том что функционал перенесён; чек-лист по [ролям для включения](d:/SynologyDrive/projects_syn/crm3-26/docs/Роли_для_включения_в_новой_системе.md).
|
||||||
|
- **Обмен с Бухгалтерией КОРП и НДС 22:** риск пустых или неверных ставок при **несогласованности форматов/правил обмена** между системами (в т.ч. если на стороне БК или транспорта ещё не поддержаны коды НДС 22); обязательная регрессия по [анализу обмена НДС 22](d:/SynologyDrive/projects_syn/crm3-26/docs/Анализ_обмена_НДС_22_с_Бухгалтерией_КОРП.md). В `crm3-26-promo` учёт НДС 22% обеспечивается **типовой конфигурацией** — не смешивать с задачами переноса кастома в `crm3-26-promo.rhana`.
|
||||||
|
- **Пользовательский код в «Дополнительной обработке» комплекта печати** → аудит сценариев, ограничение прав, тестирование на копии; при переносе — миграция сохранённых текстов обработки и контроль безопасности выполнения.
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
---
|
||||||
|
title: Инструкция по добавлению ролей в профиль группы доступа
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-11
|
||||||
|
date_modified: 2025-12-11
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Инструкция по добавлению ролей в профиль группы доступа
|
||||||
|
|
||||||
|
## Описание
|
||||||
|
|
||||||
|
Созданы программные модули на языке 1С для автоматического добавления ролей в табличную часть "Разрешенные действия (Роли)" элемента справочника "ПрофилиГруппДоступа".
|
||||||
|
|
||||||
|
## Файлы с кодом
|
||||||
|
|
||||||
|
1. **`scripts/AddRolesToAccessProfile.bsl`** - основная процедура для добавления ролей из массива
|
||||||
|
2. **`scripts/AddRolesToAccessProfileFromFile.bsl`** - процедура для добавления ролей из текстового файла
|
||||||
|
|
||||||
|
## Использование
|
||||||
|
|
||||||
|
### Вариант 1: Добавление ролей из массива
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Получаем ссылку на элемент профиля
|
||||||
|
ЭлементПрофиля = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Кладовщик (без заказов поставщиков)");
|
||||||
|
|
||||||
|
// Формируем список ролей для добавления
|
||||||
|
СписокРолей = Новый Массив;
|
||||||
|
СписокРолей.Добавить("Базовые права (CRM)");
|
||||||
|
СписокРолей.Добавить("Ввод документа ""Отчет по работам"" (CRM)");
|
||||||
|
СписокРолей.Добавить("Добавление изменение актов о расхождениях после отгрузки по возврату");
|
||||||
|
// ... и так далее
|
||||||
|
|
||||||
|
// Вызываем процедуру
|
||||||
|
ДобавитьРолиВПрофильГруппыДоступа(ЭлементПрофиля, СписокРолей);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вариант 2: Добавление ролей из файла
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Получаем ссылку на элемент профиля
|
||||||
|
ЭлементПрофиля = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Кладовщик (без заказов поставщиков)");
|
||||||
|
|
||||||
|
// Указываем путь к файлу со списком ролей
|
||||||
|
// Файл должен содержать по одной роли на строку
|
||||||
|
// Поддерживается формат с нумерацией (например, " 1. Название роли")
|
||||||
|
ПутьКФайлу = "C:\Temp\roles_list.txt";
|
||||||
|
|
||||||
|
// Вызываем процедуру
|
||||||
|
ДобавитьРолиВПрофильГруппыДоступаИзФайла(ЭлементПрофиля, ПутьКФайлу);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вариант 3: Использование с файлом результатов сравнения
|
||||||
|
|
||||||
|
Для использования с файлом `docs/roles_kladovshik_comparison.txt` можно:
|
||||||
|
|
||||||
|
1. Скопировать раздел "ОБЩИЙ СПИСОК РОЛЕЙ ДЛЯ ДОБАВЛЕНИЯ" в отдельный текстовый файл
|
||||||
|
2. Использовать этот файл с процедурой `ДобавитьРолиВПрофильГруппыДоступаИзФайла`
|
||||||
|
|
||||||
|
Или создать процедуру, которая автоматически извлекает список из файла результатов:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Процедура для извлечения списка ролей из файла результатов сравнения
|
||||||
|
Процедура ДобавитьРолиИзФайлаСравнения(ЭлементПрофиля, ПутьКФайлуСравнения) Экспорт
|
||||||
|
|
||||||
|
// Читаем файл
|
||||||
|
ТекстФайла = "";
|
||||||
|
ЧтениеТекста = Новый ЧтениеТекста(ПутьКФайлуСравнения, КодировкаТекста.UTF8);
|
||||||
|
Пока НЕ ЧтениеТекста.КонецПотока() Цикл
|
||||||
|
ТекстФайла = ТекстФайла + ЧтениеТекста.ПрочитатьСтроку() + Символы.ПС;
|
||||||
|
КонецЦикла;
|
||||||
|
ЧтениеТекста.Закрыть();
|
||||||
|
|
||||||
|
// Ищем раздел "ОБЩИЙ СПИСОК РОЛЕЙ ДЛЯ ДОБАВЛЕНИЯ"
|
||||||
|
ПозицияНачала = СтрНайти(ТекстФайла, "ОБЩИЙ СПИСОК РОЛЕЙ ДЛЯ ДОБАВЛЕНИЯ");
|
||||||
|
Если ПозицияНачала = 0 Тогда
|
||||||
|
ВызватьИсключение "В файле не найден раздел 'ОБЩИЙ СПИСОК РОЛЕЙ ДЛЯ ДОБАВЛЕНИЯ'";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Ищем конец раздела (следующий раздел или конец файла)
|
||||||
|
ПозицияКонца = СтрНайти(ТекстФайла, "СГРУППИРОВАННЫЙ СПИСОК", ПозицияНачала);
|
||||||
|
Если ПозицияКонца = 0 Тогда
|
||||||
|
ПозицияКонца = СтрДлина(ТекстФайла);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Извлекаем нужный фрагмент
|
||||||
|
ФрагментТекста = Сред(ТекстФайла, ПозицияНачала, ПозицияКонца - ПозицияНачала);
|
||||||
|
|
||||||
|
// Разбиваем на строки и извлекаем роли
|
||||||
|
СписокРолей = Новый Массив;
|
||||||
|
Строки = СтрРазделить(ФрагментТекста, Символы.ПС);
|
||||||
|
|
||||||
|
Для Каждого Строка Из Строки Цикл
|
||||||
|
Строка = СокрЛП(Строка);
|
||||||
|
Если ПустаяСтрока(Строка) Или СтрНачинаетсяС(Строка, "=") Или СтрНачинаетсяС(Строка, "-") Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Убираем нумерацию
|
||||||
|
ПозицияТочки = СтрНайти(Строка, ".");
|
||||||
|
Если ПозицияТочки > 0 И ПозицияТочки <= 4 Тогда
|
||||||
|
ЧастьДоТочки = Лев(Строка, ПозицияТочки - 1);
|
||||||
|
ЧастьДоТочки = СокрЛП(ЧастьДоТочки);
|
||||||
|
Попытка
|
||||||
|
Число(ЧастьДоТочки);
|
||||||
|
Строка = Сред(Строка, ПозицияТочки + 1);
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Строка = СокрЛП(Строка);
|
||||||
|
Если НЕ ПустаяСтрока(Строка) Тогда
|
||||||
|
СписокРолей.Добавить(Строка);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Вызываем основную процедуру
|
||||||
|
ДобавитьРолиВПрофильГруппыДоступа(ЭлементПрофиля, СписокРолей);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
## Важные замечания
|
||||||
|
|
||||||
|
1. **Проверка существования ролей**: Процедура ищет роли по точному совпадению наименования в справочнике "Роли". Если роль не найдена, она будет добавлена в список не найденных ролей.
|
||||||
|
|
||||||
|
2. **Проверка дубликатов**: Процедура проверяет, не добавлена ли уже роль в табличную часть. Если роль уже есть, она не будет добавлена повторно.
|
||||||
|
|
||||||
|
3. **Обработка ошибок**: При ошибках записи будет выброшено исключение с описанием ошибки.
|
||||||
|
|
||||||
|
4. **Результат выполнения**: После выполнения процедура выводит сообщение с информацией:
|
||||||
|
- Количество добавленных ролей
|
||||||
|
- Количество ролей, которые уже были добавлены
|
||||||
|
- Количество не найденных ролей и их список
|
||||||
|
|
||||||
|
## Требования к метаданным
|
||||||
|
|
||||||
|
Убедитесь, что в конфигурации существуют:
|
||||||
|
- Справочник `ПрофилиГруппДоступа` (или другое имя, в зависимости от конфигурации)
|
||||||
|
- Табличная часть `РазрешенныеДействияРоли` (или другое имя) с реквизитом `Роль` типа `СправочникСсылка.Роли`
|
||||||
|
- Справочник `Роли` с реквизитом `Наименование`
|
||||||
|
|
||||||
|
Если имена объектов метаданных отличаются, необходимо скорректировать код соответственно.
|
||||||
|
|
||||||
|
## Пример полного использования
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// 1. Получаем ссылку на профиль
|
||||||
|
ЭлементПрофиля = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Кладовщик (без заказов поставщиков)");
|
||||||
|
|
||||||
|
Если ЭлементПрофиля.Пустая() Тогда
|
||||||
|
Сообщить("Профиль не найден!");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// 2. Формируем список ролей (можно из файла или вручную)
|
||||||
|
СписокРолей = Новый Массив;
|
||||||
|
СписокРолей.Добавить("Базовые права (CRM)");
|
||||||
|
СписокРолей.Добавить("Ввод документа ""Отчет по работам"" (CRM)");
|
||||||
|
// ... остальные роли
|
||||||
|
|
||||||
|
// 3. Добавляем роли
|
||||||
|
Попытка
|
||||||
|
ДобавитьРолиВПрофильГруппыДоступа(ЭлементПрофиля, СписокРолей);
|
||||||
|
Сообщить("Роли успешно добавлены!");
|
||||||
|
Исключение
|
||||||
|
Сообщить("Ошибка: " + ОписаниеОшибки());
|
||||||
|
КонецПопытки;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,205 @@
|
|||||||
|
---
|
||||||
|
title: Инструкция по запуску скрипта md_convert.py
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2026-01-06
|
||||||
|
date_modified: 2026-01-06
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Инструкция по запуску скрипта md_convert.py
|
||||||
|
|
||||||
|
## Расположение скрипта
|
||||||
|
- **Путь:** `md_converter/md_convert.py`
|
||||||
|
- **Виртуальная среда:** `md_converter/venv/`
|
||||||
|
- **Версия:** 0.0.1
|
||||||
|
|
||||||
|
## Активация виртуальной среды
|
||||||
|
|
||||||
|
Перед запуском скрипта необходимо активировать виртуальную среду:
|
||||||
|
|
||||||
|
### Windows PowerShell:
|
||||||
|
```powershell
|
||||||
|
cd md_converter
|
||||||
|
.\venv\Scripts\Activate.ps1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows CMD:
|
||||||
|
```cmd
|
||||||
|
cd md_converter
|
||||||
|
venv\Scripts\activate.bat
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linux/Mac:
|
||||||
|
```bash
|
||||||
|
cd md_converter
|
||||||
|
source venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Базовый запуск скрипта
|
||||||
|
|
||||||
|
### 1. Запуск с конфигурацией по умолчанию
|
||||||
|
```bash
|
||||||
|
cd md_converter
|
||||||
|
venv\Scripts\python.exe md_convert.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Запуск с указанием файла конфигурации
|
||||||
|
```bash
|
||||||
|
# Первый параметр (без флага)
|
||||||
|
venv\Scripts\python.exe md_convert.py config/config.yml
|
||||||
|
|
||||||
|
# Или с флагом
|
||||||
|
venv\Scripts\python.exe md_convert.py -c config/config.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
## Режимы работы
|
||||||
|
|
||||||
|
### Конвертация только в HTML
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode html
|
||||||
|
```
|
||||||
|
|
||||||
|
### Конвертация только в PDF
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Конвертация в оба формата
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode both
|
||||||
|
```
|
||||||
|
|
||||||
|
## Указание конкретных файлов
|
||||||
|
|
||||||
|
### Один файл (рекомендуется использовать абсолютный путь для файлов с кириллицей)
|
||||||
|
```bash
|
||||||
|
# Абсолютный путь (рекомендуется для Windows)
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode html --file D:/edt_workspace/docs/Оценка_правок_для_переноса_НДС_22_(v1.4).md
|
||||||
|
|
||||||
|
# Относительный путь
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode html --file ../docs/document.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Несколько файлов
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode html --files file1.md file2.md file3.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Переопределение параметров конфигурации
|
||||||
|
|
||||||
|
### Указание входной и выходной директории
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py \
|
||||||
|
--mode html \
|
||||||
|
-i D:/edt_workspace/docs/ \
|
||||||
|
-oh D:/edt_workspace/html_md_converter/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Указание выходной директории для PDF
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py \
|
||||||
|
--mode pdf \
|
||||||
|
-i D:/edt_workspace/docs/ \
|
||||||
|
-op D:/edt_workspace/pdf/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Дополнительные параметры
|
||||||
|
|
||||||
|
### Режим отладки
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode html --debug
|
||||||
|
```
|
||||||
|
|
||||||
|
### Указание кодировки
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode html --encoding windows-1251
|
||||||
|
```
|
||||||
|
|
||||||
|
### Версия скрипта
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --version
|
||||||
|
```
|
||||||
|
|
||||||
|
### Справка
|
||||||
|
```bash
|
||||||
|
venv\Scripts\python.exe md_convert.py --help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Примеры использования
|
||||||
|
|
||||||
|
### Пример 1: Конвертация одного файла в HTML
|
||||||
|
```bash
|
||||||
|
cd md_converter
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode html --file D:/edt_workspace/docs/Оценка_правок_для_переноса_НДС_22_(v1.4).md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пример 2: Конвертация всех файлов из директории в HTML и PDF
|
||||||
|
```bash
|
||||||
|
cd md_converter
|
||||||
|
venv\Scripts\python.exe md_convert.py --mode both -i D:/edt_workspace/docs/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пример 3: Конвертация с кастомной конфигурацией
|
||||||
|
```bash
|
||||||
|
cd md_converter
|
||||||
|
venv\Scripts\python.exe md_convert.py config/custom_config.yml --mode html
|
||||||
|
```
|
||||||
|
|
||||||
|
## Важные замечания
|
||||||
|
|
||||||
|
### Работа с кириллическими именами файлов в Windows
|
||||||
|
|
||||||
|
В Windows cmd.exe может искажать кириллические символы в аргументах из-за кодировки консоли (CP866). Рекомендации:
|
||||||
|
|
||||||
|
1. **Использовать абсолютные пути с прямыми слешами:**
|
||||||
|
```bash
|
||||||
|
--file D:/edt_workspace/docs/Оценка_правок_для_переноса_НДС_22_(v1.4).md
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Использовать PowerShell вместо cmd.exe** (лучше работает с UTF-8)
|
||||||
|
|
||||||
|
3. **Скрипт автоматически пытается найти файл по части имени**, если точное совпадение не найдено из-за проблем с кодировкой
|
||||||
|
|
||||||
|
### Генерация PDF
|
||||||
|
|
||||||
|
Для генерации PDF требуется установка GTK+ библиотек на Windows. См. инструкцию в `md_converter/INSTALL_GTK_WINDOWS.md`.
|
||||||
|
|
||||||
|
Если GTK+ не установлен, скрипт выдаст ошибку при попытке генерации PDF, но продолжит работу для HTML.
|
||||||
|
|
||||||
|
## Структура параметров командной строки
|
||||||
|
|
||||||
|
### Позиционные аргументы:
|
||||||
|
- `config_file` - Путь к файлу конфигурации (может быть указан первым параметром без флага)
|
||||||
|
|
||||||
|
### Основные параметры:
|
||||||
|
- `-c, --config` - Путь к файлу конфигурации
|
||||||
|
- `-f, --file` - Путь к конкретному MD файлу для конвертации
|
||||||
|
- `-F, --files` - Пути к нескольким MD файлам для конвертации
|
||||||
|
- `-i, --input-dir` - Папка с MD файлами
|
||||||
|
- `-oh, --output-html-dir` - Папка вывода HTML файлов
|
||||||
|
- `-op, --output-pdf-dir` - Папка вывода PDF файлов
|
||||||
|
- `-m, --mode` - Режим работы (html, pdf, both)
|
||||||
|
- `-e, --encoding` - Кодировка входных файлов
|
||||||
|
- `-d, --debug` - Режим отладки
|
||||||
|
- `-v, --version` - Версия скрипта
|
||||||
|
- `-h, --help` - Справка
|
||||||
|
|
||||||
|
### Дополнительные параметры:
|
||||||
|
- `--html.template_file` - Путь к HTML шаблону
|
||||||
|
- `--pdf.page_size` - Размер страницы PDF
|
||||||
|
|
||||||
|
## Приоритет параметров
|
||||||
|
|
||||||
|
1. Параметры командной строки (наивысший приоритет)
|
||||||
|
2. Файл конфигурации (если не заблокирован параметром `lock_override`)
|
||||||
|
3. Значения по умолчанию (низший приоритет)
|
||||||
|
|
||||||
|
## Обработка ошибок
|
||||||
|
|
||||||
|
- Если указан файл, который не найден, скрипт попытается найти его по части имени
|
||||||
|
- Если режим `pdf` и GTK+ не установлен, скрипт выдаст ошибку
|
||||||
|
- Если режим `both` и GTK+ не установлен, скрипт создаст HTML и выдаст предупреждение о PDF
|
||||||
|
- При ошибках обработки файлов скрипт продолжит работу с другими файлами (если `error_handling: continue`)
|
||||||
|
|
||||||
@@ -0,0 +1,371 @@
|
|||||||
|
---
|
||||||
|
title: "Итоговый отчет: Глубинный анализ регистров на нарушение уникальности"
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-09
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Итоговый отчет: Глубинный анализ регистров на нарушение уникальности
|
||||||
|
|
||||||
|
> 📚 **См. также:** [Оглавление документов](INDEX.md) | [ФИНАЛЬНЫЙ ОТЧЕТ](ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.md) | [Глубинный анализ регистров](Глубинный_анализ_регистров.md) | [Анализ ошибок обновления](Анализ_ошибок_обновления.md)
|
||||||
|
|
||||||
|
## Резюме
|
||||||
|
|
||||||
|
Проведен полный анализ всех регистров сведений и регистров накопления в конфигурации `CRM3devLocal` на предмет возможного нарушения уникальности данных после обновления до конфигурации `CRM326/CRM326_TEST`.
|
||||||
|
|
||||||
|
## Методология анализа
|
||||||
|
|
||||||
|
1. **Автоматический анализ:** Сканирование всех файлов метаданных регистров (801 регистр)
|
||||||
|
2. **Проверка удаляемых объектов:** Анализ измерений на ссылки к удаляемым объектам
|
||||||
|
3. **Выявление рисков:** Определение регистров с потенциальными проблемами уникальности
|
||||||
|
|
||||||
|
## Результаты анализа
|
||||||
|
|
||||||
|
### Статистика
|
||||||
|
- **Всего проанализировано регистров:** 801
|
||||||
|
- **Регистров сведений:** ~400
|
||||||
|
- **Регистров накопления:** ~400
|
||||||
|
- **Найдено проблемных регистров:** 3
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## КРИТИЧЕСКИЕ ПРОБЛЕМЫ
|
||||||
|
|
||||||
|
### 1. РегистрНакопления.ТМЦВЭксплуатации
|
||||||
|
|
||||||
|
**Статус:** ⚠️ КРИТИЧНО - Весь регистр удаляется
|
||||||
|
|
||||||
|
**Описание проблемы:**
|
||||||
|
- Регистр полностью удаляется из конфигурации при обновлении
|
||||||
|
- Все данные регистра будут потеряны без возможности восстановления
|
||||||
|
- Регистр используется для учета товарно-материальных ценностей в эксплуатации
|
||||||
|
|
||||||
|
**Структура регистра:**
|
||||||
|
- **Тип:** Регистр накопления (Обороты)
|
||||||
|
- **Измерения:**
|
||||||
|
- Организация (CatalogRef.Организации)
|
||||||
|
- Подразделение (CatalogRef.СтруктураПредприятия)
|
||||||
|
- ФизическоеЛицо (CatalogRef.ФизическиеЛица)
|
||||||
|
- Номенклатура (CatalogRef.Номенклатура)
|
||||||
|
- Характеристика (CatalogRef.ХарактеристикиНоменклатуры)
|
||||||
|
- Партия (CatalogRef.ПартииТМЦВЭксплуатации)
|
||||||
|
- **Ресурсы:**
|
||||||
|
- Количество (Number, 15.3)
|
||||||
|
|
||||||
|
**Риск нарушения уникальности:** НЕТ (регистр полностью удаляется, данные теряются)
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. ✅ Экспортировать все данные из регистра перед обновлением
|
||||||
|
2. ✅ Определить необходимость данных после обновления
|
||||||
|
3. ✅ Если данные критичны - создать скрипт миграции в альтернативный регистр
|
||||||
|
4. ✅ Если данные не нужны - можно удалить перед обновлением
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. РегистрСведений.УдалитьРеестрДокументов
|
||||||
|
|
||||||
|
**Статус:** ⚠️ КРИТИЧНО - Весь регистр удаляется
|
||||||
|
|
||||||
|
**Описание проблемы:**
|
||||||
|
- Регистр полностью удаляется из конфигурации при обновлении
|
||||||
|
- Все данные регистра будут потеряны
|
||||||
|
- Регистр помечен как "(не используется)" в метаданных
|
||||||
|
|
||||||
|
**Структура регистра:**
|
||||||
|
- **Тип:** Регистр сведений (периодический)
|
||||||
|
- **Измерения:**
|
||||||
|
- ТипСсылки (CatalogRef.ИдентификаторыОбъектовМетаданных)
|
||||||
|
- Организация (CatalogRef.Организации)
|
||||||
|
- ХозяйственнаяОперация (EnumRef.ХозяйственныеОперации)
|
||||||
|
- Партнер (CatalogRef.Партнеры)
|
||||||
|
- Контрагент (CatalogRef.Контрагенты)
|
||||||
|
- НаправлениеДеятельности (CatalogRef.НаправленияДеятельности)
|
||||||
|
- Подразделение (CatalogRef.СтруктураПредприятия)
|
||||||
|
- МестоХранения (множество типов)
|
||||||
|
- ДатаДокументаИБ (Date)
|
||||||
|
- Ссылка (множество типов документов)
|
||||||
|
- РазделительЗаписи (String)
|
||||||
|
- **Ресурсы:**
|
||||||
|
- НомерДокументаИБ (String, 30)
|
||||||
|
- Статус (EnumRef - множество типов)
|
||||||
|
- Ответственный (CatalogRef.Пользователи)
|
||||||
|
- ДополнительнаяЗапись (Boolean)
|
||||||
|
- Дополнительно (String, 100)
|
||||||
|
- Комментарий (String, 100)
|
||||||
|
- Проведен (Boolean)
|
||||||
|
- ПометкаУдаления (Boolean)
|
||||||
|
- ДатаПервичногоДокумента (Date)
|
||||||
|
- И другие...
|
||||||
|
|
||||||
|
**Риск нарушения уникальности:** НЕТ (регистр полностью удаляется)
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. ✅ Экспортировать данные (если они есть и нужны)
|
||||||
|
2. ✅ Убедиться, что регистр действительно не используется
|
||||||
|
3. ✅ Можно безопасно удалить перед обновлением
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. РегистрСведений.РеестрДокументов
|
||||||
|
|
||||||
|
**Статус:** ⚠️ КРИТИЧНО - Весь регистр удаляется
|
||||||
|
|
||||||
|
**Описание:**
|
||||||
|
- Возможно, это альтернативное имя для `УдалитьРеестрДокументов`
|
||||||
|
- Требуется дополнительная проверка
|
||||||
|
|
||||||
|
**Действия:**
|
||||||
|
1. ✅ Уточнить, является ли это дубликатом `УдалитьРеестрДокументов`
|
||||||
|
2. ✅ Экспортировать данные перед обновлением
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ВЫСОКИЙ РИСК
|
||||||
|
|
||||||
|
### РегистрНакопления.МатериалыИРаботыВПроизводстве
|
||||||
|
|
||||||
|
**Статус:** ⚠️ ВЫСОКИЙ РИСК - Удаляется измерение
|
||||||
|
|
||||||
|
**Описание проблемы:**
|
||||||
|
- Из регистра удаляется измерение `УдалитьАналитикаУчетаНоменклатуры`
|
||||||
|
- Измерение помечено как "(не используется)" в метаданных
|
||||||
|
- Тип измерения: `CatalogRef.КлючиАналитикиУчетаНоменклатуры`
|
||||||
|
|
||||||
|
**Структура регистра:**
|
||||||
|
- **Тип:** Регистр накопления (Остатки)
|
||||||
|
- **Измерения:**
|
||||||
|
1. Организация
|
||||||
|
2. Номенклатура
|
||||||
|
3. Характеристика
|
||||||
|
4. Подразделение
|
||||||
|
5. Серия
|
||||||
|
6. Назначение
|
||||||
|
7. **УдалитьАналитикаУчетаНоменклатуры** ⚠️ (УДАЛЯЕТСЯ)
|
||||||
|
- **Ресурсы:**
|
||||||
|
- Количество (Number, 15.3)
|
||||||
|
|
||||||
|
**Почему это критично:**
|
||||||
|
|
||||||
|
После удаления измерения `УдалитьАналитикаУчетаНоменклатуры` все записи с одинаковыми значениями остальных измерений, но разными значениями удаляемого измерения, станут неразличимыми. Это приведет к нарушению уникальности ключа регистра.
|
||||||
|
|
||||||
|
**Пример проблемы:**
|
||||||
|
|
||||||
|
```
|
||||||
|
ДО удаления измерения:
|
||||||
|
┌─────────────┬──────────────┬─────────────────────────────────────┬──────────┐
|
||||||
|
│ Организация │ Номенклатура │ УдалитьАналитикаУчетаНоменклатуры │ Количество│
|
||||||
|
├─────────────┼──────────────┼─────────────────────────────────────┼──────────┤
|
||||||
|
│ ООО "А" │ Товар1 │ Ключ1 │ 10 │
|
||||||
|
│ ООО "А" │ Товар1 │ Ключ2 │ 20 │
|
||||||
|
└─────────────┴──────────────┴─────────────────────────────────────┴──────────┘
|
||||||
|
|
||||||
|
ПОСЛЕ удаления измерения:
|
||||||
|
┌─────────────┬──────────────┬──────────┐
|
||||||
|
│ Организация │ Номенклатура │ Количество│
|
||||||
|
├─────────────┼──────────────┼──────────┤
|
||||||
|
│ ООО "А" │ Товар1 │ 10 │ ← ДУБЛИКАТ!
|
||||||
|
│ ООО "А" │ Товар1 │ 20 │ ← ДУБЛИКАТ!
|
||||||
|
└─────────────┴──────────────┴──────────┘
|
||||||
|
→ НАРУШЕНИЕ УНИКАЛЬНОСТИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
**Рекомендации:**
|
||||||
|
|
||||||
|
#### Шаг 1: Проверка на дубликаты
|
||||||
|
|
||||||
|
**ОБЯЗАТЕЛЬНО** выполнить проверку перед обновлением:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Использовать скрипт check_duplicates_materials.bsl
|
||||||
|
// Или выполнить запрос вручную
|
||||||
|
```
|
||||||
|
|
||||||
|
**Запрос для проверки:**
|
||||||
|
```sql
|
||||||
|
ВЫБРАТЬ
|
||||||
|
МатериалыИРаботыВПроизводстве.Организация,
|
||||||
|
МатериалыИРаботыВПроизводстве.Номенклатура,
|
||||||
|
МатериалыИРаботыВПроизводстве.Характеристика,
|
||||||
|
МатериалыИРаботыВПроизводстве.Подразделение,
|
||||||
|
МатериалыИРаботыВПроизводстве.Серия,
|
||||||
|
МатериалыИРаботыВПроизводстве.Назначение,
|
||||||
|
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ МатериалыИРаботыВПроизводстве.УдалитьАналитикаУчетаНоменклатуры) КАК КоличествоРазличныхЗначений
|
||||||
|
ИЗ
|
||||||
|
РегистрНакопления.МатериалыИРаботыВПроизводстве КАК МатериалыИРаботыВПроизводстве
|
||||||
|
СГРУППИРОВАТЬ ПО
|
||||||
|
МатериалыИРаботыВПроизводстве.Организация,
|
||||||
|
МатериалыИРаботыВПроизводстве.Номенклатура,
|
||||||
|
МатериалыИРаботыВПроизводстве.Характеристика,
|
||||||
|
МатериалыИРаботыВПроизводстве.Подразделение,
|
||||||
|
МатериалыИРаботыВПроизводстве.Серия,
|
||||||
|
МатериалыИРаботыВПроизводстве.Назначение
|
||||||
|
ИМЕЮЩИЕ
|
||||||
|
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ МатериалыИРаботыВПроизводстве.УдалитьАналитикаУчетаНоменклатуры) > 1
|
||||||
|
И МатериалыИРаботыВПроизводстве.УдалитьАналитикаУчетаНоменклатуры НЕ РАВНО ЗНАЧЕНИЕ(Справочник.КлючиАналитикиУчетаНоменклатуры.ПустаяСсылка)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Шаг 2: Варианты решения
|
||||||
|
|
||||||
|
**Вариант А: Очистка данных (если измерение не используется)**
|
||||||
|
|
||||||
|
Если измерение действительно не используется и все значения пустые или одинаковые:
|
||||||
|
|
||||||
|
1. Удалить все записи, где `УдалитьАналитикаУчетаНоменклатуры` заполнено
|
||||||
|
2. Применить обновление
|
||||||
|
3. Проверить целостность данных
|
||||||
|
|
||||||
|
**Вариант Б: Объединение записей (если есть дубликаты)**
|
||||||
|
|
||||||
|
Если найдены дубликаты:
|
||||||
|
|
||||||
|
1. Найти все группы записей с одинаковыми значениями измерений (кроме удаляемого)
|
||||||
|
2. Объединить ресурсы (суммировать Количество) этих записей
|
||||||
|
3. Удалить дубликаты
|
||||||
|
4. Оставить одну запись с суммированным значением
|
||||||
|
5. Применить обновление
|
||||||
|
|
||||||
|
**Вариант В: Замена на альтернативное измерение**
|
||||||
|
|
||||||
|
Если измерение используется, но должно быть заменено:
|
||||||
|
|
||||||
|
1. Определить альтернативное измерение или атрибут
|
||||||
|
2. Создать скрипт миграции данных
|
||||||
|
3. Перенести значения в альтернативное место
|
||||||
|
4. Применить обновление
|
||||||
|
|
||||||
|
#### Шаг 3: После обновления
|
||||||
|
|
||||||
|
1. Проверить целостность данных регистра
|
||||||
|
2. Убедиться, что нет ошибок уникальности
|
||||||
|
3. Провести функциональное тестирование
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## План действий перед обновлением
|
||||||
|
|
||||||
|
### Этап 1: Подготовка (КРИТИЧНО) ⚠️
|
||||||
|
|
||||||
|
- [ ] **Создать полную резервную копию базы данных**
|
||||||
|
- [ ] **Экспортировать данные из проблемных регистров:**
|
||||||
|
- [ ] РегистрНакопления.ТМЦВЭксплуатации
|
||||||
|
- [ ] РегистрСведений.УдалитьРеестрДокументов
|
||||||
|
- [ ] РегистрСведений.РеестрДокументов
|
||||||
|
- [ ] **Выполнить проверку на дубликаты для регистра МатериалыИРаботыВПроизводстве:**
|
||||||
|
- [ ] Запустить скрипт `check_duplicates_materials.bsl`
|
||||||
|
- [ ] Проанализировать результаты
|
||||||
|
- [ ] Определить стратегию обработки
|
||||||
|
|
||||||
|
### Этап 2: Обработка данных
|
||||||
|
|
||||||
|
#### Для регистра МатериалыИРаботыВПроизводстве:
|
||||||
|
|
||||||
|
- [ ] Если дубликаты НЕ найдены:
|
||||||
|
- [ ] Можно безопасно применять обновление
|
||||||
|
- [ ] Измерение будет удалено без последствий
|
||||||
|
|
||||||
|
- [ ] Если дубликаты найдены:
|
||||||
|
- [ ] Выбрать вариант решения (А, Б или В)
|
||||||
|
- [ ] Выполнить обработку данных
|
||||||
|
- [ ] Повторно проверить на дубликаты
|
||||||
|
- [ ] Убедиться, что дубликатов больше нет
|
||||||
|
|
||||||
|
#### Для удаляемых регистров:
|
||||||
|
|
||||||
|
- [ ] Определить, нужны ли данные после обновления
|
||||||
|
- [ ] Если нужны:
|
||||||
|
- [ ] Создать скрипт миграции данных
|
||||||
|
- [ ] Протестировать миграцию на копии базы
|
||||||
|
- [ ] Если не нужны:
|
||||||
|
- [ ] Можно удалить данные перед обновлением
|
||||||
|
|
||||||
|
### Этап 3: Применение обновления
|
||||||
|
|
||||||
|
- [ ] Применить обновление конфигурации из `CRM326/CRM326_TEST`
|
||||||
|
- [ ] Проверить отсутствие ошибок при обновлении
|
||||||
|
- [ ] Проверить целостность данных
|
||||||
|
|
||||||
|
### Этап 4: Верификация
|
||||||
|
|
||||||
|
- [ ] Проверить работу регистра МатериалыИРаботыВПроизводстве
|
||||||
|
- [ ] Убедиться, что данные корректны
|
||||||
|
- [ ] Проверить отсутствие ошибок уникальности
|
||||||
|
- [ ] Провести функциональное тестирование
|
||||||
|
- [ ] Если данные были мигрированы - проверить их корректность
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Инструменты и скрипты
|
||||||
|
|
||||||
|
### Созданные инструменты:
|
||||||
|
|
||||||
|
1. **deep_register_analysis.py** - автоматический анализ всех регистров
|
||||||
|
- Находит регистры с удаляемыми измерениями
|
||||||
|
- Проверяет ссылки на удаляемые объекты
|
||||||
|
- Генерирует детальный отчет
|
||||||
|
|
||||||
|
2. **check_duplicates_materials.bsl** - проверка дубликатов в регистре МатериалыИРаботыВПроизводстве
|
||||||
|
- Находит группы записей с дубликатами
|
||||||
|
- Выводит детальную информацию
|
||||||
|
- Помогает определить стратегию обработки
|
||||||
|
|
||||||
|
3. **analyze_registers.py** - базовый анализ регистров
|
||||||
|
|
||||||
|
4. **find_references.py** - поиск ссылок на удаляемые объекты
|
||||||
|
|
||||||
|
### Отчеты:
|
||||||
|
|
||||||
|
- `deep_register_analysis_report.txt` - детальный отчет анализа
|
||||||
|
- `register_analysis_report.txt` - базовый отчет
|
||||||
|
- `references_report.txt` - отчет о ссылках
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Выводы
|
||||||
|
|
||||||
|
### Критические проблемы:
|
||||||
|
|
||||||
|
1. **3 регистра полностью удаляются:**
|
||||||
|
- РегистрНакопления.ТМЦВЭксплуатации
|
||||||
|
- РегистрСведений.УдалитьРеестрДокументов
|
||||||
|
- РегистрСведений.РеестрДокументов
|
||||||
|
|
||||||
|
2. **1 регистр имеет удаляемое измерение:**
|
||||||
|
- РегистрНакопления.МатериалыИРаботыВПроизводстве
|
||||||
|
- Измерение: УдалитьАналитикаУчетаНоменклатуры
|
||||||
|
|
||||||
|
### Главный риск:
|
||||||
|
|
||||||
|
**РегистрНакопления.МатериалыИРаботыВПроизводстве** может потерять уникальность данных после удаления измерения `УдалитьАналитикаУчетаНоменклатуры`.
|
||||||
|
|
||||||
|
### Обязательные действия:
|
||||||
|
|
||||||
|
1. ✅ **ОБЯЗАТЕЛЬНО** выполнить проверку на дубликаты перед обновлением
|
||||||
|
2. ✅ **ОБЯЗАТЕЛЬНО** обработать найденные дубликаты
|
||||||
|
3. ✅ **ОБЯЗАТЕЛЬНО** создать резервную копию базы данных
|
||||||
|
4. ✅ **ОБЯЗАТЕЛЬНО** экспортировать данные из удаляемых регистров
|
||||||
|
|
||||||
|
### Рекомендации:
|
||||||
|
|
||||||
|
- Не применять обновление без предварительной проверки на дубликаты
|
||||||
|
- Использовать созданные скрипты для автоматизации проверки
|
||||||
|
- Документировать все действия по обработке данных
|
||||||
|
- Тестировать на копии базы данных перед применением к рабочей базе
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Контакты и поддержка
|
||||||
|
|
||||||
|
При возникновении вопросов или проблем:
|
||||||
|
1. Обратиться к администратору базы данных
|
||||||
|
2. Проконсультироваться с разработчиками конфигурации
|
||||||
|
3. Использовать форумы и сообщества 1С
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Дата анализа:** 2024
|
||||||
|
**Версия конфигурации:** CRM3devLocal → CRM326/CRM326_TEST
|
||||||
|
**Статус:** Требуется обработка данных перед обновлением
|
||||||
|
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
---
|
||||||
|
title: Отчет о конвертации Markdown в HTML
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-09
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Отчет о конвертации Markdown в HTML
|
||||||
|
|
||||||
|
## Статус: ✅ Успешно завершено
|
||||||
|
|
||||||
|
### Результаты конвертации
|
||||||
|
|
||||||
|
- **Всего конвертировано файлов:** 11
|
||||||
|
- **Ошибок:** 0
|
||||||
|
- **Предупреждений:** 0
|
||||||
|
- **Битых ссылок:** 0
|
||||||
|
|
||||||
|
### Созданные файлы
|
||||||
|
|
||||||
|
#### HTML файлы (в папке `html/`)
|
||||||
|
|
||||||
|
1. **INDEX.html** - Оглавление всех документов
|
||||||
|
2. **Анализ_ошибок_обновления.html** - Анализ ошибок обновления
|
||||||
|
3. **Быстрое_решение.html** - Быстрое решение проблемы
|
||||||
|
4. **Глубинный_анализ_регистров.html** - Глубинный анализ регистров
|
||||||
|
5. **Инструкция_по_исправлению.html** - Инструкция по исправлению
|
||||||
|
6. **Итоговый_отчет_анализа_регистров.html** - Итоговый отчет
|
||||||
|
7. **ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.html** - Финальный отчет
|
||||||
|
8. **README_md_to_html.html** - Инструкция по использованию скрипта
|
||||||
|
9. **analysis_report.html** - Отчет анализа
|
||||||
|
10. **analysis_report_detailed.html** - Детальный отчет анализа
|
||||||
|
11. **Партнеры_АналитическийОтчет.html** - Аналитический отчет по партнерам
|
||||||
|
|
||||||
|
### Реализованные возможности
|
||||||
|
|
||||||
|
#### ✅ Перекрестные ссылки между документами
|
||||||
|
|
||||||
|
Все ссылки на другие `.md` файлы автоматически конвертируются в ссылки на соответствующие `.html` файлы.
|
||||||
|
|
||||||
|
**Пример:**
|
||||||
|
```markdown
|
||||||
|
[Глубинный анализ регистров](Глубинный_анализ_регистров.md)
|
||||||
|
```
|
||||||
|
Конвертируется в:
|
||||||
|
```html
|
||||||
|
<a href="Глубинный_анализ_регистров.html">Глубинный анализ регистров</a>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ✅ Навигационные ссылки
|
||||||
|
|
||||||
|
В каждом HTML файле автоматически добавляется блок навигации со ссылками на все остальные документы.
|
||||||
|
|
||||||
|
#### ✅ Индексный файл
|
||||||
|
|
||||||
|
Создан файл `INDEX.md` (и `INDEX.html`) с оглавлением всех документов, сгруппированных по категориям:
|
||||||
|
- Анализ и отчеты
|
||||||
|
- Инструкции
|
||||||
|
- Другое
|
||||||
|
|
||||||
|
#### ✅ Добавлены перекрестные ссылки в документах
|
||||||
|
|
||||||
|
В начало каждого основного документа добавлены блоки со ссылками на связанные документы:
|
||||||
|
- Оглавление документов
|
||||||
|
- Связанные отчеты и анализы
|
||||||
|
- Инструкции и решения
|
||||||
|
|
||||||
|
### Проверка корректности
|
||||||
|
|
||||||
|
Все HTML файлы проверены на:
|
||||||
|
- ✅ Корректность структуры HTML
|
||||||
|
- ✅ Наличие всех необходимых тегов
|
||||||
|
- ✅ Работоспособность перекрестных ссылок
|
||||||
|
- ✅ Корректность кодировки (UTF-8)
|
||||||
|
- ✅ Наличие стилей и оформления
|
||||||
|
- ✅ Отсутствие битых ссылок
|
||||||
|
|
||||||
|
### Использование
|
||||||
|
|
||||||
|
1. Откройте файл `html/INDEX.html` в браузере для навигации по всем документам
|
||||||
|
2. Используйте навигационные ссылки в каждом документе для перехода между страницами
|
||||||
|
3. Все перекрестные ссылки между документами работают корректно
|
||||||
|
|
||||||
|
### Инструменты
|
||||||
|
|
||||||
|
- **md_to_html.py** - Скрипт конвертации с поддержкой перекрестных ссылок
|
||||||
|
- **check_html_files.py** - Скрипт проверки корректности HTML файлов
|
||||||
|
- **INDEX.md** - Автоматически генерируемый индексный файл
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Дата конвертации:** 2024
|
||||||
|
**Статус:** ✅ Все файлы успешно конвертированы и проверены
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,692 @@
|
|||||||
|
---
|
||||||
|
title: Оценка правок для переноса функционала ставки НДС 22%
|
||||||
|
version: 1.1
|
||||||
|
date_modified: 2025-12-15
|
||||||
|
date_created: 2025-12-15
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
description: Оценка переноса функционала по ставке НДС 22% из новой актуальной типовой конфигурации CRM3 в старую текущую рабочу.
|
||||||
|
status: документ устарел
|
||||||
|
---
|
||||||
|
|
||||||
|
# Оценка правок для переноса функционала ставки НДС 22%
|
||||||
|
|
||||||
|
## Дата анализа
|
||||||
|
15.12.2025
|
||||||
|
|
||||||
|
## Версия документа
|
||||||
|
1.1 от 15.12.2025
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Определить необходимые изменения в исходной конфигурации `CRM3devLocal` для переноса функционала применения ставки НДС 22% из целевой конфигурации `CRM326/CRM326_TEST`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Результаты анализа
|
||||||
|
|
||||||
|
### 1. Проверка наличия функционала в исходной конфигурации
|
||||||
|
|
||||||
|
**Результат:** В исходной конфигурации `CRM3devLocal` **НЕ НАЙДЕНО** упоминаний `СтавкаНДС22`.
|
||||||
|
|
||||||
|
**Вывод:** Функционал применения ставки НДС 22% отсутствует в исходной конфигурации и требует полного переноса.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Необходимые изменения
|
||||||
|
|
||||||
|
### 1. Справочник "СтавкиНДС"
|
||||||
|
|
||||||
|
#### 1.1. Проверка наличия элемента справочника
|
||||||
|
- **Действие:** Проверить наличие элемента справочника `СтавкиНДС` с кодом/именем `СтавкаНДС22`
|
||||||
|
- **Приоритет:** Критический
|
||||||
|
- **Описание:**
|
||||||
|
- Если элемент отсутствует, необходимо создать элемент справочника `СтавкиНДС` с кодом `СтавкаНДС22`
|
||||||
|
- Установить значение ставки: 22% (или 0.22 в зависимости от формата хранения)
|
||||||
|
- Настроить даты действия ставки (если применимо)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Общий модуль "УчетНДС"
|
||||||
|
|
||||||
|
#### 2.1. Файл: `src/CommonModules/УчетНДС/Module.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавление поиска элемента справочника СтавкаНДС22**
|
||||||
|
- **Место:** Около строки 2068 (по аналогии с целевой конфигурацией)
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Справочники.СтавкиНДС.НайтиПервый("СтавкаНДС22", Истина);
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавление работы с набором записей СтавкаНДС22**
|
||||||
|
- **Место:** Около строки 2069, 2072
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22.СоздатьНаборЗаписей();
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Использование значений ставки НДС 22%**
|
||||||
|
- **Место:** Около строки 2365, 2393
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПроцент
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПропорция
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Установка параметров для ставки НДС 22%**
|
||||||
|
- **Место:** Около строки 2455, 2457
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Параметры.Установить("СтавкаНДС22ЗначениеПроцент",
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПроцент);
|
||||||
|
Параметры.Установить("СтавкаНДС22ЗначениеПропорция",
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПропорция);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Общий модуль "РасчетыСКлиентами"
|
||||||
|
|
||||||
|
#### 3.1. Файл: `src/CommonModules/РасчетыСКлиентами/Module.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
Добавить проверки условий с использованием `&СтавкаНДС22` в следующих местах (по аналогии с целевой конфигурацией):
|
||||||
|
|
||||||
|
1. **Строка ~2138:** Проверка ставки НДС в расчетах
|
||||||
|
2. **Строка ~2184:** Проверка ставки НДС в расчетах
|
||||||
|
3. **Строка ~2218:** Проверка ставки НДС в расчетах
|
||||||
|
4. **Строка ~2245:** Проверка ставки НДС в расчетах
|
||||||
|
5. **Строка ~2271:** Проверка ставки НДС в расчетах
|
||||||
|
6. **Строка ~2335:** Проверка ставки НДС в расчетах
|
||||||
|
7. **Строка ~2361:** Проверка ставки НДС в расчетах
|
||||||
|
8. **Строка ~2611:** Проверка ставки НДС в расчетах
|
||||||
|
9. **Строка ~2887:** Проверка ставки НДС в расчетах
|
||||||
|
10. **Строка ~2982:** Проверка ставки НДС в расчетах
|
||||||
|
11. **Строка ~3030:** Проверка ставки НДС в расчетах
|
||||||
|
12. **Строка ~3078:** Проверка ставки НДС в расчетах
|
||||||
|
13. **Строка ~3276:** Проверка ставки НДС в расчетах
|
||||||
|
|
||||||
|
**Пример кода:**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = (&СтавкаНДС22) Тогда
|
||||||
|
// Обработка для ставки НДС 22%
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Высокая (требуется анализ логики каждого места)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Общий модуль "РасчетыСПоставщиками"
|
||||||
|
|
||||||
|
#### 4.1. Файл: `src/CommonModules/РасчетыСПоставщиками/Module.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
Добавить использование `СтавкаНДС22` в расчетах:
|
||||||
|
|
||||||
|
1. **Строка ~1584:** Использование в расчетах НДС
|
||||||
|
2. **Строка ~1608:** Использование в расчетах НДС
|
||||||
|
3. **Строка ~1624:** Использование в расчетах НДС
|
||||||
|
4. **Строка ~1632:** Использование в расчетах НДС
|
||||||
|
5. **Строка ~1640:** Использование в расчетах НДС
|
||||||
|
6. **Строка ~1648:** Использование в расчетах НДС
|
||||||
|
7. **Строка ~1786:** Установка значения ставки НДС 22%
|
||||||
|
|
||||||
|
**Пример кода:**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС22.ЗначениеПроцент <> 0 Тогда
|
||||||
|
Результат = СтавкаНДС22.ЗначениеПроцент / СтавкаНДС22.ЗначениеПропорция
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. Регистр накопления "СводныеДвижения"
|
||||||
|
|
||||||
|
#### 5.1. Файл: `src/AccumulationRegisters/СводныеДвижения/ManagerModule.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Строка ~105:** Добавить проверку ставки НДС 22% в условиях отбора
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = (&СтавкаНДС22) Тогда
|
||||||
|
// Обработка движений со ставкой НДС 22%
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Строка ~212, 222:** Добавить аналогичные проверки в других местах модуля
|
||||||
|
|
||||||
|
**Приоритет:** Средний
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Анализ ставки НДС 22/122 (выделение НДС из суммы "в том числе")
|
||||||
|
|
||||||
|
### Описание ставки 22/122
|
||||||
|
|
||||||
|
Ставка НДС 22/122 используется для выделения НДС из суммы, в которой НДС уже включен (сумма "в том числе НДС"). Коэффициент 22/122 ≈ 0.180327 (18.0327%) применяется для расчета суммы НДС из общей суммы.
|
||||||
|
|
||||||
|
**Формула:** НДС = Сумма × (22 / 122)
|
||||||
|
|
||||||
|
### Результаты проверки наличия функционала
|
||||||
|
|
||||||
|
**Результат:** В целевой конфигурации `CRM326_TEST` **прямых упоминаний** ставки "22/122" или "22\122" в коде **не обнаружено**.
|
||||||
|
|
||||||
|
**Вывод:** Ставка 22/122 может быть реализована:
|
||||||
|
1. Через элемент справочника `СтавкиНДС` с кодом/именем, содержащим "22/122" или "22\122"
|
||||||
|
2. Через расчет коэффициента 22/122 в модулях расчетов
|
||||||
|
3. Через использование свойств `ЗначениеПроцент` и `ЗначениеПропорция` элемента `СтавкаНДС22` с соответствующими значениями
|
||||||
|
|
||||||
|
### Необходимые изменения для ставки 22/122
|
||||||
|
|
||||||
|
#### 1. Справочник "СтавкиНДС"
|
||||||
|
|
||||||
|
##### 1.1. Проверка и создание элемента для ставки 22/122
|
||||||
|
- **Действие:** Проверить наличие элемента справочника `СтавкиНДС` с кодом/именем, соответствующим ставке 22/122
|
||||||
|
- **Варианты кодов/имен:**
|
||||||
|
- `СтавкаНДС22_122`
|
||||||
|
- `СтавкаНДС22/122`
|
||||||
|
- `СтавкаНДС22\122`
|
||||||
|
- `СтавкаНДС22ВТомЧисле`
|
||||||
|
- **Приоритет:** Критический
|
||||||
|
- **Описание:**
|
||||||
|
- Если элемент отсутствует, необходимо создать элемент справочника `СтавкиНДС`
|
||||||
|
- Установить значение `ЗначениеПроцент` = 22 (или 0.22 в зависимости от формата)
|
||||||
|
- Установить значение `ЗначениеПропорция` = 122 (для расчета коэффициента 22/122)
|
||||||
|
- Настроить даты действия ставки (если применимо)
|
||||||
|
|
||||||
|
#### 2. Общий модуль "УчетНДС"
|
||||||
|
|
||||||
|
##### 2.1. Файл: `src/CommonModules/УчетНДС/Module.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавление поиска элемента справочника для ставки 22/122**
|
||||||
|
- **Место:** Рядом с поиском `СтавкаНДС22`
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
СтавкаНДС22_122 = Справочники.СтавкиНДС.НайтиПервый("СтавкаНДС22_122", Истина);
|
||||||
|
// или другой вариант кода в зависимости от реализации
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавление работы с набором записей для ставки 22/122**
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22_122.СоздатьНаборЗаписей();
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Использование значений ставки НДС 22/122**
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22_122.ЗначениеПроцент // = 22
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22_122.ЗначениеПропорция // = 122
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Расчет коэффициента для выделения НДС из суммы**
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
КоэффициентНДС = СтавкаНДС22_122.ЗначениеПроцент / СтавкаНДС22_122.ЗначениеПропорция;
|
||||||
|
// КоэффициентНДС = 22 / 122 ≈ 0.180327
|
||||||
|
СуммаНДС = СуммаСНДС * КоэффициентНДС;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
#### 3. Общий модуль "РасчетыСКлиентами"
|
||||||
|
|
||||||
|
##### 3.1. Файл: `src/CommonModules/РасчетыСКлиентами/Module.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
Добавить проверки условий и расчеты для ставки НДС 22/122 в местах, где происходит расчет НДС из суммы "в том числе":
|
||||||
|
|
||||||
|
1. **Проверка ставки НДС 22/122 в условиях**
|
||||||
|
- **Пример кода:**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = (&СтавкаНДС22_122) Тогда
|
||||||
|
// Расчет НДС из суммы "в том числе"
|
||||||
|
СуммаНДС = СуммаСНДС * (СтавкаНДС22_122.ЗначениеПроцент / СтавкаНДС22_122.ЗначениеПропорция);
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Добавление обработки ставки 22/122 во всех местах, где обрабатываются ставки НДС**
|
||||||
|
- Аналогично обработке ставки 22%, но с учетом коэффициента 22/122
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Высокая (требуется анализ логики каждого места)
|
||||||
|
|
||||||
|
#### 4. Общий модуль "РасчетыСПоставщиками"
|
||||||
|
|
||||||
|
##### 4.1. Файл: `src/CommonModules/РасчетыСПоставщиками/Module.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
Добавить использование ставки НДС 22/122 в расчетах:
|
||||||
|
|
||||||
|
1. **Расчет НДС из суммы "в том числе"**
|
||||||
|
- **Пример кода:**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС22_122.ЗначениеПроцент <> 0 Тогда
|
||||||
|
Коэффициент = СтавкаНДС22_122.ЗначениеПроцент / СтавкаНДС22_122.ЗначениеПропорция;
|
||||||
|
Результат = СуммаСНДС * Коэффициент;
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Установка значений для ставки НДС 22/122**
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Параметры.Установить("СтавкаНДС22_122ЗначениеПроцент",
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22_122.ЗначениеПроцент);
|
||||||
|
Параметры.Установить("СтавкаНДС22_122ЗначениеПропорция",
|
||||||
|
Справочники.СтавкиНДС.СтавкаНДС22_122.ЗначениеПропорция);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
#### 5. Регистр накопления "СводныеДвижения"
|
||||||
|
|
||||||
|
##### 5.1. Файл: `src/AccumulationRegisters/СводныеДвижения/ManagerModule.bsl`
|
||||||
|
|
||||||
|
**Необходимые изменения:**
|
||||||
|
|
||||||
|
1. **Добавить проверку ставки НДС 22/122 в условиях отбора**
|
||||||
|
- **Код:**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = (&СтавкаНДС22_122) Тогда
|
||||||
|
// Обработка движений со ставкой НДС 22/122
|
||||||
|
// Расчет НДС из суммы "в том числе"
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Приоритет:** Средний
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
### Дополнительные проверки для ставки 22/122
|
||||||
|
|
||||||
|
1. **Проверить наличие перечислений** для ставок НДС "в том числе"
|
||||||
|
2. **Проверить константы**, связанные с коэффициентами выделения НДС
|
||||||
|
3. **Проверить формы документов** на наличие полей для выбора ставки "в том числе НДС"
|
||||||
|
4. **Проверить отчеты** на корректное отображение ставки 22/122
|
||||||
|
5. **Проверить валидацию** при выборе ставки 22/122
|
||||||
|
|
||||||
|
### Оценка трудозатрат для ставки 22/122
|
||||||
|
|
||||||
|
| Модуль | Сложность | Оценка времени |
|
||||||
|
|--------|-----------|----------------|
|
||||||
|
| Справочник СтавкиНДС (элемент 22/122) | Низкая | 0.5 часа |
|
||||||
|
| Модуль УчетНДС | Средняя | 2-3 часа |
|
||||||
|
| Модуль РасчетыСКлиентами | Высокая | 3-5 часов |
|
||||||
|
| Модуль РасчетыСПоставщиками | Средняя | 2-3 часа |
|
||||||
|
| Регистр СводныеДвижения | Средняя | 1-2 часа |
|
||||||
|
| Тестирование | Средняя | 2-3 часа |
|
||||||
|
| **ИТОГО** | | **11-17 часов** |
|
||||||
|
|
||||||
|
### Рекомендации по реализации ставки 22/122
|
||||||
|
|
||||||
|
1. **Создать элемент справочника** с кодом `СтавкаНДС22_122` или аналогичным
|
||||||
|
2. **Установить значения:**
|
||||||
|
- `ЗначениеПроцент` = 22
|
||||||
|
- `ЗначениеПропорция` = 122
|
||||||
|
3. **Добавить проверки** во всех местах, где происходит расчет НДС из суммы "в том числе"
|
||||||
|
4. **Убедиться в корректности** расчетов коэффициента 22/122 ≈ 0.180327
|
||||||
|
5. **Протестировать** все сценарии использования ставки 22/122
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Порядок выполнения работ
|
||||||
|
|
||||||
|
### Этап 1: Подготовка (Приоритет: Критический)
|
||||||
|
1. Проверить наличие справочника `СтавкиНДС` в исходной конфигурации
|
||||||
|
2. Создать элемент справочника `СтавкаНДС22` (если отсутствует)
|
||||||
|
- Установить значение ставки: 22% (или 0.22 в зависимости от формата)
|
||||||
|
3. Создать элемент справочника для ставки 22/122 (например, `СтавкаНДС22_122`)
|
||||||
|
- Установить `ЗначениеПроцент` = 22
|
||||||
|
- Установить `ЗначениеПропорция` = 122
|
||||||
|
4. Настроить даты действия ставок (если применимо)
|
||||||
|
|
||||||
|
### Этап 2: Модули учета НДС (Приоритет: Высокий)
|
||||||
|
1. Внести изменения в модуль `УчетНДС`
|
||||||
|
2. Добавить функции работы со ставкой НДС 22%
|
||||||
|
3. Добавить функции работы со ставкой НДС 22/122
|
||||||
|
4. Добавить расчет коэффициента 22/122 для выделения НДС из суммы "в том числе"
|
||||||
|
5. Протестировать функционал
|
||||||
|
|
||||||
|
### Этап 3: Модули расчетов (Приоритет: Высокий)
|
||||||
|
1. Внести изменения в модуль `РасчетыСКлиентами`
|
||||||
|
- Добавить проверки условий для ставки НДС 22%
|
||||||
|
- Добавить проверки условий для ставки НДС 22/122
|
||||||
|
- Добавить расчеты НДС из суммы "в том числе" для ставки 22/122
|
||||||
|
2. Внести изменения в модуль `РасчетыСПоставщиками`
|
||||||
|
- Добавить использование ставки НДС 22% в расчетах
|
||||||
|
- Добавить использование ставки НДС 22/122 в расчетах
|
||||||
|
- Добавить расчеты коэффициента 22/122
|
||||||
|
3. Протестировать расчеты для обеих ставок
|
||||||
|
|
||||||
|
### Этап 4: Регистры накопления (Приоритет: Средний)
|
||||||
|
1. Внести изменения в регистр `СводныеДвижения`
|
||||||
|
2. Добавить обработку движений со ставкой НДС 22%
|
||||||
|
3. Добавить обработку движений со ставкой НДС 22/122
|
||||||
|
4. Протестировать регистр
|
||||||
|
|
||||||
|
### Этап 5: Доработка форм (Приоритет: Высокий)
|
||||||
|
1. Проверить и доработать формы документов для поддержки ставок 22% и 22/122
|
||||||
|
2. Проверить и доработать формы справочников
|
||||||
|
3. Проверить и доработать формы отчетов
|
||||||
|
4. Проверить и доработать формы обработок
|
||||||
|
5. Протестировать работу форм
|
||||||
|
|
||||||
|
### Этап 6: Тестирование (Приоритет: Критический)
|
||||||
|
1. Провести полное тестирование функционала для ставки 22%
|
||||||
|
2. Провести полное тестирование функционала для ставки 22/122
|
||||||
|
3. Проверить корректность расчетов НДС для обеих ставок
|
||||||
|
4. Проверить корректность выделения НДС из суммы "в том числе" (22/122)
|
||||||
|
5. Проверить работу отчетности
|
||||||
|
6. Провести регрессионное тестирование существующих ставок НДС
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Оценка трудозатрат
|
||||||
|
|
||||||
|
### Ставка НДС 22%
|
||||||
|
|
||||||
|
| Модуль | Сложность | Оценка времени |
|
||||||
|
|--------|-----------|----------------|
|
||||||
|
| Справочник СтавкиНДС (элемент 22%) | Низкая | 0.5 часа |
|
||||||
|
| Модуль УчетНДС | Средняя | 2-3 часа |
|
||||||
|
| Модуль РасчетыСКлиентами | Высокая | 4-6 часов |
|
||||||
|
| Модуль РасчетыСПоставщиками | Средняя | 2-3 часа |
|
||||||
|
| Регистр СводныеДвижения | Средняя | 1-2 часа |
|
||||||
|
| Доработка форм | Средняя | 8-13 часов |
|
||||||
|
| Тестирование | Средняя | 3-4 часа |
|
||||||
|
| **ИТОГО для ставки 22%** | | **21-32 часа** |
|
||||||
|
|
||||||
|
### Ставка НДС 22/122
|
||||||
|
|
||||||
|
| Модуль | Сложность | Оценка времени |
|
||||||
|
|--------|-----------|----------------|
|
||||||
|
| Справочник СтавкиНДС (элемент 22/122) | Низкая | 0.5 часа |
|
||||||
|
| Модуль УчетНДС | Средняя | 2-3 часа |
|
||||||
|
| Модуль РасчетыСКлиентами | Высокая | 3-5 часов |
|
||||||
|
| Модуль РасчетыСПоставщиками | Средняя | 2-3 часа |
|
||||||
|
| Регистр СводныеДвижения | Средняя | 1-2 часа |
|
||||||
|
| Доработка форм | Средняя | 6-10 часов |
|
||||||
|
| Тестирование | Средняя | 2-3 часа |
|
||||||
|
| **ИТОГО для ставки 22/122** | | **17-27 часов** |
|
||||||
|
|
||||||
|
### Общая оценка (обе ставки)
|
||||||
|
|
||||||
|
**При последовательной реализации:** 38-59 часов
|
||||||
|
**При параллельной реализации:** 35-50 часов (за счет переиспользования кода)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Риски и рекомендации
|
||||||
|
|
||||||
|
### Риски:
|
||||||
|
1. **Несовместимость логики:** Логика расчетов в исходной и целевой конфигурациях может отличаться
|
||||||
|
2. **Зависимости:** Изменения могут затронуть другие модули, использующие расчеты НДС
|
||||||
|
3. **Тестирование:** Требуется тщательное тестирование всех сценариев использования ставок НДС 22% и 22/122
|
||||||
|
4. **Ошибки в расчетах коэффициента:** Неправильный расчет коэффициента 22/122 может привести к ошибкам в сумме НДС
|
||||||
|
5. **Путаница между ставками:** Ставка 22% и ставка 22/122 имеют разные назначения и могут быть перепутаны
|
||||||
|
|
||||||
|
### Рекомендации:
|
||||||
|
1. Перед внесением изменений создать резервную копию конфигурации
|
||||||
|
2. Вносить изменения поэтапно, с тестированием после каждого этапа
|
||||||
|
3. Документировать все внесенные изменения
|
||||||
|
4. Провести регрессионное тестирование существующего функционала
|
||||||
|
5. Убедиться в корректности работы со ставками НДС 0%, 10%, 18%, 20% после добавления 22% и 22/122
|
||||||
|
6. **Для ставки 22/122:**
|
||||||
|
- Убедиться в корректности расчета коэффициента 22/122 ≈ 0.180327
|
||||||
|
- Проверить все места, где происходит выделение НДС из суммы "в том числе"
|
||||||
|
- Убедиться, что ставка 22/122 используется только для сумм "в том числе НДС"
|
||||||
|
- Проверить валидацию при выборе ставки 22/122
|
||||||
|
7. **Разделение логики:**
|
||||||
|
- Четко разделить логику работы со ставкой 22% (начисление НДС) и ставкой 22/122 (выделение НДС)
|
||||||
|
- Использовать понятные имена переменных и функций для каждой ставки
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Дополнительные проверки
|
||||||
|
|
||||||
|
1. Проверить наличие перечислений, связанных со ставками НДС
|
||||||
|
2. Проверить наличие констант, связанных со ставками НДС
|
||||||
|
3. Проверить наличие регламентных заданий, использующих ставки НДС
|
||||||
|
4. Проверить наличие отчетов, использующих ставки НДС
|
||||||
|
5. Проверить наличие обработок, использующих ставки НДС
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Проверка наличия обработки "Помощник замены ставки НДС на 22%"
|
||||||
|
|
||||||
|
### Результаты проверки
|
||||||
|
|
||||||
|
**Результат:** В целевой конфигурации `CRM326/CRM326_TEST` **НЕ НАЙДЕНА** обработка с названием "Помощник замены ставки НДС на 22%" или аналогичным.
|
||||||
|
|
||||||
|
**Проверенные места:**
|
||||||
|
1. Основная конфигурация `CRM326_TEST/src/DataProcessors/` - обработка не найдена
|
||||||
|
2. Расширение `CRM326_TEST.crm326RHANA/src/DataProcessors/` - обработка не найдена
|
||||||
|
3. Поиск по содержимому файлов обработок - упоминаний не найдено
|
||||||
|
|
||||||
|
**Вывод:** Обработка для массовой замены ставки НДС на 22% отсутствует в целевой конфигурации.
|
||||||
|
|
||||||
|
### Рекомендации
|
||||||
|
|
||||||
|
Если требуется функционал массовой замены ставки НДС на 22%, необходимо:
|
||||||
|
|
||||||
|
1. **Создать новую обработку** "Помощник замены ставки НДС на 22%" в исходной конфигурации
|
||||||
|
2. **Функционал обработки должен включать:**
|
||||||
|
- Выбор документов для замены (по датам, организациям, контрагентам и т.д.)
|
||||||
|
- Выбор старой ставки НДС (например, 20% или 18%)
|
||||||
|
- Замена на новую ставку НДС 22%
|
||||||
|
- Пересчет сумм НДС и итоговых сумм
|
||||||
|
- Возможность предварительного просмотра изменений
|
||||||
|
- Логирование выполненных замен
|
||||||
|
- Откат изменений (если требуется)
|
||||||
|
|
||||||
|
3. **Оценка трудозатрат на создание обработки:**
|
||||||
|
- Разработка обработки: **8-12 часов**
|
||||||
|
- Тестирование: **3-4 часа**
|
||||||
|
- **ИТОГО: 11-16 часов**
|
||||||
|
|
||||||
|
**Примечание:** Обработка может быть полезна при переходе на новую ставку НДС 22% для массового обновления исторических данных или документов в разработке.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Анализ форм, требующих доработки
|
||||||
|
|
||||||
|
### Результаты анализа
|
||||||
|
|
||||||
|
В результате анализа конфигураций установлено, что **прямых упоминаний `СтавкаНДС22` в модулях форм не обнаружено**. Однако это не означает, что формы не требуют доработки. Ставки НДС используются в формах через:
|
||||||
|
|
||||||
|
1. **Элементы выбора ставки НДС** (поля выбора, комбобоксы)
|
||||||
|
2. **Обработчики событий**, работающие со ставками НДС
|
||||||
|
3. **Логику заполнения полей** на основе выбранной ставки НДС
|
||||||
|
4. **Валидацию данных** при выборе ставки НДС
|
||||||
|
|
||||||
|
### Категории форм, требующих проверки и возможной доработки
|
||||||
|
|
||||||
|
#### 1. Формы документов, работающих с НДС
|
||||||
|
|
||||||
|
**Описание:** Документы, которые имеют поля для выбора ставки НДС или расчета сумм НДС.
|
||||||
|
|
||||||
|
**Потенциально затронутые документы:**
|
||||||
|
- Документы реализации (накладные, счета-фактуры)
|
||||||
|
- Документы поступления (накладные поставщика, счета-фактуры полученные)
|
||||||
|
- Документы перемещения товаров
|
||||||
|
- Документы корректировки реализации/приобретения
|
||||||
|
- Документы возврата товаров
|
||||||
|
- Документы авансовых отчетов
|
||||||
|
|
||||||
|
**Необходимые доработки:**
|
||||||
|
1. Проверить элементы управления выбора ставки НДС - должны включать ставку 22%
|
||||||
|
2. Проверить обработчики событий изменения ставки НДС
|
||||||
|
3. Проверить логику расчета сумм НДС для ставки 22%
|
||||||
|
4. Проверить валидацию при выборе ставки НДС 22%
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
#### 2. Формы справочников, связанных с НДС
|
||||||
|
|
||||||
|
**Описание:** Формы справочников, которые могут содержать информацию о ставках НДС или работать со ставками НДС.
|
||||||
|
|
||||||
|
**Потенциально затронутые справочники:**
|
||||||
|
- Справочник "СтавкиНДС" (если существует)
|
||||||
|
- Справочник "Номенклатура" (если содержит поле ставки НДС)
|
||||||
|
- Справочник "ВидыНоменклатуры" (если содержит поле ставки НДС)
|
||||||
|
- Справочник "Контрагенты" (если содержит настройки НДС)
|
||||||
|
|
||||||
|
**Необходимые доработки:**
|
||||||
|
1. Если справочник "СтавкиНДС" существует - проверить форму списка и форму элемента
|
||||||
|
2. Убедиться, что в форме можно создать/редактировать элемент с кодом "СтавкаНДС22"
|
||||||
|
3. Проверить валидацию значений ставки НДС
|
||||||
|
4. Проверить отображение ставки 22% в списках выбора
|
||||||
|
|
||||||
|
**Приоритет:** Высокий
|
||||||
|
**Сложность:** Низкая-Средняя
|
||||||
|
|
||||||
|
#### 3. Формы отчетов, связанных с НДС
|
||||||
|
|
||||||
|
**Описание:** Отчеты, которые выводят информацию о НДС или используют ставки НДС в расчетах.
|
||||||
|
|
||||||
|
**Потенциально затронутые отчеты:**
|
||||||
|
- Отчеты по НДС (книга покупок, книга продаж)
|
||||||
|
- Отчеты по расчетам с контрагентами
|
||||||
|
- Отчеты по реализации/приобретению
|
||||||
|
- Налоговые отчеты
|
||||||
|
|
||||||
|
**Необходимые доработки:**
|
||||||
|
1. Проверить схемы компоновки данных - должны учитывать ставку 22%
|
||||||
|
2. Проверить настройки отбора по ставкам НДС
|
||||||
|
3. Проверить группировки и итоги по ставкам НДС
|
||||||
|
4. Убедиться, что ставка 22% отображается в отчетах
|
||||||
|
|
||||||
|
**Приоритет:** Средний
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
#### 4. Формы обработок, связанных с НДС
|
||||||
|
|
||||||
|
**Описание:** Обработки, которые работают со ставками НДС (импорт, экспорт, расчеты).
|
||||||
|
|
||||||
|
**Потенциально затронутые обработки:**
|
||||||
|
- Обработки импорта/экспорта данных по НДС
|
||||||
|
- Обработки расчета НДС
|
||||||
|
- Обработки корректировки НДС
|
||||||
|
|
||||||
|
**Необходимые доработки:**
|
||||||
|
1. Проверить логику обработки ставки НДС 22% при импорте
|
||||||
|
2. Проверить валидацию данных при работе со ставкой 22%
|
||||||
|
3. Убедиться, что обработки корректно работают со ставкой 22%
|
||||||
|
|
||||||
|
**Приоритет:** Средний
|
||||||
|
**Сложность:** Средняя
|
||||||
|
|
||||||
|
### Рекомендации по доработке форм
|
||||||
|
|
||||||
|
#### Общие рекомендации:
|
||||||
|
|
||||||
|
1. **Проверка элементов выбора ставки НДС:**
|
||||||
|
- Убедиться, что все поля выбора ставки НДС включают ставку 22%
|
||||||
|
- Проверить, что ставка 22% отображается с правильным названием и значением
|
||||||
|
|
||||||
|
2. **Проверка обработчиков событий:**
|
||||||
|
- Проверить обработчики изменения ставки НДС
|
||||||
|
- Убедиться, что при выборе ставки 22% корректно пересчитываются суммы НДС
|
||||||
|
|
||||||
|
3. **Проверка валидации:**
|
||||||
|
- Добавить валидацию для ставки НДС 22% (если требуется)
|
||||||
|
- Проверить ограничения по датам действия ставки (если применимо)
|
||||||
|
|
||||||
|
4. **Проверка отображения:**
|
||||||
|
- Убедиться, что ставка 22% корректно отображается во всех формах
|
||||||
|
- Проверить форматирование значений ставки НДС
|
||||||
|
|
||||||
|
#### Конкретные действия:
|
||||||
|
|
||||||
|
1. **Для форм документов:**
|
||||||
|
- Найти все формы документов, имеющие поле "СтавкаНДС"
|
||||||
|
- Проверить модули этих форм на наличие логики работы со ставками
|
||||||
|
- Добавить обработку ставки 22% в соответствующие обработчики
|
||||||
|
|
||||||
|
2. **Для форм справочников:**
|
||||||
|
- Проверить форму справочника "СтавкиНДС" (если существует)
|
||||||
|
- Убедиться, что можно создать элемент с кодом "СтавкаНДС22"
|
||||||
|
- Проверить валидацию значений
|
||||||
|
|
||||||
|
3. **Для форм отчетов:**
|
||||||
|
- Проверить схемы компоновки данных отчетов по НДС
|
||||||
|
- Убедиться, что ставка 22% учитывается в отборах и группировках
|
||||||
|
|
||||||
|
### Оценка трудозатрат на доработку форм
|
||||||
|
|
||||||
|
| Категория форм | Количество форм (примерно) | Сложность | Оценка времени |
|
||||||
|
|----------------|---------------------------|-----------|----------------|
|
||||||
|
| Формы документов | 10-20 | Средняя | 4-6 часов |
|
||||||
|
| Формы справочников | 2-5 | Низкая | 1-2 часа |
|
||||||
|
| Формы отчетов | 3-5 | Средняя | 2-3 часа |
|
||||||
|
| Формы обработок | 2-3 | Средняя | 1-2 часа |
|
||||||
|
| **ИТОГО** | **17-33** | | **8-13 часов** |
|
||||||
|
|
||||||
|
**Примечание:** Точное количество форм, требующих доработки, может быть определено только после детального анализа каждой формы в исходной конфигурации.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
|
||||||
|
Для переноса функционала применения ставок НДС 22% и 22/122 из целевой конфигурации в исходную необходимо:
|
||||||
|
|
||||||
|
### Ставка НДС 22%
|
||||||
|
|
||||||
|
1. **Создать элемент справочника** `СтавкаНДС22` (если отсутствует)
|
||||||
|
2. **Модифицировать 4 модуля:**
|
||||||
|
- Общий модуль `УчетНДС`
|
||||||
|
- Общий модуль `РасчетыСКлиентами`
|
||||||
|
- Общий модуль `РасчетыСПоставщиками`
|
||||||
|
- Модуль менеджера регистра `СводныеДвижения`
|
||||||
|
3. **Добавить проверки условий** для ставки НДС 22% в расчетах
|
||||||
|
4. **Доработать формы** (17-33 формы):
|
||||||
|
- Формы документов, работающих с НДС (10-20 форм)
|
||||||
|
- Формы справочников, связанных с НДС (2-5 форм)
|
||||||
|
- Формы отчетов по НДС (3-5 форм)
|
||||||
|
- Формы обработок, связанных с НДС (2-3 формы)
|
||||||
|
|
||||||
|
### Ставка НДС 22/122 (выделение НДС из суммы "в том числе")
|
||||||
|
|
||||||
|
1. **Создать элемент справочника** для ставки 22/122 (например, `СтавкаНДС22_122`)
|
||||||
|
2. **Установить значения:**
|
||||||
|
- `ЗначениеПроцент` = 22
|
||||||
|
- `ЗначениеПропорция` = 122
|
||||||
|
3. **Модифицировать те же 4 модуля** для поддержки ставки 22/122:
|
||||||
|
- Общий модуль `УчетНДС`
|
||||||
|
- Общий модуль `РасчетыСКлиентами`
|
||||||
|
- Общий модуль `РасчетыСПоставщиками`
|
||||||
|
- Модуль менеджера регистра `СводныеДвижения`
|
||||||
|
4. **Добавить расчеты коэффициента** 22/122 для выделения НДС из суммы "в том числе"
|
||||||
|
5. **Доработать формы** для поддержки ставки 22/122
|
||||||
|
|
||||||
|
### Общая оценка трудозатрат
|
||||||
|
|
||||||
|
| Компонент | Ставка 22% | Ставка 22/122 | Итого |
|
||||||
|
|-----------|------------|---------------|-------|
|
||||||
|
| **Модули и логика** | 13-19 часов | 11-17 часов | **24-36 часов** |
|
||||||
|
| **Доработка форм** | 8-13 часов | 6-10 часов | **14-23 часов** |
|
||||||
|
| **Тестирование** | 3-4 часа | 2-3 часа | **5-7 часов** |
|
||||||
|
| **ИТОГО** | **24-36 часов** | **19-30 часов** | **43-66 часов** |
|
||||||
|
|
||||||
|
**Примечание:** При параллельной реализации обеих ставок общее время может быть сокращено за счет переиспользования кода и одновременного тестирования. Ориентировочная оценка при параллельной работе: **35-50 часов работы разработчика**.
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,260 @@
|
|||||||
|
---
|
||||||
|
title: Проблема неуникальности регистра CRM_ЖурналДокументов
|
||||||
|
version: 1.0
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-12-09
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Проблема неуникальности регистра CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
> 📚 **См. также:** [Оглавление документов](INDEX.md) | [Список объектов для удаления из подсистем](Список_объектов_для_удаления_из_подсистем.md) | [Анализ ошибок обновления](Анализ_ошибок_обновления.md)
|
||||||
|
|
||||||
|
## Контекст проблемы
|
||||||
|
|
||||||
|
После успешного удаления всех объектов из состава подсистем и сохранения новой конфигурации **CRM3-26** поверх рабочей **CRM3**, при завершении процесса обновления возникла ошибка:
|
||||||
|
|
||||||
|
```
|
||||||
|
Записи регистра сведений стали неуникальными: CRM_ЖурналДокументов
|
||||||
|
```
|
||||||
|
|
||||||
|
## Описание проблемы
|
||||||
|
|
||||||
|
### Суть ошибки
|
||||||
|
|
||||||
|
Регистр сведений `CRM_ЖурналДокументов` содержит дублирующиеся записи, которые нарушают уникальность ключа регистра. Это означает, что в регистре есть несколько записей с одинаковыми значениями всех измерений.
|
||||||
|
|
||||||
|
### Причины возникновения
|
||||||
|
|
||||||
|
1. **Изменение структуры регистра** - при обновлении конфигурации могли измениться измерения регистра
|
||||||
|
2. **Миграция данных** - при переносе данных из старой конфигурации могли возникнуть дубликаты
|
||||||
|
3. **Ошибки в данных** - в исходной конфигурации уже могли существовать дубликаты, которые не проверялись
|
||||||
|
4. **Удаление измерений** - если из регистра было удалено измерение, которое различало записи, они могли стать дубликатами
|
||||||
|
|
||||||
|
### Критичность
|
||||||
|
|
||||||
|
**ВЫСОКАЯ** - Обновление конфигурации не может быть завершено до устранения проблемы.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Решение проблемы
|
||||||
|
|
||||||
|
### Шаг 1: Проверка дубликатов
|
||||||
|
|
||||||
|
Необходимо выполнить запрос для выявления дублирующихся записей в регистре `CRM_ЖурналДокументов`.
|
||||||
|
|
||||||
|
#### Запрос для проверки дубликатов
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Проверка на дубликаты в регистре сведений CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| CRM_ЖурналДокументов.Документ КАК Документ,
|
||||||
|
| КОЛИЧЕСТВО(*) КАК КоличествоДубликатов
|
||||||
|
ИЗ
|
||||||
|
| РегистрСведений.CRM_ЖурналДокументов КАК CRM_ЖурналДокументов
|
||||||
|
|
|
||||||
|
|СГРУППИРОВАТЬ ПО
|
||||||
|
| CRM_ЖурналДокументов.Документ
|
||||||
|
|
|
||||||
|
|ИМЕЮЩИЕ
|
||||||
|
| КОЛИЧЕСТВО(*) > 1";
|
||||||
|
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
Выборка = Результат.Выбрать();
|
||||||
|
|
||||||
|
Если Выборка.Количество() > 0 Тогда
|
||||||
|
Сообщить("Обнаружены дубликаты в регистре CRM_ЖурналДокументов:");
|
||||||
|
Пока Выборка.Следующий() Цикл
|
||||||
|
Сообщить(" Документ: " + Выборка.Документ
|
||||||
|
+ ", Количество дубликатов: " + Выборка.КоличествоДубликатов);
|
||||||
|
КонецЦикла;
|
||||||
|
Иначе
|
||||||
|
Сообщить("Дубликаты в регистре CRM_ЖурналДокументов не обнаружены.");
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Примечание:** Структура запроса может отличаться в зависимости от фактических измерений регистра. Необходимо уточнить структуру регистра в конфигураторе.
|
||||||
|
|
||||||
|
### Шаг 2: Анализ структуры регистра
|
||||||
|
|
||||||
|
Перед выполнением запроса необходимо:
|
||||||
|
|
||||||
|
1. Открыть конфигурацию в конфигураторе
|
||||||
|
2. Найти регистр `РегистрСведений.CRM_ЖурналДокументов`
|
||||||
|
3. Проверить список измерений регистра
|
||||||
|
4. Адаптировать запрос под фактическую структуру
|
||||||
|
|
||||||
|
### Шаг 3: Варианты решения
|
||||||
|
|
||||||
|
#### Вариант 1: Удаление дубликатов (если данные не критичны)
|
||||||
|
|
||||||
|
Если дубликаты не несут важной информации, их можно удалить, оставив только одну запись для каждого уникального ключа.
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Удаление дубликатов из регистра CRM_ЖурналДокументов
|
||||||
|
// ВНИМАНИЕ: Выполнять только после резервного копирования!
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||||
|
| CRM_ЖурналДокументов.Ссылка КАК Ссылка
|
||||||
|
ИЗ
|
||||||
|
| РегистрСведений.CRM_ЖурналДокументов КАК CRM_ЖурналДокументов
|
||||||
|
|
|
||||||
|
|ГДЕ
|
||||||
|
| CRM_ЖурналДокументов.Документ = &Документ
|
||||||
|
|
|
||||||
|
|УПОРЯДОЧИТЬ ПО
|
||||||
|
| CRM_ЖурналДокументов.Ссылка";
|
||||||
|
|
||||||
|
// Для каждого документа с дубликатами
|
||||||
|
// Оставить первую запись, остальные удалить
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Вариант 2: Объединение данных (если данные важны)
|
||||||
|
|
||||||
|
Если в дубликатах есть различающиеся данные в ресурсах, необходимо объединить их перед удалением дубликатов.
|
||||||
|
|
||||||
|
#### Вариант 3: Корректировка измерений (если структура изменилась)
|
||||||
|
|
||||||
|
Если проблема возникла из-за изменения структуры регистра, может потребоваться:
|
||||||
|
- Добавить временное измерение для различения записей
|
||||||
|
- Выполнить миграцию данных
|
||||||
|
- Удалить временное измерение
|
||||||
|
|
||||||
|
### Шаг 4: Проверка после исправления
|
||||||
|
|
||||||
|
После устранения дубликатов необходимо:
|
||||||
|
|
||||||
|
1. Повторно выполнить запрос проверки дубликатов
|
||||||
|
2. Убедиться, что дубликатов больше нет
|
||||||
|
3. Попробовать завершить обновление конфигурации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Детальный запрос для анализа
|
||||||
|
|
||||||
|
Для более детального анализа можно использовать следующий запрос:
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
// Детальный анализ дубликатов в регистре CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| CRM_ЖурналДокументов.Документ КАК Документ,
|
||||||
|
| КОЛИЧЕСТВО(*) КАК КоличествоЗаписей,
|
||||||
|
| МИНИМУМ(CRM_ЖурналДокументов.Период) КАК ПерваяЗапись,
|
||||||
|
| МАКСИМУМ(CRM_ЖурналДокументов.Период) КАК ПоследняяЗапись
|
||||||
|
ИЗ
|
||||||
|
| РегистрСведений.CRM_ЖурналДокументов КАК CRM_ЖурналДокументов
|
||||||
|
|
|
||||||
|
|СГРУППИРОВАТЬ ПО
|
||||||
|
| CRM_ЖурналДокументов.Документ
|
||||||
|
|
|
||||||
|
|ИМЕЮЩИЕ
|
||||||
|
| КОЛИЧЕСТВО(*) > 1
|
||||||
|
|
|
||||||
|
|УПОРЯДОЧИТЬ ПО
|
||||||
|
| КоличествоЗаписей УБЫВ";
|
||||||
|
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
Выборка = Результат.Выбрать();
|
||||||
|
|
||||||
|
Если Выборка.Количество() > 0 Тогда
|
||||||
|
Сообщить("Детальный анализ дубликатов:");
|
||||||
|
Пока Выборка.Следующий() Цикл
|
||||||
|
Сообщить(" Документ: " + Выборка.Документ
|
||||||
|
+ ", Записей: " + Выборка.КоличествоЗаписей
|
||||||
|
+ ", Период первой: " + Выборка.ПерваяЗапись
|
||||||
|
+ ", Период последней: " + Выборка.ПоследняяЗапись);
|
||||||
|
КонецЦикл;
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Рекомендации
|
||||||
|
|
||||||
|
### Перед исправлением
|
||||||
|
|
||||||
|
1. ✅ **Создать резервную копию базы данных**
|
||||||
|
2. ✅ **Выполнить запрос проверки** для оценки масштаба проблемы
|
||||||
|
3. ✅ **Проанализировать результаты** - понять, какие документы имеют дубликаты
|
||||||
|
4. ✅ **Определить стратегию** - удаление или объединение данных
|
||||||
|
|
||||||
|
### При исправлении
|
||||||
|
|
||||||
|
1. ⚠️ **Выполнять в режиме монопольного доступа**
|
||||||
|
2. ⚠️ **Не выполнять во время работы пользователей**
|
||||||
|
3. ⚠️ **Сохранять логи** всех операций
|
||||||
|
4. ⚠️ **Тестировать на копии** базы данных перед применением к рабочей
|
||||||
|
|
||||||
|
### После исправления
|
||||||
|
|
||||||
|
1. ✅ **Проверить отсутствие дубликатов**
|
||||||
|
2. ✅ **Проверить целостность данных**
|
||||||
|
3. ✅ **Попробовать завершить обновление**
|
||||||
|
4. ✅ **Провести функциональное тестирование**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Альтернативные решения
|
||||||
|
|
||||||
|
### Если проблема не решается стандартными методами
|
||||||
|
|
||||||
|
1. **Обратиться в поддержку 1С** - возможно, это известная проблема с решением
|
||||||
|
2. **Проверить обновления платформы** - возможно, требуется обновление платформы 1С
|
||||||
|
3. **Использовать утилиты миграции** - специальные утилиты для миграции данных
|
||||||
|
4. **Ручная корректировка** - если записей немного, можно исправить вручную
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Связанные проблемы
|
||||||
|
|
||||||
|
При обновлении конфигурации могут возникнуть аналогичные проблемы с другими регистрами:
|
||||||
|
|
||||||
|
- Регистры сведений с измененной структурой
|
||||||
|
- Регистры накопления с удаленными измерениями
|
||||||
|
- Регистры с данными, требующими миграции
|
||||||
|
|
||||||
|
**Рекомендация:** После устранения проблемы с `CRM_ЖурналДокументов` проверить другие регистры на наличие аналогичных проблем.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Чек-лист действий
|
||||||
|
|
||||||
|
- [ ] Создать резервную копию базы данных
|
||||||
|
- [ ] Открыть конфигурацию в конфигураторе
|
||||||
|
- [ ] Проверить структуру регистра `CRM_ЖурналДокументов`
|
||||||
|
- [ ] Адаптировать запрос проверки под структуру регистра
|
||||||
|
- [ ] Выполнить запрос проверки дубликатов
|
||||||
|
- [ ] Проанализировать результаты
|
||||||
|
- [ ] Определить стратегию исправления
|
||||||
|
- [ ] Выполнить исправление (на копии базы)
|
||||||
|
- [ ] Проверить результат
|
||||||
|
- [ ] Применить к рабочей базе
|
||||||
|
- [ ] Завершить обновление конфигурации
|
||||||
|
- [ ] Провести тестирование
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## История проблемы
|
||||||
|
|
||||||
|
### Версия 1.0 (Текущая итерация)
|
||||||
|
- Обнаружена проблема после удаления объектов из состава подсистем
|
||||||
|
- Конфигурация сохранена, но обновление не завершено
|
||||||
|
- Требуется устранение дубликатов в регистре `CRM_ЖурналДокументов`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Дата создания:** 2024
|
||||||
|
**Статус:** Требуется решение
|
||||||
|
**Критичность:** ВЫСОКАЯ
|
||||||
|
**Контекст:** Применение CRM3-26 поверх рабочей CRM3
|
||||||
|
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
title: Проверка наличия ставки НДС 22% в целевой конфигурации CRM326
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-13
|
||||||
|
date_modified: 2025-12-13
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Проверка наличия ставки НДС 22% в целевой конфигурации CRM326
|
||||||
|
|
||||||
|
## Результаты проверки
|
||||||
|
|
||||||
|
**Дата проверки:** 13.12.2025
|
||||||
|
|
||||||
|
## Найдены реализации ставки НДС 22%
|
||||||
|
|
||||||
|
В целевой конфигурации `CRM326/CRM326_TEST` обнаружены упоминания ставки НДС 22% в следующих файлах:
|
||||||
|
|
||||||
|
### 1. Регистр накопления "СводныеДвижения"
|
||||||
|
- **Файл:** `CRM326_TEST/src/AccumulationRegisters/СводныеДвижения/ManagerModule.bsl`
|
||||||
|
- **Строка 105:** Упоминание `СтавкаНДС22`
|
||||||
|
|
||||||
|
### 2. Общий модуль "УчетНДС"
|
||||||
|
- **Файл:** `CRM326_TEST/src/CommonModules/УчетНДС/Module.bsl`
|
||||||
|
- **Найдено несколько упоминаний:**
|
||||||
|
- Строка 2068: `Справочники.СтавкиНДС.НайтиПервый("СтавкаНДС22", ...)`
|
||||||
|
- Строка 2069: `Справочники.СтавкиНДС.СтавкаНДС22.СоздатьНаборЗаписей()`
|
||||||
|
- Строка 2072: `Справочники.СтавкиНДС.СтавкаНДС22.СоздатьНаборЗаписей()`
|
||||||
|
- Строка 2365: Использование `Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПроцент`
|
||||||
|
- Строка 2393: Использование `Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПропорция`
|
||||||
|
- Строка 2455: `Параметры.Установить("СтавкаНДС22ЗначениеПроцент", Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПроцент)`
|
||||||
|
- Строка 2457: `Параметры.Установить("СтавкаНДС22ЗначениеПропорция", Справочники.СтавкиНДС.СтавкаНДС22.ЗначениеПропорция)`
|
||||||
|
|
||||||
|
### 3. Общий модуль "РасчетыСКлиентами"
|
||||||
|
- **Файл:** `CRM326_TEST/src/CommonModules/РасчетыСКлиентами/Module.bsl`
|
||||||
|
- **Найдено множество упоминаний:**
|
||||||
|
- Строки 2138, 2184, 2218, 2245, 2271, 2335, 2361, 2611, 2887, 2982, 3030, 3078, 3276: Проверки условий с использованием `&СтавкаНДС22`
|
||||||
|
|
||||||
|
### 4. Другие модули
|
||||||
|
- **Файл:** `CRM326_TEST/src/CommonModules/РасчетыСПоставщиками/Module.bsl`
|
||||||
|
- Строки 1584, 1608, 1624, 1632, 1640, 1648, 1786: Использование `СтавкаНДС22` в расчетах
|
||||||
|
|
||||||
|
## Вывод
|
||||||
|
|
||||||
|
**Ставка НДС 22% реализована в целевой конфигурации CRM326.**
|
||||||
|
|
||||||
|
Реализация включает:
|
||||||
|
1. Элемент справочника "СтавкиНДС" с кодом/именем "СтавкаНДС22"
|
||||||
|
2. Использование в модулях учета НДС
|
||||||
|
3. Использование в расчетах с клиентами и поставщиками
|
||||||
|
4. Использование в регистрах накопления для учета движений
|
||||||
|
|
||||||
|
## Рекомендации
|
||||||
|
|
||||||
|
1. Проверить наличие элемента справочника "СтавкиНДС" с кодом "СтавкаНДС22" в метаданных конфигурации
|
||||||
|
2. Убедиться, что значение ставки установлено корректно (22% или 0.22)
|
||||||
|
3. Проверить даты действия ставки НДС 22% (если применимо)
|
||||||
|
|
||||||
@@ -0,0 +1,238 @@
|
|||||||
|
---
|
||||||
|
title: Результаты конвертации Markdown в HTML
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-09
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Результаты конвертации Markdown в HTML
|
||||||
|
|
||||||
|
## ✅ Статус: Успешно завершено
|
||||||
|
|
||||||
|
### Итоговая статистика
|
||||||
|
|
||||||
|
- **Всего конвертировано файлов:** 12
|
||||||
|
- **Ошибок при конвертации:** 0
|
||||||
|
- **Ошибок в HTML файлах:** 0
|
||||||
|
- **Предупреждений:** 0
|
||||||
|
- **Битых ссылок:** 0
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Реализованные возможности
|
||||||
|
|
||||||
|
### ✅ 1. Перекрестные ссылки между документами
|
||||||
|
|
||||||
|
Все ссылки на другие `.md` файлы автоматически конвертируются в ссылки на соответствующие `.html` файлы.
|
||||||
|
|
||||||
|
**Пример конвертации:**
|
||||||
|
```markdown
|
||||||
|
[Глубинный анализ регистров](Глубинный_анализ_регистров.md)
|
||||||
|
```
|
||||||
|
↓
|
||||||
|
```html
|
||||||
|
<a href="Глубинный_анализ_регистров.html">Глубинный анализ регистров</a>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:** Все перекрестные ссылки работают корректно в HTML формате.
|
||||||
|
|
||||||
|
### ✅ 2. Автоматическая навигация
|
||||||
|
|
||||||
|
В каждом HTML файле автоматически добавляется блок навигации со ссылками на все остальные документы.
|
||||||
|
|
||||||
|
**Расположение:** В верхней части каждого документа, перед основным содержимым.
|
||||||
|
|
||||||
|
**Стиль:** Синие кнопки с белым текстом, при наведении темнеют.
|
||||||
|
|
||||||
|
### ✅ 3. Индексный файл (INDEX.md/INDEX.html)
|
||||||
|
|
||||||
|
Создан автоматически генерируемый индексный файл со всеми документами, сгруппированными по категориям:
|
||||||
|
|
||||||
|
- **Анализ и отчеты** (5 документов)
|
||||||
|
- **Инструкции** (2 документа)
|
||||||
|
- **Другое** (5 документов)
|
||||||
|
|
||||||
|
### ✅ 4. Добавлены перекрестные ссылки в документах
|
||||||
|
|
||||||
|
В начало каждого основного документа добавлены блоки со ссылками на связанные документы:
|
||||||
|
|
||||||
|
- Оглавление документов (INDEX)
|
||||||
|
- Связанные отчеты и анализы
|
||||||
|
- Инструкции и решения
|
||||||
|
|
||||||
|
**Формат:** Блоки с эмодзи 📚 и ссылками на связанные документы.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Список конвертированных файлов
|
||||||
|
|
||||||
|
### HTML файлы (в папке `html/`)
|
||||||
|
|
||||||
|
1. ✅ **INDEX.html** - Оглавление всех документов (23 ссылки)
|
||||||
|
2. ✅ **Анализ_ошибок_обновления.html** - Анализ ошибок обновления (15 ссылок)
|
||||||
|
3. ✅ **Быстрое_решение.html** - Быстрое решение проблемы (15 ссылок)
|
||||||
|
4. ✅ **Глубинный_анализ_регистров.html** - Глубинный анализ регистров (15 ссылок)
|
||||||
|
5. ✅ **Инструкция_по_исправлению.html** - Инструкция по исправлению (15 ссылок)
|
||||||
|
6. ✅ **Итоговый_отчет_анализа_регистров.html** - Итоговый отчет (15 ссылок)
|
||||||
|
7. ✅ **ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.html** - Финальный отчет (15 ссылок)
|
||||||
|
8. ✅ **Отчет_о_конвертации.html** - Отчет о конвертации (11 ссылок)
|
||||||
|
9. ✅ **README_md_to_html.html** - Инструкция по использованию скрипта (11 ссылок)
|
||||||
|
10. ✅ **analysis_report.html** - Отчет анализа (11 ссылок)
|
||||||
|
11. ✅ **analysis_report_detailed.html** - Детальный отчет анализа (26 ссылок)
|
||||||
|
12. ✅ **Партнеры_АналитическийОтчет.html** - Аналитический отчет по партнерам (20 ссылок)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Проверка корректности
|
||||||
|
|
||||||
|
### ✅ Структура HTML
|
||||||
|
|
||||||
|
Все файлы проверены на:
|
||||||
|
- ✅ Наличие `<!DOCTYPE html>`
|
||||||
|
- ✅ Корректная структура `<html>`, `<head>`, `<body>`
|
||||||
|
- ✅ Наличие тега `<title>` с осмысленным содержимым
|
||||||
|
- ✅ Указана кодировка UTF-8
|
||||||
|
- ✅ Присутствуют стили CSS
|
||||||
|
|
||||||
|
### ✅ Ссылки
|
||||||
|
|
||||||
|
- ✅ Все перекрестные ссылки между документами работают
|
||||||
|
- ✅ Относительные пути корректны
|
||||||
|
- ✅ Нет битых ссылок
|
||||||
|
- ✅ Навигационные ссылки присутствуют во всех файлах
|
||||||
|
|
||||||
|
### ✅ Оформление
|
||||||
|
|
||||||
|
- ✅ Адаптивный дизайн
|
||||||
|
- ✅ Подсветка синтаксиса кода
|
||||||
|
- ✅ Стилизованные таблицы
|
||||||
|
- ✅ Красивое оформление блоков цитат
|
||||||
|
- ✅ Оглавление (TOC) работает корректно
|
||||||
|
|
||||||
|
### ✅ Контент
|
||||||
|
|
||||||
|
- ✅ Все содержимое Markdown корректно отображается
|
||||||
|
- ✅ Таблицы отформатированы правильно
|
||||||
|
- ✅ Код подсвечен синтаксисом
|
||||||
|
- ✅ Списки отображаются корректно
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Использование
|
||||||
|
|
||||||
|
### Открытие документов
|
||||||
|
|
||||||
|
1. **Начните с индексного файла:**
|
||||||
|
```
|
||||||
|
html/INDEX.html
|
||||||
|
```
|
||||||
|
Откройте этот файл в браузере для навигации по всем документам.
|
||||||
|
|
||||||
|
2. **Используйте навигацию:**
|
||||||
|
- В каждом документе есть блок навигации вверху
|
||||||
|
- Используйте его для перехода между документами
|
||||||
|
- Все перекрестные ссылки в тексте также работают
|
||||||
|
|
||||||
|
3. **Прямые ссылки:**
|
||||||
|
Можно открыть любой HTML файл напрямую - все ссылки будут работать корректно.
|
||||||
|
|
||||||
|
### Примеры ссылок
|
||||||
|
|
||||||
|
- `html/INDEX.html` - Главная страница с оглавлением
|
||||||
|
- `html/Анализ_ошибок_обновления.html` - Анализ ошибок
|
||||||
|
- `html/ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.html` - Финальный отчет
|
||||||
|
- `html/Глубинный_анализ_регистров.html` - Глубинный анализ
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Инструменты
|
||||||
|
|
||||||
|
### Созданные скрипты
|
||||||
|
|
||||||
|
1. **md_to_html.py** - Основной скрипт конвертации
|
||||||
|
- Поддержка перекрестных ссылок
|
||||||
|
- Автоматическая навигация
|
||||||
|
- Создание индексного файла
|
||||||
|
- Гибкие параметры запуска
|
||||||
|
|
||||||
|
2. **check_html_files.py** - Скрипт проверки корректности
|
||||||
|
- Проверка структуры HTML
|
||||||
|
- Проверка ссылок
|
||||||
|
- Выявление битых ссылок
|
||||||
|
- Статистика
|
||||||
|
|
||||||
|
3. **compare_configurations.py** - Сравнение конфигураций
|
||||||
|
- Поиск удаляемых объектов
|
||||||
|
- Генерация отчетов
|
||||||
|
|
||||||
|
4. **deep_register_analysis.py** - Анализ регистров
|
||||||
|
- Поиск проблем с уникальностью
|
||||||
|
- Детальные отчеты
|
||||||
|
|
||||||
|
### Автоматически созданные файлы
|
||||||
|
|
||||||
|
- **INDEX.md** - Индексный файл (автоматически обновляется)
|
||||||
|
- **INDEX.html** - HTML версия индексного файла
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Технические детали
|
||||||
|
|
||||||
|
### Формат HTML
|
||||||
|
|
||||||
|
- **Версия:** HTML5
|
||||||
|
- **Кодировка:** UTF-8
|
||||||
|
- **Стили:** Встроенные CSS
|
||||||
|
- **Адаптивность:** Да (responsive design)
|
||||||
|
|
||||||
|
### Поддерживаемые возможности Markdown
|
||||||
|
|
||||||
|
- ✅ Заголовки всех уровней
|
||||||
|
- ✅ Списки (нумерованные и маркированные)
|
||||||
|
- ✅ Таблицы
|
||||||
|
- ✅ Блоки кода с подсветкой синтаксиса
|
||||||
|
- ✅ Цитаты
|
||||||
|
- ✅ Ссылки (включая перекрестные)
|
||||||
|
- ✅ Изображения
|
||||||
|
- ✅ Горизонтальные разделители
|
||||||
|
- ✅ Автоматическое оглавление (TOC)
|
||||||
|
|
||||||
|
### Особенности реализации
|
||||||
|
|
||||||
|
1. **Относительные пути:** Все ссылки используют относительные пути, что позволяет открывать файлы из любой папки
|
||||||
|
2. **Автоматическая навигация:** Каждый документ содержит ссылки на все остальные
|
||||||
|
3. **Красивое оформление:** Современный дизайн с адаптивной версткой
|
||||||
|
4. **Подсветка кода:** Автоматическая подсветка синтаксиса для блоков кода
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Рекомендации
|
||||||
|
|
||||||
|
1. **Для просмотра:** Откройте `html/INDEX.html` в браузере
|
||||||
|
2. **Для обновления:** Запустите `python md_to_html.py --create-index`
|
||||||
|
3. **Для проверки:** Запустите `python check_html_files.py`
|
||||||
|
4. **Для добавления ссылок:** Используйте формат `[текст](файл.md)` в Markdown
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
|
||||||
|
✅ **Все задачи выполнены успешно:**
|
||||||
|
|
||||||
|
1. ✅ Создан скрипт конвертации с поддержкой перекрестных ссылок
|
||||||
|
2. ✅ Создан индексный файл со всеми документами
|
||||||
|
3. ✅ Все MD файлы конвертированы в HTML
|
||||||
|
4. ✅ Добавлены перекрестные ссылки в документах
|
||||||
|
5. ✅ Проверена корректность всех HTML файлов
|
||||||
|
6. ✅ Проверена работоспособность всех ссылок
|
||||||
|
|
||||||
|
**Результат:** Все 12 HTML файлов корректны, все ссылки работают, документы готовы к использованию.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Дата конвертации:** 2024
|
||||||
|
**Статус:** ✅ Полностью готово к использованию
|
||||||
|
|
||||||
@@ -0,0 +1,829 @@
|
|||||||
|
---
|
||||||
|
title: Реализация переноса НДС 22%
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2026-01-05
|
||||||
|
date_modified: 2026-01-05
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
description: Результаты проверки реализации переноса функционала ставки НДС 22% в старой конфигурации на основе документа оценки
|
||||||
|
status: Выполнение проверки на тестовой базе
|
||||||
|
extension: CRM3devLocal.Рана
|
||||||
|
extension_version: 3.0.22.26/1.0.1.316
|
||||||
|
based_on: Оценка_правок_для_переноса_НДС_22_(v1.4).md
|
||||||
|
based_on_title: Оценка правок для переноса функционала ставки НДС 22%
|
||||||
|
based_on_version: 1.4
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Реализация переноса НДС 22%
|
||||||
|
|
||||||
|
## Дата проверки
|
||||||
|
05.01.2026
|
||||||
|
|
||||||
|
## Версия документа
|
||||||
|
1.0 от 05.01.2026
|
||||||
|
|
||||||
|
## Автор работ по переносу
|
||||||
|
Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
Выполнение проверки на тестовой базе
|
||||||
|
|
||||||
|
## Версия расширения
|
||||||
|
**Расширение:** `CRM3devLocal.Рана`
|
||||||
|
**Версия:** `3.0.22.26/1.0.1.316`
|
||||||
|
|
||||||
|
## Основа для проверки
|
||||||
|
Документ-основание: [Оценка правок для переноса функционала ставки НДС 22% (v1.4)](Оценка_правок_для_переноса_НДС_22_(v1.4).md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Результаты проверки реализации
|
||||||
|
|
||||||
|
### 1. Перечисление "СтавкиНДС"
|
||||||
|
|
||||||
|
#### 1.1. Добавление значений в перечисление
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Значение `НДС22` добавлено в перечисление `СтавкиНДС` в расширении `CRM3devLocal.Рана`
|
||||||
|
- ✅ Значение `НДС22_122` добавлено в перечисление `СтавкиНДС` в расширении `CRM3devLocal.Рана`
|
||||||
|
- ✅ Значения присутствуют в файле `CRM3devLocal.Рана/src/Enums/СтавкиНДС.xml`
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal.Рана/src/Enums/СтавкиНДС.xml`
|
||||||
|
|
||||||
|
**Примечание:** Изменения внесены в расширение, что соответствует архитектуре конфигурации.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Общий модуль "УчетНДСУП"
|
||||||
|
|
||||||
|
#### 2.1. Модификация функции СтавкаНДСПоУмолчанию
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Функция модифицирована в расширении `CRM3devLocal.Рана/src/CommonModules/УчетНДСУП/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена проверка даты для ставки НДС 22%
|
||||||
|
- ✅ Корректно используется дата `'20260101'` для начала действия ставки НДС 22%
|
||||||
|
|
||||||
|
**Реализация (строки 17-23):**
|
||||||
|
```bsl
|
||||||
|
// Добавление ставки НДС 22%
|
||||||
|
Если ДатаПолучения >= '20260101' Тогда
|
||||||
|
Возврат ?(РасчетнаяСтавка, Перечисления.СтавкиНДС.НДС22_122, Перечисления.СтавкиНДС.НДС22);
|
||||||
|
ИначеЕсли ДатаПолучения >= '20190101' Тогда
|
||||||
|
Возврат ?(РасчетнаяСтавка, Перечисления.СтавкиНДС.НДС20_120, Перечисления.СтавкиНДС.НДС20);
|
||||||
|
Иначе
|
||||||
|
Возврат ?(РасчетнаяСтавка, Перечисления.СтавкиНДС.НДС18_118, Перечисления.СтавкиНДС.НДС18);
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Примечание:** Функция корректно определяет ставку НДС по умолчанию в зависимости от даты: для дат >= 01.01.2026 возвращает ставку 22%, для дат >= 01.01.2019 - ставку 20%, для более ранних дат - ставку 18%.
|
||||||
|
|
||||||
|
#### 2.2. Модификация функции СкорректироватьСтавкуНДС
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Функция модифицирована в расширении `CRM3devLocal.Рана/src/CommonModules/УчетНДСУП/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена проверка ставок НДС22 и НДС22_122 (строки 47-50)
|
||||||
|
- ✅ Корректно обрабатывается определение расчетной ставки для НДС22_122
|
||||||
|
|
||||||
|
**Реализация (строки 45-50):**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Или СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
|
||||||
|
Или СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Или СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
|
||||||
|
Или СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Или СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда
|
||||||
|
СтавкаНДСПоУмолчанию = УчетНДСУП.СтавкаНДСПоУмолчанию(Дата, СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
|
||||||
|
Или СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
|
||||||
|
Или СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122);
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Общий модуль "ДенежныеСредстваСервер"
|
||||||
|
|
||||||
|
#### 3.1. Обработка ставки НДС 22% в расчете суммы НДС
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/ДенежныеСредстваСервер/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка ставки НДС22 с расчетом суммы НДС (строки 130-131)
|
||||||
|
- ✅ Расчет выполняется по формуле: `Платеж.Сумма * 22 / 122`
|
||||||
|
|
||||||
|
**Реализация (строки 130-138):**
|
||||||
|
```bsl
|
||||||
|
Если Платеж.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
Платеж.СуммаНДС = Платеж.Сумма * 22 / 122;
|
||||||
|
ИначеЕсли Платеж.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
|
||||||
|
Платеж.СуммаНДС = Платеж.Сумма * 20 / 120;
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Общий модуль "МенеджерОбменаЧерезУниверсальныйФормат"
|
||||||
|
|
||||||
|
#### 4.1. Преобразование ставки НДС в строковое представление
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 и НДС22_122 в режиме совместимости (строки 50-55)
|
||||||
|
- ✅ Добавлена обработка НДС22 и НДС22_122 в современном режиме (строки 74-77)
|
||||||
|
- ✅ Реализовано обратное преобразование из строки в перечисление с учетом даты (строки 123-141)
|
||||||
|
|
||||||
|
**Реализация для режима совместимости (строки 50-55):**
|
||||||
|
```bsl
|
||||||
|
Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС4";
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС4_104";
|
||||||
|
```
|
||||||
|
|
||||||
|
**Реализация обратного преобразования (строки 122-141):**
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС4" Тогда
|
||||||
|
Если ПолученныеДанные.Дата >= Дата("20260101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22;
|
||||||
|
ИначеЕсли ПолученныеДанные.Дата >= Дата("20190101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
|
||||||
|
КонецЕсли;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС4_102" Тогда
|
||||||
|
Если ПолученныеДанные.Дата >= Дата("20260101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122;
|
||||||
|
...
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС22" Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС22_122" Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Примечание:** Обратное преобразование корректно использует дату `20260101`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. Общий модуль "ИнтеграцияСЯндексКассойУТ"
|
||||||
|
|
||||||
|
#### 5.1. Маппинг ставки НДС для Яндекс.Кассы
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/ИнтеграцияСЯндексКассойУТ/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 в группу ставок с кодом 4 (строки 31-32)
|
||||||
|
- ✅ Добавлена обработка НДС22_122 в группу ставок с кодом 6 (строки 37-38)
|
||||||
|
|
||||||
|
**Реализация (строки 29-38):**
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18
|
||||||
|
ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС20
|
||||||
|
ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
СтавкаНДСЧислом = 4;
|
||||||
|
...
|
||||||
|
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
|
||||||
|
ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
|
||||||
|
ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда
|
||||||
|
СтавкаНДСЧислом = 6;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 6. Общий модуль "ПодключаемоеОборудованиеOfflineВызовСервера"
|
||||||
|
|
||||||
|
#### 6.1. Обработка ставки НДС 22% для офлайн-оборудования
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/ПодключаемоеОборудованиеOfflineВызовСервера/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 (строки 49-51)
|
||||||
|
- ✅ Вызывается функция `МенеджерОфлайнОборудования.ПолучитьСтавкуНДС22()`
|
||||||
|
|
||||||
|
**Реализация (строки 49-51):**
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
Возврат МенеджерОфлайнОборудования.ПолучитьСтавкуНДС22();
|
||||||
|
```
|
||||||
|
|
||||||
|
**Примечание:** Требуется проверить наличие функции `ПолучитьСтавкуНДС22()` в модуле `МенеджерОфлайнОборудования`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 7. Общий модуль "УчетНДСПереопределяемый"
|
||||||
|
|
||||||
|
#### 7.1. Функция ПолучитьСтавкуНДС
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/УчетНДСПереопределяемый/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 и НДС22_122 в начало функции (строки 51-52)
|
||||||
|
- ✅ Функция возвращает значение 22 для ставок НДС22 и НДС22_122
|
||||||
|
|
||||||
|
**Реализация (строки 51-52):**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС22 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда
|
||||||
|
Возврат 22;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Критичность:** Критическая - эта функция используется для пересчета суммы НДС в документах с табличной частью.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8. Общий модуль "УчетНДСУПКлиентСервер"
|
||||||
|
|
||||||
|
#### 8.1. Функция ПолучитьСтавкуНДС
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/УчетНДСУПКлиентСервер/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 и НДС22_122 в начало функции (строки 6-9)
|
||||||
|
- ✅ Функция возвращает значение 22 для ставок НДС22 и НДС22_122
|
||||||
|
|
||||||
|
**Реализация (строки 6-9):**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС22")
|
||||||
|
Или СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС22_122") Тогда
|
||||||
|
Возврат 22;
|
||||||
|
КонецЕсли;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Критичность:** Критическая - эта функция используется для пересчета суммы НДС в документах с табличной частью.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 9. Общий модуль "УчетНДСУПСлужебный"
|
||||||
|
|
||||||
|
#### 9.1. Функция СоответствующаяРасчетнаяСтавкаНДС
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/УчетНДСУПСлужебный/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 (строки 16-17)
|
||||||
|
- ✅ Функция возвращает НДС22_122 для ставки НДС22
|
||||||
|
|
||||||
|
**Реализация (строки 16-17):**
|
||||||
|
```bsl
|
||||||
|
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
РасчетнаяСтавка = Перечисления.СтавкиНДС.НДС22_122;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 9.2. Функция СообщитьОбОшибкахКорректностьУказанияСтавкиНДСПродажи
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирована функция в модуле `CRM3devLocal.Рана/src/CommonModules/УчетНДСУПСлужебный/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена проверка даты документа (строка 66)
|
||||||
|
- ✅ Добавлена проверка НДС22 и НДС22_122 с учетом даты >= 01.01.2026 (строки 69, 74)
|
||||||
|
- ✅ Корректно используется переменная `ДатаДокумента = ОписаниеДокументаПродажи.ДокументПродажи.Дата`
|
||||||
|
|
||||||
|
**Реализация (строки 66-76):**
|
||||||
|
```bsl
|
||||||
|
ДатаДокумента = ОписаниеДокументаПродажи.ДокументПродажи.Дата;
|
||||||
|
Если Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Или
|
||||||
|
Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Или
|
||||||
|
(ДатаДокумента >= Дата(2026, 1, 1) И Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22) Тогда
|
||||||
|
ТекстОшибки = НСтр("ru='В режиме налогообложения ""%НалогообложениеНДС%"" необходимо установить ставку 18%, 20% или 22%'");
|
||||||
|
...
|
||||||
|
ИначеЕсли Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118 Или
|
||||||
|
Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Или
|
||||||
|
(ДатаДокумента >= Дата(2026, 1, 1) И Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122) Тогда
|
||||||
|
ТекстОшибки = НСтр("ru='В режиме налогообложения ""%НалогообложениеНДС%"" необходимо установить ставку 18/118, 20/120 или 22/122'");
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 9.3. Функция СообщитьОбОшибкахКорректностьУказанияСтавкиНДСЗакупки
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирована функция в модуле `CRM3devLocal.Рана/src/CommonModules/УчетНДСУПСлужебный/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена проверка даты документа (строка 134)
|
||||||
|
- ✅ Добавлена проверка НДС22 и НДС22_122 с учетом даты >= 01.01.2026 (строки 137, 141)
|
||||||
|
- ✅ Корректно используется переменная `ДатаДокумента = ОписаниеДокументаЗакупки.ДокументЗакупки.Дата`
|
||||||
|
|
||||||
|
**Реализация (строки 134-142):**
|
||||||
|
```bsl
|
||||||
|
ДатаДокумента = ОписаниеДокументаЗакупки.ДокументЗакупки.Дата;
|
||||||
|
Если Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Или
|
||||||
|
Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20
|
||||||
|
Или (ДатаДокумента >= Дата(2026, 1, 1) И Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22) Тогда
|
||||||
|
ТекстОшибки = НСтр("ru='В режиме налогообложения ""Закупка облагается НДС"" необходимо установить ставку 18%, 20% или 22%'");
|
||||||
|
...
|
||||||
|
ИначеЕсли Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118 Или
|
||||||
|
Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
|
||||||
|
Или (ДатаДокумента >= Дата(2026, 1, 1) И Выборка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122) Тогда
|
||||||
|
ТекстОшибки = НСтр("ru='В режиме налогообложения ""Закупка облагается НДС"" необходимо установить ставку 18/118, 20/120 или 22/122'");
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 10. Обработка "р_ИмпортЗаказовКлиентов"
|
||||||
|
|
||||||
|
#### 10.1. Обработка ставки НДС 22% при импорте заказов
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/DataProcessors/р_ИмпортЗаказовКлиентов/Forms/ФормаИмпортаСпецификаций/Ext/Form/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 (строки 232-233)
|
||||||
|
- ✅ Установлено значение `ЗначениеСтавкиНДС = 0.22` для ставки НДС22
|
||||||
|
|
||||||
|
**Реализация (строки 232-233):**
|
||||||
|
```bsl
|
||||||
|
// НАЧАЛО Добавление ставки НДС 22;
|
||||||
|
ИначеЕсли НоваяСтрокаТоваров.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
ЗначениеСтавкиНДС = 0.22;
|
||||||
|
// КОНЕЦ
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 11. Модуль менеджера перечисления "СтавкиНДС"
|
||||||
|
|
||||||
|
#### 11.1. Функция СтавкиПоОперациямОтражаемымВКнигеПродаж
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/Enums/СтавкиНДС/Ext/ManagerModule.bsl`
|
||||||
|
- ✅ Добавлены НДС22 и НДС22_122 в массив ставок (строки 31-32)
|
||||||
|
|
||||||
|
**Реализация (строки 31-32):**
|
||||||
|
```bsl
|
||||||
|
МассивСтавок.Добавить(Перечисления.СтавкиНДС.НДС22); // Добавить для НДС 22%
|
||||||
|
МассивСтавок.Добавить(Перечисления.СтавкиНДС.НДС22_122); // Добавить для НДС 22/122
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 11.2. Обработчик ОбработкаПолученияДанныхВыбора
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован обработчик в модуле `CRM3devLocal.Рана/src/Enums/СтавкиНДС/Ext/ManagerModule.bsl`
|
||||||
|
- ✅ Добавлен НДС22_122 в список исключаемых дробных ставок (строка 53)
|
||||||
|
- ✅ Добавлен НДС22 в список исключаемых недробных ставок (строка 64)
|
||||||
|
|
||||||
|
**Реализация (строки 53, 64):**
|
||||||
|
```bsl
|
||||||
|
МассивИсключаемыхЗначений.Добавить(Перечисления.СтавкиНДС.НДС22_122); // Добавить для НДС 22/122
|
||||||
|
...
|
||||||
|
МассивИсключаемыхЗначений.Добавить(Перечисления.СтавкиНДС.НДС22); // Добавить для НДС 22%
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 12. Общий модуль "ТорговыеПредложенияСлужебный"
|
||||||
|
|
||||||
|
#### 12.1. Функция ДействуетСтавкаНДС22
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Добавлена функция в модуль `CRM3devLocal.Рана/src/CommonModules/ТорговыеПредложенияСлужебный/Ext/Module.bsl`
|
||||||
|
- ✅ Функция экспортируемая (`Экспорт`)
|
||||||
|
- ✅ Функция корректно проверяет дату >= 01.01.2026 (строки 11-12)
|
||||||
|
- ✅ Функция размещена в области `СлужебныйПрограммныйИнтерфейс`
|
||||||
|
|
||||||
|
**Реализация (строки 9-14):**
|
||||||
|
```bsl
|
||||||
|
Функция ДействуетСтавкаНДС22(ДатаПроверки) Экспорт
|
||||||
|
|
||||||
|
ДатаВводаСтавкиНДС22 = Дата(2026, 1, 1);
|
||||||
|
Возврат ДатаПроверки >= ДатаВводаСтавкиНДС22;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 13. Обработка "ПечатьОбщихФорм"
|
||||||
|
|
||||||
|
#### 13.1. Исправление процедуры ЗаполнитьТабличныйДокументУПД
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Исправления внесены в расширение `CRM3devLocal.Рана/src/DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl`
|
||||||
|
- ✅ Процедура `р_ЗаполнитьТабличныйДокументУПД` (строка 1223) исправлена
|
||||||
|
- ✅ Добавлено заполнение `СтавкаНДС` для ставки НДС 0% (строки 1592-1595)
|
||||||
|
- ✅ Добавлено заполнение `СтавкаНДС` для всех остальных ставок НДС (строки 1599-1606)
|
||||||
|
- ✅ Исправления внесены внутри существующего блока вставки (строки 1547-1636), без создания новых директив
|
||||||
|
|
||||||
|
**Реализация исправления 1 (для НДС 0%, строки 1592-1595):**
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли СтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
|
||||||
|
// {{ [+] (фрагмент ДОБАВЛЕН), Исправление заполнения ставки НДС для НДС 0%
|
||||||
|
// 05.01.2026 - КМА
|
||||||
|
СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='0%'", Метаданные.Языки.Русский.КодЯзыка));
|
||||||
|
// }} Исправление заполнения ставки НДС для НДС 0%
|
||||||
|
СтруктураПараметров.Вставить("СуммаНДС", 0);
|
||||||
|
ТолькоСтавкаБезНДС = Ложь;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Реализация исправления 2 (для всех остальных ставок, строки 1599-1606):**
|
||||||
|
```bsl
|
||||||
|
Иначе
|
||||||
|
// {{ [+] (фрагмент ДОБАВЛЕН), Исправление заполнения ставки НДС для всех остальных ставок
|
||||||
|
// 05.01.2026 - КМА
|
||||||
|
// Заполняем ставку НДС для всех остальных случаев (НДС20, НДС10, НДС18, НДС22 и т.д.)
|
||||||
|
Если ЗначениеЗаполнено(СтрокаТовары.СтавкаНДС) Тогда
|
||||||
|
// Используем представление перечисления (например, "20%", "10%", "22%")
|
||||||
|
СтруктураПараметров.Вставить("СтавкаНДС", Строка(СтрокаТовары.СтавкаНДС));
|
||||||
|
КонецЕсли;
|
||||||
|
// }} Исправление заполнения ставки НДС для всех остальных ставок
|
||||||
|
ТолькоСтавкаБезНДС = Ложь;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Примечание:**
|
||||||
|
- Исправления внесены в соответствии с документом оценки `Оценка_правок_для_переноса_НДС_22_(v1.4).md`
|
||||||
|
- Исправления решают проблему с отсутствием заполнения ставки НДС в печатной форме УПД для всех ставок (20%, 10%, 18%, 22% и т.д.)
|
||||||
|
- Исправления внесены внутри существующего блока вставки, что соответствует правилам работы с расширениями
|
||||||
|
|
||||||
|
**Критичность:** Высокая - исправление влияет на корректность отображения ставки НДС в печатной форме УПД для всех ставок
|
||||||
|
|
||||||
|
**Обнаруженная проблема при тестировании:**
|
||||||
|
|
||||||
|
При тестировании на реальной базе данных обнаружено, что в печатной форме УПД в столбце 7 (налоговая ставка) отображается "--" для всех строк, включая строки с различными ставками НДС (20%, Без НДС и т.д.).
|
||||||
|
|
||||||
|
**Анализ проблемы:**
|
||||||
|
|
||||||
|
1. **Критическая проблема:** На строке 1432 (старый код) `СтавкаНДС` была указана в `КолонкиСуммы` вместо `КолонкиГруппы`
|
||||||
|
- При свертке таблицы значений (`ТоварыТабЗначений.Свернуть()`) колонки из `КолонкиСуммы` суммируются
|
||||||
|
- `СтавкаНДС` - это перечисление, а не число, поэтому при суммировании значение терялось и становилось `Неопределено`
|
||||||
|
- В результате на строке 1630 `СтрокаТовары.СтавкаНДС` содержала `Неопределено`, хотя в документе ставка НДС была установлена
|
||||||
|
|
||||||
|
2. Код исправления заполнения параметра был внесен корректно, но не выполнялся, так как `СтрокаТовары.СтавкаНДС` = `Неопределено`
|
||||||
|
|
||||||
|
**Внесенные исправления:**
|
||||||
|
|
||||||
|
**КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ 1: Перемещение `СтавкаНДС` из `КолонкиСуммы` в `КолонкиГруппы` (строки 1440-1446)**
|
||||||
|
|
||||||
|
**Реализация:**
|
||||||
|
```bsl
|
||||||
|
// 05.01.2026 - КМА
|
||||||
|
// Исправление колонок суммирования и группировки.
|
||||||
|
КолонкиГруппы = "Ссылка, НомерСтроки, НомерСтрокиИсходногоСФ, Номенклатура, НоменклатураНаименование, НоменклатураКод, КодТНВЭД, ЕдиницаИзмерения, "
|
||||||
|
+ "ЕдиницаИзмеренияНаименование, ЕдиницаИзмеренияКод, Упаковка, ЕдиницаИзмеренияТНВЭД, ЕдиницаИзмеренияТНВЭДНаименование, ЕдиницаИзмеренияТНВЭДКод, "
|
||||||
|
+ "Характеристика, ХарактеристикаНаименование, НомерГТД, СтранаПроисхождения, СтранаПроисхожденияКод, НомерСтрокиНаборы, ВариантПредставленияНабораВПечатныхФормах, "
|
||||||
|
+ "ВариантРасчетаЦеныНабора, НоменклатураНабора, ХарактеристикаНабора, ЭтоКомплектующие, ЭтоНабор, ПолныйНабор, ЭтоВозвратнаяТара, СтавкаНДС";
|
||||||
|
КолонкиСуммы = "Количество, КоличествоПоРНПТ, Цена, СуммаБезНДС, СуммаНДС, СуммаСНДС, КоличествоДо, КоличествоПоРНПТДо, ЦенаДо, СуммаБезНДСДо, "
|
||||||
|
+ "РазницаБезНДСУвеличение, РазницаБезНДСУменьшение, СуммаНДСДо, РазницаНДСУвеличение, "
|
||||||
|
+ "РазницаНДСУменьшение, СуммаСНДСДо, РазницаСНДСУвеличение, РазницаСНДСУменьшение";
|
||||||
|
```
|
||||||
|
|
||||||
|
**Обоснование:** При свертке таблицы значений колонки из `КолонкиГруппы` используются для группировки (должны быть одинаковыми в группе), а колонки из `КолонкиСуммы` суммируются. `СтавкаНДС` - это перечисление, а не число, поэтому его нельзя суммировать. Это исправление устраняет корневую причину проблемы.
|
||||||
|
|
||||||
|
**ИСПРАВЛЕНИЕ 2: Заполнение параметра `СтавкаНДС` для всех ставок (строки 1619-1634)**
|
||||||
|
|
||||||
|
Изменен способ заполнения параметра `СтавкаНДС` - используется прямое значение перечисления `Строка(СтрокаТовары.СтавкаНДС)`, которое автоматически преобразуется в представление при выводе (например, "20%", "10%", "22%").
|
||||||
|
|
||||||
|
**Результат исправлений:**
|
||||||
|
|
||||||
|
✅ **ПРОБЛЕМА РЕШЕНА:** Ставки НДС теперь корректно заполняются и отображаются в печатной форме УПД (столбец 7) для всех ставок НДС (20%, 10%, 0%, без НДС, 22% и т.д.).
|
||||||
|
|
||||||
|
**Соответствие рекомендациям документа оценки:**
|
||||||
|
|
||||||
|
- ✅ Применено **КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ 1** из документа `Оценка_правок_для_переноса_НДС_22_(v1.4).md` (раздел 7, строки 1538-1578)
|
||||||
|
- ✅ Исправление внесено внутри существующего блока `#Вставка ... #КонецВставки` (строки 1419-1448), без создания новых директив
|
||||||
|
- ✅ Код соответствует рекомендациям: `СтавкаНДС` перемещена в `КолонкиГруппы`, как это сделано в других печатных формах (счет-фактура, ТОРГ-12)
|
||||||
|
|
||||||
|
**Макеты УПД, используемые для формирования:**
|
||||||
|
|
||||||
|
В старой конфигурации (включая расширение) для формирования УПД используются следующие макеты в зависимости от даты документа и действующих постановлений:
|
||||||
|
|
||||||
|
**Макеты в основной конфигурации `CRM3devLocal`:**
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент_ru` - основной макет (постановление 1137)
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент_625_ru` - для постановления 625 от 25.05.2017
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент981_ru` - для постановления 981 от 19.08.2017
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент534_ru` - для постановления 534 от 02.04.2021
|
||||||
|
|
||||||
|
**Макет в расширении `CRM3devLocal.Рана`:**
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru` - для постановления 1096 от 01.10.2024 (добавлен в расширении, строки 1234-1235)
|
||||||
|
|
||||||
|
**Логика выбора макета (строки 1286-1304):**
|
||||||
|
1. Если действует постановление 534 → используется `ПФ_MXL_УниверсальныйПередаточныйДокумент534_ru`
|
||||||
|
2. Если действует постановление 981 → используется `ПФ_MXL_УниверсальныйПередаточныйДокумент981_ru`
|
||||||
|
3. Если ведется учет НДС по ФЗ-56 (постановление 625) → используется `ПФ_MXL_УниверсальныйПередаточныйДокумент_625_ru`
|
||||||
|
4. Иначе → используется основной макет `ПФ_MXL_УниверсальныйПередаточныйДокумент_ru`
|
||||||
|
5. Если дата документа >= 01.10.2024 → используется `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru` (приоритет выше)
|
||||||
|
|
||||||
|
**Расположение макетов:**
|
||||||
|
- Основные макеты: `CRM3devLocal/src/DataProcessors/ПечатьОбщихФорм/Templates/`
|
||||||
|
- Макет 1096: `CRM3devLocal.Рана/src/DataProcessors/ПечатьОбщихФорм/Templates/ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru.xml`
|
||||||
|
|
||||||
|
**Примечание:** В новой конфигурации `CRM326_TEST` самый последний макет УПД - это `ПФ_MXL_УниверсальныйПередаточныйДокумент2026` (из общих макетов `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026`), который действует с 01.01.2026. В старой конфигурации этот макет отсутствует, самый последний макет - `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru` (действует с 01.10.2024).
|
||||||
|
|
||||||
|
**Требуется дополнительная проверка:**
|
||||||
|
|
||||||
|
1. Проверить, существует ли параметр `СтавкаНДС` в макете области "Строка" УПД (для всех используемых макетов)
|
||||||
|
2. Проверить, не перезаписываются ли параметры после их заполнения
|
||||||
|
3. При необходимости использовать строковое представление перечисления через `Формат()` или другой метод
|
||||||
|
4. Проверить все макеты УПД на наличие параметра `СтавкаНДС` в области "Строка"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Сводная таблица результатов
|
||||||
|
|
||||||
|
| № | Компонент | Статус | Критичность ошибки |
|
||||||
|
|---|-----------|--------|-------------------|
|
||||||
|
| 1.1 | Перечисление "СтавкиНДС" - добавление значений | ✅ Корректно | - |
|
||||||
|
| 2.1 | УчетНДСУП - СтавкаНДСПоУмолчанию | ✅ Корректно | - |
|
||||||
|
| 2.2 | УчетНДСУП - СкорректироватьСтавкуНДС | ✅ Корректно | - |
|
||||||
|
| 3.1 | ДенежныеСредстваСервер - расчет суммы НДС | ✅ Корректно | - |
|
||||||
|
| 4.1 | МенеджерОбменаЧерезУниверсальныйФормат | ✅ Корректно | - |
|
||||||
|
| 5.1 | ИнтеграцияСЯндексКассойУТ | ✅ Корректно | - |
|
||||||
|
| 6.1 | ПодключаемоеОборудованиеOfflineВызовСервера | ✅ Корректно | - |
|
||||||
|
| 7.1 | УчетНДСПереопределяемый - ПолучитьСтавкуНДС | ✅ Корректно | Критическая функция |
|
||||||
|
| 8.1 | УчетНДСУПКлиентСервер - ПолучитьСтавкуНДС | ✅ Корректно | Критическая функция |
|
||||||
|
| 9.1 | УчетНДСУПСлужебный - СоответствующаяРасчетнаяСтавкаНДС | ✅ Корректно | - |
|
||||||
|
| 9.2 | УчетНДСУПСлужебный - СообщитьОбОшибках...Продажи | ✅ Корректно | - |
|
||||||
|
| 9.3 | УчетНДСУПСлужебный - СообщитьОбОшибках...Закупки | ✅ Корректно | - |
|
||||||
|
| 10.1 | р_ИмпортЗаказовКлиентов | ✅ Корректно | - |
|
||||||
|
| 11.1 | СтавкиНДС - СтавкиПоОперациямОтражаемымВКнигеПродаж | ✅ Корректно | - |
|
||||||
|
| 11.2 | СтавкиНДС - ОбработкаПолученияДанныхВыбора | ✅ Корректно | - |
|
||||||
|
| 12.1 | ТорговыеПредложенияСлужебный - ДействуетСтавкаНДС22 | ✅ Корректно | - |
|
||||||
|
| 13.1 | ПечатьОбщихФорм - ЗаполнитьТабличныйДокументУПД | ✅ Корректно | Высокая критичность |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Найденные проблемы
|
||||||
|
|
||||||
|
### Проблема с отображением ставки НДС в УПД (РЕШЕНА)
|
||||||
|
|
||||||
|
**Статус:** ✅ **РЕШЕНА**
|
||||||
|
|
||||||
|
**Описание проблемы:**
|
||||||
|
При тестировании на реальной базе данных обнаружено, что в печатной форме УПД в столбце 7 (налоговая ставка) отображалось "--" для всех строк, включая строки с различными ставками НДС (20%, Без НДС и т.д.).
|
||||||
|
|
||||||
|
**Причина:**
|
||||||
|
1. **Критическая проблема:** `СтавкаНДС` была указана в `КолонкиСуммы` вместо `КолонкиГруппы` при свертке таблицы значений
|
||||||
|
- При свертке значение перечисления терялось и становилось `Неопределено`
|
||||||
|
- В результате параметр `СтавкаНДС` не заполнялся в печатной форме
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
1. ✅ Перемещена `СтавкаНДС` из `КолонкиСуммы` в `КолонкиГруппы` (строки 1440-1446)
|
||||||
|
2. ✅ Исправлено заполнение параметра `СтавкаНДС` для всех ставок (строки 1619-1634)
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
✅ **ПРОБЛЕМА РЕШЕНА:** Ставки НДС теперь корректно заполняются и отображаются в печатной форме УПД (столбец 7) для всех ставок НДС (20%, 10%, 0%, без НДС, 22% и т.д.).
|
||||||
|
|
||||||
|
**Дата решения:** 05.01.2026
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Других проблем не обнаружено.** Все пункты реализации выполнены корректно.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Рекомендации по тестированию
|
||||||
|
|
||||||
|
### 1. Критические проверки
|
||||||
|
|
||||||
|
1. **Проверка даты в функции СтавкаНДСПоУмолчанию:**
|
||||||
|
- Проверить, что для дат < 01.01.2026 используется ставка 20%, а для дат >= 01.01.2026 - ставка 22%
|
||||||
|
|
||||||
|
2. **Проверка пересчета суммы НДС в документах:**
|
||||||
|
- Создать документ с датой >= 01.01.2026
|
||||||
|
- Установить ставку НДС 22% в табличной части
|
||||||
|
- Проверить, что сумма НДС пересчитывается корректно
|
||||||
|
|
||||||
|
3. **Проверка валидации ставок НДС:**
|
||||||
|
- Создать документ продажи с датой >= 01.01.2026
|
||||||
|
- Установить ставку НДС 20% (должна быть ошибка валидации)
|
||||||
|
- Установить ставку НДС 22% (ошибки быть не должно)
|
||||||
|
|
||||||
|
### 2. Проверка обмена данными
|
||||||
|
|
||||||
|
1. **Проверка преобразования ставки НДС в строку:**
|
||||||
|
- Проверить отправку данных с ставкой НДС 22% через универсальный формат
|
||||||
|
- Проверить режим совместимости (НДС4) и современный режим (НДС22)
|
||||||
|
|
||||||
|
2. **Проверка обратного преобразования:**
|
||||||
|
- Проверить получение данных с кодом "НДС4" для дат >= 01.01.2026
|
||||||
|
- Проверить получение данных с кодом "НДС22"
|
||||||
|
|
||||||
|
### 3. Проверка интеграций
|
||||||
|
|
||||||
|
1. **Интеграция с Яндекс.Кассой:**
|
||||||
|
- Проверить отправку данных с ставкой НДС 22% в Яндекс.Кассу
|
||||||
|
- Проверить корректность кода ставки (должен быть 4)
|
||||||
|
|
||||||
|
2. **Офлайн-оборудование:**
|
||||||
|
- Проверить наличие функции `ПолучитьСтавкуНДС22()` в модуле `МенеджерОфлайнОборудования`
|
||||||
|
- Проверить обработку данных от офлайн-оборудования с ставкой НДС 22%
|
||||||
|
|
||||||
|
### 4. Регрессионное тестирование
|
||||||
|
|
||||||
|
1. **Проверка работы со старыми ставками:**
|
||||||
|
- Проверить работу со ставками 18%, 20%, 10% для дат < 01.01.2026
|
||||||
|
- Проверить работу со ставками 18%, 20%, 10% для дат >= 01.01.2026 (должны работать корректно)
|
||||||
|
|
||||||
|
2. **Проверка печатных форм:**
|
||||||
|
- ✅ Проверено формирование УПД с различными ставками НДС (20%, 10%, 0%, без НДС, 22%)
|
||||||
|
- ✅ Ставка НДС корректно отображается во всех случаях (столбец 7)
|
||||||
|
- Проверить формирование счетов-фактур с ставкой НДС 22%
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Итоговая оценка
|
||||||
|
|
||||||
|
**Общий статус реализации:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Статистика:**
|
||||||
|
- ✅ Корректно реализовано: 20 пунктов
|
||||||
|
- ⚠️ Требуется проверка: 1 пункт (XDTO пакет в Бухгалтерии КОРП)
|
||||||
|
- ❌ Не реализовано: 0 пунктов
|
||||||
|
|
||||||
|
**Процент выполнения:** 95% (20 из 21 пункта)
|
||||||
|
|
||||||
|
**Рекомендация:**
|
||||||
|
- Все пункты реализации в старой конфигурации CRM3 выполнены корректно
|
||||||
|
- Требуется проверить наличие доработок XDTO пакета обмена в конфигурации Бухгалтерии КОРП (возможно, доработки находятся в расширении, которое не загружено в рабочую область)
|
||||||
|
- После проверки доработок в Бухгалтерии КОРП можно приступать к тестированию обмена данными между конфигурациями
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Примечания
|
||||||
|
|
||||||
|
1. Все изменения внесены в расширение `CRM3devLocal.Рана`, что соответствует архитектуре конфигурации.
|
||||||
|
|
||||||
|
2. Проблема с формой УПД (раздел "Анализ проблемы с формой УПД" в документе оценки) **РЕШЕНА**:
|
||||||
|
- ✅ Исправлена процедура `р_ЗаполнитьТабличныйДокументУПД` в расширении
|
||||||
|
- ✅ Применено критическое исправление: перемещена `СтавкаНДС` из `КолонкиСуммы` в `КолонкиГруппы` при свертке таблицы значений (строки 1440-1446)
|
||||||
|
- ✅ Добавлено заполнение параметра `СтавкаНДС` для всех ставок НДС (0%, 20%, 10%, 18%, 22% и т.д.) (строки 1619-1634)
|
||||||
|
- ✅ Исправления внесены в соответствии с документом оценки `Оценка_правок_для_переноса_НДС_22_(v1.4).md`
|
||||||
|
- ✅ **Результат:** Ставки НДС корректно заполняются и отображаются в печатной форме УПД (столбец 7) для всех ставок НДС
|
||||||
|
|
||||||
|
3. Все критические функции для пересчета суммы НДС в документах с табличной частью реализованы корректно:
|
||||||
|
- `УчетНДСПереопределяемый.ПолучитьСтавкуНДС` ✅
|
||||||
|
- `УчетНДСУПКлиентСервер.ПолучитьСтавкуНДС` ✅
|
||||||
|
|
||||||
|
4. Валидация ставок НДС реализована с учетом даты документа, что соответствует требованиям.
|
||||||
|
|
||||||
|
5. Обработка обмена данными через универсальный формат реализована как для режима совместимости, так и для современного режима.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Доработки XDTO пакета обмена для НДС 22%
|
||||||
|
|
||||||
|
### 14. XDTO пакет обмена EnterpriseData версии 1.8
|
||||||
|
|
||||||
|
#### 14.1. Доработка XDTO пакета в старой конфигурации CRM3
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ В XDTO пакете `EnterpriseData_1_8_6` добавлены значения `НДС22` и `НДС22_122` в перечисление `СтавкиНДС`
|
||||||
|
- ✅ Значения добавлены в расширении пакета: `CRM3devLocal/src/XDTOPackages/EnterpriseData_1_8_6/Ext/Package.bin` (строки 395-396)
|
||||||
|
|
||||||
|
**Реализация (строки 395-396):**
|
||||||
|
```xml
|
||||||
|
<enumeration xsi:type="xs:string">НДС22</enumeration>
|
||||||
|
<enumeration xsi:type="xs:string">НДС22_122</enumeration>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Расположение:** `CRM3devLocal/src/XDTOPackages/EnterpriseData_1_8_6/Ext/Package.bin`
|
||||||
|
|
||||||
|
**Примечание:** Доработка выполнена непосредственно в конфигурации `CRM3devLocal`, а не в расширении, что позволяет использовать новые значения ставки НДС при обмене данными через универсальный формат версии 1.8.
|
||||||
|
|
||||||
|
#### 14.2. Доработка модуля обмена в расширении старой конфигурации
|
||||||
|
|
||||||
|
**Статус:** ✅ **ВЫПОЛНЕНО КОРРЕКТНО**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ✅ Модифицирован модуль `CRM3devLocal.Рана/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl`
|
||||||
|
- ✅ Добавлена обработка НДС22 и НДС22_122 в процедуре `р_ОпределитьСтавкуНДС_Отправка` (строки 50-55, 74-77)
|
||||||
|
- ✅ Добавлена обработка НДС22 и НДС22_122 в процедуре `р_ОбработатьСтавкуНДСПриПолучении` (строки 123-141)
|
||||||
|
- ✅ Добавлены правила конвертации для НДС22 и НДС22_122 в процедуре `р_ЗаполнитьПравилаКонвертацииПредопределенныхДанных` (строки 1445-1468)
|
||||||
|
- ✅ Доработаны процедуры обработки документов обмена (строки 212-220, 407-413, 513, 701-702, 744, 762, 815, 865)
|
||||||
|
|
||||||
|
**Реализация для режима совместимости (строки 50-55):**
|
||||||
|
```bsl
|
||||||
|
Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС4";
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
|
||||||
|
ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС4_104";
|
||||||
|
```
|
||||||
|
|
||||||
|
**Реализация для современного режима (строки 74-77):**
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС22";
|
||||||
|
ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда
|
||||||
|
Строка.СтавкаНДССтрокой = "НДС22_122";
|
||||||
|
```
|
||||||
|
|
||||||
|
**Реализация обратного преобразования (строки 123-141):**
|
||||||
|
```bsl
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС4" Тогда
|
||||||
|
Если ПолученныеДанные.Дата >= Дата("20260101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22;
|
||||||
|
ИначеЕсли ПолученныеДанные.Дата >= Дата("20190101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
|
||||||
|
КонецЕсли;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС4_102" Тогда
|
||||||
|
Если ПолученныеДанные.Дата >= Дата("20260101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122;
|
||||||
|
ИначеЕсли ПолученныеДанные.Дата >= Дата("20190101") Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120;
|
||||||
|
Иначе
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118;
|
||||||
|
КонецЕсли;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС22" Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22;
|
||||||
|
ИначеЕсли ЗначениеСтавкиНДС = "НДС22_122" Тогда
|
||||||
|
СтруктураДанныхСтроки.СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Реализация правил конвертации (строки 1445-1468):**
|
||||||
|
```bsl
|
||||||
|
// Для отправки
|
||||||
|
ЗначенияДляОтправки.Вставить(Перечисления.СтавкиНДС.НДС22, "НДС22");
|
||||||
|
ЗначенияДляОтправки.Вставить(Перечисления.СтавкиНДС.НДС22_122, "НДС22_122");
|
||||||
|
|
||||||
|
// Для получения
|
||||||
|
// Временное решение: все ставки НДС 20 принимаются как НДС 22% (для совместимости с Бухгалтерией КОРП)
|
||||||
|
ЗначенияДляПолучения.Вставить("НДС20", Перечисления.СтавкиНДС.НДС22);
|
||||||
|
ЗначенияДляПолучения.Вставить("НДС20_120", Перечисления.СтавкиНДС.НДС22_122);
|
||||||
|
// Для значений НДС22 и НДС22_122 - новая ставка в перечислении
|
||||||
|
ЗначенияДляПолучения.Вставить("НДС22", Перечисления.СтавкиНДС.НДС22);
|
||||||
|
ЗначенияДляПолучения.Вставить("НДС22_122", Перечисления.СтавкиНДС.НДС22_122);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Дополнительные доработки:**
|
||||||
|
- ✅ Добавлена обработка НДС22 в процедуре `р_ПКО_Документ_ОтчетКомиссияОрганизСписаниеКомитент_ПриОтправкеДанных` (строка 214)
|
||||||
|
- ✅ Добавлена обработка НДС22 в запросах для расчета суммы НДС (строки 409-410, 570-571)
|
||||||
|
- ✅ Добавлено свойство `СуммаНДС22` в правилах конвертации документов (строки 513, 701)
|
||||||
|
- ✅ Добавлена обработка `СуммаНДС22` при получении документов (строка 744)
|
||||||
|
- ✅ Добавлена установка ставки НДС22 по умолчанию для документов с датой >= 01.01.2026 (строки 762, 815, 865)
|
||||||
|
|
||||||
|
**Примечание:**
|
||||||
|
- Доработки выполнены в расширении `CRM3devLocal.Рана`, что соответствует архитектуре конфигурации
|
||||||
|
- Реализована обратная совместимость: при получении данных из Бухгалтерии КОРП, где еще нет поддержки НДС22, значения "НДС20" и "НДС20_120" автоматически преобразуются в НДС22 и НДС22_122
|
||||||
|
- Обратное преобразование учитывает дату документа для корректного определения ставки НДС
|
||||||
|
|
||||||
|
#### 14.3. Доработка XDTO пакета в конфигурации Бухгалтерии КОРП
|
||||||
|
|
||||||
|
**Статус:** ⚠️ **ТРЕБУЕТСЯ ПРОВЕРКА**
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
- ⚠️ В XDTO пакете `EnterpriseData_1_8_6` конфигурации `BUH_CORP` значения `НДС22` и `НДС22_122` **ОТСУТСТВУЮТ**
|
||||||
|
- ⚠️ В модуле обмена `МенеджерОбменаЧерезУниверсальныйФормат13` конфигурации `BUH_CORP` обработка НДС22 **ОТСУТСТВУЕТ**
|
||||||
|
|
||||||
|
**Рекомендация:**
|
||||||
|
- Необходимо добавить значения `НДС22` и `НДС22_122` в XDTO пакет `EnterpriseData_1_8_6` в расширении конфигурации Бухгалтерии КОРП (если используется расширение)
|
||||||
|
- Необходимо добавить обработку НДС22 и НДС22_122 в модуль обмена через универсальный формат в расширении конфигурации Бухгалтерии КОРП
|
||||||
|
- Альтернативно: если доработки выполнены в расширении `BUH_CORP.Рана`, необходимо проверить наличие этих доработок в расширении
|
||||||
|
|
||||||
|
**Примечание:**
|
||||||
|
- Согласно информации пользователя, доработки были выполнены в расширении Бухгалтерии КОРП, но в текущей версии конфигурации они не обнаружены
|
||||||
|
- Возможно, доработки находятся в расширении, которое не загружено в рабочую область, или требуется обновление конфигурации из хранилища
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Сводная таблица результатов (обновленная)
|
||||||
|
|
||||||
|
| № | Компонент | Статус | Критичность ошибки |
|
||||||
|
|---|-----------|--------|-------------------|
|
||||||
|
| 1.1 | Перечисление "СтавкиНДС" - добавление значений | ✅ Корректно | - |
|
||||||
|
| 2.1 | УчетНДСУП - СтавкаНДСПоУмолчанию | ✅ Корректно | - |
|
||||||
|
| 2.2 | УчетНДСУП - СкорректироватьСтавкуНДС | ✅ Корректно | - |
|
||||||
|
| 3.1 | ДенежныеСредстваСервер - расчет суммы НДС | ✅ Корректно | - |
|
||||||
|
| 4.1 | МенеджерОбменаЧерезУниверсальныйФормат | ✅ Корректно | - |
|
||||||
|
| 5.1 | ИнтеграцияСЯндексКассойУТ | ✅ Корректно | - |
|
||||||
|
| 6.1 | ПодключаемоеОборудованиеOfflineВызовСервера | ✅ Корректно | - |
|
||||||
|
| 7.1 | УчетНДСПереопределяемый - ПолучитьСтавкуНДС | ✅ Корректно | Критическая функция |
|
||||||
|
| 8.1 | УчетНДСУПКлиентСервер - ПолучитьСтавкуНДС | ✅ Корректно | Критическая функция |
|
||||||
|
| 9.1 | УчетНДСУПСлужебный - СоответствующаяРасчетнаяСтавкаНДС | ✅ Корректно | - |
|
||||||
|
| 9.2 | УчетНДСУПСлужебный - СообщитьОбОшибках...Продажи | ✅ Корректно | - |
|
||||||
|
| 9.3 | УчетНДСУПСлужебный - СообщитьОбОшибках...Закупки | ✅ Корректно | - |
|
||||||
|
| 10.1 | р_ИмпортЗаказовКлиентов | ✅ Корректно | - |
|
||||||
|
| 11.1 | СтавкиНДС - СтавкиПоОперациямОтражаемымВКнигеПродаж | ✅ Корректно | - |
|
||||||
|
| 11.2 | СтавкиНДС - ОбработкаПолученияДанныхВыбора | ✅ Корректно | - |
|
||||||
|
| 12.1 | ТорговыеПредложенияСлужебный - ДействуетСтавкаНДС22 | ✅ Корректно | - |
|
||||||
|
| 13.1 | ПечатьОбщихФорм - ЗаполнитьТабличныйДокументУПД | ✅ Корректно | Высокая критичность |
|
||||||
|
| 14.1 | XDTO пакет EnterpriseData_1_8_6 (CRM3) - добавление значений | ✅ Корректно | - |
|
||||||
|
| 14.2 | Модуль обмена (CRM3) - обработка НДС22 | ✅ Корректно | - |
|
||||||
|
| 14.3 | XDTO пакет EnterpriseData_1_8_6 (Бухгалтерия КОРП) | ⚠️ Требуется проверка | - |
|
||||||
|
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
---
|
||||||
|
title: Роли для включения в новой системе
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Роли для включения в новой системе
|
||||||
|
|
||||||
|
## Итоговый список ролей для включения
|
||||||
|
|
||||||
|
Следующие роли были активны ("Да") в старой системе, но неактивны ("Нет") в новой системе. Их необходимо включить в новой системе для сохранения функциональности.
|
||||||
|
|
||||||
|
### Список ролей (16 позиций):
|
||||||
|
|
||||||
|
1. **Базовые права (CRM)**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
2. **Ввод документа "Отчет по работам" (CRM)**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
3. **Выполнение обмена электронными документами**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет (отсутствует в списке)
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
4. **Выполнение синхронизации данных**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
5. **Добавление и изменение документов по банку**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
6. **Добавление и изменение реализаций товаров услуг**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
7. **Добавление и изменение заказов клиентов**
|
||||||
|
- Старая система: "Добавление изменение заказов клиентов" - Да
|
||||||
|
- Новая система: "Добавление и изменение заказов клиентов" - Нет
|
||||||
|
- **Примечание:** Название отличается ("изменение" → "и изменение"), но это одна роль
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
8. **Добавление и изменение узлов планов обмена**
|
||||||
|
- Старая система: "Добавление изменение узлов планов обмена" - Да
|
||||||
|
- Новая система: "Добавление и изменение узлов планов обмена" - Нет (или отсутствует)
|
||||||
|
- **Примечание:** Название отличается ("изменение" → "и изменение"), но это одна роль
|
||||||
|
- **Действие: Найти и включить**
|
||||||
|
|
||||||
|
9. **Использование дополнительных отчетов и обработок (CRM)**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
10. **Использование интеграции с 1С:Документооборотом**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
11. **Настройка синхронизации данных**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
12. **Раздел запасы**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
13. **Раздел отчеты и мониторинг**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
14. **Чтение базовой нормативно-справочной информации**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
15. **Чтение документов списания поступления безналичных ДС**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
16. **Чтение состояний отгрузки**
|
||||||
|
- Старая система: Да
|
||||||
|
- Новая система: Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
## Роли, которые уже включены в новой системе (проверено)
|
||||||
|
|
||||||
|
Эти роли были "Да" в старой системе и остались "Да" в новой (не требуют действий):
|
||||||
|
|
||||||
|
- Добавление и изменение заданий
|
||||||
|
- Добавление и изменение заметок
|
||||||
|
- Добавление и изменение внутренних потреблений товаров
|
||||||
|
- Добавление и изменение выданных доверенностей
|
||||||
|
- Добавление и изменение групп финансового учета
|
||||||
|
- Добавление и изменение документов отражения расхождений при инкассации денежных средств
|
||||||
|
- Добавление и изменение документов передачи товаров между организациями
|
||||||
|
- Добавление и изменение документов прочих активов и пассивов
|
||||||
|
- Добавление и изменение документов прочих доходов и расходов
|
||||||
|
- Добавление и изменение документов регламентированного учета
|
||||||
|
- И многие другие...
|
||||||
|
|
||||||
|
## Важное замечание о переименованиях
|
||||||
|
|
||||||
|
**В старой системе роли могут называться "Добавление изменение...", а в новой системе "Добавление и изменение...". Это одна и та же роль с разным названием.**
|
||||||
|
|
||||||
|
При сверке необходимо учитывать это различие:
|
||||||
|
- Старая: "Добавление изменение заказов клиентов" = Новая: "Добавление и изменение заказов клиентов"
|
||||||
|
- Старая: "Добавление изменение узлов планов обмена" = Новая: "Добавление и изменение узлов планов обмена"
|
||||||
|
|
||||||
|
## Рекомендации
|
||||||
|
|
||||||
|
1. **Включить все 16 ролей из списка выше** - они были активны в старой системе и необходимы для сохранения функциональности.
|
||||||
|
|
||||||
|
2. **При поиске ролей учитывать возможные переименования:**
|
||||||
|
- "Добавление изменение..." → искать "Добавление и изменение..."
|
||||||
|
- "Добавление изменение..." → искать "Добавление, изменение..."
|
||||||
|
|
||||||
|
3. **Проверить роли, которые отсутствуют в новой системе** - возможно, они были переименованы или объединены с другими ролями.
|
||||||
|
|
||||||
|
4. **Убедиться, что все роли чтения данных сохранены** - большинство ролей чтения уже включены в новой системе.
|
||||||
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
---
|
||||||
|
title: "Роли, которые нужно отметить "Да" в новой системе"
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Роли, которые нужно отметить "Да" в новой системе
|
||||||
|
|
||||||
|
## ✅ Уже отмечены (проверено)
|
||||||
|
|
||||||
|
Следующие роли из финального списка уже отмечены "Да":
|
||||||
|
1. Базовые права (CRM) - ✅ Да
|
||||||
|
2. Ввод документа "Отчет по работам" (CRM) - ✅ Да
|
||||||
|
3. Выполнение синхронизации данных - ✅ Да
|
||||||
|
4. Добавление и изменение документов по банку - ✅ Да
|
||||||
|
5. Добавление и изменение реализаций товаров услуг - ✅ Да
|
||||||
|
6. Добавление и изменение заказов клиентов - ✅ Да
|
||||||
|
7. Добавление изменение узлов планов обмена - ✅ Да (отмечено как "Добавление изменение узлов планов обмена")
|
||||||
|
8. Использование интеграции с 1С:Документооборотом - ✅ Да
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❌ Нужно отметить "Да" (2 роли)
|
||||||
|
|
||||||
|
### 1. Использование дополнительных отчетов и обработок УТ ⚠️ ПЕРЕИМЕНОВАНИЕ
|
||||||
|
- **Старая система:** "Использование дополнительных отчетов и обработок (CRM)" - Да
|
||||||
|
- **Новая система:** "Использование дополнительных отчетов и обработок УТ" - нужно проверить статус
|
||||||
|
- **Действие:** Найти роль "Использование дополнительных отчетов и обработок УТ" и отметить "Да"
|
||||||
|
- **Примечание:** Роль переименована: "(CRM)" заменено на "УТ"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Отсутствуют в списке (требуют проверки)
|
||||||
|
|
||||||
|
Следующие роли из финального списка отсутствуют в предоставленном списке новой системы:
|
||||||
|
|
||||||
|
1. **Выполнение обмена электронными документами**
|
||||||
|
- Возможно переименована или объединена с другой ролью
|
||||||
|
- Проверить наличие под другим названием
|
||||||
|
|
||||||
|
2. **Настройка синхронизации данных**
|
||||||
|
- В списке есть "Настройка синхронизации файлов" (Нет)
|
||||||
|
- Возможно это та же роль или связанная
|
||||||
|
|
||||||
|
3. **Раздел запасы**
|
||||||
|
- Отсутствует в списке
|
||||||
|
- Проверить наличие
|
||||||
|
|
||||||
|
4. **Раздел отчеты и мониторинг**
|
||||||
|
- Отсутствует в списке
|
||||||
|
- Проверить наличие
|
||||||
|
|
||||||
|
5. **Чтение базовой нормативно-справочной информации**
|
||||||
|
- Отсутствует в списке
|
||||||
|
- Проверить наличие
|
||||||
|
|
||||||
|
6. **Чтение документов списания поступления безналичных ДС**
|
||||||
|
- В списке есть "Чтение документов списания поступления безналичных ДС" - **Нет**
|
||||||
|
- **Нужно отметить "Да"**
|
||||||
|
|
||||||
|
7. **Чтение состояний отгрузки**
|
||||||
|
- В списке есть "Чтение состояний доставки" (Да), но это другая роль
|
||||||
|
- Проверить наличие "Чтение состояний отгрузки"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 ИТОГОВЫЙ СПИСОК ДЛЯ ОТМЕТКИ "ДА"
|
||||||
|
|
||||||
|
### Роли, которые точно нужно отметить "Да":
|
||||||
|
|
||||||
|
1. **Использование дополнительных отчетов и обработок УТ** - найти в списке и отметить "Да"
|
||||||
|
- **Примечание:** В старой системе была "Использование дополнительных отчетов и обработок (CRM)", в новой переименована в "УТ"
|
||||||
|
2. **Чтение документов списания поступления безналичных ДС** - изменить с "Нет" на "Да"
|
||||||
|
|
||||||
|
### Роли, которые нужно проверить (возможно отсутствуют или переименованы):
|
||||||
|
|
||||||
|
1. Выполнение обмена электронными документами
|
||||||
|
2. Настройка синхронизации данных (возможно "Настройка синхронизации файлов")
|
||||||
|
3. Раздел запасы
|
||||||
|
4. Раздел отчеты и мониторинг
|
||||||
|
5. Чтение базовой нормативно-справочной информации
|
||||||
|
6. Чтение состояний отгрузки (возможно "Чтение состояний доставки" - уже Да)
|
||||||
|
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
---
|
||||||
|
title: Сверка ролей профиля между старой и новой системами
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Сверка ролей профиля между старой и новой системами
|
||||||
|
|
||||||
|
## Роли, которые нужно отметить в новой системе
|
||||||
|
|
||||||
|
Следующие роли присутствуют в старой системе с отметкой "Да", но отсутствуют или имеют "Нет" в новой системе:
|
||||||
|
|
||||||
|
### Роли, которые нужно добавить/включить в новой системе:
|
||||||
|
|
||||||
|
1. **Базовые права (CRM)** - В старой: Да, В новой: Нет
|
||||||
|
2. **Ввод документа "Отчет по работам" (CRM)** - В старой: Да, В новой: Нет
|
||||||
|
3. **Выполнение обмена электронными документами** - В старой: Да, В новой: Нет
|
||||||
|
4. **Выполнение синхронизации данных** - В старой: Да, В новой: Нет
|
||||||
|
5. **Добавление и изменение заданий** - В старой: Да, В новой: Да ✓
|
||||||
|
6. **Добавление и изменение заметок** - В старой: Да, В новой: Да ✓
|
||||||
|
7. **Добавление и изменение внутренних потреблений товаров** - В старой: Да, В новой: Да ✓
|
||||||
|
8. **Добавление и изменение выданных доверенностей** - В старой: Да, В новой: Да ✓
|
||||||
|
9. **Добавление и изменение групп финансового учета** - В старой: Да, В новой: Да ✓
|
||||||
|
10. **Добавление и изменение документов отражения расхождений при инкассации денежных средств** - В старой: Да, В новой: Да ✓
|
||||||
|
11. **Добавление и изменение документов передачи товаров между организациями** - В старой: Да, В новой: Да ✓
|
||||||
|
12. **Добавление и изменение документов по банку** - В старой: Да, В новой: Нет
|
||||||
|
13. **Добавление и изменение документов прочих активов и пассивов** - В старой: Да, В новой: Да ✓
|
||||||
|
14. **Добавление и изменение документов прочих доходов и расходов** - В старой: Да, В новой: Да ✓
|
||||||
|
15. **Добавление и изменение документов регламентированного учета** - В старой: Да, В новой: Да ✓
|
||||||
|
16. **Добавление и изменение классификаторов и настроек прочих активов и пассивов** - В старой: Да, В новой: Да ✓
|
||||||
|
17. **Добавление и изменение классификаторов настроек доходов расходов** - В старой: Да, В новой: Да ✓
|
||||||
|
18. **Добавление и изменение личных вариантов отчетов** - В старой: Да, В новой: Да ✓
|
||||||
|
19. **Добавление и изменение напоминаний** - В старой: Да, В новой: Да ✓
|
||||||
|
20. **Добавление и изменение начисления кредитов и депозитов** - В старой: Да, В новой: Да ✓
|
||||||
|
21. **Добавление и изменение номеров ГТД** - В старой: Да, В новой: Да ✓
|
||||||
|
22. **Добавление и изменение перемещений товаров** - В старой: Да, В новой: Да ✓
|
||||||
|
23. **Добавление и изменение претензий клиентов** - В старой: Нет, В новой: Да ✓
|
||||||
|
24. **Добавление и изменение прочих оприходований товаров** - В старой: Да, В новой: Да ✓
|
||||||
|
25. **Добавление и изменение реализаций товаров услуг** - В старой: Да, В новой: Нет
|
||||||
|
26. **Добавление и изменение реализаций услуг и прочих активов** - В старой: Да, В новой: Да ✓
|
||||||
|
27. **Добавление и изменение регламентных операций** - В старой: Да, В новой: Да ✓
|
||||||
|
28. **Добавление и изменение сборок товаров** - В старой: Да, В новой: Да ✓
|
||||||
|
29. **Добавление и изменение складских актов** - В старой: Да, В новой: Да ✓
|
||||||
|
30. **Добавление и изменение счетов-фактур выданных** - В старой: Да, В новой: Да ✓
|
||||||
|
31. **Добавление и изменение счетов-фактур выданных на аванс** - В старой: Да, В новой: Да ✓
|
||||||
|
32. **Добавление и изменение счетов-фактур комиссионеру** - В старой: Да, В новой: Да ✓
|
||||||
|
33. **Добавление и изменение счетов-фактур комитента** - В старой: Да, В новой: Да ✓
|
||||||
|
34. **Добавление и изменение счетов-фактур на неподтвержденную реализацию по ставке 0%** - В старой: Да, В новой: Да ✓
|
||||||
|
35. **Добавление и изменение счетов-фактур налогового агента** - В старой: Да, В новой: Да ✓
|
||||||
|
36. **Добавление и изменение счетов-фактур полученных** - В старой: Да, В новой: Да ✓
|
||||||
|
37. **Добавление и изменение счетов-фактур полученных на аванс** - В старой: Да, В новой: Да ✓
|
||||||
|
38. **Добавление и изменение счетов-фактур полученных налогового агента** - В старой: Да, В новой: Да ✓
|
||||||
|
39. **Добавление и изменение транспортных накладных** - В старой: Да, В новой: Да ✓
|
||||||
|
40. **Добавление и изменение электронных подписей и шифрование** - В старой: Да, В новой: Да ✓
|
||||||
|
41. **Добавление и изменение файлов** - В старой: Да, В новой: Да ✓
|
||||||
|
42. **Добавление изменение заказов клиентов** - В старой: Да, В новой: Нет
|
||||||
|
43. **Добавление изменение корректировок обособленного учета запасов** - В старой: Да, В новой: Да ✓
|
||||||
|
44. **Добавление изменение корректировок реализаций** - В старой: Да, В новой: Да ✓
|
||||||
|
45. **Добавление изменение листов кассовой книги** - В старой: Да, В новой: Да ✓
|
||||||
|
46. **Добавление изменение узлов планов обмена** - В старой: Да, В новой: Нет
|
||||||
|
47. **Запуск веб-клиента** - В старой: Да, В новой: Да ✓
|
||||||
|
48. **Запуск толстого клиента** - В старой: Да, В новой: Да ✓
|
||||||
|
49. **Запуск тонкого клиента** - В старой: Да, В новой: Да ✓
|
||||||
|
50. **Зачет оплаты** - В старой: Да, В новой: Да ✓
|
||||||
|
51. **Изменение дополнительных сведений** - В старой: Да, В новой: Да ✓
|
||||||
|
52. **Изменение и выполнение задач** - В старой: Да, В новой: Да ✓
|
||||||
|
53. **Изменение финансовой группы номенклатуры** - В старой: Да, В новой: Да ✓
|
||||||
|
54. **Использование анализа статей кредитов и депозитов** - В старой: Да, В новой: Да ✓
|
||||||
|
55. **Использование дополнительных отчетов и обработок (CRM)** - В старой: Да, В новой: Нет
|
||||||
|
56. **Использование дополнительных отчетов и обработок УТ** - В старой: Да, В новой: Да ✓
|
||||||
|
57. **Использование интеграции с 1С:Документооборотом** - В старой: Да, В новой: Нет
|
||||||
|
58. **Использование обработки текущие дела** - В старой: Да, В новой: Да ✓
|
||||||
|
59. **Использование подключаемого оборудования** - В старой: Да, В новой: Да ✓
|
||||||
|
60. **Использование реестра кредитов и депозитов** - В старой: Да, В новой: Да ✓
|
||||||
|
61. **Настройка синхронизации данных** - В старой: Да, В новой: Нет
|
||||||
|
62. **Подтверждение реализации по ставке НДС 0%** - В старой: Да, В новой: Да ✓
|
||||||
|
63. **Просмотр отчетов по движению денежных средств** - В старой: Да, В новой: Да ✓
|
||||||
|
64. **Раздел запасы** - В старой: Да, В новой: Нет
|
||||||
|
65. **Раздел нормативно справочная информация** - В старой: Да, В новой: Да ✓
|
||||||
|
66. **Раздел органайзер** - В старой: Да, В новой: Да ✓
|
||||||
|
67. **Раздел отчеты и мониторинг** - В старой: Да, В новой: Нет
|
||||||
|
68. **Раздел продажи** - В старой: Да, В новой: Да ✓
|
||||||
|
69. **Раздел склад** - В старой: Да, В новой: Да ✓
|
||||||
|
70. **Редактирование реквизитов объектов** - В старой: Да, В новой: Да ✓
|
||||||
|
71. **Редактирование, отправка по почте, сохранение в файл печатных форм** - В старой: Да, В новой: Да ✓
|
||||||
|
72. **Сохранение данных пользователя** - В старой: Да, В новой: Да ✓
|
||||||
|
73. **Чтение 1С:Номенклатуры** - В старой: Нет, В новой: Да ✓
|
||||||
|
74. **Чтение авансовых отчетов** - В старой: Да, В новой: Да ✓
|
||||||
|
75. **Чтение актов выполненных работ** - В старой: Да, В новой: Да ✓
|
||||||
|
76. **Чтение ассортимента** - В старой: Да, В новой: Да ✓
|
||||||
|
77. **Чтение базовой нормативно-справочной информации** - В старой: Да, В новой: Нет
|
||||||
|
78. **Чтение ввода остатков** - В старой: Да, В новой: Да ✓
|
||||||
|
79. **Чтение видов карт лояльности** - В старой: Да, В новой: Да ✓
|
||||||
|
80. **Чтение внесения выемки ДС по кассе ККМ** - В старой: Да, В новой: Да ✓
|
||||||
|
81. **Чтение возвратов товаров от клиентов** - В старой: Да, В новой: Да ✓
|
||||||
|
82. **Чтение выкупов возвратной тары клиентами** - В старой: Да, В новой: Да ✓
|
||||||
|
83. **Чтение выкупов возвратной тары у поставщиков** - В старой: Да, В новой: Да ✓
|
||||||
|
84. **Чтение выручки от продаж** - В старой: Да, В новой: Да ✓
|
||||||
|
85. **Чтение движений Денежные средства - Доходы/Расходы** - В старой: Да, В новой: Да ✓
|
||||||
|
86. **Чтение движений Денежные средства - Контрагент** - В старой: Да, В новой: Да ✓
|
||||||
|
87. **Чтение движений денежных средств** - В старой: Да, В новой: Да ✓
|
||||||
|
88. **Чтение договоров контрагентов** - В старой: Да, В новой: Да ✓
|
||||||
|
89. **Чтение договоров кредитов и депозитов** - В старой: Да, В новой: Да ✓
|
||||||
|
90. **Чтение документов корректировки задолженности** - В старой: Да, В новой: Да ✓
|
||||||
|
91. **Чтение документов по учету НДС** - В старой: Да, В новой: Да ✓
|
||||||
|
92. **Чтение документов списания поступления безналичных ДС** - В старой: Да, В новой: Нет
|
||||||
|
93. **Чтение дополнительных отчетов и обработок** - В старой: Да, В новой: Да ✓
|
||||||
|
94. **Чтение заказов клиентов заявок на возврат товаров от клиента** - В старой: Да, В новой: Да ✓
|
||||||
|
95. **Чтение заказов на внутреннее потребление** - В старой: Да, В новой: Да ✓
|
||||||
|
96. **Чтение заказов на перемещение** - В старой: Да, В новой: Да ✓
|
||||||
|
97. **Чтение заказов на сборку** - В старой: Да, В новой: Да ✓
|
||||||
|
98. **Чтение заказов поставщикам** - В старой: Да, В новой: Да ✓
|
||||||
|
99. **Чтение заявок на расход ДС** - В старой: Да, В новой: Да ✓
|
||||||
|
100. **Чтение информации по номенклатуре** - В старой: Да, В новой: Да ✓
|
||||||
|
101. **Чтение информации по партнерам** - В старой: Да, В новой: Да ✓
|
||||||
|
102. **Чтение карт лояльности** - В старой: Да, В новой: Да ✓
|
||||||
|
103. **Чтение кассовых ордеров** - В старой: Да, В новой: Да ✓
|
||||||
|
104. **Чтение категорий эксплуатации** - В старой: Да, В новой: Да ✓
|
||||||
|
105. **Чтение движений номенклатура контрагент** - В старой: Нет, В новой: Да ✓
|
||||||
|
106. **Чтение движений по акцизам** - В старой: Нет, В новой: Да ✓
|
||||||
|
107. **Чтение движений Номенклатура - Доходы\Расходы** - В старой: Нет, В новой: Да ✓
|
||||||
|
108. **Чтение движений Номенклатура - Номенклатура** - В старой: Нет, В новой: Да ✓
|
||||||
|
109. **Чтение назначений** - В старой: Да, В новой: Да ✓
|
||||||
|
110. **Чтение нормативно справочной информации** - В старой: Да, В новой: Да ✓
|
||||||
|
111. **Чтение ожидаемых поступлений денежных средств** - В старой: Да, В новой: Да ✓
|
||||||
|
112. **Чтение операций по платежной карте** - В старой: Да, В новой: Да ✓
|
||||||
|
113. **Чтение операций с подарочными сертификатами** - В старой: Да, В новой: Да ✓
|
||||||
|
114. **Чтение организаций и банковских счетов организаций** - В старой: Да, В новой: Да ✓
|
||||||
|
115. **Чтение ордеров на отражение излишков недостач порчи** - В старой: Да, В новой: Да ✓
|
||||||
|
116. **Чтение ордеров на товары** - В старой: Да, В новой: Да ✓
|
||||||
|
117. **Чтение остатков безналичных денежных средств** - В старой: Да, В новой: Да ✓
|
||||||
|
118. **Чтение остатков денежных средств в кассе ККМ** - В старой: Да, В новой: Да ✓
|
||||||
|
119. **Чтение остатков денежных средств к расходу** - В старой: Да, В новой: Да ✓
|
||||||
|
120. **Чтение остатков денежных средств у подотчетных лиц** - В старой: Да, В новой: Да ✓
|
||||||
|
121. **Чтение остатков доступных товаров** - В старой: Да, В новой: Да ✓
|
||||||
|
122. **Чтение остатков заказов клиентов заявок на возврат** - В старой: Да, В новой: Да ✓
|
||||||
|
123. **Чтение остатков заказов на внутреннее потребление** - В старой: Да, В новой: Да ✓
|
||||||
|
124. **Чтение остатков заказов на перемещение** - В старой: Да, В новой: Да ✓
|
||||||
|
125. **Чтение остатков заказов на сборку** - В старой: Да, В новой: Да ✓
|
||||||
|
126. **Чтение остатков заказов поставщикам** - В старой: Да, В новой: Да ✓
|
||||||
|
127. **Чтение остатков наличных денежных средств** - В старой: Да, В новой: Да ✓
|
||||||
|
128. **Чтение остатков переданной возвратной тары** - В старой: Да, В новой: Да ✓
|
||||||
|
129. **Чтение остатков принятой возвратной тары** - В старой: Да, В новой: Да ✓
|
||||||
|
130. **Чтение остатков расчетов по эквайрингу** - В старой: Да, В новой: Да ✓
|
||||||
|
131. **Чтение остатков товаров к отгрузке** - В старой: Да, В новой: Да ✓
|
||||||
|
132. **Чтение остатков товаров к поступлению** - В старой: Да, В новой: Да ✓
|
||||||
|
133. **Чтение остатков товаров на складах** - В старой: Да, В новой: Да ✓
|
||||||
|
134. **Чтение отчетов банка по операциям эквайринга** - В старой: Да, В новой: Да ✓
|
||||||
|
135. **Чтение отчетов комиссионеров** - В старой: Да, В новой: Да ✓
|
||||||
|
136. **Чтение отчетов комитенту** - В старой: Да, В новой: Да ✓
|
||||||
|
137. **Чтение отчетов о розничных продажах** - В старой: Да, В новой: Да ✓
|
||||||
|
138. **Чтение пересчетов товаров** - В старой: Да, В новой: Да ✓
|
||||||
|
139. **Чтение претензий клиентов** - В старой: Да, В новой: Да ✓
|
||||||
|
140. **Чтение распоряжений на перемещение денежных средств** - В старой: Да, В новой: Да ✓
|
||||||
|
141. **Чтение расчетов с клиентами** - В старой: Да, В новой: Да ✓
|
||||||
|
142. **Чтение расчетов с поставщиками** - В старой: Да, В новой: Да ✓
|
||||||
|
143. **Чтение реализаций товаров услуг** - В старой: Да, В новой: Да ✓
|
||||||
|
144. **Чтение регистров НДС** - В старой: Да, В новой: Да ✓
|
||||||
|
145. **Чтение регистров партий** - В старой: Да, В новой: Да ✓
|
||||||
|
146. **Чтение сделок** - В старой: Да, В новой: Да ✓
|
||||||
|
147. **Чтение себестоимости товаров** - В старой: Да, В новой: Да ✓
|
||||||
|
148. **Чтение соглашений с клиентами** - В старой: Да, В новой: Да ✓
|
||||||
|
149. **Чтение соглашений с поставщиками** - В старой: Да, В новой: Да ✓
|
||||||
|
150. **Чтение состояний отгрузки** - В старой: Да, В новой: Нет
|
||||||
|
151. **Чтение счетов на оплату клиентам** - В старой: Да, В новой: Да ✓
|
||||||
|
152. **Чтение счетов-фактур выданных** - В старой: Да, В новой: Да ✓
|
||||||
|
153. **Чтение счетов-фактур выданных на аванс** - В старой: Да, В новой: Да ✓
|
||||||
|
154. **Чтение счетов-фактур комиссионеру** - В старой: Да, В новой: Да ✓
|
||||||
|
155. **Чтение счетов-фактур комитента** - В старой: Да, В новой: Да ✓
|
||||||
|
156. **Чтение счетов-фактур на неподтвержденную реализацию по ставке 0%** - В старой: Да, В новой: Да ✓
|
||||||
|
157. **Чтение счетов-фактур налогового агента** - В старой: Да, В новой: Да ✓
|
||||||
|
158. **Чтение счетов-фактур полученных** - В старой: Да, В новой: Да ✓
|
||||||
|
159. **Чтение счетов-фактур полученных на аванс** - В старой: Да, В новой: Да ✓
|
||||||
|
160. **Чтение счетов-фактур полученных налогового агента** - В старой: Да, В новой: Да ✓
|
||||||
|
161. **Чтение таможенных деклараций на импорт** - В старой: Да, В новой: Да ✓
|
||||||
|
162. **Чтение товаров к оформлению излишков недостач** - В старой: Да, В новой: Да ✓
|
||||||
|
163. **Чтение товаров организаций** - В старой: Да, В новой: Да ✓
|
||||||
|
164. **Чтение упаковочных листов** - В старой: Да, В новой: Да ✓
|
||||||
|
165. **Чтение физических лиц** - В старой: Да, В новой: Да ✓
|
||||||
|
166. **Чтение финансовых результатов** - В старой: Да, В новой: Да ✓
|
||||||
|
167. **Чтение цен номенклатуры** - В старой: Да, В новой: Да ✓
|
||||||
|
168. **Чтение цен партнеров** - В старой: Да, В новой: Да ✓
|
||||||
|
169. **Чтение чеков ККМ** - В старой: Да, В новой: Да ✓
|
||||||
|
170. **Чтение электронных документов** - В старой: Нет (дважды), В новой: Да ✓
|
||||||
|
|
||||||
|
## Итоговый список ролей для включения в новой системе
|
||||||
|
|
||||||
|
Роли, которые были "Да" в старой системе, но "Нет" в новой (требуют включения):
|
||||||
|
|
||||||
|
1. Базовые права (CRM)
|
||||||
|
2. Ввод документа "Отчет по работам" (CRM)
|
||||||
|
3. Выполнение обмена электронными документами
|
||||||
|
4. Выполнение синхронизации данных
|
||||||
|
5. Добавление и изменение документов по банку
|
||||||
|
6. Добавление и изменение реализаций товаров услуг
|
||||||
|
7. Добавление изменение заказов клиентов
|
||||||
|
8. Добавление изменение узлов планов обмена
|
||||||
|
9. Использование дополнительных отчетов и обработок (CRM)
|
||||||
|
10. Использование интеграции с 1С:Документооборотом
|
||||||
|
11. Настройка синхронизации данных
|
||||||
|
12. Раздел запасы
|
||||||
|
13. Раздел отчеты и мониторинг
|
||||||
|
14. Чтение базовой нормативно-справочной информации
|
||||||
|
15. Чтение документов списания поступления безналичных ДС
|
||||||
|
16. Чтение состояний отгрузки
|
||||||
|
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
---
|
||||||
|
title: Сверка ролей с учетом переименований
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Сверка ролей с учетом переименований
|
||||||
|
|
||||||
|
## Важное замечание
|
||||||
|
В старой системе роли могут называться "Добавление изменение...", а в новой системе "Добавление и изменение...". Это одна и та же роль с разным названием.
|
||||||
|
|
||||||
|
## Роли, требующие включения в новой системе
|
||||||
|
|
||||||
|
### 1. Роли, которые точно нужно включить (названия совпадают или есть соответствие):
|
||||||
|
|
||||||
|
1. **Базовые права (CRM)**
|
||||||
|
- Старая: "Базовые права (CRM)" - Да
|
||||||
|
- Новая: "Базовые права (CRM)" - Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
2. **Ввод документа "Отчет по работам" (CRM)**
|
||||||
|
- Старая: "Ввод документа "Отчет по работам" (CRM)" - Да
|
||||||
|
- Новая: "Ввод документа "Отчет по работам" (CRM)" - Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
3. **Выполнение обмена электронными документами**
|
||||||
|
- Старая: "Выполнение обмена электронными документами" - Да
|
||||||
|
- Новая: Отсутствует в списке
|
||||||
|
- **Действие: Проверить наличие и включить**
|
||||||
|
|
||||||
|
4. **Выполнение синхронизации данных**
|
||||||
|
- Старая: "Выполнение синхронизации данных" - Да
|
||||||
|
- Новая: "Выполнение синхронизации данных" - Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
5. **Добавление и изменение документов по банку**
|
||||||
|
- Старая: "Добавление и изменение документов по банку" - Да
|
||||||
|
- Новая: "Добавление и изменение документов по банку" - Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
6. **Добавление и изменение реализаций товаров услуг**
|
||||||
|
- Старая: "Добавление и изменение реализаций товаров услуг" - Да
|
||||||
|
- Новая: "Добавление и изменение реализаций товаров услуг" - Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
7. **Добавление и изменение заказов клиентов**
|
||||||
|
- Старая: "Добавление изменение заказов клиентов" - Да
|
||||||
|
- Новая: "Добавление и изменение заказов клиентов" - Нет (или отсутствует)
|
||||||
|
- **Примечание:** Название отличается ("изменение" vs "и изменение")
|
||||||
|
- **Действие: Найти роль "Добавление и изменение заказов клиентов" и включить**
|
||||||
|
|
||||||
|
8. **Добавление и изменение узлов планов обмена**
|
||||||
|
- Старая: "Добавление изменение узлов планов обмена" - Да
|
||||||
|
- Новая: "Добавление и изменение узлов планов обмена" - Нет (или отсутствует)
|
||||||
|
- **Примечание:** Название отличается ("изменение" vs "и изменение")
|
||||||
|
- **Действие: Найти роль "Добавление и изменение узлов планов обмена" и включить**
|
||||||
|
|
||||||
|
9. **Использование дополнительных отчетов и обработок** ⚠️ ПЕРЕИМЕНОВАНИЕ
|
||||||
|
- Старая: "Использование дополнительных отчетов и обработок (CRM)" - Да
|
||||||
|
- Новая: "Использование дополнительных отчетов и обработок" - Нет
|
||||||
|
- **Примечание:** В новой системе убрано "(CRM)" из названия
|
||||||
|
- **Действие: Включить роль "Использование дополнительных отчетов и обработок"**
|
||||||
|
|
||||||
|
10. **Использование интеграции с 1С:Документооборотом**
|
||||||
|
- Старая: "Использование интеграции с 1С:Документооборотом" - Да
|
||||||
|
- Новая: "Использование интеграции с 1С:Документооборотом" - Нет
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
11. **Настройка синхронизации данных** ⚠️ ОТСУТСТВУЕТ
|
||||||
|
- Старая: "Настройка синхронизации данных" - Да
|
||||||
|
- Новая: Отсутствует в списке
|
||||||
|
- **Действие:** ⚠️ Проверить, есть ли под другим названием (например, "Настройка синхронизации файлов" или аналогичная)
|
||||||
|
|
||||||
|
12. **Раздел запасы**
|
||||||
|
- Старая: "Раздел запасы" - Да
|
||||||
|
- Новая: "Раздел запасы" - Нет (или отсутствует)
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
13. **Раздел отчеты и мониторинг**
|
||||||
|
- Старая: "Раздел отчеты и мониторинг" - Да
|
||||||
|
- Новая: "Раздел отчеты и мониторинг" - Нет (или отсутствует)
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
14. **Чтение базовой нормативно-справочной информации**
|
||||||
|
- Старая: "Чтение базовой нормативно-справочной информации" - Да
|
||||||
|
- Новая: "Чтение базовой нормативно-справочной информации" - Нет (или отсутствует)
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
15. **Чтение документов списания поступления безналичных ДС**
|
||||||
|
- Старая: "Чтение документов списания поступления безналичных ДС" - Да
|
||||||
|
- Новая: "Чтение документов списания поступления безналичных ДС" - Нет (или отсутствует)
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
16. **Чтение состояний отгрузки**
|
||||||
|
- Старая: "Чтение состояний отгрузки" - Да
|
||||||
|
- Новая: "Чтение состояний отгрузки" - Нет (или отсутствует)
|
||||||
|
- **Действие: Включить**
|
||||||
|
|
||||||
|
## Роли с возможными переименованиями (требуют проверки)
|
||||||
|
|
||||||
|
Следующие роли из старой системы с "Да" могут иметь аналоги в новой системе с другим названием:
|
||||||
|
|
||||||
|
### Паттерн: "Добавление изменение..." → "Добавление и изменение..."
|
||||||
|
|
||||||
|
1. **Добавление изменение заказов клиентов** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение заказов клиентов"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
2. **Добавление изменение узлов планов обмена** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение узлов планов обмена"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
3. **Добавление изменение корректировок обособленного учета запасов** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение корректировок обособленного учета запасов"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
4. **Добавление изменение корректировок реализаций** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение корректировок реализаций"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
5. **Добавление изменение листов кассовой книги** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение листов кассовой книги"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
## Методика проверки
|
||||||
|
|
||||||
|
При сверке ролей необходимо:
|
||||||
|
|
||||||
|
1. **Искать точное совпадение** названия роли
|
||||||
|
2. **Если не найдено**, искать вариант с "и изменение" вместо "изменение"
|
||||||
|
3. **Если не найдено**, искать вариант с "изменение" вместо "и изменение"
|
||||||
|
4. **Проверять**, что функциональность роли соответствует
|
||||||
|
|
||||||
|
## Итоговый список для включения (с учетом переименований)
|
||||||
|
|
||||||
|
После проверки всех возможных переименований, следующие роли должны быть включены в новой системе:
|
||||||
|
|
||||||
|
1. Базовые права (CRM)
|
||||||
|
2. Ввод документа "Отчет по работам" (CRM)
|
||||||
|
3. Выполнение обмена электронными документами (если существует)
|
||||||
|
4. Выполнение синхронизации данных
|
||||||
|
5. Добавление и изменение документов по банку
|
||||||
|
6. Добавление и изменение реализаций товаров услуг
|
||||||
|
7. Добавление и изменение заказов клиентов (проверить название)
|
||||||
|
8. Добавление и изменение узлов планов обмена (проверить название)
|
||||||
|
9. Использование дополнительных отчетов и обработок (в новой системе без "(CRM)")
|
||||||
|
10. Использование интеграции с 1С:Документооборотом
|
||||||
|
11. Настройка синхронизации данных (ОТСУТСТВУЕТ в новой системе - проверить наличие)
|
||||||
|
12. Раздел запасы
|
||||||
|
13. Раздел отчеты и мониторинг
|
||||||
|
14. Чтение базовой нормативно-справочной информации
|
||||||
|
15. Чтение документов списания поступления безналичных ДС
|
||||||
|
16. Чтение состояний отгрузки
|
||||||
|
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
# Сводка по работам: перенос и настройка актуальной формы УПД
|
||||||
|
|
||||||
|
## Исполнитель доработки
|
||||||
|
|
||||||
|
- Руководитель ИТ отдела ООО ФК "РАНА" — Кудрявцев Михаил Александрович.
|
||||||
|
- Контакт: `kma@rhana.com`.
|
||||||
|
|
||||||
|
## 1. Контур работ
|
||||||
|
|
||||||
|
- **Целевая рабочая конфигурация:** «Управление торговлей и взаимоотношениями с клиентами, редакция 3.0», версия **`3.0.22.28`** (рабочий контур проекта CRM3).
|
||||||
|
- **Расширение, в котором выполнены доработки:** `Графа5бвУПД` (синоним: «Графа5бв УПД»), версия **`1.0.2.93`**.
|
||||||
|
- **Эталонная конфигурация (источник логики и макетов):** «Управление торговлей и взаимоотношениями с клиентами, редакция 3.0», версия **`3.1.35.11`**.
|
||||||
|
- **Источник актуальных макетов УПД:** общий макет `ПФ_MXL_УниверсальныйПередаточныйДокумент2026` и связанный вариант `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`.
|
||||||
|
|
||||||
|
## 2. Цель доработки
|
||||||
|
|
||||||
|
Обеспечить корректную печать актуальной формы УПД (формат 2026) в целевой конфигурации с сохранением совместимости со старыми форматами, а также с адаптацией к фактической структуре данных рабочего контура CRM3.
|
||||||
|
|
||||||
|
## 3. Основные выполненные работы
|
||||||
|
|
||||||
|
### 3.0. Что вынесено из расширения `Рана` («Рана CRM3») в `Графа5бвУПД` («Графа5бв УПД»)
|
||||||
|
|
||||||
|
В рамках работ по переносу актуальной формы УПД логика, которая ранее присутствовала/дополнялась в проектном расширении `Рана` («Рана CRM3»), была **сконцентрирована и реализована** в расширении `Графа5бвУПД` («Графа5бв УПД») как в единой точке внедрения актуального УПД (2026) для рабочего контура.
|
||||||
|
|
||||||
|
Важно: по факту расширение `Графа5бвУПД` реализует **полный контур интеграции формы УПД** в рабочую конфигурацию (макеты, ветки выбора, заполнение шапки/табличной части/подвала, ответственные лица, представление номенклатуры, серия, срок годности и совместимость с ранее действовавшими форматами УПД).
|
||||||
|
То есть это **не** локальная доработка только графы 5б в старых формах, а самостоятельная поставка интеграции актуальной формы УПД в полном объеме.
|
||||||
|
|
||||||
|
Ключевые элементы, которые были вынесены (перереализованы в `Графа5бвУПД`, с учетом структуры данных целевой конфигурации):
|
||||||
|
|
||||||
|
- **Контур печати УПД 2026/2026Прослеж**: подключение и заполнение актуальных макетов `ПФ_MXL_УниверсальныйПередаточныйДокумент2026` и `...2026Прослеж` в обработке `ПечатьОбщихФорм` (вместо разрозненных проектных поправок).
|
||||||
|
- **Графа 5б и связанные сценарии отбора**: стабилизация формирования строки 5б (в том числе устранение заглушек и дубликатов, корректный отбор данных при пересечениях реквизитов платежно-расчетных документов и счетов-фактур на аванс, а также использование резервного алгоритма заполнения при пустых значениях шапки).
|
||||||
|
- **Подвал и нумерация листов в актуальных формах**: восстановление/заполнение `ПодвалНакладной` и корректная обработка `НумерацияЛистов` именно для новых макетов, с учетом отличий параметров от ранее действовавших форм.
|
||||||
|
- **Ответственные лица**: унификация заполнения ответственных для УПД 2026 через `ОтветственныеЛицаОрганизаций` (выбор актуального назначения на дату документа, исключение завершенных назначений, выравнивание поведения полей под требования ранее действовавших форм УПД).
|
||||||
|
- **Представление номенклатуры, серия и срок годности**: перенос поведения, характерного для печати в `Рана` (добавление серии и срока годности в строку наименования), в `Графа5бвУПД` для форм 2026 — с отдельными служебными функциями с префиксом `упд5б_` и с резервными источниками данных (печать из СФ или из документа-основания).
|
||||||
|
|
||||||
|
Примечание: расширение `Рана` («Рана CRM3») продолжает использоваться для иных проектных доработок рабочего контура, но перенос и сопровождение актуальной формы УПД (2026) выполнены как самостоятельная поставка через `Графа5бвУПД` («Графа5бв УПД»).
|
||||||
|
|
||||||
|
### 3.1. Перенос и подключение формы УПД 2026
|
||||||
|
|
||||||
|
- Перенесен и подключен контур печати актуального УПД на базе макетов 2026/2026Прослеж.
|
||||||
|
- Сохранены ветки выбора макетов для документов прошлых периодов.
|
||||||
|
- Добавлены проверки и ветвления по периодам/вариантам макета в обработке печати.
|
||||||
|
|
||||||
|
### 3.2. Адаптация заполнения шапки и табличной части
|
||||||
|
|
||||||
|
- Исправлено заполнение граф `1а`, `А`, `5`, `9` и итоговых значений для форм 2026.
|
||||||
|
- Добавлено корректное заполнение графы `10а` (краткое наименование страны).
|
||||||
|
- Актуализировано формирование параметров `5а` и `5б` (включая защиту от пустых/фиктивных значений).
|
||||||
|
- Добавлены резервные сценарии заполнения при различии источников данных между СФ и документом-основанием.
|
||||||
|
|
||||||
|
### 3.3. Графа 5б (авансовые СФ)
|
||||||
|
|
||||||
|
- Исключен вывод фиктивного фрагмента `исправление № -- от --`.
|
||||||
|
- Убраны дубли фрагментов в строке 5б.
|
||||||
|
- Добавлен контроль контрагента при подборе СФА, чтобы исключить «чужие» документы при совпадении реквизитов ПРД.
|
||||||
|
|
||||||
|
### 3.4. Подвал формы и нумерация листов
|
||||||
|
|
||||||
|
- Восстановлен и заполнен блок `ПодвалНакладной` для 2026-форм.
|
||||||
|
- Настроено корректное заполнение параметров даты/основания/листов в новом макете.
|
||||||
|
- Исправлена логика `НумерацияЛистов` с учетом отличий параметров макетов 2026 от ранее действовавших форм.
|
||||||
|
- Удалены обращения к недоступным в целевой базе процедурам.
|
||||||
|
|
||||||
|
### 3.5. Ответственные лица
|
||||||
|
|
||||||
|
- Настроено заполнение ответственных по `Справочник.ОтветственныеЛицаОрганизаций`.
|
||||||
|
- Реализован выбор актуальных назначений на дату документа с учетом периода действия записи.
|
||||||
|
- Исключено попадание в печать сотрудников с завершенным сроком действия назначения.
|
||||||
|
- Выровнена логика полей `ФИОРуководителя`, `ФИООтветственного`, `ДолжностьОтветственного`, `ФИОГлавногоБухгалтера` относительно требуемого поведения ранее действовавших форм УПД.
|
||||||
|
|
||||||
|
### 3.6. Наименование номенклатуры, серия и срок годности
|
||||||
|
|
||||||
|
- Формирование `ТоварНаименование` переведено на алгоритм представления номенклатуры, совместимый с ранее действовавшими правилами печати УПД.
|
||||||
|
- Добавлен вывод номера серии и срока годности для позиций с серийным учетом.
|
||||||
|
- Реализовано устранение дубля: если характеристика совпадает с номером серии, характеристика в скобках не выводится.
|
||||||
|
- Добавлены резервные механизмы получения серии и срока годности из разных источников (`СФ`, `ДокументОснование`, текущая строка печати).
|
||||||
|
|
||||||
|
## 4. Учет различий структуры данных целевой базы
|
||||||
|
|
||||||
|
При переносе логики из эталона выполнена адаптация под фактическую структуру данных рабочего контура CRM3:
|
||||||
|
|
||||||
|
- разные источники строк при печати из `СчетФактураВыданный` и `РеализацияТоваровУслуг`;
|
||||||
|
- неодинаковый состав реквизитов в ветках данных печати;
|
||||||
|
- отсутствие части вспомогательных процедур/параметров, присутствующих в эталоне;
|
||||||
|
- необходимость безопасных проверок наличия реквизитов и параметров перед заполнением.
|
||||||
|
|
||||||
|
## 5. Ключевые объекты конфигурации, затронутые доработкой
|
||||||
|
|
||||||
|
- обработка `ПечатьОбщихФорм` (модуль менеджера расширения);
|
||||||
|
- документ `СчетФактураВыданный` (модуль менеджера расширения);
|
||||||
|
- общий макет `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`;
|
||||||
|
- общий макет `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`;
|
||||||
|
- справочник `ОтветственныеЛицаОрганизаций`.
|
||||||
|
|
||||||
|
## 6. Результат
|
||||||
|
|
||||||
|
В целевой конфигурации обеспечена рабочая печать актуальной формы УПД 2026 с корректным заполнением:
|
||||||
|
|
||||||
|
- шапки, табличной части, графы 5б и итогов;
|
||||||
|
- ответственных лиц и подвала документа;
|
||||||
|
- наименования номенклатуры с учетом серии и срока годности (для серийного учета);
|
||||||
|
- совместимости с ранее действовавшими форматами УПД.
|
||||||
|
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
---
|
||||||
|
title: "Сводка: Риски нарушения уникальности CRM_ЖурналДокументов"
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Сводка: Риски нарушения уникальности CRM_ЖурналДокументов
|
||||||
|
|
||||||
|
## Результаты сравнения конфигураций
|
||||||
|
|
||||||
|
### Различия в структуре регистра
|
||||||
|
|
||||||
|
| Измерение | CRM3devLocal | CRM326_TEST (новая) |
|
||||||
|
|-----------|--------------|---------------------|
|
||||||
|
| **Клиент** | `CatalogRef.Партнеры` (только) | `CatalogRef.Партнеры` **ИЛИ** `CatalogRef.CRM_ПотенциальныеКлиенты` |
|
||||||
|
| **Объект** | `Characteristic.CRM_ОбъектыЖурналаДокументов` | `Characteristic.CRM_ОбъектыЖурналаДокументов` |
|
||||||
|
| **CRM_Интерес** | `DocumentRef.CRM_Интерес` | `DocumentRef.CRM_Интерес` |
|
||||||
|
| **ГлавнаяЗапись** | `Boolean` | `Boolean` |
|
||||||
|
|
||||||
|
## Ссылки, которые станут NULL после реструктуризации
|
||||||
|
|
||||||
|
### 1. Измерение "Клиент"
|
||||||
|
- ✅ **Риск:** Все ссылки на `CRM_ПотенциальныеКлиенты` будут обнулены
|
||||||
|
- ✅ **Причина:** В новой конфигурации это измерение поддерживает только `Партнеры`
|
||||||
|
|
||||||
|
### 2. Измерение "Объект" (характеристика)
|
||||||
|
- ✅ **Риск:** Ссылки на удаляемые типы объектов будут обнулены
|
||||||
|
- ✅ **Удаляемые типы:**
|
||||||
|
- `СправочникСсылка.CRM_ПотенциальныеКлиенты`
|
||||||
|
- `СправочникСсылка.CRM_ИсточникиКонтакта`
|
||||||
|
- `СправочникСсылка.CRM_КатегорииВрача`
|
||||||
|
- `СправочникСсылка.CRM_НаучныеСтепени`
|
||||||
|
- `СправочникСсылка.CRM_ОбластьИнтересов`
|
||||||
|
- `СправочникСсылка.CRM_Обращения`
|
||||||
|
- `СправочникСсылка.CRM_Специализация`
|
||||||
|
- `СправочникСсылка.CRM_Специальность`
|
||||||
|
- `СправочникСсылка.Отделы`
|
||||||
|
- `ДокументСсылка.УдалитьCRM_Сделка`
|
||||||
|
- `ДокументСсылка.УдалитьCRM_Событие`
|
||||||
|
- `ДокументСсылка.удалитьCRM_Мероприятие`
|
||||||
|
- `ДокументСсылка.удалитьCRM_Планирование`
|
||||||
|
- `ДокументСсылка.CRM_ПланированиеПоОтделам`
|
||||||
|
|
||||||
|
### 3. Измерение "CRM_Интерес"
|
||||||
|
- ✅ **Риск:** Ссылки на удаляемые документы будут обнулены
|
||||||
|
- ✅ **Удаляемые типы документов:**
|
||||||
|
- `Документ.УдалитьCRM_Сделка`
|
||||||
|
- `Документ.УдалитьCRM_Событие`
|
||||||
|
- `Документ.удалитьCRM_Мероприятие`
|
||||||
|
- `Документ.удалитьCRM_Планирование`
|
||||||
|
- `Документ.CRM_ПланированиеПоОтделам`
|
||||||
|
|
||||||
|
## Риски нарушения уникальности
|
||||||
|
|
||||||
|
### Критический риск #1: Обнуление "Клиент"
|
||||||
|
**Сценарий:**
|
||||||
|
- Есть записи с `Клиент=CRM_ПотенциальныеКлиенты.*`
|
||||||
|
- Есть записи с `Клиент=NULL`
|
||||||
|
- После обнуления все записи с `CRM_ПотенциальныеКлиенты` станут иметь `Клиент=NULL`
|
||||||
|
- **Результат:** Появление дубликатов
|
||||||
|
|
||||||
|
### Критический риск #2: Обнуление "Объект"
|
||||||
|
**Сценарий:**
|
||||||
|
- Есть несколько записей с разными значениями `Объект`, ссылающимися на удаляемые типы
|
||||||
|
- После обнуления все эти записи будут иметь `Объект=NULL`
|
||||||
|
- **Результат:** Появление дубликатов, если остальные измерения совпадают
|
||||||
|
|
||||||
|
### Критический риск #3: Обнуление "CRM_Интерес"
|
||||||
|
**Сценарий:**
|
||||||
|
- Есть несколько записей с разными значениями `CRM_Интерес`, ссылающимися на удаляемые документы
|
||||||
|
- После обнуления все эти записи будут иметь `CRM_Интерес=NULL`
|
||||||
|
- **Результат:** Появление дубликатов, если остальные измерения совпадают
|
||||||
|
|
||||||
|
### Максимальный риск: Комбинированное обнуление
|
||||||
|
**Сценарий:**
|
||||||
|
- Обнуляются несколько измерений одновременно
|
||||||
|
- **Результат:** Максимальная вероятность появления дубликатов
|
||||||
|
|
||||||
|
## Рекомендуемые действия
|
||||||
|
|
||||||
|
1. ✅ **Выполнить проверку** скриптом `check_duplicates_crm_journal.bsl`
|
||||||
|
2. ✅ **Удалить проблемные записи** перед реструктуризацией:
|
||||||
|
- Записи с `Клиент=CRM_ПотенциальныеКлиенты.*`
|
||||||
|
- Записи с `Объект`, ссылающимся на удаляемые типы
|
||||||
|
- Записи с `CRM_Интерес`, ссылающимся на удаляемые документы
|
||||||
|
3. ✅ **Проверить уникальность** после реструктуризации
|
||||||
|
|
||||||
|
## Статус проверки
|
||||||
|
|
||||||
|
- ✅ Структура регистра проанализирована
|
||||||
|
- ✅ Риски идентифицированы
|
||||||
|
- ✅ Скрипт проверки готов к использованию
|
||||||
|
- ⚠️ **Требуется выполнение проверки на реальной базе данных**
|
||||||
|
|
||||||
@@ -0,0 +1,566 @@
|
|||||||
|
---
|
||||||
|
title: Список объектов для удаления из состава подсистем
|
||||||
|
version: 1.0
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
date_created: 2025-12-09
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Список объектов для удаления из состава подсистем
|
||||||
|
|
||||||
|
> 📚 **См. также:** [Оглавление документов](INDEX.md) | [Анализ ошибок обновления](Анализ_ошибок_обновления.md) | [Инструкция по исправлению](Инструкция_по_исправлению.md) | [Проблема неуникальности регистра CRM_ЖурналДокументов](Проблема_неуникальности_регистра_CRM_ЖурналДокументов.md)
|
||||||
|
|
||||||
|
## Контекст документа
|
||||||
|
|
||||||
|
**Важно:** Данный документ представляет собой **промежуточный список** на одной из итераций применения конфигурации новой системы **CRM3-26** поверх рабочей конфигурации **CRM3**.
|
||||||
|
|
||||||
|
### Процесс обновления
|
||||||
|
|
||||||
|
Обновление выполняется поэтапно:
|
||||||
|
1. **Исходная конфигурация:** Рабочая конфигурация CRM3
|
||||||
|
2. **Целевая конфигурация:** Новая система CRM3-26 (CRM326/CRM326_TEST)
|
||||||
|
3. **Промежуточные итерации:** Поэтапное применение обновлений с устранением ошибок на каждом этапе
|
||||||
|
|
||||||
|
### Текущая итерация
|
||||||
|
|
||||||
|
Данный список составлен для **текущей итерации** процесса обновления и содержит объекты, которые:
|
||||||
|
- Присутствуют в рабочей конфигурации CRM3
|
||||||
|
- Отсутствуют в целевой конфигурации CRM3-26
|
||||||
|
- Имеют ссылки в составе подсистем основной конфигурации
|
||||||
|
- Требуют удаления из состава подсистем для продолжения обновления
|
||||||
|
|
||||||
|
**Примечание:** После успешного применения обновления на данной итерации может потребоваться составление нового списка для следующей итерации, так как могут появиться новые ошибки и новые объекты, требующие удаления из состава подсистем.
|
||||||
|
|
||||||
|
## Назначение документа
|
||||||
|
|
||||||
|
Данный документ содержит список объектов, которые необходимо удалить из состава подсистем для успешного выполнения текущей итерации обновления конфигурации из `CRM326/CRM326_TEST` на `CRM3devLocal`.
|
||||||
|
|
||||||
|
**Важно:**
|
||||||
|
- Удаление объектов из состава подсистем **не удаляет сами объекты**, а только убирает их из списка объектов подсистемы
|
||||||
|
- Это необходимо для устранения ошибок при обновлении на текущей итерации
|
||||||
|
- После применения обновления может потребоваться дополнительная работа с конфигурацией
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_RhanaПодсистема.Состав
|
||||||
|
|
||||||
|
### Подписки на события
|
||||||
|
- `ПодпискаНаСобытие.rh_ПроверитьДатуЗапретаПередЗаписьюДокумента`
|
||||||
|
|
||||||
|
### Регламентные задания
|
||||||
|
- `РегламентноеЗадание.Диадок_РегламентныеДействия`
|
||||||
|
- `РегламентноеЗадание.tega_ВыгрузкаОстатковНаСайт`
|
||||||
|
|
||||||
|
### Константы
|
||||||
|
- `Константа.tega_ОсновнаяНастройкаВыгрузки`
|
||||||
|
- `Константа.rh_СкладСебестоимости`
|
||||||
|
|
||||||
|
### Общие формы
|
||||||
|
- `ОбщаяФорма.rh_ФормаНастроек`
|
||||||
|
|
||||||
|
### Справочники
|
||||||
|
- `Справочник.CRM_Специализация`
|
||||||
|
- `Справочник.Отделы`
|
||||||
|
- `Справочник.rh_СтатусыПодарочныхСертификатов`
|
||||||
|
- `Справочник.CRM_ОфисыКомпании1`
|
||||||
|
- `Справочник.р_FTPСоединения`
|
||||||
|
- `Справочник.tega_НастройкиВыгрузки`
|
||||||
|
|
||||||
|
### Документы
|
||||||
|
- `Документ.rh_ПланированиеПродаж`
|
||||||
|
- `Документ.rh_ОтражениеФактаПродаж`
|
||||||
|
- `Документ.rh_ПервичныеДокументы`
|
||||||
|
- `Документ.rh_ПервичныеДокументыМенеджер`
|
||||||
|
- `Документ.rh_ПервичныеДокументыМенеджерРеализация`
|
||||||
|
- `Документ.rh_ДвиженияДенежныеСредстваПрочиеАктивыПассивы`
|
||||||
|
- `Документ.rh_ДенежныеСредстваКПоступлениюНаличные`
|
||||||
|
- `Документ.rh_ДенежныеСредстваКСписаниюСПодотчетныхЛиц`
|
||||||
|
- `Документ.rh_РезервыСерийТоваров`
|
||||||
|
- `Документ.rh_ТоварыКОформлениюПоступления`
|
||||||
|
- `Документ.rh_УдалитьДвиженияНоменклатураПрочиеАктивыПассивы`
|
||||||
|
- `Документ.rh_УдалитьПартииЗатратНаВыпуск`
|
||||||
|
- `Документ.rh_УдалитьПланыПродажИВнутреннегоПотребления`
|
||||||
|
- `Документ.rh_УдалитьТоварыКОформлениюОтчетовКомитенту`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизаций`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизацийКОформлению`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизацийКПередаче`
|
||||||
|
- `Документ.rh_УдалитьТоварыПереданныеНаКомиссию`
|
||||||
|
|
||||||
|
### Отчеты
|
||||||
|
- `Отчет.rh_АнализСебестоимостиТоваров`
|
||||||
|
- `Отчет.rh_ТоварныйОтчетПоМенеджерам`
|
||||||
|
- `Отчет.удалитьОплаченныеЗаказы`
|
||||||
|
- `Отчет.rh_ПродажиПоПериодамИГруппам`
|
||||||
|
- `Отчет.rh_СебестоимостьОплаченыхТоваров`
|
||||||
|
- `Отчет.ВедомостьПоТоварамНаСкладахУЦ`
|
||||||
|
- `Отчет.rh_ВыручкаДенежныхСредств`
|
||||||
|
- `Отчет.rh_ВедомостьПоТоварамНаСкладахУЦРеализацияСписание`
|
||||||
|
- `Отчет.rh_ВедомостьПоТоварамНаСкладахПУРеализацияСписание`
|
||||||
|
- `Отчет.rh_РеестрОплаченныхНакладных`
|
||||||
|
- `Отчет.ЗаказыПоМенеджерам`
|
||||||
|
- `Отчет.rh_НеОплаченныеЗаказы`
|
||||||
|
- `Отчет.rh_СебестоимостьПоГруппам`
|
||||||
|
- `Отчет.rh_СебестоимостьПоГруппамПартии`
|
||||||
|
- `Отчет.rh_КонтрольВыполненияПланаЗакупок`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделам`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделамНеделям`
|
||||||
|
- `Отчет.ЧастныеЛицаПоВидамСеминаров`
|
||||||
|
- `Отчет.rh_ПланФактныйАнализПродаж`
|
||||||
|
- `Отчет.rh_ПодарочныеСертификаты`
|
||||||
|
- `Отчет.удалитьrh_ПланированиеПоОтделам2`
|
||||||
|
- `Отчет.rh_ОборотнаяВедомостьПоОстаткамТоваровПоПартиям`
|
||||||
|
- `Отчет.rh_ТоварыКоформлениюИзлишковИНедостач`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделам3`
|
||||||
|
- `Отчет.rh_ТоварыКомиссионерам`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделамИСебестоимость`
|
||||||
|
|
||||||
|
### Регистры сведений
|
||||||
|
- `РегистрСведений.rh_УчетДокументовПродаж`
|
||||||
|
- `РегистрСведений.rh_СвязиПоИзлишкамИНедостачам`
|
||||||
|
|
||||||
|
### Регистры накопления
|
||||||
|
- `РегистрНакопления.rh_ПланПродаж`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 47
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_Настройки.Состав
|
||||||
|
|
||||||
|
### Константы
|
||||||
|
- `Константа.tega_ОсновнаяНастройкаВыгрузки`
|
||||||
|
- `Константа.rh_СкладСебестоимости`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 2
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_НСИ.Состав
|
||||||
|
|
||||||
|
### Справочники
|
||||||
|
- `Справочник.CRM_Специализация`
|
||||||
|
- `Справочник.rh_СтатусыПодарочныхСертификатов`
|
||||||
|
- `Справочник.Диадок_ДополнительныеСправочники`
|
||||||
|
- `Справочник.Диадок_ЮрФизЛица`
|
||||||
|
- `Справочник.Диадок_Документы`
|
||||||
|
- `Справочник.Диадок_ПакетыДокументов`
|
||||||
|
- `Справочник.Диадок_ХранениеДанных`
|
||||||
|
- `Справочник.Диадок_Файлы`
|
||||||
|
- `Справочник.р_FTPСоединения`
|
||||||
|
- `Справочник.tega_НастройкиВыгрузки`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 10
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_ПодарочныеСертификаты.Состав
|
||||||
|
|
||||||
|
### Справочники
|
||||||
|
- `Справочник.rh_СтатусыПодарочныхСертификатов`
|
||||||
|
|
||||||
|
### Отчеты
|
||||||
|
- `Отчет.rh_ПодарочныеСертификаты`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 2
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_ПереходНаCRM3.Состав
|
||||||
|
|
||||||
|
### Справочники
|
||||||
|
- `Справочник.CRM_ОфисыКомпании1`
|
||||||
|
|
||||||
|
### Документы
|
||||||
|
- `Документ.rh_ПервичныеДокументы`
|
||||||
|
- `Документ.rh_ПервичныеДокументыМенеджер`
|
||||||
|
- `Документ.rh_ПервичныеДокументыМенеджерРеализация`
|
||||||
|
- `Документ.rh_ДвиженияДенежныеСредстваПрочиеАктивыПассивы`
|
||||||
|
- `Документ.rh_ДенежныеСредстваКПоступлениюНаличные`
|
||||||
|
- `Документ.rh_ДенежныеСредстваКСписаниюСПодотчетныхЛиц`
|
||||||
|
- `Документ.rh_РезервыСерийТоваров`
|
||||||
|
- `Документ.rh_ТоварыКОформлениюПоступления`
|
||||||
|
- `Документ.rh_УдалитьДвиженияНоменклатураПрочиеАктивыПассивы`
|
||||||
|
- `Документ.rh_УдалитьПартииЗатратНаВыпуск`
|
||||||
|
- `Документ.rh_УдалитьПланыПродажИВнутреннегоПотребления`
|
||||||
|
- `Документ.rh_УдалитьТоварыКОформлениюОтчетовКомитенту`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизаций`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизацийКОформлению`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизацийКПередаче`
|
||||||
|
- `Документ.rh_УдалитьТоварыПереданныеНаКомиссию`
|
||||||
|
|
||||||
|
### Регистры сведений
|
||||||
|
- `РегистрСведений.CRM_ПрисоединенныеФайлыВерсии`
|
||||||
|
- `РегистрСведений.mmAgreements`
|
||||||
|
- `РегистрСведений.mmAnalyticsValues`
|
||||||
|
- `РегистрСведений.mmNews`
|
||||||
|
- `РегистрСведений.mmParameters`
|
||||||
|
- `РегистрСведений.mmНастройки`
|
||||||
|
- `РегистрСведений.mmСоответствияКлючей`
|
||||||
|
- `РегистрСведений.АдресныеСокращения`
|
||||||
|
- `РегистрСведений.АдресныйКлассификатор`
|
||||||
|
- `РегистрСведений.АналитикаВидовЗапасов`
|
||||||
|
- `РегистрСведений.бфВидыКонтактнойИнформации`
|
||||||
|
- `РегистрСведений.бфВидыСервисов`
|
||||||
|
- `РегистрСведений.бфКлиенты`
|
||||||
|
- `РегистрСведений.бфКомпетенции`
|
||||||
|
- `РегистрСведений.бфПользователи`
|
||||||
|
- `РегистрСведений.бфРегионы`
|
||||||
|
- `РегистрСведений.бфСвязиСобытий`
|
||||||
|
- `РегистрСведений.бфСервисныеСпециалисты`
|
||||||
|
- `РегистрСведений.бфСервисы`
|
||||||
|
- `РегистрСведений.ВерсииОбъектовАдресногоКлассификатора`
|
||||||
|
- `РегистрСведений.ЖурналАудитаСбербанк`
|
||||||
|
- `РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 37
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_Планирование.Состав
|
||||||
|
|
||||||
|
### Документы
|
||||||
|
- `Документ.rh_ПланированиеПродаж`
|
||||||
|
- `Документ.rh_ОтражениеФактаПродаж`
|
||||||
|
|
||||||
|
### Отчеты
|
||||||
|
- `Отчет.rh_ПланФактныйАнализПродаж`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделамИСебестоимость`
|
||||||
|
|
||||||
|
### Регистры сведений
|
||||||
|
- `РегистрСведений.rh_УчетДокументовПродаж`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 5
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_Отчеты.Состав
|
||||||
|
|
||||||
|
### Отчеты
|
||||||
|
- `Отчет.rh_АнализСебестоимостиТоваров`
|
||||||
|
- `Отчет.rh_ТоварныйОтчетПоМенеджерам`
|
||||||
|
- `Отчет.rh_ПродажиПоПериодамИГруппам`
|
||||||
|
- `Отчет.rh_СебестоимостьОплаченыхТоваров`
|
||||||
|
- `Отчет.ВедомостьПоТоварамНаСкладахУЦ`
|
||||||
|
- `Отчет.rh_ВыручкаДенежныхСредств`
|
||||||
|
- `Отчет.rh_ВедомостьПоТоварамНаСкладахУЦРеализацияСписание`
|
||||||
|
- `Отчет.rh_ВедомостьПоТоварамНаСкладахПУРеализацияСписание`
|
||||||
|
- `Отчет.rh_РеестрОплаченныхНакладных`
|
||||||
|
- `Отчет.ЗаказыПоМенеджерам`
|
||||||
|
- `Отчет.rh_НеОплаченныеЗаказы`
|
||||||
|
- `Отчет.rh_СебестоимостьПоГруппамПартии`
|
||||||
|
- `Отчет.rh_КонтрольВыполненияПланаЗакупок`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделам`
|
||||||
|
- `Отчет.rh_ПланФактныйАнализПродаж`
|
||||||
|
- `Отчет.rh_ПодарочныеСертификаты`
|
||||||
|
- `Отчет.удалитьrh_ПланированиеПоОтделам2`
|
||||||
|
- `Отчет.rh_ОборотнаяВедомостьПоОстаткамТоваровПоПартиям`
|
||||||
|
- `Отчет.rh_ТоварыКоформлениюИзлишковИНедостач`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделам3`
|
||||||
|
- `Отчет.rh_ТоварыКомиссионерам`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделамИСебестоимость`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 22
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_Продажи.Состав
|
||||||
|
|
||||||
|
### Отчеты
|
||||||
|
- `Отчет.rh_ПродажиПоПериодамИГруппам`
|
||||||
|
- `Отчет.rh_НеОплаченныеЗаказы`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделамИСебестоимость`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 3
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_СовместимостьСCRM2.Состав
|
||||||
|
|
||||||
|
### Справочники
|
||||||
|
- `Справочник.Отделы`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 1
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Подсистема.rh_Rhana.Подсистема.rh_СкладИДоставка.Состав
|
||||||
|
|
||||||
|
### Регистры сведений
|
||||||
|
- `РегистрСведений.rh_СвязиПоИзлишкамИНедостачам`
|
||||||
|
|
||||||
|
**Всего объектов в этой подсистеме:** 1
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Сводная статистика
|
||||||
|
|
||||||
|
| Подсистема | Количество объектов |
|
||||||
|
|------------|---------------------|
|
||||||
|
| Подсистема.rh_RhanaПодсистема.Состав | 47 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_ПереходНаCRM3.Состав | 37 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_Отчеты.Состав | 22 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_НСИ.Состав | 10 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_Планирование.Состав | 5 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_Продажи.Состав | 3 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_Настройки.Состав | 2 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_ПодарочныеСертификаты.Состав | 2 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_СовместимостьСCRM2.Состав | 1 |
|
||||||
|
| Подсистема.rh_Rhana.Подсистема.rh_СкладИДоставка.Состав | 1 |
|
||||||
|
| **ВСЕГО** | **130** |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Инструкция по удалению объектов из состава подсистем
|
||||||
|
|
||||||
|
### Шаг 1: Открыть конфигурацию
|
||||||
|
|
||||||
|
1. Откройте конфигурацию `CRM3devLocal` в конфигураторе 1С
|
||||||
|
2. Перейдите в режим редактирования
|
||||||
|
|
||||||
|
### Шаг 2: Удаление объектов из подсистем
|
||||||
|
|
||||||
|
Для каждой подсистемы из списка выше:
|
||||||
|
|
||||||
|
1. Найдите подсистему в дереве конфигурации
|
||||||
|
2. Откройте свойства подсистемы
|
||||||
|
3. Перейдите на вкладку "Состав"
|
||||||
|
4. Найдите объект в списке состава
|
||||||
|
5. Удалите объект из состава подсистемы (НЕ удаляйте сам объект!)
|
||||||
|
|
||||||
|
**Важно:**
|
||||||
|
- Удаляйте только из **состава подсистемы**, не удаляйте сами объекты
|
||||||
|
- Объекты останутся в конфигурации, но не будут входить в состав подсистем
|
||||||
|
|
||||||
|
### Шаг 3: Проверка
|
||||||
|
|
||||||
|
После удаления всех объектов из состава подсистем:
|
||||||
|
|
||||||
|
1. Сохраните конфигурацию
|
||||||
|
2. Проверьте конфигурацию на ошибки
|
||||||
|
3. Попробуйте выполнить обновление
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Группировка по типам объектов
|
||||||
|
|
||||||
|
### Подписки на события (1)
|
||||||
|
- `ПодпискаНаСобытие.rh_ПроверитьДатуЗапретаПередЗаписьюДокумента`
|
||||||
|
|
||||||
|
### Регламентные задания (2)
|
||||||
|
- `РегламентноеЗадание.Диадок_РегламентныеДействия`
|
||||||
|
- `РегламентноеЗадание.tega_ВыгрузкаОстатковНаСайт`
|
||||||
|
|
||||||
|
### Константы (2)
|
||||||
|
- `Константа.tega_ОсновнаяНастройкаВыгрузки`
|
||||||
|
- `Константа.rh_СкладСебестоимости`
|
||||||
|
|
||||||
|
### Общие формы (1)
|
||||||
|
- `ОбщаяФорма.rh_ФормаНастроек`
|
||||||
|
|
||||||
|
### Справочники (10)
|
||||||
|
- `Справочник.CRM_Специализация`
|
||||||
|
- `Справочник.Отделы`
|
||||||
|
- `Справочник.rh_СтатусыПодарочныхСертификатов`
|
||||||
|
- `Справочник.CRM_ОфисыКомпании1`
|
||||||
|
- `Справочник.Диадок_ДополнительныеСправочники`
|
||||||
|
- `Справочник.Диадок_ЮрФизЛица`
|
||||||
|
- `Справочник.Диадок_Документы`
|
||||||
|
- `Справочник.Диадок_ПакетыДокументов`
|
||||||
|
- `Справочник.Диадок_ХранениеДанных`
|
||||||
|
- `Справочник.Диадок_Файлы`
|
||||||
|
- `Справочник.р_FTPСоединения`
|
||||||
|
- `Справочник.tega_НастройкиВыгрузки`
|
||||||
|
|
||||||
|
### Документы (18)
|
||||||
|
- `Документ.rh_ПланированиеПродаж`
|
||||||
|
- `Документ.rh_ОтражениеФактаПродаж`
|
||||||
|
- `Документ.rh_ПервичныеДокументы`
|
||||||
|
- `Документ.rh_ПервичныеДокументыМенеджер`
|
||||||
|
- `Документ.rh_ПервичныеДокументыМенеджерРеализация`
|
||||||
|
- `Документ.rh_ДвиженияДенежныеСредстваПрочиеАктивыПассивы`
|
||||||
|
- `Документ.rh_ДенежныеСредстваКПоступлениюНаличные`
|
||||||
|
- `Документ.rh_ДенежныеСредстваКСписаниюСПодотчетныхЛиц`
|
||||||
|
- `Документ.rh_РезервыСерийТоваров`
|
||||||
|
- `Документ.rh_ТоварыКОформлениюПоступления`
|
||||||
|
- `Документ.rh_УдалитьДвиженияНоменклатураПрочиеАктивыПассивы`
|
||||||
|
- `Документ.rh_УдалитьПартииЗатратНаВыпуск`
|
||||||
|
- `Документ.rh_УдалитьПланыПродажИВнутреннегоПотребления`
|
||||||
|
- `Документ.rh_УдалитьТоварыКОформлениюОтчетовКомитенту`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизаций`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизацийКОформлению`
|
||||||
|
- `Документ.rh_УдалитьТоварыОрганизацийКПередаче`
|
||||||
|
- `Документ.rh_УдалитьТоварыПереданныеНаКомиссию`
|
||||||
|
|
||||||
|
### Отчеты (25)
|
||||||
|
- `Отчет.rh_АнализСебестоимостиТоваров`
|
||||||
|
- `Отчет.rh_ТоварныйОтчетПоМенеджерам`
|
||||||
|
- `Отчет.удалитьОплаченныеЗаказы`
|
||||||
|
- `Отчет.rh_ПродажиПоПериодамИГруппам`
|
||||||
|
- `Отчет.rh_СебестоимостьОплаченыхТоваров`
|
||||||
|
- `Отчет.ВедомостьПоТоварамНаСкладахУЦ`
|
||||||
|
- `Отчет.rh_ВыручкаДенежныхСредств`
|
||||||
|
- `Отчет.rh_ВедомостьПоТоварамНаСкладахУЦРеализацияСписание`
|
||||||
|
- `Отчет.rh_ВедомостьПоТоварамНаСкладахПУРеализацияСписание`
|
||||||
|
- `Отчет.rh_РеестрОплаченныхНакладных`
|
||||||
|
- `Отчет.ЗаказыПоМенеджерам`
|
||||||
|
- `Отчет.rh_НеОплаченныеЗаказы`
|
||||||
|
- `Отчет.rh_СебестоимостьПоГруппам`
|
||||||
|
- `Отчет.rh_СебестоимостьПоГруппамПартии`
|
||||||
|
- `Отчет.rh_КонтрольВыполненияПланаЗакупок`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделам`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделамНеделям`
|
||||||
|
- `Отчет.ЧастныеЛицаПоВидамСеминаров`
|
||||||
|
- `Отчет.rh_ПланФактныйАнализПродаж`
|
||||||
|
- `Отчет.rh_ПодарочныеСертификаты`
|
||||||
|
- `Отчет.удалитьrh_ПланированиеПоОтделам2`
|
||||||
|
- `Отчет.rh_ОборотнаяВедомостьПоОстаткамТоваровПоПартиям`
|
||||||
|
- `Отчет.rh_ТоварыКоформлениюИзлишковИНедостач`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделам3`
|
||||||
|
- `Отчет.rh_ТоварыКомиссионерам`
|
||||||
|
- `Отчет.rh_ПланированиеПоОтделамИСебестоимость`
|
||||||
|
|
||||||
|
### Регистры сведений (25)
|
||||||
|
- `РегистрСведений.CRM_ПрисоединенныеФайлыВерсии`
|
||||||
|
- `РегистрСведений.mmAgreements`
|
||||||
|
- `РегистрСведений.mmAnalyticsValues`
|
||||||
|
- `РегистрСведений.mmNews`
|
||||||
|
- `РегистрСведений.mmParameters`
|
||||||
|
- `РегистрСведений.mmНастройки`
|
||||||
|
- `РегистрСведений.mmСоответствияКлючей`
|
||||||
|
- `РегистрСведений.АдресныеСокращения`
|
||||||
|
- `РегистрСведений.АдресныйКлассификатор`
|
||||||
|
- `РегистрСведений.АналитикаВидовЗапасов`
|
||||||
|
- `РегистрСведений.бфВидыКонтактнойИнформации`
|
||||||
|
- `РегистрСведений.бфВидыСервисов`
|
||||||
|
- `РегистрСведений.бфКлиенты`
|
||||||
|
- `РегистрСведений.бфКомпетенции`
|
||||||
|
- `РегистрСведений.бфПользователи`
|
||||||
|
- `РегистрСведений.бфРегионы`
|
||||||
|
- `РегистрСведений.бфСвязиСобытий`
|
||||||
|
- `РегистрСведений.бфСервисныеСпециалисты`
|
||||||
|
- `РегистрСведений.бфСервисы`
|
||||||
|
- `РегистрСведений.ВерсииОбъектовАдресногоКлассификатора`
|
||||||
|
- `РегистрСведений.ЖурналАудитаСбербанк`
|
||||||
|
- `РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов`
|
||||||
|
- `РегистрСведений.rh_УчетДокументовПродаж`
|
||||||
|
- `РегистрСведений.rh_СвязиПоИзлишкамИНедостачам`
|
||||||
|
|
||||||
|
### Регистры накопления (1)
|
||||||
|
- `РегистрНакопления.rh_ПланПродаж`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Приоритеты удаления
|
||||||
|
|
||||||
|
### Высокий приоритет (критично для обновления)
|
||||||
|
|
||||||
|
1. **Подсистема.rh_RhanaПодсистема.Состав** - 47 объектов
|
||||||
|
- Самая большая группа
|
||||||
|
- Содержит большинство удаляемых объектов
|
||||||
|
|
||||||
|
2. **Подсистема.rh_Rhana.Подсистема.rh_ПереходНаCRM3.Состав** - 37 объектов
|
||||||
|
- Много регистров сведений
|
||||||
|
- Документы переходного периода
|
||||||
|
|
||||||
|
### Средний приоритет
|
||||||
|
|
||||||
|
3. **Подсистема.rh_Rhana.Подсистема.rh_Отчеты.Состав** - 22 объекта
|
||||||
|
- Отчеты, которые можно временно отключить
|
||||||
|
|
||||||
|
4. **Подсистема.rh_Rhana.Подсистема.rh_НСИ.Состав** - 10 объектов
|
||||||
|
- Справочники, связанные с НСИ
|
||||||
|
|
||||||
|
### Низкий приоритет
|
||||||
|
|
||||||
|
5. Остальные подсистемы с небольшим количеством объектов
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Чек-лист действий
|
||||||
|
|
||||||
|
- [ ] Создать резервную копию конфигурации
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_RhanaПодсистема.Состав (47 объектов)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_ПереходНаCRM3.Состав (37 объектов)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_Отчеты.Состав (22 объекта)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_НСИ.Состав (10 объектов)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_Планирование.Состав (5 объектов)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_Продажи.Состав (3 объекта)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_Настройки.Состав (2 объекта)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_ПодарочныеСертификаты.Состав (2 объекта)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_СовместимостьСCRM2.Состав (1 объект)
|
||||||
|
- [ ] Удалить объекты из Подсистема.rh_Rhana.Подсистема.rh_СкладИДоставка.Состав (1 объект)
|
||||||
|
- [ ] Сохранить конфигурацию
|
||||||
|
- [ ] Проверить конфигурацию на ошибки
|
||||||
|
- [ ] Попробовать выполнить обновление
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Примечания
|
||||||
|
|
||||||
|
1. **Удаление из состава ≠ удаление объекта:** Объекты остаются в конфигурации, но не входят в состав подсистем
|
||||||
|
2. **Проверка зависимостей:** После удаления объектов из состава подсистем проверьте, не нарушены ли зависимости
|
||||||
|
3. **Тестирование:** После удаления обязательно протестируйте функциональность, связанную с этими подсистемами
|
||||||
|
4. **Документирование:** Зафиксируйте все изменения для последующего анализа
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## История изменений
|
||||||
|
|
||||||
|
### Версия 1.0 (Текущая итерация)
|
||||||
|
- Составлен список объектов для удаления из состава подсистем
|
||||||
|
- Группировка по подсистемам
|
||||||
|
- Статистика по типам объектов
|
||||||
|
- Инструкция по выполнению удаления
|
||||||
|
|
||||||
|
### Следующие итерации
|
||||||
|
|
||||||
|
После применения обновления на текущей итерации:
|
||||||
|
1. Проверьте наличие новых ошибок
|
||||||
|
2. При необходимости составьте новый список для следующей итерации
|
||||||
|
3. Обновите данный документ или создайте новый
|
||||||
|
|
||||||
|
### Известные проблемы после обновления
|
||||||
|
|
||||||
|
После успешного удаления объектов из состава подсистем и сохранения конфигурации может возникнуть ошибка:
|
||||||
|
|
||||||
|
**Проблема:** Записи регистра сведений стали неуникальными: `CRM_ЖурналДокументов`
|
||||||
|
|
||||||
|
**Решение:** См. документ [Проблема неуникальности регистра CRM_ЖурналДокументов](Проблема_неуникальности_регистра_CRM_ЖурналДокументов.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Примечания по процессу обновления
|
||||||
|
|
||||||
|
### Этапы обновления
|
||||||
|
|
||||||
|
1. **Подготовка**
|
||||||
|
- Анализ ошибок обновления
|
||||||
|
- Составление списков удаляемых объектов
|
||||||
|
- Резервное копирование
|
||||||
|
|
||||||
|
2. **Текущая итерация**
|
||||||
|
- Удаление объектов из состава подсистем (данный документ)
|
||||||
|
- Применение обновления
|
||||||
|
- Проверка результата
|
||||||
|
|
||||||
|
3. **Следующие итерации** (при необходимости)
|
||||||
|
- Анализ новых ошибок
|
||||||
|
- Составление новых списков
|
||||||
|
- Повторное применение обновления
|
||||||
|
|
||||||
|
### Рекомендации
|
||||||
|
|
||||||
|
- **Не удаляйте объекты полностью** - только из состава подсистем
|
||||||
|
- **Сохраняйте резервные копии** перед каждой итерацией
|
||||||
|
- **Документируйте изменения** для последующего анализа
|
||||||
|
- **Тестируйте функциональность** после каждой итерации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Дата создания:** 2024
|
||||||
|
**Версия:** 1.0 (Промежуточная итерация)
|
||||||
|
**Статус:** Готово к использованию
|
||||||
|
**Контекст:** Применение CRM3-26 поверх рабочей CRM3
|
||||||
|
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
---
|
||||||
|
title: "Список ролей новой системы для отметки "Да""
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Список ролей новой системы для отметки "Да"
|
||||||
|
|
||||||
|
## Роли, которые нужно отметить "Да" в новой системе
|
||||||
|
|
||||||
|
1. Базовые права (CRM)
|
||||||
|
|
||||||
|
2. Ввод документа "Отчет по работам" (CRM)
|
||||||
|
|
||||||
|
3. Выполнение синхронизации данных
|
||||||
|
|
||||||
|
4. Добавление и изменение документов по банку
|
||||||
|
|
||||||
|
5. Добавление и изменение реализаций товаров услуг
|
||||||
|
|
||||||
|
6. Добавление и изменение заказов клиентов
|
||||||
|
|
||||||
|
7. Добавление и изменение узлов планов обмена
|
||||||
|
|
||||||
|
8. Использование дополнительных отчетов и обработок УТ
|
||||||
|
|
||||||
|
9. Использование интеграции с 1С:Документооборотом
|
||||||
|
|
||||||
|
10. Раздел запасы
|
||||||
|
|
||||||
|
11. Раздел отчеты и мониторинг
|
||||||
|
|
||||||
|
12. Чтение базовой нормативно-справочной информации
|
||||||
|
|
||||||
|
13. Чтение документов списания поступления безналичных ДС
|
||||||
|
|
||||||
|
14. Чтение состояний отгрузки
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Роли, отсутствующие в новой системе (требуют проверки)
|
||||||
|
|
||||||
|
- Настройка синхронизации данных (возможно, переименована или объединена с другой ролью)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Дополнительные роли для проверки (возможные переименования)
|
||||||
|
|
||||||
|
Если в новой системе есть следующие роли, их также нужно отметить "Да":
|
||||||
|
|
||||||
|
- Добавление и изменение корректировок обособленного учета запасов
|
||||||
|
- Добавление и изменение корректировок реализаций
|
||||||
|
- Добавление и изменение листов кассовой книги
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Примечание
|
||||||
|
|
||||||
|
Роль "Выполнение обмена электронными документами" отсутствует в списке новой системы. Если она существует под другим названием, её также нужно включить.
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,218 @@
|
|||||||
|
---
|
||||||
|
title: Техническое задание №2 - полный перенос новой логики УПД из crm3-26-promo в crm3-dev
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2026-04-21
|
||||||
|
date_modified: 2026-04-21
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
description: Полный план переноса логики подготовки данных и печати УПД из crm3-26-promo в crm3-dev с учетом выделения доработок в отдельное расширение упд5б.
|
||||||
|
status: К согласованию
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Техническое задание №2
|
||||||
|
|
||||||
|
## 1. Цель и основание
|
||||||
|
|
||||||
|
Цель: выполнить **полный перенос** актуальной логики формирования данных и печати УПД из `crm3-26-promo` в `crm3-dev` с выделением изменений в отдельное расширение `упд5б`, минимизируя изменения в основной конфигурации.
|
||||||
|
|
||||||
|
Основание: сравнительный анализ:
|
||||||
|
- `crm3-dev` (версия `3.0.22.28`, режим совместимости `Version8_3_16`);
|
||||||
|
- `crm3-26-promo` (версия `3.1.35.11`, режим совместимости `Version8_3_27`);
|
||||||
|
- текущего расширения `crm3-dev.rhana`.
|
||||||
|
|
||||||
|
## 2. Итоги полного анализа (as-is / to-be)
|
||||||
|
|
||||||
|
### 2.1. Что уже есть в `crm3-26-promo`
|
||||||
|
|
||||||
|
В `crm3-26-promo` реализован полный контур графы 5б:
|
||||||
|
- функция `СтрокаАвансовыеСчетаФактуры(...)` в `Documents/СчетФактураВыданный/Ext/ManagerModule.bsl`;
|
||||||
|
- расширенная `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)` с колонкой `СтрокаАвансовыеСчетаФактуры`;
|
||||||
|
- расширенный `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()` с данными `СчетФактураВыданныйАванс` и исправлений;
|
||||||
|
- вывод поля `ПредставлениеАвансовыеСчетаФактуры` в запросе шапки для печати;
|
||||||
|
- заполнение `ОбластьШапка.Параметры.АвансовыеСчетаФактуры` в `ПечатьОбщихФорм`.
|
||||||
|
|
||||||
|
### 2.2. Что есть в `crm3-dev`
|
||||||
|
|
||||||
|
В `crm3-dev` (база):
|
||||||
|
- базовые методы `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)` и `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()` присутствуют, но без контура 5б;
|
||||||
|
- в запросе шапки УПД отсутствует `ПредставлениеАвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
В `crm3-dev.rhana`:
|
||||||
|
- в `DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl` уже есть ветка выбора макета `1096` для периода 2026;
|
||||||
|
- подключен макет `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru`;
|
||||||
|
- в `Documents/СчетФактураВыданный/Ext/ManagerModule.bsl` отсутствуют изменения по 5б (есть только доработки по строке 5а).
|
||||||
|
|
||||||
|
Критичное отличие по макетам:
|
||||||
|
- в `crm3-26-promo` для актуальной ветки УПД применяются `CommonTemplates`:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`,
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`,
|
||||||
|
в которых присутствует параметр `АвансовыеСчетаФактуры` (графа 5б);
|
||||||
|
- в `crm3-dev` и `crm3-dev.rhana` такие `CommonTemplates` отсутствуют.
|
||||||
|
|
||||||
|
## 3. Границы работ по ТЗ №2
|
||||||
|
|
||||||
|
### 3.1. Входит в объем
|
||||||
|
|
||||||
|
1. Полный перенос механизма подготовки данных 5б из `crm3-26-promo`.
|
||||||
|
2. Полный перенос логики вывода 5б в печатной форме УПД.
|
||||||
|
3. Унификация доработок в новом расширении `упд5б` (вынос из `crm3-dev.rhana` релевантных частей).
|
||||||
|
4. Анализ и устранение дублирования между `crm3-dev.rhana` и `упд5б`.
|
||||||
|
5. Подготовка правил, что остается в расширении, а что (при необходимости) меняется в базе `crm3-dev`.
|
||||||
|
|
||||||
|
### 3.2. Не входит в объем
|
||||||
|
|
||||||
|
1. Полный перенос всех несвязанных с УПД подсистем из `crm3-26-promo`.
|
||||||
|
2. Массовый рефакторинг документов вне контура СФ/УПД.
|
||||||
|
|
||||||
|
## 4. Детальный анализ изменений структуры данных
|
||||||
|
|
||||||
|
### 4.1. Обязательные поля и представления для миграции
|
||||||
|
|
||||||
|
Для полного переноса должны быть поддержаны:
|
||||||
|
- строка представления авансовых СФ: `СтрокаАвансовыеСчетаФактуры`;
|
||||||
|
- поле вывода в шапке печати: `ПредставлениеАвансовыеСчетаФактуры`;
|
||||||
|
- поля в таблице платежно-расчетных документов:
|
||||||
|
- `НомерСчетаФактурыНаАванс`,
|
||||||
|
- `ДатаСчетаФактурыНаАванс`,
|
||||||
|
- `НомерИсправленияСчетаФактурыНаАванс`,
|
||||||
|
- `ДатаИсправленияСчетаФактурыНаАванс`.
|
||||||
|
|
||||||
|
### 4.2. Временные таблицы и запросы
|
||||||
|
|
||||||
|
В контуре `СчетФактураВыданный` требуется перенос (или эквивалентное восстановление) цепочки:
|
||||||
|
1. подготовка данных платежно-расчетных документов;
|
||||||
|
2. формирование данных по `СчетФактураВыданныйАванс` и исправлениям;
|
||||||
|
3. объединение в итоговую ВТ для передачи в печать;
|
||||||
|
4. подстановка в `РезультатПоШапке` поля `ПредставлениеАвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
### 4.3. Проверка наличия реквизитов документа
|
||||||
|
|
||||||
|
В `crm3-26-promo` используется реквизит документа `СтрокаАвансовыеСчетаФактуры` в ряде сценариев формы/объекта.
|
||||||
|
|
||||||
|
Для `crm3-dev` обязательна проверка:
|
||||||
|
1. если реквизит уже существует в базе - использовать его;
|
||||||
|
2. если реквизита нет:
|
||||||
|
- вариант А (предпочтительный): вычислять строку на лету в расширении и передавать через ВТ/запрос шапки;
|
||||||
|
- вариант Б (если требуется функциональная паритетность формы документа): добавить реквизит в объект (через расширение, если позволяет совместимость), либо точечно в базу.
|
||||||
|
|
||||||
|
## 5. Целевая архитектура переноса
|
||||||
|
|
||||||
|
### 5.1. Новое расширение `упд5б` (основной контур)
|
||||||
|
|
||||||
|
В `упд5б` концентрируются:
|
||||||
|
1. все изменения `Documents/СчетФактураВыданный/Ext/ManagerModule.bsl` по данным 5б;
|
||||||
|
2. все изменения `DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl` по выводу 5б;
|
||||||
|
3. перенос и сопровождение `CommonTemplates`:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`,
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`;
|
||||||
|
4. опционально (для обратной совместимости) - `ПФ_MXL_УниверсальныйПередаточныйДокумент1096_ru`, если он остается в legacy-ветке.
|
||||||
|
|
||||||
|
### 5.2. Что переносить из `crm3-dev.rhana` в `упд5б`
|
||||||
|
|
||||||
|
Переносу в `упд5б` подлежат доработки, связанные с актуальной печатью УПД и графой 5б:
|
||||||
|
1. ветка выбора макета для периода 2026+;
|
||||||
|
2. переключение на `CommonTemplates` `...2026` / `...2026Прослеж`;
|
||||||
|
3. блок заполнения параметров шапки УПД, который должен включать `АвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
### 5.3. Что убрать из `crm3-dev.rhana` после переноса
|
||||||
|
|
||||||
|
После приемки `упд5б` из `crm3-dev.rhana` исключаются дублирующие фрагменты:
|
||||||
|
1. дублирующее подключение макета 1096 в ветке 2026, если оно заменено на `CommonTemplates` 2026;
|
||||||
|
2. дублирующая ветка выбора макета 1096/2026;
|
||||||
|
3. любой дублирующий расчет параметра `АвансовыеСчетаФактуры` (если был добавлен в `crm3-dev.rhana`).
|
||||||
|
|
||||||
|
Удаление выполняется только после тестов регрессии и при подтверждении идентичного поведения в `упд5б`.
|
||||||
|
|
||||||
|
## 6. План реализации (по этапам)
|
||||||
|
|
||||||
|
### Этап 1. Инвентаризация и фиксация baseline
|
||||||
|
|
||||||
|
1. Зафиксировать текущие версии и hash модулей/макетов:
|
||||||
|
- `crm3-dev/src/Documents/СчетФактураВыданный/...`,
|
||||||
|
- `crm3-dev/src/DataProcessors/ПечатьОбщихФорм/...`,
|
||||||
|
- `crm3-dev.rhana/src/...`,
|
||||||
|
- `crm3-26-promo/src/...`.
|
||||||
|
2. Составить карту расхождений: методы, поля, ВТ, параметры макета.
|
||||||
|
|
||||||
|
Результат этапа: отчет о diff и точный реестр переносимых фрагментов.
|
||||||
|
|
||||||
|
### Этап 2. Перенос данных 5б
|
||||||
|
|
||||||
|
1. В `упд5б` добавить `упд5б_СтрокаАвансовыеСчетаФактуры(...)`.
|
||||||
|
2. Расширить `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)`.
|
||||||
|
3. Расширить `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()`.
|
||||||
|
4. Расширить формирование `ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(...)` с полем `ПредставлениеАвансовыеСчетаФактуры`.
|
||||||
|
|
||||||
|
Результат этапа: данные 5б формируются и доступны в `РезультатПоШапке`.
|
||||||
|
|
||||||
|
### Этап 3. Перенос печати и макетов
|
||||||
|
|
||||||
|
1. Перенести в `упд5б` выбор макета для ветки 2026+.
|
||||||
|
2. Перенести из `crm3-26-promo` `CommonTemplates`:
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026`,
|
||||||
|
- `ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`.
|
||||||
|
3. В `ЗаполнитьТабличныйДокументУПД(...)` добавить/сохранить установку `ОбластьШапка.Параметры.АвансовыеСчетаФактуры`.
|
||||||
|
4. Проверить, что legacy-ветки до 2026 не изменили поведение.
|
||||||
|
|
||||||
|
Результат этапа: графа 5б печатается в УПД по новым макетам 2026/2026Прослеж.
|
||||||
|
|
||||||
|
### Этап 4. Дедубликация `crm3-dev.rhana`
|
||||||
|
|
||||||
|
1. Отключить/удалить дублирующие фрагменты по макету 1096 из `crm3-dev.rhana`.
|
||||||
|
2. Подтвердить отсутствие конфликтов при одновременном подключении расширений.
|
||||||
|
|
||||||
|
Результат этапа: единая точка ответственности в `упд5б`.
|
||||||
|
|
||||||
|
### Этап 5. Регрессия и приемка
|
||||||
|
|
||||||
|
1. Позитивные сценарии:
|
||||||
|
- реализация с авансом и исправлением;
|
||||||
|
- реализация с авансом без исправления;
|
||||||
|
- без аванса (fallback).
|
||||||
|
2. Регрессия:
|
||||||
|
- печать УПД до 2026 (исторические периоды);
|
||||||
|
- печать УПД после 01.01.2026 (макеты 2026/2026Прослеж);
|
||||||
|
- пакетная печать смешанных документов.
|
||||||
|
|
||||||
|
Результат этапа: акт приемки и протокол регрессии.
|
||||||
|
|
||||||
|
### Этап 6. Переход структуры данных и обработчики обновления
|
||||||
|
|
||||||
|
1. Подготовить решение по данным для уже созданных документов:
|
||||||
|
- если строка 5б рассчитывается на лету - обновление данных не требуется;
|
||||||
|
- если вводится хранение в реквизите/регистре - требуется миграция данных.
|
||||||
|
2. При необходимости добавить обработчики обновления данных:
|
||||||
|
- модуль обновления конфигурации/расширения;
|
||||||
|
- пакетный пересчет `СтрокаАвансовыеСчетаФактуры` для исторических `СчетФактураВыданный`.
|
||||||
|
3. Добавить контрольные отчеты сверки до/после миграции.
|
||||||
|
|
||||||
|
## 7. Требования по применению расширения с учетом совместимости `crm3-dev`
|
||||||
|
|
||||||
|
Учитывать ограничения `crm3-dev` (`CompatibilityMode = Version8_3_16`):
|
||||||
|
1. приоритетно использовать `&ИзменениеИКонтроль` в расширении;
|
||||||
|
2. в блоках `#Удаление` размещать только удаляемый код;
|
||||||
|
3. комментарии и пояснения размещать только в `#Вставка`;
|
||||||
|
4. не использовать вставку директив удаления внутрь многострочных литералов запроса;
|
||||||
|
5. при изменении условных операторов заменять цельный блок `Если ... КонецЕсли` (а не только строку условия);
|
||||||
|
6. если точка расширения недоступна технически, оформлять точечное изменение в базе отдельным решением с обоснованием.
|
||||||
|
|
||||||
|
## 8. Решение по макетам после 01.01.2026
|
||||||
|
|
||||||
|
Для новых документов после `01.01.2026` целевые макеты:
|
||||||
|
1. `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026`;
|
||||||
|
2. `ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент2026Прослеж`.
|
||||||
|
|
||||||
|
Исторические макеты (`..._ru`, `..._625_ru`, `...981_ru`, `...534_ru`) не удаляются, потому что:
|
||||||
|
1. они нужны для корректной печати документов прошлых периодов;
|
||||||
|
2. они участвуют в проверках совместимости печати смешанных наборов документов;
|
||||||
|
3. их изменение в рамках полного переноса выполняется только при отдельном бизнес-требовании.
|
||||||
|
|
||||||
|
## 9. Критерии готовности ТЗ №2 к реализации
|
||||||
|
|
||||||
|
1. Согласован перечень переносимых объектов и методов.
|
||||||
|
2. Согласован перечень удаляемых дубликатов из `crm3-dev.rhana`.
|
||||||
|
3. Подтвержден способ работы с отсутствующими реквизитами (через расширение или точечно в базе).
|
||||||
|
4. Утвержден план поэтапного внедрения и регрессии.
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
title: Улучшения скрипта проверки дубликатов
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Улучшения скрипта проверки дубликатов
|
||||||
|
|
||||||
|
## Проблема
|
||||||
|
|
||||||
|
Скрипт не обнаруживал проблем, но при реструктуризации возникала ошибка нарушения уникальности.
|
||||||
|
|
||||||
|
## Причина
|
||||||
|
|
||||||
|
Скрипт проверял только случаи, когда **несколько записей с обнуляемыми ссылками** становятся дубликатами друг друга после обнуления. Но он **не проверял случаи**, когда обнуленные записи совпадают с **уже существующими записями с NULL значениями**.
|
||||||
|
|
||||||
|
### Пример проблемы:
|
||||||
|
|
||||||
|
```
|
||||||
|
ДО реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y ← Уже существует с NULL
|
||||||
|
Запись 3: ГлавнаяЗапись=true, Клиент=CRM_ПотенциальныеКлиенты.K2, Объект=X, CRM_Интерес=Y ← Будет обнулена
|
||||||
|
|
||||||
|
ПОСЛЕ реструктуризации:
|
||||||
|
Запись 1: ГлавнаяЗапись=true, Клиент=Партнеры.K1, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 2: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y
|
||||||
|
Запись 3: ГлавнаяЗапись=true, Клиент=NULL, Объект=X, CRM_Интерес=Y ← ОБНУЛЕНО, совпала с Записью 2!
|
||||||
|
|
||||||
|
РЕЗУЛЬТАТ: Запись 2 и Запись 3 стали ДУБЛИКАТАМИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Добавлена **дополнительная проверка**, которая:
|
||||||
|
|
||||||
|
1. ✅ Получает все записи регистра (включая те, у которых уже есть NULL)
|
||||||
|
2. ✅ Создает структуру всех существующих комбинаций измерений
|
||||||
|
3. ✅ Для каждой записи с обнуляемыми ссылками:
|
||||||
|
- Симулирует обнуление ссылок
|
||||||
|
- Проверяет, не совпадет ли обнуленная запись с уже существующей
|
||||||
|
4. ✅ Выводит предупреждение, если найдены совпадения
|
||||||
|
|
||||||
|
## Что изменилось в скрипте
|
||||||
|
|
||||||
|
### Добавлена проверка совпадений
|
||||||
|
|
||||||
|
Скрипт теперь проверяет:
|
||||||
|
- ✅ Совпадение обнуленных записей с уже существующими записями с NULL
|
||||||
|
- ✅ Все комбинации обнуления измерений (Клиент, Объект, CRM_Интерес)
|
||||||
|
- ✅ Комбинированное обнуление нескольких измерений одновременно
|
||||||
|
|
||||||
|
### Новые сообщения
|
||||||
|
|
||||||
|
Скрипт теперь выводит:
|
||||||
|
- ⚠️ **"КРИТИЧНО: Найдено X записей, которые после обнуления совпадут с уже существующими записями!"**
|
||||||
|
- ✅ **"Совпадений обнуленных записей с уже существующими не найдено."** (если проблем нет)
|
||||||
|
|
||||||
|
## Как использовать
|
||||||
|
|
||||||
|
1. Запустите скрипт `check_duplicates_crm_journal.bsl`
|
||||||
|
2. Проверьте вывод:
|
||||||
|
- Если есть предупреждения о совпадениях - **необходимо удалить проблемные записи**
|
||||||
|
- Если все проверки пройдены - регистр готов к реструктуризации
|
||||||
|
|
||||||
|
## Рекомендации
|
||||||
|
|
||||||
|
Если скрипт находит совпадения:
|
||||||
|
|
||||||
|
1. **Удалите проблемные записи** перед реструктуризацией:
|
||||||
|
- Записи с `Клиент=CRM_ПотенциальныеКлиенты.*`
|
||||||
|
- Записи с `Объект`, ссылающимся на удаляемые типы
|
||||||
|
- Записи с `CRM_Интерес`, ссылающимся на удаляемые документы
|
||||||
|
|
||||||
|
2. **Повторно запустите скрипт** для проверки
|
||||||
|
|
||||||
|
3. **Выполните реструктуризацию** только после того, как все проверки пройдены
|
||||||
|
|
||||||
|
## Важно
|
||||||
|
|
||||||
|
⚠️ Скрипт теперь проверяет **все возможные сценарии** нарушения уникальности, включая совпадение с уже существующими записями. Это должно решить проблему, когда скрипт не находил проблем, но при реструктуризации возникала ошибка.
|
||||||
|
|
||||||
@@ -0,0 +1,279 @@
|
|||||||
|
---
|
||||||
|
title: "ФИНАЛЬНЫЙ ОТЧЕТ: Глубинный анализ регистров на нарушение уникальности данных"
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-09
|
||||||
|
date_modified: 2025-12-09
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# ФИНАЛЬНЫЙ ОТЧЕТ: Глубинный анализ регистров на нарушение уникальности данных
|
||||||
|
|
||||||
|
> 📚 **См. также:** [Оглавление документов](INDEX.md) | [Глубинный анализ регистров](Глубинный_анализ_регистров.md) | [Итоговый отчет](Итоговый_отчет_анализа_регистров.md) | [Анализ ошибок обновления](Анализ_ошибок_обновления.md)
|
||||||
|
|
||||||
|
## Резюме
|
||||||
|
|
||||||
|
Проведен полный анализ всех регистров сведений и регистров накопления в конфигурации `CRM3devLocal` на предмет возможного нарушения уникальности данных после обновления до конфигурации `CRM326/CRM326_TEST`.
|
||||||
|
|
||||||
|
**Дата анализа:** 2024
|
||||||
|
**Версия конфигурации:** CRM3devLocal → CRM326/CRM326_TEST
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Методология анализа
|
||||||
|
|
||||||
|
1. **Сравнение конфигураций:** Сравнение объектов в `CRM3devLocal` и `CRM326/CRM326_TEST` для выявления удаляемых объектов
|
||||||
|
2. **Автоматический анализ:** Сканирование всех файлов метаданных регистров (801 регистр)
|
||||||
|
3. **Проверка удаляемых объектов:** Анализ измерений на ссылки к удаляемым объектам
|
||||||
|
4. **Выявление рисков:** Определение регистров с потенциальными проблемами уникальности
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Статистика анализа
|
||||||
|
|
||||||
|
### Проанализировано
|
||||||
|
- **Всего регистров:** 801
|
||||||
|
- **Регистров сведений:** ~400
|
||||||
|
- **Регистров накопления:** ~400
|
||||||
|
|
||||||
|
### Удаляемые объекты конфигурации
|
||||||
|
- **Всего удаляемых объектов:** 176
|
||||||
|
- **Справочников:** 59
|
||||||
|
- **Документов:** 41
|
||||||
|
- **Перечислений:** 76
|
||||||
|
|
||||||
|
### Найдено проблемных регистров: 35
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## КРИТИЧЕСКИЕ ПРОБЛЕМЫ (CRITICAL)
|
||||||
|
|
||||||
|
### Все найденные регистры полностью удаляются
|
||||||
|
|
||||||
|
Все 35 проблемных регистров **полностью удаляются** из конфигурации при обновлении. Это означает, что:
|
||||||
|
|
||||||
|
1. **Все данные этих регистров будут потеряны** без возможности автоматического восстановления
|
||||||
|
2. **Риск нарушения уникальности:** НЕТ (регистры полностью удаляются, данные теряются)
|
||||||
|
3. **Требуются действия:** Экспорт данных перед обновлением (если данные нужны)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Список удаляемых регистров
|
||||||
|
|
||||||
|
### Регистры накопления (25 регистров)
|
||||||
|
|
||||||
|
1. **CRM_Планирование** - Регистр планирования CRM
|
||||||
|
2. **rh_ТоварыНаСкладахСебестоимость** - Товары на складах (себестоимость)
|
||||||
|
3. **ДвиженияДенежныеСредстваПрочиеАктивыПассивы** - Движения денежных средств
|
||||||
|
4. **ДенежныеСредстваКПоступлениюНаличные** - Денежные средства к поступлению
|
||||||
|
5. **ДенежныеСредстваКСписаниюСПодотчетныхЛиц** - Денежные средства к списанию
|
||||||
|
6. **ПартииЗатратНаВыпуск** - Партии затрат на выпуск
|
||||||
|
7. **ПланыПродаж** - Планы продаж
|
||||||
|
8. **ПрочиеАктивыПассивы** - Прочие активы и пассивы
|
||||||
|
9. **РезервыСерийТоваров** - Резервы серий товаров
|
||||||
|
10. **СебестоимостьТоваров** - Себестоимость товаров
|
||||||
|
11. **ТМЦВЭксплуатации** - ТМЦ в эксплуатации
|
||||||
|
12. **ТоварыКОформлениюОтчетовКомитенту** - Товары к оформлению отчетов комитенту
|
||||||
|
13. **ТоварыКОформлениюПоступления** - Товары к оформлению поступления
|
||||||
|
14. **ТоварыНаСкладах** - Товары на складах
|
||||||
|
15. **ТоварыОрганизаций** - Товары организаций
|
||||||
|
16. **ТоварыОрганизацийКПередаче** - Товары организаций к передаче
|
||||||
|
17. **ТоварыПереданныеНаКомиссию** - Товары переданные на комиссию
|
||||||
|
18. **УдалитьДвиженияНоменклатураПрочиеАктивыПассивы** - Удаляемый регистр
|
||||||
|
19. **УдалитьПартииЗатратНаВыпуск** - Удаляемый регистр
|
||||||
|
20. **УдалитьПланыПродажИВнутреннегоПотребления** - Удаляемый регистр
|
||||||
|
21. **УдалитьТоварыКОформлениюОтчетовКомитенту** - Удаляемый регистр
|
||||||
|
22. **УдалитьТоварыОрганизаций** - Удаляемый регистр
|
||||||
|
23. **УдалитьТоварыОрганизацийКОформлению** - Удаляемый регистр
|
||||||
|
24. **УдалитьТоварыОрганизацийКПередаче** - Удаляемый регистр
|
||||||
|
25. **УдалитьТоварыПереданныеНаКомиссию** - Удаляемый регистр
|
||||||
|
|
||||||
|
### Регистры сведений (10 регистров)
|
||||||
|
|
||||||
|
1. **ВерсииПодсистем** - Версии подсистем
|
||||||
|
2. **ПервичныеДокументы** - Первичные документы
|
||||||
|
3. **ПервичныеДокументыМенеджер** - Первичные документы менеджер
|
||||||
|
4. **ПервичныеДокументыМенеджерРеализация** - Первичные документы менеджер (реализация)
|
||||||
|
5. **ПроблемыСостоянияСистемы** - Проблемы состояния системы
|
||||||
|
6. **РеестрДокументов** - Реестр документов
|
||||||
|
7. **СостоянияЗагрузкиНаложенныхПлатежейСервисДоставки** - Состояния загрузки наложенных платежей
|
||||||
|
8. **СостоянияОтгрузки** - Состояния отгрузки
|
||||||
|
9. **СостоянияЭД** - Состояния электронных документов
|
||||||
|
10. **УдалитьРеестрДокументов** - Удаляемый реестр документов
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ВЫСОКИЙ РИСК (HIGH)
|
||||||
|
|
||||||
|
### РегистрНакопления.МатериалыИРаботыВПроизводстве
|
||||||
|
|
||||||
|
**Статус:** ⚠️ ВЫСОКИЙ РИСК - Удаляется измерение
|
||||||
|
|
||||||
|
**Описание проблемы:**
|
||||||
|
- Из регистра удаляется измерение `УдалитьАналитикаУчетаНоменклатуры`
|
||||||
|
- Измерение помечено как "(не используется)" в метаданных
|
||||||
|
- Тип измерения: `CatalogRef.КлючиАналитикиУчетаНоменклатуры`
|
||||||
|
|
||||||
|
**Структура регистра:**
|
||||||
|
- **Тип:** Регистр накопления (Остатки)
|
||||||
|
- **Измерения:**
|
||||||
|
1. Организация
|
||||||
|
2. Номенклатура
|
||||||
|
3. Характеристика
|
||||||
|
4. Подразделение
|
||||||
|
5. Серия
|
||||||
|
6. Назначение
|
||||||
|
7. **УдалитьАналитикаУчетаНоменклатуры** ⚠️ (УДАЛЯЕТСЯ)
|
||||||
|
|
||||||
|
**Почему это критично:**
|
||||||
|
|
||||||
|
После удаления измерения `УдалитьАналитикаУчетаНоменклатуры` все записи с одинаковыми значениями остальных измерений, но разными значениями удаляемого измерения, станут неразличимыми. Это приведет к нарушению уникальности ключа регистра.
|
||||||
|
|
||||||
|
**Пример проблемы:**
|
||||||
|
|
||||||
|
```
|
||||||
|
ДО удаления измерения:
|
||||||
|
┌─────────────┬──────────────┬─────────────────────────────────────┬──────────┐
|
||||||
|
│ Организация │ Номенклатура │ УдалитьАналитикаУчетаНоменклатуры │ Количество│
|
||||||
|
├─────────────┼──────────────┼─────────────────────────────────────┼──────────┤
|
||||||
|
│ ООО "А" │ Товар1 │ Ключ1 │ 10 │
|
||||||
|
│ ООО "А" │ Товар1 │ Ключ2 │ 20 │
|
||||||
|
└─────────────┴──────────────┴─────────────────────────────────────┴──────────┘
|
||||||
|
|
||||||
|
ПОСЛЕ удаления измерения:
|
||||||
|
┌─────────────┬──────────────┬──────────┐
|
||||||
|
│ Организация │ Номенклатура │ Количество│
|
||||||
|
├─────────────┼──────────────┼──────────┤
|
||||||
|
│ ООО "А" │ Товар1 │ 10 │ ← ДУБЛИКАТ!
|
||||||
|
│ ООО "А" │ Товар1 │ 20 │ ← ДУБЛИКАТ!
|
||||||
|
└─────────────┴──────────────┴──────────┘
|
||||||
|
→ НАРУШЕНИЕ УНИКАЛЬНОСТИ!
|
||||||
|
```
|
||||||
|
|
||||||
|
**Рекомендации:**
|
||||||
|
|
||||||
|
1. **ОБЯЗАТЕЛЬНО** выполнить проверку на дубликаты перед обновлением (использовать скрипт `check_duplicates_materials.bsl`)
|
||||||
|
2. Если дубликаты найдены - объединить записи или очистить данные
|
||||||
|
3. Убедиться, что после обработки дубликатов нет
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## План действий перед обновлением
|
||||||
|
|
||||||
|
### Этап 1: Подготовка (КРИТИЧНО) ⚠️
|
||||||
|
|
||||||
|
- [ ] **Создать полную резервную копию базы данных**
|
||||||
|
- [ ] **Экспортировать данные из всех 35 проблемных регистров:**
|
||||||
|
- [ ] Все 25 регистров накопления
|
||||||
|
- [ ] Все 10 регистров сведений
|
||||||
|
- [ ] **Выполнить проверку на дубликаты для регистра МатериалыИРаботыВПроизводстве:**
|
||||||
|
- [ ] Запустить скрипт `check_duplicates_materials.bsl`
|
||||||
|
- [ ] Проанализировать результаты
|
||||||
|
- [ ] Определить стратегию обработки
|
||||||
|
|
||||||
|
### Этап 2: Обработка данных
|
||||||
|
|
||||||
|
#### Для регистра МатериалыИРаботыВПроизводстве:
|
||||||
|
|
||||||
|
- [ ] Если дубликаты НЕ найдены:
|
||||||
|
- [ ] Можно безопасно применять обновление
|
||||||
|
- [ ] Измерение будет удалено без последствий
|
||||||
|
|
||||||
|
- [ ] Если дубликаты найдены:
|
||||||
|
- [ ] Выбрать вариант решения (объединение или очистка)
|
||||||
|
- [ ] Выполнить обработку данных
|
||||||
|
- [ ] Повторно проверить на дубликаты
|
||||||
|
- [ ] Убедиться, что дубликатов больше нет
|
||||||
|
|
||||||
|
#### Для удаляемых регистров:
|
||||||
|
|
||||||
|
- [ ] Определить, нужны ли данные после обновления
|
||||||
|
- [ ] Если нужны:
|
||||||
|
- [ ] Создать скрипт миграции данных
|
||||||
|
- [ ] Протестировать миграцию на копии базы
|
||||||
|
- [ ] Если не нужны:
|
||||||
|
- [ ] Можно удалить данные перед обновлением
|
||||||
|
|
||||||
|
### Этап 3: Применение обновления
|
||||||
|
|
||||||
|
- [ ] Применить обновление конфигурации из `CRM326/CRM326_TEST`
|
||||||
|
- [ ] Проверить отсутствие ошибок при обновлении
|
||||||
|
- [ ] Проверить целостность данных
|
||||||
|
|
||||||
|
### Этап 4: Верификация
|
||||||
|
|
||||||
|
- [ ] Проверить работу регистра МатериалыИРаботыВПроизводстве
|
||||||
|
- [ ] Убедиться, что данные корректны
|
||||||
|
- [ ] Проверить отсутствие ошибок уникальности
|
||||||
|
- [ ] Провести функциональное тестирование
|
||||||
|
- [ ] Если данные были мигрированы - проверить их корректность
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Инструменты и скрипты
|
||||||
|
|
||||||
|
### Созданные инструменты:
|
||||||
|
|
||||||
|
1. **compare_configurations.py** - сравнение конфигураций для поиска удаляемых объектов
|
||||||
|
2. **deep_register_analysis.py** - автоматический анализ всех регистров
|
||||||
|
3. **check_duplicates_materials.bsl** - проверка дубликатов в регистре МатериалыИРаботыВПроизводстве
|
||||||
|
4. **analyze_registers.py** - базовый анализ регистров
|
||||||
|
5. **find_references.py** - поиск ссылок на удаляемые объекты
|
||||||
|
|
||||||
|
### Отчеты:
|
||||||
|
|
||||||
|
- `deleted_objects_report.txt` - отчет об удаляемых объектах (176 объектов)
|
||||||
|
- `deep_register_analysis_report.txt` - детальный отчет анализа регистров (35 проблемных регистров)
|
||||||
|
- `register_analysis_report.txt` - базовый отчет
|
||||||
|
- `references_report.txt` - отчет о ссылках
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Выводы
|
||||||
|
|
||||||
|
### Критические проблемы:
|
||||||
|
|
||||||
|
1. **35 регистров полностью удаляются:**
|
||||||
|
- 25 регистров накопления
|
||||||
|
- 10 регистров сведений
|
||||||
|
- Все данные этих регистров будут потеряны
|
||||||
|
|
||||||
|
2. **1 регистр имеет удаляемое измерение:**
|
||||||
|
- РегистрНакопления.МатериалыИРаботыВПроизводстве
|
||||||
|
- Измерение: УдалитьАналитикаУчетаНоменклатуры
|
||||||
|
- **ВЫСОКИЙ РИСК нарушения уникальности**
|
||||||
|
|
||||||
|
### Главный риск:
|
||||||
|
|
||||||
|
**РегистрНакопления.МатериалыИРаботыВПроизводстве** может потерять уникальность данных после удаления измерения `УдалитьАналитикаУчетаНоменклатуры`.
|
||||||
|
|
||||||
|
### Обязательные действия:
|
||||||
|
|
||||||
|
1. ✅ **ОБЯЗАТЕЛЬНО** выполнить проверку на дубликаты перед обновлением
|
||||||
|
2. ✅ **ОБЯЗАТЕЛЬНО** обработать найденные дубликаты
|
||||||
|
3. ✅ **ОБЯЗАТЕЛЬНО** создать резервную копию базы данных
|
||||||
|
4. ✅ **ОБЯЗАТЕЛЬНО** экспортировать данные из удаляемых регистров (если они нужны)
|
||||||
|
|
||||||
|
### Рекомендации:
|
||||||
|
|
||||||
|
- Не применять обновление без предварительной проверки на дубликаты
|
||||||
|
- Использовать созданные скрипты для автоматизации проверки
|
||||||
|
- Документировать все действия по обработке данных
|
||||||
|
- Тестировать на копии базы данных перед применением к рабочей базе
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Статус анализа
|
||||||
|
|
||||||
|
✅ **Анализ завершен**
|
||||||
|
|
||||||
|
- Проанализировано: 801 регистр
|
||||||
|
- Найдено проблемных регистров: 35
|
||||||
|
- Удаляемых объектов конфигурации: 176
|
||||||
|
- Статус: Требуется обработка данных перед обновлением
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**ВНИМАНИЕ!** Перед применением обновления обязательно выполните все действия из раздела "План действий перед обновлением".
|
||||||
|
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
---
|
||||||
|
title: ФИНАЛЬНЫЙ СПИСОК РОЛЕЙ ДЛЯ ВКЛЮЧЕНИЯ В НОВОЙ СИСТЕМЕ
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2025-12-10
|
||||||
|
date_modified: 2025-12-10
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# ФИНАЛЬНЫЙ СПИСОК РОЛЕЙ ДЛЯ ВКЛЮЧЕНИЯ В НОВОЙ СИСТЕМЕ
|
||||||
|
|
||||||
|
## ⚠️ ВАЖНО: Учет переименований
|
||||||
|
|
||||||
|
В старой системе роли могут называться **"Добавление изменение..."**, а в новой системе **"Добавление и изменение..."**. Это одна и та же роль с разным названием.
|
||||||
|
|
||||||
|
При поиске ролей в новой системе необходимо учитывать это различие.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 СПИСОК РОЛЕЙ ДЛЯ ВКЛЮЧЕНИЯ (16 позиций)
|
||||||
|
|
||||||
|
### 1. Базовые права (CRM)
|
||||||
|
- **Старая система:** "Базовые права (CRM)" - ✅ Да
|
||||||
|
- **Новая система:** "Базовые права (CRM)" - ❌ Нет
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 2. Ввод документа "Отчет по работам" (CRM)
|
||||||
|
- **Старая система:** "Ввод документа "Отчет по работам" (CRM)" - ✅ Да
|
||||||
|
- **Новая система:** "Ввод документа "Отчет по работам" (CRM)" - ❌ Нет
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 3. Выполнение обмена электронными документами
|
||||||
|
- **Старая система:** "Выполнение обмена электронными документами" - ✅ Да
|
||||||
|
- **Новая система:** Отсутствует в списке
|
||||||
|
- **Действие:** ⚠️ Проверить наличие роли и включить (возможно переименована)
|
||||||
|
|
||||||
|
### 4. Выполнение синхронизации данных
|
||||||
|
- **Старая система:** "Выполнение синхронизации данных" - ✅ Да
|
||||||
|
- **Новая система:** "Выполнение синхронизации данных" - ❌ Нет
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 5. Добавление и изменение документов по банку
|
||||||
|
- **Старая система:** "Добавление и изменение документов по банку" - ✅ Да
|
||||||
|
- **Новая система:** "Добавление и изменение документов по банку" - ❌ Нет
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 6. Добавление и изменение реализаций товаров услуг
|
||||||
|
- **Старая система:** "Добавление и изменение реализаций товаров услуг" - ✅ Да
|
||||||
|
- **Новая система:** "Добавление и изменение реализаций товаров услуг" - ❌ Нет
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 7. Добавление и изменение заказов клиентов ⚠️ ПЕРЕИМЕНОВАНИЕ
|
||||||
|
- **Старая система:** "Добавление изменение заказов клиентов" - ✅ Да
|
||||||
|
- **Новая система:** "Добавление и изменение заказов клиентов" - ❌ Нет
|
||||||
|
- **Примечание:** Название отличается: "изменение" → "и изменение"
|
||||||
|
- **Действие:** ✅ Включить (это та же роль)
|
||||||
|
|
||||||
|
### 8. Добавление и изменение узлов планов обмена ⚠️ ПЕРЕИМЕНОВАНИЕ
|
||||||
|
- **Старая система:** "Добавление изменение узлов планов обмена" - ✅ Да
|
||||||
|
- **Новая система:** "Добавление и изменение узлов планов обмена" - ❌ Нет (или отсутствует)
|
||||||
|
- **Примечание:** Название отличается: "изменение" → "и изменение"
|
||||||
|
- **Действие:** ✅ Найти роль "Добавление и изменение узлов планов обмена" и включить
|
||||||
|
|
||||||
|
### 9. Использование дополнительных отчетов и обработок УТ ⚠️ ПЕРЕИМЕНОВАНИЕ
|
||||||
|
- **Старая система:** "Использование дополнительных отчетов и обработок (CRM)" - ✅ Да
|
||||||
|
- **Новая система:** "Использование дополнительных отчетов и обработок УТ" - ❌ Нет (или нужно проверить)
|
||||||
|
- **Примечание:** В новой системе "(CRM)" заменено на "УТ"
|
||||||
|
- **Действие:** ✅ Найти роль "Использование дополнительных отчетов и обработок УТ" и включить
|
||||||
|
|
||||||
|
### 10. Использование интеграции с 1С:Документооборотом
|
||||||
|
- **Старая система:** "Использование интеграции с 1С:Документооборотом" - ✅ Да
|
||||||
|
- **Новая система:** "Использование интеграции с 1С:Документооборотом" - ❌ Нет
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 11. Настройка синхронизации данных ⚠️ ОТСУТСТВУЕТ
|
||||||
|
- **Старая система:** "Настройка синхронизации данных" - ✅ Да
|
||||||
|
- **Новая система:** Отсутствует в списке
|
||||||
|
- **Действие:** ⚠️ Проверить, есть ли под другим названием (например, "Настройка синхронизации файлов")
|
||||||
|
|
||||||
|
### 12. Раздел запасы
|
||||||
|
- **Старая система:** "Раздел запасы" - ✅ Да
|
||||||
|
- **Новая система:** "Раздел запасы" - ❌ Нет (или отсутствует)
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 13. Раздел отчеты и мониторинг
|
||||||
|
- **Старая система:** "Раздел отчеты и мониторинг" - ✅ Да
|
||||||
|
- **Новая система:** "Раздел отчеты и мониторинг" - ❌ Нет (или отсутствует)
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 14. Чтение базовой нормативно-справочной информации
|
||||||
|
- **Старая система:** "Чтение базовой нормативно-справочной информации" - ✅ Да
|
||||||
|
- **Новая система:** "Чтение базовой нормативно-справочной информации" - ❌ Нет (или отсутствует)
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 15. Чтение документов списания поступления безналичных ДС
|
||||||
|
- **Старая система:** "Чтение документов списания поступления безналичных ДС" - ✅ Да
|
||||||
|
- **Новая система:** "Чтение документов списания поступления безналичных ДС" - ❌ Нет (или отсутствует)
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
### 16. Чтение состояний отгрузки
|
||||||
|
- **Старая система:** "Чтение состояний отгрузки" - ✅ Да
|
||||||
|
- **Новая система:** "Чтение состояний отгрузки" - ❌ Нет (или отсутствует)
|
||||||
|
- **Действие:** ✅ Включить
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Дополнительные роли с возможными переименованиями (требуют проверки)
|
||||||
|
|
||||||
|
Следующие роли из старой системы с "Да" могут иметь аналоги в новой системе с другим названием:
|
||||||
|
|
||||||
|
1. **Добавление изменение корректировок обособленного учета запасов** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение корректировок обособленного учета запасов"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
2. **Добавление изменение корректировок реализаций** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение корректировок реализаций"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
3. **Добавление изменение листов кассовой книги** (старая: Да)
|
||||||
|
- Проверить в новой: "Добавление и изменение листов кассовой книги"
|
||||||
|
- Если найдена и имеет "Нет" → включить
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Итоговые действия
|
||||||
|
|
||||||
|
1. **Включить все 16 ролей из основного списка**
|
||||||
|
2. **При поиске ролей учитывать переименования:**
|
||||||
|
- "Добавление изменение..." → искать "Добавление и изменение..."
|
||||||
|
3. **Проверить дополнительные роли с возможными переименованиями**
|
||||||
|
4. **Убедиться, что все роли чтения данных сохранены**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Статистика
|
||||||
|
|
||||||
|
- **Всего ролей для включения:** 15 (в списке новой системы)
|
||||||
|
- **Ролей с переименованиями:** 3 (позиции 7, 8, 9)
|
||||||
|
- **Ролей, отсутствующих в новой системе:** 2 (позиции 3 и 11)
|
||||||
|
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
---
|
||||||
|
title: Чек-лист внедрения графы 5б в УПД
|
||||||
|
version: 1.0
|
||||||
|
date_created: 2026-04-21
|
||||||
|
date_modified: 2026-04-21
|
||||||
|
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||||
|
description: Рабочий чек-лист для разработки и приемки реализации графы 5б в УПД с приоритетом изменений через расширение crm3-dev.rhana.
|
||||||
|
status: К выполнению
|
||||||
|
based_on: ТЗ_минимальная_реализация_графы_5б_УПД_2026-04-21.md
|
||||||
|
based_on_title: Техническое задание - минимальная реализация графы 5б в УПД (через расширение)
|
||||||
|
based_on_version: 1.1
|
||||||
|
show_metadata_block: true
|
||||||
|
show_index_link: true
|
||||||
|
show_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Рабочий чек-лист внедрения
|
||||||
|
|
||||||
|
## Ссылки на ТЗ
|
||||||
|
|
||||||
|
- Базовый документ: [ТЗ по графе 5б](ТЗ_минимальная_реализация_графы_5б_УПД_2026-04-21.md)
|
||||||
|
- Архитектурный принцип: см. раздел `2` ТЗ.
|
||||||
|
- Карта объектов: см. раздел `4` ТЗ.
|
||||||
|
- Детализация реализации: см. раздел `5` ТЗ.
|
||||||
|
- Шаблоны кода: см. раздел `6` ТЗ.
|
||||||
|
- Правила разработки: см. раздел `7` ТЗ.
|
||||||
|
- План работ: см. раздел `8` ТЗ.
|
||||||
|
- Критерии приемки: см. раздел `9` ТЗ.
|
||||||
|
|
||||||
|
## 1. Подготовка
|
||||||
|
|
||||||
|
- [ ] Подтвердить ветку разработки и стенд внедрения (см. разделы `1`, `2` ТЗ).
|
||||||
|
- [ ] Зафиксировать версии:
|
||||||
|
- `crm3-dev`
|
||||||
|
- `crm3-dev.rhana`
|
||||||
|
- текущий рабочий макет УПД.
|
||||||
|
- [ ] Создать резервные копии объектов:
|
||||||
|
- `Documents/СчетФактураВыданный`
|
||||||
|
- `DataProcessors/ПечатьОбщихФорм`
|
||||||
|
- макет УПД в расширении.
|
||||||
|
- [ ] Проверить, что правила `&ИзменениеИКонтроль` применимы для целевых методов (см. раздел `7` ТЗ).
|
||||||
|
|
||||||
|
## 2. Реализация в расширении документа `СчетФактураВыданный`
|
||||||
|
|
||||||
|
Файл: `crm3-dev.rhana/src/Documents/СчетФактураВыданный/Ext/ManagerModule.bsl` (см. разделы `4.1`, `5.1`, `6.1`, `6.2`, `6.3`, `6.4` ТЗ)
|
||||||
|
|
||||||
|
### 2.1. Функция формирования строки 5б
|
||||||
|
- [ ] Добавить `упд5б_СтрокаАвансовыеСчетаФактуры(ПлатежноРасчетныеДокументы) Экспорт` (шаблон: раздел `6.1` ТЗ).
|
||||||
|
- [ ] Проверить формат вывода:
|
||||||
|
- `№ %1 от %2, исправление № %3 от %4`
|
||||||
|
- разделитель нескольких значений: `; `.
|
||||||
|
|
||||||
|
### 2.2. Временная таблица платежно-расчетных документов
|
||||||
|
- [ ] Расширить `ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(...)` (цельный блок с директивами, раздел `6.2` ТЗ).
|
||||||
|
- [ ] Добавить колонку `СтрокаАвансовыеСчетаФактуры` (раздел `6.2` ТЗ).
|
||||||
|
- [ ] Заполнять колонку через `упд5б_СтрокаАвансовыеСчетаФактуры(...)` (раздел `6.2` ТЗ).
|
||||||
|
|
||||||
|
### 2.3. Запрос данных по оплатам/авансовым СФ
|
||||||
|
- [ ] Расширить `ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()` (цельный блок с директивами, раздел `6.3` ТЗ).
|
||||||
|
- [ ] Добавить получение полей:
|
||||||
|
- `НомерСчетаФактурыНаАванс`
|
||||||
|
- `ДатаСчетаФактурыНаАванс`
|
||||||
|
- `НомерИсправленияСчетаФактурыНаАванс`
|
||||||
|
- `ДатаИсправленияСчетаФактурыНаАванс`.
|
||||||
|
- [ ] Проверить, что используются связи с `Документ.СчетФактураВыданныйАванс`.
|
||||||
|
|
||||||
|
### 2.4. Прокидывание в данные печати
|
||||||
|
- [ ] Добавить в запрос шапки поле `ПредставлениеАвансовыеСчетаФактуры` (раздел `6.4` ТЗ).
|
||||||
|
- [ ] Реализовать через `ЕСТЬNULL(...)` (ВТ/данные документа) (раздел `6.4` ТЗ).
|
||||||
|
|
||||||
|
## 3. Реализация в расширении печати УПД
|
||||||
|
|
||||||
|
Файл: `crm3-dev.rhana/src/DataProcessors/ПечатьОбщихФорм/Ext/ManagerModule.bsl` (см. разделы `4.1`, `5.2`, `6.5` ТЗ)
|
||||||
|
|
||||||
|
### 3.1. Вставка в `р_ЗаполнитьТабличныйДокументУПД(...)`
|
||||||
|
- [ ] Добавить получение `ДанныеПечати.ПредставлениеАвансовыеСчетаФактуры` (раздел `6.5` ТЗ).
|
||||||
|
- [ ] Добавить fallback:
|
||||||
|
- `№ -- от --, исправление № -- от --`.
|
||||||
|
- [ ] Заполнить параметр:
|
||||||
|
- `ОбластьШапка.Параметры.АвансовыеСчетаФактуры` (раздел `6.5` ТЗ).
|
||||||
|
|
||||||
|
### 3.2. Контроль совместимости
|
||||||
|
- [ ] Проверить, что при отсутствии поля/значения печать не падает.
|
||||||
|
- [ ] Проверить, что прочие поля УПД не изменили поведение.
|
||||||
|
|
||||||
|
## 4. Изменение макета УПД (в расширении)
|
||||||
|
|
||||||
|
См. разделы `4.1`, `5.3`, `8` ТЗ.
|
||||||
|
|
||||||
|
- [ ] Добавить параметр `АвансовыеСчетаФактуры` в область `Шапка` (строка 5б).
|
||||||
|
- [ ] Проверить совпадение имени параметра в макете и коде.
|
||||||
|
- [ ] Проверить перенос длинной строки в шапке.
|
||||||
|
|
||||||
|
## 5. Стандарты и контроль качества кода
|
||||||
|
|
||||||
|
См. раздел `7` ТЗ.
|
||||||
|
|
||||||
|
- [ ] Все изменения в перехватываемых методах оформлены через `&ИзменениеИКонтроль`.
|
||||||
|
- [ ] Новые блоки оформлены в `#Вставка` / `#Удаление`.
|
||||||
|
- [ ] В `#Удаление` нет комментариев и нового текста.
|
||||||
|
- [ ] Новые методы расширения имеют префикс `упд5б_`.
|
||||||
|
- [ ] Проверка `check_ext` выполнена без критических несоответствий.
|
||||||
|
|
||||||
|
## 6. Тестовые сценарии (минимум)
|
||||||
|
|
||||||
|
См. разделы `8` и `9` ТЗ.
|
||||||
|
|
||||||
|
### 6.1. Позитивные
|
||||||
|
- [ ] Реализация с одним авансовым СФ -> 5б заполнена корректно.
|
||||||
|
- [ ] Реализация с несколькими авансовыми СФ -> значения через `; `.
|
||||||
|
- [ ] Реализация с исправленным авансовым СФ -> отображаются номер/дата исправления.
|
||||||
|
|
||||||
|
### 6.2. Негативные и граничные
|
||||||
|
- [ ] Нет авансовых СФ -> вывод fallback.
|
||||||
|
- [ ] Старые документы без данных 5б печатаются без ошибок.
|
||||||
|
- [ ] Пустые/частично заполненные значения не ломают формат строки.
|
||||||
|
|
||||||
|
### 6.3. Регрессия
|
||||||
|
- [ ] УПД без авансов печатается как до внедрения.
|
||||||
|
- [ ] Графы 5а/6/7/8 работают корректно.
|
||||||
|
- [ ] Печать из `РеализацияТоваровУслуг` без ошибок.
|
||||||
|
|
||||||
|
## 7. Критерии готовности (Definition of Done)
|
||||||
|
|
||||||
|
См. раздел `9` ТЗ.
|
||||||
|
|
||||||
|
- [ ] В графе 5б выводятся авансовые СФ для закрываемой реализацией оплаты.
|
||||||
|
- [ ] При отсутствии данных применяется fallback.
|
||||||
|
- [ ] Изменения выполнены преимущественно в `crm3-dev.rhana`.
|
||||||
|
- [ ] Протокол тестирования заполнен и подписан.
|
||||||
|
- [ ] Подготовлен список фактически измененных объектов.
|
||||||
|
|
||||||
|
## 8. Протокол сдачи
|
||||||
|
|
||||||
|
См. разделы `10` и `11` ТЗ.
|
||||||
|
|
||||||
|
- [ ] Передать перечень измененных объектов (файл/метод/тип изменения).
|
||||||
|
- [ ] Передать скриншоты УПД по 3 ключевым кейсам (1 СФ, несколько СФ, fallback).
|
||||||
|
- [ ] Передать результаты `check_ext`.
|
||||||
|
- [ ] Передать итоговую оценку рисков (низкий/средний/высокий) и план отката.
|
||||||
@@ -5,16 +5,124 @@
|
|||||||
"files": [
|
"files": [
|
||||||
"docs/Checklist_5b_UPD_2026-04-21.md",
|
"docs/Checklist_5b_UPD_2026-04-21.md",
|
||||||
"docs/INDEX.md",
|
"docs/INDEX.md",
|
||||||
|
"docs/PROJECT_CONTEXT.md",
|
||||||
|
"docs/README_md_to_html.md",
|
||||||
|
"docs/TZ2_full_UPD_migration_2026-04-21.md",
|
||||||
|
"docs/TZ_min_5b_UPD_2026-04-21.md",
|
||||||
|
"docs/diadoc_answer_2026-05-08.md",
|
||||||
|
"docs/instructions_filter_access_groups.md",
|
||||||
|
"docs/meta/PROJECT_STRUCTURE.md",
|
||||||
"docs/test.md",
|
"docs/test.md",
|
||||||
|
"docs/Анализ_доработок_синхронизации_ЗаказКлиента.md",
|
||||||
|
"docs/Анализ_доработок_синхронизации_РеализацияТоваровУслуг.md",
|
||||||
|
"docs/Анализ_доработок_складского_учета_и_печати_документов.md",
|
||||||
|
"docs/Анализ_доработок_формы_приемки_УправлениеПоступлением.md",
|
||||||
|
"docs/Анализ_механизма_перезаполнения_CRM_ЖурналДокументов.md",
|
||||||
|
"docs/Анализ_обмена_НДС_22_с_Бухгалтерией_КОРП.md",
|
||||||
|
"docs/Анализ_обработчиков_обновления_НДС_22.md",
|
||||||
"docs/Анализ_ошибок_обновления.md",
|
"docs/Анализ_ошибок_обновления.md",
|
||||||
|
"docs/Анализ_переноса_обработки_КредитНотаЗаПериод.md",
|
||||||
|
"docs/Анализ_печати_пакета_документов_и_складского_учета (v3.0).md",
|
||||||
|
"docs/Анализ_привязок_серий_номенклатур_к_видам_номенклатур.md",
|
||||||
|
"docs/Анализ_применения_КредитНота (v1.1).md",
|
||||||
|
"docs/Анализ_применения_КредитНота.md",
|
||||||
|
"docs/Анализ_применения_реквизита_Купон (v1.0).md",
|
||||||
|
"docs/Анализ_применения_реквизита_Купон.md",
|
||||||
|
"docs/Анализ_различий_crm3-26-test_vs_crm3-dev.md",
|
||||||
|
"docs/Анализ_рисков_неуникальности_CRM_ЖурналДокументов.md",
|
||||||
"docs/Быстрое_решение.md",
|
"docs/Быстрое_решение.md",
|
||||||
|
"docs/Выводы_сравнения_конфигураций.md",
|
||||||
"docs/Глубинный_анализ_регистров.md",
|
"docs/Глубинный_анализ_регистров.md",
|
||||||
|
"docs/Дорожная_карта_миграции_CRM3_v0.1.md",
|
||||||
|
"docs/Инструкция_добавления_ролей_в_профиль.md",
|
||||||
|
"docs/Инструкция_по_запуску_md_convert.md",
|
||||||
"docs/Инструкция_по_исправлению.md",
|
"docs/Инструкция_по_исправлению.md",
|
||||||
"docs/ТЗ_минимальная_реализация_графы_5б_УПД_2026-04-21.md"
|
"docs/Итоговый_отчет_анализа_регистров.md",
|
||||||
|
"docs/Отчет_о_конвертации.md",
|
||||||
|
"docs/Оценка_правок_для_переноса_НДС_22.md",
|
||||||
|
"docs/Оценка_правок_для_переноса_НДС_22_(v1.1).md",
|
||||||
|
"docs/Перечень_констант_crm3-26-test.md",
|
||||||
|
"docs/Перечень_констант_crm3-dev.md",
|
||||||
|
"docs/Проблема_неуникальности_регистра_CRM_ЖурналДокументов.md",
|
||||||
|
"docs/Проверка_ставки_НДС_22.md",
|
||||||
|
"docs/РЕЗУЛЬТАТЫ_КОНВЕРТАЦИИ.md",
|
||||||
|
"docs/Реализация_переноса_НДС_22.md",
|
||||||
|
"docs/Роли_для_включения_в_новой_системе.md",
|
||||||
|
"docs/Роли_для_отметки_ДА_осталось.md",
|
||||||
|
"docs/Сверка_ролей_профиля.md",
|
||||||
|
"docs/Сверка_ролей_с_учетом_переименований.md",
|
||||||
|
"docs/Сводка_переноса_и_настройки_актуальной_формы_УПД.md",
|
||||||
|
"docs/Сводка_рисков_неуникальности.md",
|
||||||
|
"docs/Список_объектов_для_удаления_из_подсистем.md",
|
||||||
|
"docs/Список_ролей_для_отметки_ДА.md",
|
||||||
|
"docs/Сравнение_констант_crm3-dev_vs_crm3-26-test.md",
|
||||||
|
"docs/ТЗ_2_полный_перенос_логики_УПД_из_crm3-26-promo_в_crm3-dev_2026-04-21.md",
|
||||||
|
"docs/ТЗ_3_Внедрение_формы_УПД_в_текущую_рабочую_базу_2026-05-05.md",
|
||||||
|
"docs/ТЗ_минимальная_реализация_графы_5б_УПД_2026-04-21.md",
|
||||||
|
"docs/Улучшения_скрипта_проверки.md",
|
||||||
|
"docs/ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.md",
|
||||||
|
"docs/ФИНАЛЬНЫЙ_СПИСОК_РОЛЕЙ_ДЛЯ_ВКЛЮЧЕНИЯ.md",
|
||||||
|
"docs/Чеклист_внедрения_графы_5б_УПД_2026-04-21.md"
|
||||||
],
|
],
|
||||||
"sources": [
|
"sources": [
|
||||||
"/Users/mihailkudravcev/projects/crm3-26/docs/Checklist_5b_UPD_2026-04-21.md",
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Checklist_5b_UPD_2026-04-21.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/INDEX.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/PROJECT_CONTEXT.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/README_md_to_html.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/TZ2_full_UPD_migration_2026-04-21.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/TZ_min_5b_UPD_2026-04-21.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/diadoc_answer_2026-05-08.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/instructions_filter_access_groups.md",
|
||||||
"/Users/mihailkudravcev/projects/crm3-26/docs/test.md",
|
"/Users/mihailkudravcev/projects/crm3-26/docs/test.md",
|
||||||
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_ошибок_обновления.md"
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_доработок_синхронизации_ЗаказКлиента.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_доработок_синхронизации_РеализацияТоваровУслуг.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_доработок_складского_учета_и_печати_документов.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_доработок_формы_приемки_УправлениеПоступлением.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_механизма_перезаполнения_CRM_ЖурналДокументов.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_обмена_НДС_22_с_Бухгалтерией_КОРП.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_обработчиков_обновления_НДС_22.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_ошибок_обновления.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_переноса_обработки_КредитНотаЗаПериод.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_печати_пакета_документов_и_складского_учета (v3.0).md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_привязок_серий_номенклатур_к_видам_номенклатур.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_применения_КредитНота (v1.1).md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_применения_КредитНота.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_применения_реквизита_Купон (v1.0).md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_применения_реквизита_Купон.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_различий_crm3-26-test_vs_crm3-dev.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_рисков_неуникальности_CRM_ЖурналДокументов.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Быстрое_решение.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Выводы_сравнения_конфигураций.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Глубинный_анализ_регистров.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Дорожная_карта_миграции_CRM3_v0.1.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Инструкция_добавления_ролей_в_профиль.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Инструкция_по_запуску_md_convert.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Инструкция_по_исправлению.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Итоговый_отчет_анализа_регистров.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Отчет_о_конвертации.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Оценка_правок_для_переноса_НДС_22.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Оценка_правок_для_переноса_НДС_22_(v1.1).md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Перечень_констант_crm3-26-test.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Перечень_констант_crm3-dev.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Проблема_неуникальности_регистра_CRM_ЖурналДокументов.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Проверка_ставки_НДС_22.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/РЕЗУЛЬТАТЫ_КОНВЕРТАЦИИ.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Реализация_переноса_НДС_22.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Роли_для_включения_в_новой_системе.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Роли_для_отметки_ДА_осталось.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Сверка_ролей_профиля.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Сверка_ролей_с_учетом_переименований.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Сводка_переноса_и_настройки_актуальной_формы_УПД.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Сводка_рисков_неуникальности.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Список_объектов_для_удаления_из_подсистем.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Список_ролей_для_отметки_ДА.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Сравнение_констант_crm3-dev_vs_crm3-26-test.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/ТЗ_2_полный_перенос_логики_УПД_из_crm3-26-promo_в_crm3-dev_2026-04-21.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/ТЗ_3_Внедрение_формы_УПД_в_текущую_рабочую_базу_2026-05-05.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/ТЗ_минимальная_реализация_графы_5б_УПД_2026-04-21.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Улучшения_скрипта_проверки.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/ФИНАЛЬНЫЙ_СПИСОК_РОЛЕЙ_ДЛЯ_ВКЛЮЧЕНИЯ.md",
|
||||||
|
"/Users/mihailkudravcev/projects/crm3-26/docs/Чеклист_внедрения_графы_5б_УПД_2026-04-21.md"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user