/// Как в запросе задать константу типа дата в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеЗадатьКонстантуТипаДатаНаСервере()
// Нужное значение даты можно передать в запрос через
// параметр, либо указать значение даты прямо
// в тексте запроса.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДАТАВРЕМЯ(2013, 12, 31, 23, 59, 59) КАК ЗаСекундуДоНовогоГода"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Функции работы с датами в запросах в 1с 8.3, 8.2
&НаСервере
Процедура ФункцииДляРаботыСДатамиВЗапросахНаСервере()
// Как получить начало или конец периода в запросах 1С 8.3, 8.2
// НАЧАЛОПЕРИОДА(Дата, Период)
// КОНЕЦПЕРИОДА(Дата, Период)
// Как добавить сдвиг к дате в запросах 1С 8.3, 8.2
// ДОБАВИТЬКДАТЕ(Дата, Период, Количество)
// Как вычислить разность между датами в запросах 1С 8.3, 8.2
// РАЗНОСТЬДАТ(Дата1, Дата2, Период)
// Как вычислить квартал, месяц или день даты в запросах 1С 8.3, 8.2
// КВАРТАЛ(Дата), Месяц(Дата), День(Дата)
// Период принимает одно из значений
// Секунда
// Минута
// Час
// День
// Неделя
// Декада
// Месяц
// Квартал
// Полугодие
// Год
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Ссылка,
| ДОБАВИТЬКДАТЕ(Дата, Квартал, 1) КАК ПлюсКвартал,
| РАЗНОСТЬДАТ(Дата, &ВыбДата, Месяц) КАК РазностьВМесяцах,
| КВАРТАЛ(Дата) КАК Квартал,
| МЕСЯЦ(Дата) КАК Месяц,
| ДЕНЬ(Дата) КАК День
|ИЗ
| Документ.ПродажаЕды
|ГДЕ
| Дата МЕЖДУ
| НАЧАЛОПЕРИОДА(&ВыбДата, Год) И
| КОНЕЦПЕРИОДА(&ВыбДата, Год)"
);
Запрос.УстановитьПараметр("ВыбДата", '20140601');
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Как в запросе указать значение поля предопределенной записи
/// одной из таблиц в 1с 8.3, 8.2
&НаСервере
Процедура КакУказатьПредопределенноеЗначениеВЗапросеНаСервере()
// К примеру, требуется вывести только тех котрагентов, у которых
// значение поля Пол равно значению перечисления Мужской.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Пол
|ИЗ
| Справочник.Контрагенты
|ГДЕ
| Пол = ЗНАЧЕНИЕ(Перечисление.Пол.Мужской)
|"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
// Или требуется выбрать проводки по дебету бухгалтерского счёта 50.01,
// обратившись к нему через предопределенное имя КассаОрганизации.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СчетДт,
| СчетКт,
| Сумма
|ИЗ
| РегистрБухгалтерии.Хозрасчетный
|ГДЕ
| СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КассаОрганизации)"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Как использовать условный оператор выбора в запросе в 1с 8.3, 8.2
&НаСервере
Процедура КакИспользоватьУсловныйОператорВыбораВЗапросеНаСервере()
// При помощи условного оператора выбора добавим
// в результат запроса новое поле описывающее
// количество жира в продукте.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Жиры,
| ВЫБОР
| КОГДА Жиры = 0 ТОГДА
| ""Здесь жира нет""
| КОГДА Жиры < 10 ТОГДА
| ""Средняя жирность""
| ИНАЧЕ
| ""Очень жирный продукт""
|
| КОНЕЦ КАК ОписаниеЖирности
| ИЗ
| Справочник.Номенклатура
|"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Как в запросе проверить поле на соответствие ссылочному типу
/// в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеПроверитьПолеНаСсылочныйТипНаСервере()
// Сделаем отбор только тех бухгалтерских проводок, у которых
// регистратором является документ типа "ПродажаЕды"
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Регистратор,
| СчетДт,
| СчетКт,
| Сумма
|ИЗ
| РегистрБухгалтерии.Хозрасчетный
|ГДЕ
| Регистратор ССЫЛКА Документ.ПродажаЕды"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Как в запросе проверить значение на вхождение в
/// диапазон (включительно) в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеПроверитьЗначениеНаДиапазонНаСервере()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Калорийность
|ИЗ
| Справочник.Номенклатура
|ГДЕ
| Калорийность МЕЖДУ 200 И 300"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Как в запросе проверить значение на вхождение в список
/// в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеПроверитьЗначениеНаВхождениеВСписокНаСервере()
// Выведем солёные и сладкие продукты.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Вкус
|ИЗ
| Справочник.Номенклатура
|ГДЕ
| Вкус В (
| &СладкийВкус,
| &СолёныйВкус
| )"
);
Запрос.УстановитьПараметр("СладкийВкус",
Справочники.Вкусы.НайтиПоНаименованию("Сладкий")
);
Запрос.УстановитьПараметр("СолёныйВкус",
Справочники.Вкусы.НайтиПоНаименованию("Солёный")
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
// Обратите внимание. У оператора "В" есть вариант "В ИЕРАРХИИ".
// Например, ГДЕ Город В ИЕРАРХИИ (... список групп городов ...)
КонецПроцедуры
/// Как в запросе сравнить строку с шаблоном в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеСравнитьСтрокуСШаблономНаСервере()
// % - любое количество произвольных символов
// _ - один произвольный символ
// [] - любой одиночный символ, перечисленный внутри скобок
// [^] - любой одиночный символ, кроме тех, что внутри скобок после ^
// К примеру, выберем контрагентов, которые содержат
// слова, оканчивающиеся на "ов ".
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование
|ИЗ
| Справочник.Контрагенты
|ГДЕ
| Наименование ПОДОБНО ""%_[о][в][ ]%"""
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Как проверить в запросе на отсутствие поля (то есть значение NULL)
/// в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеПроверитьПолеНаNULLНаСервере()
// Ну, например, выберем из справочника Контрагенты только
// те элементы, у которых нет поля "Пол" (очевидно, что
// такими элементами окажутся группы).
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Пол
|ИЗ
| Справочник.Контрагенты
|ГДЕ
| Пол ЕСТЬ NULL"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
// Обратите внимание, что сюда не попали элементы,
// у которых это поле есть, но просто не заполнено.
КонецПроцедуры
/// Как в запросе проверить и заменить NULL на другое значение в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеЗаменитьNULLНаДругоеЗначениеНаСервере()
// Добавим в предыдущем примере вывод фразы "NULL", если
// Пол ЕСТЬ NULL.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| ЕСТЬNULL(Пол, ""NULL"")
|ИЗ
| Справочник.Контрагенты"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
/// Как получить пустую ссылку в запросе в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеПолучитьПустуюСсылкуНаСервере()
// Получим только тех контрагентов, у которых поле Пол есть,
// но оно не заполнено.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Пол
|ИЗ
| Справочник.Контрагенты
|ГДЕ
| Пол = ЗНАЧЕНИЕ(Перечисление.Пол.ПустаяСсылка)"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
// аналогично пишутся
// ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
// ЗНАЧЕНИЕ(Документ.ПродажаЕды.ПустаяСсылка)
// и т.д.
КонецПроцедуры
/// Как использовать значение Неопределено в запросе
/// в 1с 8.3, 8.2
&НаСервере
Процедура КакВЗапросеИспользоватьНеопределеноНаСервере()
// Значение данного типа применяются, когда необходимо
// использовать пустое значение, не принадлежащее ни к
// одному другому типу.
// Например, такое значение изначально имеют реквизиты
// с составным типом значения.
// Для примера отберём только те города, у которых
// не заполнено поле ОтличительныйПризнак (оно имеет
// составной тип).
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| ОтличительныйПризнак
|ИЗ
| Справочник.Города
|ГДЕ
| ОтличительныйПризнак = Неопределено"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
Смотрите также:
Электронный учебник по программированию в 1С Рекомендации по изучению программирования 1С с нуля Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, нидерландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки