Условия сравнения и проверки в Запросах. Отбор не заполненного значения Как задать отбор по Типу документа?
Как указать условие для отбора не определенного значения?
Как в языке запросов 1С отобрать не заполненное значение?
Какое условие указать в запросе после ключевого слова «ГДЕ», когда нужно сделать отбор по не заполненным полям?
Код 1C v 8.х Запрос.Текст =
"ВЫБРАТЬ
| усЕдиницыХранения.Ссылка
|ИЗ
| Справочник.усЕдиницыХранения КАК усЕдиницыХранения"
// Пример 1. сравнение с не заполненным булевым значением:
|ГДЕ
| усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь
// Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево:
|ГДЕ
| НЕ усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны
// Пример 3. выборка по условию не заполненного поля, имеющего тип "справочник конкретного типа"
|ГДЕ
| усЕдиницыХранения.АктивнаяОбластьОтбора = ЗНАЧЕНИЕ(Справочник.усОбластиОтбора.ПустаяСсылка)
// Пример 3а. выборка по условию не заполненного поля, имеющего тип "документ конкретного типа"
|ГДЕ
| НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент.ПустаяСсылка)
// Пример 3б. выборка по условию не заполненного поля, имеющего тип "документы разных типов" (составное поле)
|ГДЕ
| (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка)
| ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка)
| ИЛИ ...(и т.д. - последовательно перечисляем условия для всех возможных типов этого составного поля))
// Пример 4. или наоборот, если нужно выбрать заполненное значение типа "строка", то поможет условие:
|ГДЕ
| усЕдиницыХранения.Наименование > """"
// Пример 5. если нужно выбрать документы конкретного типа, при составном типе данных, например в регистре "ВыполняемыеЗадания" ресурс "Задание" имеет составной тип, среди значений которого возможен документ "Отбор"
|ГДЕ
| ВЫРАЗИТЬ(РегистрСведенийВыполняемыеЗадания.Задание КАК Документ.Отбор) ССЫЛКА Документ.Отбор
// Пример 5а. Еще аналогичный пример, когда нужно выбрать документы конкретного типа
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг
| ТОГДА ""ПоступлениеТоваровУслуг""
| КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА ""РеализацияТоваровУслуг""
| ИНАЧЕ """"
| КОНЕЦ КАК ВидДокумента
// Пример 6. выбор по условию не определенного значения:
|ГДЕ
| СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО
// Пример 7. выбор по виду движения "Приход" регистра накопления, "Расход" - аналогично):
|ГДЕ
| РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
// Пример 8. Как в запросе указать, что выполнять запрос не нужно (например, нужно программно в зависимости от какого-то
// условия вернуть пустой результат запроса -
// Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ Док.Ссылка = &ДокументСсылка", "ГДЕ ЛОЖЬ");).
// Для этого достаточно добавить условие "Где Ложь".
// Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно.
|ГДЕ ЛОЖЬ
// Пример 9. Проверка на то, что результат выполнения запроса содержит данные:
Если НЕ Запрос.Выполнить().Пустой() Тогда
// Пример 10. выбор по условию не заполненной даты:
|ГДЕ
| тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)
источник Категория:
Запросы Временный расчет регистров Временный расчет регистров требуется, если нужно выбрать итоги или движения на определенную дату. По умолчанию итоги регистров выдаются на Точку актуальности.
Формулировка 1С - Метод ВременныйРасчет устанавливает флаг участия регистра во временном расчете. После такой установки можно выполнять процедуры рассчитатьРегистрыНа и РассчитатьРегистрыПо, тогда у данного регистра методы обращения к остаткам будут выдавать рассчитанные значения остатков на заданный момент времени.
Код 1C v 7.x // Пример 1
// Если итоги не актуальны, то стоимости берем из временного расчета
// регистра УчетРеализации
Рег = СоздатьОбъект("Регистр.УчетРеализации");
Рег.ВременныйРасчет();
РассчитатьРегистрыНа(ТекущийДокумент());
Рег.Товар = Товар;
Рег.Клиент = Клиент;
Рег.ОстаткиПолучить();
ТекОстаток = Рег.ОстатокТовара;
ТекСтоимость = Рег.Стоимость;
ТекПродСтоимость = Рег.ПродСтоимость;
// Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары");
РегДоходы = СоздатьОбъект("Регистр.Доходы");
//установка флага временного расчета для регистров
РегТовары.ВременныйРасчет(1);
РегДоходы.ВременныйРасчет(1);
Категория:
Регистры Установить значение фильтра для оптимизации расчетов Код 1C v 7.x // Пример 1
// Для регистра с измерениями «Товар», «Склад», «МОЛ» запись
Рег.УстановитьЗначениеФильтра("Товар", ВыбГруппаТоваров, 2);
// означает, что расчеты будут проводиться по товарам из группы ВыбГруппаТоваров.
// Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары");
//выбрать все движения по данному складу за период
РегТовары.УстановитьЗначениеФильтра("Склад", ТекСклад);
//далее идет выборка движений или итогов
//...
Категория:
Регистры Установить фильтр для оптимизации действий с регистром Код 1C v 7.x // Пример 1
// Для регистра с измерениями «Товар», «Склад», «МОЛ» запись
Рег.УстановитьФильтр(Тов1, , );
// означает, что расчеты будут проводиться только по одному товару (Тов1), но по всем складам и МОЛам.
Рег = СоздатьОбъект("Регистр.Взаиморасчеты");
Рег.ВременныйРасчет();
Рег.УстановитьФильтр(Клиент, );
РассчитатьРегистрыНа(ДатаНачала);
Рег.ВыбратьДвиженияСОстатками(ДатаКонца);
Пока Рег.ПолучитьДвижение() = 1 Цикл
Прих = 0;
Расх = 0;
Если Рег.Приход = 1 Тогда
Прих = Рег.Долг;
Иначе
Расх = Рег.Долг;
КонецЕсли;
ТекущееСальдо = Рег.Остаток(Клиент, "Задолженность");
Док = Рег.ТекущийДокумент();
Таб.ВывестиСекцию("Документ");
КонецЦикла;
// Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары");
//выбрать все движения по данному складу за период
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
//... код
КонецЦикла;
// Пример 3
РегТовары = СоздатьОбъект("Регистр.Товары");
//выбрать все товары на данном складе
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
//... код
КонецЦикла;
Категория:
Регистры Получить движения регистра Код 1C v 7.x // Пример 1
Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты");
Если Режим = "Подробно" Тогда
Рег1.УстановитьФильтр(Клиент);
// Открываем выборку
Рег1.ВыбратьДвижения(ДатаНачало, );
// Цикл выбора движений по регистру
Пока Рег1.ПолучитьДвижение() > 0 Цикл
Если Строка(Рег1.Клиент.Код) <> Строка(Запрос.Клиент.Код) Тогда
Продолжить;
КонецЕсли;
Док = Рег1.ТекущийДокумент();
Дв_Баз_Сум = Рег1.СуммаБазовая;
Дв_Вал_Сум = Рег1.СуммаВалютная;
Если Рег1.Расход = 1 Тогда
Таб.ВывестиСекцию("Расход2");
Иначе
Таб.ВывестиСекцию("Приход2");
КонецЕсли;
КонецЦикла;
КонецЕсли;
//Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары");
РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
Сообщить("Дата движения " + Строка(РегТовары.ТекущийДокумент.ДатаДок));
Сообщить("Клиент: " + РегТовары.Клиент);
Сообщить("Товар: " + РегТовары.Товар);
Сообщить("Сумма: " + РегТовары.Доход);
КонецЦикла;
Категория:
Регистры Сводные Остатки регистра остатков Метод работает аналогично процедуре Остатки, однако здесь могут быть заданы не все значения измерений, а только несколько,
но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе.
Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные измерения.
Код 1C v 7.x // Пример 1
// Для регистра с измерениями «Товар», «Склад», «МОЛ» запись
Рег.СводныеОстатки(Тов1, , );
//означает, что ресурсы будут получены только по одному товару (Тов1), но по всем складам и всем МОЛам.
Процедура ПолучитьСводныеОстатки(Товар, ОстатокТовара, Стоимость);
Регистр.УчетТовара.СводныеОстатки(Товар, );
ОстатокТовара = Регистр.УчетТовара.ОстаткиТовара;
Стоимость = Регистр.УчетТовара.СтоимостьТовара;
КонецПроцедуры
// Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары")
//получить сводные остатки по товару
РегТовары.СводныеОстатки(ТекТовар,); //указано только одно измерение
КолвоТовара = РегТовары.Количество;
СтоимостьТовара = РегТовары.Стоимость;
//получить стоимость всех товаров на данном складе
РегТовары.СводныеИтоги(,ТекСклад); //указано только одно измерение
СтоимостьПоСкладу = РегТовары.Стоимость;
Категория:
Регистры Сводный Остаток регистра остатков Данный метод работает аналогично методу Остаток, однако здесь могут быть заданы не все значения измерений, а только несколько,
но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе.
Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные измерения.
Код 1C v 7.x // Пример 1
// Для регистра с измерениями «Товар», «Склад», «МОЛ» запись
Рег.СводныйОстаток(Тов1, , "ОстатокТовара");
//означает, что ресурс «ОстатокТовара» будет получен только по одному товару (Тов1), но по всем складам и всем МОЛам.
Процедура ПолучитьСводныйОстаток(Товар, Ост);
Ост = Регистр.УчетТовара.СводныйОстаток(Товар, , "ОстаткиТовара");
КонецПроцедуры
// Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары")
//получить остаток данного товара на всех складах
КолвоТовара = РегТовары.СводныйОстаток (ТекТовар,,"Количество");
СтоимостьТовара = РегТовары.СводныйОстаток (ТекТовар,,"Стоимость");
//получить стоимость всех товаров на данном складе
СтоимостьПоСкладу = РегТовары.СводныйОстаток (,ТекСклад,"Стоимость");
Отзывы об казино
888старс от реальных игроков с опытом игры в данном игровом заведении.
Категория:
Регистры Остатки, итоги регистра остатков Код 1C v 7.x
// Пример 1
Процедура ПолучитьОстатки(Товар, Склад, ОстатокТовара, Стоимость);
Регистр.УчетТовара.Остатки(Товар, Склад);
ОстатокТовара = Регистр.УчетТовара.ОстаткиТовара;
Стоимость = Регистр.УчетТовара.СтоимостьТовара;
КонецПроцедуры
// Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары")
//получить остаток данного товара на данном складе по кол-ву и по сумме
РегТовары.Остатки (ТекТовар, ТекСклад);
Колво = РегТовары.Количество;
Стоимость = РегТовары.Стоимость;
// Пример 3
рег1=создатьобъект("Регистр.Остатки");
рег1.Остатки(Товар, Склад, Контрагент);
Сообщить(" Кол-во="+рег1.Количество+
" Сумма="+рег1.Сумма);
Категория:
Регистры Остаток, итог регистра остатков Код 1C v 7.x
// Пример 1
Процедура ПолучитьОстаток(Товар, Склад, Ост, Стоим);
Ост = Регистр.УчетТовара.Остаток(Товар, Склад, "ОстаткиТовара");
Стоим = Регистр.УчетТовара.Остаток(Товар, Склад, "СтоимостьТовара");
КонецПроцедуры
// Пример 2
РегТовары = СоздатьОбъект("Регистр.Товары")
//получить остаток данного товара на данном складе
Колво = РегТовары.Остаток (ТекТовар, ТекСклад, "Количество");
//получить стоимость данного товара на данном складе
Стоимость = РегТовары.Остаток (ТекТовар, ТекСклад, "Стоимость");
Категория:
Регистры Выбрать Итоги, остатки регистра Код 1C v 7.x
// Пример 1
РегТовары = СоздатьОбъект("Регистр.Товары");
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
Сообщить("Товар " + Строка(РегТовары.Товар) +
" на складе " + Строка(РегТовары.Склад) +
" кол-во: " + Строка(РегТовары.Количество) +
" стоимость: " + Строка(РегТовары.Стоимость) +
КонецЦикла;
// Пример 2
Процедура ВыбратьКредит()
Список = СоздатьОбъект("СписокЗначений");
Рег = СоздатьОбъект("Регистр.ТоварныйКредит");
Рег.УстановитьФильтр(Клиент, );
Рег.ВыбратьИтоги();
Ном = 0;
Пока Рег.ПолучитьИтог() = 1 Цикл
Док = Рег.Документ;
Список.ДобавитьЗначение(Док, "" + Док + " — Остаток = " + Рег.Долг);
Если Ном = 0 Тогда
ВыбДок = Док;
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
Если Ном > 0 Тогда
Если Список.ВыбратьЗначение(ВыбДок, "Выберите кредит") = 1 Тогда
ДокКредита = ВыбДок;
КонецЕсли;
КонецЕсли;
Возврат;
КонецПроцедуры
Категория:
Регистры