Запрос из СКД, использовать в обработке

1. 24rus 125 10.11.20 13:10 Сейчас в теме
Всем здравствуйте
Есть в штатном отчете на СКД запрос типа:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 0
	ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
	ЗНАЧЕНИЕ(Справочник.ШтатноеРасписание.ПустаяСсылка) КАК ПозицияШтатногоРасписания,
	ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
	ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
	ЗНАЧЕНИЕ(Справочник.РазрядыКатегорииДолжностей.ПустаяСсылка) КАК РазрядКатегория,
	ЗНАЧЕНИЕ(Справочник.ГрафикиРаботыСотрудников.ПустаяСсылка) КАК ГрафикРаботыСотрудников,
	ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка) КАК СтатьяФинансирования,
	0 КАК КоличествоСтавок,
	0 КАК ФОТ,
	0 КАК ФОТМин,
	0 КАК ФОТМакс,
	0 КАК ФОТПозиции,
	0 КАК ФОТПозицииМин,
	0 КАК ФОТПозицииМакс,
	0 КАК ОкладТариф,
	0 КАК ОкладТарифМин,
	0 КАК ОкладТарифМакс,
	0 КАК ЗанятаПостоянно,
	0 КАК ЗанятаВременно,
	0 КАК ПодработкаПостоянно,
	0 КАК ПодработкаВременно,
	0 КАК СовмещенаПостоянно,
	0 КАК СовмещенаВременно,
	0 КАК Забронирована,
	0 КАК ВременноОсвобождена
ПОМЕСТИТЬ Представления_ШтатноеРасписание
ГДЕ
	"ТолькоРазрешенные" = ИСТИНА
	И "ДатаАктуальности" = &ДатаАктуальности
	И "ВключатьНачисления" = ЛОЖЬ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДанныеОстатковПозиций.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ДанныеОстатковПозиций.КоличествоСтавок КАК КоличествоСтавок,
	ДанныеОстатковПозиций.КоличествоСтавок - ДанныеОстатковПозиций.ЗанятаПостоянно - ДанныеОстатковПозиций.ЗанятаВременно - ДанныеОстатковПозиций.ПодработкаПостоянно - ДанныеОстатковПозиций.ПодработкаВременно - ДанныеОстатковПозиций.СовмещенаПостоянно - ДанныеОстатковПозиций.СовмещенаВременно - ДанныеОстатковПозиций.Забронирована КАК СвободноСтавок,
	ДанныеОстатковПозиций.ЗанятаПостоянно КАК ЗанятаПостоянно,
	ДанныеОстатковПозиций.ЗанятаВременно КАК ЗанятаВременно,
	ДанныеОстатковПозиций.ПодработкаПостоянно КАК ПодработкаПостоянно,
	ДанныеОстатковПозиций.ПодработкаВременно КАК ПодработкаВременно,
	ДанныеОстатковПозиций.СовмещенаПостоянно КАК СовмещенаПостоянно,
	ДанныеОстатковПозиций.СовмещенаВременно КАК СовмещенаВременно,
	ДанныеОстатковПозиций.Забронирована КАК Забронирована,
	ДанныеОстатковПозиций.ВременноОсвобождена КАК СвободнаВременно,
	ДанныеОстатковПозиций.ФОТ КАК ФОТ,
	ДанныеОстатковПозиций.ФОТМин КАК ФОТМин,
	ДанныеОстатковПозиций.ФОТМакс КАК ФОТМакс,
	ДанныеОстатковПозиций.ФОТПозиции КАК ФОТПоПозиции,
	ДанныеОстатковПозиций.ФОТПозицииМин КАК ФОТПоПозицииМин,
	ДанныеОстатковПозиций.ФОТПозицииМакс КАК ФОТПоПозицииМакс,
	ДанныеОстатковПозиций.ОкладТариф КАК ОкладТариф,
	ДанныеОстатковПозиций.ОкладТарифМин КАК ОкладТарифМин,
	ДанныеОстатковПозиций.ОкладТарифМакс КАК ОкладТарифМакс
ИЗ
	Представления_ШтатноеРасписание КАК ДанныеОстатковПозиций

Показать


как его возможно использовать в своей обработки
пробывал вот так , результат пустой
Запрос = новый запрос ;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц ;
Запрос.УстановитьПараметр("ДатаАктуальности", ДатаЗапр);
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 0
	|	ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
	|	ЗНАЧЕНИЕ(Справочник.ШтатноеРасписание.ПустаяСсылка) КАК ПозицияШтатногоРасписания,
	|	ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
	|	ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
	|	ЗНАЧЕНИЕ(Справочник.РазрядыКатегорииДолжностей.ПустаяСсылка) КАК РазрядКатегория,
	|	ЗНАЧЕНИЕ(Справочник.ГрафикиРаботыСотрудников.ПустаяСсылка) КАК ГрафикРаботыСотрудников,
	|	ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка) КАК СтатьяФинансирования,
	|	0 КАК КоличествоСтавок,
	|	0 КАК ФОТ,
	|	0 КАК ФОТМин,
	|	0 КАК ФОТМакс,
	|	0 КАК ФОТПозиции,
	|	0 КАК ФОТПозицииМин,
	|	0 КАК ФОТПозицииМакс,
	|	0 КАК ОкладТариф,
	|	0 КАК ОкладТарифМин,
	|	0 КАК ОкладТарифМакс,
	|	0 КАК ЗанятаПостоянно,
	|	0 КАК ЗанятаВременно,
	|	0 КАК ПодработкаПостоянно,
	|	0 КАК ПодработкаВременно,
	|	0 КАК СовмещенаПостоянно,
	|	0 КАК СовмещенаВременно,
	|	0 КАК Забронирована,
	|	0 КАК ВременноОсвобождена
	|ПОМЕСТИТЬ Представления_ШтатноеРасписание
	|ГДЕ
	|	""ТолькоРазрешенные"" = ИСТИНА
	|	И ""ДатаАктуальности"" = &ДатаАктуальности
	|	И ""ВключатьНачисления"" = ЛОЖЬ
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ДанныеОстатковПозиций.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	|	ДанныеОстатковПозиций.КоличествоСтавок КАК КоличествоСтавок,
	|	ДанныеОстатковПозиций.КоличествоСтавок - ДанныеОстатковПозиций.ЗанятаПостоянно - ДанныеОстатковПозиций.ЗанятаВременно - ДанныеОстатковПозиций.ПодработкаПостоянно - ДанныеОстатковПозиций.ПодработкаВременно - ДанныеОстатковПозиций.СовмещенаПостоянно - ДанныеОстатковПозиций.СовмещенаВременно - ДанныеОстатковПозиций.Забронирована КАК СвободноСтавок,
	|	ДанныеОстатковПозиций.ЗанятаПостоянно КАК ЗанятаПостоянно,
	|	ДанныеОстатковПозиций.ЗанятаВременно КАК ЗанятаВременно,
	|	ДанныеОстатковПозиций.ПодработкаПостоянно КАК ПодработкаПостоянно,
	|	ДанныеОстатковПозиций.ПодработкаВременно КАК ПодработкаВременно,
	|	ДанныеОстатковПозиций.СовмещенаПостоянно КАК СовмещенаПостоянно,
	|	ДанныеОстатковПозиций.СовмещенаВременно КАК СовмещенаВременно,
	|	ДанныеОстатковПозиций.Забронирована КАК Забронирована,
	|	ДанныеОстатковПозиций.ВременноОсвобождена КАК СвободнаВременно,
	|	ДанныеОстатковПозиций.ФОТ КАК ФОТ,
	|	ДанныеОстатковПозиций.ФОТМин КАК ФОТМин,
	|	ДанныеОстатковПозиций.ФОТМакс КАК ФОТМакс,
	|	ДанныеОстатковПозиций.ФОТПозиции КАК ФОТПоПозиции,
	|	ДанныеОстатковПозиций.ФОТПозицииМин КАК ФОТПоПозицииМин,
	|	ДанныеОстатковПозиций.ФОТПозицииМакс КАК ФОТПоПозицииМакс,
	|	ДанныеОстатковПозиций.ОкладТариф КАК ОкладТариф,
	|	ДанныеОстатковПозиций.ОкладТарифМин КАК ОкладТарифМин,
	|	ДанныеОстатковПозиций.ОкладТарифМакс КАК ОкладТарифМакс
	|ИЗ
	|	Представления_ШтатноеРасписание КАК ДанныеОстатковПозиций" ;
	РезультатЗапроса = Запрос.Выполнить();

Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Jen1978 19 10.11.20 13:13 Сейчас в теме
3. Jen1978 19 10.11.20 13:18 Сейчас в теме
запрос явно из блока зарплаты. В данном запросе первый пакет определяет структуру, второй производит вычисления.
Но результатом работы первого пакета из за "Первые 0" будет пустая таблица. А второй пакет выбирает результаты первой таблицы
4. Jen1978 19 10.11.20 13:20 Сейчас в теме
когда Вы уберете "первые 0" в первом пакете образуется одна строчка.
во втором пакете произойдет выборка этой строчки . Но результат предсказуем. Все суммовые и количественные показатели будут равны 0 а ссылочные поля будут пустыми
5. oleg-x 27 10.11.20 13:35 Сейчас в теме
Этот запрос, только часть всего. Судя повсему, он формируется динамически.
| ""ТолькоРазрешенные"" = ИСТИНА
| И ""ДатаАктуальности"" = &ДатаАктуальности
| И ""ВключатьНачисления"" = ЛОЖЬ
Вот эти значения где заменяются в коде. Что там еще делается с запросом фиг его знает.
6. leosoft 165 10.11.20 13:59 Сейчас в теме
7. Jen1978 19 10.11.20 14:00 Сейчас в теме
в модулях зарплаты очень любят собирать тексты запросов непосредственно в коде. Текст запроса меняется в зависимости от условий
8. oleg-x 27 10.11.20 14:01 Сейчас в теме
(7) Потому что запросы сложные и написать универсальный запрос можно конечно, но это будет монстр, да и не оптимальный для БД. Поэтому и собирают динамически.
9. Jen1978 19 10.11.20 14:03 Сейчас в теме
вопрос стоял, как использовать запрос чтобы результат был не пустой.
:) ответ вам дали :)
10. bmk74 234 10.11.20 14:21 Сейчас в теме
|    ""ТолькоРазрешенные"" = ИСТИНА
    |    И ""ДатаАктуальности"" = &ДатаАктуальности
    |    И ""ВключатьНачисления"" = ЛОЖЬ

Я извиняюсь а вот это что ;
На скд это параметрами обычно заменяется..а в запросе у вас как ??
Да и ничего вы из этого запроса не получите кроме пустых ссылок...
11. oleg-x 27 10.11.20 14:23 Сейчас в теме
(10) СКД это также меняется в процедуре ПриКомпоновкеРезультата на конкретное условие.
13. bmk74 234 10.11.20 16:11 Сейчас в теме
(11) "ПриКомпоновкеРезультата" Там скорее всего сам запрос меняется, судя по вышеприведенному тексту, он используется просто в качестве шаблона, для выборки полей..
14. oleg-x 27 10.11.20 16:18 Сейчас в теме
(13) в (12) дали ссылку на интересную статью. С ЗУПом не имел дел, но судя по статье, там другой принцип построения запросов. Не самому надо писать, а изучать БСП и пользоваться механизмами БСП, так как постоянно что то меняется и достаточно сложная структура хранения данных, что уже не специалисту по конфигурации ЗУП будет проблематично разобраться.
Поэтому проще разобраться в БСП и использовать программный интерфейс.
15. ab_initio 95 15.11.20 19:14 Сейчас в теме
Зарплату на другой планете пишут, родной
(с) Би, пацак, планета Плюк.

По этой причине не стоит пытаться брать текст запроса из СКД зарплатного отчета.
Миллиарды световых лет, проведенные в далёких кадровых галактиках, дали опытное наблюдение:
-- запрос Зарплатно-кадровый проще свой написать всегда, чем инопланетной технологии фрагменты юзать какие-то -- .

Отчет, очевидно, называется "Состояние штатного расписания". У него есть 4 штатные типовые настройки:
1. Анализ штатного расписания.
2. Заполненность штатного расписания.
3. Соблюдение штатного расписания.
4. Штатная расстановка.

Вам в Вашей обработке какие поля из этого отчета нужны? Вы какую из 4 настроек ввиду имели, создавая ветку?
SlavaKron; +1 Ответить
16. 24rus 125 16.11.20 04:47 Сейчас в теме
(15)
2 раз "ку"

Когда пишешь расширенный функционал к ЗУПу, писать "свой" запрос ,черевата тем, что через пол-года разработчики поменяют полностью структуру справочника, документа и т.д. в данном случае в "Штатное расписание" убрали из регистров и перенесли в справочник, соответственно обработка написанная пол-года назад, перестала работать, а нужно как всегда, вчера.

Я по мере возможности использую в своих разработках "универсальные функции - представления", но иногда нужны документы, отчеты и т.д. с нуля (что не предусмотрено в ЗУПе) это все выноситься в расширение и связать далее стандартные данные + свои данные, через представление иногда не возможно.
17. ab_initio 95 16.11.20 05:29 Сейчас в теме
(16)
в данном случае в "Штатное расписание" убрали из регистров и перенесли в справочник

Если я не ошибаюсь, это случилось в июне 2016 года, и с тех пор не менялось.
20. 24rus 125 16.11.20 10:26 Сейчас в теме
(17)
В ЗУП государственного учреждения, редакция 3.1.10 был пересмотрен механизм учета занятых ставок по штатному расписанию. По крайнее мере, год назад в сентября 2019 данный отчет работал и там был регистр "ЗанятыеПозицииШтатногоРасписанияОстатки", отчетом не пользовались год ...
21. ab_initio 95 16.11.20 10:58 Сейчас в теме
(20) Так речь идет о ЗГУ ? Не о ЗУП ?
19. SlavaKron 16.11.20 10:21 Сейчас в теме
(16) По моим наблюдениям, программный интерфейс в ЗУПе меняется чаще, чем структура данных. Это значит, что вы скорее поймаете ошибку, используя механизм представлений, чем если напишите свой запрос.
ab_initio; +1 Ответить
18. Aftee 16.11.20 09:59 Сейчас в теме
Подобные "запросы-пустышки" необходимо дополнять. Например, для запроса можно использовать
ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Запрос.Текст,)

Для работы с отчетами используются другие процедуры. Например
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(Параметр);

Параметр - отчет.

Для передачи СКД в качестве параметра есть другие процедуры(если не ошибаюсь).
Не всегда запрос из СКД отработает в "обычном" запросе. Ошибки могут возникнуть с установкой параметров, которые дополнительно нужно будет установить.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот