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

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

Метки:

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

Я
   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) Еще раз спасибо


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