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

Помогите разобраться с ошибкой в коде

Автор ildarik_58, 17 мая 2013, 11:23

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

ildarik_58

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

ildarik_58

вот пишет ошибку {ОбщийМодуль.ПроведениеРасчетов.Модуль(78,3)}: Ожидается ключевое слово 'КонецЦикла' ('EndDo')
      <<?>>КонецЕсли; (Проверка: Толстый клиент (обычное приложение))

Besart

ВыборкаРезультата=Запрос.Выполнить().Выбрать();
      Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл //здесь у вас ничинается цикл
         СтруктураНомер=НовыйСтруктура("НомерСтроки");
         
         СтруктураНомер.НомерСтроки=ЗаписьРегистра.НомерСтроки;
         ВыборкаРезультата.Сбросить();
         Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер)
            Тогда
            ЗаписьРегистра.Результат=ВыборкаРезультата.База* (10/100);
            Сообщить("Выполнен расчет"+ Запись.Регистра.Регистратор+ "-" + ЗаписьРегистра.ВидРасчета + "-" + ЗаписьРегистра.Сотрудник,);
         
         КонецЕсли;
      КонецЦикла; //а здесь должен заканчиваться

Теги:

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

Рейтинг@Mail.ru

Поиск