При работе в таких конфигурациях как УПП 1.3 или КА 1.1 часто возникает потребность в автоматизации рутинных операций. Одной из таких задач является массовая корректировка цен в табличных частях документов (например, в «Инвойсе» или других реализациях) на определенный процент. Разберем, как реализовать этот инструмент грамотно, безопасно и с учетом требований платформы.
Это наиболее предпочтительный метод, так как он не требует внесения изменений в типовую конфигурацию (снятия с поддержки). Мы создаем отдельную внешнюю обработку, которая подключается через стандартный механизм дополнительных обработок. Это позволяет вызывать её по нажатию кнопки «Заполнить» непосредственно из формы документа.
Для реализации такой задачи нам потребуется создать внешнюю обработку с табличной частью ЗаполнениеТЧ и прописать в модуле объекта стандартную экспортную процедуру Инициализировать. Рассмотрим пример реализации кода для такой обработки:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт
Процент = 0;
Если ВвестиЧисло(Процент, "Введите процент для изменения цены") Тогда
Если ИмяТабличнойЧасти = "Товары" Тогда
Если Процент <> 0 Тогда
Для Каждого СтрТовары Из Объект.Товары Цикл
// Рассчитываем новую цену
СтрТовары.Цена = СтрТовары.Цена + ((СтрТовары.Цена * Процент) / 100);
// Важно: пересчитываем сумму строки
СтрТовары.Сумма = СтрТовары.Цена * СтрТовары.Количество;
// Здесь следует вызвать стандартные процедуры пересчета налогов,
// если они предусмотрены в модуле объекта документа
КонецЦикла;
// Оповещаем форму о том, что данные изменились для обновления экрана
ОповеститьОбИзменении(Объект.Товары);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
При массовом изменении данных в ТЧ важно помнить о целостности документа. Простое изменение колонки Цена приведет к тому, что Сумма, СуммаНДС и Всего останутся старыми. Это вызовет ошибки при проведении документа.
РассчитатьСуммуТабЧасти или аналогичные процедуры, специфичные для вашей конфигурации).Окр(Значение, 2), чтобы данные в базе соответствовали требованиям финансового учета.В некоторых типовых решениях (например, в УТ 10.3) уже присутствует кнопка «Изменить» в командной панели табличной части. Она позволяет выполнять массовые операции: умножение на коэффициент, добавление фиксированной суммы и другие.
Если вы работаете в УПП 1.3 и хотите внедрить такой же функционал, вы можете:
ИзменениеТабличныхЧастей в УТ 10.3.НДС и скидок, чтобы кнопка «Изменить» работала корректно во всех документах.Для того чтобы ваш инструмент работал надежно, придерживайтесь следующих советов:
ОповеститьОбИзменении() критически важен, иначе пользователь увидит старые данные на форме до тех пор, пока не переоткроет документ вручную.Реализация через внешнюю обработку заполнения является наиболее чистым и быстрым способом решения задачи, который не требует глубокого вмешательства в архитектуру УПП 1.3 или КА 1.1. Анализируйте логику расчетов в модуле вашего конкретного документа перед запуском обработки, чтобы убедиться, что все налоги будут пересчитаны верно.