Имя: Пароль:
1C
1С v8
Как получить количество рабочих дней по графику?
,
0 iceborn
 
12.02.13
16:40
Есть график, как проще всего по нему получить количество рабочих дней?
1 ale-sarin
 
12.02.13
16:42
из регистра сведений соответствующего. это если ЗУП, УПП, КА.
2 smitru
 
12.02.13
16:46
(0) конечно же запросом :-)
3 iceborn
 
12.02.13
17:00
Есть регистр РегламентированныйПроизводственныйКалендарь с него я легко могу получить кол-во рабочих дней, а мне надо получить количество дней именно по определенному графику так как по некоторые графика рабочий день суббота.
4 ale-sarin
 
12.02.13
17:01
(3) А кто сказал по РеглКалендарь? Я про другое. Ищите лучше.
5 smitru
 
12.02.13
17:02
(3) запросом и это вытаскивается. Там есть "разблюдавка" и для пятидневки и для шестидневки, а можно привязать сменный график и это тоже посчитать - я как-то пару лет назад этой фигнёй занимался :-)
6 iceborn
 
12.02.13
17:12
Есть регистр ещё Графики работы по видам времени. Там можно циклом пройти на тек. месяц и просчитать кол-во. А правильно ли так?)
7 smitru
 
12.02.13
17:13
Цикл зло.. Юзай запросы... Через регистр всё достаётся
8 ale-sarin
 
12.02.13
17:13
(6) Вот об этом регистре и речь. Только не циклом, а запросом.
9 iceborn
 
12.02.13
17:31
Функция ЧислоРабочихДней(ДатаНач, ДатаКон, ГрафикРаботы) Экспорт
   
   Запрос = Новый  Запрос;
   Запрос.УстановитьПараметр("ДатаНач",             ДатаНач);
   Запрос.УстановитьПараметр("ДатаКон",             ДатаКон);
   Запрос.УстановитьПараметр("ГрафикРаботы",             ГрафикРаботы);
   Запрос.УстановитьПараметр("Месяц",             ДатаНач);
   
   Запрос.Текст = "ВЫБРАТЬ
                  |    ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
                  |    ГрафикиРаботыПоВидамВремени.ВидУчетаВремени,
                  |    НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ) КАК Месяц,
                  |    СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК Дни
                  |ИЗ
                  |    РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
                  |ГДЕ
                  |    НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ) = &Месяц
                  |    И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)
                  |    И ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &ГрафикРаботы
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
                  |    ГрафикиРаботыПоВидамВремени.ВидУчетаВремени,
                  |    НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ)";
   Выборка = Запрос.Выполнить().Выбрать();
   
   Если Выборка.Следующий() Тогда
       Возврат Выборка.Дни;
   КонецЕсли;
   
   Возврат 0;
   
КонецФункции
10 iceborn
 
12.02.13
17:31
Во!
11 ale-sarin
 
12.02.13
17:44
(10) Сам написал? А где в запросе датанач и датакон? Или всегда за один и целый месяц понадобится?
12 iceborn
 
12.02.13
19:10
(11) Неа, нашел в типовой функцию обращение к этому регистру, я добавил отбор по месяцу и графику.