Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Фев 2018, 02:28
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Ошибка выполнения запроса к номенклатуре  (Прочитано 1796 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн info_infoman

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-19
  • Сайт: 
  • Профессия: Бухгалтер
Добрый день платформа 8.3
 запрос такой :
Запрос = Новый Запрос(
"ВЫБРАТЬ  Номенклатура.Код
|ИЗ
|  Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Код = &Код");


Запрос.УстановитьПараметр("Код", Код);
ВыборкаПоТоварам = Запрос.Выполнить().Выбрать();

работает этот куско кода в регламентном задании в общем модуле
ошибка при выполнении регламентного задания следующая
Цитировать
{ОбщийМодуль.ПодключаемоеОборудованиеOfflineАвто.Модуль(720)}: Ошибка при вызове метода контекста (Выполнить)
      ВыборкаПоТоварам = Запрос.Выполнить().Выбрать();
по причине:
{(5, 2)}: Поле не найдено "Номенклатура.Код"
<<?>>Номенклатура.Код = &Код


Оффлайн Kironten

  • *****
  • Сообщений: 906
  • РЕПУТАЦИЯ: 187
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
1с не любит когда применяются имена переменных используемые системой.
Поменяйте "Номенклатура" на, например "СпрНоменклатура".
А вообще крайне непонятное действие:
Вы пытаетесь получить код элемента номенклатуры, и для этого передаете в запрос этот самый код номенклатуры. Бессмыслица.

Оффлайн Rasty

  • *****
  • Сообщений: 997
  • РЕПУТАЦИЯ: 141
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
Создайте запрос конструктором запроса и по старинке
Запрос = Новый Запрос;
Запрос.Текст =
"Текст Запроса"
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн info_infoman

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-19
  • Сайт: 
  • Профессия: Бухгалтер
Извините просто мистика какаято.....
запрос вдруг заработал
стал его развивать до нужной кондиции

так как регламентные задания перестали выдавать ошибку
 то фиксирую то что происходит в системе путем логирования в файл

вот код
	Запрос = Новый Запрос(
"ВЫБРАТЬ  Номенклатура.Код,
|  Номенклатура.Наименование,
|  Номенклатура.ЕдиницаИзмерения
|ИЗ
|  Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Код = &Код");

Для каждого СтрокаТЧ Из МассивДанных Цикл
Запрос.УстановитьПараметр("Код", СтрокаТЧ.Код);
ВыборкаПоТоварам = Запрос.Выполнить().Выбрать();

//////////////// запись последнего номера транзакции////
Документ1 = Новый ТекстовыйДокумент(); Документ1.Прочитать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Документ1.ЗаменитьСтроку(1, СтрокаТЧ.Код);
Документ1.Записать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);

в этом коде я запросил 3 параметра
и при это программа не ругнулась
 и вывела в файл номер код номенклатуры искомый в справочнике
код этот = 362 и он точно там есть

однако когда делаю вот так:
	Запрос = Новый Запрос(
"ВЫБРАТЬ  Номенклатура.Код,
|  Номенклатура.Наименование,
|  Номенклатура.ЕдиницаИзмерения
|ИЗ
|  Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Код = &Код");

Для каждого СтрокаТЧ Из МассивДанных Цикл
Запрос.УстановитьПараметр("Код", СтрокаТЧ.Код);
ВыборкаПоТоварам = Запрос.Выполнить().Выбрать();

//////////////// запись последнего номера транзакции////
Документ1 = Новый ТекстовыйДокумент(); Документ1.Прочитать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Документ1.ЗаменитьСтроку(1, ВыборкаПоТоварам.Наименование);
Документ1.Записать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
выводит пустоту
да вообщем то любое поле пустое какое не запросить пустота
даже код(ВыборкаПоТоварам.код)

мистика:mellow:

Оффлайн Kironten

  • *****
  • Сообщений: 906
  • РЕПУТАЦИЯ: 187
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
Не мистика, а перебирать выборку надо.
Кто будет делать ВыборкаПоТоварам.Следующий() за вас?

Оффлайн info_infoman

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-19
  • Сайт: 
  • Профессия: Бухгалтер
блин неужели дело в том что СтрокаТЧ.Код это не есть число(тип данных)
сейчас проверю
Добавлено: 19 Окт 2015, 15:16

Не мистика, а перебирать выборку надо.
Кто будет делать ВыборкаПоТоварам.Следующий() за вас?
а это обязательно если код - уникальный
и я конкретно запрашиваю конкретный код?

перебирать обязательно?
или можно применить ВЫБРАТЬ 1

Оффлайн Vladimir_Sh

  • 1С:Специалист
  • ****
  • Сообщений: 356
  • РЕПУТАЦИЯ: 68
  • КПД: 19%
  • Регистрация: 2015-10-16
  • Компания: Центр бизнес решений "ALT"
  • Профессия: Разработчик 1С
info_infoman, простите но вам СЮДА или если нет ИТС тогда СЮДА
Если я Вам помог, нажми - Спасибо!

Оффлайн Kironten

  • *****
  • Сообщений: 906
  • РЕПУТАЦИЯ: 187
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
блин неужели дело в том что СтрокаТЧ.Код это не есть число(тип данных)
сейчас проверю
Добавлено: 19 Окт 2015, 15:16

Не мистика, а перебирать выборку надо.
Кто будет делать ВыборкаПоТоварам.Следующий() за вас?
а это обязательно если код - уникальный
и я конкретно запрашиваю конкретный код?

перебирать обязательно?
или можно применить ВЫБРАТЬ 1

Вы, похоже не совсем понимаете работу с результатом запроса.

    
Для каждого СтрокаТЧ Из МассивДанных Цикл
    Запрос.УстановитьПараметр("Код", СтрокаТЧ.Код);
    ВыборкаПоТоварам = Запрос.Выполнить().Выбрать();
    ВыборкаПоТоварам.Следующий();//получите только первую запись, если она конечно есть.   
//////////////// запись последнего номера транзакции////
Документ1 = Новый ТекстовыйДокумент();               
Документ1.Прочитать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Документ1.ЗаменитьСтроку(1, ВыборкаПоТоварам.Наименование);
Документ1.Записать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Это при учете, что Вы все таки в запросе получили какие-либо данные.
И еще, запрос в цикле - грубейшая ошибка.

Оффлайн info_infoman

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-19
  • Сайт: 
  • Профессия: Бухгалтер
Цитировать
    ВыборкаПоТоварам.Следующий();//получите только первую запись, если она конечно есть.
   

мне действительно нужна только одна строка

мне известен конкретный код номенклатуры
я его получаю в цикле

далее мне нужно сделать запрос и по этому коду вытащить из справочника конкретные параметры по номенклатуре

что касается есть данные или нет то они есть ибо если я не задаю в запросе конкретный код (ГДЕ Номенклатура=&Код)
то данные появляются а именно количество записей становится равной количеству записей в справочнике и кроме того в файл выгружается (если потом проходить массив в цикле) последняя запись из справочника

в случае если я указываю конкретный код и даже если я указываю код этой последней записи в справочнике которая в предыдущем случае выгрузилась успешно то получаю пустой результат
хотя по количеству записей оно равно 1, то есть результат есть но он пустой

вот пример  выдает последний элемент в справочнике номенклатура с кодом 8:
   
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклат.Код,
| Номенклат.Наименование КАК Наименование,
| Номенклат.ЕдиницаИзмерения.Код
|ИЗ
| Справочник.Номенклатура КАК Номенклат";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Документ1 = Новый ТекстовыйДокумент(); Документ1.Прочитать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Документ1.ЗаменитьСтроку(1,ВыборкаДетальныеЗаписи.Наименование);
Документ1.Записать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
при этом количество записей в ВыборкаДетальныеЗаписи равно8

если же задаю запрос с конкретным кодом а именно кодом 8 или любым другим который точно есть в справочнике, то вместо наименования выгружается пустота, а количество записей равно 1

   
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклат.Код,
| Номенклат.Наименование КАК Наименование,
| Номенклат.ЕдиницаИзмерения.Код
|ИЗ
| Справочник.Номенклатура КАК Номенклат
|ГДЕ
| Номенклат.Код = &Код";

Запрос.УстановитьПараметр("Код", 8);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();

Документ1 = Новый ТекстовыйДокумент(); Документ1.Прочитать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Документ1.ЗаменитьСтроку(1, ВыборкаДетальныеЗаписи.Наименование); Документ1.Записать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Добавлено: 20 Окт 2015, 08:17

вот скрины выполнения с отбором по коду и без отбора по коду
номенклатура с кодом 150


Добавлено: 20 Окт 2015, 08:56

если же делаю запрос с заранее неправильным кодом то колличество записей равно 0!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклат.Код,
| Номенклат.Наименование КАК Наименование,
| Номенклат.ЕдиницаИзмерения.Код
|ИЗ
| Справочник.Номенклатура КАК Номенклат
|ГДЕ
| Номенклат.Код = &Код";

Запрос.УстановитьПараметр("Код", 15000000000000000000000000);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Документ1 = Новый ТекстовыйДокумент(); Документ1.Прочитать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
Документ1.ЗаменитьСтроку(1,ВыборкаДетальныеЗаписи.Количество()); Документ1.Записать(ФайлОтчета+"transnumber.txt", КодировкаТекста.ANSI);
значит все таки мои запросы с кодом работают, просто не выводится результат, почему то (((

Последний раз редактировалось: info_infoman; 20 Окт 2015, 08:56. Причина: Объединение сообщений


Теги:
 

При открытии обр-ки в "Предприятии" есть ошибка, а в "Отладке" нет

Автор proofetРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4797
Последний ответ 21 Сен 2011, 17:35
от proofet
ошибка "Невозможно обработать параметр "ПрофильПолномочийПользователя""

Автор lindeluРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 6410
Последний ответ 06 Июн 2012, 09:15
от lindelu
Синтаксическая ошибка "В" Номенклатура.Ссылка = <<?>> В ИЕРАРХИИ(&Ссылка)

Автор maskitoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 4489
Последний ответ 28 Апр 2014, 15:53
от maskito
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

Автор ppkmliteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 9314
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz
Ошибка при загрузке данных через (Обработка "Выгрузка и загрузка данных XML")

Автор Сергей_87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 8911
Последний ответ 26 Апр 2012, 23:08
от Dethmontt

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
217 Сообщений
AIFrame AIFrame
78 Сообщений
alexandr_ll
41 Сообщений
MuI_I_Ika MuI_I_Ika
38 Сообщений
BuhRust
29 Сообщений
wise wise
27 Сообщений
andron81_81
25 Сообщений
pavl_vs
23 Сообщений
ildar32 ildar32
22 Сообщений
oleg-x
22 Сообщений

* Кто онлайн

  • Точка Гостей: 215
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal