1с как сделать на форме прячущееся окно

Обновлено: 08.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)

Код открыт Да


См. также

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

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

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

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

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

Оконная система, используемая в 1С:Предприятии 8.0, ориентирована на обеспечение высокой эргономичности при работе с прикладными решениями и содержит специальные возможности, не поддерживаемые классической Windows-моделью. Окна, используемые в прикладных решениях, могут иметь несколько разных состояний, которые определяют поведение этих окон:


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

Обычные окна

Окно, находящееся в обычном состоянии может перемещаться только в пределах главного окна прикладного решения. Например, окно списка справочника Контрагенты может перемещаться только в пределах главного окна:


Свободные окна

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


Прикрепленные окна

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


Прячущиеся окна

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


"Склеенные" окна

Окна могут быть "склеены" друг с другом, при этом они объединяются в одно окно, в котором располагаются горизонтально или вертикально. Например, окна списка справочника и элемента справочника Контрагенты "склеены":


Сложенные окна с закладками

Окна могут быть сложены в одно окно с закладками. Выбирая ту или иную закладку можно активизировать нужное окно. Например, окна списка справочника и элемента справочника Контрагенты сложены с закладками, которые расположены внизу окна:


Максимизация окон

Оконная система 1С:Предприятия предлагает собственную схему максимизации обычных окон, которая заменяет собой стандартную для Windows-приложений схему. Теперь максимизация одного окна не влечет за собой максимизацию всех обычных окон. Например, окно списка справочника Контрагенты максимизировано, в то время как окно элемента справочника Контрагенты имеет обычные размеры:


Способы отображения окна

Платформа 1С:Предприяитя поддерживает возможность программного управления способом отображения открываемых окон. Новые окна могут быть отображены одним из трех способов:

  • максимизированное;
  • нормальное;
  • минимизированное.

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

Режим рабочего стола

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


При открытии такого окна в модальном режиме оно занимает все пространство экрана, перекрывая панели 1С:Предприятия и панели Windows.

Такой режим может быть использован для создания специализированных рабочих мест (например, рабочего места кассира).

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