Оптимизированный запрос СКД
Как известно, при использовании СКД программа оптимизирует текст запроса и часто это приводит к неожиданным результатам.
Окончательный (оптимизированный) текст запроса можно посмотреть с помощью такого кода:
Представление документа в СКД
В поле "Выражение по которому вычисляется представление поля" пишем:
ВЫБОР КОГДА Заказ ЕСТЬ NULL ТОГДА "" ИНАЧЕ "Заказ " + ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Заказ.Номер) + " от " + Формат(Заказ.Дата, "ДФ='дд.ММ.гггг'") КОНЕЦ
Запросы
Иногда тип значения поля заранее не известен и выражение вида:
МАКСИМУМ(ВЫБОР КОГДА ВТ_Свойства.Имя = "Свойство1" ТОГДА ХА_ЗаказДополнительныеРеквизиты.Значение ИНАЧЕ "" КОНЕЦ)
в случае с числовым полем в качестве максимума вернет не максимальное число. После ИНАЧЕ для вычисления максимума по числовому полю обязательно нужно писать 0.
Конец дня в виртуальных таблицах
Виртуальная таблица Остатки() даёт остатки на границу НЕ ВКЛЮЧАЯ.
Таблица ОстаткиИОбороты и Обороты выдаёт данные по границу ВКЛЮЧАЯ
Вариант обхода:
РегистрНакопления.ТоварыНаСкладах.Остатки(ДобавитьКДате(КонецПериода(&КонДата, "День"), "Секунда", 1),)
Выбор уникальных записей во временных таблицах
Столкнулся с не очевидным поведением запросов СКД при группировках во временных таблицах.
Необходимо было выбрать уникальные записи во временную таблицу для того, чтобы в дальнейшем посчитать средние значения.
Особенности СКД
Создаем в запросе таблицу:
- Контрагент
- Договор
- Партия
- Приход
- Расход
- ВЫБОР КОГДА Приход <> 0 И Расход <> 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК Оборот
При разных группировках в последнем поле (Оборот) итоги будут отличаться, т.к. последнее поле будет рассчитываться для каждой группировки в отдельности. Если эту таблицу сначала поместить во временную таблицу и там сгруппировать, а потом уже выводить в отчет, то результат будет один и тот же.
Решение:
Заметки по СКД
Ошибка при использовании экспортных процедур при программном выводе отчета на СКД.
По умолчанию при инициализации процессора компоновки возможность испольлзования внешних функций отключена, поэтому принудительно ставим Истина.