Имя: Пароль:
1C
 
Как определить пустую Структуру?
0 Bobroff
 
31.08.06
16:27
Есть код:

ОтборПоТекущемуВрачу = Новый Структура("Врач",Ссылка);
ПоследнееМестоРаботыВрача=РегистрыСведений.ТрудоваяДеятельностьВрачей.ПолучитьПоследнее(,ОтборПоТекущемуВрачу);

В ПоследнееМестоРаботыВрача может содержать структуру без значений. Как её отловить?
1 Scooter
 
31.08.06
16:28
Структура (Structure)
Количество (Count)
Синтаксис:
Количество()
Возвращаемое значение:
Тип: Число.
Описание:
Получает количество элементов структуры
2 Bobroff
 
31.08.06
16:29
(1) - количество не предлагать - не работает...
3 Bobroff
 
31.08.06
16:30
написал вот так
ОтборПоТекущемуВрачу = Новый Структура("Врач",Ссылка);
ПоследнееМестоРаботыВрача=РегистрыСведений.ТрудоваяДеятельностьВрачей.ПолучитьПоследнее(,ОтборПоТекущемуВрачу);
Если  ПоследнееМестоРаботыВрача.Количество()=0  Тогда
   Если ЭтоНовый() Тогда
       Записать();
   КонецЕсли;
   НоваяЗапись=РегистрыСведений.ТрудоваяДеятельностьВрачей.СоздатьМенеджерЗаписи();
   НоваяЗапись.Врач=Ссылка;
   НоваяЗапись.Период=РабочаяДата;
   НоваяЗапись.МестоРаботы=Справочники.МедицинскиеУчреждения.НайтиПоКоду(1);
   НоваяЗапись.Отделение=Справочники.ОтделенияМедицинскихУчреждений.НайтиПоКоду(1);
   НоваяЗапись.Должность=Справочники.ДолжностиВрачей.НайтиПоКоду(1);
   НоваяЗапись.МедицинскийПредставитель=Справочники.МедицинскиеПредставители.НайтиПоКоду(1);
   НоваяЗапись.Записать();
       
   ЭлементыФормы.ТрудоваяДеятельность.Значение.Отбор.Врач.Установить(Ссылка);

КонецЕсли;

Если в ПоследнееМестоРаботыВрача нет записей, то ПоследнееМестоРаботыВрача.Количество()=0 не ловиться...
4 Scooter
 
31.08.06
16:32
(2) чё значит не работает
5 Bobroff
 
31.08.06
16:34
(4) - если возвращаеться пустая структура, то код после ПоследнееМестоРаботыВрача.Количество()=0  не выполняеться
6 airyashov
 
31.08.06
16:39
а что содержит ПоследнееМестоРаботыВрача.Количество()
7 Bobroff
 
31.08.06
16:41
(6) - выдаёт 4 - это количество полей структуры
8 airyashov
 
31.08.06
16:42
(7) так значение в поле структуры проверить проше на путоту
9 Bobroff
 
31.08.06
16:43
Вообщем сне надо определять, есть ли в  ПоследнееМестоРаботыВрача=РегистрыСведений.ТрудоваяДеятельностьВрачей.ПолучитьПоследнее(,ОтборПоТекущемуВрачу)   хоть одно значение, если нет, то добавлять...
10 Bobroff
 
31.08.06
16:44
(8) - хочеть как-то попроще, т.к. надо будет проверять все поля..
11 airyashov
 
31.08.06
16:47
советую посмотреть значение полей в структуре в разных случаях
12 Scooter
 
31.08.06
16:52
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)
ПолучитьПоследнее (GetLast)
Возвращаемое значение:
Тип: Структура. Возвращает структуру, содержащую значения ресурсов.

Скорее всего у тебя возвращается структура со значениями NULL
13 Ыуув
 
31.08.06
16:53
Пиши через запрос.
Что-то типа:
Запрос = Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
|    ПоследнееМестоРаботыВрача.Период,
|    ПоследнееМестоРаботыВрача.Регистратор,
|    ПоследнееМестоРаботыВрача.НомерСтроки,
|    ПоследнееМестоРаботыВрача.Активность,
|    ПоследнееМестоРаботыВрача.Врач,
|    ПоследнееМестоРаботыВрача.МестоРаботы
|ИЗ
|    РегистрСведений.ПоследнееМестоРаботыВрача.СрезПоследних(,Врач=&Врач) КАК ПоследнееМестоРаботыВрачаСрезПоследних";
Запрос.УстановитьПараметр("Врач",Ссылка);
Результат = Запрос.Выполнить;
Если Результат.Пустой() Тогда
.......
14 Bobroff
 
31.08.06
16:53
(12) - наверное да
15 Bobroff
 
31.08.06
16:56
(13) -да, думаю это более правильный вариант...
16 Aldour
 
31.08.06
17:43
а что ЗначениеНеЗаполнено уже отменили?
17 Bobroff
 
31.08.06
17:45
(16) - спасибо, но я уже по другому сделал... в следующий раз, вспомню и этот вариант...
18 Ыуув
 
31.08.06
17:46
(16) Дополнительный вызов функции.... в данной ситуации не обязательный..
плюс не факт, что она есть в этой конфе.
19 Bobroff
 
31.08.06
17:47
(18) - у меня в конфе есть... я УТ дорабатываю...
20 Aldour
 
31.08.06
18:30
(18) Значит надо перенести.
Можно сделать

Если ПроверяемоеЗначение = Новый Структура() Тогда
// Это новая структура
КонецЕсли