Доброе утро !
Возникла следующая проблема. В конфигурации определены следующие справочники: Области и Районы. Справочник Районов( Районы) подчинён справочнику Областей.
На форме есть 2 поля ввода .1-е поле ввода-области,2-е поле ввода-районы.
В свойствах поля ввода Район –определена связь по владельцу –ОбластьРождения:
При работе пользователя с полями ввода всё в принципе работает, правда только когда пользователь меняет область рождения на другую, список района рождения не обновляется ,остаётся привязанным к предыдущей записи справочника Областей.
Пользователю нужно принудительно выбирать и район рождения. Можно ли как-нибудь после выбора Области принудительно открывать список значений Районов рождения. Это нужно для того , чтобы ввод данных происходил корректно. А то пользователи народ мечтательный и могут этот момент запросто пропустить -получится следующее : район рождения останется привязанным на поле ввода не к своей области.
Добрый день.
Какая 1С , какой релиз? Оформите тему согласно требованием форума!!!
Принскрин бы улучшил поминание об проблеме.
Прикрутите к полям которые пользователь должен заполнить- контроль на заполнение этого поля+ уведомление пользователя.
Или условие при изменение одного поля проверка второго поля.
Условие при изменение одного поля второе поле очищается (такое не делал но думаю можно).
Тут уже как вам веднее.
Я бы в ПриИзменении поля Область просто очищал Район.
Платформа : 8.2, релиз 8.2.19.106
Рад бы прикрутить "принтскрины", у нас интернет "несколько" заблокирован (политика ИБ нашей компании).Прикручу их позже-из дома.
Можно ли при Изменении поля ввода Области сэмулировать нажатие клавиши выбора из меню Районов ,предварительно назначив ему (поле ввода Районы)
фокус ввода?
Можно конечно, посмотрите как в типовых конфигурациях реализована связка Контрагент-Договор, принцип тот же, при изменении договора, автоматически подставляется контрагент и наоборот, при изменении контрагента договор либо очищается либо если есть основной то подставляется основной.
andrew76 @ Сегодня, 8:27
,
Эти поля разве не последовательно идут? Выбрали область, в "ПриИзменении" проверяем заполненность района, если заполнен и не подчинен текущей области, обнуляем. Если все же пользователи ленятся дополнительного нажатия кнопки, сделайте там же обработку выбора района.
У меня пока нет возможности ознакомиться с тем, как это сделано в типовых конфигурациях.Поэтому отсебятина :
На поле ввода Область (при изменении) передаю фокус на поле ввода Район.
Фокус передаётся нормально.Осталось узнать- как сэмулировать нажатие клавиши F4?
Процедура Область_рождПриИзменении(Элемент)
ЭтаФорма.ТекущийЭлемент=ЭлементыФормы.Район_рож;
КонецПроцедуры
Процедура Область_рождПриИзменении(Элемент)
ЭтаФорма.ТекущийЭлемент=ЭлементыФормы.Район_рож;
Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{F4}");
КонецПроцедуры
andrew76 @ Сегодня, 9:30
,
Зачем использовать сторонние объекты, если все можно сделать встроенными средствами, например, как-то так:
Процедура Область_рождПриИзменении(Элемент)
Если ЗначениеЗаполнено(Область_рожд) И Район_рож.Владелец <> Область_рожд Тогда
Район_рож = Неопределено;
Параметры = Новый Структура;
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Область_рожд);
Параметры.Вставить("Отбор", Отбор);
ОткрытьФорму("Справочник.Районы.ФормаВыбора", Параметры, ЭлементыФормы.Район_рож);
КонецЕсли;
КонецПроцедуры
Можно и так-но так открывается форма Выбора.Тут основная проблема- с пользователями.Если прут окна какие-то ,то их это очень пугает.
В общем "Восток-дело тонкое".
Процедура Область_рождПриИзменении(Элемент)
Если ЗначениеЗаполнено(Область_рожд) И Район_рож.Владелец <> Область_рожд Тогда
Район_рож = Неопределено;
Параметры = Новый Структура;
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Элемент.Значение); //в вашем варианте ругается-"переменная не найдена-Область_рожд Отбор.Вставить("Владелец", Область_рожд);
Параметры.Вставить("Отбор", Отбор);
ОткрытьФорму("Справочник.Районы.ФормаВыбора", Параметры, ЭлементыФормы.Район_рож);
КонецЕсли;
КонецПроцедуры
Для нас -никакой разницы.Что в лоб,что по лбу.Но пользователям-так удобнее.Против этого у нас не попрёшь.Привыкли они так-шаг влево,вправо считается,что
программа не так работает.Долго объяснять...
Да не,в данном конкретном уникальном случае предпочтительнее будет вариант с использованием эмуляции нажатия клавиши F4.
Скрины-шоТЫ:
Настройка связи по владельцу;
Состояние полей ввода до смены области (правильный вариант ввода данных)
Состояние полей ввода после смены области (неправильный вариант ввода данных)
Хивинский район на самом деле принадлежит Хорезмской области:
andrew76 @ Сегодня, 16:07
,
Вот только сейчас понял, что у вас установлен режим быстрого выбора. Тогда можно использовать метод "ВыбратьИзСписка".
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua