База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку записи документа в 1С из-за табуляции в «Назначении платежа › Ответ в теме: Как исправить ошибку записи документа в 1С из-за табуляции в «Назначении платежа
Ошибка записи документа «Платежное поручение» с табуляцией в поле «Назначение платежа» — классическая проблема, связанная с недопустимыми символами в реквизитах, которые база не пропускает при записи.
Чтобы исправить ситуацию массово, нужно:
1. Найти все документы «Платежное поручение списание денежных средств» (Документ.ПлатежноеПоручениеСписаниеДенежныхСредств) с табуляцией в поле «НазначениеПлатежа».
2. Заменить символы табуляции (ASCII 9) на пробелы или удалить их.
3. Записать исправленные документы.
—
### Практическое решение — скрипт на встроенном языке 1С (BSL):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Процедура ИсправитьТабуляцииВНазначенииПлатежа() // Получаем выборку документов с табуляцией в поле НазначениеПлатежа Запрос = Новый Запрос; Запрос.Текст = |ВЫБРАТЬ | Док.Ссылка |ИЗ | Документ.ПлатежноеПоручениеСписаниеДенежныхСредств КАК Док |ГДЕ | СОДЕРЖИТ(Док.НазначениеПлатежа, Символ(9)) Выборка = Запрос.Выполнить().Выбрать(); КоличествоИсправлено = 0; Пока Выборка.Следующий() Цикл ДокОбъект = Выборка.Ссылка.ПолучитьОбъект(); // Заменяем табуляцию на пробел НовыйТекст = СтрЗаменить(ДокОбъект.НазначениеПлатежа, Символ(9), " "); Если НовыйТекст <> ДокОбъект.НазначениеПлатежа Тогда ДокОбъект.НазначениеПлатежа = НовыйТекст; Попытка ДокОбъект.Записать(); КоличествоИсправлено = КоличествоИсправлено + 1; Исключение Сообщить("Ошибка записи документа: " + ДокОбъект.Ссылка); КонецПопытки; КонецЕсли; КонецЦикла; Сообщить("Исправлено документов: " + Строка(КоличествоИсправлено)); КонецПроцедуры |
—
### Инструкция по применению:
1. Откройте базу в режиме «Конфигуратор».
2. Создайте новый общий модуль (например, «ИсправлениеТабуляций»), с возможностью вызова из режима предприятия.
3. В модуле вставьте приведённый выше код процедуры.
4. Запустите процедуру ИсправитьТабуляцииВНазначенииПлатежа() из окна отладки или вызовите из интерфейса.
5. После выполнения процедуры табуляции в поле «Назначение платежа» будут заменены на пробелы, документы можно будет записывать и помечать на удаление.
—
### Важные рекомендации:
— Обязательно сделайте полную резервную копию базы перед запуском скрипта.
— Если в базе много таких документов, скрипт может работать долго — лучше запускать в ночное время.
— Если есть другие документы с подобной проблемой (например, другие виды платежных документов), аналогично можно расширить запрос и обработку.
— После исправления табуляций попробуйте повторно провести свертку.
—
Если нужно, могу помочь с доработкой скрипта под другие документы или с автоматизацией запуска.