Имя: Пароль:
1C
1С v8
Добавить в запросе условие по перечислению.
0 1976vas
 
23.01.15
09:05
Добрый день! В запросе нужно выбрать только сотрудников с видом занятости ОсновоеМестоРаботы, делал так РаботникиОрганизаций.Сотрудник.ВидЗанятости ССЫЛКА Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы , пишет, что таблица не найдена. Подскажите как правильно?
1 piter3
 
23.01.15
09:06
перенеси в параметр
2 butterbean
 
23.01.15
09:06
РаботникиОрганизаций.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
3 butterbean
 
23.01.15
09:06
ССЫЛКА это для проверки типа значения, а не самого значения
4 1976vas
 
23.01.15
09:10
(2) Спасибо большое!
(1) Таблица не виртуальная.
5 Рэйв
 
23.01.15
09:13
(4)>>Таблица не виртуальная.

Учу делать параметры в запрос.Дорого:-)
6 piter3
 
23.01.15
09:14
(4) а причем здесь виртуальная?
7 ДенисЧ
 
23.01.15
09:19
Никак клиент подвалил? ))
8 1976vas
 
23.01.15
09:19
(5)(6) Я понял )
9 1976vas
 
23.01.15
09:23
(5) Научи вот почему график берется не тот который нужен

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

ОБЪЕДИНИТЬ ВСЕ

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

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

СГРУППИРОВАТЬ ПО
    ВТ.ПериодРегистрации,
    ВТ.ФизЛицо
;

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

СГРУППИРОВАТЬ ПО
    ВТ_Заработок.ПериодРегистрации,
    ВТ_Заработок.ФизЛицо
;

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

СГРУППИРОВАТЬ ПО
    ВТ_Заработок.ПериодРегистрации,
    ВТ_Заработок.ФизЛицо,
    ВТ_Заработок.НормаДней,
    ВТ_Заработок.НормаЧасов,
    ВТ_Заработок.ОтработаноДней,
    ВТ_Заработок.ОтработаноЧасов,
    ВТ_Заработок.Результат,
    ВТ_Заработок.РезультатДопНачисления,
    РаботникиОрганизаций.ГрафикРаботы

УПОРЯДОЧИТЬ ПО
    ПериодРегистрации

Берется не основной график, а у должности по внешнему совместительству. Думал условием сделать - не помогло.
10 Рэйв
 
23.01.15
09:24
(9)Уууу... нее.
Зарплата- это уже за деньги!:-)
11 1976vas
 
23.01.15
09:26
(10) Буржуй )
12 Рэйв
 
23.01.15
09:28
(11)Я не буржуй.Я домовитый!:-)
13 piter3
 
23.01.15
09:29
в ВТ_Заработок у тебя нет отбора,а потом идут соединения к ней
14 piter3
 
23.01.15
09:35
для биржи труда все мучаешь?
15 1976vas
 
23.01.15
09:37
(14) Ага ), там просто выборка идет по физлицу и он первого попавшегося сотрудника берет с его графиком. Думал переделать, чтобы сотрудника, а не физика выбирали - не получилось.
16 piter3
 
23.01.15
09:40
может стоит отобрать сначала нужных тебе сотров?
17 1976vas
 
23.01.15
09:44
(16) Я вот думаю, а как он узнает какой нужен, для этого сделал условие РаботникиОрганизаций.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы), но тогда он начисления не находит. Я уже 50 отчетов попереправил, пока эту справку делаю, думаю кто кого кончит - она меня или я ее )
18 kumena
 
23.01.15
09:50
И (КОНЕЦПЕРИОДА(ВТ_Заработок.ПериодРегистрации, МЕСЯЦ) >= РаботникиОрганизаций.Период)
            И (РаботникиОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
            И (НЕ РаботникиОрганизаций.ПервичныйДокумент ССЫЛКА Документ.УвольнениеИзОрганизаций)


любопытно, это вы так работающих сотрудников отбираете?
19 1976vas
 
23.01.15
09:52
(18) Это не я, это до меня ), все работает, если у сотрудника 1 лицевой счет.
20 kumena
 
23.01.15
09:56
хочешь напишу твой отчет правильно? но не на халяву.
21 1976vas
 
23.01.15
10:00
(20)Нет
22 1976vas
 
23.01.15
10:01
(20) Ты на мисте заработок ищешь?
23 1976vas
 
23.01.15
10:06
(20) Сам разберусь через пару лет
24 1976vas
 
23.01.15
11:10
Сделал, условие ввел в 3-й таблице ГДЕ
РаботникиОрганизаций.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
и все пошло
25 kumena
 
23.01.15
12:56
(22) специально нет. я люблю запросики писать, но на халяву как-то не интересно работать.
26 1976vas
 
23.01.15
12:59
(25) С твоим стажем может и да, а мне приятно подсказать если знаю.
27 kumena
 
23.01.15
13:44
мелочь я тоже подсказываю.
да, в вашем запросе косяк - нет учета, что норма может быть введена индивидуальным графиком, причем он приоритетнее общего.
28 1976vas
 
23.01.15
13:52
(27) Спасибо, Слава Богу у нас нет индивидуальных графиков )
29 1976vas
 
23.01.15
14:00
Там косяк другой еще. Если сотрудник в этом периоде работал как основной с одним графиком, а потом уволился и опять пришел с другим графиком - он подцепит первый график, но как будет косяк, тогда и исправлять буду, уже надоел этот отчет.
30 kumena
 
23.01.15
14:36
(29) да, точно.
теоритически графики в течении месяца могут еще и у одного сотрудника меняться. надо делать такой запрос, когда будет вычисляться график сотрудника на каждый день периода и их соединять по датам с регистром графиков. это в общем то не сложно, но для халявы слишком много ) Обращайся если что.
31 piter3
 
23.01.15
14:37
(29)в поиск наверняка уже было
32 1976vas
 
23.01.15
14:42
(30) (31) Спасибо!
Закон Брукера: Даже маленькая практика стоит большой теории.