Текущий активный элемент управляемой формы
После обновления на 8.3.5 перестал работать метод установки активного элемента на управляемой форме.
Как позиционировать программно на нужном поле в релизе 8.3.5?
Клиент серверный режим
ЭтотОбъект.ТекущийЭлемент ПолеФормы ПолеФормы
Имя «ШтрихкодСотрудника» Строка
Кнопка «Продолжить отладку»
и тут же перескакивает курсор на другое поле .
P.S. на 8.3.4 тоже самое только после «Продолжить отладку» курсор на поле «ШтрихкодСотрудника»
PP.SS. проверяю в клиент серверном режиме. Позже проверю в файловом режиме
При изменении поля «ШтрихкодСотрудника» то перескакивает
Если же добавить кнопку и там добавить код
то курсор перемешается в поле «ШтрихкодСотрудника»
Как бы работает на 8.3.5. Но на 8.3.4 работает и при изменении поля «ШтрихкодСотрудника»
Буду думать как сделать тогда иначе
т.е. данный код НЕ работает на 8.3.5 в событии при изменении этого поля, на 8.3.4 работает
Думаю это связано со свойством формы. Параметр «ПоведениеКлавишиEnter» — «Переход по элементам»
Вопрос решил
К полю «ШтрихкодСотрудника» добавил кнопку «Найти» — установил флаг для кнопки «[Х] КнопкаПоУмолчанию»
В форме обработки задал параметр «ПоведениеКлавишиEnter» — «Кнопка по умолчанию»
При изменении кнопки «Найти» добавил код
Теперь при изменении поля «ШтрихкодСотрудника» и нажатии кнопки «Enter» ищет и позиционируется всегда в поле «ШтрихкодСотрудника»!
Источник
1С 8.x : Форма
Как активизировать, перевести фокус на необходимый элемент на форме?
Похожие FAQ
Еще в этой же категории
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Поле выбора
Как ограничить список выбора? 8
Ограничим список элементов, установив отбор в открываемой форме //Пример 1 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка) ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент); ЭлементОтбораВидПДР = Форма Реквизит
Как сохранять и восстанавливать значения реквизитов на форме? 6
Как в Управляемом Приложении настроить автосохранение значений полей формы? Заходим в свойства формы и для значения АвтоматическоеСохранениеДанныхВНастройках устанавливаем значение » Использовать» : https://helpf.pro/uploads/img/_1-N3jf1dnRut.png Форма
Программное добавление элементов на форму 6
ЭлементыФормы (Controls) . Добавить (Add) — Добавляет элемент управления на форму. Синтаксис: Добавить( Тип , Имя , Видимость , ПоместитьНа ) Параметры: Тип (обязательный) Тип: Тип. Тип добавляемого элемента управления: Индикатор; П Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Источник
Не отображается элемент формы
1С программа которая есть абсолютно в каждой организации. Как и все в нашем мире она не совершенна. Типовые конфигурации не всегда отвечают всем требованиям предприятий. Поэтому очень часто их дорабатывают дописывают сторонние программисты. Вот после таких доработок можно столкнуться с проблемой. Когда на форме не видно какого либо элемента. Давайте расскажу вам как можно исправить данную ситуацию и сделать так чтобы все элементы отображались.
И так что делать если у пользователей не отображается какой либо элемент на форме. Для начала нужно войти в 1С под администратором и если у него все ОК, проверяем настройки видимости.
На форме не видно элемент
Для примера возьму один самописный документ. Пользователь открывает его и не видит поле «Подразделение».
Открываем конфигуратор, ищем этот документ, открываем его форму и кликаем на элементе который не отображается ПКМ и выбираем «Свойства».
В окне свойств ищем пункт «Пользовательская видимость» открываем. В настройка видимость отмечаем пункт «Видимость».
Закрываем сохраняем и обновляем конфигурацию. Обязательно нужно перезайтив в 1С чтобы увидеть изменения.
Источник
Не меняет ТекущуюСтроку в ТабличномПоле УПП Редакция1.3
Подскажите, как можно сменить ТекущуюСтроку в ТабличномПоле?
Данные: ДеревоЗначений.
Я создаю новый узел дерева (1 уровень), затем создаю новый узел дерева 2 уровня. И после того, как я закончил запись, я хочу чтобы курсор приняв положение на родителя узла.
В процедуре ПередОкончаниемРедактирования (ПриОкончаниемРедактирования также пробовал)
РодительТекущейСтроки = ?(мТекущаяСтрока.Родитель = НеОпределено, ДеревоЗапросов, мТекущаяСтрока.Родитель);
Если мТекущаяСтрока.Родитель = НеОпределено Тогда
Иначе
РодительТекущейСтроки = мТекущаяСтрока.Родитель;
ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ;
КонецЕсли;
Нашел где-то, что надо вставить перед
ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ;
вот это ЭлементыФормы.ДеревоЗапросов.ЗакончитьРедактированиеСтроки(Ложь);
Но мне это не помогло
В процедуре ПередОкончаниемРедактирования (ПриОкончаниемРедактирования также пробовал)
Либо ничего не делает или Ошибка при установке значения атрибута контекста (ТекущаяСтрока): Невозможно изменить текущую строку
Но если взять ячейку поля и при ОкончаниеВводаТекста сделать все то же, то работает:
Процедура ДеревоЗапросовЦенаОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
РодительТекущейСтроки = ?(мТекущаяСтрока.Родитель = НеОпределено, ДеревоЗапросов, мТекущаяСтрока.Родитель);
Если мТекущаяСтрока.Родитель = НеОпределено Тогда
Иначе
РодительТекущейСтроки = мТекущаяСтрока.Родитель;
ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ;
КонецЕсли;
КонецПроцедуры
Но меня такое не устраивает. Помогите пожалуйста решить эту проблему. Буду очень благодарен. Спасибо за понимание!
Источник
Как программно получить текущий элемент управления (обычное приложение) ?
Если размещать на панели интерфейса такую кнопку, то ты никак не получишь нужное тебе табличное поле.
Ну во-первых количество открытых окон с отчетом, может быть много и выбрать нужное из них не получится, поскольку тебе потребуется конкретная активная форма, а как только ты нажмешь на кнопку на панели — окошко с формой перестанет быть активным.
Во-вторых, получить или установить активное окно в 1С-ке отсутствует (самому однажды такой финт нужен был).
Думаю единственный способ, КАЖДОЙ открытой форме (при ее открытии) устанавливать идентификатор уникальности и хранить этот список где-то.
Дальше, хранить где-то идентификатор текущей формы (последней активной формы).
При нажатии на кнопку получать идентификатор последней активной формы и получать эту самую форму по идентификатору, а там уже получив форму проблем не будет.
Думаю, финт с калькулятором реализован на уровне платформы (платформа же хранит список открытых окон и позволяет переслючиться между ними)
Смотря как выводится печатная форма. Если через стандартный механизм печати, то она имеет форму — тут проблем с идентификатором нет. А вот если просто выводить табличный документ — согласен, фигня получается.
Вся фигня в том, что штатного механизма для работы с окнами нет в 1С-ке. Поэтому и получается, что нужно всякую фигню выдумывать.
(12) antidot_alf, если не найду норм решения — соберу инфу какие из самые нужные и сделаю для них.
У кого есть идеи — можите советовать.
можно даже не только читать его, а и устанавливать.
(22) mpudy, (23) unoDosTres, Да собственно и перебор нам не нужен.
По-началу думал, что список этих форм нужен будет, на деле получается что нет.
ГП — глобальная переменная
1. При открытии формы
— однозначно запихивать ее в ГП;
— подключить обработчик ожидания (для проверки формы на активность) — если форма активна, переприсваивать эту форму ГП;
2. При закрытии формы
— однозначно очищать ГП
Правда некоторое время ГП будет равна «Неопределено»
Если взять со списком, то будет практически то же самое.
1. При открытии формы
— однозначно запихивать ее в ГП;
— заносить ее в список значений (глобальная переменная с типом список значений, для хранения открытых окон)
2. При закрытии формы
— очищать ГП
— удалять из списка значений закрывшуюся форму
— заносить в ГП «новую» активную форму
3. При переключении между формами
— перезаписывать значение ГП в соответствии с активной формой
(данную возможность можно попробовать реализовать на обработчике ожидания)
Сделать глобальную переменную приложения, в нее сохранять текущий элемент, сохранять в функции печать_особая, которая будет являться функцией фабрикой для печати (для внешних печь форм уже есть)
Функция Печать(Объект. ) Экспорт
глобальнаяПеременная = Объект.Печать();
Возврат глобальнаяПеременная;
КонецФункции;
Если же это очень проблматично, нужно уже решать проблему внешними средствами длл и прочими.
П.С. протупил вопрос, но на вскидку пришло на ум , сделать глобальную форму печатных документов, где множить вкладки с табличными документами
Тогда и кнопку отправки лепить на эту же форму (и не нужно будет определять активную форму), а не на панель интерфейса.
Вся фигня в том, что кнопка должна быть расположена не в форме, а именно в интерфейсе . И как только пользователь нажмет на кнопку, активная форма, а вместе с ней и текущий элемент, исчезнут.
Глобальная переменная для текущей (активной) формы — это то откуда можно будет получить тот самый текущий элемент, а вот как запихнуть в эту переменную форму, которая была открыта еще фиг знает когда и только сейчас пользователь на нее переключился и желает распечатать или отправить что-то именно из этой формы.
Ну например:
Пользователь открывает формы в следующем порядке (это важно):
1. «Форма 1».
2. «Форма 2».
При открытии каждой из эти форм в глобальную переменную заносится, скажем, форма целиком.
На текущий момент активная форма — это «Форма 2», такое же значение и в глобальной переменной.
А теперь давай переключимся на «Форму 1» — как отловить то, что теперь активной является «Форма 1» и в глобальную переменную нужно занести «Форма 1»?
Думаю, можно попробовать подпиской на событие определить, но подписка должна быть в каждой форме.
Источник