Имя: Пароль:
JOB
Работа
Ошибка чтения значения при отладке
, ,
0 Altanzar
 
15.08.12
08:10
Имеется последовательность запросов следующего вида:

Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекущийСотрудник", СсылкаНаОбъект);
   Запрос.Текст =
   "ВЫБРАТЬ
   |    СотрудникиОрганизаций.Физлицо,
   |    СотрудникиОрганизаций.Физлицо.Наименование КАК ФИО,
   |    СотрудникиОрганизаций.Организация.Наименование КАК Организация,
   |    СотрудникиОрганизаций.Должность.Наименование КАК Должность,
   |    СотрудникиОрганизаций.ПодразделениеОрганизации.Наименование КАК Подразделение,
   |    СотрудникиОрганизаций.ТарифнаяСтавка,
   |    ПаспортныеДанныеФизЛиц.ФизЛицо.Наименование КАК ФизЛицоНаименование1,
   |    ПаспортныеДанныеФизЛиц.ДокументСерия,
   |    ПаспортныеДанныеФизЛиц.ДокументНомер
   |ИЗ
   |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
   |        ПО СотрудникиОрганизаций.Физлицо.Наименование = ПаспортныеДанныеФизЛиц.ФизЛицо.Наименование
   |ГДЕ
   |    СотрудникиОрганизаций.Ссылка = &ТекущийСотрудник";
   Сотрудник = Запрос.Выполнить().Выбрать();
   Сотрудник.Следующий();
   
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ВидАдреса", "Адрес по прописке физ.лица");
   Запрос.УстановитьПараметр("ТекущийСотрудник", СсылкаНаОбъект);
   Запрос.Текст =
   "ВЫБРАТЬ
   |    СотрудникиОрганизаций.Физлицо.Наименование,
   |    КонтактнаяИнформация.Объект.Наименование,
   |    КонтактнаяИнформация.Вид,
   |    КонтактнаяИнформация.Представление
   |ИЗ
   |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |        ПО СотрудникиОрганизаций.Физлицо.Наименование = КонтактнаяИнформация.Объект.Наименование
   |ГДЕ
   |    СотрудникиОрганизаций.Ссылка = &ТекущийСотрудник
   |    И КонтактнаяИнформация.Вид = &ВидАдреса";
   ВыборкаАдреса = Запрос.Выполнить().Выбрать();
   ВыборкаАдреса.Следующий();
   
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Телефон", "Телефон");
   Запрос.УстановитьПараметр("ТекущийСотрудник", СсылкаНаОбъект);
   Запрос.Текст =
   "ВЫБРАТЬ
   |    СотрудникиОрганизаций.Физлицо.Наименование,
   |    КонтактнаяИнформация.Объект.Наименование,
   |    КонтактнаяИнформация.Тип,
   |    КонтактнаяИнформация.Представление
   |ИЗ
   |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |        ПО СотрудникиОрганизаций.Физлицо.Наименование = КонтактнаяИнформация.Объект.Наименование
   |ГДЕ
   |    СотрудникиОрганизаций.Ссылка = &ТекущийСотрудник
   |    И КонтактнаяИнформация.Тип = &Телефон";
   ВыборкаТелефона = Запрос.Выполнить().Выбрать();
   ВыборкаТелефона.Следующий();

Соответственно, когда в тексте печатной формы идет обращение параметров к результатам этих запросов, часть ячеек распечатанного документа остается пустой, а проверка через Отладчик говорит "Ошибка чтения значения".

Что характерно, наименование физлица, паспортные данные и название организации вытащить удается, а вот к примеру названия подразделения или должности - нет. В чем может быть проблема?
1 butterbean
 
15.08.12
08:19
за соединения по наименованию убить на месте
а по сути — вопрос не понятен, что не получается-то??
2 Лоботряс
 
15.08.12
08:24
Как заполняются параметры печатной формы код кинь
3 Altanzar
 
15.08.12
08:30
(1)
По сути - не получается вывести должность, подразделение, тарифную ставку, адрес и телефон.
И как тогда лучше соединять?

(2)


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


Пример фрагмента.
Смотрел регистры - все нужные сведения есть. Но не отображаются.
4 Лоботряс
 
15.08.12
08:42
Попробуй вычислить выражение Сотрудник[3]
5 Altanzar
 
15.08.12
08:46
(4)Не слышал пока про такое, это как?
6 kn
 
15.08.12
08:51
Что получается в каждом запросе можно посмотреть отладчиком
так - Вычислить выражение Запрос.Выполнить().Выгрузить() - Это будет ТЗ - ее содержимое смотри ПКМ
7 Лоботряс
 
15.08.12
09:00
(5) Смотри СП по ВыборкаИзРезультатаЗапроса
(3) Еще вариант что в макете, в ячейках параметры как-то по-другому названы
8 ZloyProger
 
15.08.12
09:08
(3) Во избежание путаницы сделай проще:
ОбластьМакетаДоговора.Заполнить(Сотрудник)
Единственное, поля в запросе назови так же, как параметры в макете и все.
(5) В режиме отладки выделяешь нужную переменную и нажимаешь Shift+F9 (либо через меню Отладка, там тоже много чего интересного и полезного - полюбопытствуй)
9 Altanzar
 
15.08.12
09:18
(8) Там и метода-то такого нет - Заполнить. Оо
10 Altanzar
 
15.08.12
09:24
(6)
Выгрузил. Характеристики данных есть, самих данных нет.

Через Shift+F9 тип всех выражений Неопределено.
11 kn
 
15.08.12
09:27
Значит запрос вернул пустую ТЗ, можешь проверить что
Запрос.Выполнить().Пустой() что вернет?
12 ZloyProger
 
15.08.12
09:30
+(8) Тьфу блин( ОбластьМакетаДоговара.Параметры.Заполнить(Сотрудник). Апчипятка, сорри..
13 ZloyProger
 
15.08.12
09:35
(3) Соединяй по ссылке:
//1 запрос
ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛиц.ФизЛицо
//2 запрос
ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
//3 запрос
ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
И еще, поскольку у тебя объект Запрос - один, не устанавливай каждый раз параметр "ТекущийСотрудник", вполне первого раза достаточно, а дальше он уже будет установлен.
14 kn
 
15.08.12
09:40
Запрос.УстановитьПараметр("ВидАдреса", "Адрес по прописке физ.лица");
Запрос.УстановитьПараметр("Телефон", "Телефон"); не строковые параметры там должны передаваться
15 Altanzar
 
15.08.12
09:47
Кстати, когда просматриваю карточку сотрудника и выбираю пункт "Должность" во вкладке "Кадровые данные", меня перекидывает на документ принятия на работу. Значит ли это, что за сведениями о должности и подразделении обращаться следует к этому документу?
16 ZloyProger
 
15.08.12
09:53
(15) Какая конфига?
(14) Ага, там должно передаваться значение типа измерения "Вид" регистра сведений "КонтактнаяИнформация" (телепатирую, что скорее всего Справочник.ВидыКонтактнойИнформации, соответственно будет что-то типа Справочник.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон") и т.д.)
17 Altanzar
 
15.08.12
11:42
Все, проехали. Ошибка была настолько дурацкая, что мне даже рассказывать стыдно.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.