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