Вход | Регистрация

Информационные технологии ::

Метки:

Переход к журналу документов из формы документа

Я
   egor
 
19.01.04 - 11:46
В глобальнике прописал процедуру открытия. Все нормально, открывает журнал, хоть общий,хоть по виду документа. Только не позиционирует на конкретном документе. Журнал открывает в интеравале выставленном в параметрах системы и позиционируеться на первой записи. Даже если дата документа затрагивает период открытого журнала.

Если Конт.СравнитьТА()=-2 Тогда
  Предупреждение("Документ не записан!");
Иначе
  ДокументЖурнала = Конт.ТекущийДокумент();
  ОткрытьФорму("Журнал."+Конт.Вид()+".ФормаСписка",ДокументЖурнала);
КонецЕсли;

Что я еще не учел? Неужели в каждом журнале нужно добавлять ПриОткрытии()
 
 
   egor
 
1 - 19.01.04 - 11:49
Извиняюсь, не в тот форум кинул, не поставил 1С
   WhiteCat
 
2 - 19.01.04 - 12:31
Не скажу, что мое мнение абсолютно точное, но именно так тебе и надо поступать. При открытии формы журнала в качестве параметра кидаешь ссылку на документ, а в самой форме пишешь обработку, которая находит этот документ и позиционируется на него
   egor
 
3 - 19.01.04 - 12:38
Ну это было бы нормально если бы открывать в общем журнале. Но представь когда нужен журнал по виду документа. Я еще не много знаю, но может есть что-то вроде "универсал", что-бы из глобальника сразу в форму журнала кидать позиционирование. Хотя если через Форма.Параметр тогда да, в десятке журналах нужно добавлять преопределенныю процедуру
   345
4 - 19.01.04 - 18:55
Хреново читаете ЖКК .... мало думаете ... ничего не просчитываете .. Завтра дерните ветку вверх - выложу процедуру открытия журнала ... Более- менее универсальную ...

сегодня устал ...
   345
5 - 20.01.04 - 09:16
Вот, собственно ... Вставляете в глобальник и юзаете ..
Выполняемые действия - открывается не общий журнал, а журнал именно этого дока... Или дополнительный журнал..
Или задается вопрос про журнал.
Для переделки на общий - упростите... открывая нужную форму. Имя общего - через Metadata.FullJournal

Интервал видимости (нужная граница) дергается, если док вне интервала.

Если форма нужного журнала открыта - передергивается видимость при необходиомсти и курсор встает куда надо... Можно каждый раз открывать новый экземпляр формы ... но необходимости этого не вижу .....


//==================================================
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//\\\\\\\   ОткрЖурнал     \\\\\\\\\\\\\\\\\\\\\\\\\
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//==================================================
procedure ОткрытьЖурналДокумента(Док)     Export
   //-----------------------------------------
   //  открытие журнала и установка курсора на документ в журнале
   //---------------------------------------
   if ValueTypeStr(Док) <> "Документ" then return; endIf;
   if Док.Selected() =0 then return; endIf;
   if Metadata.Document(Док.Kind()).Journal.Selected() = 1 then
       Journal= Metadata.Document(Док.Kind()).Journal.Identifier;
       КонтЖурнала = "";
       OpenForm("Journal."+Journal, КонтЖурнала);
       НИЖ = КонтЖурнала.BegOfRange();
       КИЖ = КонтЖурнала.EndOfRange();
       if Док.ДатаДок < НИЖ then НИЖ = Док.ДатаДок; endIf;  
       if Док.ДатаДок > КИЖ then КИЖ = Док.ДатаДок; endIf;
       КонтЖурнала.SetRange(НИЖ, КИЖ);
       КонтЖурнала.ActivateObj(Док);
   else
       // смотрим список журналов, где есть этот Document
       ВД = Док.Kind();
       СЗ=CreateObject("ValueList");
       for Ин = 1 to Metadata.Journal()  do
           if Metadata.Journal(Ин).ТипЖурнала  = "Дополнительный" then
               if Metadata.Journal(Ин).Состав.Количество() > 0 then
                   for НН = 1 to Metadata.Journal(Ин).Состав.Количество() do
                       if TrimAll(Metadata.Journal(Ин).Состав.Get(НН).Identifier) = ВД then
                           СЗ.Set (Metadata.Journal(Ин).Identifier,Metadata.Journal(Ин).Identifier);
                           Break;
                       endIf;
                   endDo;
               endIf;
           endIf;
       endDo;
       Выбор="";  
       if СЗ.GetListSize() =0 then return; endIf;
       if СЗ.GetListSize() =1 then
           СЗ.GetValue(1, Выбор);
       else
           Выбор=0;  
           поза=0;
           if СЗ.ChooseValue(Выбор, "Выберите журнал",Поза, , 1)  <> 1 then return; endIf;    
       endIf;  
       if Выбор ="" then return; endIf;
       
       Journal = Выбор;              
       КонтЖурнала = "";
       OpenForm("Journal."+Journal, КонтЖурнала);
       НИЖ = КонтЖурнала.BegOfRange();
       КИЖ = КонтЖурнала.EndOfRange();
       if Док.ДатаДок < НИЖ then НИЖ = Док.ДатаДок; endIf;  
       if Док.ДатаДок > КИЖ then КИЖ = Док.ДатаДок; endIf;
       КонтЖурнала.SetRange(НИЖ, КИЖ);
       КонтЖурнала.ActivateObj(Док);
   endIf;
EndProcedure  //ОткрЖурнал
   egor
 
6 - 20.01.04 - 11:53
(5) Спасибо, тоже попробую. А вообще у меня общий журнал с закладками с графами отбора. Вчера наваял через глобальник

ОткрытьФорму("Журнал.ОбщийЖурнал.ФормаСписка",ДокументЖурнала);

А в общем журнале

Док = Форма.Параметр;
ЗакладкиОтбора("КлассД",1,1,Док.КлассДок);
Если (НачалоИнтервала()>Док.ДатаДок)ИЛИ(КонецИнтервала()<Док.ДатаДок) Тогда
   УстановитьИнтервал(НачКвартала(Док.ДатаДок),КонКвартала(Док.ДатаДок));
КонецЕсли;
АктивизироватьОбъект(Док);

где КассД - графа отбора по ОбщемуРеквизитуДокумента.
Пашет на ура.
Теперь еще возник вопрос, активировать кнопку в панель для всех документов. Выложу в другую ветку.
   egor
 
7 - 20.01.04 - 11:55
(5) Еще раз спасибо


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует