При переходе со старых конфигураций 1С (например, УТ 10 или УПП) на современные решения с управляемыми формами (Комплексная автоматизация 2, Управление торговлей 11, ERP 2) пользователи часто сталкиваются с одной и той же проблемой. В старых системах присутствовала удобная встроенная кнопка «Изменить», которая вызывала обработку ОбработкаТабличнойЧастиТовары. Она позволяла массово пересчитывать цены на заданный процент, устанавливать скидки и выполнять другие групповые операции со строками документа. Разберем подробнее, почему этого инструмента больше нет «из коробки» и какие существуют аналоги в современных реалиях.
В старых версиях платформы на обычных формах табличные части документов были устроены значительно проще. В новых конфигурациях архитектура претерпела серьезные изменения. Проанализируем ситуацию: теперь при малейшем изменении цены, количества или номенклатуры в строке запускается сложная серверная логика. Система проверяет условия продаж, пересчитывает автоматические скидки, налоги (НДС), пересчитывает вес, объем и другие зависимые реквизиты.
Сделать одну универсальную обработку, которая бы корректно работала абсолютно с любой табличной частью любого документа, стало архитектурно слишком сложно. Поэтому сегодня инструменты для изменения табличных частей пишутся адресно под конкретные виды торговых документов (например, отдельно для заказа клиента или поступления товаров), чтобы они могли программно вызывать нужные процедуры пересчета.
Рассмотрим, какие встроенные инструменты мы можем использовать, не прибегая к программированию.
В новых конфигурациях реализована базовая возможность массового редактирования строк контекстным меню. Выделим нужные строки в табличной части (используя клавиши Shift или Ctrl+A), нажмем правую кнопку мыши и выберем команду «Изменить выделенные...».
Ограничение: Данный функционал позволяет установить всем выделенным строкам только статичное значение. Например, мы можем массово поменять ставку НДС, указать один склад для всех строк или установить одинаковую цену. Этот механизм не умеет делать математические вычисления (например, увеличить все цены на 15%) и далеко не всегда вызывает алгоритмы пересчета зависимых колонок.
В качестве обходного пути пользователи активно используют буфер обмена. Посмотрим на алгоритм действий:
Также отлично помогает типовая функция «Загрузка данных из табличного документа», которая позволяет обновлять строки по ключевым полям.
С помощью типовой обработки ГрупповоеИзменениеРеквизитов можно корректировать данные в табличных частях. Однако менять с её помощью числовые показатели (цены, количество, суммы) категорически не рекомендуется. Обработка запишет новые цифры напрямую в базу, но не вызовет внутренние процедуры документа для пересчета. Как итог — суммы в строках не будут соответствовать итоговой сумме документа.
Если штатных механизмов недостаточно (а для переоценки на процент их точно не хватит), мы можем решить задачу с помощью внешних обработок или расширений. Как справедливо отмечают специалисты на форумах, для реализации такого функционала необходимо использовать внешние обработки с видом «Заполнение объектов».
Разберем по шагам, как это работает:
ЗаполнениеОбъекта и назначением (например, документ ПриобретениеТоваровУслуг).Такой подход позволяет реализовать любые привычные функции: наценку на процент, округление цен до нужного порядка, пропорциональное распределение сумм и вызов типовых методов документа для правильного пересчета итогов.