Имя: Пароль:
1C
 
Добавление организации из подразделения в существующий отчет СКД
0 NIGHTHUNTER
 
19.04.22
15:30
У сотрудника есть подразделение. У подразделения есть организация.
Необходимо вывести ее в имеющемся запросе, в отчет СКД.
Решил, спросить. Подскажите пожалуйста как правильнее это сделать?

ВЫБРАТЬ
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц КАК ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник КАК Сотрудник,
    1 КАК КолВоСотр,
    СУММА(ВЫБОР
            КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ВидУчетаВремени = &ДОЗаСвойСчет
                ТОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ДниОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК КолвоДОЗаСвойСчет,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник.Наименование ПОДОБНО "%(удал.)%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК УдаленныйСотрудник
ПОМЕСТИТЬ ВТ_ТабельныйУчет
ИЗ
    РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников.Обороты(&НачДата, &КонДата, Авто, ) КАК ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты

СГРУППИРОВАТЬ ПО
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Начисления.Сотрудник КАК Сотрудник,
    СУММА(Начисления.Результат) КАК Результат,
    Начисления.ПериодРегистрации КАК ПериодРегистрации
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
    РегистрРасчета.Начисления КАК Начисления
ГДЕ
    Начисления.ПериодРегистрации МЕЖДУ &НачДата И &КонДата

СГРУППИРОВАТЬ ПО
    Начисления.Сотрудник,
    Начисления.ПериодРегистрации
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ТабельныйУчет.ПериодМесяц КАК ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник КАК Сотрудник,
    СУММА(ВТ_ТабельныйУчет.КолВоСотр) КАК КолВоСотр,
    СУММА(ВТ_ТабельныйУчет.УдаленныйСотрудник) КАК УдаленныйСотрудник,
    СУММА(ВТ_ТабельныйУчет.КолвоДОЗаСвойСчет) КАК КолвоДОЗаСвойСчет,
    СУММА(ВТ_Начисления.Результат) КАК Результат
ИЗ
    ВТ_ТабельныйУчет КАК ВТ_ТабельныйУчет
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Начисления КАК ВТ_Начисления
        ПО ВТ_ТабельныйУчет.Сотрудник = ВТ_Начисления.Сотрудник
            И ВТ_ТабельныйУчет.ПериодМесяц = ВТ_Начисления.ПериодРегистрации

СГРУППИРОВАТЬ ПО
    ВТ_ТабельныйУчет.ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник
1 DiMel_77
 
19.04.22
15:45
(0) Чем головная организация из справочника "Сотрудники" вас не устраивает? Есть обособки выделенные на отдельный баланс?
2 NIGHTHUNTER
 
20.04.22
02:36
(1) Сказали брать от туда. Что в головной будут не актуальные данные.
Пока мне нужно сделать, в процессе придет понимание как и что там. Возможно.
От куда брать подразделение не суть же важно?!
3 NIGHTHUNTER
 
20.04.22
02:50
Как в запросе выбрать текущее подразделение, и его организацию ?

У справочника сотрудники нет такого реквизита. http://joxi.ru/EA40apjUXxYWKA .
4 NIGHTHUNTER
 
20.04.22
03:29
В СКД вставил запрос, СКД перестала формироваться. Пишет не верный параметр номер 1.
Что не так?  http://joxi.ru/4AkXZOaHjKDOyr  что за несоответствие типов ?

ВЫБРАТЬ
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц КАК ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник КАК Сотрудник,
    1 КАК КолВоСотр,
    СУММА(ВЫБОР
            КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ВидУчетаВремени = &ДОЗаСвойСчет
                ТОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ДниОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК КолвоДОЗаСвойСчет,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник.Наименование ПОДОБНО "%(удал.)%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК УдаленныйСотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение
ПОМЕСТИТЬ ВТ_ТабельныйУчет
ИЗ
    РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников.Обороты(&НачДата, &КонДата, Авто, ) КАК ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
        ПО ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник

СГРУППИРОВАТЬ ПО
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник.Наименование ПОДОБНО "%(удал.)%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Начисления.Сотрудник КАК Сотрудник,
    СУММА(Начисления.Результат) КАК Результат,
    Начисления.ПериодРегистрации КАК ПериодРегистрации
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
    РегистрРасчета.Начисления КАК Начисления
ГДЕ
    Начисления.ПериодРегистрации МЕЖДУ &НачДата И &КонДата

СГРУППИРОВАТЬ ПО
    Начисления.Сотрудник,
    Начисления.ПериодРегистрации
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ТабельныйУчет.ПериодМесяц КАК ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник КАК Сотрудник,
    ВТ_ТабельныйУчет.Подразделение КАК Подразделение,
    СУММА(ВТ_ТабельныйУчет.КолВоСотр) КАК КолВоСотр,
    СУММА(ВТ_ТабельныйУчет.УдаленныйСотрудник) КАК УдаленныйСотрудник,
    СУММА(ВТ_ТабельныйУчет.КолвоДОЗаСвойСчет) КАК КолвоДОЗаСвойСчет,
    СУММА(ВТ_Начисления.Результат) КАК Результат
ИЗ
    ВТ_ТабельныйУчет КАК ВТ_ТабельныйУчет
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Начисления КАК ВТ_Начисления
        ПО ВТ_ТабельныйУчет.Сотрудник = ВТ_Начисления.Сотрудник
            И ВТ_ТабельныйУчет.ПериодМесяц = ВТ_Начисления.ПериодРегистрации

СГРУППИРОВАТЬ ПО
    ВТ_ТабельныйУчет.ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник,
    ВТ_ТабельныйУчет.Подразделение
5 NIGHTHUNTER
 
20.04.22
03:41
поменял запрос, СКД все равно не хочет принимать его.

Несоответствие типов (параметр номер 1), я не пойму где это?!
6 NIGHTHUNTER
 
20.04.22
03:44
В консоле все выполняется
7 NIGHTHUNTER
 
20.04.22
03:57
кэшь почистил не помогло
8 NIGHTHUNTER
 
20.04.22
06:35
Причину ошибки нашел.
Период - дата. У меня была такая же переменная как стандартный период, по этому шла ошибка.
Переименовал используемый период в ПериодОтбора - стандартный период.

Нашел ошибку, когда стал делать отдельно выборку по срезу последних, регистра сведений, и увидел. что там по умолчанию используется период .
9 NIGHTHUNTER
 
20.04.22
06:39
Сейчас запрос такой. Но формируется он достаточно продолжительно.
Подскажите как его можно усовершенствовать. Улучшить скорость выполнения?
Или это из за того что добавлены, подразделения, теперь такая скорость его выполнения?

ВЫБРАТЬ
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц КАК ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник КАК Сотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение.ГоловнаяОрганизация КАК ПодразделениеГоловнаяОрганизация,
    1 КАК КолВоСотр,
    СУММА(ВЫБОР
            КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ВидУчетаВремени = &ДОЗаСвойСчет
                ТОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ДниОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК КолвоДОЗаСвойСчет,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник.Наименование ПОДОБНО "%(удал.)%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК УдаленныйСотрудник
ПОМЕСТИТЬ ВТ_ТабельныйУчет
ИЗ
    РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников.Обороты(&НачДата, &КонДата, Авто, ) КАК ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты,
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Период, ) КАК КадроваяИсторияСотрудниковСрезПоследних

СГРУППИРОВАТЬ ПО
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник.Наименование ПОДОБНО "%(удал.)%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ,
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение.ГоловнаяОрганизация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Начисления.Сотрудник КАК Сотрудник,
    СУММА(Начисления.Результат) КАК Результат,
    Начисления.ПериодРегистрации КАК ПериодРегистрации
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
    РегистрРасчета.Начисления КАК Начисления
ГДЕ
    Начисления.ПериодРегистрации МЕЖДУ &НачДата И &КонДата

СГРУППИРОВАТЬ ПО
    Начисления.Сотрудник,
    Начисления.ПериодРегистрации
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ТабельныйУчет.ПериодМесяц КАК ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник КАК Сотрудник,
    ВТ_ТабельныйУчет.ПодразделениеГоловнаяОрганизация КАК ПодразделениеГоловнаяОрганизация,
    СУММА(ВТ_ТабельныйУчет.КолВоСотр) КАК КолВоСотр,
    СУММА(ВТ_ТабельныйУчет.УдаленныйСотрудник) КАК УдаленныйСотрудник,
    СУММА(ВТ_ТабельныйУчет.КолвоДОЗаСвойСчет) КАК КолвоДОЗаСвойСчет,
    СУММА(ВТ_Начисления.Результат) КАК Результат
ИЗ
    ВТ_ТабельныйУчет КАК ВТ_ТабельныйУчет
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Начисления КАК ВТ_Начисления
        ПО ВТ_ТабельныйУчет.Сотрудник = ВТ_Начисления.Сотрудник
            И ВТ_ТабельныйУчет.ПериодМесяц = ВТ_Начисления.ПериодРегистрации

СГРУППИРОВАТЬ ПО
    ВТ_ТабельныйУчет.ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник,
    ВТ_ТабельныйУчет.ПодразделениеГоловнаяОрганизация

//

http://joxi.ru/KAgREMdc56Dov2

http://joxi.ru/LmGO73GsBYGM7m
10 NIGHTHUNTER
 
20.04.22
07:22
(9) как я понял, этот запрос не верный.

Вот оптимизированный, -

ВЫБРАТЬ
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц КАК ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник КАК Сотрудник,
    1 КАК КолВоСотр,
    СУММА(ВЫБОР
            КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ВидУчетаВремени = &ДОЗаСвойСчет
                ТОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ДниОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК КолвоДОЗаСвойСчет,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник.Наименование ПОДОБНО "%(удал.)%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК УдаленныйСотрудник
ПОМЕСТИТЬ ВТ_ТабельныйУчет
ИЗ
    РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников.Обороты(&НачДата, &КонДата, Авто, ) КАК ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты

СГРУППИРОВАТЬ ПО
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ПериодМесяц,
    ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник.Наименование ПОДОБНО "%(удал.)%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Начисления.Сотрудник КАК Сотрудник,
    СУММА(Начисления.Результат) КАК Результат,
    Начисления.ПериодРегистрации КАК ПериодРегистрации
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
    РегистрРасчета.Начисления КАК Начисления
ГДЕ
    Начисления.ПериодРегистрации МЕЖДУ &НачДата И &КонДата

СГРУППИРОВАТЬ ПО
    Начисления.Сотрудник,
    Начисления.ПериодРегистрации
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ТабельныйУчет.ПериодМесяц КАК ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник КАК Сотрудник,
    СУММА(ВТ_ТабельныйУчет.КолВоСотр) КАК КолВоСотр,
    СУММА(ВТ_ТабельныйУчет.УдаленныйСотрудник) КАК УдаленныйСотрудник,
    СУММА(ВТ_ТабельныйУчет.КолвоДОЗаСвойСчет) КАК КолвоДОЗаСвойСчет,
    СУММА(ВТ_Начисления.Результат) КАК Результат,
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение.ГоловнаяОрганизация КАК ПодразделениеГоловнаяОрганизация
ИЗ
    ВТ_ТабельныйУчет КАК ВТ_ТабельныйУчет
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Начисления КАК ВТ_Начисления
        ПО ВТ_ТабельныйУчет.Сотрудник = ВТ_Начисления.Сотрудник
            И ВТ_ТабельныйУчет.ПериодМесяц = ВТ_Начисления.ПериодРегистрации
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&КонДата, ) КАК КадроваяИсторияСотрудниковСрезПоследних
        ПО ВТ_ТабельныйУчет.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник

СГРУППИРОВАТЬ ПО
    ВТ_ТабельныйУчет.ПериодМесяц,
    ВТ_ТабельныйУчет.Сотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение.ГоловнаяОрганизация
11 NIGHTHUNTER
 
20.04.22
07:22
Все ли в порядке в запросе (10) ?
12 VoditelKobyly
 
20.04.22
07:36
По 10 вопрос приблизительно тот же что я озвучивал раньше:
где здесь учтено то, что сотрудник в одном месяце был в одном подразделении, а в другом был переведен на другую должность в другое подразделение или организацию?
13 NIGHTHUNTER
 
20.04.22
08:18
(12) Да приблизительно тот же. Но в доработке сейчас учтено подразделение.
Это было доработкой, мне как задание на сегодняшнее утро.
было уже несколько подводных камней, описанных выше.
От, использования одноименной переменной.
До, предельно длительного выполнения выборки СКД.
Когда, я старался все это обойти, и мне удалось.
Сейчас есть выборка по подразделениям. Выполняющаяся оперативно.
Надеюсь там данные верные.

(12) А как вот, учесть эту вашу доработку. О чем пишете вы?

Если я сейчас имею выборку, отчет СКД, я могу его показать приемщику. Она будет оценивать что там и как. И мне ответит.

Но вы уже предвидите то что нужно учесть. Как это можно было бы учесть?
14 DiMel_77
 
20.04.22
09:18
(13) Я как понял, тут все печально...
Для начала, в ЗУП не принято обращаться напрямую к регистрам для получения данных, для этого создан программный интерфейс. Доступ из СКД к программному интерфейсу осуществляется через механизм представлений. Почитай https://infostart.ru/1c/articles/841337/
Теперь по твоему тестовому заданию, как должен выглядеть запрос по пунктам:
1) Получить таблицу вида Сотрудник, Организация, Период (возможно дальше, скажут выведи Подразделение, Должность, Вид занятости и т.д.)
Для того, чтобы получить такие данные, по хорошему необходимо получать Представления_КадровыеДанныеСотрудников или в худшем случае Представления_ТаблицаРегистра_КадроваяИсторияСотрудников
2) Получить интервалы Сотрудник, Организация, НачалоПериода, КонецПериода
3) Соединить с этой таблицей данные табельного учета и регистра расчета, по периоду и сотруднику.

Но проще уже использовать готовое представление "Представления_ДанныеУчетаВремениИСостоянийСотрудников", там есть организация, подразделение, Вид учета времени, дата. Смотри схему компоновки отчета "УнифицированнаяФормаТ13". Ну а далее получаешь интервалы и соединяешь с начислениями.
15 VoditelKobyly
 
20.04.22
09:19
(13) Не бузи. Просто подумай. Задай вопрос для начала своему руководителю, а потом заказчику. Покажи, что ты хоть маленько разбираешься в технологии учета, заложенной в программе.
Ты же хотел разобраться, вот и разберись сначала как в программе настроен учет сотрудников, хотя бы на примере себя или соседа, который уже давно работает или если это чужая база
, то опять же задай вопрос заказчику о наиболее сложных случаях, когда кого-нибудь постоянно заставляют заменять отсутствующих. Когда хоть чуточку разберешься и представишь процессы
которые учитывает программа сможешь задавать правильные вопросы и предвидеть. Попытайся сначала представить сами процессы и учет, а не кидаться сразу реализовывать задачу. Качество
решения не меньше в цене, чем скорость. Если ты выдашь решение, которое через месяц нужно будет переделывать, а потом опять, уверяю тебя, что ты заказчика скорее всего потеряешь.
Поработай на свою будущую репутацию.
По существу: ты взял срез последних - уверен, что тебя это устроит?
По скорости работы отчета тебе посоветовать ничего не могу, потому как время на оптимизацию у тебя похоже нет, уверен ты сдашь и так.
Потому что для совета нужны реальные данные, изучать запросы в профайлере, а ты этого делать не будешь.
На вскидку - попробуй добавить индекса в временные таблицы.
16 VoditelKobyly
 
20.04.22
09:21
(14) Вряд ли он будет переделывать...
17 NIGHTHUNTER
 
20.04.22
09:50
(14) Посмотрел, почитал статью. Но какую мотивацию мне это даст я не понял.
18 NIGHTHUNTER
 
20.04.22
09:56
(15) Почему не буду. Я все буду делать. Со всем буду разбираться.
Но что бы что то делать я должен понимать что.

Сегодня, я решил вопрос, с http://joxi.ru/krDa79GFGZkDPm .

В (9) не правильный запрос. Так же я переделал его.

Сейчас запрос, такой как в (10). Выполняется он со скоростью, которую не нужно оптимизировать. на сколько я это увидел.
С (9) я сразу понял. что что то не так.

(15) Я не уверен что нужно не срез последних. но надеюсь это как то прояснится в процессе.

Индексы да. попробую добавить.
19 DiMel_77
 
20.04.22
10:04
(17) Значит ты не готов ещё для ЗУП, берись за задачи по проще УТ или БУ. Для понимания, кадровая история пишется в соответствующий регистр "Кадровая история", в модуле набора записей производится запись в интервальный регистр. Что произойдет, когда в один день несколько документов двинут этот регистр? (есть понятие сдвиг, тоже почитай). А теперь ты хочешь сделать корректный запрос, для этого ты должен учесть все эти ньюансы. Для того чтобы не усложнять тебе жизнь, все эти действия отрабатываются в представлениях. Из них ты можешь получить корректные значения.
А срез последних, который ты используешь в (10) - это тоже самое, что реквизит "Головная организация" справочника "Сотрудники". Смысл в том, что если в организации нет филиалов, то нет и переводов между организациями (перевод к другому работодателю). Т.е. элемент справочника "Сотрудники" - это Физическое лицо + ДатаПриема + Головная организация.
20 NIGHTHUNTER
 
20.04.22
10:07
(19) Я сам не беру никогда никакие задачи. Мне их дает работодатель, если он есть.

Я согласен, что там все не просто и сложно. И что нужно быть специалистом в этом. В ЗуП в честности.

Я делаю то что понимаю на текущий момент.
21 NIGHTHUNTER
 
20.04.22
10:12
Интересно тогда. Для этого отчета что я сделал и доработал в СКД. Какие сейчас пути решения, в том виде в котором он должен быть?

Так сложно, что не привести пример?

Задача, сейчас понятна, -

нужна выборка, за период, с полями, -

1. Месяц    
2. Численность сотрудников    
3. Численность удаленных сотрудников    
4. ДО сотрудников за свей счет    
5. Сумма начисленной заработной платы

плюс сейчас, добавить по подразделениям ещё, что сейчас есть в (10).

(14) (19) Все что вы говорите. Исходя их того что я вот сейчас привел. Как нужно было бы сделать?
22 DiMel_77
 
20.04.22
10:13
(20) Вот смотри, есть организация с филиалами (подразделениями выделенными на отдельный баланс). Ты принимаешь сотрудника в эту организацию. У справочника "Сотрудники", заполняется реквизит "ГоловнаяОрганизация", а в регистре "КадроваяИстория", появляется запись ГоловнаяОрганизация, Организация (Филиал). Теперь сменить головную организацию никак нельзя, в случае необходимости перевести сотрудника на другое Юр. Лицо необходимо его уволить и принять в новую организацию, т.е. создать новый элемент справочника "Сотрудники". Но перевести с одного филиала на другой можно. Поэтому только для этого учета и возможен отбор по организации (Филиалу).
23 VoditelKobyly
 
20.04.22
10:24
(20) Твой руководитель надеется, что ты залезешь в интернет и почитаешь, что-нибудь про организацию учета в программе.
А ты вместо этого, пытаешься сходу решить задачу, не вникая в учет. Заработать плюсики (или рублики, я так и не понял в какого плана
конторе ты работаешь. То у тебя есть руководитель, то нет...) на скорости выполнения, боишься задать вопрос коллегам по работе, руководителю,
чтобы не дай бог, кто-то, что-то про тебя подумал.
24 DiMel_77
 
20.04.22
10:25
(21) За тебя тут никто писать запросы не будет. Тут могут подсказать как надо решать задачи.
Давай по тому что тебе понятно:
Пункт 2. - как вести учет сотрудников в случае внутреннего совместительства? Работающие, но отсутствующие (в отпусках по уходу, и т.д.)
Пункт 3. Что такое "удаленный сотрудник"?
25 VoditelKobyly
 
20.04.22
10:27
(24) перед тем как узнаешь что такое "удаленный" выпей валерианы.
26 NIGHTHUNTER
 
20.04.22
10:28
(22) Вчера, мне поставили задачу, что организацию, нужно брать из подразделения, что в справочнике Сотрудники.
Я выложил на проверку и ожидаю сейчас обратной связи.

(23) По вопросам, мне сказали уже не отвлекать. Я вот и делаю сам. и разбираюсь как могу. Всегда там понимали так. что если человек задает вопросы. то он не работает. По этому я и разбираюсь сам. Так как мне могут только сказать, то что я сейчас и делаю.


Удаленный, это работающий удаленно. У которого есть в наименовании постфикс "удал."
27 NIGHTHUNTER
 
20.04.22
10:30
(24) Сам пока понимаю, что мне нужно сделать выборку. СКД. Что я и делаю.
Понимаю что все значительно сложнее.
И я не понимаю, чем я могу помочь. Пока мне не дали обратной связи.
А сам я лесть с распросами принудительно не могу. так как все занимаются своими делами, надеюсь.
28 DiMel_77
 
20.04.22
10:33
(26) Что случится, когда сотрудник работающий дистанционно, будет переведен на постоянное место работы? Открой регистр "ДистанционнаяРаботаСотрудников", осознай для чего он периодический.
29 VoditelKobyly
 
20.04.22
10:36
(27) Похоже в  вашей конторе умеют ценить время.
Готовься к совещаниям и встречам заранее.
Пропиши возникшие вопросы и ознакомь людей по почте ещё до встречи, чтобы встреча прошла результативно...
30 NIGHTHUNTER
 
20.04.22
10:50
(29) Да это все понятно.
Я пытаюсь пока понять, что мне делать с этой выборкой. С этим отчетом СКД .
Я должен был его решить.
Утром я ещё не знал от куда брать подразделения. Так как из нет в справочнике сотрудники.

Поиском в интернете, и интуитивно узнал про регистр сведений, и использовал его.

Пока я понимаю, что это все на что я был способен. И если нужно ещё, мне нужно понимать как.
31 VoditelKobyly
 
20.04.22
11:13
(30) Дерни с РС КадроваяИсторияСотрудниковИнтервальный с привязкой к периоду
32 DiMel_77
 
20.04.22
11:20
(31) С интервальными регистрами нужно уметь работать...
Я бы сделал как то так:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    Сотрудники.Ссылка КАК Сотрудник,
    &НачалоПериода КАК НачалоПериода,
    &ОкончаниеПериода КАК ОкончаниеПериода
ПОМЕСТИТЬ ВТСотрудники
ИЗ
    Справочник.Сотрудники КАК Сотрудники
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДАТАВРЕМЯ(1, 1, 1) КАК Период,
    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ГоловнаяОрганизация,
    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
    ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
    ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
    ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение
ПОМЕСТИТЬ Представления_ТаблицаРегистра_КадроваяИсторияСотрудников
ИЗ
    ВТСотрудники КАК ИзмеренияДатыДляНабораЗаписей
ГДЕ
    "ТолькоРазрешенные" = ИСТИНА
    И "ПараметрыПостроения_ВключатьЗаписиНаНачалоПериода" = ИСТИНА
    И "ЛевоеЗначение" = "ЭтоГоловнойСотрудник"
    И "ВидСравнения" = "="
    И "ПравоеЗначение" = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Слева.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    Слева.Организация КАК Организация,
    Слева.Сотрудник КАК Сотрудник,
    Слева.ФизическоеЛицо КАК ФизическоеЛицо,
    Слева.Подразделение КАК Подразделение,
    Слева.Период КАК НачалоПериода,
    МИНИМУМ(Справа.Период) КАК КонецПериода
ПОМЕСТИТЬ ВТКадроваяИсторияИнтервалы    
ИЗ
    Представления_ТаблицаРегистра_КадроваяИсторияСотрудников КАК Слева
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Представления_ТаблицаРегистра_КадроваяИсторияСотрудников КАК Справа
        ПО Слева.Период < Справа.Период
            И Слева.ГоловнаяОрганизация = Справа.ГоловнаяОрганизация
            И Слева.Организация = Справа.Организация
            И Слева.Сотрудник = Справа.Сотрудник
            И Слева.ФизическоеЛицо = Справа.ФизическоеЛицо
            И Слева.Подразделение = Справа.Подразделение

СГРУППИРОВАТЬ ПО
    Слева.ГоловнаяОрганизация,
    Слева.Организация,
    Слева.Сотрудник,
    Слева.ФизическоеЛицо,
    Слева.Подразделение,
    Слева.Период

Ну а дальше пусть сам соединяет...
33 VoditelKobyly
 
20.04.22
11:43
(32) Это кусок из программного интерфейса?
Просто так не работает.
34 DiMel_77
 
20.04.22
11:51
(33) Конечно не будет если в модуле не пропишешь примерно:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)                      

   ИнициализироватьОтчет()        

КонецПроцедуры


Процедура ИнициализироватьОтчет() Экспорт
    
    СоответствиеДополнительныхПолейПредставлениям = КадровыйУчетРасширенный.ДополнительныеПоляОтчетаКадроваяИсторияСотрудников();
    ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект, СоответствиеДополнительныхПолейПредставлениям);

    
КонецПроцедуры
35 DiMel_77
 
20.04.22
12:02
(34) В общем случае процедура инициализации (т.е. разворота представлений) проще:

Процедура ИнициализироватьОтчет() Экспорт
    
    ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект);
    
КонецПроцедуры

У меня КОРП и куча подсистем, в которых модульность реализована...
36 NIGHTHUNTER
 
20.04.22
12:12
(31) Я пока не знаю что это.

(32) (34) (35) Это то есть, эта технология представлений?
То есть она не конструктором СКД делается, а в модуле внешнего отчета, создавая СКД, программно?
37 VoditelKobyly
 
20.04.22
12:22
К (32) и (34) еще чего-то не хватает
38 NIGHTHUNTER
 
20.04.22
12:44
(32) Я не знаю как это понимать.
И вообще все что я смог в (10)  .
дальше пока одни догадки.
39 DiMel_77
 
20.04.22
12:48
(37) Да, представления это доступ к программному интерфейсу.
Я в запросе прогнался малясь - надо было в первом пакете сделать так:

ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    Сотрудники.Ссылка КАК Сотрудник,
    &НачалоПериода КАК ДатаНачала,
    &ОкончаниеПериода КАК ДатаОкончания
ПОМЕСТИТЬ ВТСотрудники
ИЗ
    Справочник.Сотрудники КАК Сотрудники
;

Псевдонимы попутал.
И в случае осутствия конечного периода данные не попадают в запрос, т.е. надо добавить срезы на начало и конец периода, а только потом вычислять интервалы. Но смысл общий понятен?
Т.е. когда пишешь что то типа:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДАТАВРЕМЯ(1, 1, 1) КАК Период,
    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ГоловнаяОрганизация,
    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
    ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
    ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
    ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение
ПОМЕСТИТЬ Представления_ТаблицаРегистра_КадроваяИсторияСотрудников
ИЗ
    ВТСотрудники КАК ИзмеренияДатыДляНабораЗаписей
ГДЕ
    "ТолькоРазрешенные" = ИСТИНА
    И "ПараметрыПостроения_ВключатьЗаписиНаНачалоПериода" = ИСТИНА
    И "ЛевоеЗначение" = "ЭтоГоловнойСотрудник"
    И "ВидСравнения" = "="
    И "ПравоеЗначение" = ИСТИНА
;

Получаешь запрос такого вида:
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РегистрСведений.ДатаНачала КАК ДатаНачала,
    РегистрСведений.ДатаОкончания КАК ДатаОкончания,
    РегистрСведений.Год КАК Год,
    РегистрСведений.Сотрудник КАК Сотрудник,
    РегистрСведений.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    РегистрСведений.ФизическоеЛицо КАК ФизическоеЛицо,
    ВЫБОР
        КОГДА РегистрСведений.ДатаНачала <= НАЧАЛОПЕРИОДА(ИзмеренияДаты.ДатаНачала, ДЕНЬ)
            ТОГДА НАЧАЛОПЕРИОДА(ИзмеренияДаты.ДатаНачала, ДЕНЬ)
        ИНАЧЕ НАЧАЛОПЕРИОДА(РегистрСведений.ДатаНачала, ДЕНЬ)
    КОНЕЦ КАК Период,
    ВЫБОР
        КОГДА РегистрСведений.ПериодЗаписи = РегистрСведений.ДатаНачала
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЭтоВозвратноеСобытие,
    РегистрСведений.ДействуетДо КАК ПериодВозвратногоСобытия,
    РегистрСведений.ДатаНачала КАК ПериодЗаписи,
    РегистрСведений.РегистраторСобытия КАК Регистратор,
    РегистрСведений.РегистраторСобытия КАК РегистраторСобытия,
    РегистрСведений.РегистраторЗаписи КАК РегистраторЗаписи,
    РегистрСведений.ПустойИнтервал КАК ПустойИнтервал,
    РегистрСведений.Организация КАК Организация,
    РегистрСведений.Подразделение КАК Подразделение,
    РегистрСведений.Должность КАК Должность,
    РегистрСведений.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
    РегистрСведений.КоличествоСтавок КАК КоличествоСтавок,
    РегистрСведений.ВидСобытия КАК ВидСобытия,
    РегистрСведений.ВидДоговора КАК ВидДоговора,
    РегистрСведений.ГоловнойСотрудник КАК ГоловнойСотрудник,
    РегистрСведений.ЭтоГоловнойСотрудник КАК ЭтоГоловнойСотрудник
ПОМЕСТИТЬ ПредставленияТаблицаРегистра_КадроваяИсторияСотрудников
{ВЫБРАТЬ
    Сотрудник,
    ГоловнаяОрганизация,
    ФизическоеЛицо,
    Период,
    ЭтоВозвратноеСобытие,
    ПериодВозвратногоСобытия,
    ПериодЗаписи,
    Регистратор,
    РегистраторСобытия,
    РегистраторЗаписи,
    ПустойИнтервал,
    Организация,
    Подразделение,
    Должность,
    ДолжностьПоШтатномуРасписанию,
    КоличествоСтавок,
    ВидСобытия,
    ВидДоговора,
    ГоловнойСотрудник,
    ЭтоГоловнойСотрудник}
ИЗ
    ВТСотрудники КАК ИзмеренияДаты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК РегистрСведений
        ПО (РегистрСведений.ДатаНачала >= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ИзмеренияДаты.ДатаНачала, ДЕНЬ), ДЕНЬ, 1)
                    И РегистрСведений.ДатаНачала <= ВЫБОР
                        КОГДА ИзмеренияДаты.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
                            ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
                        ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.ДатаОкончания, ДЕНЬ)
                    КОНЕЦ
                ИЛИ НАЧАЛОПЕРИОДА(РегистрСведений.ДатаНачала, ДЕНЬ) <= КОНЕЦПЕРИОДА(ИзмеренияДаты.ДатаНачала, ДЕНЬ)
                    И РегистрСведений.ДатаОкончания >= КОНЕЦПЕРИОДА(ИзмеренияДаты.ДатаНачала, ДЕНЬ))
            И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)
ГДЕ
    РегистрСведений.ДатаОкончания >= КОНЕЦПЕРИОДА(РегистрСведений.ДатаНачала, ДЕНЬ)
    И РегистрСведений.ЭтоГоловнойСотрудник = ИСТИНА
;

PS. Писал запрос руками и тоже прогнал.
40 NIGHTHUNTER
 
20.04.22
12:55
(39) Офигеть конечно, как в это вникать?
Где это делается? Конструктором или как?
41 VoditelKobyly
 
20.04.22
13:24
(40) Сначала узнай как считать свои ресурсы в разрезе мясяцев и подразделений?
К примеру сотрудник пол-месяца был в одном подразделении, половина в другом. В каком его считать? В первом, во втором или в обоих?
А если он к концу месяца вернулся снова в первое подразделение его в численность второго нужно добавлять?
Те же вопросы с удаленщиками.
Тогда может и проще запрос придумаешь.
42 NIGHTHUNTER
 
20.04.22
13:58
(39) А как это соотносится с (10) ? там же подсчет количества идет? По различным условиям. а в (39) Этого вообще нет.
43 DiMel_77
 
20.04.22
15:01
(42) Я тебе описал как я считаю правильным необходимо писать такой отчет.
Т.е. сначала определяем интервалы работы на одном подразделении по сотруднику (с начало периода и конец периода).
Потом соединяем с данными табельного учета по дням (а что будет если табель не ввели?)
Потом соединяем с начислениями (кстати как соединить если он часть месяца работал в одном подразделении, а часть в другом? Тут нужно использовать регистр "РаспределениеРезультатовНачислений").

Как ты будешь считать сотрудника при смене подразделения (по последнему подразделению месяца? или несколько раз? Или пропорционально отработанному времени?)
Почему в запросе сотрудники работающие дистанционно, определяются по наименованию, а не используется подсистема "ДистанционнаяРабота"?
Не все так просто как кажется не правда ли?
44 NIGHTHUNTER
 
21.04.22
03:58
(43) Со всем все не просто.
Что бы это сделать, нужно это знать и понимать.
Я не владею этими знаниями.
И как их получить тоже не знаю.
Понятно одно, что не имея их, этого не сделать. Как описываете вы.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.