Имя: Пароль:
1C
1С v8
Проверка на неравенство нулю
0 Singenor
 
29.05.12
15:18
Если ЗначениеЗаполнено(ЭтотОбъект.ЭтапПроекта) И ЭтотОбъект.Этап.ТрудозатратыПоНорме <> 0 Тогда
СтавкаНаЭтапе = ЭтотОбъект.ЭтапПроекта.СуммаЭтапа / ЭтотОбъект.ЭтапПроекта.ТрудозатратыПоНорме;
Иначе
Сообщить("Трудозатраты по норме не могут быть равными 0", Отказ);
Отказ = Истина;
КонецЕсли;
Для каждого ТекСтрока Из РаспределениеПоСотрудникам Цикл
ТекСтрока.КНачислению = СтавкаНаЭтапе * Текстрока.КНачислениюСотрудникуЧасов;
КонецЦикла;


Данный код мне выдает ошибку:
Документ.ЗаявкаНаНачисление.Форма.ФормаДокумента(688)}: Преобразование значения к типу Число не может быть выполнено
ТекСтрока.КНачислению = СтавкаНаЭтапе * Текстрока.КНачислениюСотрудникуЧасов;


как мне обойти ее?(
1 Любопытная
 
29.05.12
15:19
Выяснить какая из переменных содержит не число и исправить ситуацию
2 Kreont
 
29.05.12
15:20
Прверь отладчиком что здесь, типы какие:
СтавкаНаЭтапе
Текстрока.КНачислениюСотрудникуЧасов
3 Singenor
 
29.05.12
15:20
у них у обеих тип число
4 Kreont
 
29.05.12
15:21
визуально определил или как?
5 Buster007
 
29.05.12
15:21
ЭтотОбъект.Этап.ТрудозатратыПоНорме
6 Buster007
 
29.05.12
15:21
+(5) а здесь что?
7 jumper
 
29.05.12
15:21
(3) в отладчике какие значения?
8 Любопытная
 
29.05.12
15:21
А ТекСтрока.КНачислению какой тип имеет?
9 mikecool
 
29.05.12
15:22
ЭтотОбъект.Этап = пустое значение
10 Singenor
 
29.05.12
15:26
Ставка на этапе неопределено, а как ее сделать типом число?
11 Kreont
 
29.05.12
15:26
Если НЕ ТипЗнч(Текстрока.КНачислениюСотрудникуЧасов) = ТипЗнч("Число") Тогда
Сообщить("...");
и т.д. в цикле
12 Kreont
 
29.05.12
15:27
(10) :)
и что должно быть результатом неопределено*число?
13 Любопытная
 
29.05.12
15:27
(10) засунуть этот цикл в проверку
14 Singenor
 
29.05.12
15:27
да уж, в том то и проблема, что ничего*
15 Любопытная
 
29.05.12
15:27
Если ЗначениеЗаполнено(ЭтотОбъект.ЭтапПроекта) И ЭтотОбъект.Этап.ТрудозатратыПоНорме <> 0 Тогда
СтавкаНаЭтапе = ЭтотОбъект.ЭтапПроекта.СуммаЭтапа / ЭтотОбъект.ЭтапПроекта.ТрудозатратыПоНорме;
Для каждого ТекСтрока Из РаспределениеПоСотрудникам Цикл
ТекСтрока.КНачислению = СтавкаНаЭтапе * Текстрока.КНачислениюСотрудникуЧасов;
КонецЦикла;
Иначе
Сообщить("Трудозатраты по норме не могут быть равными 0", Отказ);
Отказ = Истина;
КонецЕсли;
16 Kreont
 
29.05.12
15:28
тогда типа (11) + сообщение что именно не заполнено и пропускай из обработки
17 Ненавижу 1С
 
гуру
29.05.12
15:31
телепатирую, там NULL
18 Singenor
 
29.05.12
15:45
ну почти так, только теперь Вылезает фраза :

{Документ.ЗаявкаНаНачисление.Форма.ФормаДокумента(1104)}: Деление на 0
   СтавкаНаЭтапе = ЭтотОбъект.ЭтапПроекта.СуммаЭтапа / ЭтотОбъект.ЭтапПроекта.ТрудозатратыПоНорме;
А мне нужно, чтобы она в нижнем окне ошибок, где сообщить выдается вылезала, как так сделать? или может установить в справочнике, откуда берутся данные, что Трудозатраты не могут быть равны нулю?
19 Любопытная
 
29.05.12
15:47
(18) почти так это как?
20 Singenor
 
29.05.12
15:52
и еще один вопрос, как сделать, чтобы пользователь не смог снять установленный отбор?
21 Fish
 
29.05.12
15:52
(18) А для тебя явилось открытием, что на 0 делить нельзя? Жесть какая :)))
Вообще-то, если делишь на какую-то переменную, которая может принимать нулевое значение, то принято проверку на 0 делать.
22 Singenor
 
29.05.12
16:19
ФормаВыбораЗадача = Справочники.ЗадачиИсполнителей.ПолучитьФормуВыбора(, Ссылка);
ФормаВыбораЗадача.Отбор.Владелец.Доступность = Ложь;
ФормаВыбораЗадача.Отбор.Исполнитель.Доступность = Ложь;



То есть по владельцу и по исполнителю выбор отбора должен быть недоступен так?
а мне выдается ошибка про то, что Доступность не обнаружено
23 Singenor
 
29.05.12
16:22
(19) а можно ли сделать, что если Ставка = 0, то и Этап тогда не выбирался вообще?
24 Любопытная
 
29.05.12
16:23
(23) сделать можно все, что душа пожелает.
25 Singenor
 
29.05.12
16:23
(24)
подскажите как ;)
26 Любопытная
 
29.05.12
16:25
Если ЗначениеЗаполнено(ЭтотОбъект.ЭтапПроекта) И ЭтотОбъект.ЭтапПроекта.ТрудозатратыПоНорме <> 0 Тогда
СтавкаНаЭтапе = ЭтотОбъект.ЭтапПроекта.СуммаЭтапа / ЭтотОбъект.ЭтапПроекта.ТрудозатратыПоНорме;
Для каждого ТекСтрока Из РаспределениеПоСотрудникам Цикл
ТекСтрока.КНачислению = СтавкаНаЭтапе * Текстрока.КНачислениюСотрудникуЧасов;
КонецЦикла;
Иначе
Сообщить("Трудозатраты по норме не могут быть равными 0", Отказ);
Отказ = Истина;
КонецЕсли;

Думаю так
27 Singenor
 
29.05.12
16:26
(26) это тоже самое, что было выше), Этап выбирается, но не считается ТЧ, как и нужно + выдается сообщение что трудозатраты равны нулю, но мне нужно, чтобы даже этап тогда не выбирался
28 Любопытная
 
29.05.12
16:28
(27) ну я же не знаю, что у тебя там и где.
29 Любопытная
 
29.05.12
16:29
Поставь вначале проверку на Ставка = 0 и делай все, что хочешь
30 Singenor
 
29.05.12
16:30
(29) -(22) а как с отбором сделать?
31 Singenor
 
29.05.12
16:58
сделал, с делением на 0, все круто, помогите теперь с отбором)
32 Kreont
 
29.05.12
18:04
ФормаВыбораЗадача.НастройкаОтбора.Владелец.Доступность = Ложь;
33 Singenor
 
30.05.12
10:51
Поле объекта не обнаружено (НастройкаОтбора)
        ФормаВыбораЗадача.НастройкаОтбора.Владелец.Доступность = Ложь;
34 Kreont
 
30.05.12
11:06
ФормаВыбораЗадача.ХХХХХХСписок.НастройкаОтбора.Владелец.Доступность = Ложь;
вместо х = документ или справочник или ..хз что еще )
35 hhhh
 
30.05.12
11:12
(33) ЭлементыФормы надо

ФормаВыбораЗадача.ЭлементыФормы.<ИмяТвоегоТабличногоПоля>.НастройкаОтбора.Владелец.Доступность = Ложь;
AdBlock убивает бесплатный контент. 1Сергей