Имя: Пароль:
1C
1С v8
ПроведениеРасчетов
0 Slk777
 
21.12.13
00:43
Здраствуйте Уважаемые.Я самообучаюсь по книге М.Г. Радченко и не могу Понять что я делаю не так. Остановился на стр 562. В прописании Листинга. Написал всё вроде правельно но он выдает ошибку:{ОбщийМодуль.ПроведениеРасчетов.Модуль(55,5)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
                <<?>>КонецЕсли;
{ОбщийМодуль.ПроведениеРасчетов.Модуль(86,33)}: Обнаружено логическое завершение исходного текста модуля
                    ВыборкаРезультата = Запрос.<<?>>Выполнить().Выбрать();

Я перебробовал всё за неделю так и не смог решить. я Не понимаю..
1 Slk777
 
21.12.13
00:44
Вот Мой Листинг

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

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

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

КонецЕсли;

    КонецПроцедуры
2 Diter
 
21.12.13
00:47
отформатировать не судьба? я пока вижу лишний КонецЦикла в самом начале. и вообще как то несуразно все. что в 8-ке цикл начинать никак не надо?
3 Diter
 
21.12.13
00:47
на это и ругается. где то личшие "закрывающие скобки" выражений цикла или условия
4 GROOVY
 
21.12.13
00:48
http://devtrainingforum.v8.1c.ru/forum/

Там тебе автор ответит.

Это же вроде в книге написано...
5 GROOVY
 
21.12.13
00:49
Особенно глянь тему: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=604347 а то вдруг ; пропустили издатели.
6 Slk777
 
21.12.13
00:50
Я сам сижу дома и обучаюсь. не на какие курсы и не каких знакомых в этой сфере нет и что токой отформить я тоже не вкурсе. Если можете Хелп.
7 GROOVY
 
21.12.13
00:51
Сходи на курсы. И знакомыми обзаведешься и опытом.
8 Diter
 
21.12.13
00:51
(7) до курсов мне лично почти как до луны. вот чего мне делать тогда? а что может в книге ошибка быть?
9 Slk777
 
21.12.13
00:52
GROOVY щас по твоей ссылке прогуляюсь. СПС
10 jsmith82
 
21.12.13
00:53
регистры расчета самое слабое место у радченко
в библии лучше написано
11 jsmith82
 
21.12.13
00:53
и планы обмена у него так себе
12 Slk777
 
21.12.13
00:56
Скажите, а сам листинг правельно прописан? это значительно сузит круг моего поиска.
13 GROOVY
 
21.12.13
00:56
(8) Ты по ссылкам погуляй, чей не много времени займет.

По расчетам отвечу. На грамотно поставленный вопрос. На своем форуме chistov.spb.ru

Занудный я, да?
14 GROOVY
 
21.12.13
00:57
(12) Где?
15 jsmith82
 
21.12.13
00:57
(12) пишет же, что нет. может, непечатный символ где вставился
16 jsmith82
 
21.12.13
00:57
попробуй скопировать в блокнот, потом заново вставить в модуль
17 Gavrila
 
21.12.13
00:58
(0)
если ты неделю с этой фигней возился, то я лично не понимаю что дальше будет...

Процедура РассчитатьНачисления(НаборЗаписейРегистра,ТребуемыйВидРасчета,СписокСОтрудников)Экспорт
    
    Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;
    
    //Рассчитать первичные записи.
    
    Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
        
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,
        |    НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
        |    НачисленияДанныеГрафика.НомерСтроки
        |ИЗ
        |    РегистрРасчета.Начисления.ДанныеГрафика(
        |            Регистратор = &Регистратор
        |                И ВидРасчета = &ВидРасчета
        |                И Сотрудник В (&СписокСотрудников)) КАК НачисленияДанныеГрафика";
        
        Запрос.УстановитьПараметр("Регистратор",Регистратор);
        Запрос.УстановитьПараметр("ВидРасчета",ТребуемыйВидРасчета);
        Запрос.УстановитьПараметр("СписокСотрудников",СписокСотрудников);
        
        ВыборкаРезультата = Запрос.Выполнить().Выбрать();
        
        Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
            СтруктураНомер = Новый Структура("НомерСтроки");
            СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
            ВыборкаРезультата.Сбросить();
            Если ВыборкаРезультата.Норма = 0 Тогда
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "ВидРасчета:Оклад - Нет рабочих дней в заданном переоде";
                
                Сообщение.Сообщить();
                ЗаписьРегистра.Результат = 0;
                
                //////    КонецЕсли;
                //////КонецЦикла;
                
                
            Иначе
                //Рассчитать оклад по фактическому периоду
                
                // и исходным данным.
                
                ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные
                / ВыборкаРезультата.Норма)* ВыборкаРезультата.Факт;
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Выполнить расчет" + ЗаписьРегистра.Регистратор + "-" +
                ЗаписьРегистра.ВидРасчета + "-" +
                ЗаписьРегистра.Сотрудник;
                
                Сообщение.Сообщить();
                //////КонецЕсли;
                
                
            КонецЕсли;
        КонецЦикла;
        
        
        // Рассчитать вторичные записи.
        
    ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
        
        
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    НачисленияБазаНачисления.РезультатБаза КАК База,
        |    НачисленияБазаНачисления.НомерСтроки
        |ИЗ
        |    РегистрРасчета.Начисления.БазаНачисления(
        |            &ИзмеренияОсновного,
        |            &ИзмеренияБазового,
        |            ,
        |            Регистратор = &Регистратор
        |                И ВидРасчета = &ВидРасчета
        |                И Сотрудник В (&СписокСотрудников)) КАК НачисленияБазаНачисления";
        
        
        Измер = Новый Массив(1);
        Измер[0] = "Сотрудник";
        
        Запрос.УстановитьПараметр("ИзмеренияОсновного",Измер);
        Запрос.УстановитьПараметр("ИзмеренияБазового",Измер);
        Запрос.УстановитьПараметр("Регистратор",Регистратор);
        Запрос.УстановитьПараметр("ВидРасчета",ТребуемыйВидРасчета);
        Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
        
        ВыборкаРезультата = Запрос.Выполнить().Выбрать();
        
        
        Для Каждого ЗаписьРегистр Из НаборЗаписейРегистра Цикл
            СтруктураНомер = Новый Структура("НомерСтроки");
            СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
            ВыборкаРезультата.Сбросить();
            Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
                ЗаписьРегистра.Результат = ВыборкаРезультата.База*(10/100);
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Выполнен расчет" +
                ЗаписьРегистра.Регистратор
                +"-"+ ЗаписьРегистра.ВидСчета
                +"-"+ ЗаписьРегистра.Сторудник;
                
                Сообщение.Сообщить();
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры
18 Diter
 
21.12.13
00:59
я же говорил - "скобки" в выражениях цикла и условий....
19 Gavrila
 
21.12.13
01:00
+(17)
помимо элементарных ошибок в базовых конструкциях, некоторые переменные в разных языках набраны.
короче, садись -2 :D
советую начать с изучения бейсика. через пару лет по результатам понемногу переходить к адинєс
20 Slk777
 
21.12.13
01:00
Gavrila я ТЕ памятник Поставлю Спс ГРОМАДНЫЙ!!!
21 Slk777
 
21.12.13
01:02
Жесть... Все стало намного сосем плохо...{ОбщийМодуль.ПроведениеРасчетов.Модуль(52)}: Преобразование значения к типу Число не может быть выполнено
                ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные
22 Gavrila
 
21.12.13
01:03
мде... нианада мнеза єто памятник, а то потомки проклянут
23 Slk777
 
21.12.13
01:04
;)
24 jsmith82
 
21.12.13
01:04
(22) насчёт бейсика ты был прав по ходу
тут форум по 1с, а не по программированию
25 GROOVY
 
21.12.13
01:05
(21) Чувак, тебе точно в (7).
Там и про неявное преобразование типов объяснят. Ну на нормальных курсах, а не халтурных.
26 jsmith82
 
21.12.13
01:06
(25) имхается, ТС в (19)
27 GROOVY
 
21.12.13
01:07
(26) не эффективно.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший