Имя: Пароль:
1C
1C 7.7
v7: Отбор в журнале
,
0 Enlighted
 
06.03.17
19:48
Добрый вечер знающие.
Хочу:
Чтобы в журнале документов были документы только 3-х типов и только с реквизитом Автозакрытие = 1.
Сделал:
Журнал, общий, выбрал все три типа документа которые там должны быть, Добавил графу "Автозакрытие" связал её с аналогичным реквизитом этих самых документов, написал процедуру в форму журнала:

Процедура ПриОткрытии()
    Если ПустоеЗначение(Автозакрытие) = 0 Тогда        
        УстановитьОтбор("Автозакрытие", 1);    
    КонецЕсли;
КонецПроцедуры

Результат: все подряд документы этих трёх типов не взирая на значение в реквизите Автозакрытие.

Внимание вопрос! В какой кусок этого "длинного" кода биться головой?
1 GreyK
 
06.03.17
19:53
Сделай реквизит ОтборПоЖурналу, ни с чем его не связывай. Ну и если ОтборПоЖурналу = 0, тогда УстановитьОтбор("Автозакрытие", 0); Иначе УстановитьОтбор("Автозакрытие", 1);
2 Enlighted
 
06.03.17
20:30
(1) Добавил графу в журнал: ОтборПоЖурналу, не связывал ни с чем, код поменял на:

Процедура ПриОткрытии()      
    Если ПустоеЗначение(ОтборПоЖурналу) = 0 Тогда
        УстановитьОтбор("Автозакрытие", 0);
    Иначе
    УстановитьОтбор("Автозакрытие", 1);
    КонецЕсли;
КонецПроцедуры

Ошибка:
УстановитьОтбор("Автозакрытие", 1);
{Журнал.ЖурналАвтозакрытий.Форма.ФормаСписка.Модуль(9)}: Неверное имя реквизита!
3 Enlighted
 
06.03.17
20:33
(2) Извиняюсь, убрал ковычки вокруг Автозакрытие ошибку не выдаёт, но по прежнему в журнал попадают все документы подряд
4 Enlighted
 
06.03.17
20:35
(3) Ну точнее трёх видов, вне зависимости от того чему равен реквизит Автозакрытие
5 Builder
 
06.03.17
21:37
(3) Кавычки как раз нужны.
Синтаксис:
УстановитьОтбор(<ИмяОтбора>,<ЗначениеОтбора>)
А почему графу отбора ни с чем не связал? Религия не позволяет? По ней то как раз отбор и делается.
А графа журнала не нужна тут.
6 Enlighted
 
06.03.17
21:44
(5) Простите а в кавычках писать идентификатор колонки или её название? А то кавычки меня ставят в тупик. В начале написал что графа отбора связана с соответствующим реквизитом в документах.
7 Enlighted
 
06.03.17
21:45
(5) Да небольшая поправка графа по которой ведётся отбор, помечена как невидимая.
8 Enlighted
 
06.03.17
21:49
(6) Попробовал написать в кавычках и имя и идентификатор колонки. Выдаёт ошибку:
УстановитьОтбор("ЗакрытьАвтоматом", 1);
   {Журнал.ЖурналАвтозакрытий.Форма.ФормаСписка.Модуль(9)}: Неверное имя реквизита!

Код упростил донельзя:

Процедура ПриОткрытии()
    УстановитьОтбор("ЗакрытьАвтоматом", 1);
КонецПроцедуры
9 GreyK
 
06.03.17
22:07
(8) Что такое "ЗакрытьАвтоматом"? Это реквезит документа?
10 Остап Сулейманович
 
06.03.17
22:11
(8) "Неверное имя реквизита!" - скорее всего журнал не общий.
11 HawkEye
 
06.03.17
23:46
(0) чтобы отбор работал.. надо делать "Графа отбора", в корне... а не графа в журнале...
12 vcv
 
07.03.17
05:33
(0)
>> Журнал, общий, выбрал все три типа документа
>> которые там должны быть

Непонятно как. Для общих журналов нет возможности выбора видов документов. В них включаются все виды.

>> Чтобы в журнале документов были документы
>> только 3-х типов и только с реквизитом Автозакрытие = 1

Самый штатный метод такое сделать, добавить в документы реквизит, например, АвтозакрытиеДляОтбора и заполнять его только для нужных видов документов. По этому реквизиту графу отбора. Или, если реквизит общий, то просто включит отбор. В журнале УстановитьОтбор по этому реквизиту/графе
13 Enlighted
 
07.03.17
08:33
(12) Извиняюсь перепроверил, сделал журнал общим, реквизит ЗакрытАвтоматом стоит в нужных документах специально для того чтобы фильтровать в журнале.
(9) ЗакрытьАвтоматом - это название графы в журнале, Возможные значения у неё только реквизит 3-х видов документа "ЗакрытАвтоматом"
14 Enlighted
 
07.03.17
08:58
(11) О! нашёл где это :) Добавил графу отбора сейчас буду пробовать далее.
15 Enlighted
 
07.03.17
09:38
(10) (11) (12) Всех благодарю получилось.
Код:
Процедура ПриОткрытии()      
    Если ПустоеЗначение(ОтборПоЖурналу) = 0 Тогда        
        УстановитьОтбор("ЗакрытАвтоматом", 0);    
    Иначе        
    УстановитьОтбор("ЗакрытАвтоматом", 1);    
    КонецЕсли;
КонецПроцедуры

Добавил графу отбора в корне журналов.

Теперь поясните пожалуйста зачем нужно было вводить графу "ОтборПоЖурналу" и УстановитьОтбор("ЗакрытАвтоматом", 0) я не понимаю смысла в них?
16 Это_mike
 
07.03.17
09:39
для отбора. посмотри в структуру базы, поймешь. если не поймешь - забей, тогда объяснять бессмысленно
17 Enlighted
 
12.03.17
13:28
(16) При чем тут структура базы? Структура базы SQL?
Согласно структуре журнала колонка "ОтборПоЖурналу" вообще не используется и не имеет в себе никаких значений, она даже не вынесена в таблицу, то есть ПустоеЗначение(ОтборПоЖурналу) всегда равно 1, вообще всегда, всегда всегда. Смысл проверки условия на равенство сего выражения нулю от меня ускользает.

Тем более, при оставлении кода:
УстановитьОтбор("ЗакрытАвтоматом", 1);
Всё работает точно так же.

Может хоть кто нибудь объяснит почему надо ставить такое условие как в (15) ?
18 Enlighted
 
12.03.17
13:44
А возможно ли несколько критериев отбора в одном журнале, то есть установитьотбор несколько раз подряд работать будет?

Теперь нужно чтобы в основном журнале эти документы не отображались, В связи с этим возник вопрос если значение параметра отбора пустое, как это указать в УстановитьОтбор, например в некоторых документах такого реквизита вообще нет, мне надо чтобы эти документы попадали в журнал.
19 Builder
 
12.03.17
14:32
(18)
1. Низя. В 7.7 штатно отбор по одному реквизиту. Но есть нештатные способы.
2. Нет реквизита - нет отбора.
20 Злопчинский
 
12.03.17
14:46
(18) если база скудьна то можно
21 Enlighted
 
12.03.17
17:39
(20) Нет, база файловая.
22 Enlighted
 
12.03.17
18:34
(19) Получается критерием отбора отсутствие реквизита поставить нельзя?
23 Builder
 
12.03.17
18:43
(22) Нет реквизита - не попадет в отбор в любом случае.
24 HawkEye
 
12.03.17
19:15
(18) ты узнай сначала задачу полностью, потом уже и думай над решением....
25 HawkEye
 
12.03.17
19:24
(15)
1. графа отбора бывает только в корне, т.е. для всех общих журналов
2. для того, чтобы организовать отбор, надо:
2.1 добавить графу отбора
2.2 добавить в графу отбора нужные реквизит из документа каждого вида

3. чтобы отбор работал программно - надо написать код

все.