Массовая замена вида операции в документах 1С 8.3 без ручной перебивки

· 9 мин

Содержание

Изменить вид операции у нескольких документов 1С сразу можно штатной обработкой «Групповое изменение реквизитов». В Бухгалтерии 3.0 она открывается из Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов. Если реквизита «Вид операции» в её списке нет, массовое исправление делают внешней обработкой на встроенном языке с перезаписью и перепроведением каждого документа.

Чаще всего такая замена нужна после загрузки банковской выписки. Например, сотня списаний попала в базу как «Прочее списание», а по смыслу это «Оплата поставщику». Перебивать каждый документ руками долго. Но и слепая массовая замена опасна: вид операции меняет набор полей и проводки документа.

Что проверить до массовой смены вида операции

Вид операции — не просто подпись в шапке. От него зависит, какие поля видны в форме и какие проводки сформирует документ. Поменяли «Прочее списание» на «Оплату поставщику» — документу теперь нужны контрагент, договор и счёт расчётов. Если этих данных нет, после перепроведения появятся пустые проводки или ошибки.

Перед стартом ответьте себе на пять вопросов:

  • 📌 Сколько документов? До 15–20 быстрее поправить руками, дальше нужен массовый способ.
  • 📌 Один тип документа или несколько? Групповая замена работает в рамках одного вида документа: списания отдельно, поступления отдельно.
  • 📌 Хватает ли данных для нового вида операции? Контрагент, договор, статья движения денежных средств, счёт учёта.
  • 📌 Не закрыт ли период? Дата запрета изменения не даст записать документы задним числом.
  • 📌 Есть ли свежая копия базы? Перед любой массовой правкой выгрузите информационную базу в .dt или сделайте копию каталога файловой базы.

Когда менять вид операции не нужно

Иногда вид операции выбран верно, а неправильны проводки. Например, «Прочее списание» с нужным счётом затрат даёт корректный учёт, просто документ иначе называется в журнале. Если отчётность и оборотно-сальдовая ведомость сходятся, массовая правка ничего не улучшит, а лишь перепроведёт закрытые периоды. Сначала сверьте счета в проводках нескольких документов, и только потом решайте, что именно исправлять: вид операции, счёт учёта или статью.

Какой способ выбрать

СпособКогда подходитРиски
Ручная правка из спискаДо 15–20 документовМинимальные, но долго
Групповое изменение реквизитовОдин вид документа, реквизит доступен в обработкеНе заполняет зависимые поля
Повторная загрузка выпискиОшибка возникла при загрузке из банкаМожно задвоить документы
Внешняя обработкаСотни документов, сложный отбор, нужно перепроведениеНужны права и навык программирования
Прямой SQL-запрос к СУБДНикогдаЛомает целостность базы

Групповое изменение реквизитов: штатный путь

Обработка «Групповое изменение реквизитов» входит в Библиотеку стандартных подсистем. Поэтому она есть в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других современных типовых. В БП 3.0 путь стабильный, в остальных конфигурациях ищите её в разделе Администрирование → Обслуживание.

Шаг за шагом

  1. Откройте обработку по пути выше.
  2. В поле выбора объектов укажите вид документа, например «Списание с расчётного счёта».
  3. Настройте отбор: период, организация, текущий вид операции. Без отбора обработка затронет все документы этого вида в базе.
  4. Проверьте, сколько документов попало в выборку. Число отображается в форме обработки.
  5. В таблице реквизитов найдите «Вид операции», отметьте его флажком и выберите новое значение.
  6. Если новому виду операции нужны другие поля, отметьте и их: контрагента, договор, статью движения денежных средств.
  7. Запустите изменение и дождитесь отчёта о результате.

Есть и быстрый вход из самого журнала. Выделите нужные строки в списке документов (Ctrl или Shift + клик). Затем откройте меню «Ещё» и найдите команду изменения выделенных объектов. Откроется та же обработка, но уже с отбором по выделенным документам.

Удобный приём: сначала отсортируйте или отфильтруйте список по колонке «Вид операции». Тогда нужные документы идут подряд, и их проще выделить одним диапазоном.

Если «Вида операции» нет в списке реквизитов

Разработчики типовых конфигураций могут закрыть отдельные реквизиты от групповой правки. Для вида операции это логично: при его смене меняется вся логика документа. Если реквизита в таблице нет, обойти запрет из пользовательского режима нельзя. Переходите к ручной правке, повторной загрузке или внешней обработке.

Групповое изменение не заполняет поля, которые в форме подставились бы автоматически при смене вида операции вручную. Например, счёт расчётов с контрагентом или статью движения денежных средств. Их нужно указать в той же обработке или проверить после.

Пакетная правка вручную в интерфейсе «Такси»

Когда документов немного или у каждого свой контрагент, честнее поправить их вручную. Ручная правка гарантирует, что форма документа отработает все свои подстановки.

Порядок работы:

  1. Откройте журнал, например Банк и касса → Банковские выписки.
  2. Отфильтруйте список по периоду и виду операции, чтобы видеть только проблемные документы.
  3. Откройте первый документ, смените вид операции, заполните появившиеся поля.
  4. Нажмите «Провести и закрыть».
  5. Документ с новым видом операции выпадает из отбора, и следующий оказывается в верхней строке.

Такой «конвейер» на 20–30 документов занимает примерно 10–15 минут. Это быстрее, чем писать и отлаживать обработку.

Повторная загрузка банковской выписки

Если неверный вид операции появился при загрузке выписки, есть вариант чище. Программа определяет вид операции по данным платёжки: получатель, назначение платежа, наличие договора. Поправьте причину: создайте контрагента, договор, укажите правильные реквизиты. Затем пометьте на удаление ошибочные документы за день и загрузите выписку повторно.

Повторная загрузка без пометки старых документов задвоит движения по счёту 51. После загрузки удалите помеченные объекты через Администрирование → Обслуживание → Удаление помеченных объектов, когда в базе мало пользователей.

Консоль запросов: найти документы можно, изменить нельзя

Консоль запросов часто советуют как «продвинутый» способ. Здесь нужно чёткое понимание: язык запросов 1С только читает данные. Команд UPDATE или DELETE в нём нет, и никакая консоль не перепишет реквизит самим запросом.

Чем консоль реально полезна:

  • 🔍 Точная выборка. Отобрать документы по сложному условию: по назначению платежа, сумме, контрагенту без договора.
  • 🔍 Контроль до и после. Посчитать количество документов с каждым видом операции до правки и после неё.
  • 🔍 Передача в обработку. Некоторые консоли умеют выполнять произвольный код над строками результата. Это уже не запрос, а программирование, и к нему относятся те же правила, что к внешней обработке.

Пример запроса для подсчёта по видам операции:

ВЫБРАТЬ
	Док.ВидОперации КАК ВидОперации,
	КОЛИЧЕСТВО(Док.Ссылка) КАК Количество
ИЗ
	Документ.СписаниеСРасчетногоСчета КАК Док
ГДЕ
	Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	И НЕ Док.ПометкаУдаления
СГРУППИРОВАТЬ ПО
	Док.ВидОперации

Почему не стоит править таблицы СУБД напрямую

В клиент-серверной базе таблицы документов лежат в SQL Server или PostgreSQL. Технически UPDATE прямо в СУБД выполнить можно. Но так меняется только поле в таблице документа. Движения регистров, проводки и итоги остаются старыми, а механизмы проверки 1С не срабатывают. Прямая правка таблиц СУБД ломает целостность учёта, и восстановить её потом сложнее, чем перебить документы руками.

Внешняя обработка: массовое исправление кодом

Когда документов сотни, а групповое изменение недоступно, пишут небольшую внешнюю обработку . Принцип простой: запросом выбрать ссылки, получить объект каждого документа, сменить вид операции и записать с проведением.

Нужны права администратора: только с ними пользователь может открыть внешнюю обработку через Файл → Открыть в главном меню. При первом открытии 1С покажет предупреждение безопасности.

Пример кода для Бухгалтерии 3.0

Код ниже меняет «Прочее списание» на «Оплату поставщику» в списаниях с расчётного счёта за период. Его размещают в модуле объекта обработки или в серверной процедуре формы.

Процедура ЗаменитьВидОперации(НачалоПериода, КонецПериода) Экспорт

	СтарыйВид = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПрочееСписание;
	НовыйВид  = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику;

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Док.Ссылка КАК Ссылка
	|ИЗ
	|	Документ.СписаниеСРасчетногоСчета КАК Док
	|ГДЕ
	|	Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	|	И Док.ВидОперации = &СтарыйВид
	|	И НЕ Док.ПометкаУдаления";
	Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
	Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
	Запрос.УстановитьПараметр("СтарыйВид", СтарыйВид);

	Выборка = Запрос.Выполнить().Выбрать();
	Изменено = 0;

	Пока Выборка.Следующий() Цикл
		ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
		ДокОбъект.ВидОперации = НовыйВид;
		Попытка
			Если ДокОбъект.Проведен Тогда
				ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
			Иначе
				ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
			КонецЕсли;
			Изменено = Изменено + 1;
		Исключение
			Сообщить(СтрШаблон("Не записан %1: %2",
				Строка(Выборка.Ссылка), КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
		КонецПопытки;
	КонецЦикла;

	Сообщить(СтрШаблон("Изменено документов: %1", Формат(Изменено, "ЧГ=0")));

КонецПроцедуры

Что важно в этом коде:

  1. Отбор по старому виду операции. Обработка не тронет документы, которые уже правильные.
  2. Запись через объект, а не прямой правкой. Срабатывают проверки и обработчики проведения, проводки пересобираются.
  3. Непроведённые остаются непроведёнными. Код не проводит то, что бухгалтер намеренно оставил черновиком.
  4. Ошибки не останавливают цикл. Документ, который не прошёл проверку, попадёт в сообщения, остальные обработаются.

Имена перечислений и их значений проверьте в Конфигураторе, в ветке «Перечисления», или через синтакс-помощник. В разных конфигурациях и для разных документов они свои: у поступлений на расчётный счёт отдельное перечисление.

Как дозаполнить зависимые поля

Если новому виду операции нужны контрагент и договор, их тоже надо записать в объект до вызова Записать(). Источник данных зависит от задачи: реквизиты из назначения платежа, сопоставление по ИНН получателя, договор по умолчанию у контрагента. Пишите эту логику отдельно и прогоняйте сначала на копии базы.

Перед запуском обработки на рабочей базе
Выполнено: 0 / 6

Перепроведение и сверка после замены

После массовой правки проверьте две вещи: что вид операции сменился у всех нужных документов и что проводки стали правильными.

Порядок контроля:

  1. Повторите запрос-подсчёт из консоли или отфильтруйте журнал по старому виду операции. Документов со старым значением быть не должно.
  2. Откройте 2–3 документа выборочно и нажмите кнопку просмотра проводок (Дт/Кт). Проводки должны соответствовать новому виду операции.
  3. Сформируйте оборотно-сальдовую ведомость по затронутым счетам за период. Для списаний это 51, 60, 76, 91. Сравните с данными до правки.
  4. Если правили штатной обработкой, которая только записывала документы, перепроведите их. Выделите документы в журнале и выполните проведение группой, либо воспользуйтесь групповым перепроведением в разделе Операции → Закрытие периода.

Если период уже закрыт регламентными операциями (закрытие месяца, расчёт НДС), после перепроведения документов закрытие придётся выполнить заново. Пересчитанная себестоимость и финансовый результат могут отличаться от сданной отчётности.

Ошибки при массовом изменении вида операции

Диагностика: выберите симптом

Частые вопросы

Можно ли поменять вид операции у документа, по которому уже сдана отчётность?
Технически да, если снять дату запрета. Но правка изменит проводки закрытого периода. Сначала оцените, нужна ли уточнённая декларация.
Сохранится ли история изменений документов?
Если в базе включено версионирование объектов, после записи появится новая версия, и прежний вид операции будет виден в истории. Без версионирования старое значение останется только в копии базы.
Почему после смены вида операции в документе пропали заполненные поля?
Форма скрывает реквизиты, не нужные новому виду операции, а при записи они могут очиститься. Вернуть прежний вид операции и данные можно из копии базы или из версии объекта.
Нужна ли монопольная блокировка базы для массовой замены?
Нет. Монопольный режим нужен для обновления конфигурации и загрузки .dt. Массовая запись документов идёт в обычном режиме, но лучше в часы с минимумом пользователей.
Можно ли сменить вид операции у документов разных типов за один проход?
Штатной обработкой нет: она работает с одним видом документа. Внешняя обработка может пройти несколько видов документов, но у каждого своё перечисление видов операций.