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

18.12.23

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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



 

 

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

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159513    874    399    

862

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

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

18.10.2024    9893    sergey279    18    

64

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

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

11.10.2024    5184    XilDen    36    

80

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

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

03.06.2024    4912    Serg2000mr    32    

108

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    8693    implecs_team    6    

47

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

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    4047    YA_418728146    11    

53

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

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

15.01.2024    10129    142    mkalimulin    32    

60

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

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    6430    mrXoxot    11    

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

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