Имя: Пароль:
1C
1С v8
Отпуска 2012 года
,
0 IAleksa
 
11.11.11
12:58
Стоит ЗУП 2.5.41.3. Отпуска 2012 года (кадровые документы) не считает дату окончания отпуска по указанным дням - говорит заполнить производственный календарь. Календарь и графики все заполнены. Кадровики ругаются.
1 Ненавижу 1С
 
гуру
11.11.11
12:59
точно заполнены? на 2012 год?
2 БибиГон
 
11.11.11
12:59
Нужно заполнить производственный календарь!
3 IAleksa
 
11.11.11
13:01
(1) (2) - сама 2 раза заполняла и записывала (Регистр Производственный календарь), указала даже все выходные
4 IAleksa
 
11.11.11
13:02
Рассчитывает конец отпуска до 21.12.11, если ставить с 01.01.12 хоть на 1 день - сообщает про календарь
5 БибиГон
 
11.11.11
13:02
на какой год заполнила?
6 IAleksa
 
11.11.11
13:02
ссори, до 31.12.11 рассчитывает.....
7 IAleksa
 
11.11.11
13:03
(5) на 2012. Как выложить тут скрин?
8 БибиГон
 
11.11.11
13:03
нужно заполнить 2012 год.
9 БибиГон
 
11.11.11
13:03
http://onlinedisk.ru/  а сюда ссылку
10 shuhard
 
11.11.11
13:04
(3) не тупи,
заполнять нужно графики
11 IAleksa
 
11.11.11
13:05
(10) не туплю - графики все проверяла на 2012 год и перезаписывала
12 IAleksa
 
11.11.11
13:06
13 БибиГон
 
11.11.11
13:09
выложи сообщение об ошибке
14 shuhard
 
11.11.11
13:09
(11) тогда открой конфигуратор и найди на что ругается [говорит заполнить производственный календарь]
15 IAleksa
 
11.11.11
13:10
16 IAleksa
 
11.11.11
13:10
(14) весь кусок модуля выкладывать? Я где ругается нашла
17 shuhard
 
11.11.11
13:13
(16) дурная шутка,
у тебя есть строчка на  которой падает
18 IAleksa
 
11.11.11
13:17
(17) Большая просьба перестать хамить.
там запрос. выдает, что запрос не выполнен.
ОбщийМодуль ЗаполнениеДокументовЗК функция ДатаОкончанияОтпускаПоКалендарнымДням - запрос не выводит ничего - выборка пустая получается
19 IAleksa
 
11.11.11
13:18
(18) номер строки 3658
20 almar
 
11.11.11
13:18
Кадровый отпуск считает дни чисто по производственному календарю. У тебя точно первые 12 дней в январе заполнены? Попробуй нажать Печать в производственном календаре
21 ptiz
 
11.11.11
13:19
Заполнить производственный календарь еще не предлагали?
22 БибиГон
 
11.11.11
13:20
+(20)кстати на кнопку записать не забыла нажать в календаре?
23 almar
 
11.11.11
13:20
Посмотри консолью запросов производственный календарь на январь 12 года. Что в реквизите КалендарныеДни?
24 shuhard
 
11.11.11
13:20
(18) так ещё и дура,
топик закрыт
25 IAleksa
 
11.11.11
13:21
26 almar
 
11.11.11
13:22
(25) Это на 11 год. Распечатай на 12-й
27 IAleksa
 
11.11.11
13:24
(26) извините, чуть расстроилась из-за некоторых тут... http://www.onlinedisk.ru/image/767719/Календарь2012.JPG вот на 2012
28 БибиГон
 
11.11.11
13:25
ошибку выдает при печати. хм
29 IAleksa
 
11.11.11
13:27
(28) Ошибку выдает когда касается что-то 2012 года... у нас отпуска вводятся за месяц - полтора до начала отпуска
30 Sammo
 
11.11.11
13:28
Кстати,а у нас разве принято постановление правительства о производственном календаре на 2012 год?
31 shuhard
 
11.11.11
13:28
(30) оленей покорми
32 БибиГон
 
11.11.11
13:29
(29)проверьте базу -тестирование и исправление в конфигураторе. сначала на копии естественно.
33 shuhard
 
11.11.11
13:29
(31) Постановление Правительства РФ от 20 июля 2011 г. N 581 "О переносе
                      выходных дней в 2012 году"
34 Sammo
 
11.11.11
13:30
+ 30 - О, увидел... Сорри.
35 IAleksa
 
11.11.11
13:31
(32) поставила тестироваться
36 IAleksa
 
11.11.11
13:41
(32) тестирование не спасло... ошибка та же.
37 БибиГон
 
11.11.11
13:45
ошибки были?
chdbfl.exe
и проверь календарь за другой год 2013.
38 IAleksa
 
11.11.11
13:57
(37) при тестировании из базы ошибки были... при проверке chdbfl.exe ошибок не нет. С отпусками на 2013 год тоже самое
39 IAleksa
 
11.11.11
14:01
(37) ошибок не выдало, но странным образом все заработало... Большое спасибо!
40 IAleksa
 
11.11.11
14:06
(37) а как базу SQL проверить? Только из самой базы тестировать?
41 pavlika
 
11.11.11
15:40
(39) И [По] посчитал и занес в регистр сведений "Состояние сотрудников организаций" после chdbfl.exe?
42 Ненавижу 1С
 
гуру
11.11.11
15:43
это косяк ЗУП

вот параметр:

Запрос.УстановитьПараметр("ДатаВперед",                ДатаНачалаОтпуска + КоличествоДнейОтпуска * мДлинаСуток * 2); // про запас, чтобы покрыть нерабочие дни в количестве дней отпуска

и запрос:

ВЫБРАТЬ ПЕРВЫЕ 1
   РаспределениеДнейОтпускаПоДатам.ПередвижнаяДатаОконч КАК ПолученнаяДатаОкончОтпуска
ИЗ
   (ВЫБРАТЬ
       РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ПередвижнаяДатаОконч,
       СУММА(Множитель.ПоКалендарю_Множитель) КАК ПоКалендарю_Множитель
   ИЗ
       РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ПередвижнаяДатаОконч,
               РегламентированныйПроизводственныйКалендарь.КалендарныеДни КАК ПоКалендарю_Множитель
           ИЗ
               РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
           ГДЕ
               РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачалаОтпуска И &ДатаВперед) КАК Множитель
           ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= Множитель.ПередвижнаяДатаОконч
   ГДЕ
       РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачалаОтпуска И &ДатаВперед
   
   СГРУППИРОВАТЬ ПО
       РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК РаспределениеДнейОтпускаПоДатам
ГДЕ
   РаспределениеДнейОтпускаПоДатам.ПоКалендарю_Множитель = &КоличествоДнейОтпуска

УПОРЯДОЧИТЬ ПО
   ПолученнаяДатаОкончОтпуска

они в параметре тупо умножают на 2, но из-за слишком длинных праздников умножения на 2 тупо не хватает
43 Ненавижу 1С
 
гуру
11.11.11
15:44
попробуйте увеличить длину отпуска в двое ради эксперимента, расчитывается конечная дата?
44 Ненавижу 1С
 
гуру
11.11.11
16:24
ВЫБРАТЬ
    КоличествоДней.ДатаКалендаря КАК ДатаОкончания
ИЗ
    (ВЫБРАТЬ
         ДатыКалендаря.ДатаКалендаря КАК ДатаКалендаря,
         СУММА(Календарь.КалендарныеДни) КАК КалендарныеДни
    ИЗ
         РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК ДатыКалендаря
              ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
              ПО (Календарь.ДатаКалендаря <= ДатыКалендаря.ДатаКалендаря)
                   И (Календарь.ДатаКалендаря МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, &КоличествоДней))
                   И (ДатыКалендаря.ДатаКалендаря МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, &КоличествоДней))
                   И (ДатыКалендаря.КалендарныеДни > 0)
   
    СГРУППИРОВАТЬ ПО
         ДатыКалендаря.ДатаКалендаря) КАК КоличествоДней
ГДЕ
    КоличествоДней.КалендарныеДни = &КоличествоДней

//ДОБАВИТЬКДАТЕ хотя бы на 2 умножили бы!
45 Gesperid10
 
11.11.11
16:29
было такое, поправил две функции:


Функция ДатаНачалаОтпускаПоКалендарнымДням(ДатаОкончания, КоличествоДней, ВключатьПраздники = Ложь)
   
   Если НЕ ВключатьПраздники Тогда
       Запрос = Новый Запрос(
       "ВЫБРАТЬ
       |    КоличествоДней.ДатаКалендаря КАК ДатаНачала
       |ИЗ
       |    (ВЫБРАТЬ
       |        ДатыКалендаря.ДатаКалендаря КАК ДатаКалендаря,
       |        СУММА(Календарь.КалендарныеДни) КАК КалендарныеДни
       |    ИЗ
       |        РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК ДатыКалендаря
       |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
       |            ПО (Календарь.ДатаКалендаря >= ДатыКалендаря.ДатаКалендаря)
       //+андрей 08/11/2011
       //|                И (Календарь.ДатаКалендаря МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаОкончания, ДЕНЬ, -&КоличествоДней) И &ДатаОкончания)
       //|                И (ДатыКалендаря.ДатаКалендаря МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаОкончания, ДЕНЬ, -&КоличествоДней) И &ДатаОкончания)
       |                И (Календарь.ДатаКалендаря МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаОкончания, ГОД, -1) И &ДатаОкончания)
       |                И (ДатыКалендаря.ДатаКалендаря МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаОкончания, ГОД, -1) И &ДатаОкончания)
       //-андрей 08/11/2011
       |                И (ДатыКалендаря.КалендарныеДни > 0)
       |    
       |    СГРУППИРОВАТЬ ПО
       |        ДатыКалендаря.ДатаКалендаря) КАК КоличествоДней
       |ГДЕ
       |    КоличествоДней.КалендарныеДни = &КоличествоДней");
       
       Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
       Запрос.УстановитьПараметр("КоличествоДней", КоличествоДней);
       
       Выборка = Запрос.Выполнить().Выбрать();
       Если Выборка.Следующий() Тогда
           ДатаНачала = Выборка.ДатаНачала;
       Иначе
           ОбщегоНазначения.СообщитьОбОшибке("Проверьте заполнение производственного календаря!");
           ДатаНачала = Неопределено;
       КонецЕсли;
   Иначе    
       ДатаНачала = НачалоДня(ДатаОкончания) - (КоличествоДней - 1) * 86400;
   КонецЕсли;
   
   Возврат ДатаНачала;
   
КонецФункции // ДатаОкончанияОтпускаПоКалендарнымДням

Функция ДатаОкончанияОтпускаПоКалендарнымДням(ДатаНачала, КоличествоДней, ВключатьПраздники = Ложь)
   
   Если НЕ ВключатьПраздники Тогда
       Запрос = Новый Запрос(
       "ВЫБРАТЬ
       |    КоличествоДней.ДатаКалендаря КАК ДатаОкончания
       |ИЗ
       |    (ВЫБРАТЬ
       |        ДатыКалендаря.ДатаКалендаря КАК ДатаКалендаря,
       |        СУММА(Календарь.КалендарныеДни) КАК КалендарныеДни
       |    ИЗ
       |        РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК ДатыКалендаря
       |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
       |            ПО (Календарь.ДатаКалендаря <= ДатыКалендаря.ДатаКалендаря)
       //+андрей 08/11/2011
       //|                И (Календарь.ДатаКалендаря МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, &КоличествоДней))
       //|                И (ДатыКалендаря.ДатаКалендаря МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, &КоличествоДней))
       |                И (Календарь.ДатаКалендаря МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, 1))
       |                И (ДатыКалендаря.ДатаКалендаря МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, 1))
       //-андрей 08/11/2011
       |                И (ДатыКалендаря.КалендарныеДни > 0)
       |    
       |    СГРУППИРОВАТЬ ПО
       |        ДатыКалендаря.ДатаКалендаря) КАК КоличествоДней
       |ГДЕ
       |    КоличествоДней.КалендарныеДни = &КоличествоДней");
       
       Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
       Запрос.УстановитьПараметр("КоличествоДней", КоличествоДней);
       
       Выборка = Запрос.Выполнить().Выбрать();
       Если Выборка.Следующий() Тогда
           ДатаОкончания = Выборка.ДатаОкончания;
       Иначе
           ОбщегоНазначения.СообщитьОбОшибке("Проверьте заполнение производственного календаря!");
           ДатаОкончания = Неопределено;
       КонецЕсли;
   Иначе    
       ДатаОкончания = НачалоДня(ДатаНачала) + (КоличествоДней - 1) * 86400;
   КонецЕсли;
   
   Возврат ДатаОкончания;
   
КонецФункции // ДатаОкончанияОтпускаПоКалендарнымДням

46 Gesperid10
 
11.11.11
16:35
Ненавижу 1С, откуда код?
47 Ненавижу 1С
 
гуру
11.11.11
16:39
(46) смотря какой
в (42) из моего релиза
в (44) из релиза ТС
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn