1с как активировать флажок
Очень часто при 1С разработке возникает необходимость программным способом открыть форму какого-нибудь существующего объекта. Например, нужно открыть какой-нибудь документ, или какой-нибудь справочник.
Для того чтобы открыть управляемую форму какого-то уже существующего объекта используется параметр формы Ключ.
О простом открытии формы, и об открытии формы с передачей параметров, читайте в моей статье:
Открыть форму имеющегося объекта с использованием параметра формы Ключ достаточно просто: создаем структуру, у которой будет связка КлючИЗначение с названием ключа «Ключ», а со значением – ссылкой на открываемый объект. И эту структуру в качестве параметра указываем в методе ОткрытьФорму.
Пример кода с открытием формы документа:
Открытие формы элемента справочника аналогично:
Причем, заметьте, непосредственно не на форме справочника, и не на форме документа нет такого параметра как Ключ.
Параметр Ключ является параметром расширения управляемой формы 1С для документа или справочника и существует всегда у формы справочника или документа. Причем этот параметр не заполнен, если мы открыли форму нового документа или справочника, что очень отлично может помочь, когда нужно проверить создаем мы новый документ или редактируем имеющийся.
Например, вот как можно проверить в обработчике формы ПриОткрытии, открываем форму существующего документа или нового.
Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
В редких случаях необходимо поведение программы, которое не предусмотрено разработчиком.
В данном случае речь про флажки в списке документов, с помощью которых можно отметить несколько документов.
Затем отмеченные документы обработать каким-либо образом (в своей кнопке).
Программное изменения интерфейса (для более удобного обновления типовых).
Вот основной блок кода, для тех, кому не терпится узнать как это работает или нужен только принцип работы.
В списке документов нет возможности добавить колонку с данными, соответственно и нет возможности добавить свой флажок.
Не стоит печалиться, попробуем обойти данное ограничение с помощью некоторых возможностей списков.
У списков есть возможность использовать флажок "Пометка удаления". Вот и задействуем эту возможность в своих целях.
Принцип работы такой, при изменении пометки удаления будем запоминать (или забывать) отмеченные документы.
В то же время заблокируем фактическую установку пометки. Не забудем показать состояние флажка отмечен/снят вместо пометки удаления.
Вот собствено и весь принцип работы.
Список отмеченных документов будем хранить в соответствии:
Отображение нашего состояния флажка поручим процедуре
Запомним или забудем отмеченные документы в процедуре
С помощью нажатия на кнопку обработаем выбранные документы
Вариант 2. Без использования "Пометки удаления". Добавлено после обсуждений в комментариях.
Способ почти идентичный, по этому расписывать подробно нет смысла.
Примечание. Данные способы (с галочками) не следует использовать при разработке форм с нуля, для этого существует механизм выделенных строк. Данный способ удобен для навешивания на готовые типовые формы. Возникшие в комментариях споры это подтверждают.
В приложенной к публикации обработке выложен расширенный, полностью рабочий код, который можно скопировать в типовой документ и пользоваться. Изменение интерфейса происходит полностью программно в модуле формы. Это обеспечивает более удобное обновление типовых конфигураций. При обновлении достаточно будет снимать необходимые галочки с процедур.
При добавлении кода из обработки в типовой модуль формы необходимо проследить, есть ли в модуле обработчики ДокументСписокПередНачаломИзменения или ДокументСписокПриПолученииДанных и при их наличии раскомментировать соответствующие строки в процедурах ДокументСписокПередНачаломИзменения_Подключаемая и ДокументСписокПриПолученииДанных_Подключаемая. Что бы не забывались вызываться типовые процедуры.
А так же необходимо проследить за именем списка документов и при необходимости переименовать в добавляемом коде имя "ДокументСписок" на необходимое.
В статье расскажу как в динамических списках можно использовать поле флажка для отметки строк. Используемый прием можно использовать не только для галочек, но и для любого поля ввода. Несмотря на то, что редактирование динамических списков напрямую невозможно, есть способ обойти платформу. Подробности в публикации.
Итак, исходные данные:
Для примера нам понадобится любая конфигурация (хоть созданная с нуля) со справочником "Номенклатура". Остальное не важно.
Подготавливаем галочки. К слову, они могут быть любыми, если вам не нравятся стандартные флажки создайте свои. Главное, чтобы первой стояла картинка с флажком, а потом уже без флажка. У меня получился вот такой файл:
Создаем внешнюю обработку. Размещаем на ней реквизит с типом "Динамический список" и устанавливаем галочку "Произвольный запрос"
Нажимаем на "Открыть" рядом с настройкой списка и устанавливаем запрос. Запрос выглядит следующим образом:
Добавляем на форму список и его реквизиты "Пометка", "Ссылка"
В поле "Пометка" устанавливаем следующие свойства элемента:
- Вид - Поле картинки
- Положение заголовка - Нет
- Картинка значений - Наша картинка с галочками
- Гиперссылка ячейки - Да
Для элемента формы "Список" установите событие "Выбор" с названием процедуры "СписокВыбор".
Скопируйте код ниже в модуль формы:
Поздравляю, теперь в вашем динамическом списке есть галочки!
А теперь как всё это работает.
Особенностью динамических списков является невозможность ввода данных непосредственно в список. Когда-то раньше такая возможность была, но нас ее лишили по техническим причинам. Поэтому вся информация, которая отображается в динамическом списке не может редактироваться и получается запросом.
Для динамических списков есть событие ПриПолученииДанныхНаСервере. Там тоже можно заполнить и переопределить некоторые поля. Но есть парочка больших НО, которые следует учитывать:
- Процедура выполняется без контекста. То есть реквизиты формы в ней недоступны. Есть, конечно, способ передать реквизиты через настройки компоновщика, но это не очень удобно.
- Отборы по таким полям не будут работать. А фишка динамических списков как раз в гибкости настроек. В итоге пользователь будет работать с ними как с обычными полями, а потом чесать репу и писать в саппорт что у него список не работает. Если вы пойдете этим путем - настоятельно рекомендую выделять такие колонки цветом.
- Это не имеет никакого отношения к интерактивному взаимодействию пользователя со списком.
А поскольку мы не можем менять данные в самом списке, значит они должны отображаться уже с учетом наших изменений. Остается передавать их в запрос через параметры. Делается это через переменную ВыбраннаяНоменклатура. Информацию к отображению можно передавать любым желаемым способом и в любой желаемой форме, главное чтобы запрос динамического списка его принял.
Еще один важный момент, без которого ничего не получится, это картинки флажков. Если вывести в списке обычное булево поле, то возникает ряд трудностей. Мало того, что галочки отрисовываются без чекбоксов, так еще и нажатие не срабатывает. Двойной клик по полю неудобен, а событие ПриАктивацииПоля не срабатывает если поле уже активировано. Для их решения, собственно, и сделаны манипуляции с полем картинки. На него навешивается гиперссылка и выбор будет срабатывать по однократному нажатию. Более того, у нас даже меняется курсор, показывая что чекбокс отзывается на нажатие.
Что имеем в сухом остатке:
- При нажатии на поле картинки срабатывает событие.
- В этом событии дополняется (или наоборот) массив ВыбраннаяНоменклатура.
- ВыбраннаяНоменклатура передается в динамический спискок
- Динамический список в зависимости от параметра отображает текущее состояние чекбоксов.
- Теперь снова можно нажимать на поле картинки, цикл замкнулся.
К слову, тот же прием вы можете использовать для ввода полей другого типа. Например прописать в событии "Выбор" для поля с датой процедуру ПоказатьВводДаты(), и вот уже пользователь может вводить дату в динамический список не меняя самих данных, по которым строится запрос. В некоторых случаях может быть удобно сделать реквизит с типом ТаблицаЗначений и хранить в нем сколько угодно временных данных, влияющих на динамический список.
Код разрабатывался для Управляемых форм на платформе 8.3, конфигурация значения не имеет.
Для примера я создал на форме реквизит с типом Число. В процессе этой статьи мы сделаем переключатель, который будет устанавливать этому реквизиту формы значения от одного до пяти.
Перетащим этот реквизит в закладку элементы конструктора формы.
По умолчанию для реквизитов с типом Число создается элемент формы Поле с видом ПолеВвода. Изменим значение свойства Вид на Поле переключателя. Вид реквизита на управляемой форме сразу же поменяется.
На внешний вид пока не обращаем внимание. Нам нужно установить значения переключателя. Для этого нам понадобится свойство элемента Список выбора.
В левой колонки таблицы вносим значения реквизита (в нашем случае цифры), а в правой колонке представление этих значений на форме.
После этого поле переключателя на нашей форме изменится.
Сделаем для переключателя более красивый вид: уберем заголовок и установим в свойство Вид переключателя значение Тумблер.
Ещё обратите внимание на свойство элемента Поле – Количество колонок. По умолчанию оно равно 0, но при его помощи можно различным образом компоновать кнопки переключателя на форме.
И всё. У многих возникнет вопрос: а как обрабатывать значение переключателя на форме. Делается это достаточно просто: обращаемся к реквизиту формы, который связан с этим полем, а этот реквизит принимает то значение, в которое установлен в данный момент переключатель.
Для демонстрации я создам на обработке команду формы, в которой буду проверять значения реквизита, связанного с переключателем.
На рисунке ниже результат работы этой команды.
Более подробно работа с элементами формы на практичных примерах дается в книге «Основы разработки в 1С:Такси. Разработка управляемого приложения за 12 шагов».
Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
- Без сложных технических терминов.
- Более 700 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
И так начнем. Для наглядности я создам реквизит формы с типом Булево.
Разместим новый реквизит на форме. Это можно сделать двумя способами.
Первый способ: просто перетащить мышкой нужный реквизит в закладку элементы.
Второй способ: добавить новый элемент формы с типом Поле, и связать его с нужным реквизитом формы при помощи свойства элемента ПутьКДанным.
Я перетащу реквизит с типом Булево, и у него автоматически установится вид Поле флажка.
Сам флажок нам не интересен. Гораздо интереснее свойство Вид флажка, которое может принимать три значения – Авто, Флажок и Тумблер.
Если мы установим в это свойство значение Тумблер, то наша форма примет более красивый вид.
Конечно же, когда в переключателях тумблера написаны названия Истина и Ложь, это не очень то красиво. Поменяем их на более привычные. Для этого воспользуемся свойством элемента Формат редактирования, где на закладке Булево установим более подходящие для нас названия кнопок тумблера.
После этого наш тумблер примет более красивый вид. Если мы захотим убрать или переместить положение заголовка, то для этого нам понадобится свойство элемента ПоложениеЗаголовка. Которое принимает много разных значений, в том числе значение – Нет.
Более подробно работа с элементами формы на практичных примерах дается в книге «Основы разработки в 1С:Такси. Разработка управляемого приложения за 12 шагов».
Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
- Без сложных технических терминов.
- Более 700 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Читайте также: