Преобразование значения к типу Число не может быть Выполнено! Что делать?

1. Stanislav1993 13.10.18 16:22 Сейчас в теме
Помогите пожалуйста решить эту ошибку. За все время впервые вылезла.
Конфигурация самописная. Документ " Табель учета рабочего времени". При проведении выдается такая ошибка. Ни как не могу понять почему.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Fox-trot 158 13.10.18 16:30 Сейчас в теме
приведи код функции НайтиРабочееВремя
3. Stanislav1993 13.10.18 16:31 Сейчас в теме
(2)
&НаСервере
Функция НайтиРабочееВремя(ДолжностьСотр)
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РабочиеЧасыСрезПоследних.Время
		|ИЗ
		|	РегистрСведений.РабочиеЧасы.СрезПоследних КАК РабочиеЧасыСрезПоследних
		|ГДЕ
		|	РабочиеЧасыСрезПоследних.ДолжностьСотрудника = &ДолжнСотр";
	
	Запрос.УстановитьПараметр("ДолжнСотр", ДолжностьСотр);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Возврат ВыборкаДетальныеЗаписи.Время;
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
	
	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	
КонецФункции


Показать
8. user856012 13 13.10.18 16:35 Сейчас в теме
(3)
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат ВыборкаДетальныеЗаписи.Время;
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;
Возврат в цикле - это сильно!

P.S. Всем желающим помочь рекомендуется к прочтению прошлая ветка автора.
4. Fox-trot 158 13.10.18 16:33 Сейчас в теме
допиши в конце функции: Возврат 0;
9. user856012 13 13.10.18 16:37 Сейчас в теме
(4)
допиши в конце функции: Возврат 0;
Как-бы противоречит:
(7)
и деление на 0 исключите %)
11. Stanislav1993 13.10.18 16:42 Сейчас в теме
(4)Вот
Прикрепленные файлы:
5. Fox-trot 158 13.10.18 16:33 Сейчас в теме
или какое там должно быть значение по-дефолту
6. Stanislav1993 13.10.18 16:35 Сейчас в теме
7. Fox-trot 158 13.10.18 16:35 Сейчас в теме
и деление на 0 исключите %)
10. Fox-trot 158 13.10.18 16:38 Сейчас в теме
12. user856012 13 13.10.18 16:43 Сейчас в теме
(10)
и где противоречие?
В скриншоте из (1):
СуммаОплаты = Оклад/(26*НайтиРабочееВремя(ДолжнСотр));
Если последовать вашему совету из (4), а должность почему-то не найдена - вернется 0, что и вызовет ошибку деления на 0.

А сейчас в такой ситуации - см. (1): нельзя число 26 умножать на пустое значение.

Или я чего-то не понимаю?
13. Stanislav1993 13.10.18 16:45 Сейчас в теме
(12)Да вы правы, но как же исключить эту непонятную ошибку? Просто ни разу не было такой ошибки при проведении табелей.
14. Fox-trot 158 13.10.18 16:50 Сейчас в теме
(13) забыли заполнить табель
15. Stanislav1993 13.10.18 16:52 Сейчас в теме
(14)я выбираю подразделение, потом нажимаю "Заполнить", позже провожу табель и все
16. user856012 13 13.10.18 16:52 Сейчас в теме
(13)
как же исключить эту непонятную ошибку?
Для этого вам надо определиться: какое должно быть рабочее время для сотрудника, у которого не задана должность или для этой должности почему-то не проставлено рабочее время?

Вот это значение и использовать вместо 0 в рекомендации из (4).
Просто ни разу не было такой ошибки при проведении табелей.
Скорее всего, кого-то приняли без указания должности или на новую должность, для которой не указали рабочее время.
17. Fox-trot 158 13.10.18 16:54 Сейчас в теме
(12)как-то так
РабВремя = НайтиРабВремя(Должность);
СуммаОплаты= ?(РабВремя = 0, 0, Окр(Оклад * 26 / РабВремя, 2));
18. user856012 13 13.10.18 17:07 Сейчас в теме
(17)
как-то так
Спасибо, но во-первых, мне-то это как-то ни к чему.

А во вторых, такой код приведет к тому, что у сотрудников с некорректно заполненной должностью (см.16) СуммаОплаты будет равна 0.

А если предположить, что она должна быть равна Окладу, то вместо 0 надо использовать Оклад.

Так что все зависит от корректной постановки задачи, чем автор... гм... не блещет.
19. Fox-trot 158 13.10.18 17:08 Сейчас в теме
(18) ну ты спросил, я ответил
20. user856012 13 13.10.18 17:11 Сейчас в теме
(19)
ну ты спросил, я ответил
Я спросил??? Единственный вопрос, который есть в (12):
Или я чего-то не понимаю?
Ответ - в этом кусочке кода? Ну, ладно... хотя этого я тем более не понимаю. ;)
21. Stanislav1993 13.10.18 17:30 Сейчас в теме
23. Aggressorak 15.10.18 15:39 Сейчас в теме
(21) Кто бы сомневался, как и в том, что она является секретной информацией, о которой никто кроме Вас не узнает...
stragner2; +1 Ответить
22. 24rus 125 15.10.18 04:44 Сейчас в теме
Как вариант сделать:
Попытка
  СуммаОплаты= ?(РабВремя = 0, 0, Окр(Оклад * 26 / РабВремя, 2));
исключение 
  Сообщить (ОписаниеОшибки())
КонецПопытки


и смотреть.
24. fly_byte@mail.ru 16.10.18 13:02 Сейчас в теме
Предварительно вгони в переменную найтирабочеевремя, от этого логика валится, что функцию не перевести в числовое значение.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот