Как программно заполнить назначение платежа в документе Платежное поручение в 1С:Бухгалтерии?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Определение проблемы: почему возникают ошибки

Основная сложность заключается в том, что реквизит НазначениеПлатежа имеет физическое ограничение по длине — 210 символов. Это требование продиктовано форматами обмена с банками. Если итоговая строка превышает этот лимит, платформа при записи документа принудительно обрезает текст, что может привести к потере важной информации о сумме или номере договора.

Вторая распространенная проблема — «лишние пробелы». При сложении строки с числом, платформа 1С может добавлять неявные пробелы для выравнивания знаков, что съедает драгоценные символы лимита. Кроме того, при неверном подходе к переносу строк текст может выглядеть в печатной форме документа как единая «каша».

Пошаговое руководство по корректному формированию назначения платежа

Для того чтобы сформировать качественный и читабельный текст для назначения платежа, выполним следующие шаги:

  1. Приведение типов: Никогда не складывайте числа напрямую со строками. Всегда используйте явное преобразование.
  2. Форматирование данных: Используйте функцию Формат(), чтобы жестко задать вид числа, исключив лишние пробелы.
  3. Управление переносом: Используйте константу Символы.ПС для перехода на новую строку.
  4. Контроль длины: Всегда проверяйте длину итоговой строки перед записью.

Пример реализации кода

Давайте посмотрим, как собрать строку назначения платежа правильно. Используем структурированный подход:


// Формируем части строки, используя функцию Формат для исключения лишних пробелов
ТекстСумма = "Сумма платежа: " + Формат(СозданиеДокументов.СуммаДокумента, "ЧДЦ=2; ЧГ=0");
ТекстНДС = ", в т.ч. НДС: " + Формат(СозданиеДокументов.СуммаНДС, "ЧДЦ=2; ЧГ=0");

// Собираем итоговую строку с переносом
// Используем функцию Стр.НазначПлатеж для основной части
ИтоговоеНазначение = СокрЛП(Стр.НазначПлатеж) + Символы.ПС + ТекстСумма + ТекстНДС;

// Проверяем длину и обрезаем, если превышает 210 символов
Если СтрДлина(ИтоговоеНазначение) > 210 Тогда
    ИтоговоеНазначение = Лев(ИтоговоеНазначение, 210);
КонецЕсли;

СозданиеДокументов.НазначениеПлатежа = ИтоговоеНазначение;

Рекомендации по чистоте и качеству кода

Чтобы ваша обработка работала стабильно и не вызывала нареканий у бухгалтеров, следуйте этим правилам:

Используя предложенные методы, вы добьетесь идеального заполнения назначения платежа, исключите ошибки при выгрузке в банк и сделаете работу пользователей в 1С:Бухгалтерии комфортной и предсказуемой. Помните, что аккуратность в программном коде — это залог отсутствия проблем при обмене данными с банками.

← На главную