Запрос выдающий данные на каждую дату периода

18.11.11

Разработка - Запросы

Пример простого запроса для извлечения данных на каждую дату в периоде. Применимо в специфичных случаях использования СКД и при формировании отчетов.

Скачать файлы

Наименование Файл Версия Размер
Текст запроса
.txt 1,73Kb
184
.txt 1,73Kb 184 Скачать

Пример простого запроса для извлечения данных на каждую дату в периоде.

Применимо в специфичных случаях использования СКД и при формировании отчетов.  Принцип работы достаточно прост -  все даты берутся из регистра "РегламентированныйПроизводственныйКалендарь", что в общем логично - а затем посредством объединения присоединяются к данным. Всё ужасно просто - но часто бывает что достаточно тривиальные и лежащие на поверхности вещи в голову приходят не сразу Smile. Может кому-то и пригодиться....

Текстовой файл содержит текст запроса. В качестве примера используется извлечение остатка товара по партиям на конец каждого дня. В запросе используется три таблицы : РегламентированныйПроизводственныйКалендарь - для получения списка дат и соединение двух одинаковых таблиц ОстаткиИОбороты с периодичностью День  - для получения таблицы периодов в рамках которых не происходило изменений количества.... ну а далее простое соединение полученного - результат представлен на скриншоте.

 

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122167    670    389    

714

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5746    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6284    31    mkalimulin    25    

50

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1742    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5388    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16185    skovpin_sa    14    

98
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Famza 84 18.11.11 11:23 Сейчас в теме
Уже только за одну "Единую Гвинею" можно плюсовать. Жжешь! :D
2. ildarovich 7850 18.11.11 11:43 Сейчас в теме
Можно обойтись и без производственного календаря (а вдруг его нет в конфигурации или он неправильно заполнен). Для этого можно сформировать искусственную таблицу дат в заданном диапазоне с помощью запроса наподобие Порождающий запрос. В комментариях к указанной статье приведены другие решения той же задачи:Комментарий со ссылками.
Dmitryiv; boln; +2 Ответить
4. alexkutuzov 41 18.11.11 13:19 Сейчас в теме
(2) ildarovich, В том то и смысл чтобы не создавать таблицу, а воспользоваться тем что уже есть. Зачем порождать таблицу описаными изуверствами - можно закинуть во временную таблицу запроса любую таблицу значений (важно только чтобы для каждой колонки был указан тип данных)

Запрос = Новый Запрос("ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_Таблица ИЗ &ТаблицаЗначений; 
                  |    ВЫБРАТЬ Дата, .... ИЗ ВТ_Таблица ... и т.д.");
Запрос.УстановитьПараметр("ТаблицаЗначений", ТаблицаЗначений);


Да и собственно производственный календарь тут ни причем - главное что идею Вы поняли, а что и как прицепить в запросе не так уж и важно.
MrFlanker; +1 1 Ответить
3. Mudrii_Gankster 18.11.11 13:02 Сейчас в теме
Спасибо за запросик, потестю
5. Smaylukk 185 18.11.11 21:12 Сейчас в теме
Вот как раз забросить во временную таблицу запроса таблицу значений с датами в СКД нельзя сделать. Разве что через набор данных "Объект" (по крайней мере в 8.1 так). А это в свою очередь убивает всю простоту. Да и как уже отметили - не во всех конфигурациях есть требуемые регистры.
6. Boroda 90 19.11.11 12:56 Сейчас в теме
А для ЗУП (или УПП) очень даже, думаю, подойдёт! Тем более задач по работе с календарём - море, т.к. почти все расчёты основаны на рабочем времени. И зачастую требуется привести фактическое рабочее время к плановому, к норме. Так что, и за идею, и за саму обработку ПЛЮС.
7. Angeros 21.11.11 05:21 Сейчас в теме
8. WellMaster 104 24.11.11 15:23 Сейчас в теме
Суть задачи понял, когда-то пытался решить на запросах - не решил. Пришлось кодом 1с на каждый день периода запускать запрос (грубо, долго, но работает).
Предлагаемое решение не понял (никак не соображу, за счет чего в результирующей таблице появляются строки с датами, по которым не было движений регистра накоплений). Курю запрос дальше.
9. JER_MARK 25.11.11 17:22 Сейчас в теме
Ага, вот эта генерация чисел - мудро конечно, но все-таки легче набросать производственный календарь ))) Мне это попалось при подготовке к экзамену по 1с:спец
10. Laertid 99 17.01.12 16:33 Сейчас в теме
Вообще-то СКД умеет из виртуального регистра ОстаткиИОбороты напрямую доставать остатки. А чтобы добавить недостающие дни, надо в группировке Дата во вкладочке группировка в Дополнение выбрать День, а в данных с остатками в описнании данных (там, где выбирается Период/измерение/Остаток) выбрать как раз остаток. Тогда СКД добавит дни без оборотов.
И более того, она будет правильно считать итоги по начальным-конечным остаткам >_< Не знаю, как оно реализовано у Вас (нет валюты скачать файлик глянуть), но судя по описанию - тем же способом, к которому пришел и я в конце концов. *пересечение одинаковых таблиц по неравенству в дате в условиях, правильно?*

*к сожалению, посмотреть файлик не могу, так что если я не прав - извиняюсь, но тогда ваша идея усложнена, мне кажется. Одна таблица ОстаткиИОбороты в СКД работает наилучшим способом, если вы хотите получить ежедневные остатки.
Spacer; alenakrr; +2 Ответить
11. kostik_love 308 22.09.17 06:49 Сейчас в теме
первый набор записей- периоды
ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ Единицы

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

ВЫБРАТЬ
	1

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

ВЫБРАТЬ
	2

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

ВЫБРАТЬ
	3

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

ВЫБРАТЬ
	4

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

ВЫБРАТЬ
	5

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

ВЫБРАТЬ
	6

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

ВЫБРАТЬ
	7

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

ВЫБРАТЬ
	8

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

ВЫБРАТЬ
	9
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Десятки.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ Десятки
ИЗ
	Единицы КАК Десятки
ГДЕ
	Десятки.Цифра * 10 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Сотни.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ Сотни
ИЗ
	Десятки КАК Сотни
ГДЕ
	Сотни.Цифра * 10 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Тысячи.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ Тысячи
ИЗ
	Сотни КАК Тысячи
ГДЕ
	Тысячи.Цифра * 10 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДесяткиТысяч.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ ДесяткиТысяч
ИЗ
	Тысячи КАК ДесяткиТысяч
ГДЕ
	ДесяткиТысяч.Цифра * 10 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СотниТысяч.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ СотниТысяч
ИЗ
	ДесяткиТысяч КАК СотниТысяч
ГДЕ
	СотниТысяч.Цифра * 10 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, СотниТысяч.Цифра + ДесяткиТысяч.Цифра + Тысячи.Цифра + Сотни.Цифра + Десятки.Цифра + Единицы.Цифра) КАК ДатаПериода
ПОМЕСТИТЬ Календарь
ИЗ
	СотниТысяч КАК СотниТысяч,
	ДесяткиТысяч КАК ДесяткиТысяч,
	Тысячи КАК Тысячи,
	Сотни КАК Сотни,
	Десятки КАК Десятки,
	Единицы КАК Единицы
ГДЕ
	СотниТысяч.Цифра + ДесяткиТысяч.Цифра + Тысячи.Цифра + Сотни.Цифра + Десятки.Цифра + Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НАЧАЛОПЕРИОДА(Календарь.ДатаПериода, МЕСЯЦ) КАК Период // указываем периодичность- в данном случае каждый месяц
ИЗ
	Календарь КАК Календарь

СГРУППИРОВАТЬ ПО
	НАЧАЛОПЕРИОДА(Календарь.ДатаПериода, МЕСЯЦ)

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


связываем эти отборы как показано на картинке
Прикрепленные файлы:
Оставьте свое сообщение