Галочка в 1с как называется

Обновлено: 07.07.2024

Пока, так сказать, первая попытка, посему прошу не судить строго. Надеюсь, кому-то пригодится.

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

Но если ставим все красиво, исчезает возможность контролировать изменение этой ячейки. Исчезает возможность задать процедуру "ПриИзменении".

Но есть возможность всё-же реализовать такую возможность.
Описываю процедуру по шагам (есть ньюансы, поэтому прошу строго придерживаться порядка, а после получения результата уже можно "поэкспериментировать"):

1. Создаем в нужном табличном поле реквизит типа Булево , назовем его, к примеру, Имя_реквизита . Можно реквизит не создавать, а использовать переменную, если галочку не нужно хранить в документе (С) webester
2. Создаем колонку на форме в табличном поле
3. Указываем Имя=Имя_реквизита
4. Пропускаем поле Данные (поле должно оставаться пустым, это важно!)
5. Указываем ЭлементУправления=Флажок , появится поле "ДанныеФлажка"
6. Указываем ДанныеФлажка=Имя_реквизита
7. Указываем РежимРедактирования=Непосредственно

Как мы видим, возможность перехватить событие "ПриИзменении" исчезает из свойств. что же делать? Смотрим дальше.

8. Заходим в свойства табличного поля
9. Создаем процедуру на событие ПриОкончанииРедактирования с таким текстом:
9а. Как вариант (С) Yashazz, можно использовать процедуру ПриИзмененииФлажка , тогда Элемент.ТекущаяКолонка.Имя при желании можно сократить до Колонка.Имя ,
но в таком случае мы не сможем использовать флаг ОтменаРедактирования (например, если нужно динамически задать условия изменения, например, доступность).

Вот мой пример использования для сравнения обеих процедур:

10. Создаем процедуру Имя_реквизита_ПриИзменении() , где, например, производим пересчет текущей строки в зависимости от значения реквизита Имя_реквизита.

*к примеру, лично у меня в зависимости от показания меняется сумма услуги в текущей строке:
П.С. если кто нибудь из старожилов может уделить мне пару минут внимания и объяснить, как правильно и грамотно публиковать свои наработки, буду очень благодарен. Мой скайп - valhalla_resa.

Для примера нам понадобится любая конфигурация (хоть созданная с нуля) со справочником "Номенклатура". Остальное не важно.

Подготавливаем галочки. К слову, они могут быть любыми, если вам не нравятся стандартные флажки создайте свои. Главное, чтобы первой стояла картинка с флажком, а потом уже без флажка. У меня получился вот такой файл:


Создаем внешнюю обработку. Размещаем на ней реквизит с типом "Динамический список" и устанавливаем галочку "Произвольный запрос"


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

Добавляем на форму список и его реквизиты "Пометка", "Ссылка"


В поле "Пометка" устанавливаем следующие свойства элемента:

  • Вид - Поле картинки
  • Положение заголовка - Нет
  • Картинка значений - Наша картинка с галочками
  • Гиперссылка ячейки - Да

Для элемента формы "Список" установите событие "Выбор" с названием процедуры "СписокВыбор".

Скопируйте код ниже в модуль формы:

Поздравляю, теперь в вашем динамическом списке есть галочки!

А теперь как всё это работает.

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

Для динамических списков есть событие ПриПолученииДанныхНаСервере. Там тоже можно заполнить и переопределить некоторые поля. Но есть парочка больших НО, которые следует учитывать:

  1. Процедура выполняется без контекста. То есть реквизиты формы в ней недоступны. Есть, конечно, способ передать реквизиты через настройки компоновщика, но это не очень удобно.
  2. Отборы по таким полям не будут работать. А фишка динамических списков как раз в гибкости настроек. В итоге пользователь будет работать с ними как с обычными полями, а потом чесать репу и писать в саппорт что у него список не работает. Если вы пойдете этим путем - настоятельно рекомендую выделять такие колонки цветом.
  3. Это не имеет никакого отношения к интерактивному взаимодействию пользователя со списком.

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

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

Что имеем в сухом остатке:

  • При нажатии на поле картинки срабатывает событие.
  • В этом событии дополняется (или наоборот) массив ВыбраннаяНоменклатура.
  • ВыбраннаяНоменклатура передается в динамический спискок
  • Динамический список в зависимости от параметра отображает текущее состояние чекбоксов.
  • Теперь снова можно нажимать на поле картинки, цикл замкнулся.

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

Код разрабатывался для Управляемых форм на платформе 8.3, конфигурация значения не имеет.

В этой статье мы разберемся с тем, как в платформе 1С 8.3 работать с различными символами. Узнаем, как добавить нужный символ в строку, обратившись к нему по коду, а также познакомимся с системным набором значений Символы.

Функции Символ и КодСимвола

У примитивного типа строка в 1С есть метод, который называется Символ. Этот метод является функцией и имеет единственный параметр, в котором необходимо указывать код символа согласно кодировке Unicode. А возвращать эта функция будет сам символ, который соответствует этому коду.

На этом сайте можно найти коды Unicode практически любых символов, включая самые экзотические.

Мы можем выбрать нужный диапазон символов.

Диапазон символов unicode

Код символа unicode

Если мы значение DEC этого символа поставим в качестве параметра в метод Символ:

То этот метод вернёт строковое представление символа:

Символ в 1С

Замечу, что переменная Символ_1 имеет тип Строка, т.е. с ней можно совершать любые операции, которые присущи строкам. Например, операцию конкатенации:

Символ в 1С

Метод возвращает десятичное представление кода символа в кодировке Unicode.

На произвольной управляемой форме создадим реквизит с типом строка (длинна 1), который разместим на форме в виде поля ввода:

Поле ввода на управляемой форме для реквизита строка

У этого поля ввода создадим событие ОкончаниеВводаТекста:

Событие ОкончаниеВводаТекста поля ввода

Так можно узнать код любого символа, который можно ввести с вашей клавиатуры.

Коды символов

Замечу, что для строчных и заглавных букв коды разные. Это разные символы.

Системный набор значений Символы

Некоторые самые распространенные символы собраны в системный набор значений, который так и называется Символы. Этот набор имеет всего шесть значений:

  • ВК – возврат каретки;
  • ВТаб – символ вертикальной табуляции;
  • НПП – неразрывный пробел;
  • ПС – перевод строки;
  • ПФ – перевод формы;
  • Таб – символ горизонтальной табуляции.

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

И результат этого примера:

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

Статьи о примитивных типах в 1С:

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

И так начнем. Для наглядности я создам реквизит формы с типом Булево.

Реквизиты формы

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

Первый способ: просто перетащить мышкой нужный реквизит в закладку элементы.

Перетаскиваем реквизит формы

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

Добавление нового элемента формы

Свойство ПутьКДанным элемента формы

Я перетащу реквизит с типом Булево, и у него автоматически установится вид Поле флажка.

Свойство вид со значением поле флажка

Сам флажок нам не интересен. Гораздо интереснее свойство Вид флажка, которое может принимать три значения – Авто, Флажок и Тумблер.

Значения свойства вид флажка

Если мы установим в это свойство значение Тумблер, то наша форма примет более красивый вид.

Вид флажка - тумблер

Конечно же, когда в переключателях тумблера написаны названия Истина и Ложь, это не очень то красиво. Поменяем их на более привычные. Для этого воспользуемся свойством элемента Формат редактирования, где на закладке Булево установим более подходящие для нас названия кнопок тумблера.

После этого наш тумблер примет более красивый вид. Если мы захотим убрать или переместить положение заголовка, то для этого нам понадобится свойство элемента ПоложениеЗаголовка. Которое принимает много разных значений, в том числе значение – Нет.

Свойство элемента ПоложениеЗаголовка

Более подробно работа с элементами формы на практичных примерах дается в книге «Основы разработки в 1С:Такси. Разработка управляемого приложения за 12 шагов».


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

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);
  4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

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