|   |   | 
| 
 | Помогите с запросом!!! Значение не является значением объектного типа. | ☑ | ||
|---|---|---|---|---|
| 0
    
        листопад 16.05.15✎ 20:00 | 
        Мне надо получить номер трудового договора сотрудника, который записан в док-те ПриемНаРаботу. Но выдает ошибку: Значение не является значением объектного типа (ТДНомер)
 Вот код: &НаСервере Функция ВыборкаНаСервере() //здесь запрос Пока РезультатЗапроса.Следующий() Цикл Результат = ""; Если ЗначениеЗаполнено(РезультатЗапроса.СотрудникНомерДоговора) Тогда ТДНомер = РезультатЗапроса.СотрудникНомерДоговора; Иначе ДанныеДоговора = ПолучитьНомерДоговора(РезультатЗапроса.ФЛ); ТДНомер = ДанныеДоговора.ТДНомер; //вот здесь ошибка: Значение не является значением объектного типа (ТДНомер) КонецЕсли; Если ТДНомер <> Неопределено Тогда Результат = "по договору № "+ ТДНомер; КонецЕсли; КонецФункции &НаСервере Функция ПолучитьНомерДоговора(ФЛ) Структура = Новый Структура; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | КадроваяИсторияСотрудников.ФизическоеЛицо.Наименование, | КадроваяИсторияСотрудников.Регистратор.ТрудовойДоговорНомер КАК ТДНомер |ИЗ | РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников |ГДЕ | КадроваяИсторияСотрудников.Регистратор ССЫЛКА Документ.ПриемНаРаботу | И КадроваяИсторияСотрудников.ФизическоеЛицо = &ФЛ | |УПОРЯДОЧИТЬ ПО | КадроваяИсторияСотрудников.Регистратор.Дата УБЫВ"; Запрос.УстановитьПараметр("ФЛ", ФЛ); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Если НЕ ЗначениеЗаполнено(Выборка.ТДНомер) Тогда Структура.Вставить("ТДНомер", Неопределено); Иначе Структура.Вставить("ТДНомер", Выборка.ТДНомер); КонецЕсли; КонецЕсли; Возврат Структура; КонецФункции // ПолучитьНомерДоговора() | |||
| 1
    
        User_Agronom 16.05.15✎ 20:01 | 
        Там NULL найден?     | |||
| 2
    
        фобка 16.05.15✎ 20:01 | 
        Выборка пустая, ДанныеДоговора = неопределено     | |||
| 3
    
        ДенисЧ 16.05.15✎ 20:02 | 
        ТДНомер = ДанныеДоговора.ТДНомер;
 Если тдНомер <> Неопределено... | |||
| 4
    
        ДенисЧ 16.05.15✎ 20:02 | 
        Точнее - ДанныеДоговора <> Неопределено     | |||
| 5
    
        RomanYS 16.05.15✎ 20:03 | 
        (2) +1 возвращается пустая структура     | |||
| 6
    
        фобка 16.05.15✎ 20:03 | 
        Не, там структура всегда     | |||
| 7
    
        фобка 16.05.15✎ 20:05 | 
        Походу (1) прав     | |||
| 8
    
        листопад 16.05.15✎ 20:05 | 
        Вот что в отладчике показывает: http://s017.radikal.ru/i443/1505/cc/4f58861f7eba.jpg     | |||
| 9
    
        фобка 16.05.15✎ 20:06 | 
        (8) это нормально, ты же в цикл не вошел     | |||
| 10
    
        фобка 16.05.15✎ 20:07 | 
        В условие     | |||
| 11
    
        RomanYS 16.05.15✎ 20:07 | 
        (8) так ты шаг сделай, у тебя выборка еще не инициализирована     | |||
| 12
    
        листопад 16.05.15✎ 20:07 | 
        Т.е. после строчки Если Выборка.Следующий() Тогда  
 Сразу переходит на КонецЕсли; | |||
| 13
    
        RomanYS 16.05.15✎ 20:08 | 
        (12) тебе об этом и говорят: выборка пустая     | |||
| 14
    
        фобка 16.05.15✎ 20:09 | 
        (12) значит запрос.выполнить().пустой() = истина     | |||
| 15
    
        листопад 16.05.15✎ 20:09 | 
        Он даже в цикл не заходит!
 (13) В консоли запросов эта Выборка не пустая!!! Показывает номер договора! | |||
| 16
    
        фобка 16.05.15✎ 20:10 | 
        (15) нет     | |||
| 17
    
        RomanYS 16.05.15✎ 20:12 | 
        (15) значит с параметрами где-то накосячил.
 Вопрос: зачем тебе запрос в цикле, почему сразу не получать номер в основном запросе? | |||
| 18
    
        листопад 16.05.15✎ 20:13 | 
        Вот в консоли результат есть: http://s011.radikal.ru/i315/1505/20/04b6d59d1e8e.jpg     | |||
| 19
    
        ДенисЧ 16.05.15✎ 20:15 | 
        в консоли ФЛ один, в коде другой     | |||
| 20
    
        листопад 16.05.15✎ 20:16 | 
        (19) Почему Вы так решили? Я проверяла, в коде обработки, в параметре ФЛ, передается она же.     | |||
| 21
    
        ДенисЧ 16.05.15✎ 20:18 | 
        (20) Потому что результат разный     | |||
| 22
    
        фобка 16.05.15✎ 20:21 | 
        Это очень просто проверить
 Сообщить(ПолучитьНомерДоговора(РезультатЗапроса.ФЛ)); Сообщить(ПолучитьНомерДоговора(ПараметрИзКонсоли)); | |||
| 23
    
        листопад 16.05.15✎ 20:25 | 
        Нет, вот параметр ФЛ, там она же: [url=http://my-files.ru/1irw4e]http://my-files.ru/1irw4e[/url]     | |||
| 24
    
        листопад 16.05.15✎ 20:26 | ||||
| 25
    
        RomanYS 16.05.15✎ 20:27 | 
        (23) СТРОКА?     | |||
| 26
    
        листопад 16.05.15✎ 20:29 | 
        (22) Написала эту проверку через Сообщить: ничего не выдал.     | |||
| 27
    
        RomanYS 16.05.15✎ 20:30 | 
        (23) у тебя в параметре строка, а должна быть ссылка     | |||
| 28
    
        листопад 16.05.15✎ 20:33 | 
        (25)  Вы гений!!! Точно!!! Всем СПАСИБО!!! :*)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |