Имя: Пароль:
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(), то у тебя оно на следующую запись не перейдёт?
Не рановато ли начал? Сегодня только вторник...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn