Имя: Пароль:
1C
1C 7.7
v7: Проверка справочника на заполненность.
0 Eeakie
 
11.10.12
12:33
Народ, что-то с утра совсем туго голова работает. Нужно забирать из подчиненного справочника последнее значение, а если значений нет вообще, то записывать, что ничего нет.

СпрС.ВыбратьЭлементы();
   Пока СпрС.ПолучитьЭлемент() = 1 Цикл
       
       С = СпрС.ТекущийЭлемент();
       Если С.ЭтоГруппа() = 0 Тогда
           
           СпрП.ИспользоватьВладельца(С);
           СпрП.ВыбратьЭлементы();
           
           Пока СпрП.ПолучитьЭлемент() = 1 Цикл
               
               Д = Дата(0);
               Если СпрП.Дата2 > Д Тогда
                   
                   ФИО = С.Наименование;
                   Дни = РассчитатьДни(СпрП.Дата2,ТекущаяДата(),0);
                   Д = СпрП.Дата2;
                   Коммент = "С последней аттестации сотрудника " + С + " прошло " + Дни*-1 + " дней!";
                   
               КонецЕсли;
               
           КонецЦикла;
           ТЗ.НоваяСтрока();
           ТЗ.Коммент = Коммент;    
           
       КонецЕсли;
               
   КонецЦикла;  



Как сюда воткнуть проверку на "нет ни одного элемента в подчиненном справочнике"?

Извиняюсь сразу за тупой вопрос.
1 Eeakie
 
11.10.12
12:35
Если не понятно, то нужно выдернуть инфу по аттестации. Если аттестация была, то выдать сколько дней назад, если не было, то "надо пройти".
2 GLazNik
 
11.10.12
12:36
Д = Дата(0);
надо перенести перед циклом.
после цикла делаем проверку на Д = Дата(0)
3 Ёпрст
 
11.10.12
12:36
(0)

Если СпрП.ВыбратьЭлементы()=0 Тогда
 Сообщить ("Пнх Альфрэдо, ничего тут нет!")
4 Mikeware
 
11.10.12
12:36
программиста позовите...
5 ДенисЧ
 
11.10.12
12:37
СпрП.ВыбратьЭлементы();
           
флЕстьЭлементы = 0;
           Пока СпрП.ПолучитьЭлемент() = 1 Цикл
               
флЕстьЭлементы = 1;                

           КонецЦикла;

Если флЕстьЭлементы = 0 Тогда
 Сообщить("Нету");
КонецЕсли
6 Mikeware
 
11.10.12
12:38
О, он уже пришел...
7 GLazNik
 
11.10.12
12:39
+(2) что б не перебирать весь подчиненный справочник используйте ПорядокРеквизита и ОбратныйПорядок
8 GLazNik
 
11.10.12
12:41
+(7) и тогда заменить
 Пока СпрП.ПолучитьЭлемент() = 1 Цикл
на
 Если СпрП.ПолучитьЭлемент() = 1 Тогда //спр. есть
   ...
 Иначе //спр. нет
   ...
 КонецЕсли;
9 Надсмотрщик
 
11.10.12
12:42
(6) +1000500!   Но СП забыл взять с собой.
10 Mikeware
 
11.10.12
12:42
(8) постарайся осилить (3).
11 пипец
 
11.10.12
12:43
а запросом и в ТЗ ? явно быстрее будет
12 Eeakie
 
11.10.12
12:45
Мда. Всё проще в разы. Спасибо.
13 chief accountant
 
11.10.12
12:45
(7) Ты эта, пейсатель шоли
14 1Сергей
 
11.10.12
12:45
Правильный ответ в (3)
15 GLazNik
 
11.10.12
12:46
(10) А ты осилил? И тему внимательно прочел?
(8) имеет смысл только при (7), иначе не срабатывает условие "Нужно забирать из подчиненного справочника последнее значение"
16 Eeakie
 
11.10.12
12:47
(15) Отдедельное спасибо за обратныйПорядок(). Вообще забыл про такие вещи :)
17 GLazNik
 
11.10.12
12:48
(13) что-то не нравится?
18 Eeakie
 
11.10.12
12:48
Как закрыть тему? Сча срач буде! :)
19 Mikeware
 
11.10.12
12:49
(16) "тяжело, когда не знал, а потом еще и забыл..."©
20 Mikeware
 
11.10.12
12:49
(18)обязательно будет!
21 chief accountant
 
11.10.12
12:54
(17) (13) -> (8)