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

18.12.23

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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



 

 

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

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    121608    670    389    

711

Запрос 1С copilot

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

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

5 стартмани

15.01.2024    6279    30    mkalimulin    25    

49

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

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

28.12.2023    4823    mrXoxot    11    

99

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

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

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

06.12.2023    5386    user1923546    26    

43

Ключи аналитик учета в ЕРП, КА, УТ

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

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    7029    ids79    25    

74

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

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

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

11.10.2023    16166    skovpin_sa    14    

98

Структура запроса

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

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

1 стартмани

21.06.2023    5154    57    obmailok    35    

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

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