Показаны сообщения с ярлыком запрос. Показать все сообщения
Показаны сообщения с ярлыком запрос. Показать все сообщения

среда, 10 мая 2017 г.

Использование запроса к таблице значений в построителе отчетов


Построитель отчетов очень удобен для использования интерактивных отборов. Но в построитель отчетов нельзя передавать в запрос таблицу значений. 

Приведенный ниже код позволяет обойти ограничение:

среда, 7 декабря 2016 г.

Порядковый номер в запросе

ВЫБРАТЬ
 Валюты.Ссылка КАК Элемент,
 Валюты.Код КАК Код,
 Валюты.Наименование
ПОМЕСТИТЬ Нач
ИЗ
 Справочник.Валюты КАК Валюты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 КОЛИЧЕСТВО(Нач1.Элемент) КАК ПорядковыйНомер,
 Нач.Элемент,
 Нач.Код,
 Нач.Наименование
ИЗ
 Нач КАК Нач
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ Нач КАК Нач1
  ПО Нач.Элемент >= Нач1.Элемент

СГРУППИРОВАТЬ ПО
 Нач.Элемент,
 Нач.Код,
 Нач.Наименование

понедельник, 7 ноября 2016 г.

Число и дату строкой в запросе

Как в запросе получить число и дату строкой?

 Вот здесь было предложено решение: http://infostart.ru/public/331805/

Пример как выразить число 8.2:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    123.655 КАК Число_
ПОМЕСТИТЬ Числа

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    1125.658

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    965.45
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПОДСТРОКА(Константы.Ц, Числа.Число_ / 10000000 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.000006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.00006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.0006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.06)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.6)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 6)) / 6 + 1, 1) + "." + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 60)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 600)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 6000)) / 6 + 1, 1) КАК Строка
ИЗ
    (ВЫБРАТЬ
        "0123456789" КАК Ц,
        ДАТАВРЕМЯ(1, 1, 1) КАК О) КАК Константы,
    Числа КАК Числа

Пример как выразить дату:
ВЫБРАТЬ
    ПОДСТРОКА("0123456789", ДЕНЬ(&Дата) / 10 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(&Дата))) / 6 + 1, 1)
    + "/"
    + ПОДСТРОКА("0123456789", МЕСЯЦ(&Дата) / 10 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(&Дата))) / 6 + 1, 1)
    + "/"
    + ПОДСТРОКА("0123456789", ГОД(&Дата) / 1000 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.06)) / 6 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.6)) / 6 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 6)) / 6 + 1, 1) КАК Строка

вторник, 2 августа 2016 г.

Запрос, по всем документам, у которых есть общий реквизит




Запрос формируется динамически, по всем документам, у которых имеется общий реквизит "Организация".

 
Процедура Инициализация()
 
 Исключения = Новый Массив;
 Исключения.Добавить("ЗаявкаНаДоставку");
 Исключения.Добавить("ЗаказПокупателя");
 Исключения.Добавить("ЧекККМ");
 
 ТаблицаДокументов = Новый ТаблицаЗначений;
 ТаблицаДокументов.Колонки.Добавить("Имя");
 ТаблицаДокументов.Колонки.Добавить("Реквизит");
 

четверг, 14 января 2016 г.

1с запрос тормозит при выводе реквизита не ограниченной длины

1с запрос тормозит при выводе реквизита не ограниченной длины.

Для уменьшения времени запроса для реквизита не ограниченной длины необходимо использовать "Подстрока(...)"

пятница, 27 ноября 2015 г.

При задвоении в запросе с соединением 2 таблиц - ставить МИНИМУМ

При задвоении в запросе с соединением 2 таблиц - ставить МИНИМУМ.
Либо может быть необходимо вместо соединения  - использовать ОБЪЕДИНИТЬ ВСЕ, не забыв в ролях указать игнорировать NULL...

вторник, 13 октября 2015 г.

1с запрос получить строкой список документов из табличной части документа

Пример запроса 1с 8.2 по выводу в строку списка документов "Сделка" из расшифровки платежа "Заявка на расходование денежных средств".

Пример для 1с УПП 1.3:
Ограничения: 1)Выводятся только первые 10 документов из расшифровки платежа 2)Приемлемо, только для док-тов, чьи даты в интервале с 2000 года...

понедельник, 9 февраля 2015 г.

1с Запрос 8.2 Остатки на каждый день периода, без движений

Пример запроса 1с 8.2, когда не было движения за период,  а необходимо вывести остатки.

Где "ВремТз" - это таблица значений, заполненная датами за месяц:

Разница = (КонПериода-НачПериода)/86400;
   
    ВремТз = Новый ТаблицаЗначений;
    ВремТз.Колонки.Добавить("Период",Новый ОписаниеТипов("Дата"));      

    Для сч =0 по Разница Цикл       
        День_=НачПериода+сч*86400;
        ВремТз.Добавить().период = День_;       
    КонецЦикла;

вторник, 11 ноября 2014 г.

1с запрос 8.2 вывод даты без времени

Вывод даты в запросе 1с 8.2 без времени.


Что бы вывести дату запросом в формате ДД.ММ.ГГГГ необходимо сделать так: НачалоПериода(Дата,День).

вторник, 14 октября 2014 г.

1с запрос: задвоенное начальное и конечное количество

Это происходит, когда используется Регистратор, либо Авто.
Начальный, конечный остатки и обороты получаем отдельными запросами:

четверг, 15 мая 2014 г.

1с Посчитать процент в запросе

Процент считается в итогах.
В примере указан расчет процента Просроченной суммы к Общей сумме:

|ИТОГИ
    |    СУММА(Оплата),
    |    СУММА(Текущая),
    |    СУММА(Просрочено),
    |    ВЫБОР
    |        КОГДА СУММА(Месяц1) + СУММА(Месяц2) + СУММА(Месяц3) + СУММА(Итого) <> 0
    |            ТОГДА ВЫРАЗИТЬ(СУММА(Просрочено) / (СУММА(Месяц1) + СУММА(Месяц2) + СУММА(Месяц3) + СУММА(Итого)) * 100 КАК ЧИСЛО(15, 2))
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК Процент,

    |    СУММА(Итого),
    |    СУММА(Месяц1),
    |    СУММА(Месяц2),
    |    СУММА(Месяц3),
    |    СУММА(Месяц1) + СУММА(Месяц2) + СУММА(Месяц3) + СУММА(Итого) КАК Общая
    |ПО
    |    ОБЩИЕ,
    |    ВидПокупателя,
    |    Регион,
    |    Менеджер,
    |    Контрагент,
    |    Договор,
    |    Документ
...

пятница, 21 марта 2014 г.

Запрос 1с: Получить цену последненего прихода по всем номенклатурам на дату

База Розница 2.0:
1)Получим список номенклатур
2)По этому списку получим максимальную дату поступления
3)По максимальной дате поступления и номенклатуре - получим из документа (дата которого равна максимальной дате) цену.

четверг, 27 февраля 2014 г.

Еще один запрос к ТЗ с итогами

Таблица значений как источник данных в запросе в 1С:

Создаем ТЗ, в которой указывает тип колонок, причем, по колонкам, по которым в запросе будем указывать в итогах - должны быть не строковыми...
З = Новый Запрос("ВЫБРАТЬ
                     |    Тз.Дат,
                     |    Тз.Регион,
                     |    Тз.ВидНом,
                     |    Тз.ТипПрод,
                     |    Тз.ТрМарка,
                     |    Тз.Кол,
                     |    Тз.Сумма
                     |ПОМЕСТИТЬ ВремТз
                     |ИЗ
                     |    &Тз КАК Тз
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     |    ВремТз.Дат КАК Дат,
                     |    ВремТз.Регион КАК Регион,
                     |    ВремТз.ВидНом,
                     |    ВремТз.ТипПрод,
                     |    ВремТз.ТрМарка,
                     |    ВремТз.Кол,
                     |    ВремТз.Сумма
                     |ИЗ
                     |    ВремТз КАК ВремТз
                     |
                     |УПОРЯДОЧИТЬ ПО
                     |    Дат
                     |ИТОГИ ПО
                     |    Дат,
                     |    Регион");
    З.УстановитьПараметр("Тз",Тз);

вторник, 8 октября 2013 г.

Получить полный список родителей ссылки запросом 1с 8.х

1с Запрос пример:

Получим родителей:

Запрос = СоединениеС1С_.NewObject("Запрос");
    Запрос.Текст =
    "
    |ВЫБРАТЬ
    |    Номенклатура.Ссылка КАК Ссылка,
    |    Номенклатура.Родитель
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Ссылка = &МояСсылка
    |ИТОГИ ПО
    |    Ссылка ИЕРАРХИЯ
    |";
   
    Запрос.УстановитьПараметр("МояСсылка", Номенклатура);
   

понедельник, 18 марта 2013 г.

Запрос к списку значений

Запрос = Новый Запрос("ВЫБРАТЬ
                          |    Сз.Значение
                          |ПОМЕСТИТЬ Сз_
                          |ИЗ
                          |    &Сз КАК Сз
                          |;
                          |
                          |////////////////////////////////////////////////////////////////////////////////
                          |ВЫБРАТЬ
                          |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сз_.Значение) КАК Значение
                          |ИЗ
                          |    Сз_ КАК Сз_");


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

среда, 27 февраля 2013 г.

Запрос к Таблице значений

Запрос = Новый Запрос("
|ВЫБРАТЬ
|    Тз.Поле1,
|    Тз.Поле2
|ПОМЕСТИТЬ Тз
|ИЗ
|    &Тз КАК Тз
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    Тз.Поле1,
|    Тз.Поле2
|ИЗ
|    Тз КАК Тз
|");

Запрос.УстановитьПараметр("Тз", );

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

КонецЦикла;

четверг, 11 октября 2012 г.

1С 8.2 ЗУП. Запрос по работающим

Запрос, отбирающий работающих, который получает всех тех, по которым есть прием на работу, и исключает все, тех по которым имеется документ Увольнение:
ВЫБРАТЬ
    ВсеСотры.Физлицо КАК Физлицо
ИЗ
    (ВЫБРАТЬ
        ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо КАК Физлицо
    ИЗ
        РегистрСведений.ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы КАК ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы
    ГДЕ
        ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Регистратор ССЫЛКА Документ.ПриемНаРаботуВОрганизацию
   
    СГРУППИРОВАТЬ ПО
        ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо) КАК ВсеСотры
ГДЕ
    НЕ ВсеСотры.Физлицо В
                (ВЫБРАТЬ
                    РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ) КАК РаботникиОрганизацийСрезПоследних
                ГДЕ
                    РаботникиОрганизацийСрезПоследних.Регистратор ССЫЛКА Документ.УвольнениеИзОрганизаций)

СГРУППИРОВАТЬ ПО
    ВсеСотры.Физлицо

вторник, 2 октября 2012 г.

1с Отбор изменений из плана обмена с помощью запроса

Построитель1 = Новый ПостроительОтчета;
    Построитель1.Текст ="
    |ВЫБРАТЬ
|    0 КАК Ном,
|    ИСТИНА КАК Выгружать,
|    РеализацияТоваровУслугИзменения.Ссылка.ДатаОтгрузки КАК Дата,
|    ""РеализацияТоваровУслуг"" КАК Вид,
|    РеализацияТоваровУслугИзменения.Ссылка.Номер КАК Номер,
|    РеализацияТоваровУслугИзменения.Ссылка
|ИЗ

четверг, 13 сентября 2012 г.

Поиск свойства запросом в 1с 8.1,8.2

Находим нужное свойство с помощью запроса:
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.ПустаяСсылка();
Запрос = Новый Запрос;
Текст = "
    |ВЫБРАТЬ
    |    СвойстваОбъектов.Ссылка
    |ИЗ
    |    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
    |ГДЕ
    |    СвойстваОбъектов.Наименование = ""ИмяСвойства""
    |    И СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)";
    Запрос.Текст = Текст;
   
    Выборка = Запрос.выполнить().выбрать();
    пока Выборка.следующий() Цикл
        Свойство = Выборка.Ссылка;
        Прервать;
    КонецЦикла;
   
    Если Свойство.пустая() Тогда
        Предупреждение("Не нашли свойство в базе:ИмяСвойства");
        Возврат
    КонецЕсли;

Справочник_Контрагенты
Справочник_Номенклатура

вторник, 21 августа 2012 г.

Использование ССЫЛКА и ЗНАЧЕНИЕ 1с 8 в запросах

Пустая ссылка:
Номенклатура.ОсновноеИзображение = ЗНАЧЕНИЕ(Справочник.ХранилищеДополнительнойИнформации.ПустаяСсылка)