Имя: Пароль:
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) нет, им нужен начинающий программист со знанием основ на уровне университетской программы) при приеме сами будут обучать всему
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан