export_docs v0.3.8: sync docs to docs (8 files)
+8
-1
@@ -1 +1,8 @@
|
||||
Добро пожаловать в вики.
|
||||
Добро пожаловать в вики.
|
||||
|
||||
|
||||
<!-- export_docs:begin -->
|
||||
## Документация (docs)
|
||||
|
||||
- [docs/index](docs/index)
|
||||
<!-- export_docs:end -->
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
|
||||
<!-- export_docs:begin -->
|
||||
### Документация (docs)
|
||||
|
||||
- [docs/index](docs/index)
|
||||
|
||||
<!-- export_docs:end -->
|
||||
@@ -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`.
|
||||
- [ ] Передать итоговую оценку рисков (низкий/средний/высокий) и план отката.
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Оглавление документов
|
||||
author: Руководитель отдела ИТ Кудрявцев М.А. (kma@rhana.com)
|
||||
version: 1.0
|
||||
date_created: 2026-01-04
|
||||
date_modified: 2026-01-04
|
||||
show_metadata_block: true
|
||||
show_index_link: false
|
||||
---
|
||||
|
||||
# Оглавление документов
|
||||
|
||||
Навигация по всем документам проекта.
|
||||
|
||||
## Анализ и отчеты
|
||||
|
||||
- [Анализ механизма перезаполнения CRM ЖурналДокументов](Анализ_механизма_перезаполнения_CRM_ЖурналДокументов.md)
|
||||
- [Анализ обработчиков обновления НДС 22](Анализ_обработчиков_обновления_НДС_22.md)
|
||||
- [Анализ ошибок обновления](Анализ_ошибок_обновления.md)
|
||||
- [Анализ печати пакета документов и складского учета (v3.0)](Анализ_печати_пакета_документов_и_складского_учета (v3.0).md)
|
||||
- [Анализ применения КредитНота (v1.1)](Анализ_применения_КредитНота (v1.1).md)
|
||||
- [Анализ применения реквизита Купон (v1.0)](Анализ_применения_реквизита_Купон (v1.0).md)
|
||||
- [Анализ рисков неуникальности CRM ЖурналДокументов](Анализ_рисков_неуникальности_CRM_ЖурналДокументов.md)
|
||||
- [Итоговый отчет анализа регистров](Итоговый_отчет_анализа_регистров.md)
|
||||
- [Отчет о конвертации](Отчет_о_конвертации.md)
|
||||
- [ФИНАЛЬНЫЙ ОТЧЕТ Анализ регистров](ФИНАЛЬНЫЙ_ОТЧЕТ_Анализ_регистров.md)
|
||||
|
||||
## Инструкции
|
||||
|
||||
- [Быстрое решение](Быстрое_решение.md)
|
||||
- [Инструкция добавления ролей в профиль](Инструкция_добавления_ролей_в_профиль.md)
|
||||
- [Инструкция по исправлению](Инструкция_по_исправлению.md)
|
||||
|
||||
## Другое
|
||||
|
||||
- [INDEX](INDEX.md)
|
||||
- [README md to html](README_md_to_html.md)
|
||||
- [instructions filter access groups](instructions_filter_access_groups.md)
|
||||
- [Выводы сравнения конфигураций](Выводы_сравнения_конфигураций.md)
|
||||
- [Глубинный анализ регистров](Глубинный_анализ_регистров.md)
|
||||
- [Оценка правок для переноса НДС 22 (v1.1)](Оценка_правок_для_переноса_НДС_22_(v1.1).md)
|
||||
- [Оценка правок для переноса НДС 22 (v1.3)](Оценка_правок_для_переноса_НДС_22_(v1.3).md)
|
||||
- [Оценка правок для переноса НДС 22 (v1.4)](Оценка_правок_для_переноса_НДС_22_(v1.4).md)
|
||||
- [Проблема неуникальности регистра CRM ЖурналДокументов](Проблема_неуникальности_регистра_CRM_ЖурналДокументов.md)
|
||||
- [Проверка ставки НДС 22](Проверка_ставки_НДС_22.md)
|
||||
- [РЕЗУЛЬТАТЫ КОНВЕРТАЦИИ](РЕЗУЛЬТАТЫ_КОНВЕРТАЦИИ.md)
|
||||
- [Роли для включения в новой системе](Роли_для_включения_в_новой_системе.md)
|
||||
- [Роли для отметки ДА осталось](Роли_для_отметки_ДА_осталось.md)
|
||||
- [Сверка ролей профиля](Сверка_ролей_профиля.md)
|
||||
- [Сверка ролей с учетом переименований](Сверка_ролей_с_учетом_переименований.md)
|
||||
- [Сводка рисков неуникальности](Сводка_рисков_неуникальности.md)
|
||||
- [Список объектов для удаления из подсистем](Список_объектов_для_удаления_из_подсистем.md)
|
||||
- [Список ролей для отметки ДА](Список_ролей_для_отметки_ДА.md)
|
||||
- [Улучшения скрипта проверки](Улучшения_скрипта_проверки.md)
|
||||
- [ФИНАЛЬНЫЙ СПИСОК РОЛЕЙ ДЛЯ ВКЛЮЧЕНИЯ](ФИНАЛЬНЫЙ_СПИСОК_РОЛЕЙ_ДЛЯ_ВКЛЮЧЕНИЯ.md)
|
||||
|
||||
---
|
||||
|
||||
*Этот файл автоматически сгенерирован скриптом конвертации.*
|
||||
+1
@@ -0,0 +1 @@
|
||||
# Проверка статей
|
||||
@@ -0,0 +1,196 @@
|
||||
---
|
||||
title: Анализ ошибок обновления конфигурации 1С
|
||||
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
|
||||
---
|
||||
|
||||
# Анализ ошибок обновления конфигурации 1С
|
||||
|
||||
> 📚 **См. также:** [Оглавление документов](INDEX.md) | [Глубинный анализ регистров](Глубинный_анализ_регистров.md) | [Быстрое решение](Быстрое_решение.md) | [Инструкция по исправлению](Инструкция_по_исправлению.md)
|
||||
|
||||
## Проблема
|
||||
При попытке применить обновление из конфигурации `crm326/crm326_test` на проект `crmdevlocal` возникают ошибки о наличии ссылок на удаляемые объекты.
|
||||
|
||||
## Категории удаляемых объектов
|
||||
|
||||
### 1. Подсистемы (5 объектов)
|
||||
- `Подсистема.ЭлектронноеВзаимодействие.Подсистема.БизнесСеть`
|
||||
- `Подсистема.ЭлектронноеВзаимодействие.Подсистема.ИнтеграцияСЯндексКассой`
|
||||
- `Подсистема.ЭлектронноеВзаимодействие.Подсистема.РаботаСНоменклатурой`
|
||||
- `Подсистема.ЭлектронноеВзаимодействие.Подсистема.ТорговыеПредложения`
|
||||
- `Подсистема.ЭлектронноеВзаимодействие.Подсистема.СервисДоставки`
|
||||
|
||||
**Ссылки:** Все ссылаются на `Подсистема.ЭлектронноеВзаимодействие.Справочная информация`
|
||||
|
||||
### 2. Элементы стилей (1 объект)
|
||||
- `ЭлементСтиля.ЦветГиперссылки`
|
||||
|
||||
**Ссылки:** Используется в формах справочников и документов
|
||||
|
||||
### 3. Общие картинки (9 объектов)
|
||||
- `ОбщаяКартинка.CRM_ИерархияСправочника`
|
||||
- `ОбщаяКартинка.CRM_СостояниеАктивен`
|
||||
- `ОбщаяКартинка.CRM_СтатусЗаблокирован`
|
||||
- `ОбщаяКартинка.CRM_СтатусОтключен`
|
||||
- `ОбщаяКартинка.CRM_УНФ_СостояниеСделки`
|
||||
- `ОбщаяКартинка.ДлительнаяОперация85БЭД`
|
||||
- `ОбщаяКартинка.Комментарий`
|
||||
- `ОбщаяКартинка.НастройкаОбменаДаннымиОтключена`
|
||||
- `ОбщаяКартинка.ЭлектронныйДокументОшибкаПодписи`
|
||||
- И другие...
|
||||
|
||||
### 4. Общие макеты (3 объекта)
|
||||
- `ОбщийМакет.Драйвер1ССканерШтрихкода`
|
||||
- `ОбщийМакет.ДрайверГексагонСканерыШтрихкода`
|
||||
- `ОбщийМакет.ДрайверККСДисплеиПокупателя`
|
||||
|
||||
### 5. Общие модули (25+ объектов)
|
||||
- Модули обмена данными
|
||||
- Модули электронного взаимодействия
|
||||
- Модули работы с оборудованием
|
||||
- И другие...
|
||||
|
||||
### 6. Подписки на события (3 объекта)
|
||||
- `ПодпискаНаСобытие.ИзменитьСостояниеВерсииПередЗаписьюЭД`
|
||||
- `ПодпискаНаСобытие.КонтрольОтраженияВУчетеЭДОПриЗаписиЭлектронногоДокумента`
|
||||
- `ПодпискаНаСобытие.ОбработатьЗаписьЭД`
|
||||
|
||||
### 7. Общие команды (7 объектов)
|
||||
- Команды работы с ЭДО
|
||||
- Команды обмена данными
|
||||
|
||||
### 8. Справочники и их элементы
|
||||
- Реквизиты справочников
|
||||
- Формы справочников
|
||||
- Команды справочников
|
||||
|
||||
### 9. Документы и их элементы
|
||||
- Реквизиты документов
|
||||
- Табличные части
|
||||
- Формы документов
|
||||
- Команды документов
|
||||
|
||||
### 10. Перечисления (5 объектов)
|
||||
- `Перечисление.ВидСервиса`
|
||||
- `Перечисление.Приоритеты`
|
||||
- `Перечисление.СокращенияЭД`
|
||||
- `Перечисление.СостоянияНаличия`
|
||||
- `Перечисление.ТипыПодключаемогоОборудования.ЗначениеПеречисления.ККМОфлайн`
|
||||
- `Перечисление.ФорматыХраненияОдностраничныхФайлов`
|
||||
|
||||
### 11. Отчеты (5 объектов)
|
||||
- `Отчет.CRM_ПлановыеЗатратыПроектов`
|
||||
- `Отчет.АнализСебестоимостиТоваровРасширенный`
|
||||
- И другие...
|
||||
|
||||
### 12. Обработки
|
||||
- Реквизиты обработок
|
||||
- Формы обработок
|
||||
- Команды обработок
|
||||
|
||||
### 13. Регистры
|
||||
- Регистры сведений
|
||||
- Регистры накопления
|
||||
|
||||
## Стратегия решения
|
||||
|
||||
### Вариант 1: Удаление ссылок (Рекомендуется)
|
||||
Удалить все ссылки на удаляемые объекты из основной конфигурации перед обновлением.
|
||||
|
||||
**Плюсы:**
|
||||
- Чистое решение
|
||||
- Конфигурация остается актуальной
|
||||
|
||||
**Минусы:**
|
||||
- Требует ручной работы
|
||||
- Может нарушить функциональность
|
||||
|
||||
### Вариант 2: Сохранение объектов в основной конфигурации
|
||||
Скопировать удаляемые объекты в основную конфигурацию перед обновлением.
|
||||
|
||||
**Плюсы:**
|
||||
- Сохраняет функциональность
|
||||
- Меньше изменений в коде
|
||||
|
||||
**Минусы:**
|
||||
- Дублирование объектов
|
||||
- Усложняет поддержку
|
||||
|
||||
### Вариант 3: Поэтапное обновление
|
||||
1. Сначала удалить ссылки на объекты, которые точно не нужны
|
||||
2. Сохранить критичные объекты в основной конфигурации
|
||||
3. Постепенно мигрировать функциональность
|
||||
|
||||
## План действий
|
||||
|
||||
### Этап 1: Подготовка
|
||||
1. Создать резервную копию конфигурации `crmdevlocal`
|
||||
2. Экспортировать список всех ссылок на удаляемые объекты
|
||||
3. Проанализировать критичность каждого использования
|
||||
|
||||
### Этап 2: Обработка по категориям
|
||||
|
||||
#### 2.1. Подсистемы
|
||||
- Проверить использование подсистем в `Справочная информация`
|
||||
- Удалить или закомментировать ссылки
|
||||
- Альтернатива: создать собственные подсистемы-заглушки
|
||||
|
||||
#### 2.2. Элементы стилей
|
||||
- Найти все использования `ЦветГиперссылки` в формах
|
||||
- Заменить на альтернативный стиль или удалить использование
|
||||
|
||||
#### 2.3. Общие картинки
|
||||
- Найти все использования картинок в формах
|
||||
- Заменить на альтернативные картинки или удалить элементы интерфейса
|
||||
|
||||
#### 2.4. Общие модули
|
||||
- Найти все вызовы методов из удаляемых модулей
|
||||
- Создать обертки или перенести необходимый функционал
|
||||
|
||||
#### 2.5. Реквизиты справочников/документов
|
||||
- Удалить использование реквизитов из форм
|
||||
- Обновить код, использующий эти реквизиты
|
||||
|
||||
#### 2.6. Перечисления
|
||||
- Найти все использования значений перечислений
|
||||
- Заменить на альтернативные решения или удалить функциональность
|
||||
|
||||
### Этап 3: Тестирование
|
||||
1. Проверить компиляцию конфигурации
|
||||
2. Провести функциональное тестирование
|
||||
3. Проверить отсутствие ошибок при обновлении
|
||||
|
||||
## Автоматизация
|
||||
|
||||
Рекомендуется создать скрипт для:
|
||||
1. Поиска всех ссылок на удаляемые объекты
|
||||
2. Генерации отчета о использованиях
|
||||
3. Автоматического удаления/замены некритичных ссылок
|
||||
|
||||
## Приоритеты исправления
|
||||
|
||||
### Высокий приоритет (критичные объекты)
|
||||
- Общие модули, используемые в бизнес-логике
|
||||
- Реквизиты документов, используемые в проводках
|
||||
- Перечисления, используемые в типах данных
|
||||
|
||||
### Средний приоритет
|
||||
- Формы и элементы интерфейса
|
||||
- Общие картинки
|
||||
- Команды
|
||||
|
||||
### Низкий приоритет
|
||||
- Справочная информация
|
||||
- Вспомогательные подсистемы
|
||||
|
||||
## Рекомендации
|
||||
|
||||
1. **Начать с анализа**: Определить, какие объекты действительно используются активно
|
||||
2. **Создать план миграции**: Для каждого удаляемого объекта определить стратегию замены
|
||||
3. **Тестировать поэтапно**: После каждого этапа проверять возможность обновления
|
||||
4. **Документировать изменения**: Вести журнал всех изменений для последующего анализа
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
---
|
||||
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)
|
||||
|
||||
## Суть проблемы
|
||||
|
||||
При обновлении из `crm326/crm326_test` на `crmdevlocal` система пытается удалить объекты, на которые есть ссылки в основной конфигурации.
|
||||
|
||||
## Три варианта решения
|
||||
|
||||
### Вариант 1: Быстрое (для тестирования)
|
||||
|
||||
**Удалить все ссылки на удаляемые объекты**
|
||||
|
||||
1. Запустите скрипт поиска:
|
||||
```bash
|
||||
python find_references.py CRM3devLocal
|
||||
```
|
||||
|
||||
2. Откройте `references_report.txt`
|
||||
|
||||
3. Для каждого файла из отчета:
|
||||
- Откройте файл в редакторе
|
||||
- Найдите строки с удаляемыми объектами
|
||||
- Закомментируйте или удалите эти строки
|
||||
|
||||
4. Проверьте компиляцию
|
||||
|
||||
**Время:** 2-4 часа
|
||||
**Риск:** Может нарушить функциональность
|
||||
|
||||
### Вариант 2: Безопасное (рекомендуется)
|
||||
|
||||
**Сохранить критичные объекты в основной конфигурации**
|
||||
|
||||
1. Перед обновлением экспортируйте удаляемые объекты:
|
||||
- Откройте конфигурацию `crm326_test`
|
||||
- Экспортируйте нужные объекты в файлы
|
||||
- Импортируйте их в `crmdevlocal`
|
||||
|
||||
2. Примените обновление
|
||||
|
||||
3. После обновления проверьте работоспособность
|
||||
|
||||
**Время:** 4-6 часов
|
||||
**Риск:** Минимальный
|
||||
|
||||
### Вариант 3: Поэтапное (для продакшена)
|
||||
|
||||
**Исправить по приоритетам**
|
||||
|
||||
#### Приоритет 1 (критично - исправить обязательно):
|
||||
- Общие модули, используемые в бизнес-логике
|
||||
- Реквизиты документов, влияющие на проводки
|
||||
- Перечисления в типах данных
|
||||
|
||||
#### Приоритет 2 (важно):
|
||||
- Формы и элементы интерфейса
|
||||
- Общие картинки в часто используемых формах
|
||||
|
||||
#### Приоритет 3 (можно отложить):
|
||||
- Справочная информация
|
||||
- Вспомогательные подсистемы
|
||||
|
||||
**Время:** 1-2 недели
|
||||
**Риск:** Минимальный при правильном подходе
|
||||
|
||||
## Топ-10 самых проблемных объектов
|
||||
|
||||
1. **ОбщийМодуль.ОбменСКонтрагентами*** (10+ модулей)
|
||||
- Используются в подсистеме обмена
|
||||
- **Решение:** Создать обертки или удалить функциональность обмена
|
||||
|
||||
2. **ОбщийМодуль.ЭлектронноеВзаимодействие*** (10+ модулей)
|
||||
- Используются в подсистеме ЭДО
|
||||
- **Решение:** Аналогично п.1
|
||||
|
||||
3. **Перечисление.Приоритеты**
|
||||
- Используется в 7 документах
|
||||
- **Решение:** Удалить реквизит `УдалитьПриоритет` из документов
|
||||
|
||||
4. **ОбщаяКартинка.Комментарий**
|
||||
- Используется в 5 формах
|
||||
- **Решение:** Заменить на альтернативную картинку или удалить
|
||||
|
||||
5. **ОбщаяКартинка.ЭлектронныйДокументОшибкаПодписи**
|
||||
- Используется в 5 формах
|
||||
- **Решение:** Аналогично п.4
|
||||
|
||||
6. **Справочник.Номенклатура.Реквизит.СтавкаНДС**
|
||||
- Используется в форме
|
||||
- **Решение:** Удалить из формы или использовать альтернативный источник
|
||||
|
||||
7. **Справочник.УчетныеПолитикиОрганизаций** (множество реквизитов)
|
||||
- Используется в форме элемента
|
||||
- **Решение:** Удалить реквизиты из формы или заменить на альтернативные
|
||||
|
||||
8. **Документ.УдалитьCRM_Сделка** (множество реквизитов)
|
||||
- Используется в формах
|
||||
- **Решение:** Удалить элементы формы, связанные с реквизитами
|
||||
|
||||
9. **Документ.УдалитьCRM_Событие** (множество реквизитов)
|
||||
- Используется в формах
|
||||
- **Решение:** Аналогично п.8
|
||||
|
||||
10. **Подсистемы ЭлектронноеВзаимодействие** (5 подсистем)
|
||||
- Используются в справочной информации
|
||||
- **Решение:** Удалить ссылки из справочной информации
|
||||
|
||||
## Минимальный набор действий для быстрого старта
|
||||
|
||||
1. **Создать резервную копию** (5 минут)
|
||||
```
|
||||
Конфигурация → Сохранить конфигурацию в файлы...
|
||||
```
|
||||
|
||||
2. **Запустить анализ** (10 минут)
|
||||
```bash
|
||||
python find_references.py CRM3devLocal
|
||||
```
|
||||
|
||||
3. **Исправить топ-3 проблемы** (2-3 часа)
|
||||
- Перечисление.Приоритеты → удалить реквизиты
|
||||
- Общие картинки → заменить/удалить
|
||||
- Критичные модули → создать обертки
|
||||
|
||||
4. **Проверить компиляцию** (5 минут)
|
||||
```
|
||||
Конфигурация → Проверить конфигурацию
|
||||
```
|
||||
|
||||
5. **Попробовать обновление** (10 минут)
|
||||
```
|
||||
Конфигурация → Сравнить, объединить с конфигурацией из файла...
|
||||
```
|
||||
|
||||
## Чек-лист быстрого исправления
|
||||
|
||||
- [ ] Резервная копия создана
|
||||
- [ ] Скрипт анализа запущен
|
||||
- [ ] Отчет проанализирован
|
||||
- [ ] Перечисление.Приоритеты исправлено
|
||||
- [ ] Общие картинки исправлены
|
||||
- [ ] Критичные модули обработаны
|
||||
- [ ] Конфигурация компилируется
|
||||
- [ ] Обновление проходит без ошибок ссылок
|
||||
|
||||
## Если ничего не помогает
|
||||
|
||||
1. **Временное решение:** Отключить проверку ссылок при обновлении (не рекомендуется)
|
||||
|
||||
2. **Радикальное решение:**
|
||||
- Создать новую конфигурацию на базе `crm326_test`
|
||||
- Перенести изменения из `crmdevlocal` вручную
|
||||
|
||||
3. **Обратиться за помощью:**
|
||||
- К команде разработки
|
||||
- К поставщику конфигурации
|
||||
- На форумы 1С
|
||||
|
||||
## Полезные команды
|
||||
|
||||
```bash
|
||||
# Поиск всех упоминаний объекта в файлах
|
||||
grep -r "ОбъектИмя" CRM3devLocal/src/
|
||||
|
||||
# Подсчет количества упоминаний
|
||||
grep -r "ОбъектИмя" CRM3devLocal/src/ | wc -l
|
||||
|
||||
# Поиск с контекстом (3 строки до и после)
|
||||
grep -r -A 3 -B 3 "ОбъектИмя" CRM3devLocal/src/
|
||||
```
|
||||
|
||||
## Контакты и ресурсы
|
||||
|
||||
- Документация 1С: https://its.1c.ru/
|
||||
- Форум 1С: https://forum.mista.ru/
|
||||
- Сообщество разработчиков: https://infostart.ru/
|
||||
|
||||
@@ -0,0 +1,296 @@
|
||||
---
|
||||
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)
|
||||
|
||||
## Цель анализа
|
||||
|
||||
Найти регистры сведений и регистры накопления, у которых из-за удаления нетиповых и старых объектов конфигурации, на которые ссылаются реквизиты измерений, после реструктуризации может быть нарушена уникальность данных по ключу измерений.
|
||||
|
||||
## Методология
|
||||
|
||||
1. Анализ всех регистров сведений и накопления в конфигурации `CRM3devLocal`
|
||||
2. Проверка измерений регистров на ссылки к удаляемым объектам
|
||||
3. Выявление рисков нарушения уникальности данных
|
||||
|
||||
## Результаты анализа
|
||||
|
||||
### Проанализировано
|
||||
- **Всего регистров:** 801
|
||||
- **Регистров сведений:** ~400
|
||||
- **Регистров накопления:** ~400
|
||||
|
||||
### Найдено проблемных регистров: 3
|
||||
|
||||
## Критические проблемы (CRITICAL)
|
||||
|
||||
### 1. РегистрНакопления.ТМЦВЭксплуатации
|
||||
|
||||
**Статус:** Весь регистр удаляется из конфигурации
|
||||
|
||||
**Проблема:**
|
||||
- Регистр полностью удаляется при обновлении
|
||||
- Все данные регистра будут потеряны
|
||||
- Регистр используется для учета ТМЦ в эксплуатации
|
||||
|
||||
**Измерения регистра:**
|
||||
- Организация (CatalogRef.Организации)
|
||||
- Подразделение (CatalogRef.СтруктураПредприятия)
|
||||
- ФизическоеЛицо (CatalogRef.ФизическиеЛица)
|
||||
- Номенклатура (CatalogRef.Номенклатура)
|
||||
- Характеристика (CatalogRef.ХарактеристикиНоменклатуры)
|
||||
- Партия (CatalogRef.ПартииТМЦВЭксплуатации)
|
||||
|
||||
**Риск нарушения уникальности:** НЕТ (регистр полностью удаляется)
|
||||
|
||||
**Рекомендации:**
|
||||
1. Перед обновлением экспортировать все данные из регистра
|
||||
2. Определить, нужны ли эти данные после обновления
|
||||
3. Если данные нужны - создать скрипт миграции в альтернативный регистр
|
||||
|
||||
---
|
||||
|
||||
### 2. РегистрСведений.УдалитьРеестрДокументов
|
||||
|
||||
**Статус:** Весь регистр удаляется из конфигурации
|
||||
|
||||
**Проблема:**
|
||||
- Регистр полностью удаляется при обновлении
|
||||
- Все данные регистра будут потеряны
|
||||
- Регистр используется для реестра документов
|
||||
|
||||
**Измерения регистра:**
|
||||
- ТипСсылки (CatalogRef.ИдентификаторыОбъектовМетаданных)
|
||||
- Организация (CatalogRef.Организации)
|
||||
- ХозяйственнаяОперация (EnumRef.ХозяйственныеОперации)
|
||||
- Партнер (CatalogRef.Партнеры)
|
||||
- Контрагент (CatalogRef.Контрагенты)
|
||||
- НаправлениеДеятельности (CatalogRef.НаправленияДеятельности)
|
||||
- Подразделение (CatalogRef.СтруктураПредприятия)
|
||||
- МестоХранения (CatalogRef.СтруктураПредприятия, CatalogRef.БанковскиеСчетаОрганизаций, CatalogRef.Кассы, CatalogRef.Склады)
|
||||
- ДатаДокументаИБ (Date)
|
||||
- Ссылка (множество типов документов)
|
||||
- РазделительЗаписи (String)
|
||||
|
||||
**Риск нарушения уникальности:** НЕТ (регистр полностью удаляется)
|
||||
|
||||
**Рекомендации:**
|
||||
1. Перед обновлением экспортировать все данные из регистра
|
||||
2. Определить, нужны ли эти данные после обновления
|
||||
3. Если данные нужны - создать скрипт миграции в альтернативный регистр
|
||||
|
||||
---
|
||||
|
||||
### 3. РегистрСведений.РеестрДокументов
|
||||
|
||||
**Статус:** Весь регистр удаляется из конфигурации (возможно, это альтернативное имя для УдалитьРеестрДокументов)
|
||||
|
||||
**Проблема:**
|
||||
- Регистр полностью удаляется при обновлении
|
||||
- Все данные регистра будут потеряны
|
||||
|
||||
**Риск нарушения уникальности:** НЕТ (регистр полностью удаляется)
|
||||
|
||||
---
|
||||
|
||||
## Высокий риск (HIGH)
|
||||
|
||||
### РегистрНакопления.МатериалыИРаботыВПроизводстве
|
||||
|
||||
**Статус:** Имеет удаляемое измерение
|
||||
|
||||
**Проблема:**
|
||||
- Измерение `УдалитьАналитикаУчетаНоменклатуры` удаляется из регистра
|
||||
- Тип измерения: `CatalogRef.КлючиАналитикиУчетаНоменклатуры`
|
||||
- Измерение помечено как "(не используется)"
|
||||
|
||||
**Измерения регистра:**
|
||||
1. Организация
|
||||
2. Номенклатура
|
||||
3. Характеристика
|
||||
4. Подразделение
|
||||
5. Серия
|
||||
6. Назначение
|
||||
7. **УдалитьАналитикаУчетаНоменклатуры** ⚠️ (удаляется)
|
||||
|
||||
**Риск нарушения уникальности:** ВЫСОКИЙ
|
||||
|
||||
**Почему это критично:**
|
||||
- После удаления измерения все записи с разными значениями `УдалитьАналитикаУчетаНоменклатуры` могут стать неразличимыми
|
||||
- Если в регистре есть записи с одинаковыми значениями всех остальных измерений, но разными значениями `УдалитьАналитикаУчетаНоменклатуры`, после удаления измерения возникнут дубликаты по ключу
|
||||
- Это нарушит уникальность данных регистра накопления
|
||||
|
||||
**Пример проблемы:**
|
||||
```
|
||||
До удаления:
|
||||
Запись 1: Организация=ООО "А", Номенклатура=Товар1, УдалитьАналитикаУчетаНоменклатуры=Ключ1
|
||||
Запись 2: Организация=ООО "А", Номенклатура=Товар1, УдалитьАналитикаУчетаНоменклатуры=Ключ2
|
||||
|
||||
После удаления измерения:
|
||||
Запись 1: Организация=ООО "А", Номенклатура=Товар1
|
||||
Запись 2: Организация=ООО "А", Номенклатура=Товар1
|
||||
→ ДУБЛИКАТ! Нарушение уникальности!
|
||||
```
|
||||
|
||||
**Рекомендации:**
|
||||
|
||||
1. **Перед обновлением:**
|
||||
- Проверить наличие записей с одинаковыми значениями всех измерений, кроме `УдалитьАналитикаУчетаНоменклатуры`
|
||||
- Если такие записи есть - определить стратегию обработки
|
||||
|
||||
2. **Варианты решения:**
|
||||
|
||||
**Вариант А: Очистка данных**
|
||||
- Удалить все записи, где `УдалитьАналитикаУчетаНоменклатуры` заполнено
|
||||
- Применить обновление
|
||||
- Проверить целостность данных
|
||||
|
||||
**Вариант Б: Объединение записей**
|
||||
- Найти все группы записей с одинаковыми значениями измерений (кроме удаляемого)
|
||||
- Объединить ресурсы этих записей
|
||||
- Удалить дубликаты
|
||||
- Применить обновление
|
||||
|
||||
**Вариант В: Замена на альтернативное измерение**
|
||||
- Если измерение действительно не используется, можно просто удалить его
|
||||
- Но необходимо убедиться, что нет конфликтов данных
|
||||
|
||||
3. **Скрипт проверки:**
|
||||
```bsl
|
||||
// Проверка на дубликаты после удаления измерения
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "
|
||||
|ВЫБРАТЬ
|
||||
| МатериалыИРаботыВПроизводстве.Организация КАК Организация,
|
||||
| МатериалыИРаботыВПроизводстве.Номенклатура КАК Номенклатура,
|
||||
| МатериалыИРаботыВПроизводстве.Характеристика КАК Характеристика,
|
||||
| МатериалыИРаботыВПроизводстве.Подразделение КАК Подразделение,
|
||||
| МатериалыИРаботыВПроизводстве.Серия КАК Серия,
|
||||
| МатериалыИРаботыВПроизводстве.Назначение КАК Назначение,
|
||||
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ МатериалыИРаботыВПроизводстве.УдалитьАналитикаУчетаНоменклатуры) КАК КоличествоРазличныхЗначений
|
||||
|ИЗ
|
||||
| РегистрНакопления.МатериалыИРаботыВПроизводстве КАК МатериалыИРаботыВПроизводстве
|
||||
|
|
||||
|СГРУППИРОВАТЬ ПО
|
||||
| МатериалыИРаботыВПроизводстве.Организация,
|
||||
| МатериалыИРаботыВПроизводстве.Номенклатура,
|
||||
| МатериалыИРаботыВПроизводстве.Характеристика,
|
||||
| МатериалыИРаботыВПроизводстве.Подразделение,
|
||||
| МатериалыИРаботыВПроизводстве.Серия,
|
||||
| МатериалыИРаботыВПроизводстве.Назначение
|
||||
|
|
||||
|ИМЕЮЩИЕ
|
||||
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ МатериалыИРаботыВПроизводстве.УдалитьАналитикаУчетаНоменклатуры) > 1
|
||||
| И МатериалыИРаботыВПроизводстве.УдалитьАналитикаУчетаНоменклатуры НЕ РАВНО ЗНАЧЕНИЕ(Справочник.КлючиАналитикиУчетаНоменклатуры.ПустаяСсылка)
|
||||
|";
|
||||
Результат = Запрос.Выполнить();
|
||||
Если Результат.Пустой() Тогда
|
||||
Сообщить("Дубликатов не найдено. Безопасно удалять измерение.");
|
||||
Иначе
|
||||
Сообщить("ВНИМАНИЕ! Найдены дубликаты. Требуется обработка данных перед обновлением.");
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Дополнительные проверки
|
||||
|
||||
### Регистры, которые могут иметь проблемы
|
||||
|
||||
Следующие регистры требуют дополнительной проверки, так как могут содержать ссылки на удаляемые объекты в измерениях:
|
||||
|
||||
1. **Регистры с измерениями типа "Документ"** - могут ссылаться на удаляемые документы:
|
||||
- УдалитьCRM_Сделка
|
||||
- УдалитьCRM_Событие
|
||||
- удалитьCRM_Мероприятие
|
||||
- УдалитьВводОстатковПрослеживаемыхИмпортныхТоваров
|
||||
- УдалитьКассовыйЧекКоррекции
|
||||
- УдалитьПроизвольныйЭД
|
||||
|
||||
2. **Регистры с измерениями типа "Справочник"** - могут ссылаться на удаляемые справочники:
|
||||
- УдалитьCRM_ПериодыПланирования
|
||||
- УдалитьНастройкиЯндексКассы
|
||||
- УдалитьCRM_РазделыКарточекОбъектов
|
||||
|
||||
3. **Регистры с измерениями типа "Перечисление"** - могут ссылаться на удаляемые перечисления:
|
||||
- Приоритеты
|
||||
- ВидСервиса
|
||||
- СокращенияЭД
|
||||
- СостоянияНаличия
|
||||
- ФорматыХраненияОдностраничныхФайлов
|
||||
|
||||
**Примечание:** Автоматический анализ не выявил таких регистров, но рекомендуется провести ручную проверку.
|
||||
|
||||
---
|
||||
|
||||
## План действий
|
||||
|
||||
### Этап 1: Подготовка (КРИТИЧНО)
|
||||
|
||||
1. ✅ Создать резервную копию базы данных
|
||||
2. ✅ Экспортировать данные из проблемных регистров:
|
||||
- РегистрНакопления.ТМЦВЭксплуатации
|
||||
- РегистрСведений.УдалитьРеестрДокументов
|
||||
- РегистрСведений.РеестрДокументов
|
||||
3. ✅ Выполнить проверку на дубликаты для регистра МатериалыИРаботыВПроизводстве
|
||||
|
||||
### Этап 2: Обработка данных
|
||||
|
||||
1. Для регистра **МатериалыИРаботыВПроизводстве**:
|
||||
- Запустить скрипт проверки на дубликаты
|
||||
- Если дубликаты найдены - выполнить объединение записей или очистку
|
||||
- Убедиться, что после обработки дубликатов нет
|
||||
|
||||
2. Для удаляемых регистров:
|
||||
- Определить, нужны ли данные после обновления
|
||||
- Если нужны - создать скрипт миграции
|
||||
- Если не нужны - можно просто удалить данные
|
||||
|
||||
### Этап 3: Применение обновления
|
||||
|
||||
1. Применить обновление конфигурации
|
||||
2. Проверить целостность данных
|
||||
3. Проверить отсутствие ошибок уникальности
|
||||
|
||||
### Этап 4: Верификация
|
||||
|
||||
1. Проверить работу регистра МатериалыИРаботыВПроизводстве
|
||||
2. Убедиться, что данные корректны
|
||||
3. Провести функциональное тестирование
|
||||
|
||||
---
|
||||
|
||||
## Выводы
|
||||
|
||||
1. **Найдено 3 критических проблемы:**
|
||||
- 2 регистра полностью удаляются (ТМЦВЭксплуатации, УдалитьРеестрДокументов)
|
||||
- 1 регистр имеет удаляемое измерение (МатериалыИРаботыВПроизводстве)
|
||||
|
||||
2. **Главный риск:** РегистрНакопления.МатериалыИРаботыВПроизводстве может потерять уникальность данных после удаления измерения
|
||||
|
||||
3. **Рекомендация:** Обязательно выполнить проверку на дубликаты и обработку данных перед обновлением
|
||||
|
||||
---
|
||||
|
||||
## Инструменты
|
||||
|
||||
Созданы следующие инструменты для анализа:
|
||||
|
||||
1. **deep_register_analysis.py** - скрипт для автоматического анализа регистров
|
||||
2. **analyze_registers.py** - базовый скрипт анализа
|
||||
3. **find_references.py** - скрипт для поиска ссылок на удаляемые объекты
|
||||
|
||||
Все отчеты сохраняются в файлы:
|
||||
- `deep_register_analysis_report.txt` - детальный отчет
|
||||
- `register_analysis_report.txt` - базовый отчет
|
||||
- `references_report.txt` - отчет о ссылках
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
---
|
||||
title: Инструкция по исправлению ошибок обновления конфигурации 1С
|
||||
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
|
||||
---
|
||||
|
||||
# Инструкция по исправлению ошибок обновления конфигурации 1С
|
||||
|
||||
> 📚 **См. также:** [Оглавление документов](INDEX.md) | [Анализ ошибок обновления](Анализ_ошибок_обновления.md) | [Быстрое решение](Быстрое_решение.md) | [Глубинный анализ регистров](Глубинный_анализ_регистров.md)
|
||||
|
||||
## Шаг 1: Анализ проблемы
|
||||
|
||||
### 1.1. Запуск скрипта поиска ссылок
|
||||
|
||||
```bash
|
||||
python find_references.py CRM3devLocal
|
||||
```
|
||||
|
||||
Скрипт создаст файл `references_report.txt` с детальным отчетом о всех найденных ссылках.
|
||||
|
||||
### 1.2. Анализ отчета
|
||||
|
||||
Откройте `references_report.txt` и проанализируйте:
|
||||
- Какие объекты используются наиболее часто
|
||||
- В каких файлах находятся ссылки
|
||||
- Критичность использования каждого объекта
|
||||
|
||||
## Шаг 2: Подготовка к исправлению
|
||||
|
||||
### 2.1. Создание резервной копии
|
||||
|
||||
**ВАЖНО!** Перед любыми изменениями создайте резервную копию конфигурации:
|
||||
|
||||
1. В конфигураторе 1С: `Конфигурация → Сохранить конфигурацию в файлы...`
|
||||
2. Сохраните в отдельную папку с датой (например, `CRM3devLocal_backup_2024`)
|
||||
|
||||
### 2.2. Экспорт конфигурации для анализа
|
||||
|
||||
Если конфигурация еще не экспортирована:
|
||||
1. `Конфигурация → Выгрузить конфигурацию в файлы...`
|
||||
2. Укажите папку `CRM3devLocal/src`
|
||||
|
||||
## Шаг 3: Исправление по категориям
|
||||
|
||||
### 3.1. Подсистемы
|
||||
|
||||
**Проблема:** 5 подсистем ссылаются на `Подсистема.ЭлектронноеВзаимодействие.Справочная информация`
|
||||
|
||||
**Решение:**
|
||||
1. Откройте файл справочной информации подсистемы
|
||||
2. Найдите ссылки на удаляемые подсистемы
|
||||
3. Удалите или закомментируйте эти ссылки
|
||||
|
||||
**Файлы для проверки:**
|
||||
- `src/Subsystems/ЭлектронноеВзаимодействие/Subsystem/Information/`
|
||||
|
||||
### 3.2. Элементы стилей
|
||||
|
||||
**Проблема:** `ЭлементСтиля.ЦветГиперссылки` используется в формах
|
||||
|
||||
**Решение:**
|
||||
1. Найдите все использования в формах (см. отчет)
|
||||
2. Замените на альтернативный стиль или удалите свойство
|
||||
|
||||
**Файлы для проверки:**
|
||||
- `Справочник.Номенклатура.Форма.ПодобныеТовары.Форма`
|
||||
- `Справочник.ШаблоныДоговоров.Форма.ФормаПечати.Форма`
|
||||
- `Справочник.Партнеры.Форма.CRM_ФормаЭлемента.Форма`
|
||||
- `Документ.ЗаказПоставщику.Форма.ФормаЗакрытия.Форма`
|
||||
|
||||
**Пример замены:**
|
||||
```xml
|
||||
<!-- Было -->
|
||||
<Properties>
|
||||
<Property name="HyperlinkColor">ЭлементСтиля.ЦветГиперссылки</Property>
|
||||
</Properties>
|
||||
|
||||
<!-- Стало -->
|
||||
<Properties>
|
||||
<Property name="HyperlinkColor">#0000FF</Property>
|
||||
</Properties>
|
||||
```
|
||||
|
||||
### 3.3. Общие картинки
|
||||
|
||||
**Проблема:** Множество картинок используется в формах
|
||||
|
||||
**Решение:**
|
||||
1. Для каждой картинки определите, можно ли ее удалить
|
||||
2. Если нет - создайте альтернативную картинку или замените на текст
|
||||
|
||||
**Приоритетные картинки:**
|
||||
- `ОбщаяКартинка.Комментарий` - используется в 5 формах
|
||||
- `ОбщаяКартинка.ЭлектронныйДокументОшибкаПодписи` - используется в 5 формах
|
||||
- Остальные - по необходимости
|
||||
|
||||
### 3.4. Общие модули
|
||||
|
||||
**Проблема:** 25+ модулей используются в коде
|
||||
|
||||
**Решение:**
|
||||
|
||||
#### Вариант А: Создание оберток (рекомендуется)
|
||||
|
||||
1. Создайте новый общий модуль `ОбменДаннымиСВнешнимиСистемамиОбертка`
|
||||
2. Скопируйте необходимые методы из удаляемого модуля
|
||||
3. Замените вызовы в коде
|
||||
|
||||
#### Вариант Б: Удаление функциональности
|
||||
|
||||
1. Найдите все вызовы методов модуля
|
||||
2. Удалите или закомментируйте код, использующий эти методы
|
||||
3. Добавьте заглушки, если необходимо
|
||||
|
||||
**Пример:**
|
||||
```bsl
|
||||
// Было
|
||||
ОбменДаннымиСВнешнимиСистемами.ОтправитьДанные(Параметры);
|
||||
|
||||
// Стало (вариант А)
|
||||
ОбменДаннымиСВнешнимиСистемамиОбертка.ОтправитьДанные(Параметры);
|
||||
|
||||
// Или (вариант Б)
|
||||
// Функциональность отключена
|
||||
// ОбменДаннымиСВнешнимиСистемами.ОтправитьДанные(Параметры);
|
||||
```
|
||||
|
||||
### 3.5. Реквизиты справочников и документов
|
||||
|
||||
**Проблема:** Множество реквизитов используется в формах
|
||||
|
||||
**Решение:**
|
||||
1. Откройте каждую форму из отчета
|
||||
2. Удалите элементы формы, связанные с удаляемыми реквизитами
|
||||
3. Обновите код формы, если он использует эти реквизиты
|
||||
|
||||
**Критичные реквизиты:**
|
||||
- `Справочник.Номенклатура.Реквизит.СтавкаНДС` - используется в форме
|
||||
- Реквизиты документов `УдалитьCRM_*` - используются в формах
|
||||
|
||||
**Пример:**
|
||||
```bsl
|
||||
// В коде формы найти и удалить/закомментировать:
|
||||
// ЭлементыФормы.СтавкаНДС
|
||||
// Объект.СтавкаНДС
|
||||
```
|
||||
|
||||
### 3.6. Перечисления
|
||||
|
||||
**Проблема:** 5 перечислений используются в типах данных и коде
|
||||
|
||||
**Решение:**
|
||||
|
||||
#### Для `Перечисление.Приоритеты`:
|
||||
1. Найти все использования в документах
|
||||
2. Заменить на альтернативное перечисление или удалить реквизит
|
||||
|
||||
**Документы с реквизитом `УдалитьПриоритет`:**
|
||||
- `Документ.ЗаданиеНаПеревозку`
|
||||
- `Документ.ЗаказКлиента`
|
||||
- `Документ.ЗаказПоставщику`
|
||||
- `Документ.ЗаявкаНаВозвратТоваровОтКлиента`
|
||||
- `Документ.ЗаявкаНаРасходованиеДенежныхСредств`
|
||||
- `Документ.ОрдерНаПеремещениеТоваров`
|
||||
- `Документ.РасходныйОрдерНаТовары`
|
||||
|
||||
**Действия:**
|
||||
1. Удалить реквизит `УдалитьПриоритет` из этих документов
|
||||
2. Удалить элементы формы, связанные с этим реквизитом
|
||||
3. Обновить код, использующий этот реквизит
|
||||
|
||||
#### Для других перечислений:
|
||||
Аналогично - найти использования и удалить/заменить
|
||||
|
||||
### 3.7. Отчеты и обработки
|
||||
|
||||
**Проблема:** Отчеты и обработки используются в интерфейсе
|
||||
|
||||
**Решение:**
|
||||
1. Удалить команды, ссылающиеся на удаляемые отчеты/обработки
|
||||
2. Удалить пункты меню, связанные с ними
|
||||
3. Обновить интерфейсы
|
||||
|
||||
## Шаг 4: Проверка и тестирование
|
||||
|
||||
### 4.1. Компиляция конфигурации
|
||||
|
||||
1. Откройте конфигуратор
|
||||
2. `Конфигурация → Проверить конфигурацию`
|
||||
3. Исправьте все ошибки компиляции
|
||||
|
||||
### 4.2. Проверка обновления
|
||||
|
||||
1. `Конфигурация → Сравнить, объединить с конфигурацией из файла...`
|
||||
2. Выберите конфигурацию `crm326/crm326_test`
|
||||
3. Проверьте, что ошибок о ссылках больше нет
|
||||
|
||||
### 4.3. Функциональное тестирование
|
||||
|
||||
1. Запустите конфигурацию в режиме предприятия
|
||||
2. Проверьте основные функции
|
||||
3. Убедитесь, что удаленные объекты не вызывают ошибок
|
||||
|
||||
## Шаг 5: Применение обновления
|
||||
|
||||
После исправления всех ошибок:
|
||||
|
||||
1. `Конфигурация → Обновить конфигурацию базы данных...`
|
||||
2. Выберите конфигурацию `crm326/crm326_test`
|
||||
3. Следуйте инструкциям мастера обновления
|
||||
|
||||
## Чек-лист исправлений
|
||||
|
||||
- [ ] Создана резервная копия
|
||||
- [ ] Запущен скрипт поиска ссылок
|
||||
- [ ] Проанализирован отчет
|
||||
- [ ] Исправлены ссылки на подсистемы
|
||||
- [ ] Исправлены ссылки на элементы стилей
|
||||
- [ ] Исправлены ссылки на общие картинки
|
||||
- [ ] Исправлены ссылки на общие модули
|
||||
- [ ] Исправлены ссылки на реквизиты
|
||||
- [ ] Исправлены ссылки на перечисления
|
||||
- [ ] Исправлены ссылки на отчеты и обработки
|
||||
- [ ] Конфигурация компилируется без ошибок
|
||||
- [ ] Проверка обновления проходит успешно
|
||||
- [ ] Проведено функциональное тестирование
|
||||
|
||||
## Дополнительные рекомендации
|
||||
|
||||
1. **Ведите журнал изменений**: Записывайте все изменения для последующего анализа
|
||||
2. **Тестируйте поэтапно**: После исправления каждой категории проверяйте компиляцию
|
||||
3. **Используйте систему контроля версий**: Коммитьте изменения после каждого этапа
|
||||
4. **Консультируйтесь с командой**: При сомнениях в критичности объекта
|
||||
|
||||
## Автоматизация (опционально)
|
||||
|
||||
Для массовой замены можно использовать скрипты поиска и замены:
|
||||
|
||||
```python
|
||||
# Пример скрипта для замены
|
||||
import re
|
||||
|
||||
def replace_in_file(file_path, old_pattern, new_text):
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
new_content = content.replace(old_pattern, new_text)
|
||||
|
||||
with open(file_path, 'w', encoding='utf-8') as f:
|
||||
f.write(new_content)
|
||||
```
|
||||
|
||||
**ВНИМАНИЕ:** Используйте автоматизацию с осторожностью и всегда проверяйте результаты!
|
||||
|
||||
@@ -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,20 @@
|
||||
{
|
||||
"tool": "export_docs",
|
||||
"version": "0.3.8",
|
||||
"folder": "docs",
|
||||
"files": [
|
||||
"docs/Checklist_5b_UPD_2026-04-21.md",
|
||||
"docs/INDEX.md",
|
||||
"docs/test.md",
|
||||
"docs/Анализ_ошибок_обновления.md",
|
||||
"docs/Быстрое_решение.md",
|
||||
"docs/Глубинный_анализ_регистров.md",
|
||||
"docs/Инструкция_по_исправлению.md",
|
||||
"docs/ТЗ_минимальная_реализация_графы_5б_УПД_2026-04-21.md"
|
||||
],
|
||||
"sources": [
|
||||
"/Users/mihailkudravcev/projects/crm3-26/docs/Checklist_5b_UPD_2026-04-21.md",
|
||||
"/Users/mihailkudravcev/projects/crm3-26/docs/test.md",
|
||||
"/Users/mihailkudravcev/projects/crm3-26/docs/Анализ_ошибок_обновления.md"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user