Готовые механизмы 1С: ЗУП, представления

18.12.23

Разработка - Механизмы типовых конфигураций

Здесь будет храниться архив запросов, которые могут помочь разработчику правильно строить отчеты и получать данные в 1С: ЗУП. Статью буду периодически дополнять.
 
 Создать временную таблицу с месяцами за определенный период
 
Кадровая информация сотрудника на дату
 
 Работающие сотрудники (все сотрудники без даты увольнения)
 
 Отклонения сотрудников за период (начало-конец периода) (отпуска, больничные и т.д.)
 
 Отклонения сотрудников по датам + количество дней и часов (условие вида времени указывается в запросе)
 
 Плановое рабочее время сотрудников (для получения нормы)

 

Функция РассчитатьНормуПоСотрудникам(СписокСотрудников)
	
	//можно использовать свой способ создания временной таблицы ВТСотрудники
	СписокСотрудников.Колонки.Добавить("ДатаНачала", Новый ОписаниеТипов("Дата"));
	СписокСотрудников.Колонки.Добавить("ДатаОкончания", Новый ОписаниеТипов("Дата"));
	СписокСотрудников.Колонки.Добавить("ДатаАктуальности", Новый ОписаниеТипов("Дата"));
	СписокСотрудников.Колонки.Добавить("Месяц", Новый ОписаниеТипов("Дата"));
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; 
	Для каждого стрСотр Из СписокСотрудников Цикл
		стрСотр.Месяц 				= Объект.МесяцНачисления;	
		стрСотр.ДатаНачала 			= НачалоМесяца(Объект.МесяцНачисления);	
		стрСотр.ДатаОкончания 		= КонецМесяца(Объект.МесяцНачисления);
		стрСотр.ДатаАктуальности 	= КонецМесяца(Объект.МесяцНачисления);
	КонецЦикла;
	
	СоздатьВТСотрудникиДляНормы(Запрос.МенеджерВременныхТаблиц, СписокСотрудников);
	
        //получим норму рабочего времени
        ПараметрыПолученияДанных = УчетРабочегоВремениРасширенный.ПараметрыДляСоздатьВТПлановоеВремяСотрудников();
	ПараметрыПолученияДанных.ПолучатьПлановоеВремяЗаПолныйМесяц = Истина;
	УчетРабочегоВремениРасширенный.СоздатьВТПлановоеВремя(Запрос.МенеджерВременныхТаблиц, Ложь, ПараметрыПолученияДанных);	

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

КонецФункции 

Процедура СоздатьВТСотрудникиДляНормы(МенеджерВременныхТаблиц, ТаблицаСотрудников)

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

 

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

 Добавляем вызов процедуры для команды "Подбор":

&НаКлиенте
Процедура Подбор(Команда)
	ВыбратьСотрудников(Истина);
КонецПроцедуры

Основной код:

