Часто при разработке конфигураций на платформе 1С возникает задача вывода результатов выборки данных непосредственно на форму в элемент управления «Надпись». Распространенная проблема, с которой сталкиваются разработчики — это «затирание» данных: при каждой итерации цикла предыдущая запись исчезает, и остается только последняя. Давайте разберем, почему это происходит и как правильно организовать накопление данных в поле.
Когда мы присваиваем значение реквизиту в цикле, мы фактически переписываем его содержимое. Если вы пишете Объект.Реквизит = Выборка.Запись, то на каждом шаге цикла старое значение, которое хранилось в памяти, удаляется, а на его место записывается новое. Чтобы этого избежать, нам нужно использовать механизм конкатенации — сложения строк.
Для того чтобы каждая новая запись добавлялась к уже существующим, а не заменяла их, нам необходимо прибавить новое значение к текущему состоянию переменной. Важно помнить, что простого сложения недостаточно — чтобы данные отображались с новой строки, нужно использовать системный разделитель Символы.ПС.
Рассмотрим, как правильно организовать цикл для формирования многострочного текста:
// Пример правильного накопления строк в цикле
Для Каждого Выборка Из РезультатВыборки Цикл
Объект.СЗап = Объект.СЗап + Символы.ПС + Выборка.Запись;
КонецЦикла;
Иногда при использовании метода, описанного выше, в самом начале текста может появиться лишний пустой перенос строки. Чтобы сделать код более профессиональным и избежать добавления разделителя перед первой записью, используем проверку на пустое значение:
// Использование оператора ? для красивого форматирования
Объект.СЗап = Объект.СЗап + ?(ПустаяСтрока(Объект.СЗап), "", Символы.ПС) + Выборка.Запись;
В этом примере оператор ? (тернарный оператор) проверяет: если поле Объект.СЗап еще пустое, то мы ничего не добавляем, а если в нем уже что-то есть — добавляем символ переноса Символы.ПС и новую запись.
Даже если программный код написан верно, текст может не отображаться корректно, если элемент формы не подготовлен в Конфигураторе. Обязательно проверьте следующие свойства элемента «Надпись»:
Хотя элемент «Надпись» подходит для небольших объемов данных, для сложных списков лучше использовать другие инструменты платформы 1С:
ТабличныйДокумент.Массив, а после завершения цикла используйте функцию СтрСоединить(МассивСтрок, Символы.ПС). Это наиболее быстрый и чистый способ формирования длинных текстовых строк в 1С.Используя данные рекомендации, вы легко добьетесь корректного отображения информации в интерфейсе вашего приложения!