Тип: ГоризонтальноеПоложениеЭлемента. Определяет способ горизонтального расположения текста в колонке. Данное свойство имеет смысл только для полей, расположенных в таблице (представляющих собой колонки).
Полное описание, параметры и ограничения
ПолеФормы.ГоризонтальноеПоложение (FormField.HorizontalAlign)
ПолеФормы (FormField)
ГоризонтальноеПоложение (HorizontalAlign)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: ГоризонтальноеПоложениеЭлемента.
Определяет способ горизонтального расположения текста в колонке. Данное свойство имеет смысл только для полей, расположенных в таблице (представляющих собой колонки).
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Редактировать количество и менять выравнивание без изменения значений
ГоризонтальноеПоложение выравнивает текст в конкретной колонке таблицы. Количество вводится в собственный числовой реквизит 0–99, ПриИзменении пересчитывает итог, а переключение Лево/Центр/Право проверяет сохранность уже завершённого ввода.
Где и как запускать
Полный модуль собственной общей управляемой формы УчебныеКолонкиТакси85. Пустой стенд 8.5.1.1343, desktop Такси, тонкий или толстый клиент Windows. Сервер создаёт три локальные строки и связывает ПриИзменении; клиент редактирует 0–99, пересчитывает итог и меняет выравнивание.
Подготовка
Создайте отдельную новую пустую базу платформы 8.5.1.1343. Имя конфигурации — УчебнаяКонфигурацияКолонокТакси85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать.
В свойствах корня конфигурации задайте РежимСовместимостиИнтерфейса=Такси. Обновите только свой учебный стенд и запустите тонкий или толстый управляемый клиент Windows. Мобильные приложения и интерфейс Версия 8.5 не являются средой этих двух уроков; текущий вариант интерфейса проверяется до создания локальных строк.
В Общие → Общие формы создайте управляемую форму УчебныеКолонкиТакси85. Для каждого урока используйте отдельную копию своего пустого стенда и только полный модуль выбранного урока. Модуль вставляется целиком на верхнем уровне, а не внутрь созданного обработчика.
В форме создайте реквизит Книги с типом ТаблицаЗначений. Его колонки: Название — Строка длиной 100; Количество — Число длиной 3, точность 0, допустимый знак Неотрицательный. Это локальные строки формы; справочники, документы, регистры и файлы не используются.
Перетащите Книги на форму как таблицу. Таблица — ТаблицаКниг, ПутьКДанным=Книги. Её поля-колонки — КнигиНазвание с путём Книги.Название и заголовком Название; КнигиКоличество с путём Книги.Количество и заголовком Количество. Не создавайте одноимённых обычных полей вне таблицы.
В ТаблицаКниг отключите изменение состава строк и изменение порядка строк. МножественныйВыбор код устанавливает в Ложь. Колонку названия код делает ТолькоПросмотр: пользователю доступно только то редактирование количества, которое явно включено конкретным уроком.
Создайте строковый реквизит СостояниеУрока длиной 300 и поле ПолеСостоянияУрока с ПутьКДанным=СостояниеУрока, ТолькоПросмотр=Истина. АвтоматическоеСохранениеДанныхВНастройках формы оставьте НеИспользовать.
Событие ПриСозданииНаСервере формы назначьте одноимённой процедуре полного модуля. Сервер создаёт ровно три строки Книга/3, Тетрадь/4, Блокнот/0. Название поля и реквизита Количество должны совпадать с кодом.
Для запуска создайте общую команду ОткрытьУчебныеКолонкиТакси85 без параметра и включите её в командный интерфейс собственной учебной подсистемы УчебныеКолонкиТакси85. Полный модуль общей команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("ОбщаяФорма.УчебныеКолонкиТакси85");
КонецПроцедуры
Разрешите открытие своей формы и команды в учебной роли и выполните команду в учебном разделе.Код не меняет интерфейс сеанса, настройки пользователя или предметные данные. Все учебные изменения строк остаются в памяти экземпляра общей формы. Запуск в 1С не выполнялся: исходный модуль проверен статически и сверен с локальным API; внешний вид и события требуют будущего ручного опыта на этом стенде.
Создайте команду ПереключитьВыравнивание, клиентское действие — одноимённая процедура. ИзменяетСохраняемыеДанные=Ложь. Разместите кнопку с заголовком Переключить выравнивание. КарточкаКниги и команды исторического урока здесь не нужны.
Количеству задайте достаточно широкую колонку, например Ширина=20 в редакторе поля КнигиКоличество, чтобы разницу Лево/Центр/Право можно было видеть. Ширина — подготовка визуального наблюдения; новое свойство ГоризонтальноеПоложение не меняет ширину и порядок колонок.
Не назначайте второй обработчик ПриИзменении: на сервере УстановитьДействие связывает КнигиКоличество с КоличествоСвоейКнигиИзменилось. Тип реквизита Число(3,0), Неотрицательный задаётся в редакторе, а код поля дополнительно ограничивает значения МинимальноеЗначение=0 и МаксимальноеЗначение=99.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() <> ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
ВызватьИсключение "Этот урок подготовлен только для desktop-интерфейса Такси";
КонецЕсли;
ЭтаФорма.Книги.Очистить();
ДобавитьСвоюКнигу("Книга", 3);
ДобавитьСвоюКнигу("Тетрадь", 4);
ДобавитьСвоюКнигу("Блокнот", 0);
Элементы.ТаблицаКниг.МножественныйВыбор = Ложь;
Элементы.КнигиНазвание.ТолькоПросмотр = Истина;
Элементы.ТаблицаКниг.ТолькоПросмотр = Ложь;
Элементы.КнигиКоличество.ТолькоПросмотр = Ложь;
Элементы.КнигиКоличество.МинимальноеЗначение = 0;
Элементы.КнигиКоличество.МаксимальноеЗначение = 99;
Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;
Элементы.КнигиКоличество.УстановитьДействие("ПриИзменении", "КоличествоСвоейКнигиИзменилось");
Элементы.ТаблицаКниг.Подвал = Истина;
Элементы.КнигиКоличество.ОтображатьВПодвале = Истина;
Элементы.КнигиКоличество.ТекстПодвала = Строка(ЭтаФорма.Книги.Итог("Количество"));
ЭтаФорма.СостояниеУрока = "Количество 0–99, целое. Текст в колонке справа; исходный итог 7";
КонецПроцедуры
&НаСервере
Процедура ДобавитьСвоюКнигу(Знач Название, Знач Количество)
НоваяКнига = ЭтаФорма.Книги.Добавить();
НоваяКнига.Название = Название;
НоваяКнига.Количество = Количество;
КонецПроцедуры
&НаКлиенте
Процедура КоличествоСвоейКнигиИзменилось(Элемент)
Если Элемент <> Элементы.КнигиКоличество Тогда
Возврат;
КонецЕсли;
ПересчитатьСвойИтог();
ЭтаФорма.СостояниеУрока = "После пользовательского изменения итог: " + Элементы.КнигиКоличество.ТекстПодвала;
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьВыравнивание(Команда)
Элементы.ТаблицаКниг.ЗакончитьРедактированиеСтроки(Ложь);
ПересчитатьСвойИтог();
ДоПереключения = СигнатураСвоихКниг();
Если Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право Тогда
Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево;
ЭтаФорма.СостояниеУрока = "Текст количества слева";
ИначеЕсли Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево Тогда
Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр;
ЭтаФорма.СостояниеУрока = "Текст количества по центру";
Иначе
Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;
ЭтаФорма.СостояниеУрока = "Текст количества справа";
КонецЕсли;
Если СигнатураСвоихКниг() <> ДоПереключения Тогда
ВызватьИсключение "Выравнивание изменило локальные значения книг";
КонецЕсли;
ЭтаФорма.СостояниеУрока = ЭтаФорма.СостояниеУрока + ". Значения после завершённого ввода сохранились";
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСвойИтог()
Для Каждого Книга Из ЭтаФорма.Книги Цикл
Если ТипЗнч(Книга.Количество) <> Тип("Число") Тогда
ВызватьИсключение "Своё количество должно быть числом";
КонецЕсли;
Если Книга.Количество < 0 Или Книга.Количество > 99 Или Книга.Количество <> Цел(Книга.Количество) Тогда
ВызватьИсключение "Допустимо целое количество от 0 до 99";
КонецЕсли;
КонецЦикла;
Элементы.КнигиКоличество.ТекстПодвала = Строка(ЭтаФорма.Книги.Итог("Количество"));
КонецПроцедуры
&НаКлиенте
Функция СигнатураСвоихКниг()
Значения = Новый Массив;
Для Каждого Книга Из ЭтаФорма.Книги Цикл
Значения.Добавить(СтрШаблон("%1=%2", Книга.Название, Книга.Количество));
КонецЦикла;
Возврат СтрСоединить(Значения, ";");
КонецФункции
Разбор по шагам
Откройте свою форму: Книга/3, Тетрадь/4, Блокнот/0. В подвале Количество исходный итог 7. Поле названия только для просмотра; количество доступно для собственного учебного ввода.
Измените количество Книги с 3 на 8 и завершите ввод переходом в другую ячейку. ПриИзменении вызывает полный клиентский ПересчитатьСвойИтог: проверяется тип и диапазон каждой собственной строки, затем подвал получает Итог("Количество").
После изменения Книги ожидается итог 12: 8+4+0. Это арифметика локальных строк, не остаток склада и не число записей. Укажите всем трём книгам 0: ноль допустим, итог становится 0.
Восстановите количества 3, 4, 0 собственным вводом. При смене выравнивания завершение ввода выполняется через ЗакончитьРедактированиеСтроки(Ложь), то есть без отмены редактирования; затем пересчитывается итог.
Нажмите Переключить выравнивание: Право → Лево → Центр → Право. Свойство задано именно полю КнигиКоличество внутри ТаблицаКниг. Наблюдайте положение текста чисел в достаточно широкой колонке.
Сигнатура значений берётся после завершения ввода и до смены свойства. После смены сравнивается фактическая сигнатура; при различии выполнение прерывается, а сообщение о сохранности не выводится.
Проверьте границы 0 и 99. Ввод отрицательного числа и 100 должен ограничиваться подготовленным типом и свойствами поля; точную реакцию редактора фиксируйте вручную. Для дробного текста действует целый тип Число(3,0), поэтому не обещается сохранение исходной текстовой записи дроби.
Оставьте количество одной книги изменённым, снова переключите выравнивание и проверьте сохранность именно нового значения, а не автоматический возврат к исходным 3/4/0. Закройте свою форму: никаких записей базы для сохранения этих значений нет.
Как проверить результат
Исходный итог 7; после Книга=8 итог 12; после всех нулей итог 0. Подвал обновляется после пользовательского изменения и после команды завершения ввода.
После каждой смены выравнивания состояние сообщает Значения после завершённого ввода сохранились. Названия, введённые количества и итог прежние; изменилось только расположение текста колонки.
Ручная проверка различает левое, центральное и правое расположение текста в активной теме Такси. Статическая сверка enum и присваиваний не доказывает видимый эффект.
В форме нет отрицательных и превышающих 99 допустимых количеств. Если редактор не ограничивает ввод согласно подготовке, сначала проверьте настоящий тип Количество, поле-ввод и пути данных своего стенда.
Ожидаемый результат
Пользователь редактирует собственное целое количество, штатное событие пересчитывает итог, а команда меняет только горизонтальное расположение текста и проверяет сохранность фактических введённых значений.
На что обратить внимание
ГоризонтальноеПоложение имеет смысл только для ПолеФормы внутри таблицы. Это выравнивание текста ячеек, не размещение всей таблицы, заголовка или подвала.
Реквизит Количество — Число(3,0), Неотрицательный; дополнительный диапазон урока 0–99. Значения поля и проверка диапазона — разные уровни: полный обработчик проверяет уже полученное числовое значение.
ЗакончитьРедактированиеСтроки(Истина) отменяет редактирование; в уроке передаётся Ложь. Нативная справка предупреждает: метод не действует, если таблица не отображается или её соответствующая команда недоступна. Завершение ввода проверяется вручную.
ПриИзменении вызывается при пользовательском изменении поля. Массовая программная замена реквизита может требовать явного пересчёта; этот модуль не подменяет событие молчаливым изменением значений.
Не фиксируйте ожидание дробного текста до преобразования: тип точности 0 и числовой редактор могут округлить или отклонить его до обработчика. Проверяется целое значение, а не исходная строка клавиатурного ввода.
Сохранность данных проверяется относительно фактических значений после завершения ввода. Это не доказательство отрисовки, работы клавиатуры или визуального выравнивания; здесь 1С не запускалась.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.