| 
    
        
     
     | 
    
    
  | 
Получить форму по элементу управления | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        maxp77    
     09.10.14 
            ✎
    12:56 
 | 
         
        Задача:
 
        в одной из типовых функций УПП: - УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати; - УниверсальныеМеханизмы.УстановитьПодменюПечати; - УниверсальныеМеханизмы.УстановитьПечатьПоУмолчанию по передаваемому в них элементу управления "ЭлементыФормы.ОсновныеДействияФормы" определять конкретную форму, на которой этот элемент управления расположен. Как?  | 
|||
| 
    1
    
        maxp77    
     09.10.14 
            ✎
    14:31 
 | 
         
        up     
         | 
|||
| 
    2
    
        maxp77    
     09.10.14 
            ✎
    16:26 
 | 
         
        up     
         | 
|||
| 
    3
    
        ssh2QQ6    
     09.10.14 
            ✎
    16:39 
 | 
         
        Раз это ОсновныеДействияФормы, то вероятно источник действий командной панели, а это видимо командная панель - Форма. Можно ее получить через свойство элемента ИсточникДействий     
         | 
|||
| 
    4
    
        maxp77    
     09.10.14 
            ✎
    16:41 
 | 
         
        (3) ИсточникДействий в таком случае = Неопределено, это только в конфигураторе в палитре свойств для источника действий будет написано "форма". Не подходит.     
         | 
|||
| 
    5
    
        maxp77    
     09.10.14 
            ✎
    16:43 
 | 
         
        пробовал даже через метод ПолучитьПривязку() для командной панели добраться до формы, но он к сожалению панель формы возвращает, а не саму форму.     
         | 
|||
| 
    6
    
        ssh2QQ6    
     09.10.14 
            ✎
    16:44 
 | 
         
        (4) да, не подходит     
         | 
|||
| 
    7
    
        SeiOkami    
     09.10.14 
            ✎
    17:00 
 | 
         
        (0), не понимаю проблемы глянуть процедуру     
         | 
|||
| 
    8
    
        maxp77    
     09.10.14 
            ✎
    17:10 
 | 
         
        (7) в обработчике ПередОткрытием() формы документа вызывается процедура общего модуля
 
        УниверсальныеМеханизмы.УстановитьПодменюПечати (мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов); В этой процедуре требуется определять, что за форма её вызвала по переданному элементу управления ЭлементыФормы.ОсновныеДействияФормы. сама процедура: Процедура УстановитьПодменюПечати(ПодменюПечати, КоманднаяПанель, ДеревоМакетов) Экспорт Если ДеревоМакетов.Строки.Количество() > 1 Тогда ИмяПодменю = "ПодменюПечати"; Если ПодменюПечати = Неопределено Тогда Если КоманднаяПанель.ВыравниваниеКнопок = ВыравниваниеКнопокКоманднойПанели.Право Тогда КоманднаяПанель.Кнопки.Вставить(0,,ТипКнопкиКоманднойПанели.Разделитель); ПодменюПечати = КоманднаяПанель.Кнопки.Вставить(0,ИмяПодменю,ТипКнопкиКоманднойПанели.Подменю,"Печать"); Иначе КоманднаяПанель.Кнопки.Добавить(,ТипКнопкиКоманднойПанели.Разделитель); ПодменюПечати = КоманднаяПанель.Кнопки.Добавить(ИмяПодменю,ТипКнопкиКоманднойПанели.Подменю,"Печать"); КонецЕсли; ПодменюПечати.Подсказка = "Меню выбора печатных форм"; КонецЕсли; Иначе Если ПодменюПечати <> Неопределено Тогда КоманднаяПанель.Кнопки.Удалить(ПодменюПечати); ПодменюПечати = Неопределено; КонецЕсли; КонецЕсли; КонецПроцедуры  | 
|||
| 
    9
    
        hhhh    
     09.10.14 
            ✎
    17:13 
 | 
         
        (8) "В этой процедуре требуется определять, что за форма её вызвала" - здесь не требуется форма. Без формы всё.     
         | 
|||
| 
    10
    
        hhhh    
     09.10.14 
            ✎
    17:14 
 | 
         
        (9)+ а, понял.     
         | 
|||
| 
    11
    
        hhhh    
     09.10.14 
            ✎
    17:21 
 | 
         
        у меня таки
 
        Фрм = КоманднаяПанель.ИсточникДействий; Если ТипЗнч(Фрм) = Тип("Форма") Тогда срабатывает. не знаю, почему у вас не пашет.  | 
|||
| 
    12
    
        maxp77    
     09.10.14 
            ✎
    17:31 
 | 
         
        (11) вы этот код в каком модуле пишете?
 
        Вообще, даже в СП написано: "Если значение свойства Неопределено, то источниками данных будет являться форма и все элементы управления, которые могут выступать в качестве источника действий."  | 
|||
| 
    13
    
        maxp77    
     09.10.14 
            ✎
    18:03 
 | 
         
        Есть ещё идеи?     
         | 
|||
| 
    14
    
        DailyLookingOnA Sunse    
     09.10.14 
            ✎
    18:06 
 | 
         
        Перебирать все метаданные в поисках формы, в которой есть элемент со свойствами, равными исходным.     
         | 
|||
| 
    15
    
        maxp77    
     09.10.14 
            ✎
    18:30 
 | 
         
        (14) Жестоко, но это в лучшем случае позволит только найти метаданные формы, но не получить экземпляр конкретной формы, т.к., например, документов одного типа может быть открыто сразу несколько.     
         | 
|||
| 
    16
    
        hhhh    
     09.10.14 
            ✎
    19:00 
 | 
         
        (12) значение свойства там у командной панели Форма. Откуда неопределено может взяться?     
         | 
|||
| 
    17
    
        Фокусник    
     09.10.14 
            ✎
    19:02 
 | 
         
        Придется ждать, когда в платформе приделают .Владелец() для реквизита формы, как это сделали со строкой ТЗ/ДЗ :)     
         | 
|||
| 
    18
    
        maxp77    
     09.10.14 
            ✎
    22:02 
 | 
         
        (16) код в студию, пожалуйста :) В УПП и в ЗУП неопределено возвращает в типовых документах. Возможно, это как-то связано со свойством командной панели Автозаполнение, там оно сброшено.     
         | 
|||
| 
    19
    
        maxp77    
     09.10.14 
            ✎
    22:04 
 | 
         
        (17) ждать нет времени, нужно изобретать велосипед :)     
         | 
|||
| 
    20
    
        maxp77    
     11.10.14 
            ✎
    19:54 
 | 
         
        (17) может быть это как-то взаимосвязано с ошибкой платформы
 
        https://bugboard.v8.1c.ru/error/000002126.html "В клиент-серверном варианте информационной базы в обычном приложении при получении или открытии обычных форм внешних обработок вместо формы возвращается значение Неопределено." Надо бы на последнем релизе платформы проверить.  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |