как происходит запись в регистр расчета зависимого начисления #290280


#0 by уродина
например, при начислении премий, вначале записывается в регистр расчета вспомогательный набор записей. а потом запрос делаем фактически к той записи, которую сами и записали. значит, дело в том, что при записи в регистр расчета формируются базовые записи. каким образом это происходит? может, кто-то подскажет... спасибо.
#1 by Investigador
Я сейчас как раз разбираюсь с расчетами. Насколько я понимаю, чтобы получить запросом базу для расчета премии в базе данных должны быть как записи по рассчитываемой премии, так и записи базовых для нее расчетов. Или я что-то не понял в вопросе?
#2 by уродина
в типовой ЗУП расчет записи для регистра происходит так - вначале в регистр расчета записывается движение для каждой строки табличной части документа. например, "Премии работников организации". а потом запросом выгребается из регистра расчета виртуальной таблицы базовых данных по регистратору.
#3 by Investigador
Естественно заготовки записей по расчитываемой премии нужно сначала сохранить в базе данных. Запросы просто не умеют работать с данными в памяти.
#4 by уродина
так вот потом запрос выгребает из виртуальной таблицы базу по регистратору - документу, который записывал эти "заготовки" как вы говорите...
#5 by уродина
и потом - именно надо записать в регистр... иначе можно было бы выгребать по табличной части документа....
#6 by Investigador
Да, чтобы агрегировать значения по базовым видам расчета для этой премии. В "заготовках" же вы указали базовый период, а в настройках плана есть список базовых расчетов.
#7 by уродина
вот об этом я и говорю... что при записи заготовок вычисляется база по этим начислениям видимо... ну и записывается...
#8 by Investigador
При записи "заготовок" автоматически могут изменяться только фактические периоды действия для расчетов со взаимным вытеснением. Это не ваш случай. В вашем же случае записи по базовым видам расчета уже есть в базе данных. Вы записываете в базу "заготовки" премии, в которых указываете базовый период (одно из условий для последующего запроса). Затем запрос соединяет ваши "заготовки" с записями базовых видов расчета (в соответствии с настройками в плане) по условию совпадения их фактического периода действия с базовым периодом ваших "заготовок". Вы получаете просуммированый результат их ресурсов и вычисляете ресурс для вашей премии.
#9 by уродина
нет... в типовой совсем не так сделано. гляньте например в документе "Премии работников организации" как там запрос по базе делается...
#10 by уродина
имярегистра в этом случае - дополнительные начисления...
#11 by Investigador
Все правильно. У премии есть базовые расчеты как в регистре ОсновныеНачисленияРаботниковОрганизаций, так и в регистре ДополнительныеНачисленияРаботниковОрганизаций. А сама она находится в регистре ДополнительныеНачисленияРаботниковОрганизаций. И в этом запросе к ней слева джойнаются базовые виды в обоих регистрах.
#12 by уродина
посмотрите запрос внимательно.... подцепляются по регистратору и номеру строки...
#13 by Investigador
Ну и что? И чему это противоречит в моем толковании? Если бы базовые расчеты были только в одном регистре, то в запросе была бы только одна таблица РегистрРасчета."+ИмяРегистра+".БазаБазовыйРегистр. А так как их два и базы по каким-то записям может не оказаться основой запроса выступает полный набор записей-заготовок, к которым слева (чтобы не урезать этот набор) присоединяются виртуальные таблицы связки заготовок и базовых регистров. И соединение это как раз происходит по регистратору и номеру записи.
#14 by уродина
я говорю не о том, что базовые расчеты в одном регистре или в двух... а о том, что записи базовых расчетов запсиываются тем же регистратором... при записи "заготовок"... вот я о чем...
#15 by Investigador
Не обязательно. Дело в том, что в случае с виртуальной таблицей РегистрРасчета."+ИмяРегистра+".БазаОсновныеНачисленияРаботниковОрганизаций поле Регистратор это не документ, который зарегистрировал запись базового вида расчета, это документ для записей которого вы расчитываете базу. А ссылку на регистраторов базового расчета вы можете получить в результате запроса в поле РегистраторРазрез. И для одной записи их может быть несколько.
#16 by уродина
я вижу запрос, в котором указано поле, по которому выгребаются записи... и это противоречит вашим утверждениям... и запрос по разрезу тоже противоречит... там - только один регистратор...
#17 by Investigador
Не вижу противоречий. Ваше заблуждение в том, что вы думаете, что запрос к базовым регистрам "прямой", а он "через" исследуемые записи. Их соединение происходит невидимо для вас "внутри" виртуальной таблицы.
#18 by уродина
что значит "невидимо внутри"? поясните.... что происходит в результате запроса, если вы знаете это?
#19 by Investigador
Для каждой исследуемой записи, исходя из ее ВидаРасчета в соответствии с планом находятся базовые виды расчета. Находятся записи этих видов расчета у которых фактический период действия попадает в базовый период исследуемой записи и состав измерений соответствует составу измерений исследуемой записи. В общем случае таких записей может быть несколько на одну исследуемую. Затем происходит группировка в соответствии с параметром виртуальной таблицы "Разрезы" и для группировочных записей вычисляются агрегаты Ресурсов (те поля, которые имеют имя типа ИмяПоляБаза).
#20 by уродина
вот и я так же думала... однако если я задаю разрез "регистратор", то выводится только один еднственный регистратор... а именно - тот самый документ, которым я начисляю премию... т.е. базу именно он записывает... и никак я не могу вытянуть какие именно документы эту базу сформировали.... вот что мне надо честно говоря...
#21 by Investigador
В таком случае нужно создать массив допустим Разрезы. В виртуальной таблице Базы указать его в параметре "Разрезы", и под SELECT'ом добавить поле РегистраторРазрез. Тогда База для каждой записи будет получена в разрезе документов, регистрирующий записи базовых видов расчета.
#22 by уродина
вот так и сделала... однако - фиг вам.... все равно запрос возвращает одну строку... с этим, одним единственным документом...
#23 by уродина
а вот вы так хорошо рассказываете - попробуйте в типовой получить базу по премии в разрезе документов, которые эту базу создали...
#24 by Investigador
К сожалению у меня нет этой конфигурации. Но если вы мне дадите запрос я готов его подправить.
#25 by уродина
да я его подправила... проблем то нету... только вот результат - плачевный... то есть регистраторов нет как нет... а вы вообще-то типовую знаете ЗУП? или только платформу изучаете?
#26 by Investigador
Изучаю платформу. А можете мне закинуть на почту текст процедуры?
#27 by уродина
какой процедуры? там хитро все написано... в разных процедурах... чтобы чего-то скинуть - надо сначала все собрать... у меня есть спец по платформе, там все было понятно, когда сам пишешь... а вот в типовой - проблема...
#28 by Investigador
А много весит вся конфигурация?
#29 by уродина
много... типовую вам однозначно не вышлю.... буду разбираться... и вам - удачи.
#30 by Investigador
Нашел у себя конфигурацию, которая похоже включает в себя всю функциональность ЗУП. От какого документа идем?
#31 by Investigador
Поразбирался, нашел это место. Возник вопрос. Вставить-то регистратор базового расчета можно, а как предполагается дальше его использовать?
#32 by уродина
вставить можно... только результат все равно без разреза получается... мне надо базу получить не за весь период, а за отдельные дни... вот в чем дело. и пока не могу понять - как это сделать... т.е. базу получить не общей суммой, а как-то ее распределить... по датам, по документам... ничего не выходит.
#33 by Investigador
Там все завязано. У вида расчета (в нашем случае - премия, вопрос какая?) есть способ расчета. У способа расчета есть набор исходных данных (в нашем случае база). Предполагается добавить новый способ или редактировать существующий? Ведь набор исходных данных в результате вставки "базового регистратора" изменится. Или вопрос состоит в том, чтобы просто написать тестовый запрос и убедиться, что записи нужных регистраторов попадают в Базу?
#34 by уродина
я свою премию добавляю, мне для нее надо базу посчитать. но не за весь период, а за определенные дни. а у меня не получается получить несколько записей по разрезам... только одна и все. понятно, что я чего-то не знаю поэтому не получается. если вы подскажете - как это сделать, буду благодарна.
#35 by Investigador
Премия это новый вид расчета в плане видов расчета "ДополнительныеНачисленияОрганизации" так? А какое значение у него в реквизите "СпособРасчета"?
#36 by уродина
ну и значени естественно - новое... и в списке необхзодимых данных - установлено что необходима база... мне надо как-то так базу посчитать, чтобы она взялась только за определенные дни...
#37 by Investigador
А можно словами описать алгоритм расчета для этого нового способа расчета? А по-поводу "необходима база" похоже не прокатит. Сейчас в это понятие закладывается база без каких бы то ни было разрезов.
#38 by уродина
ну для нового вида расчета можно же поправить... вот если бы еще понять - как подправлять. хотя я похоже поняла как сделать. если получится - сообщу.
#39 by уродина
а у меня - все получилось! весь секрет в том, что надо задавать соответствующий базовый период... тогда база сама посчитается так как надо, за те дни, за которые надо. и никаких фактических периодов не надо. оказалось - все просто как му.
#40 by Investigador
Так а я о чем все время твердил? Что базовый период премии должен "накрывать" фактические периоды базовых видов расчета.
#41 by уродина
не понимаете вы... ну да ладно - я тоже раньше не понимала, а вот сейчас - поняла.
#42 by Investigador
Да все я понимаю, никаких разрезов изначально нужно не было. Просто была ошибка в отсутствии базового периода и результат получался естественно нулевой. Вот и понадобилось увидеть какие базовые записи туда входят и почему нет нужных.
#43 by уродина
вы ничего не поняли... к сожалению. но , повторюсь, это нормально... результат у меня был не нулевой... может, я плохо объясняю... для меня главное, что у меня все получилось.
#44 by Investigador
Надеюсь ко мне претензий нет? Я вроде бы все говорил правильно.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С