Имя: Пароль:
1C
1С v8
Помогите с ошибкой
,
0 Boudybuilder
 
27.07.11
01:18
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |ЗначениеНачисленияПлатыЗаРемонт
   |ИЗ
   |РегистрСведений.РасчетыЗароботнойПлаты.СрезПоследних КАК ВыбранРегистр
   |ГДЕ
   |ВыбранРегистр.ФизическоеЛицо = &ФизическоеЛицо";
   Запрос.УстановитьПараметр("ФизическоеЛицо",МастерФизЛицо);
   РезультатЗапроса = Запрос.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
       Выборка.Выбрать();
       Пока Выборка.Следующий() Цикл
       НаценкаЗаРемонт = Выборка.ЗначениеНачисленияПлатыЗаРемонт;
   КонецЦикла;
   
   //Расчет Зароботка Мастеру Ремонта
   Если НЕ МастерФизЛицо = 0 Тогда
   НачислениеЗаРемонт = НаценкаЗаРемонт*(ЦінаВихідна-ЗапчастиСебестоимость);
КонецЕсли;
1 Boudybuilder
 
27.07.11
01:19
Выбивает эту ошибку:


{Документ.ВнутреннийРемонт.Форма.ФормаДокумента.Форма(91)}: Преобразование значения  к типу Число не может быть исполнено
   НачислениеЗаРемонт = НаценкаЗаРемонт*(ЦінаВихідна-ЗапчастиСебестоимость);
2 Boudybuilder
 
27.07.11
01:19
Выбивает эту ошибку:


{Документ.ВнутреннийРемонт.Форма.ФормаДокумента.Форма(91)}: Преобразование значения  к типу Число не может быть исполнено

   НачислениеЗаРемонт = НаценкаЗаРемонт*(ЦінаВихідна-ЗапчастиСебестоимость);
3 Boudybuilder
 
27.07.11
01:20
А в начале этой процедуры обьявил переменную

Перем НаценкаЗаРемонт;
Чтото тут на нее грешит...
4 IamAlexy
 
27.07.11
01:21
у тебя запрос ничего не возвращает.. вот в формуле неопределно и вываливает ошибку..

ты запрос поправь... конструктором его открой - не ругается?
5 kiruha
 
27.07.11
01:28
и это зачем
Выборка = РезультатЗапроса.Выбрать();
       Выборка.Выбрать();// ?

и в отладчике см тип переменных
6 y22-k
 
27.07.11
01:35
выборка.выбрать() убери из цикла
в отладчике посмотри тип переменных
7 Boudybuilder
 
27.07.11
01:43
ВЫБРАТЬ
   |ВыбранРегистр.ЗначениеНачисленияПлатыЗаРемонт
   |ИЗ
   |РегистрСведений.РасчетыЗароботнойПлаты.СрезПоследних КАК ВыбранРегистр
8 Boudybuilder
 
27.07.11
01:44
Все работает!
9 Boudybuilder
 
27.07.11
01:45
В консоле запросов возвращает число....
10 Boudybuilder
 
27.07.11
01:48
Процедура ОтветственноеФизическоеЛицоПриИзменении(Элемент)
         Перем НаценкаЗаРемонт;
       
   
     Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |ВыбранРегистр.ЗначениеНачисленияПлатыЗаРемонт
   |ИЗ
   |РегистрСведений.РасчетыЗароботнойПлаты.СрезПоследних КАК ВыбранРегистр
   |ГДЕ
   |ВыбранРегистр.ФизическоеЛицо = &ФизическоеЛицо";
   Запрос.УстановитьПараметр("ФизическоеЛицо",МастерФизЛицо);
   РезультатЗапроса = Запрос.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
       Пока Выборка.Следующий() Цикл
       НаценкаЗаРемонт = Выборка.ЗначениеНачисленияПлатыЗаРемонт;
   КонецЦикла;
   
   //Расчет Зароботка Мастеру Ремонта
   Если НЕ МастерФизЛицо = 0 Тогда
   НачислениеЗаРемонт = НаценкаЗаРемонт*(ЦінаВихідна-ЗапчастиСебестоимость);
КонецЕсли;
11 Boudybuilder
 
27.07.11
01:50
НачислениеЗаРемонт = НаценкаЗаРемонт*(ЦінаВихідна-ЗапчастиСебестоимость);

Это все реквизиты дока кроме НаценкаЗаРемонт
12 Boudybuilder
 
27.07.11
01:50
Реквизиты с типом - число
13 Terve-R-
 
27.07.11
01:55
Что за ЦінаВихідна?
Напиши по-русски, она не понимает!
14 Terve-R-
 
27.07.11
02:07
Я бы написал так:

Если НЕ МастерФизЛицо = 0 Тогда
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ВыбранРегистр.ЗначениеНачисленияПлатыЗаРемонт
                  |ИЗ
                  |    РегистрСведений.РасчетыЗароботнойПлаты.СрезПоследних(, ФизическоеЛицо = &ФизическоеЛицо) КАК ВыбранРегистр";
   Запрос.УстановитьПараметр("ФизическоеЛицо",МастерФизЛицо);
   РезультатЗапроса = Запрос.Выполнить().Выбрать();
   Если РезультатЗапроса.Следующий() Тогда
       //Расчет Зароботка Мастеру Ремонта
       НаценкаЗаРемонт = РезультатЗапроса.ЗначениеНачисленияПлатыЗаРемонт;
       НачислениеЗаРемонт = НаценкаЗаРемонт*(ЦінаВихідна-ЗапчастиСебестоимость);
   КонецЕсли;
КонецЕсли;
15 Boudybuilder
 
27.07.11
02:15
|ВыбранРегистр.ФизическоеЛицо = &Регистратор";
   Запрос.УстановитьПараметр("Регистратор",ЭлементыФормы.МастерФизЛицо.Значение);



Так работает...
По реквизиту не фильтровало , тока по єлементуформі со ссілкой на реквизит...
16 Boudybuilder
 
27.07.11
02:56
(14)
Как получить курс на дату проведения дока???
17 Boudybuilder
 
27.07.11
02:56
//Получить СуммуУпр
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |ВыбранРегистр.Курс,
   |ВыбранРегистр.Кратность
   |ИЗ
   |РегистрСведений.КурсыВалют.СрезПоследних КАК ВыбранРегистр
   |ГДЕ
   |ВыбранРегистр.Валюта= &Регистратор";
   Запрос.УстановитьПараметр("Регистратор",Справочники.Валюты.НайтиПоКоду("840"));
 РезультатЗапроса = Запрос.Выполнить();
 Выборка = РезультатЗапроса.Выбрать();
Выборка.Выбрать();
Пока Выборка.Следующий() Цикл
   СуммаУпр=(НачислениеЗаРемонт/Выборка.Курс)*Выборка.Кратность;
КонецЦикла;
18 Terve-R-
 
27.07.11
03:05
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    КурсыВалютСрезПоследних.Курс,
                  |    КурсыВалютСрезПоследних.Кратность
                  |ИЗ
                  |    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДок, Валюта = &Регистратор) КАК КурсыВалютСрезПоследних";
   Запрос.УстановитьПараметр("ДатаДок",ЭтотОбъект.Дата);
   Запрос.УстановитьПараметр("Регистратор",Справочники.Валюты.НайтиПоКоду("840"));
   Выборка = Запрос.Выполнить().Выбрать();
     Если Выборка.Следующий() Тогда
       СуммаУпр=(НачислениеЗаРемонт/Выборка.Курс)*Выборка.Кратность;
   КонецЕсли;
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс