Как посчитать разницу между двумя датами? Код уникален и сработает везде.
Код 1C v 8.3 Функция ПолучитьКоличествоДней()
Счетчик = 1 ;
НачалоПериода = Объект. НачалоПериода;
Пока НачалоПериода < Объект. КонецПериода Цикл
Счетчик = Счетчик + 1 ;
НачалоПериода = НачалоПериода + 86400 ;
КонецЦикла ;
Возврат Счетчик
КонецФункции
Категория:
Работа с Датами (Временем) Получение количества календарных дней по производственному календарю Код 1C v 8.х Функция КоличествоДнейПоКалендарнымДням(ДатаНачала, ДатаОкончания, ВключатьПраздники = Ложь)
Если НЕ ВключатьПраздники Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СУММА(РегламентированныйПроизводственныйКалендарь.КалендарныеДни) КАК КоличествоДней
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &ДатаНачала
| И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &ДатаОкончания" ) ;
Запрос. УстановитьПараметр( "ДатаНачала" , ДатаНачала) ;
Запрос. УстановитьПараметр( "ДатаОкончания" , ДатаОкончания) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
КоличествоДней = Выборка. КоличествоДней;
Иначе
ОбщегоНазначенияЗК. СообщитьОбОшибке( "Проверьте заполнение производственного календаря!" ) ;
КоличествоДней = Неопределено ;
КонецЕсли ;
Иначе
КоличествоДней = ( НачалоДня( ДатаОкончания) - НачалоДня( ДатаНачала) ) / 86400 + 1 ;
КонецЕсли ;
Возврат КоличествоДней;
КонецФункции
Категория:
1С Зарплата и Управление Персоналом 2.5 Получить количество рабочих дней сотрудника В данной статье описаны функции которые вы можете использовать в ЗУП для получения количества рабочих дней по графику работы сотрудника или по производственному календарю
Код 1C v 8.х
Функция КоличествоРабочихДнейПоГрафикуРаботы(ДатаН, ДатаК, ГрафикРаботы)
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
| ГрафикиРаботыПоВидамВремени.ВидУчетаВремени,
| СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК ОсновноеЗначение,
| СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение) КАК ДополнительноеЗначение,
| СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначениеНорма) КАК ОсновноеЗначениеНорма,
| СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначениеНорма) КАК ДополнительноеЗначениеНорма
|ИЗ
| РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
|ГДЕ
| ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &ГрафикРаботы
| И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &ДатаН И &ДатаК
| И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ВидУчетаВремени
|
|СГРУППИРОВАТЬ ПО
| ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
| ГрафикиРаботыПоВидамВремени.ВидУчетаВремени" ;
Запрос. УстановитьПараметр( "ГрафикРаботы" , ГрафикРаботы) ;
Запрос. УстановитьПараметр( "ДатаК" , ДатаК) ;
Запрос. УстановитьПараметр( "ДатаН" , ДатаН) ;
Запрос. УстановитьПараметр( "ВидУчетаВремени" , Перечисления. ВидыУчетаВремени. ПоДням) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
ОсновноеЗначение = Выборка. ОсновноеЗначение;
Иначе
ОбщегоНазначенияЗК. СообщитьОбОшибке( "Проверьте заполнение графика!" ) ;
ОсновноеЗначение = 0 ;
КонецЕсли ;
Возврат ОсновноеЗначение;
КонецФункции
Функция КоличествоРабочихДнейПоПроизвКаленд(ДатаН, ДатаК)
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| СУММА(РегламентированныйПроизводственныйКалендарь.КалендарныеДни) КАК КоличествоДней,
| СУММА(РегламентированныйПроизводственныйКалендарь.Пятидневка) КАК Пятидневка,
| СУММА(РегламентированныйПроизводственныйКалендарь.Шестидневка) КАК Шестидневка
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &ДатаН
| И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &ДатаК" ;
Запрос. УстановитьПараметр( "ДатаК" , ДатаК) ;
Запрос. УстановитьПараметр( "ДатаН" , ДатаН) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
ОсновноеЗначение = Выборка. Пятидневка;
Иначе
ОбщегоНазначенияЗК. СообщитьОбОшибке( "Проверьте заполнение графика!" ) ;
ОсновноеЗначение = 0 ;
КонецЕсли ;
Возврат ОсновноеЗначение;
КонецФункции
Категория:
1С Зарплата и Управление Персоналом 2.5 Как узнать количество дней в месяце? Код 1C v 8.х Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ДЕНЬ(КОНЕЦПЕРИОДА(&Дата, МЕСЯЦ)) КАК ЧислоДней" ;
Запрос. УстановитьПараметр( "Дата" , Дата) ;
Результат = Запрос. Выполнить( ) ;
ВыборкаДетальныеЗаписи = Результат. Выбрать( ) ;
Пока ВыборкаДетальныеЗаписи. Следующий( ) Цикл
КонецЦикла ;
Код 1C v 8.х КоличествоДней = Сред( КонецМесяца( ТекущаяДата( ) ) , 1 , 2 ) ;
Категория:
Работа с Датами (Временем) Как вычислить количество дней между датами Код 1C v 8.х Запрос= Новый Запрос( "ВЫБРАТЬ
| РАЗНОСТЬДАТ(&НачалоПериода,&КонецПериода,МЕСЯЦ) КАК Месяцев,
| РАЗНОСТЬДАТ(&НачалоПериода,&КонецПериода,ДЕНЬ) КАК Дней" ) ;
КоличествоДней = ( ДатаКонец - ДатаНачала) / 60 / 60 / 24 ;
Код 1C v 7.x КоличествоДней = ДатаКонец- ДатаНачала
Категория:
Работа с Датами (Временем)