При автоматизации создания документов в 1С:Бухгалтерии редакции 3.0 часто возникает задача программного формирования поля НазначениеПлатежа. На первый взгляд, это простая конкатенация строк, однако на практике разработчики сталкиваются с рядом препятствий: ограничением длины строки, некорректным отображением чисел и лишними пробелами. Давайте разберем, как решить эти задачи профессионально.
Основная сложность заключается в том, что реквизит НазначениеПлатежа имеет физическое ограничение по длине — 210 символов. Это требование продиктовано форматами обмена с банками. Если итоговая строка превышает этот лимит, платформа при записи документа принудительно обрезает текст, что может привести к потере важной информации о сумме или номере договора.
Вторая распространенная проблема — «лишние пробелы». При сложении строки с числом, платформа 1С может добавлять неявные пробелы для выравнивания знаков, что съедает драгоценные символы лимита. Кроме того, при неверном подходе к переносу строк текст может выглядеть в печатной форме документа как единая «каша».
Для того чтобы сформировать качественный и читабельный текст для назначения платежа, выполним следующие шаги:
Формат(), чтобы жестко задать вид числа, исключив лишние пробелы.Символы.ПС для перехода на новую строку.Давайте посмотрим, как собрать строку назначения платежа правильно. Используем структурированный подход:
// Формируем части строки, используя функцию Формат для исключения лишних пробелов
ТекстСумма = "Сумма платежа: " + Формат(СозданиеДокументов.СуммаДокумента, "ЧДЦ=2; ЧГ=0");
ТекстНДС = ", в т.ч. НДС: " + Формат(СозданиеДокументов.СуммаНДС, "ЧДЦ=2; ЧГ=0");
// Собираем итоговую строку с переносом
// Используем функцию Стр.НазначПлатеж для основной части
ИтоговоеНазначение = СокрЛП(Стр.НазначПлатеж) + Символы.ПС + ТекстСумма + ТекстНДС;
// Проверяем длину и обрезаем, если превышает 210 символов
Если СтрДлина(ИтоговоеНазначение) > 210 Тогда
ИтоговоеНазначение = Лев(ИтоговоеНазначение, 210);
КонецЕсли;
СозданиеДокументов.НазначениеПлатежа = ИтоговоеНазначение;
Чтобы ваша обработка работала стабильно и не вызывала нареканий у бухгалтеров, следуйте этим правилам:
СокрЛП(): Всегда очищайте строки, полученные из внешних источников (файлы Excel, CSV). Часто в них скрыты невидимые символы переноса или пробелы, которые портят структуру назначения.ПлатежноеПоручение. Найдите там процедуру, отвечающую за автоматическое заполнение, и используйте аналогичный подход.Сообщить(СтрДлина(ВашаСтрока)), чтобы увидеть реальное количество символов до того, как они попадут в реквизит объекта.Используя предложенные методы, вы добьетесь идеального заполнения назначения платежа, исключите ошибки при выгрузке в банк и сделаете работу пользователей в 1С:Бухгалтерии комфортной и предсказуемой. Помните, что аккуратность в программном коде — это залог отсутствия проблем при обмене данными с банками.