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

Ошибка Ошибка при вызове метода контекста (Выполнить) Ожидается выражение "ВЫБРАТЬ"

Автор Maks54, 07 ноя 2015, 11:08

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

Maks54

Всем привет. Помогите пожалуйста!!!!!!!!!!!!!!!

Выдает ошибку. Была пропущена точка. Исправила. Выдавал другую ошибку теперь опять эту.

{Документ.ОказаниеУслуги.МодульОбъекта(59)}: Ошибка при вызове метода контекста (Выполнить)
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
по причине:
{(1, 1)}: Ожидается выражение "ВЫБРАТЬ"

Процедура ОбработкаПроведения(Отказ, Режим)


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

Надежда только на Вас!!

pavl_vs

Maks54, у Вас в секции "Иначе" неправильно завершен текст запроса;
должно быть, как и в секции "Если", т.е.
   |ДЛЯ ИЗМЕНЕНИЯ
   |   РегистрНакопления.ОстаткиМатериалов.Остатки,
   |   РегистрНакопления.СтоимостьМатериалов.Остатки";

Обратите на расположение символа ";".

Maks54

Спасибо большое. Вы мне очень помогли!
Добавлено: 07 ноя 2015, 14:45


Опять ошибка((( В том же месте, та же(

;  - исправил, и всё равно

Процедура ОбработкаПроведения(Отказ, Режим)


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

Подскажите(

pavl_vs

Maks54, у Вас "ЗапросТекст = ", а должно быть "Запрос.Текст = " - опять забыли про точку?

Теги:

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

Рейтинг@Mail.ru

Поиск