Имя: Пароль:
1C
1С v8
Почему значение ссылки на перечисление пустое?
,
0 yujiriwc
 
26.01.15
10:47
Проект учебный, контрольная работа в университете.
У меня есть справочник "Проекты", есть перечисление "СтатусыПроектов", у последнего есть два значения "Закрыт" и "Прогресс"
Есть документ "ОтчетОРаботе", у него есть табличная часть "Проекты", в свою очередь содержащие ссылку на "Справочник.Проекты" и числовое поле "ЗатраченноеВремя"
В модуле документа есть "ОбработчикПроведения", из него я обращаюсь в цикле к каждой строке табличной части и хочу проверить статус проекта.
В отладчике смотрю статус - он показывает пустоту. Делаю "Строка(статус)" - выдает пустую строку? Что я делаю не так?
1 cw014
 
26.01.15
10:48
Наверное ты не заполняешь в табличной части реквизит "Статус" значением из справочника?
2 Господин ПЖ
 
26.01.15
10:49
(0) дело было не в бобине...
3 salvator
 
26.01.15
10:50
Делаю "Строка(статус)"
А может быть лучше Строка.Статус? Раз построчно проходишь ТЧ
4 polosov
 
26.01.15
10:50
(0) Так  статусы проектов у тебя к чему привязаны?
5 yujiriwc
 
26.01.15
10:52
(1)
Да, статусы проектов я напрямую не заполняю.
(4)
В справочнике проектов есть ссылка на статус, я не могу взять ее от туда? Если нет - скиньте ссылку где прочитать, почему.
6 palladyi
 
26.01.15
10:54
(5) Если есть реквизит - можешь. Для этого делаешь так:
Для Каждого строка ИЗ Проекты Цикл
Статус = Строка.Проект.Статус;
КонецЦикла;
7 palladyi
 
26.01.15
10:54
+ (6) а вообще, скинь код. Тут телепаты все, конечно, но ленивые очень.
8 polosov
 
26.01.15
10:54
(0)  Для Каждого СтрокаПроекты Из Проекты Цикл

Если Проекты.Статус = Перечисления.СтатусыПроектов.Закрыт Тогда
//Блабла

Иначе

//Блабла

КонецЕсли;

КонецЦикла;
9 yujiriwc
 
26.01.15
10:57
сейчас скину код.
10 palladyi
 
26.01.15
10:57
(8) а где у тебя обращение к строке? Ты же к табличной части обращаешься)
11 polosov
 
26.01.15
10:58
(10) А, да:

Если СтрокаПроекты.Статус = Перечисления.СтатусыПроектов.Закрыт Тогда
12 palladyi
 
26.01.15
10:59
(11) у него нет статуса в табличной части, он из справочника берет. А ссылку на справочник из табличной части) То есть: Если СтрокаПроекты.Проект.Статус = Перечисления.СтатусыПроектов.Закрыт Тогда
13 yujiriwc
 
26.01.15
11:01
[code]
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Для Каждого Проект Из Проекты Цикл
        Если Проект.Статус = Перечисления.СтатусыПроектов.Закрыт Тогда
            ЕстьЗакрытыеПроекты = Истина;
            Сообщить("В строке № " + Строка(Проект.НомерСтроки) + " проект уже закрыт");
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры
[/code]
14 polosov
 
26.01.15
11:01
(12) Хм, статусы хранить в элементе справочника для которого сделан статус...
Это не правильно.
15 yujiriwc
 
26.01.15
11:02
А как правильно?
16 palladyi
 
26.01.15
11:03
(13) Так у тебя в табличной части поле статус есть или нет?
17 polosov
 
26.01.15
11:03
(14) Хотя... Почему нет.
18 polosov
 
26.01.15
11:05
(15) Если ты оперируешь статусом с помощью документов, то не очень хорошо из документа изменять справочник (хотя и не критично). Можно завести РС для хранения статусов, периодический. Так ты сможешь отслеживать историю по одному объекту.
19 yujiriwc
 
26.01.15
11:07
Я нехочу менять статус, я хочу узнать, проект закрыт или нет перед тем как провести документ.
20 yujiriwc
 
26.01.15
11:08
(16) нет, статуса в табл части нет
21 polosov
 
26.01.15
11:08
(19) А где есть статус? Где он выставляется?
22 yujiriwc
 
26.01.15
11:08
я не понимаю - зачем он там нужен. И просил объяснить - для чего он там (5)
23 yujiriwc
 
26.01.15
11:09
(21)Статус есть в справочнике у Проекта. И он является ссылкой на Перечисление. Это не обязательно, что бы так было, я не знаю как это должно быть правильно.
Перед проведением я хочу узнать какой статус у проекта.
24 yujiriwc
 
26.01.15
11:14
25 yujiriwc
 
26.01.15
11:17
Народ!!! Всем огромное спасибо!!!
Это я пропарился нужно было обращаться через:
Проект.Проект.Статус
Как я этого раньше не заметил - ума не приложу...
26 yujiriwc
 
26.01.15
11:18
Спасибо всем огромное. Как закрыть тему?
27 polosov
 
26.01.15
11:19
(25) Это запрос в цикле у тебя получается. Некошерно.
28 Крошка Ру
 
26.01.15
11:19
(24)Ты сам себя запутал с этими проектами

ТЧ документа по-другому назови
29 yujiriwc
 
26.01.15
11:20
(28) Спасибо! Ты однозначно прав.
(27) Это учебное задание, мне не критично.
30 Крошка Ру
 
26.01.15
11:21
(24) А вообще, пользуйся отладчиком - сразу многое понятным станет

(27) А где там запрос в цикле?
31 yujiriwc
 
26.01.15
11:23
(30)
Отладчиком пользуюсь(я 4 года комерчески работаю с web) но в 1с отладчик слабенький...
Впрочем решение нашел именно с помощью него;)

Походу обращаясь через ссылку
Проект.Проект.Статус - последний вызов(Статус) будет обращением к БД, тобишь запросом.
32 polosov
 
26.01.15
11:24
(31) Совершенно верно.