Здравствуйте, занимаюсь по книге Радченко и Хрусталева. Обычно читаю задание не смотрю, и пишу сам запрос по условию. Тут сделал так. Ошибка! Посмотрел внимательно, сделал все как по учебнику, все ровно ошибка. Помогите пожалуйста разобраться
Процедура РасчитатьНачисления(НаборЗаписейРегистра, ТребуемыйВидРасчета, СписокСотрудников) Экспорт
Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;
//Расчитать первычный записи
Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,
| НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
| НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки
|ИЗ
| РегистрРасчета.Начисления.ДанныеГрафика(Регистратор = &Регистратор И
| ВидРасчета = &ВидРасчета И Сотрудник В (&СписокСотрудников))
| КАК НачисленияДанныеГрафика";
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
Результат = Запрос.Выполнить();
ВыборкаРезультата = Результат.Выбрать();
Для Каждого ЗаписьРегистра ИЗ НаборЗаписейРегистра Цикл
СтруктураНомер = Новый Структура("НомерСтроки");
СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
ВыборкаРезультата.Сбросить();
Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
Если ВыборкаРезультата.Норма = 0 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Вид расчета : Оклад - Нет рабочих дней в периоде";
Сообщение.Сообщить();
ЗаписьРегистра.Результат = 0;
Иначе
//Расчитать оклад по фактическому периоду и исходным данным
ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанныеВыборкаРезультата.Норма) * ВыборкаРезультата.Факт;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Выполнен расчет" = ЗаписьРегистра.Регистратор + "-" + ЗаписьРегистра.ВидРасчтеа + "-" +
ЗаписьРегистра.Сотрудник;
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
Запрос1 = Новый Запрос;
Запрос1.Текст =
"ВЫБРАТЬ
| НачисленияБазаНачисления.РезультатБаза,
| НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки
|ИЗ
| РегистрРасчета.Начисления.БазаНачисления(
| &ИзмеренияОсновного,
| &ИзмеренияБазового,
| ,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчета
| И Сотрудник В (&СписокСотрудников)) КАК НачисленияБазаНачисления";
Измер = Новый Массив(1);
Измер[0] = "Сотрудник";
Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер);
Запрос.УстановитьПараметр("ИзмеренияБазового", Измер);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
ВыборкаРезультата = Запрос1.Выполнить().Выбрать();
Для Каждого ЗаписьРегистра ИЗ НаборЗаписейРегистра Цикл
СтруктураНомер = Новый Структура("НомерСтроки");
СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
ВыборкаРезультата.Сбросить();
Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
ЗаписьРегистра.Результат = ВыборкаРезультата.База * (10/100);
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Выполнить расчет" + ЗаписьРегистра.Регистратор +
" - " + ЗаписьРегистра.ВидРасчета + "-" + ЗаписьРегистра.Сотрудник;
Сообщение.Сообщить();
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
- Тут всегда ложь, в первом запросе!
[code=e1cv8][code=e1cv8]
[/code][/code]