Портал компании
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Автоматизация Бизнеса

+7 (900) 671 8000      Cвязаться через Telegram Telegram      связаться через Вконтакте VK      new@1module.ru      связаться через MAX MAX

Сервисный центр 1С

Автоматизация сервисного центра

Программа для сервисных центров и ЦТО
Подробнее

Программист 1С

Доработки для 1С

Любые доработки систем 1С всего за 3100 руб./час, Возможно уже есть готовые. Полный каталог разработок

Разработки для 1С
Учет по серийным номерам 1С

Учет товаров по серийным номерам

Модуль, позволяющий вести учет по серийным номерам и выводить на печать гарантийные талоны. Подробнее

Автосервис 1С

Дополнение для автосервиса

Автоматизация СТО, шиномонтажной мастерской или мойки. Ознакомиться

Рассылка SMS 1С

Рассылка СМС

Уведомление клиентов или сотрудников с помощью СМС сообщений из 1С. Перейти

Модули для 1С

Модули, дополнения и отчеты для 1С

Большой список готовых решений для Вашей компании. Поддержка и сопровождение. Полный каталог разработок

 

Быстрый переход





Меню раздела:

Быстрый поиск

 

Информация



 

[CODE] Прибавить рабочие часы к дате с использованием производственного календаря и графика работы



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


Количество показов: 1360
Дата изменения: 20.12.2023 06:22:57

Возврат к списку

(Голосов: 2, Рейтинг: 2.85)

Андрей, 26.11.2024 10:13:33
Штука классная но под ерп не взлетело
Константы.пмГрафикРаботы.Получить(); Этого там нет но нашел откуда взять
Елена, 11.01.2024 18:22:21
это отличная штука! у нас плавающие графики и Excel со сменами монтажников - тяжело сводить было к датам окончания объекта

спасибо от всей нашей компании!
Ваше имя:
Защита от автоматических сообщений:
Защита от автоматических сообщений Символы на картинке:


Модули   Статьи   Отзывы   Кабинет   Поддержка  
@ !pride, 1module. Все права защищены. 2003 - 2026