Массовое изменение реквизитов номенклатуры в 1С
Содержание
Перезаписать реквизиты сразу у многих позиций номенклатуры в 1С позволяет штатная обработка Изменение выделенных объектов. Открывается она из любого списка справочника: выделяете нужные позиции и в командной панели нажимаете Ещё → Изменить выделенные. Отдельная конфигурация под это не нужна — обработка входит в состав типовых БП 3.0, УТ 11, ЗУП 3.1, ERP и Комплексной автоматизации.
Массовое изменение номенклатуры нужно, когда у десятков или тысяч карточек надо поменять одно и то же: подставить ставку НДС, сменить вид номенклатуры, проставить единицу измерения, перенести позиции в другую группу или заполнить пустой реквизит. Вручную это заняло бы часы — обработка делает за один проход.
Ниже — где взять инструмент, как отобрать ровно те позиции, что нужно перезаписать, два режима работы (простая подстановка значения и алгоритм на встроенном языке), таблица сравнения способов, разбор частых ошибок и проверка результата.
Что сделать до массовой перезаписи
Массовое изменение необратимо штатными средствами: кнопки «отменить» у обработки нет. Поэтому до старта — резервная копия.
- 🗄️ Выгрузите базу. В файловом варианте скопируйте файл
1Cv8.1CD, пока база закрыта. В клиент-серверном — через конфигуратор:Администрирование → Выгрузить информационную базув файл.dt. - 🕐 Выберите время. Монопольный доступ обработке не нужен, но если менять тысячи позиций в разгар рабочего дня, пользователи будут натыкаться на блокировки записей. Лучше вечером или в обед.
- 🔍 Проверьте отбор на выборке. Сначала примените изменение к 3–5 позициям, убедитесь, что результат верный, и только потом запускайте на весь список.
- 👤 Нужны права. Обработка доступна пользователю с правом на изменение справочника. У роли «только просмотр» команды
Изменить выделенныев меню не будет.
Без свежей резервной копии массовую перезапись не запускайте. Ошибка в формуле или неверный отбор испортят сразу всю номенклатуру, и откатывать придётся из копии.
Где находится обработка «Изменение выделенных объектов»
Есть два пути открыть инструмент.
Из списка номенклатуры. Откройте Справочники → Номенклатура (в БП 3.0 — раздел Справочники, в УТ 11 — раздел НСИ и администрирование → Номенклатура). Выделите позиции мышью с зажатым Ctrl или весь список клавишами Ctrl + A. В командной панели нажмите Ещё и выберите пункт про изменение выделенных. Это самый быстрый способ.
Через «Все функции». Если команды в меню Ещё нет, включите служебное меню: Главное меню → Сервис → Параметры → поставьте флажок «Отображать команду Все функции». После этого Главное меню → Все функции → Стандартные → Изменение выделенных объектов. В открывшейся обработке вручную задаётся тип объекта и добавляются элементы.
Первый способ удобнее: обработка сразу получает список выделенных позиций, ничего добавлять не надо.
Отбор позиций: меняем только то, что нужно
Главный риск массовой перезаписи — задеть лишние карточки. Поэтому сначала сузьте список, а уже потом выделяйте.
В списке номенклатуры используйте отбор: нажмите Ещё → Настроить список (или значок настройки над списком) и задайте условие — например, по группе, по виду номенклатуры, по значению реквизита. В списке останутся только подходящие позиции, тогда Ctrl + A выделит ровно их.
Пример. Нужно проставить ставку НДС только товарам одной группы, у которых она ещё пустая. Задаёте в отборе группу и условие «Ставка НДС = пусто». После применения в списке видно точное число таких позиций — счётчик внизу формы. Это число вы и сверяете с тем, что ожидали увидеть, прежде чем жать Ctrl + A. Если позиций оказалось заметно больше или меньше — сначала разберитесь почему, а потом меняйте.
Когда условие сложное (позиции без заполненной единицы измерения, с конкретной ставкой НДС и в нужной группе одновременно), удобно сначала проверить их число через консоль запросов. Консоль только читает данные — изменить ими ничего нельзя, но она точно покажет, сколько записей попадает под условие. Сверив число с тем, что вы ждёте, повторите тот же отбор в списке и запускайте обработку. Так вы страхуетесь от «поменяли не те 400 позиций».
Если консоли запросов в базе нет, её скелет берётся из комплекта внешних обработок на дисках ИТС. Для разовой сверки числа позиций хватает и обычного отбора в списке плюс счётчика внизу формы.
Пошагово: перезаписываем реквизиты номенклатуры
Разберём простой режим — когда всем выделенным позициям надо подставить одно значение.
- Выделите позиции в списке и откройте
Ещё → Изменить выделенные. - В обработке появится список выбранных объектов и перечень реквизитов номенклатуры.
- Найдите нужный реквизит (например,
Ставка НДСилиЕдиница измерения), поставьте у него флажок. - В поле значения задайте то, что надо подставить. Значение можно выбрать из справочника или ввести вручную — зависит от типа реквизита.
- Нажмите
Изменить реквизиты. Обработка пройдёт по всем позициям и запишет значение. - По завершении покажется число обработанных объектов и список тех, что записать не удалось (если такие есть).
На большом объёме обработка идёт заметное время: несколько тысяч позиций записываются минуты, потому что каждый элемент проходит полный цикл записи. Прерывать процесс на середине не стоит — часть позиций окажется изменена, часть нет, и придётся разбираться, где граница. Дождитесь итогового отчёта.
Если менять надо не фиксированное значение, а вычисляемое (скажем, дописать префикс к артикулу или пересчитать реквизит от другого поля), переключитесь в режим алгоритма.
Режим алгоритма. В обработке есть вкладка для выполнения кода на встроенном языке 1С. Там для каждой позиции доступен объект Объект — это текущий элемент номенклатуры. Пример — проставить единицу измерения, только если она не заполнена:
Если Объект.ЕдиницаИзмерения.Пустая() Тогда
Объект.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию("шт");
КонецЕсли;
После строк кода обработка сама вызывает запись объекта. Режим алгоритма мощнее, но и опаснее: ошибка в коде применится ко всем позициям, поэтому его обязательно проверяют на нескольких карточках.
Какие реквизиты номенклатуры перезаписывают чаще всего
У каждого реквизита свои тонкости — от них зависит, простым режимом его менять или алгоритмом.
- 🏷️ Ставка НДС. Частый случай при смене ставки или исправлении ошибки ввода. Меняется простой подстановкой. Новое значение попадёт в документы, оформленные после перезаписи; ранее проведённые реализации и поступления остаются с прежней ставкой.
- 📦 Единица измерения. Тоже простая подстановка, но значение должно уже существовать в справочнике упаковок и единиц. Если позиций без единицы много, удобнее режим алгоритма с проверкой
Пустая(), чтобы не перезатирать заполненные карточки. - 🗂️ Вид номенклатуры. Влияет на счета учёта и правила заполнения документов. Перед массовой сменой проверьте на одной карточке, как после этого подставляются счета, иначе придётся откатываться.
- 📁 Перенос в другую группу. Если справочник иерархический, у номенклатуры есть реквизит-родитель (группа). Его тоже можно перезаписать массово — позиции переедут в выбранную папку. Отбор делайте по текущей группе.
- 🔢 Артикул, код поставщика, дополнительные реквизиты. Для них чаще нужен режим алгоритма: значение вычисляется или собирается из других полей. Дополнительные реквизиты (из подсистемы свойств) в простом списке обработки могут не показываться — тогда только алгоритм.
Перед массовой сменой реквизита, влияющего на учёт (вид номенклатуры, ставка НДС, счета), оформите один пробный документ после изменения и посмотрите, как он заполнился. Это дешевле, чем откат всей базы.
Отдельно про режим алгоритма: он разбирает по одной позиции за раз, поэтому в коде опирайтесь только на поля текущего объекта. Второй частый пример — привести наименование к единому виду, убрав лишние пробелы:
Объект.Наименование = СокрЛП(Объект.Наименование);
После выполнения строк кода обработка сама записывает объект, вызывать Записать() в алгоритме вручную не нужно.
Сравнение способов изменения номенклатуры
| Способ | Когда применять | Что умеет | Риск |
|---|---|---|---|
| Простая подстановка значения | Одно и то же значение на все позиции | Заполнить/перезаписать реквизит справочника | Низкий |
| Режим алгоритма (код) | Значение зависит от других полей или условий | Любая логика на встроенном языке | Выше: ошибка кода идёт на все позиции |
| Правка каждой карточки вручную | 5–20 позиций, разные значения | Полный контроль | Долго, человеческий фактор |
| Программная обработка разработчиком | Нетиповые сценарии, связанные объекты | Менять и справочники, и движения | Только со специалистом и на копии |
Для большинства задач хватает простой подстановки. К алгоритму переходят, когда значение надо вычислять. Отдельная программная обработка нужна редко — например, когда вместе с номенклатурой надо править связанные документы.
Типичные ошибки при массовой перезаписи
Разберём, что мешает записи и как это чинить.
Все функции → Стандартные.Если менять приходится не справочник, а документы (массово перепроводить, менять реквизит шапки), помните: при записи документ может перепровестись и сформировать движения заново. Для документов массовое изменение применяйте особенно осторожно и только вне закрытого периода.
Проверка результата и контроль целостности
После массовой перезаписи убедитесь, что поменялось именно то, что планировали, и ничего лишнего.
- ✅ Сверьте число. Отчёт обработки показывает, сколько объектов изменено. Оно должно совпасть с числом позиций, которые вы выделяли.
- 🔎 Откройте выборочно. Проверьте 5–10 карточек из разных групп: стоит ли новое значение, не затронуты ли соседние реквизиты.
- 📋 Проверьте отбором. Сделайте в списке отбор по новому значению реквизита — под него должны попасть ровно изменённые позиции.
- 🧾 Контроль по движениям. Если меняли реквизит, влияющий на учёт (ставку НДС для будущих документов), оформите пробный документ с этой номенклатурой и посмотрите, корректно ли он заполняется.
Если проверка выявила лишние изменения — не правьте «обратно» второй массовой перезаписью по памяти. Восстановите базу из резервной копии, сделанной перед операцией, и повторите с точным отбором. Так вы не накопите ошибки слоями.
Когда всё сошлось, зафиксируйте для себя, что именно и по какому отбору меняли: при следующей похожей задаче вы повторите готовую последовательность, а не будете собирать условие заново. Для регулярных операций отбор в списке можно сохранить как настройку — тогда перед каждым массовым изменением вы будете получать одну и ту же выборку.
Нужен ли монопольный режим для массового изменения номенклатуры?
Изменение выделенных объектов работает в обычном режиме, другие пользователи могут быть в базе. Монопольный доступ нужен только для обновления конфигурации, загрузки .dt и тестирования базы.Можно ли отменить массовую перезапись одной кнопкой?
Влияет ли смена реквизита номенклатуры на прошлые проводки и отчёты?
Как перезаписать реквизит из табличной части или характеристику?
Чем массовое изменение отличается от групповой обработки справочников?
Ещё. Функционально он и есть групповое изменение реквизитов.