Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 04:54

Ошибка на 18 занятии

Автор fffaleksandr@yandex.ru, 27 фев 2018, 13:17

0 Пользователей и 1 гость просматривают эту тему.

fffaleksandr@yandex.ru

Здраствуйте.Помогите пожалуйста обучаюсь по учебнику Радченкова,18 занятие при попытке провести документ начисления сотрудника выдает ошибку .
Ошибка при выполнении обработчика - 'ОбработкаПроведения'вроде все по книге делал.
по причине:
{ОбщийМодуль.ПроведениеРасчетов.Модуль(29)}: Ошибка при вызове метода контекста (Выполнить)
    ВыборкаРезультата = Запрос.Выполнить().Выбрать();
по причине:
{(9, 20)}: Не задано значение параметра "CписокСотрудников"
И Сотрудник В (<<?>>&CписокСотрудников)) КАК НачисленияДанныеГрафика

Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   // регистр Начисления
   Движения.Начисления.Записывать = Истина;
   Для Каждого ТекСтрокаНачисления Из Начисления Цикл
      Движение = Движения.Начисления.Добавить();
      Движение.Сторно = Ложь;
      Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;
      Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;
      Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
      Движение.ПериодРегистрации = Дата;
      Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала;
      Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
      Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;
      Движение.ГрафикРаботы = ТекСтрокаНачисления.ГрафикРаботы;
      Движение.ИсходныеДанные = ТекСтрокаНачисления.Начислено;
   КонецЦикла;
   //Записываем движения регистров
         Движения.Начисления.Записать();
    //Получим список всех сотрудников,Содержащихся в документе
   
   Запрос = Новый Запрос(
   
      "ВЫБРАТЬ РАЗЛИЧНЫЕ
      |   НачисленияСотрудникамНачисления.Сотрудник
      |ИЗ
      |   Документ.НачисленияСотрудникам.Начисления КАК НачисленияСотрудникамНачисления
      |ГДЕ
      |   НачисленияСотрудникамНачисления.Ссылка = &ТекущийДокумент");
   
   Запрос.УстановитьПараметр("ТекущийДокумент",Ссылка);
       //Сформируем список сотрудников
      ТаблЗнач = Запрос.Выполнить().Выгрузить();
      МассивСотрудников = ТаблЗнач.ВыгрузитьКолонку("Сотрудник");
      //Вызов процедуры Рассчитать начисления из общего модуля
      ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления,
      ПланыВидовРасчета.ОсновныеНачисления.Оклад,МассивСотрудников);
      Движения.Начисления.Записать(,Истина);
      
      ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления,ПланыВидовРасчета.ОсновныеНачисления.Премия,МассивСотрудников);
      Движения.Начисления.Записать(,Истина);
   
   КонецПроцедуры
и общий модуль
Процедура РассчитатьНачисления(НаборЗаписейРегистра,ТребуемыйВидРасчета,СписокСотрудников) Экспорт
      Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;

      //Рассчитать первичные записи
   Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
      //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
       
   Запрос = Новый Запрос;
   Запрос.Текст =                                                                    
      "ВЫБРАТЬ
      |   НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,
      |   НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
      |   НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки
      |ИЗ
      |   РегистрРасчета.Начисления.ДанныеГрафика(
      |         Регистратор = &Регистратор
      |            И ВидРасчета = &ВидРасчета
      |            И Сотрудник В (&CписокСотрудников)) КАК НачисленияДанныеГрафика";
                     
                     
 

   Запрос.УстановитьПараметр("Регистратор", Регистратор);
   Запрос.УстановитьПараметр("ВидРасчета",ТребуемыйВидРасчета);
   Запрос.УстановитьПараметр("СписокСотрудников",СписокСотрудников);
   //Выборка = РезультатЗапроса.Выполнить().Выбрать();
    ВыборкаРезультата = Запрос.Выполнить().Выбрать();
      Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
   СтруктураНомер  = Новый Структура("НомерСтроки");
   СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
   ВыборкаРезультата.Сбросить();
   Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
      Если ВыборкаРезультата.Норма = 0 Тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Вид расчета:Оклад - Нет рабочих дней в заданном периоде";
      Сообщение.Сообщить();
      ЗаписьРегистра.Результат = 0;
   Иначе
      
      //Рассчитать оклал по фактическому периоду и исходным данным.
   ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные.ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт;
   
   Сообщение  = Новый СообщениеПользователю;
   Сообщение.Текст = "ВыполненРасчет"+ЗаписьРегистра.Регистратор +"-"+    ЗаписьРегистра.ВидРасчета + "-" + ЗаписьРегистра.Сотрудник;
   Сообщение.Сообщить();
    КонецЕсли;
   КонецЕсли;         
   КонецЦикла;   
   
   
      
      
      
      
   
      
   //Расчитать вторичные записи
   ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
   
   
      //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.

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


pavl_vs

Цитировать{(9, 20)}: Не задано значение параметра "CписокСотрудников"
И Сотрудник В (<<?>>&CписокСотрудников)) КАК НачисленияДанныеГрафика
Так сформируйте этот список - СписокСотрудников как массив, список, нигде не определен.
Возможно я не внимательно посмотрел - МассивСотрудников, как колонка ТЗ (массив ли это?), определен, а определения СписокСотрудников не нашел.

DmitriyF

Цитата: fffaleksandr@yandex.ru от 27 фев 2018, 13:17
Здраствуйте.Помогите пожалуйста обучаюсь по учебнику Радченкова,18 занятие при попытке провести документ начисления сотрудника выдает ошибку .
Ошибка при выполнении обработчика - 'ОбработкаПроведения'вроде все по книге делал.
по причине:
По Радченко даже есть специальный форум (если не знали конечно):D http://devtrainingforum.v8.1c.ru/forum/

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск