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

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 человек.
Рекламное место пустует