Имя: Пароль:
1C
1С v8
Ошибка в запросе. Поле не найдено.
0 Rodya95
 
13.09.17
18:25
Здравствуйте! Дали задание, а ошибку все не могу найти, второй день все переделываю и перепроверяю, а ошибка все вылезает.

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

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

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

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

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

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