7.7 Не могу понять где ошибка

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем TODD22, 13 дек 2012.

  1. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    Здравствуйте.

    [CODE1c]

    Процедура РассчитатьСтроку()
    л_ВДнях = 1;
    л_Время = Дни;
    Если Часы0 = 1 Тогда
    л_ВДнях = 0;
    л_Время = Часы;
    КонецЕсли;

    Если ОкруглятьКопейки=1 Тогда
    ВарОкр = 0;
    Иначе
    ВарОкр = 2;
    КонецЕсли;

    Если ПереключательСпособРасчета = 1 Тогда
    Если л_ВДнях = 1 Тогда
    Сумма = ОКР(Парам*Дни,ВарОкр);
    Иначе
    Сумма = ОКР(Парам*Часы,ВарОкр);
    КонецЕсли;
    Гл_РКСЕВ(Контекст);
    ИначеЕсли ПереключательСпособРасчета = 2 Тогда
    БИ.ПериодМ(ДатаБазы);
    Если л_ВДнях=1 Тогда
    ТипСуммы="К";
    Иначе
    ТипСуммы="С";
    Конецесли;
    //Юлия 24.03.2009++
    Если ((Начисление.Код = "007") или (Начисление.Код = "012") или (Начисление.Код = "011")) и (ТипСуммы = "С") Тогда
    БазСум = Сотрудник.Ставка;
    Табель = Сотрудник.Табель;
    НормаГодовая = Табель.НомерЧасовСреднегодовая.Получить(ДатаДок);
    Если НормаГодовая<>0 Тогда
    Сумма = (БазСум*л_Время/НормаГодовая)*Парам/100;
    Иначе
    Сообщить("Заполните норму часов среднегодовую для табеля "+Табель);
    Сумма = 0;
    КонецЕсли;
    Иначе
    БазВр = БИ.КО(СчетПоКоду("ВР.Р"), ТипСуммы,,Сотрудник);
    БазСум = Гл_ПодсчитатьБазуНУ(ДатаБазы,Начисление,Сотрудник,"О");
    Если БазВР > 0 Тогда
    Если л_Время = БазВР Тогда
    Сумма = ОКР(БазСум*Парам/100,ВарОкр);
    ИначеЕсли Дни0=1 Тогда
    СрЗар = ОКР(БазСум/БазВР,2);
    Сумма = ОКР(л_Время*СрЗар*Парам/100,ВарОкр);
    Иначе
    СрЗар = ОКР(БазСум/БазВР,3);
    Сумма = ОКР(л_Время*СрЗар*Парам/100,ВарОкр);
    Конецесли;
    Иначе
    Сумма = 0;
    Конецесли;
    //Юлия 24.03.2009
    Гл_РКСЕВ(Контекст);
    ИначеЕсли ПереключательСпособРасчета = 3 Тогда
    БазВр = 0;
    БазСум = 0;
    Если Сотрудник.Табель.Выбран() = 0 Тогда
    Сообщить("Строка "+НомерСтроки + " сотр. " + Сотрудник + " не выбран табель!","!");
    Сумма = 0;
    Иначе
    Если Сотрудник.СистемаОплаты = Перечисление.СистемыОплаты.ПоОкладу Тогда
    Если л_ВДнях=1 Тогда
    БазВр = Сотрудник.Табель.НормаДней.Получить(ДатаБазы);
    Иначе
    БазВр = Сотрудник.Табель.НормаЧасов.Получить(ДатаБазы);
    //Татьяна 27.03.2009
    Если (Начисление.Код = "001") или (Начисление.Код = "012") или (начисление.код = "011") Тогда
    БазВр = Сотрудник.Табель.НормаЧасовСреднегодовая.Получить(ДатаБазы);
    КонецЕсли;
    //Татьяна конец


    КонецЕсли;
    Если БазВр = 0 Тогда
    Сообщить("Строка "+НомерСтроки + " сотр. " + Сотрудник + " табель " + Сотрудник.Табель + " не введена норма на месяц "+МесяцБазы+"!","!");
    Сумма = 0;
    Иначе
    Сумма = Окр(Парам/БазВр * л_Время,ВарОкр);
    КонецЕсли;
    ИначеЕсли Сотрудник.СистемаОплаты = Перечисление.СистемыОплаты.ПоТарифу Тогда
    Если Сотрудник.Табель.ЕдиницаИзмерения = Перечисление.ДниЧасы.Дни Тогда
    Сумма = ОКР(Парам*Дни,ВарОкр);
    Иначе
    Сумма = ОКР(Парам*Часы,ВарОкр);
    КонецЕсли;
    Конецесли;
    КонецЕсли;
    Гл_РКСЕВ(Контекст);
    ИначеЕсли ПереключательСпособРасчета = 4 Тогда
    Если ЗнаменательДроби > 0 Тогда
    БИ.ПериодМ(ДатаБазы);
    Если л_ВДнях = 1 Тогда
    ТипСуммы = "К";
    Иначе
    ТипСуммы = "С";
    Конецесли;
    БазВр = БИ.КО(СчетПоКоду("ВР.Р"), ТипСуммы,,Сотрудник);
    БазСум = Гл_ПодсчитатьБазуНУ(ДатаБазы,Начисление,Сотрудник,"О");
    Если БазВР > 0 Тогда
    Если л_Время = БазВР Тогда
    Сумма = ОКР(БазСум * ЧислительДроби / ЗнаменательДроби, ВарОкр);
    ИначеЕсли Дни0=1 Тогда
    СрЗар = ОКР(БазСум / БазВР, ВарОкр);
    Сумма = ОКР(л_Время * СрЗар * ЧислительДроби / ЗнаменательДроби, ВарОкр);
    Иначе
    СрЗар = ОКР(БазСум/БазВР, 3);
    Сумма = ОКР(л_Время * СрЗар * ЧислительДроби / ЗнаменательДроби,ВарОкр);
    Конецесли;
    Иначе
    Сумма = 0;
    Конецесли;
    Гл_РКСЕВ(Контекст);
    Иначе
    Сообщить("Знаменатель дроби нулем быть не может!");
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры

    [/CODE1c]

    Выдаёт вот такую ошибку

    "<<?>>ИначеЕсли ПереключательСпособРасчета = 3 Тогда
    {Документ.НачЗаВремя.Форма.Модуль(223)}: Ожидается ключевое слово 'КонецЕсли' ('EndIf')
    При проверке модуля обнаружены синтаксические ошибки!"
    Куда его вставить? Вроде все условия на месте. Или я где то туплю.

    обращаю ваше внимание что тэги на форуме изменились...
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Судя по всему условие
    Код:
    Если ((Начисление.Код = "007") или (Начисление.Код = "012") или (Начисление.Код = "011")) и (ТипСуммы = "С") Тогда
    не закрыто.

    Вы по группировкам кода посмотрите. (не глянул, что 7.7)
  3. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    Вот спасибо, а то сижу уже в глазах режет и не вижу.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    вот здесь похоже

    //Юлия 24.03.2009
    Гл_РКСЕВ(Контекст);

    КонецЕсли;
  5. GlukAl
    Offline

    GlukAl Опытный в 1С

    Регистрация:
    4 окт 2012
    Сообщения:
    187
    Симпатии:
    7
    Баллы:
    29
    Код:
      //Юлия  24.03.2009++
    Если ((Начисление.Код = "007") или (Начисление.Код = "012") или (Начисление.Код = "011")) и (ТипСуммы = "С") Тогда
    //...
    //...
    //...
    Иначе
    БазВр = БИ.КО(СчетПоКоду("ВР.Р"), ТипСуммы,,Сотрудник);
    //...
    //...
    //...
    ИначеЕсли ПереключательСпособРасчета = 3 Тогда
    //...
    //...
    //...
    ИначеЕсли ПереключательСпособРасчета = 4 Тогда
    //...
    //...
    //...
    КонецЕсли;
    
    присмотритесь к ИНАЧЕ сразу после ЕСЛИ, ведь потом уже не могут выполняться ИНАЧЕЕСЛИ
  6. Tana2709
    Offline

    Tana2709

    Регистрация:
    17 дек 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    //Юлия 24.03.2009++
    ///////////****************************************** начало ЕСЛИ
    Если ((Начисление.Код = "007") или (Начисление.Код = "012") или (Начисление.Код = "011")) и (ТипСуммы = "С") Тогда
    БазСум = Сотрудник.Ставка;
    Табель = Сотрудник.Табель;
    НормаГодовая = Табель.НомерЧасовСреднегодовая.Получить(ДатаДок);
    Если НормаГодовая<>0 Тогда
    Сумма = (БазСум*л_Время/НормаГодовая)*Парам/100;
    Иначе
    Сообщить("Заполните норму часов среднегодовую для табеля "+Табель);
    Сумма = 0;
    КонецЕсли;
    /////////******************************** продолжение ИНАЧЕ
    Иначе
    БазВр = БИ.КО(СчетПоКоду("ВР.Р"), ТипСуммы,,Сотрудник);
    БазСум = Гл_ПодсчитатьБазуНУ(ДатаБазы,Начисление,Сотрудник,"О");
    Если БазВР > 0 Тогда
    Если л_Время = БазВР Тогда
    Сумма = ОКР(БазСум*Парам/100,ВарОкр);
    ИначеЕсли Дни0=1 Тогда
    СрЗар = ОКР(БазСум/БазВР,2);
    Сумма = ОКР(л_Время*СрЗар*Парам/100,ВарОкр);
    Иначе
    СрЗар = ОКР(БазСум/БазВР,3);
    Сумма = ОКР(л_Время*СрЗар*Парам/100,ВарОкр);
    Конецесли;
    Иначе
    Сумма = 0;
    Конецесли;
    //Юлия 24.03.2009
    Гл_РКСЕВ(Контекст);
    // вот здесь надо КОНЕЦЕСЛИ; если я правильнопоняла логику программы
    /////////*******************************
    ИначеЕсли ПереключательСпособРасчета = 3 Тогда
    БазВр = 0;

    Позвольте маленький совет - делайте отступ по циклам не пробел, знак табуляции или несколько пробелов. Тогда будут заметнее циклы.

Поделиться этой страницей