|
Ошибка при движении по регистру расчета. | ☑ | ||
---|---|---|---|---|
0
Сержант ВДВ Онегин
15.03.15
✎
11:26
|
Хочу сделать движение по регистру расчета. В документе, когда начало отпуска и конец отпуска даты из текущего отпуска, тогда документ нормально проводится. Но если начало отпуска указываю 02.02.2015 по 03.03.2015 при проведении дают такую ошибку:
Запись не верна! Неверно задан период действия! (Регистр Расчета основные начисления строка номер 1). Хотя смотрю по точке лстанове, везде все нормально сажается и к концу цикла выходит такая ошибка. Кстати вот сам код: м = 0; н = Месяц(КонецОтпуска) - Месяц(НачалоОтпуска); Движения.ОсновныеНачисления.Записывать=Истина; Пока м<=н Цикл Движение = Движения.ОсновныеНачисления.Добавить(); Движение.БазовыйПериодКонец = КонецДня(КонецОтпуска + 86400*28*м); Движение.БазовыйПериодНачало = НачалоОтпуска+86400*28*м; Движение.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияБюджетныхОрганизаций.Невыход; Движение.ГрафикРаботы = Организация.ГрафикРаботы; Движение.ПериодДействияКонец = КонецДня(КонецОтпуска + 86400*28*м); Движение.ПериодДействияНачало = НачалоОтпуска+86400*28*м; Движение.ПериодРегистрации = Дата; Движение.Регистратор = ЭтотОбъект.Ссылка; Движение.Сотрудник = Сотрудник; Движение.Сторно = Ложь; м = м+1; КонецЦикла; |
|||
1
DES
15.03.15
✎
11:32
|
а если переход через НовыйГод ?
|
|||
2
Сержант ВДВ Онегин
15.03.15
✎
11:33
|
(1) в смысле?
|
|||
3
DES
15.03.15
✎
11:35
|
н = Месяц(КонецОтпуска) - Месяц(НачалоОтпуска);
н = 1 - 12; |
|||
4
Сержант ВДВ Онегин
15.03.15
✎
11:37
|
(3) Важное замечание. Спасибо.
А как лучше проверить? Ведь табличной части нет у нас. Разве ошибка в этом? |
|||
5
DES
15.03.15
✎
11:50
|
используй функцию разность дат
чтобы получить сколько лет , месяцев, и дней между датами. |
|||
6
DES
15.03.15
✎
11:52
|
потом бери цикл по месяцам
и формируй периоды в месяцах явно, а не секундами. |
|||
7
DES
15.03.15
✎
11:52
|
потому что в феврале может быть 29 дней иногда
|
|||
8
Сержант ВДВ Онегин
15.03.15
✎
11:58
|
(5) через запрос?
|
|||
9
DES
15.03.15
✎
12:02
|
можно и самому написать.
щас поищу свою |
|||
10
DES
15.03.15
✎
12:04
|
Процедура РазобратьРазностьДат(Дата1, Дата2, Лет=0, Месяцев=0, Дней=0) Экспорт
Лет=0; Месяцев=0; Дней=0; Если Дата1>Дата2 Тогда ВременнаяДата=Дата1; Если День(ВременнаяДата)<День(Дата2) Тогда Дней=(ВременнаяДата - ДобавитьМесяц(ВременнаяДата,-1))/86400; ВременнаяДата=ДобавитьМесяц(ВременнаяДата,-1); КонецЕсли; Если Месяц(ВременнаяДата)<Месяц(Дата2) Тогда ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-12); Месяцев = 12; КонецЕсли; Лет=Макс(Год(ВременнаяДата)-Год(Дата2),0); Месяцев=Макс(Месяцев+Месяц(ВременнаяДата)-Месяц(Дата2),0); Дней=Макс(Дней+День(ВременнаяДата)-День(Дата2),0); // скорректируем отображаемое значение, если "вмешалось" разное количество дней в месяцах Если Дата2<>(ДобавитьМесяц(Дата1,-Лет*12-Месяцев)-Дней*86400) Тогда Дней=Дней+(День(КонецМесяца(Дата2))-День(НачалоМесяца(Дата2)))-(День(КонецМесяца(ДобавитьМесяц(Дата1,-1))) - День(НачалоМесяца(ДобавитьМесяц(Дата1,-1)))); КонецЕсли; КонецЕсли; КонецПроцедуры // РазобратьРазностьДат |
|||
11
DES
15.03.15
✎
12:06
|
в смысле то что я юзаю, вроде бы нареканий нет
|
|||
12
Сержант ВДВ Онегин
15.03.15
✎
12:13
|
(11) спасибо большое. Сейчас буду разбираться, куда ее впихнуть и как подстроить.
|
|||
13
Сержант ВДВ Онегин
15.03.15
✎
12:35
|
(11) твою процедуру впихнул. Теперь как вс вой цикл данные вписать?
|
|||
14
DES
15.03.15
✎
12:59
|
можно так
РасчетныйМесяц = СтартовыйМесяц; Пока НЕ РасчетныйМесяц>КонечногоМесяца Цикл .........тут твой код. РасчетныйМесяц = ДобавитьМесяц(РасчетныйМесяц , 1); КонецЦикла |
|||
15
DES
15.03.15
✎
13:00
|
только приведи мясяцы к началумесяца
|
|||
16
DES
15.03.15
✎
13:02
|
главное ты знаешь сколько месяцев между датами и сколько циклов нужно выполнить
|
|||
17
Сержант ВДВ Онегин
15.03.15
✎
13:14
|
(15) я сделал по другому немного. Но все равно это ошибка выходит во время движения по регистру расчета
|
|||
18
Сержант ВДВ Онегин
15.03.15
✎
13:31
|
Не понимаю в чем прикол.
|
|||
19
Dен
15.03.15
✎
13:36
|
Дата начала и конца периода действия должна быть внутри одного месяца (периодичность регистра расчета). Если отпуск переходит на следующий месяц, то запись нужно разбивать на несколько - по одной на каждый месяц.
|
|||
20
Сержант ВДВ Онегин
15.03.15
✎
13:41
|
(19) Вот я также и делаю же нет?
Пока м<=Месяцев Цикл Движение = Движения.ОсновныеНачисления.Добавить(); Движение.БазовыйПериодКонец = ДобавитьМесяц(КонецДня(КонецОтпуска),м); Движение.БазовыйПериодНачало = ДобавитьМесяц(НачалоОтпуска, м); Движение.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияБюджетныхОрганизаций.Невыход; Движение.ГрафикРаботы = Организация.ГрафикРаботы; Движение.ПериодДействияКонец = ДобавитьМесяц(КонецМесяца(КонецОтпуска),м); Движение.ПериодДействияНачало = ДобавитьМесяц(НачалоОтпуска,м); Движение.ПериодРегистрации = Дата; Движение.Регистратор = ЭтотОбъект.Ссылка; Движение.Сотрудник = Сотрудник; Движение.Сторно = Ложь; м = м+1; КонецЦикла; |
|||
21
Сержант ВДВ Онегин
15.03.15
✎
13:52
|
По моему догнал где ошибка :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |