|
Календарь | ☑ | ||
---|---|---|---|---|
0
TwoWorld
01.09.11
✎
17:52
|
Создал справочник "Календарь",2 реквизита ДатаНач и ДатаКон, написал функцию по поиску рабочего дня, но она не работает, в чем проблема? (он почему то по реквизиту всегда выдает пустую ссылку)
Функция ПроверкаДатыВыходныхИПраздников(ДатаПроверки) ПромежДата =ДатаПроверки; ФлПервый = 0; Пока ЗначениеЗаполнено(ПромежДата) Цикл СтрокаНаинования =Справочники.Календарь; Строка = СтрокаНаинования.НайтиПоРеквизиту("ДатаНач",ПромежДата); Если Строка <> СтрокаНаинования.ПустаяСсылка() Тогда если ФлПервый = 0 Тогда ПромежДата = Дата(Строка.ДатаКон) + 24*60*60; ФлПервый = 1; Иначе Прервать; КонецЕсли; Иначе ПромежДата = Дата(ПромежДата) + 24*60*60; КонецЕсли; КонецЦикла; Возврат ПромежДата; КонецФункции |
|||
1
TwoWorld
01.09.11
✎
18:01
|
Вроде все правильно написано: только вот
Если Строка <> СтрокаНаинования.ПустаяСсылка() Тогда заменить на Если Строка = СтрокаНаинования.ПустаяСсылка() Тогда , но вс равно всегда пустаЯ ссылка выходит |
|||
2
Mort
01.09.11
✎
18:10
|
Используй запрос.
|
|||
3
Aleksei_Pro
01.09.11
✎
21:48
|
Не думаю что этот код сработает, хотя самому интересно ход решения твой...довести над до ума только
|
|||
4
Aleksei_Pro
01.09.11
✎
21:56
|
(2) какой запрос, зачем? только вот сам не пойму, почему (0) у автора не работает....
|
|||
5
Axel2009
02.09.11
✎
09:08
|
псц код, но думаю что в датанач не дата находится.
|
|||
6
Ненавижу 1С
гуру
02.09.11
✎
09:10
|
а регистр сведений не лучше ли было юзать?
|
|||
7
catena
02.09.11
✎
09:12
|
А точно есть элемент с ДатаНач=ПромежДата?
И время совпадает? |
|||
8
Wobland
02.09.11
✎
09:12
|
Пока ЗначениеЗаполнено(ПромежДата) Цикл
в данном случае практически Пока Истина Цикл |
|||
9
TwoWorld
02.09.11
✎
13:32
|
А можно как то врея убрать из даты, но чтобы тип "Дата" остался?
|
|||
10
acsent
02.09.11
✎
13:34
|
СтрокаНаинования.
Это на каком языке? |
|||
11
Wobland
02.09.11
✎
13:38
|
(9) Формат() спасёт?
|
|||
12
TwoWorld
02.09.11
✎
13:38
|
Все спасибо, взлетела программа!
|
|||
13
TwoWorld
02.09.11
✎
14:08
|
Вот код: он немного не так работает:
ПромежДата =НачалоДня(ДатаПроверки); ФлПервый = 0; Пока ЗначениеЗаполнено(ПромежДата) Цикл Если ФлПервый СтрокаНаинования =Справочники.Календарь; Строка = СтрокаНаинования.НайтиПоРеквизиту("ДатаНач",ПромежДата); Если Строка = СтрокаНаинования.ПустаяСсылка() Тогда ПромежДата = НачалоДня(Дата(ПромежДата)) + 24*60*60; Иначе ПромежДата = НачалоДня(Дата(Строка.ДатаКон)) + 24*60*60; КонецЕсли; КонецЦикла; Возврат ПромежДата; Пример: ДатаНач Датакон 01,01,2011 02,01,2011 02,01,2011 03,01,2011 ДатаПроверки - 31,12,2011 и к этой дате нужно прибавить 1 рабочий день! Нужно чтобы получилось - 05,01,2011 Как исправить? |
|||
14
catena
02.09.11
✎
14:12
|
(13)Это по какой логике должно получиться 05/01? О_О
|
|||
15
TwoWorld
02.09.11
✎
14:15
|
04,01,11 ..
|
|||
16
catena
02.09.11
✎
14:16
|
(15)Ну, 04/01 по идее должно получиться...
|
|||
17
catena
02.09.11
✎
14:16
|
Только вот из цикла не выйдет...
Пока ЗначениеЗаполнено(ПромежДата) Цикл |
|||
18
TwoWorld
02.09.11
✎
14:17
|
(17) вот и именно, как мне выйти из цикла правильно и когда?
|
|||
19
catena
02.09.11
✎
14:21
|
От задачи зависит... Задача не ясна...
|
|||
20
TwoWorld
02.09.11
✎
14:22
|
прибавить к дате 1 рабочий день!
|
|||
21
catena
02.09.11
✎
14:22
|
Чисто в продолжение бреда:
ПромежДата =НачалоДня(ДатаПроверки); ФлПервый = 0; Пока ЗначениеЗаполнено(ПромежДата) Цикл СтрокаНаинования =Справочники.Календарь; Строка = СтрокаНаинования.НайтиПоРеквизиту("ДатаНач",ПромежДата); Если Строка = СтрокаНаинования.ПустаяСсылка() Тогда Если флПервый=1 Тогда Прервать; КонецЕсли; ПромежДата = НачалоДня(Дата(ПромежДата)) + 24*60*60; ФлПервый=ФлПервый+1; Иначе ПромежДата = НачалоДня(Дата(Строка.ДатаКон)) + 24*60*60; ФлПервый=0; КонецЕсли; КонецЦикла; Возврат ПромежДата; |
|||
22
TwoWorld
02.09.11
✎
14:50
|
В УТ 10,3 есть производственный календарь. Как можно на основании него проверить является ли некая дата "Выходным или праздником"?
|
|||
23
and2
02.09.11
✎
14:53
|
(22) ну там реквизит есть соответствующий.
полко надо еще "перенесенные праздничные и выходные" почитать |
|||
24
and2
02.09.11
✎
14:54
|
ВидДня
|
|||
25
TwoWorld
02.09.11
✎
14:57
|
ВидДня - это что?
|
|||
26
Axel2009
02.09.11
✎
15:05
|
ВидДня - там указывается что это за дата.
|
|||
27
TwoWorld
02.09.11
✎
15:21
|
(26) а как обратиться или функция какая то есть?
|
|||
28
catena
02.09.11
✎
15:27
|
(27)Учи запросы, полезная вещь.
|
|||
29
and2
02.09.11
✎
15:33
|
Запрос=новый запрос;
запрос.Текст="ВЫБРАТЬ | РегламентированныйПроизводственныйКалендарь.ВидДня, | ВЫБОР | КОГДА РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = ПеренесенныеРабочиеДни.РабочийДень | ТОГДА истина | ИНАЧЕ ложь | КОНЕЦ КАК Перенос |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПеренесенныеРабочиеДни КАК ПеренесенныеРабочиеДни | ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = ПеренесенныеРабочиеДни.РабочийДень | |ГДЕ | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря |"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |