Имя: Пароль:
1C
1С v8
"Преобразование значения к типу Число не может быть выполнено" (вина Роли???)
0 e2e4
 
11.08.15
19:33
Жму кнопку, с которой никаких раньше проблем не было. И прежде, чем процедура этой кнопки начинает выполняться (т.е. даже не могу отладчиком посмотреть, что за беда), получаю сабж.
Откуда вылезло? Все на что грешу - создана была роль (и юзер с этой ролью), но для нее на этот документ (где кнопка) дал полные права...
1 runoff_runoff
 
11.08.15
19:39
в Отледке поставить Остановка по ошибке..
2 e2e4
 
11.08.15
20:08
с отладчиком кажется понял - отладка тоже требует соответствующих прав....
Под админской учеткой выполнил трассировку - и в очередной раз сильно удивился. Вот код:
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    МАКСИМУМ(КачествоОбъектаПрокатаСрезПоследних.ИнвНомер) КАК ИнвНомер
        |ИЗ
        |    РегистрСведений.КачествоОбъектаПроката.СрезПоследних(, ) КАК КачествоОбъектаПрокатаСрезПоследних";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
        Результат = ВыборкаДетальныеЗаписи.ИнвНомер;    
    Иначе
        Результат = "00000";
    КонецЕсли;

    Возврат Результат;

...смысл простой - тупо берем МАКСИМУМ от измерения РС (строкового типа).
Сейчас этот РС пустой. Поэтому, как я понимаю, ВыборкаДетальныеЗаписи.Следующий() = Ложь, но в табло вижу Истина! При этом - выполнение все же идет в ветку Иначе!! А дальше - вообще потеря дара речи: жму еще раз кнопку (движения РС еще не записаны - он все еще пустой!), теперь выполнение идет в ветку Если!!! Причем  ВыборкаДетальныеЗаписи.ИнвНомер = Null (отсюда в дальнейшем и сабж)... "Где логика, где разум?!" (с)
3 e2e4
 
11.08.15
20:15
(2) я балдею.... оказывается, если ОТЛАДЧИКОМ ПОСМОТРЕТЬ значение выражения "ВыборкаДетальныеЗаписи.Следующий()" ... Да, вы правильно поняли - происходит ПЕРЕХОД к следующей записи выборки. Т.е., когда я смотрю это выражение отладчиком - попадаю в Иначе. Если не смотрю - в Если.
4 Defender aka LINN
 
11.08.15
20:16
(3) В первый раз отладчик запустил, что ли?
5 e2e4
 
11.08.15
20:22
(4) а что, к этому можно привыкнуть? не, я не ругатель 1С, но.......
6 ДенисЧ
 
11.08.15
20:24
(5) Это, вообще-то, в любом языке так.
Ну, кроме тех, у из отладчиков только Сообщить() или аналог
7 e2e4
 
11.08.15
20:35
(6) щас некогда, но не поленюсь, сделаю на днях тестик с ADODB.Recordset в Аксесе...чо-то сильно сомневаюсь, что так в любом языке.
8 ДенисЧ
 
11.08.15
20:58
(7) То есть если ты вычислишь в отладчике rs.MoveNext(), то у тебя оно на следующую запись не перейдёт?
Не рановато ли начал? Сегодня только вторник...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.