Вход | Регистрация


1С:Предприятие ::

Метки:

Ошибка в запросе. Поле не найдено.

Я
   Rodya95
 
13.09.17 - 18:25
Здравствуйте! Дали задание, а ошибку все не могу найти, второй день все переделываю и перепроверяю, а ошибка все вылезает.

Ошибка следующая:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.РасходнаяНакладная.МодульОбъекта(68)}: Ошибка при вызове метода контекста (Выполнить)
            РезультатЗапроса = Запрос2.Выполнить();
по причине:
{(15, 28)}: Поле не найдено "НоменклатураДокумента.Номенклатура"
ПО НоменклатураДокумента.<<?>>Номенклатура = СтоимостьТоваровОстатки.Товар

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

            Движения.СтоимостьТоваров.Записать();
            Движения.ОстаткиТоваров.Записать();
                    
            РезультатЗапроса = Запрос2.Выполнить();
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
  Рекламное место пустует
   Базис
 
1 - 13.09.17 - 18:27
Копируй текст запроса, вставь его в консоль запросов, проверь синтаксис кнопкой внизу справа.
   Tatitutu
 
2 - 13.09.17 - 18:32
Товар В(ВЫБРАТЬ                     НоменклатураДокумента.Номенклатура
                    ИЗ
                        НоменклатураДокумента)
   AlvlSpb
 
3 - 13.09.17 - 19:04
(0) А где сама временная таблица НоменклатураДокумента формируется? Покажите как делаете
   DrShad
 
4 - 13.09.17 - 19:12
Сама таблица то есть, а вот поля такого в ней нет
   AlvlSpb
 
5 - 13.09.17 - 19:23
(4) вот и похоже на то, поэтому и спрашиваю показать ее
   Rodya95
 
6 - 14.09.17 - 11:26
(4) вот временная таблица
МенеджерВТ = Новый МенеджерВременныхТаблиц;
    
    Запрос = Новый Запрос;
    
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РасходнаяНакладнаяПереченьНоменклатуры.Наименование,
        |    РасходнаяНакладнаяПереченьНоменклатуры.Наименование.ВидНоменклатуры КАК ВидНоменклатуры,
        |    СУММА(РасходнаяНакладнаяПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
        |    СУММА(РасходнаяНакладнаяПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
        |ПОМЕСТИТЬ НоменклатураДокумента
        |ИЗ
        |    Документ.РасходнаяНакладная.ПереченьНоменклатуры КАК РасходнаяНакладнаяПереченьНоменклатуры
        |ГДЕ
        |    РасходнаяНакладнаяПереченьНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РасходнаяНакладнаяПереченьНоменклатуры.Наименование,
        |    РасходнаяНакладнаяПереченьНоменклатуры.Наименование.ВидНоменклатуры";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
   Мыш
 
7 - 14.09.17 - 11:28
(6)      "ВЫБРАТЬ
        |    РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура КАК Номенклатура,
   catena
 
8 - 14.09.17 - 11:32
(7)Я думаю, что все-так ".Наименование как Номенклатура"
   _Дайвер_
 
9 - 14.09.17 - 11:34
(8) +
   Ненавижу 1С
 
10 - 14.09.17 - 11:36
(0) ЧТО ЭТО?
ОстаткиТоваровОстатки.Наименование
 
 
   Ёпрст
 
11 - 14.09.17 - 11:50
(8) еще подумай, в регистре то, Товар не строка, а ссылка
   Rodya95
 
12 - 14.09.17 - 11:50
(7) Да, верно, уже нашел и исправил. Теперь появилась такая ошибка:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.РасходнаяНакладная.МодульОбъекта(119)}: Ошибка при вызове метода контекста (Выполнить)
                РезультатЗапроса = Запрос3.Выполнить();
по причине:
{(9, 15)}: Не задано значение параметра "Склад"
И Склад = <<?>>&Склад) КАК ОстаткиТоваровОстатки

Текст программы:

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

Врят ли есть там измерение Наименование в регистре.
   Rodya95
 
14 - 14.09.17 - 11:52
(7) а, нет, все таки ошибка была не там. Я исправил во втором запросе НоменклатураДокумента.Номенклатура на НоменклатураДокумента.Наименование
   Rodya95
 
15 - 14.09.17 - 11:53
(13) там все верно)
   Ёпрст
 
16 - 14.09.17 - 11:53
(12)
Запрос3.УстановитьПараметр("Склад",Склад);
   Ёпрст
 
17 - 14.09.17 - 11:54
(15) чего верно ? У тя в регистре ОстаткиТоваров есть измерение Наименование ?
И какого оно типа у тебя, и кто его туда добавил и зачем ?
   Rodya95
 
18 - 14.09.17 - 11:57
(17) Да, тип СправочникСсылка.Номенклатура. Я туда добавил. Все эти запросы строились при помощи конструктора запросов
   Rodya95
 
19 - 14.09.17 - 11:58
(16) Спасибо, помогло. теперь такая ошибка :D
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.РасходнаяНакладная.МодульОбъекта(119)}: Ошибка при вызове метода контекста (Выполнить)
                РезультатЗапроса = Запрос3.Выполнить();
по причине:
{(11, 2)}: Операция не разрешена в предложении "ГДЕ"
<<?>>ОстаткиТоваровОстатки.КоличествоОстаток
   Ёпрст
 
20 - 14.09.17 - 11:58
(18) а до того как, какие измерения там были ?
Ну так, на поржать
   h-sp
 
21 - 14.09.17 - 11:59
(18) ну то есть лично занимался дебилизмом? Называл поля "наименование"? А почему ты не назвал поле Номенклатуры, например "Сотрудник"? Или "Склад"?
   Ёпрст
 
22 - 14.09.17 - 11:59
(19)

//   |ГДЕ

//                    |    ОстаткиТоваровОстатки.КоличествоОстаток";
   h-sp
 
23 - 14.09.17 - 12:00
(19) опана! у тебя еще и Количество типа Булево? Круто.
   catena
 
24 - 14.09.17 - 12:01
(11)Меня на это навело строка "РасходнаяНакладнаяПереченьНоменклатуры.Наименование.ВидНоменклатуры" из (6)
   Rodya95
 
25 - 14.09.17 - 12:02
(22) там есть точка с запятой, просто не скопировал
   Ёпрст
 
26 - 14.09.17 - 12:03
(25) Этот бред просто выкини из текста запроса.
   catena
 
27 - 14.09.17 - 12:04
(25)Это ГДЕ какой смысл несет лично в вашей вселенной?
   Rodya95
 
28 - 14.09.17 - 12:06
(23) я первый раз в 1с программирую) просто работу ищу и вот сказали сделать задание по результатам которого решат нанимать или нет)
   Ёпрст
 
29 - 14.09.17 - 12:08
(28) В задании, было сказано, спроектировать простой мини-учет ?
Тогда переписывай структуру регистров, ибо с тем, что в (0) - не возьмут.
   Ёпрст
 
30 - 14.09.17 - 12:09
Для начала, посмотри, как в любой типовой сделано.
   Rodya95
 
31 - 14.09.17 - 12:09
(26) Всё, спасибо большое, заработало)
Только я не понимаю почему не выходило, если конструктор запроса сам написал запрос, а все поля и таблицы были верно заполнены.
Делал я по учебнику Радченко и Хрусталева "1С Предприятие 8.3 Практическое пособие разработчика"
   1dvd
 
32 - 14.09.17 - 12:13
(28) ты им насвистел что опытный программист, типа?
   Rodya95
 
33 - 14.09.17 - 12:14
(32) нет, им нужен начинающий программист со знанием основ на уровне университетской программы) при приеме сами будут обучать всему
 
 



Список тем форума
  Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует