8.х открыть форму обработки вместо формы справочника

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем vgv8, 22 май 2008.

  1. TopicStarter Overlay
    vgv8
    Offline

    vgv8 Опытный в 1С

    Регистрация:
    4 сен 2007
    Сообщения:
    80
    Симпатии:
    2
    Баллы:
    29
    В конфигурации-продукте на базе 1С8.0 (которыми я пользуюсь) из
    КонсолиЗапросов.epf (это с диска ИТС "Работаем а программами")
    выполняю запросы (например):
    Код:
    ВЫБРАТЬ
    ХХХ.Ссылка
    ИЗ
    Справочник.ХХХ КАК ХХХ 
    
    
    где ХХХ - названия разных справочников

    Двойной щелчок на ячейке с результатом открывает основную форму одной из обработок (в конфигураторе её форма находися в Обработки ---> Назв-еОднойИзОбработки --> Формы --> "Основная форма обработки: ФормаЭлемента" ) ,
    а не основную ФормаЭлемента справочника ххх.
    Для разных ххх - открывает разную обработку.

    Как это делается:
    - что за событие перехватывается?
    - каким обработчиком?
    - как ассоциируются друг с другом?

    Интересует, как такое можно сделать принципиально
    Любопытно также, зачем такое сделали (не совсем понятно)

    Ну, а потом, как это реализовано в "моей" конфигурации, тоже не могу понять
    Вот, единственный код, что я смог найти по вопросу глобальным поиском в "моей" конфигурации

    Код:
    //Модуль приложения
    Перем глТаблицаОбновляемыхФорм Экспорт;
    
    Процедура ПриНачалеРаботыСистемы()
    //пропущено
    ЗаполнитьТаблицуОбновляемыхФорм();
    //пропущено
    КонецПроцедуры// ПриНачалеРаботыСистемы()
    
    Процедура ЗаполнитьТаблицуОбновляемыхФорм()
    //пропущено
    ДобавитьФорму(Тип("СправочникСсылка.ХХХ"), "ОбработкаХХХ", " ОбработкаХХХ ", 0); //Это я поменял конкретные названия справочника и обработки 
    
    //пропущено
    КонецПроцедуры//ЗаполнитьТаблицуОбновляемыхФорм()
    
    Процедура ДобавитьФорму(ТипЗначения, ИдФормы, ИдТабличногоПоля, ИдУсловия)
    НоваяСтрока = глТаблицаОбновляемыхФорм.Добавить();
    НоваяСтрока.ТипЗначения = ТипЗначения;
    НоваяСтрока.ИдФормы = ИдФормы;
    НоваяСтрока.ИдТабличногоПоля = ИдТабличногоПоля;
    НоваяСтрока.ИдУсловия = ИдУсловия;
    НоваяСтрока.СписокФорм = Новый СписокЗначений;
    КонецПроцедуры// ДобавитьФорму()
    
    Процедура глОбщиеДействияПриОткрытииОбновляемойФормы(ИдФормы, СписокИдТабличныхПолей, Форма) Экспорт
    Для каждого СледующаяТаблица Из СписокИдТабличныхПолей Цикл
    ИдТабличногоПоля = СледующаяТаблица.Значение;
    КоллекцияСтрок = глТаблицаОбновляемыхФорм.НайтиСтроки(Новый Структура("ИдФормы, ИдТабличногоПоля", ИдФормы, ИдТабличногоПоля));
    Для каждого СледующаяСтрока Из КоллекцияСтрок Цикл
    СписокФорм = СледующаяСтрока.СписокФорм;
    Если СписокФорм.НайтиПоЗначению(Форма) = Неопределено Тогда
    СписокФорм.Добавить(Форма);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры// глОбщиеДействияПриОткрытииОбновляемойФормы()
    
    
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Смотри, что пррписано в процедуре перед/при открытии формы элемента.
  3. TopicStarter Overlay
    vgv8
    Offline

    vgv8 Опытный в 1С

    Регистрация:
    4 сен 2007
    Сообщения:
    80
    Симпатии:
    2
    Баллы:
    29
    Гы, так просто...
    Спасибаааа!!!!!

    Там в модуле ФормаЭлемента почти каждого справочника
    Код:
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Если Регистратор=Неопределено Тогда
    Отказ=Истина;
    ФормаГруппы=Ссылка.ПолучитьФорму("ФормаГруппы");
    флОткрыть=Истина;
    Если ФормаГруппы.Открыта() Тогда
    Если ФормаГруппы.МодальныйРежим=ЭтаФорма.МодальныйРежим Тогда
    флОткрыть=Ложь;
    ФормаГруппы.Активизировать();
    КонецЕсли;
    КонецЕсли;    
    Если флОткрыть Тогда
    Если ЭтаФорма.МодальныйРежим Тогда
    ФормаГруппы.ОткрытьМодально();
    Иначе    
    ФормаГруппы.Открыть();
    КонецЕсли;
    КонецЕсли;
    Возврат;
    КонецЕсли;
    глПриОткрытииФормыЭлемента(ЭтотОбъект);
    Отказ = Истина;
    КонецПроцедуры
    
    
    идёт перенаправление на процедуру общего модуля глПриОткрытииФормыЭлемента(ЭтотОбъект);

    Ещё бы понять - зачем так извращаться

Поделиться этой страницей