Имя: Пароль:
1C
1С v8
Как подменить основную форму документа на ее копию и заполнить копию по условию
0 ultrannge89
 
11.04.14
12:45
Конфигурация Зарплата 2.5 имеется свой интерфейс в котором прописана ссылка на форму списка документа ТабельУчетаРабочегоВремени. Мне нужно чтобы при создании нового документа или при правке существующего открывалась не основная форма, а копия, в которой я кое-что поправил.
Пробовал несколькими методами, но не получается.
Остановился на том что для ФормаСписка1 прописал следующие процедуры:

Процедура ДокументСписокПередНачаломДобавления(Элемент, Отказ, Копирование)
    
    ТекущийПользователь = ИмяПользователя();
    
    Если ПустаяСтрока(Текущийпользователь) Тогда
        Сообщить("Текущий пользователь в базе не зарегистрирован");
        Отказ = Истина;
    КонецЕсли;
    ПользовательСсылка = Справочники.Пользователи.НайтиПоНаименованию(Текущийпользователь);
    
    
    МетаданныеДокумента = Метаданные.Документы.ТабельУчетаРабочегоВремениОрганизации;    
    Если Не ПравоДоступа("ИнтерактивноеДобавление", МетаданныеДокумента) Тогда
        Предупреждение("Нарушение прав доступа!");
        Возврат;
    КонецЕсли;
    
    ФормаНовогоДокумента = ПолучитьФорму("Документ.ТабельУчетаРабочегоВремениОрганизации.Форма.ФормаДокумента1");
    
    Если ЭлементыФормы.Организация <> Неопределено И МетаданныеДокумента.Реквизиты.Найти("Организация") <> Неопределено Тогда
        Если ТипЗнч(ФормаНовогоДокумента) = Тип("Форма") Тогда
            ФормаНовогоДокумента.Организация = ЭлементыФормы.Организация;
        Иначе // Управляемая форма
            ФормаНовогоДокумента.Объект.Организация = ЭлементыФормы.Организация;
        КонецЕсли;
    КонецЕсли;
    
    ФормаНовогоДокумента.ЗакрыватьПриЗакрытииВладельца = Ложь;
    ФормаНовогоДокумента.Открыть();
    
КонецПроцедуры

Процедура ДокументСписокПередНачаломИзменения(Элемент, Отказ)
    

    СсылкаНаДокумент = ЭлементыФормы.ДокументСписок.ТекущаяСтрока.Ссылка;
    ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект();
    ФормаДок = ДокОбъект.ПолучитьФорму("ФормаДокумента1");

    ФормаДок.Открыть();
    Отказ = Истина;


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



При этом понял что формадокумента1 все равно не открывается, даже без Отказ = Истина, открывается просто две копии ФормаДокумента
1 ultrannge89
 
11.04.14
12:53
Ой, сорри затупил, все работает.
2 ultrannge89
 
11.04.14
12:54
Проблема была в том что я отслеживал тали эта форма переименовывая заголовок надписи Организация в Организация1111 , а она глубоко в коде преобразовывалась обратно :)