Имя: Пароль:
1C
1С v8
Синтаксическая ошибка "ИЗ"
0 alexkayzer
 
21.02.13
17:39
При проведении документа ругается 1Ска ругается на
{Документ.ОказаниеУслуги.МодульОбъекта(99)}: Ошибка при вызове метода контекста (Выполнить): {(8, 1)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
{(8, 1)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ
Код
Процедура ОбработкаПроведения(Отказ, Режим)
   Запрос = Новый Запрос;
   Если Режим = РежимПроведенияДокумента.Оперативный Тогда
       Запрос.Текст ="ВЫБРАТЬ
                     |    ОказаниеУслугПереченьНоменклатуры.Номенклатура,
                     |    ОказаниеУслугПереченьНоменклатуры.Количество,
                     |    ОказаниеУслугПереченьНоменклатуры.Сумма,
                     |    ОказаниеУслугПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
                     |    СтоимостьМатериаловОстатки.СтоимостьОстаток,
                     |    ОстаткиМатериаловОстатки.КоличествоОстаток,
                     |    ОстаткиМатериаловОстаткиНаСкладе.КоличествоОстаток КАК КоличествоНаСкладе,
                     |ИЗ
                     |    Документ.ОказаниеУслуг.ПереченьНоменклатуры КАК ОказаниеУслугПереченьНоменклатуры
                     |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериаловОстатки
                     |        ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал
                     |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиМатериаловОстатки
                     |        ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал
                     |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
                     |        &МоментВремени,
                     |        Материал В (&СписокНоменклатурыДокумента)
                     |            И Склад = &СкладВДокументе) КАК ОстаткиМатериаловОстаткиНаСкладе
                     |        ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстаткиНаСкладе.Материал,
                     |ГДЕ
                     |    ОказаниеУслугПереченьНоменклатуры.Ссылка = &Ссылка
                     |
                     |ДЛЯ ИЗМЕНЕНИЯ
                     |    РегистрНакопления.ОстаткиМатериалов.Остатки,
                     |    РегистрНакопления.СтоимостьМатериалов.Остатки";
                     
       Запрос.УстановитьПараметр("СкладВДокументе", Склад);

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

Голову сломал понять не могу в чем дело(
1 salvator
 
21.02.13
17:39
Запятая перед ИЗ
2 shuhard
 
21.02.13
17:40
(0) КАК КоличествоНаСкладе,
3 vicof
 
21.02.13
17:40
(1) только хотел протелепатировать
4 salvator
 
21.02.13
17:40
+(1) Не можешь нормально править запрос - используй конструкутор
5 alexkayzer
 
21.02.13
17:44
В том-то и дело что конструктором строил(
6 vicof
 
21.02.13
17:45
(5) врешь
7 shamannk
 
21.02.13
17:46
(5) А удалял руками?
8 alexkayzer
 
21.02.13
17:51
Угу, удалял добавлял потом опять удалял, сейчас вообще ругается
{Документ.ОказаниеУслуги.МодульОбъекта(99)}: Ошибка при вызове метода контекста (Выполнить): {(9, 2)}: Таблица не найдена "Документ.ОказаниеУслуг.ПереченьНоменклатуры"
<<?>>Документы.ОказаниеУслуг.ПереченьНоменклатуры КАК ОказаниеУслугПереченьНоменклатуры
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
{(9, 2)}: Таблица не найдена "Документ.ОказаниеУслуг.ПереченьНоменклатуры"
<<?>>Документы.ОказаниеУслуг.ПереченьНоменклатуры КАК ОказаниеУслугПереченьНоменклатуры
9 mikecool
 
21.02.13
17:52
(8) удаляй тоже в конструкторе, если вообще о структуре запроса не имеешь понятия
10 alexkayzer
 
21.02.13
17:52
НА Документы и Документ внимания тока не обращайте это я сам сейчас ковырял думал может прокатит(
11 salvator
 
21.02.13
17:54
(8) Ошибку пишет по-русски вроде, что непонятного?
12 alexkayzer
 
21.02.13
17:56
Вот и не понятно как таблица не найдена если я из нее конструктором запрос строил(
13 salvator
 
21.02.13
18:00
(12) Лазить меньше надо в незнакомых местах.
Тебе уже все ответили в (9)
14 alexkayzer
 
21.02.13
18:17
ОК опять все конструктором исправил теперь такая ошибка
{Документ.ОказаниеУслуги.МодульОбъекта(134)}: Поле объекта не обнаружено (Номенклатура)
Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;

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

   Иначе
       Запрос.Текст ="ВЫБРАТЬ
                     |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
                     |    ОказаниеУслугиПереченьНоменклатуры.Количество,
                     |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
                     |    ОказаниеУслугиПереченьНоменклатуры.Сумма,
                     |    ОстаткиМатериаловОстатки.КоличествоОстаток,
                     |    СтоимостьМатериаловОстатки.СтоимостьОстаток
                     |ИЗ
                     |    Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
                     |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки
                     |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал
                     |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки КАК СтоимостьМатериаловОстатки
                     |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал
                     |ГДЕ
                     |    ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
                     |
                     |ДЛЯ ИЗМЕНЕНИЯ
                     |    РегистрНакопления.ОстаткиМатериалов.Остатки,
                     |    РегистрНакопления.СтоимостьМатериалов.Остатки";

   КонецЕсли;
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("СписокНоменклатурыДокумента", ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура"));
Запрос.УстановитьПараметр("Ссылка", Ссылка);
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
Пока ВыборкаРезультатаЗапроса.Следующий() Цикл
   // ПРоверить остаток при оперативном проведении
   Если Режим = РежимПроведенияДокумента.Оперативный Тогда
       Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
           Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе = Null, 0 ,ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе);
       Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда
           Сообщить("Материала" +СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура)+"Имеется только"+Остаток);
           Отказ = Истина;
             Возврат;
       КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   //Сформировать движения
   Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
       //Регистр ОстаткиМатериалов Расход
       Движение = Движения.ОстаткиМатериалов.Добавить();
       Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
       Движение.Период = Дата;
       Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура;
       Движение.Склад = Склад;
       Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
       //Региста СтоимостьМатериалов Расход
       Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура;
//расчитагь стоимость материала
СтоимостьМатериала =  ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0, ВыборкаРезультатаЗапроса.СтоимостьОстаток/ВыборкаРезультатаЗапроса.КоличествоОстаток);
Движение.Стоимость = СтоимостьМатериала*ВыборкаРезультатаЗапроса.Количество;
КонецЕсли;
// регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма;
Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
Иначе
Движение.Стоимость = 0;
КонецЕсли;
КонецЦикла;
КонецПроцедуры;
15 ssh2006
 
21.02.13
18:28
В рег-ре продажи есть "Номенклатура"?
16 alexkayzer
 
21.02.13
18:30
Да конечно есть в Измерениях