База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как написать и настроить запросы в 1С для различных ситуаций?
- В этой теме 1 ответ, 2 участника, последнее обновление 13 часов, 59 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
15 сентября 2026 в 20:18 #38655
Пример запроса в 1С
-
15 сентября 2026 в 20:18 #38656
Пример простого запроса 1С, который получает номенклатуру из справочника по группе:
1С (Код)1234567891011121314151617181920212223242526Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка КАК Номенклатура,| Номенклатура.Код КАК Код,| Номенклатура.Наименование КАК Наименование|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.Родитель = &Родитель| И НЕ Номенклатура.ПометкаУдаления|УПОРЯДОЧИТЬ ПО| Номенклатура.Наименование";Запрос.УстановитьПараметр("Родитель", ГруппаНоменклатуры);РезультатЗапроса = Запрос.Выполнить();Выборка = РезультатЗапроса.Выбрать();Пока Выборка.Следующий() ЦиклСообщить(Выборка.Код + " - " + Выборка.Наименование);КонецЦикла;Если нужно получить все элементы справочника без отбора по группе:
1С (Код)12345678910111213141516Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка,| Номенклатура.Код,| Номенклатура.Наименование|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| НЕ Номенклатура.ПометкаУдаления|УПОРЯДОЧИТЬ ПО| Номенклатура.Наименование";Результат = Запрос.Выполнить();ТаблицаНоменклатуры = Результат.Выгрузить();Пример запроса с параметром поиска по наименованию:
1С (Код)1234567891011121314151617181920Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка,| Номенклатура.Код,| Номенклатура.Наименование|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.Наименование ПОДОБНО &СтрокаПоиска| И НЕ Номенклатура.ПометкаУдаления";Запрос.УстановитьПараметр("СтрокаПоиска", "%молоко%");Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклСообщить(Выборка.Наименование);КонецЦикла;В параметр
&СтрокаПоискапередается шаблон:—
%молоко%, содержит слово «молоко»;
—молоко%, начинается со слова «молоко»;
—%молоко, заканчивается словом «молоко».Пример запроса к документам за период:
1С (Код)123456789101112131415161718192021Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Реализация.Ссылка,| Реализация.Номер,| Реализация.Дата,| Реализация.Контрагент,| Реализация.СуммаДокумента|ИЗ| Документ.РеализацияТоваровУслуг КАК Реализация|ГДЕ| Реализация.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания| И НЕ Реализация.ПометкаУдаления|УПОРЯДОЧИТЬ ПО| Реализация.Дата";Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала));Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОкончания));Результат = Запрос.Выполнить();ТаблицаДокументов = Результат.Выгрузить();Пример получения товаров из табличной части документов:
1С (Код)123456789101112131415161718192021222324252627Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| РеализацияТовары.Ссылка КАК Документ,| РеализацияТовары.Номенклатура,| РеализацияТовары.Количество,| РеализацияТовары.Цена,| РеализацияТовары.Сумма|ИЗ| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары|ГДЕ| РеализацияТовары.Ссылка = &СсылкаНаДокумент";Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклСообщить(Выборка.Номенклатура+ ": "+ Выборка.Количество);КонецЦикла;Если результат нужно загрузить в таблицу формы:
1С (Код)12345Результат = Запрос.Выполнить();ТаблицаЗначений = Результат.Выгрузить();ЭлементыФормы.ТаблицаТоваров.Значение = ТаблицаЗначений;В управляемом приложении обычно используют реквизит формы типа
ТаблицаЗначенийи передают результат в него:1С (Код)123Результат = Запрос.Выполнить();ТаблицаТоваров = Результат.Выгрузить();Для проверки, что запрос вернул строки:
1С (Код)1234567Результат = Запрос.Выполнить();Если Результат.Пустой() ТогдаСообщить("Данные не найдены");ИначеСообщить("Данные найдены");КонецЕсли;Частые ошибки:
1. Имя объекта должно соответствовать конфигурации. Например, документ может называться
РеализацияТоваровУслуг,ПродажаТоваровили иначе.
2. Имя табличной части также должно быть точным:Товары,Услуги,ТоварыУслуги.
3. Перед выполнением запроса нужно установить все параметры, используемые через&ИмяПараметра.
4. В запросах к регистрам накопления для остатков и оборотов используются виртуальные таблицы, например.Остатки()и.Обороты().
5. При левом соединении значения могут бытьNULL. Для замены таких значений применяетсяЕСТЬNULL(), например:1С (Код)12345678910Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка,| Номенклатура.Наименование,| ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК КоличествоОстаток|ИЗ| Справочник.Номенклатура КАК Номенклатура| ЛЕВОЕ СОЕДИНЕНИЕ| РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени, ) КАК Остатки| ПО Остатки.Номенклатура = Номенклатура.Ссылка";Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/80366/
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.