Разрезы в регистрах расчета #790531


#0 by breezee
Добрый вечер. Подскажите, зачем нужны эти разрезы? СП читал, гугл читал, так и не понял.
#1 by mistеr
Что за разрезы? Ты про измерения что ли? Гугл не читай, ЖКК читай.
#2 by breezee
Нет, именно про разрезы. Книжку завтра почитаю Вот пример на получения запроса. Запрос в консоле не работает по неизвестной мне причине, пишет что пле не надйено "ДНБазаОН.СотрудникРазрез". Не понимаю, как работает этот запрос. По логике задачи получаются все значения по базе кроме значений этого сотрудника. Не понимаю, зачем использовать разрезы, если можно написать внутренней соединение с таблицей расчета в условии будет что-то типо "ПО Таб1.Сотрудник <> таб2.сотрудник". Тоже самое же будет, только менее оптимально(наверное). Зачем придумана еще одна не нужная вртуальная таблица? Разрез = Новый Массив; ПО     НомерСтроки
#3 by mistеr
>Не понимаю, как работает этот запрос. Вот в книжке и объясняется, как он работает. В двух словах и без контекста не скажешь.
#4 by mistеr
Разрезы - это поля, по которым нужно сгруппировать полученные базовые данные.
#5 by breezee
Прочитал в желтой книге, получается что разрезы как бы добавляют доп. измерение по которому получаются данные. Все еще не понимаю, как применить к моей задаче
#6 by МимохожийОднако
Сформулируй внятно задачу для начала
#7 by breezee
Вот текст задачи полностью Начисление зарплаты сотрудникам предприятия осуществляется ежемесячно с использованием метода отклонений. Все сотрудники работают по пятидневному графику работы, однако в решении необходимо предусмотреть возможность работы по нескольким различным графикам. Сотрудники предприятия получают оплату по часовому тарифу. Сумма начисления по тарифу определяется как тарифная ставка, умноженная на количество фактически отработанных часов. Тарифная ставка в расчетном периоде не меняется. Тарифная ставка может меняться каждый день но берется на начало расчетного периода. В документе Начисление Зарплаты пользователь вводит значение тарифной ставки вручную. Сотрудники работают по сменному графику «Сутки через двое». Руководителям подразделений выплачивается премия в виде процента от суммы надбавок за предыдущий месяц сотрудников их подразделения. С надбавки самого руководителя премия не начисляется. Ввод надбавки руководителю подразделения осуществляется документом «Начисление зарплаты».
#8 by mistеr
Теперь показывай как решал.
#9 by breezee
Пока ни как, начал смотреть чужое решение, не понял про разрезы, загулил, не понял, почитал книгу - понял зачем нужны разрезы. Но не понял как запрос из может решить задачу. Есть регистр расчета "ДН" в нем измерение "Сотрудник" Я бы написал такой запрос ВЫБРАТЬ     ДНБазаОН.НомерСтроки КАК НомерСтроки, ИЗ             &Измерения,                 И ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ДополнительныеНачисления.Премия)) КАК ДНБазаОН1         ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДН.БазаОН(                 &Измерения,                 &Измерения, В нем получается что выбираю все записи из второй таблицы, где сотрудник не равен первой.
#10 by МимохожийОднако
"Тарифная ставка в расчетном периоде не меняется. Тарифная ставка может меняться каждый день но берется на начало расчетного периода". Противоречия здесь не наблюдаешь?
#11 by breezee
Вижу, может быть опечатка. Интересует именно механизм разрезов и как тут решилось через него)
#12 by mistеr
Ну раз понял, то лучше не ищи ошибки в чужих решениях, а делай сам. Зачем в твоем запросе два раза получается база. Запрос а ВТ базы довольно тяжелый, нет смысла делать его дважды. > выбираю все записи из второй таблицы, где сотрудник не равен первой В чем смысл этого условия?
#13 by breezee
> выбираю все записи из второй таблицы, где сотрудник не равен первой > С надбавки самого руководителя премия не начисляется. Я получу все записи кроме записей по этому сотруднику
#14 by mistеr
А что, там только одно подразделение и один руководитель? В любом случае, лучше сделать так. Вначале получить список всех сотрудников, по которым нужно собрать базу; затем передать его в условие виртуальной таблицы База.
#15 by breezee
А в в приниципе логика рабочая? Этим запросом я бы то же самое сделала, что и разрезами?
#16 by mistеr
Не уверен. Где, например, сотрудник, для которого считаем базу?
#17 by breezee
Да, я что-то не то сделал, а если так? Получу в левой таблице всех руководителей, а в правой не руководителей и получу итоги по суммам надбавок не руководителей из правой таблицы для текущего руководителя из левой Сам запрос         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрРасчета.ДН.БазаОН(                 &Измерения,                 &Измерения, ПО     Сотрудник
#18 by breezee
Не до конца понял Вот запрос ВЫБРАТЬ ИЗ                 И ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ДополнительныеНачисления.Премия)) КАК ДНБазаОН Вот выходные данные Получается, что таблица разрезов как бы отдельная таблица в которой храняся все данные по базе в разрезе разрезов. И происходит полное соединение таблицы разрезов с текущей таблицей. Все так?
#19 by mistеr
Все не так. Почитай еще раз, как работает запрос из ВТ базы.
#20 by mistеr
Есть два регистра: основной, где лежат рассчитываемые начисления; и базовый, откуда собираем базу. В параметре Измерения ты передаешь список полей по которым они соединяются. В параметре Разрезы (это никакая не таблица) ты передаешь список полей БАЗОВОГО РЕГИСТРА, по которым нужно ДОПОЛНИТЕЛЬНО сгруппировать то, что получилось. И соответственно, просуммировать базу. Дополнительно - значит помимо всех полей из основного регистра. Например, если тебе нужно не просто узнать сумму базы за весь базовый период, а например помесячно (если период больше месяца), или по регистраторам, то тебе нужны разрезы. Иначе — не нужны.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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