ПолеФормы.ГоризонтальноеПоложение

Свойства · HorizontalAlign

Тип: ГоризонтальноеПоложениеЭлемента. Определяет способ горизонтального расположения текста в колонке. Данное свойство имеет смысл только для полей, расположенных в таблице (представляющих собой колонки).

Полное описание, параметры и ограничения

ПолеФормы.ГоризонтальноеПоложение (FormField.HorizontalAlign)

ПолеФормы (FormField)

ГоризонтальноеПоложение (HorizontalAlign)

Доступен, начиная с версии 8.2.

Использование:
Чтение и запись.
Описание:
Тип: ГоризонтальноеПоложениеЭлемента.
Определяет способ горизонтального расположения текста в колонке. Данное свойство имеет смысл только для полей, расположенных в таблице (представляющих собой колонки).
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Редактировать количество и менять выравнивание без изменения значений

ГоризонтальноеПоложение выравнивает текст в конкретной колонке таблицы. Количество вводится в собственный числовой реквизит 0–99, ПриИзменении пересчитывает итог, а переключение Лево/Центр/Право проверяет сохранность уже завершённого ввода.

Где и как запускать

Полный модуль собственной общей управляемой формы УчебныеКолонкиТакси85. Пустой стенд 8.5.1.1343, desktop Такси, тонкий или толстый клиент Windows. Сервер создаёт три локальные строки и связывает ПриИзменении; клиент редактирует 0–99, пересчитывает итог и меняет выравнивание.

Подготовка

  1. Создайте отдельную новую пустую базу платформы 8.5.1.1343. Имя конфигурации — УчебнаяКонфигурацияКолонокТакси85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать.

  2. В свойствах корня конфигурации задайте РежимСовместимостиИнтерфейса=Такси. Обновите только свой учебный стенд и запустите тонкий или толстый управляемый клиент Windows. Мобильные приложения и интерфейс Версия 8.5 не являются средой этих двух уроков; текущий вариант интерфейса проверяется до создания локальных строк.

  3. В Общие → Общие формы создайте управляемую форму УчебныеКолонкиТакси85. Для каждого урока используйте отдельную копию своего пустого стенда и только полный модуль выбранного урока. Модуль вставляется целиком на верхнем уровне, а не внутрь созданного обработчика.

  4. В форме создайте реквизит Книги с типом ТаблицаЗначений. Его колонки: Название — Строка длиной 100; Количество — Число длиной 3, точность 0, допустимый знак Неотрицательный. Это локальные строки формы; справочники, документы, регистры и файлы не используются.

  5. Перетащите Книги на форму как таблицу. Таблица — ТаблицаКниг, ПутьКДанным=Книги. Её поля-колонки — КнигиНазвание с путём Книги.Название и заголовком Название; КнигиКоличество с путём Книги.Количество и заголовком Количество. Не создавайте одноимённых обычных полей вне таблицы.

  6. В ТаблицаКниг отключите изменение состава строк и изменение порядка строк. МножественныйВыбор код устанавливает в Ложь. Колонку названия код делает ТолькоПросмотр: пользователю доступно только то редактирование количества, которое явно включено конкретным уроком.

  7. Создайте строковый реквизит СостояниеУрока длиной 300 и поле ПолеСостоянияУрока с ПутьКДанным=СостояниеУрока, ТолькоПросмотр=Истина. АвтоматическоеСохранениеДанныхВНастройках формы оставьте НеИспользовать.

  8. Событие ПриСозданииНаСервере формы назначьте одноимённой процедуре полного модуля. Сервер создаёт ровно три строки Книга/3, Тетрадь/4, Блокнот/0. Название поля и реквизита Количество должны совпадать с кодом.

  9. Для запуска создайте общую команду ОткрытьУчебныеКолонкиТакси85 без параметра и включите её в командный интерфейс собственной учебной подсистемы УчебныеКолонкиТакси85. Полный модуль общей команды:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныеКолонкиТакси85");
    КонецПроцедуры
    Разрешите открытие своей формы и команды в учебной роли и выполните команду в учебном разделе.

  10. Код не меняет интерфейс сеанса, настройки пользователя или предметные данные. Все учебные изменения строк остаются в памяти экземпляра общей формы. Запуск в 1С не выполнялся: исходный модуль проверен статически и сверен с локальным API; внешний вид и события требуют будущего ручного опыта на этом стенде.

  11. Создайте команду ПереключитьВыравнивание, клиентское действие — одноимённая процедура. ИзменяетСохраняемыеДанные=Ложь. Разместите кнопку с заголовком Переключить выравнивание. КарточкаКниги и команды исторического урока здесь не нужны.

  12. Количеству задайте достаточно широкую колонку, например Ширина=20 в редакторе поля КнигиКоличество, чтобы разницу Лево/Центр/Право можно было видеть. Ширина — подготовка визуального наблюдения; новое свойство ГоризонтальноеПоложение не меняет ширину и порядок колонок.

  13. Не назначайте второй обработчик ПриИзменении: на сервере УстановитьДействие связывает КнигиКоличество с КоличествоСвоейКнигиИзменилось. Тип реквизита Число(3,0), Неотрицательный задаётся в редакторе, а код поля дополнительно ограничивает значения МинимальноеЗначение=0 и МаксимальноеЗначение=99.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() <> ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
        ВызватьИсключение "Этот урок подготовлен только для desktop-интерфейса Такси";
    КонецЕсли;
    ЭтаФорма.Книги.Очистить();
    ДобавитьСвоюКнигу("Книга", 3);
    ДобавитьСвоюКнигу("Тетрадь", 4);
    ДобавитьСвоюКнигу("Блокнот", 0);
    Элементы.ТаблицаКниг.МножественныйВыбор = Ложь;
    Элементы.КнигиНазвание.ТолькоПросмотр = Истина;
    Элементы.ТаблицаКниг.ТолькоПросмотр = Ложь;
    Элементы.КнигиКоличество.ТолькоПросмотр = Ложь;
    Элементы.КнигиКоличество.МинимальноеЗначение = 0;
    Элементы.КнигиКоличество.МаксимальноеЗначение = 99;
    Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;
    Элементы.КнигиКоличество.УстановитьДействие("ПриИзменении", "КоличествоСвоейКнигиИзменилось");
    Элементы.ТаблицаКниг.Подвал = Истина;
    Элементы.КнигиКоличество.ОтображатьВПодвале = Истина;
    Элементы.КнигиКоличество.ТекстПодвала = Строка(ЭтаФорма.Книги.Итог("Количество"));
    ЭтаФорма.СостояниеУрока = "Количество 0–99, целое. Текст в колонке справа; исходный итог 7";
КонецПроцедуры

&НаСервере
Процедура ДобавитьСвоюКнигу(Знач Название, Знач Количество)
    НоваяКнига = ЭтаФорма.Книги.Добавить();
    НоваяКнига.Название = Название;
    НоваяКнига.Количество = Количество;
КонецПроцедуры

&НаКлиенте
Процедура КоличествоСвоейКнигиИзменилось(Элемент)
    Если Элемент <> Элементы.КнигиКоличество Тогда
        Возврат;
    КонецЕсли;
    ПересчитатьСвойИтог();
    ЭтаФорма.СостояниеУрока = "После пользовательского изменения итог: " + Элементы.КнигиКоличество.ТекстПодвала;
КонецПроцедуры

&НаКлиенте
Процедура ПереключитьВыравнивание(Команда)
    Элементы.ТаблицаКниг.ЗакончитьРедактированиеСтроки(Ложь);
    ПересчитатьСвойИтог();
    ДоПереключения = СигнатураСвоихКниг();
    Если Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право Тогда
        Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево;
        ЭтаФорма.СостояниеУрока = "Текст количества слева";
    ИначеЕсли Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево Тогда
        Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр;
        ЭтаФорма.СостояниеУрока = "Текст количества по центру";
    Иначе
        Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;
        ЭтаФорма.СостояниеУрока = "Текст количества справа";
    КонецЕсли;
    Если СигнатураСвоихКниг() <> ДоПереключения Тогда
        ВызватьИсключение "Выравнивание изменило локальные значения книг";
    КонецЕсли;
    ЭтаФорма.СостояниеУрока = ЭтаФорма.СостояниеУрока + ". Значения после завершённого ввода сохранились";
КонецПроцедуры

&НаКлиенте
Процедура ПересчитатьСвойИтог()
    Для Каждого Книга Из ЭтаФорма.Книги Цикл
        Если ТипЗнч(Книга.Количество) <> Тип("Число") Тогда
            ВызватьИсключение "Своё количество должно быть числом";
        КонецЕсли;
        Если Книга.Количество < 0 Или Книга.Количество > 99 Или Книга.Количество <> Цел(Книга.Количество) Тогда
            ВызватьИсключение "Допустимо целое количество от 0 до 99";
        КонецЕсли;
    КонецЦикла;
    Элементы.КнигиКоличество.ТекстПодвала = Строка(ЭтаФорма.Книги.Итог("Количество"));
КонецПроцедуры

&НаКлиенте
Функция СигнатураСвоихКниг()
    Значения = Новый Массив;
    Для Каждого Книга Из ЭтаФорма.Книги Цикл
        Значения.Добавить(СтрШаблон("%1=%2", Книга.Название, Книга.Количество));
    КонецЦикла;
    Возврат СтрСоединить(Значения, ";");
КонецФункции

Разбор по шагам

  1. Откройте свою форму: Книга/3, Тетрадь/4, Блокнот/0. В подвале Количество исходный итог 7. Поле названия только для просмотра; количество доступно для собственного учебного ввода.

  2. Измените количество Книги с 3 на 8 и завершите ввод переходом в другую ячейку. ПриИзменении вызывает полный клиентский ПересчитатьСвойИтог: проверяется тип и диапазон каждой собственной строки, затем подвал получает Итог("Количество").

  3. После изменения Книги ожидается итог 12: 8+4+0. Это арифметика локальных строк, не остаток склада и не число записей. Укажите всем трём книгам 0: ноль допустим, итог становится 0.

  4. Восстановите количества 3, 4, 0 собственным вводом. При смене выравнивания завершение ввода выполняется через ЗакончитьРедактированиеСтроки(Ложь), то есть без отмены редактирования; затем пересчитывается итог.

  5. Нажмите Переключить выравнивание: Право → Лево → Центр → Право. Свойство задано именно полю КнигиКоличество внутри ТаблицаКниг. Наблюдайте положение текста чисел в достаточно широкой колонке.

  6. Сигнатура значений берётся после завершения ввода и до смены свойства. После смены сравнивается фактическая сигнатура; при различии выполнение прерывается, а сообщение о сохранности не выводится.

  7. Проверьте границы 0 и 99. Ввод отрицательного числа и 100 должен ограничиваться подготовленным типом и свойствами поля; точную реакцию редактора фиксируйте вручную. Для дробного текста действует целый тип Число(3,0), поэтому не обещается сохранение исходной текстовой записи дроби.

  8. Оставьте количество одной книги изменённым, снова переключите выравнивание и проверьте сохранность именно нового значения, а не автоматический возврат к исходным 3/4/0. Закройте свою форму: никаких записей базы для сохранения этих значений нет.

Как проверить результат

  1. Исходный итог 7; после Книга=8 итог 12; после всех нулей итог 0. Подвал обновляется после пользовательского изменения и после команды завершения ввода.

  2. После каждой смены выравнивания состояние сообщает Значения после завершённого ввода сохранились. Названия, введённые количества и итог прежние; изменилось только расположение текста колонки.

  3. Ручная проверка различает левое, центральное и правое расположение текста в активной теме Такси. Статическая сверка enum и присваиваний не доказывает видимый эффект.

  4. В форме нет отрицательных и превышающих 99 допустимых количеств. Если редактор не ограничивает ввод согласно подготовке, сначала проверьте настоящий тип Количество, поле-ввод и пути данных своего стенда.

Ожидаемый результат

Пользователь редактирует собственное целое количество, штатное событие пересчитывает итог, а команда меняет только горизонтальное расположение текста и проверяет сохранность фактических введённых значений.

На что обратить внимание

  1. ГоризонтальноеПоложение имеет смысл только для ПолеФормы внутри таблицы. Это выравнивание текста ячеек, не размещение всей таблицы, заголовка или подвала.

  2. Реквизит Количество — Число(3,0), Неотрицательный; дополнительный диапазон урока 0–99. Значения поля и проверка диапазона — разные уровни: полный обработчик проверяет уже полученное числовое значение.

  3. ЗакончитьРедактированиеСтроки(Истина) отменяет редактирование; в уроке передаётся Ложь. Нативная справка предупреждает: метод не действует, если таблица не отображается или её соответствующая команда недоступна. Завершение ввода проверяется вручную.

  4. ПриИзменении вызывается при пользовательском изменении поля. Массовая программная замена реквизита может требовать явного пересчёта; этот модуль не подменяет событие молчаливым изменением значений.

  5. Не фиксируйте ожидание дробного текста до преобразования: тип точности 0 и числовой редактор могут округлить или отклонить его до обработчика. Проверяется целое значение, а не исходная строка клавиатурного ввода.

  6. Сохранность данных проверяется относительно фактических значений после завершения ввода. Это не доказательство отрисовки, работы клавиатуры или визуального выравнивания; здесь 1С не запускалась.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.