&НаКлиенте
Процедура ВыбратьСотрудников(МножественныйВыбор = Ложь)
	
	ПараметрыФормы = Новый Структура;
	
	ПараметрыФормы.Вставить("РежимВыбора", Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор", МножественныйВыбор);
	//ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", НЕ МножественныйВыбор);
	ПараметрыФормы.Вставить("ОтборПоПериодуКадровыхДанныхИспользуется", Истина);
	
	ПараметрыФормы.Вставить("Отбор", Новый Структура);
	ПараметрыФормы.Отбор.Вставить("НачалоПериодаПримененияОтбора", Объект.Дата);
	ПараметрыФормы.Отбор.Вставить("ОкончаниеПериодаПримененияОтбора", КонецДня(Объект.Дата));
	
	Если ЗначениеЗаполнено(Объект.Организация) Тогда
		ПараметрыФормы.Отбор.Вставить("ТекущаяОрганизация", Объект.Организация);
	КонецЕсли; 
		
	Если ЗначениеЗаполнено(Объект.Подразделение) Тогда
		ПараметрыФормы.Отбор.Вставить("ТекущееПодразделение", Объект.Подразделение);
	КонецЕсли;  
	
	АдресСпискаПодобранныхСотрудников = ПолучитьАдресСпискаПодобранныхСотрудников();
	
	Если НЕ ПустаяСтрока(АдресСпискаПодобранныхСотрудников) Тогда
		ПараметрыФормы.Вставить("АдресСпискаПодобранныхСотрудников", АдресСпискаПодобранныхСотрудников);
	КонецЕсли;	
		
	ОписаниеОповещения = Новый ОписаниеОповещения("СотрудникиВыбор",ЭтотОбъект);
	ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора", ПараметрыФормы,ЭтотОбъект,,,,ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры 

&НаКлиенте
Процедура СотрудникиВыбор(СотрудникиПодбора, ДопПараметры) Экспорт
	Если НЕ СотрудникиПодбора = Неопределено Тогда 		
	    //....обработка выбранных сотрудников в зависимости от задачи	
	КонецЕсли;		
КонецПроцедуры 

&НаСервере
Функция ПолучитьАдресСпискаПодобранныхСотрудников()
	
    //выгружаем в массив список сотрудников, которые уже подобраны ранее, чтобы их исключить в подборе
	ВыбранныеСотрудники = Объект.Начисления.Выгрузить(,"Сотрудник").ВыгрузитьКолонку("Сотрудник");
	
    //если сотрудники в нескольких таблицах, то массивы можно объединить в один
	//ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Массив1, Массив2, Массив3...);	
	
	Возврат ПоместитьВоВременноеХранилище(ВыбранныеСотрудники, УникальныйИдентификатор);
	
КонецФункции



 

 

INFOSTART TOOLKIT

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


Вступайте в нашу телеграмм-группу Инфостарт

зуп представления работающие сотрудники кадровая история запросы отклонения сотрудников

См. также

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

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

15500 руб.

02.09.2020    201398    1111    410    

1017

Механизмы типовых конфигураций Программист 1С v8.3 Бесплатно (free)

Каждый, кто работал с кадровыми отчетами в ЗУП, ERP или УХ, сталкивался с механизмом представлений – странным кодом запроса, где поля отображаются пустыми ссылками, а в названии временной таблицы есть слово «Представление». В статье разберем, что такое представления и как ими пользоваться. Больше не нужно ломать голову над тем, откуда и как правильно получать данные. Механизм представлений сделает это за вас.

08.07.2025    3062    user2012581    44    

46

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

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    3854    76    zup_dev    20    

62

Механизмы типовых конфигураций Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    16706    Begemoth80    32    

88

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    15528    sergey279    18    

69

Запросы Программист 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    10113    XilDen    38    

102

Механизмы типовых конфигураций Программист 1С v8.3 1C:ERP Бесплатно (free)

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

03.06.2024    10146    SergDobrodelov    38    

123
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 2034 04.11.21 13:14 Сейчас в теме
Понимаю, что тема обширная, но даже для начала маловато.
user847517; Plotks2017; ubnkfl; NorraSaltolinen; maksa2005; Margo462; +6 Ответить
2. Margo462 520 04.11.21 14:33 Сейчас в теме
(1) статью буду дополнять периодически, об этом написала) можете подкинуть идею о чём можно написать
17. user847517 3 10.11.21 14:17 Сейчас в теме
(2) У меня в консоли запросов порядка 50 отлаженных запросов по ЗУП. Теперь вся работа в основной складывается в компоновке этих запросов в СКД для различных отчетов и поиске ошибок ведения учета. В основном это:
- список сотрудников на дату (основные, совместили, договорники);
- стажи;
- образование;
- воинский учет;
- состав семьи;
- социально-демографические сведения;
- штатное расписание и штатная расстановка;
- отпуска (виды, дни, остатки);
- принятые и уволенные;
- движение сотрудников по подразделениям за период;
- баланс рабочего времени;
- фонды зарплаты;
- начисления и удержания сотрудников;
- налоговые вычеты;
- алименты;
- расчеты по сотруднику и т.д.
Это только навскидку.
3. ixijixi 2034 04.11.21 16:45 Сейчас в теме
(2) Хотелось бы почитать о расчете отработанного и норм времени.
ivnik; Margo462; +2 Ответить
4. t278 58 08.11.21 03:41 Сейчас в теме
7. Margo462 520 08.11.21 10:09 Сейчас в теме
(4) Спасибо, хочется чтобы было коротко и понятно )
5. rpgshnik 3883 08.11.21 05:44 Сейчас в теме
Коллеги, добрый день. Подскажите можно ли так же готовым запросом получить по какому-то Подразделению, сегодня работающих сотрудников (именно работающих по графику, т.к. у них может выходной быть из-за вахты, но статус Работа). Крайне редко пересекаюсь с ЗУП.
9. ixijixi 2034 08.11.21 12:29 Сейчас в теме
(5) Пример №2 в публикации (Работающие сотрудники), только НачалоПериода, ОкончаниеПериода указать нужной датой. Плюс указать параметр ВключаяУволенныхНаНачалоПериода = Ложь.
10. Margo462 520 08.11.21 12:35 Сейчас в теме
(9) Параметр ВключаяУволенныхНаНачалоПериода = Ложь там по умолчанию устанавливается, а если там нужно отобрать работающих без отклонений (отпусков, больничных и т.д.), то там другой запрос надо делать через ВТДанныеУчетаВремениИСостоянийСотрудников, можно например взять всех работающих сотрудников подразделения (пример есть в статье), получить таблицу с отклонениями за период (пример есть), и исключить сотрудников с отклонениями из таблицы работающих сотрудников
11. ixijixi 2034 08.11.21 14:42 Сейчас в теме
(10) В вопросе стоит именно работающих по графику, так что отклонения не нужно анализировать.
12. Margo462 520 08.11.21 14:51 Сейчас в теме
(11) слово "Статус" смущает, можно это понять как состояние сотрудника, в список ведь попадут и те, кто в отпуске по уходу за ребенком, смотря что им нужно, в вопросе недостаточно условий
6. quazare 3948 08.11.21 06:18 Сейчас в теме
Одна из отличительных особенность конфигурации ЗУП как раз и заключается, что в ней содержаться уже готовенькие функции для получения разных структур данных по персоналу и не только.

одна из моих статей на эту тему https://infostart.ru/1c/articles/1266796/
13. axelerleo 324 08.11.21 15:12 Сейчас в теме
За проделанную работу однозначный плюс в копилку!
Коллеги, подскажите, а вообще эти штуки (механизм представлений) где-то как-то самой 1С документируются? На ИТС там, или еще где? Или вот так, кто что сам нарыл, изучать?
14. Margo462 520 08.11.21 15:55 Сейчас в теме
(13) спасибо, есть курс по конфигурированию ЗУП, но там больше про подготовку к спецу, про механизм представлений немного инфы, но однозначно курс поможет разобраться что это такое
15. axelerleo 324 08.11.21 16:12 Сейчас в теме
(14) Досадно :(
В моем понимании, если пилить API, то надо пилить и документацию к нему, а не "только для своих".
Вот например, есть же документация на БСП, БИД, и прочие стандартные библиотеки. А на такой огромный блок как "программный интерфейс" и механизм представлений - нету :(
user1479535; gucci76; +2 Ответить
16. rpgshnik 3883 10.11.21 04:45 Сейчас в теме
18. ukunad 5 04.05.22 10:35 Сейчас в теме
Добрый день!
"Получить вид времени..." не разворачивается по "+"
19. Margo462 520 04.05.22 12:00 Сейчас в теме
(18) Добрый день, глюк какой-то, надо заново добавлять, позже добавлю, спасибо за инфу
Оставьте свое сообщение