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

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

Автор ildarik_58, 16 мая 2013, 10:19

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

ildarik_58

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

                  
         //РегистрОстаткиМатериалов Расход
         Движение=Движения.ОстаткиМатериалов.Добавить();
         Движение.ВидДвижения=ВидДвиженияНакопления.Расход;
         Движение.Период=Дата;
         Движение.Материал=ВыборкаРезультатаЗапроса.Номенклатура;
         Движение.Склад=Склад;
         Движение.Количество=ВыборкаРезультатаЗапроса.Количество;
         
         //РегистрСтоимостьМатериаловРасход.
         Движение=Движения.СтоимостьМатериалов.Добавить();
         Движение.ВидДвижения=ВидДвиженияНакопления.Расход;
         Движение.Период=Дата;
         Движение.Материал=ВыборкаРезультатаЗапроса.Номенклатура;
         //Рассчитать стоимость материала.
         СтоимостьМатериала=?(ВыборкаРезультатаЗапроса.КоличествоОстаток=Null,0,ВыборкаРезультатаЗапроса.СтоимостьОстаток/ВыборкаРезультатаЗапроса.КоличествоОстаток);
         Движение.Стоимость=СтоимостьМатериала*ВыборкаРезультатазапроса.Количество;
      КонецЕсли;
      
      //Регистр Продажи.
      Движение=Движения.Продажи.Добавить();
      Движение.Период=Дата;
      Движение.Номенклатура=ВыборкаРезультатазапроса.Номенклатура;
      Движение.Клиент=Клиент;
      Движение.Мастер=Мастер;
      Движение.Количество=ВыборкаРезультатазапроса.Количество;
      Движение.Выручка=ВыборкаРезультатазапроса.Сумма;
      Если ВыборкаРезультатаЗапроса.ВидНоменклатуры=Перечисления.ВидыНоменклатур.Материал Тогда
         Движение.Стоимость=СтоимостьМатериала*ВыборкаРезультатаЗапроса.Количество();
      Иначе
         Движение.Стоимость=0;
      КонецЕсли;
   
   КонецЦикла;
   //Записать движения регистров
   Движения.ОстаткиМатериалов.Записать();
   Движения.СтоимостьМатериалов.Записать();
   Движения.Продажи.Записать();
   

ildarik_58

вот ошибка
{Документ.ОказаниеУслуги.МодульОбъекта(117,3)}: Ожидается ключевое слово 'КонецЦикла' ('EndDo')
      <<?>>КонецЕсли; (Проверка: Толстый клиент (обычное приложение))
{Документ.ОказаниеУслуги.МодульОбъекта(133,2)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
   <<?>>КонецЦикла; (Проверка: Толстый клиент (обычное приложение))

ls600

Цитата: ildarik_58 от 16 мая 2013, 10:19//РегистрСтоимостьМатериаловРасход.
         Движение=Движения.СтоимостьМатериалов.Добавить();
         Движение.ВидДвижения=ВидДвиженияНакопления.Расход;
         Движение.Период=Дата;
         Движение.Материал=ВыборкаРезультатаЗапроса.Номенклатура;
         //Рассчитать стоимость материала.
         СтоимостьМатериала=?(ВыборкаРезультатаЗапроса.КоличествоОстаток=Null,0,ВыборкаРезультатаЗапроса.СтоимостьОстаток/ВыборкаРезультатаЗапроса.КоличествоОстаток);
         Движение.Стоимость=СтоимостьМатериала*ВыборкаРезультатазапроса.Количество;
      КонецЕсли;

КОНЕЦ ЕСЛИ убери.


ildarik_58

Помогите пожалуйста исправить ошибки в коде:
{ОбщийМодуль.ПроведениеРасчетов.Модуль(73,2)}: Ожидается ключевое слово 'КонецЕсли' ('EndIf')
   <<?>>КонецЦикла; (Проверка: Толстый клиент (обычное приложение))
Добавлено: 17 мая 2013, 11:04


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




Добавлено: 17 мая 2013, 11:22


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

Dethmontt

Вместо последнего КонецЦикла; нужно КонецЕсли;

  КонецЕсли;
   КонецЦикла;
   
   
КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

ildarik_58

вот какую ошибку выводит
{ОбщийМодуль.ПроведениеРасчетов.Модуль(22)}: Ошибка при вызове метода контекста (Выполнить)
      ВыборкаРезультата=Запрос.Выполнить().Выбрать();
по причине:
{(5, 2)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ

Yura063

Цитировать|   НачисленияДанныеГрафика.НомерСтроки,
             |ИЗ

Уберите запятую!
Помогли, отблагодари!

Теги:

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

Рейтинг@Mail.ru

Поиск