Для определения номера недели в конфигурациях 1С обычно используется стандартная функция НомерНеделиГода().
Судя по всему, 1С считает по американской системе:
"По европейской норме (DIN 1355 / ISO 8601) первой неделей года считается неделя, содержащая 4 января данного года (http://vsegost.com/Catalog/62/6263.shtml). А в США первой неделей считается любая неделя, содержащая первое января, независимо от числа дней".
Чтобы 1С возвращала номер недели, совпадающий с "человеческими" календарями и ежедневниками, предлагается использовать следующую функцию:
"По европейской норме (DIN 1355 / ISO 8601) первой неделей года считается неделя, содержащая 4 января данного года (http://vsegost.com/Catalog/62/6263.shtml). А в США первой неделей считается любая неделя, содержащая первое января, независимо от числа дней".
Чтобы 1С возвращала номер недели, совпадающий с "человеческими" календарями и ежедневниками, предлагается использовать следующую функцию:
Функция глНомерНеделиГода(_дата) Экспорт
ЧетвертоеЯнваря = НачГода(_дата) + 3;
НачалоПервойНедели = НачНедели(ЧетвертоеЯнваря);
Если _дата < НачалоПервойНедели Тогда
// дата принадлежит последней неделе прошлого года.
Возврат глНомерНеделиГода(Дата(ДатаГод(_дата)-1, 12, 31));
Иначе
// получаем разницу дат в неделях.
КоличествоНедель = Цел((НачНедели(_дата) - НачалоПервойНедели)/7);
Возврат 1 + КоличествоНедель;
КонецЕсли;
КонецФункции // глНомерНеделиГода()
Обсуждение здесь: http://forum.infostart.ru/forum26/topic61578/
ГОСТ здесь: http://vsegost.com/Catalog/62/6263.shtml
Комментариев нет:
Отправить комментарий