Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поле ввода подчинённого справочника
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
andrew76
Доброе утро !

Возникла следующая проблема. В конфигурации определены следующие справочники: Области и Районы. Справочник Районов( Районы) подчинён справочнику Областей.
На форме есть 2 поля ввода .1-е поле ввода-области,2-е поле ввода-районы.
В свойствах поля ввода Район –определена связь по владельцу –ОбластьРождения:


При работе пользователя с полями ввода всё в принципе работает, правда только когда пользователь меняет область рождения на другую, список района рождения не обновляется ,остаётся привязанным к предыдущей записи справочника Областей.
Пользователю нужно принудительно выбирать и район рождения. Можно ли как-нибудь после выбора Области принудительно открывать список значений Районов рождения. Это нужно для того , чтобы ввод данных происходил корректно. А то пользователи народ мечтательный и могут этот момент запросто пропустить -получится следующее : район рождения останется привязанным на поле ввода не к своей области.
candrey
Добрый день.

Какая 1С , какой релиз? Оформите тему согласно требованием форума!!!


Принскрин бы улучшил поминание об проблеме.

Прикрутите к полям которые пользователь должен заполнить- контроль на заполнение этого поля+ уведомление пользователя.
Или условие при изменение одного поля проверка второго поля.

Условие при изменение одного поля второе поле очищается (такое не делал но думаю можно).

Тут уже как вам веднее.
Vofka
Я бы в ПриИзменении поля Область просто очищал Район.
andrew76
Платформа : 8.2, релиз 8.2.19.106

Рад бы прикрутить "принтскрины", у нас интернет "несколько" заблокирован (политика ИБ нашей компании).Прикручу их позже-из дома.
Можно ли при Изменении поля ввода Области сэмулировать нажатие клавиши выбора из меню Районов ,предварительно назначив ему (поле ввода Районы)
фокус ввода?
Bernet
Можно конечно, посмотрите как в типовых конфигурациях реализована связка Контрагент-Договор, принцип тот же, при изменении договора, автоматически подставляется контрагент и наоборот, при изменении контрагента договор либо очищается либо если есть основной то подставляется основной.
Petre
andrew76 @ Сегодня, 8:27 необходимо зарегистрироваться для просмотра ссылки ,
Эти поля разве не последовательно идут? Выбрали область, в "ПриИзменении" проверяем заполненность района, если заполнен и не подчинен текущей области, обнуляем. Если все же пользователи ленятся дополнительного нажатия кнопки, сделайте там же обработку выбора района.
andrew76
У меня пока нет возможности ознакомиться с тем, как это сделано в типовых конфигурациях.Поэтому отсебятина :

На поле ввода Область (при изменении) передаю фокус на поле ввода Район.
Фокус передаётся нормально.Осталось узнать- как сэмулировать нажатие клавиши F4?

Процедура Область_рождПриИзменении(Элемент)
    
    ЭтаФорма.ТекущийЭлемент=ЭлементыФормы.Район_рож;

КонецПроцедуры


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

Процедура Область_рождПриИзменении(Элемент)

  ЭтаФорма.ТекущийЭлемент=ЭлементыФормы.Район_рож;  
  Shell= Новый COMОбъект("Wscript.Shell");
  Shell.SendKeys("{F4}");

КонецПроцедуры
Petre
andrew76 @ Сегодня, 9:30 необходимо зарегистрироваться для просмотра ссылки ,
Зачем использовать сторонние объекты, если все можно сделать встроенными средствами, например, как-то так:
Процедура Область_рождПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(Область_рожд) И Район_рож.Владелец <> Область_рожд Тогда
        Район_рож = Неопределено;
        Параметры = Новый Структура;
        Отбор = Новый Структура;
        Отбор.Вставить("Владелец", Область_рожд);
        Параметры.Вставить("Отбор", Отбор);
        ОткрытьФорму("Справочник.Районы.ФормаВыбора", Параметры, ЭлементыФормы.Район_рож);
    КонецЕсли;
    
КонецПроцедуры
andrew76
Можно и так-но так открывается форма Выбора.Тут основная проблема- с пользователями.Если прут окна какие-то ,то их это очень пугает.
В общем "Восток-дело тонкое".

Процедура Область_рождПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(Область_рожд) И Район_рож.Владелец <> Область_рожд Тогда
        Район_рож = Неопределено;
        Параметры = Новый Структура;
        Отбор = Новый Структура;
        Отбор.Вставить("Владелец", Элемент.Значение);  //в вашем варианте ругается-"переменная не найдена-Область_рожд   Отбор.Вставить("Владелец",  Область_рожд);
        Параметры.Вставить("Отбор", Отбор);
        ОткрытьФорму("Справочник.Районы.ФормаВыбора", Параметры, ЭлементыФормы.Район_рож);
    КонецЕсли;
    
КонецПроцедуры
Petre
Цитата(andrew76 @ 28.03.17, 11:33) необходимо зарегистрироваться для просмотра ссылки
Можно и так-но так открывается форма Выбора.Тут основная проблема- с пользователями.Если прут окна какие-то ,то их это очень пугает.

Ок. Проэмулируете вы нажатие "F4" в элементе района. Что по-вашему произойдет? Не окно ли выбора районов откроется? В чем разница?
andrew76
Для нас -никакой разницы.Что в лоб,что по лбу.Но пользователям-так удобнее.Против этого у нас не попрёшь.Привыкли они так-шаг влево,вправо считается,что
программа не так работает.Долго объяснять...
Vofka
Цитата(andrew76 @ 28.03.17, 12:58) необходимо зарегистрироваться для просмотра ссылки
Но пользователям-так удобнее.

Как так? Если в поле ввода нажать Ф4, то открывается форма. Но вы говорите, что форму открывать нельзя, надо нажимать Ф4. icon_revenant7.gif
Petre
Цитата(andrew76 @ 28.03.17, 11:58) необходимо зарегистрироваться для просмотра ссылки
Но пользователям-так удобнее.

Вариант 1. Как реализовываем: после выбора области программно открываем форму выбора района.
Как видит пользователь: открывается форма выбора района.

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

Тут дело не в востоке, а в чем-то более тяжелом, чтобы понять разницу для пользователя... crazy.gif
andrew76
Да не,в данном конкретном уникальном случае предпочтительнее будет вариант с использованием эмуляции нажатия клавиши F4.

Скрины-шоТЫ:

Настройка связи по владельцу;




Состояние полей ввода до смены области (правильный вариант ввода данных)



Состояние полей ввода после смены области (неправильный вариант ввода данных)
Хивинский район на самом деле принадлежит Хорезмской области:





Цитата(andrew76 @ 28.03.17, 18:50) необходимо зарегистрироваться для просмотра ссылки
Тут дело не в востоке, а в чем-то более тяжелом, чтобы понять разницу для пользователя...


Если бы разработчики платформы 1с придумали метод РаскрытьСписок у поля ввода я бы эту тему и не открывал.
Разница для пользователя есть -в этом конкретном уникальном случае с эмуляцией нажатия -вариант изящнее (даже с визуальной точки зрения).

А вообще в першу чэргу-"Восток-дело тонкое..".
Petre
andrew76 @ Сегодня, 16:07 необходимо зарегистрироваться для просмотра ссылки ,
Вот только сейчас понял, что у вас установлен режим быстрого выбора. Тогда можно использовать метод "ВыбратьИзСписка".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.