Переключатель 1с не срабатывает
Прочитал множество форумов, и нигде не увидел доходчивого описания работы с «Переключателем». Вот решил написать сам.
На МОЙ взгляд наиболее часто встречающаяся ошибка — это неправильное представлении об «Переключателе». Когда вы размещаете несколько «Переключателей», например 3, на форме, то многие считают что в логике программы это 3 разных объекта, которые влияют друг на друга. Но, по сути, программа воспринимает все 3 «Переключателя» как один объект. И выбор одного из них меняет состояние этого объекта. Рассмотрим пример.
1. Создадим на форме три переключателя. Для удобства не будем менять названий.
2. Выделите «Переключатель1». В его свойстве в разделе «ОСНОВНЫЕ» поставьте галочку первый в группе. «ТИП ЗНАЧЕНИЯ» выберем число. (Далее рассмотрим почему именно число). Длину можно поставить равной единице, но особой функциональности это не несёт.
3. Выделяем «Переключатель2» в графе «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» поставим 1.
4. Выделяем «Переключатель3» в графе «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» поставим 2.
По сути 3 и 4 – м действиями вы установили флаг, который будет меняться при выборе соответствующего «Переключателя». В «Переключатель1» по дефолту «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» стоит ноль.
5. Проверьте стоят ли переключатели в «ПОРЯДКЕ ОБХОДА» по порядку. (например: 13,14,15)(Рис.1). необходим неразрывный порядок обхода по переключателем. включен автопорядок обхода (позиции пронумерованы 13, 15, 20)(Рис.2) в этом случае переключатели друг под другом работать не будут.Следует снять с формы использование автопорядка и если необходимо вручную указать порядок следования.
Как установить порядок обхода для реквизитов. Находясь в форме, в меню «Диалог» надо снять галку «Автоматический порядок обхода». После этого можно либо воспользоваться «Диалог»->»Настройка порядка обхода», либо «Диалог»->»Порядок обхода». Наиболее удобным, мне кажется второй способ. При этом способе у каждого реквизита появляется картинка с номером реквизита. Вам остается только щелкать мышкой по цифрам, выбирая реквизиты в том порядке, который нужен Вам.
6. Выделяем «Переключатель1» и пишем у него нужную нам процедуру.
Например:
7. Жмём F7. Жмём F5. Смотрим всё работает мы молодцы. И большой БОСС даёт нам премию.
ПОЯСНЕНИЕ К КОДУ
Почему везде стоит «Переключатель1»? Так как уже было сказано, программа воспринимает все три элемента как один, и так как «Переключатель1» является первым в группе, то Его программа и воспринимает как весь элемент, если вы поставите «Переключатель2» основным в группе то проверку правельности надо будет проводить по «Переключатель2».
Ну а откуда «0»,»1″,»2″? Те значения, которые принимает объект при переключениях «Переключателей» их мы задавали в пункте 3 и 4.
Данный код приведен как пример работы с переключателями. На мой взгляд так более наглядно и понятно. Но стоит упомянуть, что в «ТипЗначения» можно выбирать сразу то, что нужно — предопределенное значение справочника, перечисления, например, или строковое значение. То есть в указанном примере можно было сразу назначить переключателям в качестве значений не 0,1,2, а сразу «Неоплачено», «Частично оплачено», «Оплачено». И тогда код сведется в одну строчку:
Результат работы будет таким же.
Переключатели в управляемых формах (УФ) сделали более интуитивными.
При создании Переключателя нужно помнить о двоице Реквизит, Элемент формы.
В первую очередь вам необходима, создать Реквизит формы. Тип у реквизита устанавливаете, такой, какие значения будет принимать ваш переключатель. Я выбрал тип Строка. Тут у вас есть два вариант: если вы создали реквизит Объекта, то принимаемое вашим переключателем значение будет сохраняться в БД, если вы просто добавляете в список реквизитов формы, то результат принимаемое вашим переключателем сохраняться не будет.
Далее перетаскиваем нужный нам Реквизит в ЭлементыФормы. При создании элемента формы, элемент в свойствах «Вид» — будет иметь тип «Поле ввода». Выбираем из списка «Поле переключатель». В результате у вас получится форма примерно следующего вида:
Заполняем заголовок Элемента формы, цвет, шрифт, расположение и прочие красивости на ваш вкус.
В свойствах элемента формы есть пункт. «Список Выбора» — в нем вы заводите Значения, которые будет принимать ваш переключатель при выборе того или иного пункта. В своём примере я добавил строки с значениями «Записать», «ОтменаПроведения», «Проведение».
После этого ваш переключатель готов к работе.
В зависимости от того является ли ваш переключатель реквизитом Объекта или Реквизитом Формы для получение хранящегося в нем значения вы используете следующий код:
Прочитал множество форумов, и нигде не увидел доходчивого описания работы с «Переключателем». Вот решил написать сам.
На МОЙ взгляд наиболее часто встречающаяся ошибка - это неправильное представлении об «Переключателе». Когда вы размещаете несколько "Переключателей", например 3, на форме, то многие считают что в логике программы это 3 разных объекта, которые влияют друг на друга. Но, по сути, программа воспринимает все 3 «Переключателя» как один объект. И выбор одного из них меняет состояние этого объекта. Рассмотрим пример.
1. Создадим на форме три переключателя. Для удобства не будем менять названий.
2. Выделите «Переключатель1». В его свойстве в разделе «ОСНОВНЫЕ» поставьте галочку первый в группе. «ТИП ЗНАЧЕНИЯ» выберем число. (Далее рассмотрим почему именно число). Длину можно поставить равной единице, но особой функциональности это не несёт.
3. Выделяем «Переключатель2» в графе «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» поставим 1.
4. Выделяем «Переключатель3» в графе «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» поставим 2.
По сути 3 и 4 – м действиями вы установили флаг, который будет меняться при выборе соответствующего «Переключателя». В «Переключатель1» по дефолту «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» стоит ноль.
5. Проверьте стоят ли переключатели в «ПОРЯДКЕ ОБХОДА» по порядку. (например: 13,14,15)(Рис.1). необходим неразрывный порядок обхода по переключателем. включен автопорядок обхода (позиции пронумерованы 13, 15, 20)(Рис.2) в этом случае переключатели друг под другом работать не будут.Следует снять с формы использование автопорядка и если необходимо вручную указать порядок следования.
Как установить порядок обхода для реквизитов. Находясь в форме, в меню "Диалог" надо снять галку "Автоматический порядок обхода". После этого можно либо воспользоваться "Диалог"->"Настройка порядка обхода", либо "Диалог"->"Порядок обхода". Наиболее удобным, мне кажется второй способ. При этом способе у каждого реквизита появляется картинка с номером реквизита. Вам остается только щелкать мышкой по цифрам, выбирая реквизиты в том порядке, который нужен Вам.
6. Выделяем «Переключатель1» и пишем у него нужную нам процедуру.
Например:
7. Жмём F7. Жмём F5. Смотрим всё работает мы молодцы. И большой БОСС даёт нам премию.
ПОЯСНЕНИЕ К КОДУ
Почему везде стоит "Переключатель1"? Так как уже было сказано, программа воспринимает все три элемента как один, и так как "Переключатель1" является первым в группе, то Его программа и воспринимает как весь элемент, если вы поставите "Переключатель2" основным в группе то проверку правельности надо будет проводить по "Переключатель2".
Ну а откуда "0","1","2"? Те значения, которые принимает объект при переключениях "Переключателей" их мы задавали в пункте 3 и 4.
Данный код приведен как пример работы с переключателями. На мой взгляд так более наглядно и понятно. Но стоит упомянуть, что в "ТипЗначения" можно выбирать сразу то, что нужно - предопределенное значение справочника, перечисления, например, или строковое значение. То есть в указанном примере можно было сразу назначить переключателям в качестве значений не 0,1,2, а сразу "Неоплачено", "Частично оплачено", "Оплачено". И тогда код сведется в одну строчку:
Результат работы будет таким же.
Переключатели в управляемых формах (УФ) сделали более интуитивными.
При создании Переключателя нужно помнить о двоице Реквизит, Элемент формы.
В первую очередь вам необходима, создать Реквизит формы. Тип у реквизита устанавливаете, такой, какие значения будет принимать ваш переключатель. Я выбрал тип Строка. Тут у вас есть два вариант: если вы создали реквизит Объекта, то принимаемое вашим переключателем значение будет сохраняться в БД, если вы просто добавляете в список реквизитов формы, то результат принимаемое вашим переключателем сохраняться не будет.
Далее перетаскиваем нужный нам Реквизит в ЭлементыФормы. При создании элемента формы, элемент в свойствах "Вид" - будет иметь тип "Поле ввода". Выбираем из списка "Поле переключатель". В результате у вас получится форма примерно следующего вида:
Заполняем заголовок Элемента формы, цвет, шрифт, расположение и прочие красивости на ваш вкус.
В свойствах элемента формы есть пункт. "Список Выбора" - в нем вы заводите Значения, которые будет принимать ваш переключатель при выборе того или иного пункта. В своём примере я добавил строки с значениями "Записать", "ОтменаПроведения", "Проведение".
После этого ваш переключатель готов к работе.
В зависимости от того является ли ваш переключатель реквизитом Объекта или Реквизитом Формы для получение хранящегося в нем значения вы используете следующий код:
1. Положила на форму рамку группы.
2. В неё поместила два переключателя: Переключатель1 и Переключатель2
3. Переключатель1 сделала первым в группе, Тип значения - Число
4. Форма-Настройка порядка обхода - проверила, Переключатели идут один за другим.
5. Выбираемое значение для первого сделала 0, для второго 1
6. Код по нажатию кнопки "Посчитать Сумму"
Процедура ПосчитатьСуммуНажатие(Элемент)
Если ЭлементыФормы.Переключатель1.ВыбираемоеЗначение=0 Тогда
бла-бла-бла.
КонецЕсли;
КонецПроцедуры
Но Выбираемое Значение для Переключателя1 - ВСЕГДА НОЛЬ.
Никак не пойму, как сделать, если пользователь выбрал второй переключатель.
Помогите, пожалуйста!
Помогите с переключателями
Как сделать так, чтобы в таблицу из формы вводилось не число 1,2,3. соответствующее нажатому.
Список с переключателями
Создал список с переключателями в виде когда щелкаешь на элемент списка, то правее появляется.
Проблемы с переключателями
Добрый день. Даны две формы. Обе - обычные разделенные. На одной форме есть поле со списком. На.
Работа с переключателями
Ситуация такая: есть два переключателя, предположим А и В, и два окна диалога С и D. Если мы.
fimbulwinter, извините, я только начинаю работать с 1с, может не понимаю чего, но по указанной ссылке нет ответа на МОЙ вопрос. Там разбираются с НАЗВАНИЯМИ переключателей. С ними все в порядке у меня. У меня вопрос как построить код, если пользователь выбрал Переключатель2.
fimbulwinter, фу ты блин, как всё просто Спасибо, получилось)
А почему такая разница? Вроде смысл тот же.
хех.
не уж, разница есть и многие начинающие программмеры не могут её понят.
ЭлементыФормы. Это всего лишь объект формы, который обладает рядом свойств. Даблклик по элементу, увидишь все те свойства, которые есть у объекта. Как то: Имя, заголовок, доступность, видимость и т.д. Этими свойствами ты можешь управлять через элементы формы.
Реквизит формы есть объект, в котором непосредственно хранятся данные. Элемент формы связан с ревизитом формы и является всего лишь его графическим отображением.
Надеюсь доступно объяснил.
т.е. Переключатель1 - это реквизит, имеющий значение 0
а ЭлементыФормы.Переключатель1.ВыбираемоеЗначение - это уже элемент я лезу в свойства объекта Переключатель1
так?
Переключатель (RadioButton)
ВыбираемоеЗначение (SelectionValue)
Использование:
Чтение и запись.
Описание:
Тип: Совпадает с описанием типа первого в группе переключателя. Определяет значение, которое будет присвоено связанному с группой переключателей переменной при выборе данного переключателя.
Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
т.е при создании группы переключателей ты определила значения этих переключателей
Первый = 0, Второй = 1
метод ВыбираемоеЗначение может как считывать так и устанавливать значение Переключатель1 при его выборе. Т.е. например если ЭлементыФормы.Переключатель1.ВыбираемоеЗначение = 3 и ЭлементыФормы.Переключатель1.ВыбираемоеЗначение = 10, тогда при выборе первого в группе переключателя Переключатель1 будет равен 3, при выборе второго в группе переключателя Переключатель1 будет равен 10. Фактически эти значения ты задала программно. Зачем это нужно? для динамического (или программного, как угодно) добавления реквизитов на форму и определения его первоначальных параметров.
Добавляем на форму рамку группы и на нее размещаем переключатели через пункт меню:
Форма -> Вставить элемент управления… и в открывшемся окне выбираем переключатели:
В правой части окна добавляем значение переключателя столько, сколько нам необходимо, ставим галочку на «Акции – первый в группе», для того чтоб данный переключатель выбирался автоматически.
После того как добавим переключатели выберем тип данных для первого значения «Акции», в нашем случае присваиваем значение «ТипЦБ»:
А само значение переключателя вводится в Данные -> Выбираемое значение. Для Акции это 0, Облигации – 1, Векселя - 2 и Паи – 3. Но до введения этих данных необходимо проверить порядок.
Если переключатели идут не по порядку, то не будет осуществлено переключение, то есть не сможем выбрать значение облигации. Для того чтобы включить эту возможность, необходимо выбрать меню Форма -> Настройка порядка обхода и все переключатели разместить по порядку.
Проверьте значение выбираемого значения переключателей после исправления порядка.
Остается только в событии переключателя «акции» «При изменении» написать код программы:
Теперь при выборе переключателя «Облигации» дается возможность редактировать значение колонки НКД:
Похожие FAQ
Использование Web-сервисов для синхронизации баз данных в режиме online 1с 8.х 12
Часто при ведении учета в различных конфигурациях 1с возникает необходимость выполнения обмена данных. Для решения этой задачи принято использовать Универсальный обмен данными XML или другие внешние обработки, общим у которых является использование Использование предложения ДЛЯ ИЗМЕНЕНИЯ 0
Предложение ДЛЯ ИЗМЕНЕНИЯ позволяет заблаговременно заблокировать некоторые данные (которые могут читаться транзакцией другого соединения) уже при считывании, чтобы исключить взаимные блокировки при записи. ДЛЯ ИЗМЕНЕНИЯ дает возможность указать в Использование транзакций 2
Использование транзакций в 1С Транзакция предназначена для записи в информационную базу согласованных изменений. Все изменения, внесенные в информационную базу после начала транзакции, будут затем либо целиком записаны, либо целиком отменены. Ключе Как заблокировать считываемые в транзакции данные, чтобы они не могли читаться из другой транзакции 0
Используется режим управляемых транзакционных блокировок (в автоматическом режиме для этой цели используется конструкция ДЛЯ ИЗМЕНЕНИЯ). Для того чтобы запретить чтение данных другими управляемыми транзакциями, следует устанавливать исключительный ре Как заблокировать считываемые в транзакции данные,чтобы они не могли изменяться из другой транзакции 0
Используется режим управляемых транзакционных блокировок (в автоматическом режиме ничего делать не нужно, система сама блокирует все считываемые данные). Для того чтобы запретить изменение данных другими транзакциями, следует устанавливать разделяемы Посмотреть все результаты поиска похожих
Еще в этой же категории
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
Указание на обязательное следование "по порядку", на мой взгляд ключевой момент.
Рассмотрим ситуацию, когда у объекта существует реквизит, у которого может быть только определенный набор значения, и эти значения нужно задавать с помощью переключателей. Переключатели могу работать с примитивными типами данных (число, строка, дата, булево), а так же со ссылками, но только на предопределенные элементы.
Рассмотрим пример: нужно создать переключатель, который в дальнейшем будет определять порядок расчета временных промежутков либо по календарным дням, либо — по рабочим. У объекта имеется реквизит КалендарныеДни с типом Булево. Переключатель должен изменять значение этого реквизита.
Для создания переключателя воспользуемся меню: Форма — Вставить элемент управления. В открывшемся окне выберем Переключатель и заполним окно вариантов. Обязательно отметим, что вариант КалендарныеДни — первый в группе.
После этого нажимаем кнопку ОК и рисуем переключатели там, где это необходимо.
Теперь нужно убедиться, что переключатели идут один за другим при обходе элементов формы. Это делается через меню Форма — Список элементов управления формы. Список должен выглядеть следующим образом. Сначала идет переключатель Календарные дни, т.к. он был отмечен как первый в группе, а затем — Рабочие дни. Если у вас большее количество переключателей, то они все должны идти подряд, начиная с первого в группе. В противном случае вы не сможете назначить на каждый переключатель нужное значение реквизита.
После этого нужно для первого переключателя установить связь с реквизитом объекта (свойство Данные) и значение, которое будет установлено в этот реквизит при выборе переключателя (свойство ВыбираемоеЗначение). Для остальных переключателей устанавливается только ВыбираемоеЗначение.
Читайте также: