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


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) нет, им нужен начинающий программист со знанием основ на уровне университетской программы) при приеме сами будут обучать всему
 
  Рекламное место пустует



Список тем форума
Рекламное место пустует   Рекламное место пустует
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует