1с как работают привязки

Обновлено: 03.07.2024

Сегодня мы поработаем с формой и научимся на ней прятать элементы - устанавливать видимость их (Рисунок 1).

На рисунке 1 изображена форма элемента, на которой есть элементы на форме в отображении списка - это синий прямоугольник, а на самой форме их нет - это жёлтый прямоугольник. То есть они есть, но они там не отображаются.

Это называется пользовательская видимость.

Делается она следующим образом: выделяется элемент на форме, открывается палитра свойств этого элемента и на свойстве "Видимость" снять галочку (Рисунок 2).

Снять/поставить галочку - это значит, что будет виден элемент или не будет виден. А если сказать иначе, то это Истина - галочка стоит и элемент виден, Ложь - галочка снята и элемент не виден.

Сохраните все изменения и увидите, что в пользовательском режиме они у вас теперь не будут отображаться, однако есть интересный момент: для поля "Наименование" установлено свойство "Проверка заполнения со значением Выдавать ошибку". Это свойство означает, что это поле обязательно должно быть заполнено и платформа выдаст ошибку, если оно будет пусто и не даст записать в базу. Запустите и нажмите кнопку "Записать и закрыть" и получите уведомление (Рисунок 3).

Как же так получается, что поля на форме нет, но платформа предупреждает нас, что это поле не заполнено?

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

А теперь мы попробуем сделать так, чтобы поле появлялось и исчезало в зависимости от какого-либо условия.

Проще всего это сделать с полем, у которого отображение будет в виде галочки. То есть если галочка будет стоять, то поле будет видно, а иначе поле будет спрятано. Давайте попробуем сделать это. Для этого необходимо добавить на форму еще один реквизит с типом "Булево" (Рисунок 3).

После этого необходимо перейти на форму и переместить его на форму (Рисунок 4).

Обратите внимание на рисунок 4, у поля "Видимость" галочка не стоит, а значит по умолчанию стоит значение Ложь!

Теперь необходимо прописать процедуру. Чтобы прописать, необходимо понять как это будет работать!

А работать это будет следующим образом: как только мы меняем значение поля "Показать/Скрыть", так сразу исчезает/появляется поле "Число". Все происходит именно в таком порядке. Чтобы это работало у платформы есть специальные события, а в данном случае нужно событие "ПриИзменении".

ПриИзменении - это событие означает то, что как только вы начинаете менять значение поля, то есть ставить галочку или убирать ее, так сразу начинает меняться и значение поля. А если не трогать, то ничего и не будет происходить, именно поэтому событие и называется, при изменении чего-то в этом поле.

Создадим на форме группу (папку) и поместим в нее элемент, который будем прятать (убирать видимость) - поле "Число" (Рисунок 5).

Выделим поле "Показать/Скрыть" и найдем свойство и оно же событие "ПриИзменении" (Рисунок 5).

Нажмем на значок увеличительного стекла и создадим процедуру на клиенте (Рисунок 6).

В создавшейся процедуре убираем закомментированную строку и вместо нее прописываем нашу (Рисунок 7).

Этот код означает следующее:

1. Если - начало условия;

2. Объект.ПоказатьСкрыть - обращение к элементу формы;

3. Объект.ПоказатьСкрыть = Истина - само условие;

4. Элементы.Группа1 - обращение в элементу "Группа1";

5. Видимость - пользовательская видимость;

6. Элементы.Группа1.Видимость = Истина - папка с находящимися в ней элементами будет видна;

7. Элементы.Группа1.Видимость = Ложь- папка с находящимися в ней элементами будет не видна. КонецЕсли - окончание выполнения условия.

Запустите пользовательский режим и проверьте изменения. Как только поставите галочку, ничего не изменится. Снимете галочку, поле "Число" исчезнет, а как поставите галочку, так сразу же оно и появится.

Так и только так работает это событие - при изменении значения, то есть ставишь галочку или убираешь, начинает срабатывать событие и выполняться условие.

На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!

Ссылка для вступления телеграм-канал - t.me.Apiscourses

Подписаться в группу ВКонтакте

Прошлые уроки:

На этом все. Жду Вас на следующем занятии.

P.S. Подписывайтесь на мой канал :-)

программирование программирование 1с 1с предприятие обучение онлайн обучение 1с

Привязка - это зависимость положения границ элемента управления от положения границ формы. Границу элемента управления можно привязывать как к границе или центру формы, так и к границе или центру другого элемента.

Настройку производят на этапе создания формы для каждого элемента управления или группы выделенных элементов. Привязке доступны элементы управления любого типа.

Существует два вида привязок: ручная (простая и сложная привязка границ элементов) и автоматическая привязки (авто-привязка).

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

Для освоения приемов привязки рекомендуется создать опытную форму и расположить на ней несколько элементов управления нужного типа. Также включите режим просмотра привязок (выберите пункт "Форма - Показать привязки", при этом в этом пункте меню выставляется флажок). По мере освоения приемов привязок используйте их для разработки поведения элементов управления в конкретных формах.

Ручная привязка

Ручная привязка может осуществляться в упрощенном режиме - выбор стратегии привязывания (механизм поведения элемента при изменении размеров формы) элемента управления и индивидуальная установка привязок производится для каждой границы элемента по отдельности.

Настройка привязок производится в окне "Привязка границ для элемента …", запускаемого по ссылке Установить правила свойства Привязка границ категории Расположение.

Допускается установка привязок для группы выделенных элементов.

Простая привязка границ

Настройка привязок производится на закладке "Простая".

Группа реквизитов окна "Привязать горизонтально" предназначена для настройки поведения элемента при горизонтальном изменении размеров формы.

Группа реквизитов окна "Привязать вертикально" - для настройки поведения элемента при вертикальном изменении размеров формы.

Действия по настройке привязки в этих группах одинаковы.

При простой привязке элемент может быть привязан как к самой форме или панели, а также к элементам управления типа "Разделитель".

В реквизите "Тип привязки" указывается способ привязки:

к левой границе — элемент привязывается к левой границе области (элемент целиком перемещается вместе с перемещением левой границы области); к правой границе — элемент привязывается к правой границе области (элемент целиком перемещается вместе с перемещением правой границы области) растягивать — правая граница элемента привязывается к правой границе области (при горизонтальном изменении размеров области, правая граница элемента перемещается вместе с перемещением правой границы области, при этом расстояние между границами остается неизменным) пропорционально — правая граница элемента привязывается к правой границе области таким образом, что при изменении размеров области соотношение расстояний от правой границы элемента до левой и правой границ области остается постоянным, аналогично привязывается левая граница элемента к центру — правая и левая границы элемента привязываются к центру области, к центру формы или к центру элемента.

Во всех случаях, кроме пропорциональной привязки, элемент управления привязан жестко: при такой привязке изменение положения границ элемента относительно привязанной границы не происходит.

Аналогично производится настройка поведения элемента при вертикальном изменении размеров формы.

Реквизит "Ручная привязка" окна "Привязка границ для элемента …" предназначен для блокировки механизма автопривязки.

Для сброса всех привязок нажмите кнопку "Сбросить все привязки".

Сложная привязка границ

Привязка производится на закладке "Сложная". На закладке находятся четыре группы реквизитов, заключенных в рамки. Каждая группа осуществляет привязку одной границы элемента. Заголовок рамки группы соответствует названию привязываемой границы элемента (например, группа "Левая граница" отвечает за привязку левой границы элемента). Действия по настройке привязки в этих группах одинаковы, поэтому рассмотрим настройку на примере привязки одной границы.

Реквизиты "Привязать к:" осуществляют первичную привязку. Следует выбрать объект, к которому привязывается граница, затем указывается, к какой границе этого объекта будет привязан элемент. В списке границ выберите границу, к которой будет привязываться элемент. В список объектов включаются все элементы управления текущей страницы формы. В том числе и сам привязываемый элемент управления, чтобы привязать одну границу к другой. Это делается для установки таких привязок, которые не приводят к изменению размеров элемента (за исключением привязки к центру), но элемент при этом может быть привязан к другим элементам области. Если в этом случае нужно будет перепривязать элемент к другому элементу, то достаточно будет изменить привязку только одной его границы.

Реквизит "Сохранять пропорции до:" осуществляет вторичную привязку.

Для сброса всех привязок нажмите кнопку "Сбросить все привязки".

Автоматическая привязка границ

Автоматическая привязка границ - это свойство формы или панели, при котором элементы привязываются к границам автоматически. Если свойство установлено, то каждый элемент управления (за исключением некоторых), располагаемый в форме, будет привязываться к форме или другим элементам по специальному алгоритму, применяемому автоматически.

Привязки, установленные автоматически, не всегда могут соответствовать желаемому результату, поэтому стратегию автопривязок необходимо менять вручную.

Режим автопривязок можно отменять. Если при отключенном режиме автопривязок требуется, чтобы элементы управления "отслеживали" изменение размеров формы, то разработчик формы должен установить привязки вручную.

В случае повторной установки свойства Автопривязка границ программно ко всем элементам формы, для которых не установлен режим "Ручная привязка", будет применена автоматическая привязка. Если до этого элемент был привязан, но флажок "Ручная привязка" не был установлен, то привязки этого элемента также будут изменены.

Каждый новый элемент также будет автоматически привязываться к границам формы. Более того, при перемещении элемента будут изменяться и его привязки.

Для установки автоматической привязки границ установите свойство Авто-привязка границ.

Важно! Привязки, установленные при установке свойства Авто-привязка границ, не снимаются при выборе пункта "Правка - Отменить".

Проверка привязок

Просмотреть привязки можно при включенном режиме "Форма - Показать привязки".

Для проверки поведения привязок используйте режим просмотра формы "Форма - Проверить". С помощью мыши изменяйте размер формы и следите за поведением элементов.

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

Решение, понятно, для обычных форм) в управляемых за нас делают разрабы)

Нашел типовое решение через изменение высоты элементов. Но, как я и думал, можно проще, только привязками и сверткой.

И нашел рабочий алгоритм действий. Обработка с открытым кодом, можете посмотреть реализацию и использовать для своих творческих нужд.
Так как сам на данную публикацию потратил день для создания примера, не считаю ее дорогой! Ваше время ценнее. Надеюсь, кому-то пригодится для примера работы с программным изменением видимости на форме!

Тестировал на 8.2.19.

Пример очень сложной установки привязок ПРОГРАММНО элементам формы, для их скрытия/ отображения. Схлопывание элементов на форме

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Программная свертка элементов на форме

такой заголовок был бы информативным и логичным, а эта портянка с деталями бла бла бла к чему?
да и первой строкой неплохо бы указать сразу платформу и формы
8.2 - ОФ, а то мне лень телепатировать, что функционал безнадежно устарел.

К тому же цена в 5 стартмани как бы намекает, что автор толкает этот антиквариат в расчете на Буратино.

у меня пост-праздничный синдром и все кажется кривым, корявым и недосказанным, простите.

(0) молодец, но 5 стартмани.
Вообщем здесь многие выкладывают свои детища куда более сложные и всего за 1 монетку (кто то и бесплатно выкладывал бы, но платформа не позволяет), хотя если написать автору и очень хорошо попросить, можно получить бесплатно. Это я к чему, можно и 10 монет запросить, а можно поделиться знаниями и получить отзывы :-)
спасибо, буду стараться и дальше. цену изменю. может и так благодарны пользователи найдутся как вы и говорите

Спрос рождает предложение. За 5 см обработку скачают 1 раз, за 2 см - пять раз, за 1 см - сто раз. Автор этого не понимает (к счастью для нас).

ЗЫ: вот у меня есть обработка из одной строки кода . И ее уже 21 раз скачали за 1 см. Предположу, что за 2 см ее бы не скачали ни разу )))
ЗЫЗЫ: а в комментах есть ответ, почему ее качают.

такой заголовок был бы информативным и логичным, а эта портянка с деталями бла бла бла к чему?
да и первой строкой неплохо бы указать сразу платформу и формы
8.2 - ОФ, а то мне лень телепатировать, что функционал безнадежно устарел.

К тому же цена в 5 стартмани как бы намекает, что автор толкает этот антиквариат в расчете на Буратино.

у меня пост-праздничный синдром и все кажется кривым, корявым и недосказанным, простите.


ну я обработку выложил для тех кто ищет.
опытным ясно, что в управляемых, привязки не надо настраивать) это делает платформа.
а цена 5 может и действительно великовата, но полдня для того чтобы осилить, и пол для написания.
автор пока бедный новичок здесь, того и такую цену поставил. а цена 5 может и действительно великовата, но полдня для того чтобы осилить, и пол для написания. Смешно)) Интересно, сколько дней было потрачено на стратер, который предлагается в соседней теме)) (7) сядь сделай, размести и напиши сколько ты потратишь) (10)Эээ, я немного о другом. О сравнении трудозатрат и стоимости. (3) Видишь, коллеги правильно тебе сказали. 1 СМ и все пойдет , как по маслу. Не гонись за ценой, бери качеством продукта. Спасибо за обработку, кстати. Я только сейчас это узнал .
В некоторых случаях, пригодился бы. (6) так вы правы. но многие конфигурации на обычных формах. и это как 7ка уже не поддерживается, но пользователей еще хватает!!
Спасибо! Что это за типовая конфигурация, в которой подобные вещи делают через изменение размеров элементов? В типовых видел только с использование сверки и установки привязок.

Сейчас с похожим вожусь, но там сразу несколько элементов нужно сворачивать, а они привязанны друг к другу

Левый эл1
Левый эл2

Эл свертки 1
Эл свертки 2
Эл свертки 3
Эл свертки 4
Эл свертки 5

И сворачивает любые элементы хорошо, но вот когда разворачивает, тч1 которая привязана к нижней границе Эл свертки 5, через раз остаётся на месте, а элементы все на неё лезут ), не сталкивались с таким?

P.S. Даже если закрыть и открыть форму ей всё так же плохо) только перезапуск помогает)

(16) а мой пример не включает вашу ситуацию?
там главное понять логику работы и вам откроются тайны)
алгоритм прост, сначала перепривязываем те елементы которые будут принимать участие в свертке, потом сворачиваем.
когда включаем видимовсть вновь привязываем разворачиваем привязываем (17) с 1-2 эл проблем и у меня не было, а когда их сразу дофига, там какие то проблемы были. в итоге забил на всё и после сверток перемещал 1 эл программно, а остальное к нему привязывал )

Просмотры 10291

Загрузки 29

Рейтинг 13

Создание 13.05.19 17:00

Обновление 13.05.19 17:00

№ Публикации 1059057

Конфигурация Конфигурации 1cv8

Операционная система Не имеет значения

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Да

Слушатели смогут начать работать и получать результат над своими проектами сразу после первого занятия. Выполнение проектов вовремя и в рамках бюджета. Основы ТОС. с 01 по 29 декабря 2021 г.

См. также

Альтернативный способ добавления элементов и реквизитов на формы Промо

Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.

1 стартмани

09.09.2019 18020 35 bmk74 7

Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)

Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.

1 стартмани

17.10.2021 2835 6 Патриот 48

Самые красивые шахматы для 1С на управляемых формах

Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.

5 стартмани

18.02.2021 5754 13 compmir 30

Интерактивная справка по объектам 1С (подключаемое расширение)

База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020 16008 84 sapervodichka 47

Расширенная настройка динамического списка УФ Промо

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

В отличие от версии 7.7, когда при масштабировании формы реквизиты диалога неконтролируемо "разбредались" по форме, в версии 8.0 для каждого реквизита диалога формы возможна настройка привязок границ к форме (простая привязка) и к расположенным рядом другим элементам управления (сложная привязка).

В диалоговом окне "Привязка границ для элемента управления", вызываемого из палитры свойств элемента управления из категории свойств "Расположение", можно на закладке "Простая" установить простые привязки объекта:

  • к границам;
  • к центру;
  • растягивать;
  • пропорционально.


При простой привязке элемент может быть привязан как к самой форме или панели, а также к элементам управления типа "Разделитель". При этом в список объекта включаются только те разделители, которые попадают в зону пересечения с привязываемым элементом.


На закладке "Сложная" можно установить привязки каждой границы объекта, как к другим элементам, так и к границам формы. При создании новой формы, в её свойствах всегда установлено "Автоматическая привязка". Система автоматически настраивает правила привязок. Если в форме настройки привязок были настроены пользователем, то установка данного правила приведет к потере существующих настроек.

Включить режим просмотра привязок можно выбрав пункт главного меню "Форма - Показать привязки".

После настройки привязок можно проверить корректность параметров настройки с помощью запуска тестового варианта формы - меню "Форма" - "Проверить" или комбинации клавиш "Ctrl+R".


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


Включить режим выравнивания с помощью специальных маркеров можно через главное меню "Сервис", выбрав пункт "Параметры - Форма" и в области "Указатели" установив флажки.


Маркеры появляются, когда два элемента управления находятся в непосредственной близости друг от друга (зона в +16 пикселей от ближайшей границы установленного элемента).

Синие выравнивающие маркеры указывают желаемое направление перемещения элемента управления для выравнивания его по одной из границ соседнего элемента управления:


Красные выравнивающие маркеры указывают желаемое направление перемещения элемента управления в случае, когда он перекрывает другой элемент управления:


Также редактор поддерживает операции выравнивания, изменения размеров и порядка для группы элементов управления:






Для просмотра списка элементов управления формы и быстрого поиска элемента в форме предназначен диалог, вызываемый пунктом "Форма - Список элементов управления формы".

В диалоге показывается дерево всех элементов управления, размещенных в текущей форме.

Справа от имени элемента управления может размещаться пиктограмма, вид которой показывает на особенности расположения данного элемента. Пиктограммами показывается наложение элемента управления на другой элемент, отсутствие выравнивания. В случае полного расположения над или под другим элементом показывается прямоугольник с красным пунктиром внутри.


Редактор форм поддерживает использование выравнивающих линий, которые служат для облегчения выравнивания и взаимного расположения элементов управления формы. Выравнивающие линии могут отсутствовать. Для установки режима использования выравнивающих линий в свойствах формы необходимо установить "Использовать выравнивающие линии". Если свойство установлено, то по умолчанию каждая страница формы содержит выравнивающие линии по периметру формы. Это краевые выравнивающие линии. Все элементы управления располагаются на странице в пределах, установленных этими линиями.

На странице можно расположить дополнительные вертикальные и горизонтальные выравнивающие линии (в контекстном меню выбрать пункт "Добавить : выравнивающую линию") и осуществить по ним привязку места расположения элементов управления. Для удаления выравнивающей линии в контекстном меню необходимо выбрать пункт "Удалить выравнивающую линию".

Если требуется удалить все выравнивающие линии, в контекстном меню формы необходимо выбрать пункт "Удалить все выравнивающие линии". В этом случае сбрасываются все дополнительные выравнивающие линии, а краевые линии устанавливаются по периметру формы с отступом.

Невидимые выравнивающие линии редактор создает автоматически после того, как два или более элемента управления выравнены по любой из границ. Например, если два поля одинакового размера были выровнены по левой границе, то невидимая выравнивающая линия будет создана вдоль правых выровненных границ этих полей.

Одним из приемов выравнивания элементов управления является выравнивание границ и размеров по разметочной сетке, расположенной в форме. Для отображения сетки необходимо через меню "Сервис - Параметры - Форма" в области "Сетка" установить флажок "Отображать сетку".


Управление разметочной сеткой производится в категории свойств формы "Редактирование". Если для формы установлено свойство "Выравнивать по сетке", разметка изображается точками, расположенными в местах пересечения линий разметки (можно использовать режим показа точек в шахматном порядке). Можно задать шаг сетки - размер ячеек сетки по горизонтали и вертикали, для этого в свойствах формы Гор. шаг сетки или Верт. шаг сетки необходимо ввести целое число от 1 до 99.

Порядок обхода элементов управления

Для возможности интерактивной настройки порядка обхода элементов управления формы необходимо в палитре свойств формы снять флажок "Автопорядок обхода".


При снятом флажке "Автопорядок обхода" порядок обхода элементов управления каждой панели формы можно посмотреть через меню "Форма - Порядок обхода". Если данный порядок обхода не устраивает, его можно изменить, прощелкивая левой мышкой выделенные номера порядка обхода в нужной последовательности.



Если мы хотим продолжить и нажмем кнопку "Да", то будет открыто окно "Настройка порядка обхода".


Задание 6

Настройте порядок обхода элементов в форме документа "Акт об оказании услуг".

Обновление данных формы


Списки в формах пользователь может обновить по кнопке или сочетанием клавиш (Ctrl+Shift+R) или через меню "Действия - Настройка списка" формы.

Читайте также: