Вход | Регистрация

1С:Предприятие ::

Метки: 

Ошибка при расчетах зарплаты

Я
   unreal777
 
19.11.04 - 19:22
Настройки:
Календарь - стартовая дата 01.11.04 г
Периодичность журнала расчетов - месяц, дата отсчета - 01.01.04

Ситуация:
При расчете документа, когда дата окончания меньше 19.11.04 - выводит ошибку "Деление на 0", т.е. общее кол-во дней в этом месяце и кол-во рабочих дней он почему считает равным нулю (формула: оклад/всего_дней*рабочие_дни).
А когда дата 19.11.04 и больше (до конца месяца), то все нормально.
Кстати, при расчете за другие месяца вылазит та же ошибка.
 
  Рекламное место пустует
   а ля BorisG
1 - 19.11.04 - 19:32
Ты думаешь, что местные телепаты поймут, где ты допускаешь ошибку в расчете всего_дней без приведенного кода?

Попробую: 5 строчка, 10 символ.
   unreal777
 
2 - 19.11.04 - 19:48
Код:
Процедура ПровестиРасчет()
    Сотр=Объект;
    Календ=Сотр.Календарь;
    КалендарьСотр=Календ.Получить(ДатаОкончания);
    ДнейВМес=КалендарьСотр.Дней(НачМесяца(ДатаНачала),КонМесяца(ДатаНачала));
    Дни=КалендарьСотр.Дней(ДатаНачала,ДатаОкончания);
    Результат=(Сотр.Оклад/ДнейВМес)*Дни;
КонецПроцедуры
   а ля BorisG
3 - 19.11.04 - 20:00
Во!!!  Сила телепатская!  Действительно 5 строчка!
ДнейВМес=КалендарьСотр.Дней(НачМесяца(ДатаНачала),КонМесяца(ДатаНачала))+1
   bsg
4 - 19.11.04 - 20:01
Наверное, я не понимаю.
Это как?
Календ=Сотр.Календарь; 
КалендарьСотр=Календ.Получить(ДатаОкончания);
   unreal777
 
5 - 19.11.04 - 21:02
to 3.
Ага - и вместо 0 станет целая 1. У меня вообще-то цель получить кол-во рабочих дней. Да и кол-во рабочих дней то же равно 0.

to 4.
Сотр - это объект, который является Справочник.Сотрудники
Календарь - это реквизит этого справочника, который имеет тип значения "Календарь".
Т.е. Календ=Сотр.Календарь - это значит, что Календ я присваиваю тип значения реквизита "Календарь".
А КалендарьСотр - это я получаю название календаря, которым пользуется сотрудник на данный момент.
   unreal777
 
6 - 19.11.04 - 21:19
Так кто-нибудь знает?
   bsg
7 - 19.11.04 - 21:21
Я правильно понял?
Сначала получается реквизит, а в следующей строке его значение на дату?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Вы открыли для меня новые методы работы с периодическими реквизитами.
   unreal777
 
8 - 19.11.04 - 21:29
Все правильно. А чего тут нового? Просто календарь сам по себе периодический.
Календарь - является объектом, т.е. не значением реквизита, а всего лишь ссылкой на него. И потом с помощью Получить() я узнаю какой календарь присвоен данному сотруднику.

Вообще можно было одной строкой написать:
  КалендарьСотр=Сотр.Календарь.Получить(ДатаОкончания);
       или
  КалендарьСотр=Объект.Календарь.Получить(ДатаОкончания);
   unreal777
 
9 - 19.11.04 - 21:32
И как я определил - до 18.11.04 "КалендарьСотр" не известен, а после равен "Служащие" (как и должен).
   unreal777
 
10 - 19.11.04 - 22:02
Так что.
 
  Рекламное место пустует
   unreal777
 
11 - 20.11.04 - 00:16
Алло. Есть кто-нибудь?
   unreal777
 
12 - 20.11.04 - 00:29
Пошел спать.
   unreal777
 
13 - 20.11.04 - 00:51
Все уже сам понял.
У меня дата установки реквизита Календарь в справочнике как раз 19.11.04. Т.е. если брать число раньше этого, то он не может получить значение этого реквизита.


Список тем форума
  Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует