Часто в процессе работы с 1С:Управление торговлей возникает задача массового изменения реквизитов в группе документов. В частности, пользователям необходимо быстро расставить склады в не проведенных приходах, не заходя в каждый документ отдельно. Рассмотрим, как реализовать это эффективно, безопасно и с учетом ограничений прав доступа.
Для решения задачи в 1С существует встроенный инструмент — Групповое изменение реквизитов. Этот механизм позволяет отобрать документы по заданным критериям и массово изменить в них значение конкретного реквизита. Однако, как отмечают пользователи, прямое использование этого инструмента часто невозможно из-за высоких административных прав, необходимых для доступа к нему.
Групповое изменение реквизитов (обычно находится в разделе Администрирование).Приобретение товаров и услуг).Проведен = Ложь.Склад и укажите новое значение.Изменить реквизиты.Важно: Данный метод является универсальным, но требует осторожности, так как он меняет данные без дополнительной проверки бизнес-логики документа, что может быть критично при наличии сложной структуры табличных частей.
Если доступ к штатной обработке ограничен, лучшим решением будет создание специализированной обработки или расширения, которое позволит пользователю видеть нужные документы в таблице и менять склады «на лету».
Рассмотрим структуру специализированной формы обработки, которая будет максимально удобной для сотрудника склада:
Документ, Дата, ТекущийСклад, НовыйСклад (тип СправочникСсылка.Склады).НовыйСклад используйте поле выбора (выпадающий список), чтобы пользователь мог быстро менять значение.Выполнить, которая программно переберет только отмеченные строки и запишет изменения в документы.При нажатии на Выполнить необходимо задействовать методы записи документа. Пример логики обработки может выглядеть следующим образом:
Для Каждого Строка Из СписокДокументов Цикл
Если Строка.НужноИзменить Тогда
ДокументОбъект = Строка.Ссылка.ПолучитьОбъект();
ДокументОбъект.Склад = Строка.НовыйСклад;
// При необходимости меняем склад и в табличной части
Для Каждого Товар Из ДокументОбъект.Товары Цикл
Товар.Склад = Строка.НовыйСклад;
КонецЦикла;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецЦикла;
При массовом изменении документов через код важно учитывать несколько ключевых факторов:
Журнал регистрации. Это позволит быстро понять, кто именно изменил склады в случае возникновения расхождений.Реализация собственной формы с таблицей и выпадающим списком позволяет пользователю работать в комфортном интерфейсе, исключая необходимость входа в каждый документ, при этом сохраняя строгий контроль над тем, какие именно данные подвергаются изменениям.