Массовая замена вида операции в документах 1С 8.3 без ручной перебивки
Содержание
Изменить вид операции у нескольких документов 1С сразу можно штатной обработкой «Групповое изменение реквизитов». В Бухгалтерии 3.0 она открывается из Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов. Если реквизита «Вид операции» в её списке нет, массовое исправление делают внешней обработкой на встроенном языке с перезаписью и перепроведением каждого документа.
Чаще всего такая замена нужна после загрузки банковской выписки. Например, сотня списаний попала в базу как «Прочее списание», а по смыслу это «Оплата поставщику». Перебивать каждый документ руками долго. Но и слепая массовая замена опасна: вид операции меняет набор полей и проводки документа.
Что проверить до массовой смены вида операции
Вид операции — не просто подпись в шапке. От него зависит, какие поля видны в форме и какие проводки сформирует документ. Поменяли «Прочее списание» на «Оплату поставщику» — документу теперь нужны контрагент, договор и счёт расчётов. Если этих данных нет, после перепроведения появятся пустые проводки или ошибки.
Перед стартом ответьте себе на пять вопросов:
- 📌 Сколько документов? До 15–20 быстрее поправить руками, дальше нужен массовый способ.
- 📌 Один тип документа или несколько? Групповая замена работает в рамках одного вида документа: списания отдельно, поступления отдельно.
- 📌 Хватает ли данных для нового вида операции? Контрагент, договор, статья движения денежных средств, счёт учёта.
- 📌 Не закрыт ли период? Дата запрета изменения не даст записать документы задним числом.
- 📌 Есть ли свежая копия базы? Перед любой массовой правкой выгрузите информационную базу в .dt или сделайте копию каталога файловой базы.
Когда менять вид операции не нужно
Иногда вид операции выбран верно, а неправильны проводки. Например, «Прочее списание» с нужным счётом затрат даёт корректный учёт, просто документ иначе называется в журнале. Если отчётность и оборотно-сальдовая ведомость сходятся, массовая правка ничего не улучшит, а лишь перепроведёт закрытые периоды. Сначала сверьте счета в проводках нескольких документов, и только потом решайте, что именно исправлять: вид операции, счёт учёта или статью.
Какой способ выбрать
| Способ | Когда подходит | Риски |
|---|---|---|
| Ручная правка из списка | До 15–20 документов | Минимальные, но долго |
| Групповое изменение реквизитов | Один вид документа, реквизит доступен в обработке | Не заполняет зависимые поля |
| Повторная загрузка выписки | Ошибка возникла при загрузке из банка | Можно задвоить документы |
| Внешняя обработка | Сотни документов, сложный отбор, нужно перепроведение | Нужны права и навык программирования |
| Прямой SQL-запрос к СУБД | Никогда | Ломает целостность базы |
Групповое изменение реквизитов: штатный путь
Обработка «Групповое изменение реквизитов» входит в Библиотеку стандартных подсистем. Поэтому она есть в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других современных типовых. В БП 3.0 путь стабильный, в остальных конфигурациях ищите её в разделе Администрирование → Обслуживание.
Шаг за шагом
- Откройте обработку по пути выше.
- В поле выбора объектов укажите вид документа, например «Списание с расчётного счёта».
- Настройте отбор: период, организация, текущий вид операции. Без отбора обработка затронет все документы этого вида в базе.
- Проверьте, сколько документов попало в выборку. Число отображается в форме обработки.
- В таблице реквизитов найдите «Вид операции», отметьте его флажком и выберите новое значение.
- Если новому виду операции нужны другие поля, отметьте и их: контрагента, договор, статью движения денежных средств.
- Запустите изменение и дождитесь отчёта о результате.
Есть и быстрый вход из самого журнала. Выделите нужные строки в списке документов (Ctrl или Shift + клик). Затем откройте меню «Ещё» и найдите команду изменения выделенных объектов. Откроется та же обработка, но уже с отбором по выделенным документам.
Удобный приём: сначала отсортируйте или отфильтруйте список по колонке «Вид операции». Тогда нужные документы идут подряд, и их проще выделить одним диапазоном.
Если «Вида операции» нет в списке реквизитов
Разработчики типовых конфигураций могут закрыть отдельные реквизиты от групповой правки. Для вида операции это логично: при его смене меняется вся логика документа. Если реквизита в таблице нет, обойти запрет из пользовательского режима нельзя. Переходите к ручной правке, повторной загрузке или внешней обработке.
Групповое изменение не заполняет поля, которые в форме подставились бы автоматически при смене вида операции вручную. Например, счёт расчётов с контрагентом или статью движения денежных средств. Их нужно указать в той же обработке или проверить после.
Пакетная правка вручную в интерфейсе «Такси»
Когда документов немного или у каждого свой контрагент, честнее поправить их вручную. Ручная правка гарантирует, что форма документа отработает все свои подстановки.
Порядок работы:
- Откройте журнал, например
Банк и касса → Банковские выписки. - Отфильтруйте список по периоду и виду операции, чтобы видеть только проблемные документы.
- Откройте первый документ, смените вид операции, заполните появившиеся поля.
- Нажмите «Провести и закрыть».
- Документ с новым видом операции выпадает из отбора, и следующий оказывается в верхней строке.
Такой «конвейер» на 20–30 документов занимает примерно 10–15 минут. Это быстрее, чем писать и отлаживать обработку.
Повторная загрузка банковской выписки
Если неверный вид операции появился при загрузке выписки, есть вариант чище. Программа определяет вид операции по данным платёжки: получатель, назначение платежа, наличие договора. Поправьте причину: создайте контрагента, договор, укажите правильные реквизиты. Затем пометьте на удаление ошибочные документы за день и загрузите выписку повторно.
Повторная загрузка без пометки старых документов задвоит движения по счёту 51. После загрузки удалите помеченные объекты через Администрирование → Обслуживание → Удаление помеченных объектов, когда в базе мало пользователей.
Консоль запросов: найти документы можно, изменить нельзя
Консоль запросов часто советуют как «продвинутый» способ. Здесь нужно чёткое понимание: язык запросов 1С только читает данные. Команд UPDATE или DELETE в нём нет, и никакая консоль не перепишет реквизит самим запросом.
Чем консоль реально полезна:
- 🔍 Точная выборка. Отобрать документы по сложному условию: по назначению платежа, сумме, контрагенту без договора.
- 🔍 Контроль до и после. Посчитать количество документов с каждым видом операции до правки и после неё.
- 🔍 Передача в обработку. Некоторые консоли умеют выполнять произвольный код над строками результата. Это уже не запрос, а программирование, и к нему относятся те же правила, что к внешней обработке.
Пример запроса для подсчёта по видам операции:
ВЫБРАТЬ
Док.ВидОперации КАК ВидОперации,
КОЛИЧЕСТВО(Док.Ссылка) КАК Количество
ИЗ
Документ.СписаниеСРасчетногоСчета КАК Док
ГДЕ
Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И НЕ Док.ПометкаУдаления
СГРУППИРОВАТЬ ПО
Док.ВидОперации
Почему не стоит править таблицы СУБД напрямую
В клиент-серверной базе таблицы документов лежат в SQL Server или PostgreSQL. Технически UPDATE прямо в СУБД выполнить можно. Но так меняется только поле в таблице документа. Движения регистров, проводки и итоги остаются старыми, а механизмы проверки 1С не срабатывают. Прямая правка таблиц СУБД ломает целостность учёта, и восстановить её потом сложнее, чем перебить документы руками.
Внешняя обработка: массовое исправление кодом
Когда документов сотни, а групповое изменение недоступно, пишут небольшую внешнюю обработку . Принцип простой: запросом выбрать ссылки, получить объект каждого документа, сменить вид операции и записать с проведением.
Нужны права администратора: только с ними пользователь может открыть внешнюю обработку через Файл → Открыть в главном меню. При первом открытии 1С покажет предупреждение безопасности.
Пример кода для Бухгалтерии 3.0
Код ниже меняет «Прочее списание» на «Оплату поставщику» в списаниях с расчётного счёта за период. Его размещают в модуле объекта обработки или в серверной процедуре формы.
Процедура ЗаменитьВидОперации(НачалоПериода, КонецПериода) Экспорт
СтарыйВид = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПрочееСписание;
НовыйВид = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Док.Ссылка КАК Ссылка
|ИЗ
| Документ.СписаниеСРасчетногоСчета КАК Док
|ГДЕ
| Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И Док.ВидОперации = &СтарыйВид
| И НЕ Док.ПометкаУдаления";
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
Запрос.УстановитьПараметр("СтарыйВид", СтарыйВид);
Выборка = Запрос.Выполнить().Выбрать();
Изменено = 0;
Пока Выборка.Следующий() Цикл
ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
ДокОбъект.ВидОперации = НовыйВид;
Попытка
Если ДокОбъект.Проведен Тогда
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
Изменено = Изменено + 1;
Исключение
Сообщить(СтрШаблон("Не записан %1: %2",
Строка(Выборка.Ссылка), КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;
КонецЦикла;
Сообщить(СтрШаблон("Изменено документов: %1", Формат(Изменено, "ЧГ=0")));
КонецПроцедуры
Что важно в этом коде:
- Отбор по старому виду операции. Обработка не тронет документы, которые уже правильные.
- Запись через объект, а не прямой правкой. Срабатывают проверки и обработчики проведения, проводки пересобираются.
- Непроведённые остаются непроведёнными. Код не проводит то, что бухгалтер намеренно оставил черновиком.
- Ошибки не останавливают цикл. Документ, который не прошёл проверку, попадёт в сообщения, остальные обработаются.
Имена перечислений и их значений проверьте в Конфигураторе, в ветке «Перечисления», или через синтакс-помощник. В разных конфигурациях и для разных документов они свои: у поступлений на расчётный счёт отдельное перечисление.
Как дозаполнить зависимые поля
Если новому виду операции нужны контрагент и договор, их тоже надо записать в объект до вызова Записать(). Источник данных зависит от задачи: реквизиты из назначения платежа, сопоставление по ИНН получателя, договор по умолчанию у контрагента. Пишите эту логику отдельно и прогоняйте сначала на копии базы.
Перепроведение и сверка после замены
После массовой правки проверьте две вещи: что вид операции сменился у всех нужных документов и что проводки стали правильными.
Порядок контроля:
- Повторите запрос-подсчёт из консоли или отфильтруйте журнал по старому виду операции. Документов со старым значением быть не должно.
- Откройте 2–3 документа выборочно и нажмите кнопку просмотра проводок (Дт/Кт). Проводки должны соответствовать новому виду операции.
- Сформируйте оборотно-сальдовую ведомость по затронутым счетам за период. Для списаний это 51, 60, 76, 91. Сравните с данными до правки.
- Если правили штатной обработкой, которая только записывала документы, перепроведите их. Выделите документы в журнале и выполните проведение группой, либо воспользуйтесь групповым перепроведением в разделе
Операции → Закрытие периода.
Если период уже закрыт регламентными операциями (закрытие месяца, расчёт НДС), после перепроведения документов закрытие придётся выполнить заново. Пересчитанная себестоимость и финансовый результат могут отличаться от сданной отчётности.