База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как добавить допреквизиты в документ «Счет» через БП в 1С? › RE: Как добавить допреквизиты в документ «Счет» через БП в 1С?
Владимир, чтобы добавить дополнительные реквизиты в документ «Счет» через Бизнес-процесс (БП) в 1С, можно использовать стандартный механизм дополнительных реквизитов (БСП) и расширения. Вот подробный алгоритм и пример реализации:
1. **Создание дополнительных реквизитов через механизм БСП:**
— В конфигураторе откройте объект «Счет» (обычно это документ или справочник).
— В разделе «Дополнительные реквизиты» добавьте нужные реквизиты (например, «КомментарийКСчету», «ОтветственныйМенеджер» и т.п.).
— Эти реквизиты не требуют изменения структуры базы, так как хранятся в отдельной таблице БСП.
2. **Отображение дополнительных реквизитов на форме счета:**
— В расширении или в модуле формы документа «Счет» используйте стандартный механизм заполнения допреквизитов на форме.
— Для автоматического добавления допреквизитов на форму можно использовать процедуру из БСП:
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
— Если нужно программно управлять расположением и значениями допреквизитов, используйте функции из вашего примера (ПолучитьПолеДополнительногоРеквизитаНаФорме, УстановитьЗначениеДополнительногоРеквизитаНаФорме и т.п.).
3. **Заполнение дополнительных реквизитов в Бизнес-процессе:**
— В настройках бизнес-процесса, в шаге, где создается или редактируется документ «Счет», добавьте обработчик (например, на сервере), который заполнит значения дополнительных реквизитов.
Пример кода для заполнения допреквизита в объекте документа:
Процедура ЗаполнитьДопРеквизиты(ОбъектСчета)
// Пример: установить значение допреквизита "КомментарийКСчету"
Если ОбъектСчета.Свойство("КомментарийКСчету") Тогда
ОбъектСчета.КомментарийКСчету = "Автоматически заполнено из БП";
КонецЕсли;
КонецПроцедуры
— Вызовите эту процедуру в нужном месте бизнес-процесса, например, после создания документа.
4. **Проверка и валидация допреквизитов:**
— Для проверки корректности заполнения допреквизитов используйте обработчики событий формы или объекта, например, событие «ПередЗаписью».
— Если значение некорректно, вызовите `Отказ = Истина` и выведите сообщение пользователю:
Процедура ПередЗаписью(Отказ)
Если ЗначениеДопРеквизитаНекорректно(ЭтотОбъект.КомментарийКСчету) Тогда
Сообщить("Значение дополнительного реквизита 'КомментарийКСчету' некорректно.");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
5. **Обновление данных на форме после записи:**
— После записи объекта можно программно обновить форму, используя методы формы, например:
ЭтаФорма.Обновить();
— Или установить значение допреквизита на форме через функцию из вашего примера:
УстановитьЗначениеДополнительногоРеквизитаНаФорме(ЭтаФорма, "КомментарийКСчету", "Новое значение");
6. **Расположение допреквизитов на форме:**
— Для управления расположением используйте процедуру перемещения элементов формы:
ПереместитьДополнительныйРеквизит(ЭтаФорма, "КомментарийКСчету", "ГруппаДополнительныеРеквизиты");
— Если группы нет, создайте её программно или добавьте реквизиты в существующую.
—
**Итог:**
— Добавляете допреквизиты через БСП в конфигурации.
— Используете стандартные процедуры БСП для отображения и управления допреквизитами на форме.
— В бизнес-процессе программно заполняете и проверяете допреквизиты.
— Управляете расположением и обновлением данных на форме через расширения и программный код.
—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/867282/
https://infostart.ru/1c/articles/540656/
Если нужно, могу помочь с конкретным кодом для вашего бизнес-процесса.