Имя: Пароль:
1C
1С v8
Получение базы по периоду регистрации при зависимости от базы по периоду действ.
,
0 maz
 
17.03.14
14:04
Собственно вопрос в заголовке темы:)
Кто-то получал?
Разрезами ничего у меня не выходит. Сдается мне что можно только топорным способом по реальным таблицам...
В общем, кто как делал, поделитесь? :)
1 vicof
 
17.03.14
14:05
Галка период действия является периодом регистрации не?
2 maz
 
17.03.14
14:10
может и да, где такая галка? ))))
3 vicof
 
17.03.14
14:11
в предопределенном виде расчета
4 maz
 
17.03.14
14:15
хехе, намёк понял, попробую
За наводку спасибо
5 maz
 
17.03.14
14:51
Пока не вышло. Если галку убрать, то почему-то вообще ругается что база не определена...
Смотрю дальше
6 maz
 
17.03.14
14:53
ой. куда все делись-то
7 maz
 
17.03.14
14:53
ап))
8 Brook
 
17.03.14
14:57
приведи пример
9 maz
 
17.03.14
14:59
Основное начисление по формуле считает процент от расчетной базы, а расчетная база должна браться по периоду регистрации. Т.е. например оклад, и отпуск (весь, в т.ч. переходящий на след месяц). Соответственно в следующем месяце отпуск уже браться не должен
10 maz
 
17.03.14
15:02
как подметил vicof, в предопределенном элементе ПВР есть флаг "период действия является базовым периодом". Соответственно если создать предопр ВР и включить этот флаг, то считается по периоду действия, т.е. например в базу попадает оклад, и часть переходящего отпуска за этот месяц.
Если же галку убрать, то в рассчетную базу почему-то не попадает вообще ничего.
"Не определены базовые начисления "
11 maz
 
17.03.14
15:06
Здается мне, что для предопределенного ВР, показатель схем мотивации РассчетнаяБаза по формуле не рассчитывается.
Вот так:(
12 maz
 
17.03.14
15:08
Ну точней рассчитывается только если галка включена
13 maz
 
17.03.14
15:14
хотя не понятно.. Один и тот же запрос, водном случае выдает результат (по периоду действия), а в  другом выдает пустоту
14 maz
 
17.03.14
15:19
т.е. если резюмировать:

1. В предопределенном ВР, включен флаг "период действия является базовым периодом". Прописана формула расчета "РасчетнаяБаза * Процент" Запрос к вирт таблице с базой выдает результат только по периоду действия (отсекая переходящие отпуска на другой месяц)

2. В предопределенном ВР, снят флаг "период действия является базовым периодом". Всё остальное тоже самое. Запрос ничего не выфдает
15 maz
 
17.03.14
15:35
если запрос свести к минимуму, то самай главная его часть будет выглядеть вот так:

ВЫБРАТЬ
    База1.ВидРасчета,
    База1.РезультатБаза КАК РезультатБаза,
    База1.Регистратор КАК Регистратор,
    База1.НомерСтроки КАК НомерСтроки
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.БазаОсновныеНачисленияРаботниковОрганизаций(
            &парамИзмеренияОсновного,
            &парамИзмеренияБазового,
            &парамРазрезы,
            ВидРасчета.КатегорияРасчета = &парамКатегорияНачисления
                И Регистратор = &парамРегистратор
                И Авторасчет) КАК База1
ГДЕ
    (НЕ База1.Сторно
            ИЛИ База1.ПериодРегистрацииРазрез < База1.ПериодРегистрации)
16 maz
 
17.03.14
15:40
Вопрос сводится теперь только к тому, как флаг "период действия является базовым периодом" поставленный в конфигураторе для предопределенного ВР влияет на результат данного запроса:)
17 maz
 
17.03.14
15:41
И теперь вопрос сводится только к тому, как флаг "период действия является базовым периодом", установленный в конфигураторе для предопределенного ВР влияет на результат приведенного запроса:)
18 maz
 
17.03.14
15:45
параметры запроса:

&парамИзмеренияОсновного = &парамИзмеренияБазового
это массив, состоит из одного элемента - строка "Сотрудник"

&парамРазрезы это тоже массив, состоит из одного элемента - строка "ПериодРегистрации"

&парамКатегорияНачисления - категория начисления текущего ВР (допустим категория первого уровня)

ну и сам регистратор
19 maz
 
17.03.14
16:25
ну и хрень. Неужели никак нельзя нужную базу получить?
20 maz
 
17.03.14
16:51
Думается мне, что нужно в таком случае (ВР предопределенный и флаг "период действия является базовым периодом" снят) определять максимально возможный базовый период действия, и прописывать его при добавлении записи в движения.
Пожалуй начну лопатить в этом направлени
21 maz
 
18.03.14
11:58
Да. Так начинает получаться, что-то похожее.
Но плюс к этому, необходимо так же учесть будет, что бы в "следующем" месяце повторно не учитывался переходящий отпуск. Т.е. в запросе поставить условие, что бы в базу попадал только актуальный ПериодРегистрацииРазрез.

Ладно. Всем спасибо. Задача наконец сформулировалась, теперь дело за малым, реализовать это всё как-то:)
22 maz
 
19.03.14
15:25
Да. Таким образом получилось.
1. Создаю предопределенный ВР "НашВР" в основных начислениях с отключенной галкой "период действия является базовым периодом".
2. В модуле документа НачислениеЗП (процедура СформироватьЗапросПоНачисления() ) добавляю запрос, который формирует данные во временную таблицу по всем начислениям, входящим в базу "Нашего ВР", с фактическим периодом действия, превышающим текущий месяц начисления. Потом эту ВТ "встраиваю" в основной запрос по начислениям и из него же беру рассчитанные базовые периоды (с проверкой на "НашВР", что бы других случаев эот не касалось, т.к. там по умолчанию для базового периода пустые даты). Это нам даёт максимально возможный период действия, который будет писаться в базовый период записей регистра расчетов с "Нашим ВР".
3. И заключительный этап - отсечение возможных данных переходящих отпусков и прочего с прошлых периодов (т.к. они уже посчитаны в п.2) Это делаю в общем модуле ПроведениеРассчетовПереопределяемый в процедуре ПолучитьДанныеДляРасчета(). Там в ветке условий "Если НеобходимаБаза Тогда" формируется запрос (а точней их два, один для комментария другой без, так что править надо оба) по расчетной базе начислений. В нем добавляю условие, что бы исключал "НашВР" и объединяю с запросом, в котором наоборот, условие только для "НашВР" и главное условие что бы "ПериодРегистрацииРазрез = ПериодРегистрации"

Всё. Работает как часики. Возможно немного замудреновато, но другого способа я не придумал. Если кто-нить делали ещё как-то - сообщите, было бы интересно.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.