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

18.12.23

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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



 

 

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

См. также

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

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

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

10000 руб.

02.09.2020    125059    683    389    

732

Расширяем возможности дополнительных обработок и настраиваем их отладку

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

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

07.02.2024    2614    YA_418728146    11    

43

Запрос 1С copilot

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

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

5 стартмани

15.01.2024    6652    31    mkalimulin    27    

52

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

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

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

28.12.2023    4985    mrXoxot    11    

100

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

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

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

06.12.2023    5631    user1923546    26    

46

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

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

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

08.11.2023    7716    ids79    25    

75

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

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

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

11.10.2023    16609    skovpin_sa    14    

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

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