По теме из базы знаний
- Как откорректировать остатки отпусков и как изменить количество дней отпуска в год с определенной даты
- Вычитание рабочих дней от текущей даты
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- WEB-интерфейсы как механизм сбора и контроля данных в розничной сети. Инструменты и наработки
- Remote-leaders. Как развивать лидерство у удаленных сотрудников и зачем это надо
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Rom Написал:
-------------------------------------------------------
> Подскажите, как посчитать количество РАБОЧИХ дней
> между 2мя датами?
> Из помощника, понял что нужно использовать:
> Дней(дата1, дата2); и УчитыватьПраздники(); но как
> их в модуль списока справочника вставить, чтобы
> считал?
> Праздниками считаются все красные даты? и выходные
> тоже?
По-моему, в типовых д.б. так называемые календари, где уже отмечены и выходные и праздники - покопай в этом направлении.
-------------------------------------------------------
> Подскажите, как посчитать количество РАБОЧИХ дней
> между 2мя датами?
> Из помощника, понял что нужно использовать:
> Дней(дата1, дата2); и УчитыватьПраздники(); но как
> их в модуль списока справочника вставить, чтобы
> считал?
> Праздниками считаются все красные даты? и выходные
> тоже?
По-моему, в типовых д.б. так называемые календари, где уже отмечены и выходные и праздники - покопай в этом направлении.
Процедура РабДни()
перем Дни;
Календ = СоздатьОбъект(Календари.Служащие);
Дни = Календ.Дней( ДатаУвольнения, ДатаПриема);
Сообщить(Дни);
КонецПроцедуры
пишет ERR
Календ = СоздатьОбъект(Календари.Служащие);
{Справочник.Сотрудники.ФормаСписка.ФормаСписка.Модуль(3)}: Неудачная попытка создания объекта
почему?
перем Дни;
Календ = СоздатьОбъект(Календари.Служащие);
Дни = Календ.Дней( ДатаУвольнения, ДатаПриема);
Сообщить(Дни);
КонецПроцедуры
пишет ERR
Календ = СоздатьОбъект(Календари.Служащие);
{Справочник.Сотрудники.ФормаСписка.ФормаСписка.Модуль(3)}: Неудачная попытка создания объекта
почему?
Rom Написал:
-------------------------------------------------------
> Процедура РабДни()
> перем Дни;
> Календ = СоздатьОбъект(Календари.Служащие);
> Дни = Календ.Дней( ДатаУвольнения,
> ДатаПриема);
> Сообщить(Дни);
> КонецПроцедуры
>
> пишет ERR
>
> Календ = СоздатьОбъект(Календари.Служащие);
> {Справочник.Сотрудники.ФормаСписка.ФормаСписка.Мод
> уль(3)}: Неудачная попытка создания объекта
>
> почему?
Во-первых, сразу бросается в глаза:
Календ = СоздатьОбъект(Календари.Служащие);
надо хотя бы уж
Календ = СоздатьОбъект("Календарь.Служащие");
-------------------------------------------------------
> Процедура РабДни()
> перем Дни;
> Календ = СоздатьОбъект(Календари.Служащие);
> Дни = Календ.Дней( ДатаУвольнения,
> ДатаПриема);
> Сообщить(Дни);
> КонецПроцедуры
>
> пишет ERR
>
> Календ = СоздатьОбъект(Календари.Служащие);
> {Справочник.Сотрудники.ФормаСписка.ФормаСписка.Мод
> уль(3)}: Неудачная попытка создания объекта
>
> почему?
Во-первых, сразу бросается в глаза:
Календ = СоздатьОбъект(Календари.Служащие);
надо хотя бы уж
Календ = СоздатьОбъект("Календарь.Служащие");
В справке 1С по календарям не густо. Достань к-нить типовуху и посмотри, как там сделано.
Цитата:
Объект Календарь в системе 1С:Предприятие предназначен для вычисления временных интервалов на основании произвольных временных графиков. Этот объект может использоваться, например, для учета графика работы предприятия, графика работы внешних организаций, графика учета рабочего времени тех или иных работников предприятия и пр.
Календарь представляет собой объект, который устанавливает для каждой календарной даты некоторое числовое значение, которое может интерпретироваться при работе программы тем или иным образом. Например, в календаре, представляющем собой график работы организации или предприятия, каждому рабочему дню может соответствовать единица, а каждому выходному — ноль. В календаре учета рабочего времени сотрудников предприятия, каждой дате календаря может соответствовать число — продолжительность рабочего дня в часах и т. д.
В глобальном контексте программы 1С:Предприятие есть атрибут "Календари". Этот объект в качестве своих атрибутов имеет значения объектов конкретных видов календарей, заданных в конфигурации. Кроме того, этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту календаря конкретного вида по его имени. Т.е. допустимы следующие синтаксические конструкции:
Календари.Служащие.Дней(ТекДата, ТекДата + 5);
Календари.ПолучитьАтрибут("Служащие").Дней(ТекДата, ТекДата + 5);
Праздники в системе 1С:Предприятие представляет собой объект похожий на календарь, но он заполняется выборочно (не все даты подряд) и в нем могут вводиться и удаляться строки для определенных дат. Данный объект используются как набор исключений при заполнении календарей (см. метод календаря УчитыватьПраздники).
Цитата:
Объект Календарь в системе 1С:Предприятие предназначен для вычисления временных интервалов на основании произвольных временных графиков. Этот объект может использоваться, например, для учета графика работы предприятия, графика работы внешних организаций, графика учета рабочего времени тех или иных работников предприятия и пр.
Календарь представляет собой объект, который устанавливает для каждой календарной даты некоторое числовое значение, которое может интерпретироваться при работе программы тем или иным образом. Например, в календаре, представляющем собой график работы организации или предприятия, каждому рабочему дню может соответствовать единица, а каждому выходному — ноль. В календаре учета рабочего времени сотрудников предприятия, каждой дате календаря может соответствовать число — продолжительность рабочего дня в часах и т. д.
В глобальном контексте программы 1С:Предприятие есть атрибут "Календари". Этот объект в качестве своих атрибутов имеет значения объектов конкретных видов календарей, заданных в конфигурации. Кроме того, этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту календаря конкретного вида по его имени. Т.е. допустимы следующие синтаксические конструкции:
Календари.Служащие.Дней(ТекДата, ТекДата + 5);
Календари.ПолучитьАтрибут("Служащие").Дней(ТекДата, ТекДата + 5);
Праздники в системе 1С:Предприятие представляет собой объект похожий на календарь, но он заполняется выборочно (не все даты подряд) и в нем могут вводиться и удаляться строки для определенных дат. Данный объект используются как набор исключений при заполнении календарей (см. метод календаря УчитыватьПраздники).
Обычно я такие процедуры решаю стандартным способом, типа:
ЖурналРасчетовЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
КТП = ЖурналРасчетовЗарплата.КонецТекущегоПериода();
НТП = ЖурналРасчетовЗарплата.НачалоТекущегоПериода();
// если график работы не выбран используем основной график, установленный в константе
ГрафикРаботы = Сотрудник.ГрафикРаботы.Получить(КТП);
Если ПустоеЗначение(ГрафикРаботы)=1 Тогда
ГрафикРаботы = Константа.ОсновнойГрафик;
КонецЕсли;
Календарь = ГрафикРаботы.ОсновныеЧасы;
ДатаН = ?(ПустоеЗначение(ДатаНач)=1,НТП,ДатаНач);
ДатаК = ?(ПустоеЗначение(ДатаКон)=1,КТП,ДатаКон);
НормаДн = Календарь.Дней(НТП,КТП);
НормаЧасов = Календарь.Часов(НТП,КТП);
ДатаРеквизитов = ДатаК; //ДатаОкончания;
КоэффДн = Дни/НормаДн;
// а если нужно получить календарные дни, тогда
КалДней=ДатаК - ДатаН +1;
ЖурналРасчетовЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
КТП = ЖурналРасчетовЗарплата.КонецТекущегоПериода();
НТП = ЖурналРасчетовЗарплата.НачалоТекущегоПериода();
// если график работы не выбран используем основной график, установленный в константе
ГрафикРаботы = Сотрудник.ГрафикРаботы.Получить(КТП);
Если ПустоеЗначение(ГрафикРаботы)=1 Тогда
ГрафикРаботы = Константа.ОсновнойГрафик;
КонецЕсли;
Календарь = ГрафикРаботы.ОсновныеЧасы;
ДатаН = ?(ПустоеЗначение(ДатаНач)=1,НТП,ДатаНач);
ДатаК = ?(ПустоеЗначение(ДатаКон)=1,КТП,ДатаКон);
НормаДн = Календарь.Дней(НТП,КТП);
НормаЧасов = Календарь.Часов(НТП,КТП);
ДатаРеквизитов = ДатаК; //ДатаОкончания;
КоэффДн = Дни/НормаДн;
// а если нужно получить календарные дни, тогда
КалДней=ДатаК - ДатаН +1;
Я тут подумал, наверно ничего не получится. Отработанное время надо получить в программке которая из файла DBF берет данные по сдельщикам и создает бригадные наряды, а потом уже идет расчет всего остального так как в них база для остальных расчетов. Расчетчик хочет посмотреть сразу сколько человек часов отработал при загрузке сведений из DBF, там этого нет, и как я понял без Регламенты-Расчет з/п получить эту информацию проблематично.
Сhe Burashka Написал:
-------------------------------------------------------
> Я в ЗиКе тупой, но разве смысл сдельщины в
> отработанном времени? а не в сделал-получи?
Скажи это нашим расчетчикам, у них видите ли компенсация за проезд идет суммой пропорционально отработанным часам (даже не дням!), хотя берется исходя из стоимости проездного на текущий месяц. Раз это проездной то и стоит он для человека все-равно не зависимо сколько в месяц раз ты съездиешь. Часы проставляют в моей программке вручную
(смотрят в табеле что с цеха приносят), а потом эти часы попадают в бригадные наряды. Вид расчета "Компенсация за проезд" находит часы сотрудника в наряде, учитывает разницу с графиком и соответственно уменьшает если надо сумму.
-------------------------------------------------------
> Я в ЗиКе тупой, но разве смысл сдельщины в
> отработанном времени? а не в сделал-получи?
Скажи это нашим расчетчикам, у них видите ли компенсация за проезд идет суммой пропорционально отработанным часам (даже не дням!), хотя берется исходя из стоимости проездного на текущий месяц. Раз это проездной то и стоит он для человека все-равно не зависимо сколько в месяц раз ты съездиешь. Часы проставляют в моей программке вручную
(смотрят в табеле что с цеха приносят), а потом эти часы попадают в бригадные наряды. Вид расчета "Компенсация за проезд" находит часы сотрудника в наряде, учитывает разницу с графиком и соответственно уменьшает если надо сумму.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот