![]() |
|
v7: Создание Нового Журнала Документов | ☑ | ||
---|---|---|---|---|
0
Popkorm
23.04.12
✎
10:40
|
Создаю новый журнал с отбором по одной фирме.При открытие вываливаются все документы,хотя условие наложенно по одной фирме,вот процедуры:
Процедура ПриОткрытии() ПриОткрытииИЛИПереоткрытииЖурнала("Открытие"); // будем отслеживать только реальные изменения этих реквизитов Форма.ВидОтбора.ВыполнятьФормулуТолькоПриИзменении(1); КонецПроцедуры Процедура ПриОткрытииИЛИПереоткрытииЖурнала(Режим) // запомним документ основание для формы журнала подчиненных документов ДокументОснованиеЖурнала = ПодчинениеДокументу(); Если Режим="Открытие" Тогда ТекДок = ВосстановитьЗначение("ТекДок"); // Позиционируемся на последнем документе Если ПустоеЗначение(ТекДок)=0 Тогда Если ТекДок.Фирма.Код = "00003" Тогда ТекДок = ?(ПустоеЗначение(ТекДок)=1, ПолучитьПустоеЗначение("Документ"), ТекДок); //Заполним список действий по кнопке "Действия" СписокДействий.УдалитьВсе(); СписокДействий.ДобавитьЗначение("Отчет о движениях документа"); СписокДействий.ДобавитьЗначение("Отчет о бухгалтерских проводках"); СписокДействий.ДобавитьЗначение("Структура подчиненности"); СписокДействий.ДобавитьЗначение("Ввести на основании"); Если ТипЗначенияСтр(ДокументОснованиеЖурнала) = "Документ" Тогда // форма журнала подчиненных документов Форма.Заголовок("Журнал подчиненных документов к документу " + глПредставлениеДокумента(ДокументОснованиеЖурнала)); // Погасим реквизиты отбора Форма.ТекстБыстрыйОтбор. Видимость(0); Форма.ВидОтбора. Видимость(0); Форма.кнЗначение. Видимость(0); Форма.ТекстЗначенияОтбора.Видимость(0); // менять время документов и распечатывать реестр в журнале подчиненных считаем не нужным Форма.кнВремя. Доступность(0); Форма.кнРеестр.Доступность(0); Иначе // Обычная форма журнала СписокДействий.ДобавитьЗначение("Скопировать в..."); Форма.Заголовок("",1); // Определение был ли быстрый отбор ТекСтр = ВосстановитьЗначение("ВидОтбораЖурнала"); ТекСтр = ?(ПустоеЗначение(ТекСтр)=1, 1, ТекСтр); ВидОтбора.ТекущаяСтрока(ТекСтр); ПриОбычномОткрытииЖурнала(); КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли Режим="Переоткрытие" Тогда ТекДок = ТекущийДокумент; КонецЕсли; Если ПустоеЗначение(Форма.Параметр)=0 Тогда Если ВРег(ТипЗначенияСтр(Форма.Параметр))="ДОКУМЕНТ" Тогда // НАДО ПОЗИЦИОНИРОВАТЬСЯ НА ЭТОМ ДОКУМЕНТЕ Док = Форма.Параметр.ТекущийДокумент(); Если Док.Выбран()>0 Тогда ТекДок = Док; // Если документ не попадает в текущий интервал журнала, то изменим интервал ДатаНач = Мин(НачалоИнтервала(), Док.ДатаДок); ДатаКон = Макс(КонецИнтервала(), Док.ДатаДок); УстановитьИнтервал(ДатаНач,ДатаКон); // Надо сделать так, чтобы условия отбора удовлетворяли данному документу ОтборПо = ВидОтбора.ПолучитьЗначение(ВидОтбора.ТекущаяСтрока()); Если ВидОтбора.ТекущаяСтрока() > 1 Тогда // есть быстрый отбор Если ОтборПо = "по контрагенту" Тогда Если глЕстьРеквизитШапки("Контрагент", ТекДок.Вид()) = 1 Тогда КонтрагентДляОтбора = ТекДок.Контрагент; Иначе ВидОтбора.ТекущаяСтрока(1); // снимаем быстрый отбор КонецЕсли; ИначеЕсли ОтборПо = "по виду документов" Тогда ВидДокументаДляОтбора = СписокВидовДокументов.НайтиЗначение(ТекДок.Вид()); СписокВидовДокументов.ТекущаяСтрока(ВидДокументаДляОтбора); ИначеЕсли ОтборПо = "по автору" Тогда АвторДляОтбора = ТекДок.Автор; // общий реквизит документов ИначеЕсли ОтборПо = "по фирме" Тогда ФирмаДляОтбора = ТекДок.Фирма; // общий реквизит документов ИначеЕсли ОтборПо = "по юр. лицу" Тогда ЮрЛицоДляОтбора= ТекДок.ЮрЛицо; // общий реквизит документов ИначеЕсли ОтборПо = "по складу" Тогда Если глЕстьРеквизитШапки("Склад", ТекДок.Вид()) = 1 Тогда СкладДляОтбора = ТекДок.Склад; Иначе ВидОтбора.ТекущаяСтрока(1); // снимаем быстрый отбор КонецЕсли; ИначеЕсли ОтборПо = "по проекту" Тогда ПроектДляОтбора = ТекДок.Проект;// общий реквизит документов КонецЕсли; // ОтборПо КонецЕсли; // ВидОтбора.ТекущаяСтрока() > 1 КонецЕсли; // Док.Выбран()>0 КонецЕсли; // ВРег(ТипЗначенияСтр(Форма.Параметр))="ДОКУМЕНТ" КонецЕсли; // ПустоеЗначение(Форма.Параметр)=0 Попытка Если ПустоеЗначение(ТекДок)=0 Тогда Если ТекДок.Фирма.Код = "00003" Тогда ПриУстановкеБыстрогоОтбора(); АктивизироватьОбъект(ТекДок); Конецесли; Конецесли; Исключение Сообщить(ОписаниеОшибки(),"!"); КонецПопытки; КонецПроцедуры |
|||
1
Mikeware
23.04.12
✎
10:49
|
СП читал?
|
|||
2
ДенисЧ
23.04.12
✎
10:51
|
(1) Нет, я его у него украл...
|
|||
3
Popkorm
23.04.12
✎
10:51
|
(1)про это имеешь виду:
ПодчинениеДокументу(); АктивизироватьОбъект(ТекДок); |
|||
4
Popkorm
23.04.12
✎
10:54
|
в данном случаи АктивизироватьОбъект не отрабатывает,но где то еще механизм отрабатывает,не знаю где:
АктивизироватьОбъект(ТекДок); АктивизироватьОбъект(<?>); Синтаксис: АктивизироватьОбъект(<Объект>) Назначение: Активизировать объект в форме списка. Параметры: <Объект> - выражение, содержащее документ. Замечание: Доступ к методу возможен только в контексте Модуля формы. |
|||
5
Popkorm
23.04.12
✎
10:55
|
+4 "АктивизироватьОбъект" подобный механизм имеею виду
|
|||
6
Popkorm
23.04.12
✎
10:57
|
ПриОткрытииИЛИПереоткрытииЖурнала("Открытие");
// будем отслеживать только реальные изменения этих реквизитов Форма.ВидОтбора.ВыполнятьФормулуТолькоПриИзменении(1); КонецПроцедуры // ПриОткрытии() Это тоже не причем: ВыполнятьФормулуТолькоПриИзменении(<?>); Синтаксис: ВыполнятьФормулуТолькоПриИзменении(<Режим>) Назначение: Установка режима выполнения формулы выбранного поля табличной части документа. Параметры: <Режим> - число: 1 - формула вызывается только при изменении значения поля, 0 - вызывается и при переходе между полями. |
|||
7
Popkorm
23.04.12
✎
11:24
|
что не понятно,справшивайте
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |