Имя: Пароль:
1C
1С v8
Язык запросов "1С:Предприятие 8"
0 Пионер1С
 
05.11.22
23:04
Здравствуйте, Коллеги.
Новичок в 1С.
Начал изучать Язык запросов по книге «Язык запросов "1С:Предприятие 8"», Е.Ю. Хрусталева, 2021 г.
И уже ошибка в книге на стр. 27, листинг 1.6 - вывод наименований всех товаров в окно сообщений.
Данный листинг не работает.

Выдает ошибку:
{Обработка.КонсольЗапросов.МодульОбъекта(543)}: Ошибка при вызове метода контекста (НайтиПараметры)
    ПарЗап = Запрос.НайтиПараметры();
по причине:
{(1, 1)}: Ожидается выражение "ВЫБРАТЬ"
<<?>>Запрос = Новый Запрос;

Вот сам текст запроса:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Товары";
    
РезультатЗапроса = Запрос.Выполнить();
ВыборкаЗапроса = РезультатЗапроса.Выбрать();

Пока ВыборкаЗапроса.Следующий() Цикл
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ВыборкаЗапроса.Наименование;
    Сообщение.Сообщить();
КонецЦикла;

Что делать? Не понимаю. В чем ошибка?
Если кто-то учился по этой книге, подскажите, пожалуйста, в чем проблема.
Спасибо за помощь.
Уделенное мне время.
1 PR
 
05.11.22
23:09
А почему у тебя текст запроса

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Товары";

а не

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Товары
2 Пионер1С
 
05.11.22
23:13
Этот пример указан на страницах книги.
В листинге ничего не менял.
Сейчас убрал лишние знаки.
Не работает.
3 Garykom
 
гуру
05.11.22
23:14
Расшифровываю (1):

Если ты используешь консоль запросов туда надо только сам текст запроса вставлять.

Все эти
"Запрос = Новый Запрос;
Запрос.Текст = ..." они для использования в коде на ЯП 1С, без консоли запросов готовой
4 Пионер1С
 
05.11.22
23:14
Спасибо за ответ!
5 Пионер1С
 
05.11.22
23:21
Да. Верно. Использую Консоль. Еле разобрался как с ней работать.
В итоге получилось.
Но почему в книге неправильно пишут? Вопрос.
Исправил. Или что-то не понял опять?

Вот Листинг:

Запрос = Новый Запрос;
Запрос.Текст =

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Товары
    
РезультатЗапроса = Запрос.Выполнить();
ВыборкаЗапроса = РезультатЗапроса.Выбрать();

Пока ВыборкаЗапроса.Следующий() Цикл
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ВыборкаЗапроса.Наименование;
    Сообщение.Сообщить();
КонецЦикла;

Выдает ошибку.
6 PR
 
05.11.22
23:25
(5) Дружище, ты что-то совсем плох
Текст запроса в консоли пишется без " и |, потому что это язык запросов
Текст запроса в коде пишется с " и |, потому что это программный код
Тебе бы сначала синтаксис понять что ли и базовые принципы программирования
7 ДНН
 
05.11.22
23:33
(0) ты бы лучше SQL учил
8 Garykom
 
гуру
05.11.22
23:33
(5) Советую пойти на курсы 1С
Или хотя бы начать с просмотра видео для полных новичков на ютубе или те же видеокурсы
Пока у тебя знаний к сожалению 0, все непонятно и на форуме устанешь спрашивать
9 Garykom
 
гуру
05.11.22
23:34
(7) В курсе что современные тру кодеры не знают SQL?
Они использую ORM по типу того же LINQ
10 ДНН
 
05.11.22
23:35
(9) базовые конструкции знают. Срез последних написать вряд ли смогут.
11 Пионер1С
 
05.11.22
23:39
Пошел искать уроки для чайников.
Интернет надеюсь поможет для начала.
12 PR
 
05.11.22
23:47
(11) Поставь себе типовую конфигурацию какую-нибудь, это тебе просто очень поможет
13 Пионер1С
 
05.11.22
23:50
Уже поставил.
Подготовка к процессу сделана.
Только литература подводит. Увы.
Хотя. Как обычно.
14 alarm2020
 
06.11.22
11:48
(12) ... научиться плохому
15 NorthWind
 
06.11.22
11:59
(13) некоторые очевидные вещи в литературе могут быть не описаны. Консоль запросов используется для отладки запросов, поэтому там пишется только сам текст запроса без какой-либо обвязки. Все остальное - создание объекта, привязку параметров, выполнение - консоль делает сама внутри себя и вам об этом беспокоиться не надо. А вот программный код, который использует запрос - это другое. Там вы должны сами создать, инициализировать и запустить на выполнение все, что связано с объектом запроса. Пример, приведенный в книге - это пример программного кода. Если вы хотите попробовать запрос оттуда в консоли, то из примера нужно взять только то, что находится в кавычках внутри Запрос.Текст = " ... " и еще убрать оттуда служебные символы |, если они есть.
16 Пионер1С
 
06.11.22
15:16
NorthWind. Здравствуйте.
Спасибо за подсказку. Сам понимаю, что, что-то не так.
Программный код, который использует запрос где его надо вносить? Подскажите пожалуйста.
Если мне нужна выборка по товарам, то я должен открыть типовую конфигурацию в конфигураторе - открыть > справочник товары (т.к. мне нужен запрос по товарам) > прочее > модуль объекта - и в справочнике товары модуль объекта записать данный листинг.
Это правильный ход мысли? Спасибо.
17 Web00001
 
06.11.22
18:01
(11) чекни здесь https://курсы-по-1с.рф/free/programming-in-1c-in-21-days/final-all-in-one/ у них вроде для начала хорошо написано
19 Web00001
 
06.11.22
18:18
(18)Да там еще же ОФ вроде или нет? Триста лет в обед ей.
20 Chai Nic
 
06.11.22
18:19
(16) "Если мне нужна выборка по товарам, то я должен открыть типовую конфигурацию в конфигураторе - открыть > справочник товары (т.к. мне нужен запрос по товарам) > прочее > модуль объекта - и в справочнике товары модуль объекта записать данный листинг."
Неа. Ты можешь писать запрос где угодно, в любом серверном модуле. Обращаться при этом к любым объектам базы.
21 rphosts
 
06.11.22
18:19
lexushka п3 правил касается всех!
22 lexushka
 
06.11.22
18:36
(21) покраснели уши
припал к правилам ничего в пунктах 3 не рассмотрел

хотел сказать что либо книга по 1с и здравый смысл и получится разобраться
либо не надо с этим связываться — там дальше не проще…
23 NorthWind
 
06.11.22
18:37
(16) > Программный код, который использует запрос где его надо вносить? Подскажите пожалуйста.

Самый простой вариант - в конфигураторе создать новую внешнюю обработку и поместить его туда. В случае, если вы делаете обработку с управляемыми формами, нужно еще определиться, что будет выполняться на сервере, а что на клиенте, потому что запрос на клиенте в приложении на УФ выполняться не может. Далее в режиме предприятия обработку можно открыть и поиграться с выполнением.
24 NorthWind
 
06.11.22
18:55
> Если мне нужна выборка по товарам, то я должен открыть типовую конфигурацию в конфигураторе - открыть > справочник товары (т.к. мне нужен запрос по товарам) > прочее > модуль объекта - и в справочнике товары модуль объекта записать данный листинг.
Это правильный ход мысли? Спасибо.

Нет, не правильный. В модуле объекта справочника товаров написан код, который обслуживает внутренние потребности данного справочника, и если вы не хотите каким-то образом менять поведение этого справочника, то дописывать туда ничего не нужно. Выборка вам нужна, скорее всего, для написания своей обработки или отчета, которых _пока нет_ в конфигурации. Соответственно, вот и ответ на вопрос. Вы создаете _новую_ обработку или _новый_ отчет. Не меняете существующую. Можете создать новые объекты в составе конфигурации. Можете создать внешние обработки или отчеты. Внешние, как по мне, для экспериментов более удобны, потому что вам не надо будет каждый раз сохранять конфигурацию - на медленном компе это может быть довольно заметная экономия времени, но это непринципиально, если больше нравятся в составе конфигурации, можно и в составе конфигурации.
25 Пионер1С
 
07.11.22
19:58
Здравствуйте, Коллеги.
Спасибо за ответы. Очень познавательно.
Есть к чему стремиться.
Пробую. Разбираюсь.
Думаю, что все хорошо будет.
Не я первый. Не я последний.
Всем отличного настроения и позитива!
Спасибо!