#0
by sournk
Как отловить следующие интерактивные события в форме списка справочника с редактированием элементов в диалоге: - открытия существующего элемента справочника, - создания нового элемента справочника, - удаления и установки/снятия пометки удаления элемента. ?
#2
by sournk
Универсально вести список часто используемых элементов для форм списков любых справочников.
#3
by Фокусник
Возможно, было бы достаточно в ПриОткрытии формы элемента фиксировать факт открытия этого элемента (вид справочника, элемент, количество открытий). Здесь, наверное важнее, придумать КУДА фиксировать этот "факт открытия", а также как-то учитывать частоту открытия (а не просто количество открытий) :) А зачем пометки удаления, создания новых фиксировать?
#4
by sournk
Ну пометки удаления может и не нужно. Это так для кучи. Алгоритм определения оптимальности списка часто открываемых можно выдумать вообще любой, куда писать тоже не сложно выбрать. Сейчас техническая проблема как раз избежать редактирования кода всех форм элементов для тех справочников, в чьих формах списков будет использоваться этот лист часто открываемых элементов.
#7
by sournk
По пометки удаления: Возможно для некоторых справочников объекты, с которых сняты пометки удаления будут помещаться в список. Если надо будет применить этот инструмент в пяти конфах и хотя бы пяти справочниках в каждой, то действительно лениво еще и код формы каждого элемента лопатить. Да и архитектурно как-то криво. Если уж код формы списка менять по-любому, то им бы и ограничиться и не плодить лишнего.
#8
by Фокусник
"Сейчас техническая проблема как раз избежать редактирования кода всех форм элементов для тех справочников, в чьих формах списков будет использоваться этот лист часто открываемых элементов." ИМХО, в правильной конфигурации в каждом ПриОткрытии формы элемента должен быть вызов глобальной процедуры. А в форме списка зачем определять факт открытия, я так и не понял :)
#10
by PZh
Можно сделать так: 1. Новые определять с помощью таблички _1SUIDCTL (запоминать последний ID справочника - соответственно все после него это новые, пишется при открытии формы списка и перед началом работы того алгоритма, который эту инфу использует) 2. (Тут правда понадобиться глобальная переменка и процедурка). Пометку удаления и открытие отслеживать через обработку ожидания (только не стандартную, а 1cpp, FormEx). Старт обработки и передачу текущего элемента повесить на события нажатия клавы и мыши в форме списка (текущий элемент передавать через глобальную переменку). Открытие определять командой Блокировка А если серьезно, то пункт 2 лучше сделать через ПриОткрытии и ПриУдаленииЭлемента. Можно инсталятором вставлять свои код, всю логику вынося в глобальные процедуры или в отдельную обработку.
#16
by ADirks
Надо мониторить: События в форме списка ПриНачалеРедактированияСтроки ПриЗаписи События в форме элемента (тоже надо мониторить) ПриОткрытии ПриЗаписи Установка / снятие пометки удаления - штатно, в ГМ тип прилетевшего в событие контекста определяется FormEx'ом как
#17
by sournk
Ни одно из событий ПриНачалеРедактированияСтроки, ПриЗаписи не вызывается в ФОРМЕ СПИСКА С РЕДАКТИРОВАНИЕМ ЭЛЕМЕНТОМ В ДИАЛОГЕ.
#19
by sournk
Как сказано выше, задача сделать это именно в форме списка, без внесения изменений в код форм элементов.
#20
by Ёпрст
еще раз вниматочно читаем, для чего нужен класс.Перехватчик. На основе него сто лет в обед сделан контроль прав на объекты. Пасёт всё, все события. Ничего "дописывать" куда либо не надо.
#21
by ADirks
А мне показалось, что ты хотя бы глянул, чё за перехватчик такой. Оказалось показалось.
#22
by sournk
Я и пытаюсь Перехватчиком получить обработку этих событий, но как отловить именно нужное мне событие не могу найти. Отлично перехватываются как раз предложенные ПриНачалеРедактированияСтроки и даже ОбработкаВыбораЗначения, но это все не те события.
#25
by sournk
в хелпе нашлось тока 1. Необходимо использовать пользовательский класс 1С++, в котором должны быть определены обработчики соответствующих событий с названием события (ПриЗакрытии, ПриНачалеВыбораЗначения, ПриНажатииКнопкиКлавиатуры) или со специальным названием в виде Событие_НаименованиеСобытия (Событие_ПриЗакрытии, Событие_ПриНачалеВыбораЗначения, СобытиеГМ_ПриНажатииКнопкиКлавиатуры)
#26
by Ёпрст
Если ты не знаком с методами работы со справочников, то для начала - спрашивать нужно мужика в кепке в пофигураторе. А уж потом, тута
#27
by Ёпрст
Если что, есть предопределенные методы как формы списка, так и формы элемента. И ВводНового, в форме элемента, никто не отменял, как и ПриВводеСтроки , если редактирование в списке
#28
by Ёпрст
Перехватчик позволяет перехватить все предопределенные события, понять, где оно вызвано, можно через полныйТипОбъекта, например.
#29
by sournk
Вы наверное меня не верно поняли. 1. Нет в форме списка предопределенной процедуры на простое открытие существующего элемента. 2. Формы элементов я править не могу. 3. В Перехватчике каких-то дополнительных событий, позволяющих как-то отловить открытие элемента я тоже не нашел.
#30
by Ёпрст
да уж... к мужику в кепке то ходил ? Спрашивал ? :))) Про перехватчик тоже смотрю, ничего не читал. Там если чего, мд-ник вообще можно не править.
#32
by Ёпрст
Если че, ПриОткрытии (в форме элемента) и ПриНачалеРедактированияСтроки в форме списка , это ежели элемент справочника ужо есть
#33
by sournk
Вы сами-то пробовали??? 1. Событие ПриНачалеРедактированияСтроки не возникает при открытии элемента в форме списка! 2. А событие ПриОткрытии формы элемента может возникать не только при открытии из формы списка, поэтому обработать открытие именно из нее не получается.
#34
by sournk
Ясно дело, что я Перехватчиком подписался на события ПриНачалеРедактированияСтроки и ПриОткрытии и не правлю кода форм. Дело не этом. А в том, что правильно нужные события не обработать.
#35
by sournk
Более того, для обработки ПриОктрытии нужен контекст формы элемента. А где его взять в модуле формы списка?
#38
by Ёпрст
При редактировании в списке - ПриНачалеРедактированияСтроки , при редактировании в диалоге - ПриОткрытии у ФОРМЫ ЭЛЕМЕНТА. Что тут может быть не яссного вообще ?
#40
by sournk
Еще раз: ПриНачалеРедактированияСтроки не вызывается при открытии элемента. Подписываемся на события. оКонтекстФормы - форма списка справочника: Код в классе оОбрботчкикПерехвата: При открытии элемента из формы списка событие ПриНачалеРедактированииСтроки не вызывается. Что тут не так?
#42
by Ёпрст
Лень объяснять, что есть события глобального контекста и локального, и что перехватывать надо и там и там, смотри сам: подключать так:
#43
by sournk
Зачем объяснять разницу между глоб. и локальным контекстом. Локальный выбран не случайно. Т.к. в конфе может быть зареган уже обработчик глобального модуля. Да и к сути вопроса никакого отношения не имеет. Даже если повесить все на глобальный контекст, то проблема не решается. Остается открытым вопрос №2 из , потому что даже в вашей реализации "Событие_ПриОткрытии Справочник.Номенклатура.Форма" вызывается как и при открытии элемента из формы списка, так и при ОткрытьФорму(Элемент) из любого другого места. Последнее мне не нужно! Интересует ТОЛЬКО из формы списка.
#47
by ADirks
Вообще-то ПриОткрытии есть ещё у документов, их журналов, отчётов, обработок ... Яж говорю: тип прилетевшего в событие контекста определяется FormEx'ом как оФорма = СоздатьОбъект("РасширениеФормы");
#49
by Ёпрст
он хочет отличать открытие формы из списка от програмного открытия формы откуда угодно, про врят ли догонит.. :)
#52
by sournk
Оказывается, ПриВыбореСтроки даже при Форма.ОбработкаВыбораСтроки срабатывает, если дважды мышью ткнуть на элемент или нажать Enter, но не срабатывает, если нажать на панели кнопку открытия элемента.
#53
by sournk
Тип вернет "Справочник.Номенклатура.Форма" в любом случае, что при открытии элемента из формы списка, что при открытии его например из кода какой-нить обработки через ОткрытьФорму, например.
#54
by Ёпрст
:) в ПредОпределенных ПриРедактированииСтроки/ПриРедактированииНовойСтроки тупо ОткрытьФорму с параметром (либо существующего элемента, либо нового) + статусВозврата. Усё.
#55
by Ёпрст
в ПриОткрытии/ВводНового смотреть форма.параметр - если то че надо - радуемся, что открыли с нужной формы списка.
#56
by Ёпрст
и всё это, можно прописать в перехватчике, чтоб мд не менять (ну окромя "редактирования обеими способами")
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Открытие формы из формы в 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- В чем отличие формы элемента справочника от произвольной формы справочника?
- Управляемые формы: открытие другой формы для того же объекта "Отчет"
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Как узнать владельца формы списка справочника, в модуле этой формы списка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: Неизвестный формат файла - программное открытие xlsx в Excel2003
В этой группе 1С
- Розница, шаблон чека ККМ, можно ли использовать условия в шаблоне?
- OFF: Мы все с вами - воры?
- #Если Клиент Тогда. Можно ли просто убрать из модуля внешней печатной формы?
- Сбиваются настройки принтера
- Запуск обработки удаленно
- Галка Использовать фильтр выборочной регистрации объектов
- 1С:Оценка персонала - не запускается тестирование
- Тонкий клиент 8.2. Как ПРОГРАММНО добавить команду на панель навигации формы?
- Как изменить цвет фона чередования строк в динамическом списке
- ADODB.Recordset
- <faultstring>Неверный аргумент. </faultstring> при удалении xdto пакета
- Ошибка при печати Чека ККМ (УТ 11.0) - помогайте разобраться...
- договор 1С:Франчайзи
- КД: как в ПКО в Поля Поиска передать параметр (источник 7.7)
- Обновление драйвера АТОЛ
- Отбор в форме выбора ПВХ по полю типа значения
- БП. Помогите с запросом. Необходимо получить остатки номенклатура на всех счетах
- Контроль отрицательных остатков при проведении требования - накладной
- v7: ТабличноеПоле: Вылетает 1С при исполнении метода "ПриВыбореФлажка"
- Как заблокировать отбор в СКД