Имя: Пароль:
1C
1С v8
Запросы
,
0 ilqar89
 
27.07.12
12:31
Здравствуйте! Вот кусочек запроса, объясню в чем дело. Есть регистр сведений Календарные графики, в нем отмечаются рабочие и нерабочие дни. Есть регистр сведений ГрафикиРабот, в нем отмечается порядок прихода на работу, через день, каждый день, и так далее. Теперь я хочу, чтобы было соединение со вторым регистром, и в рещультате брались только дни, отмеченные во втором регистре, то есть из двух дней только 1. Щас тупо берет из Календаря. Мое изменение (ниже) приводит к переполнению памяти.


ВЫБРАТЬ
   |        ИнтересующиеСотрудники.Сотрудник КАК Сотрудник,
   |        ИнтересующиеСотрудники.Должность КАК Должность,
   |        КалендарныеГрафики.ДатаГрафика КАК ДатаГрафика,
   |        КалендарныеГрафики.Календарь КАК Календарь
   |    ИЗ
   |        ИнтересующиеСотрудники КАК ИнтересующиеСотрудники
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
   |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
   |                ПО (ГрафикиРаботы.ГрафикРаботы.Календарь = КалендарныеГрафики.Календарь)
   |            ПО (ИСТИНА)
   |    ГДЕ
   |        КалендарныеГрафики.Календарь = &Календарь
   |        И КалендарныеГрафики.ДатаГрафика МЕЖДУ &ДатаНачала И &ДатаОкончания
   |        И КалендарныеГрафики.ДеньВключенВГрафик) КАК СотрудникКалендарь
   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
   |            &ДатаНачала КАК Период,
   |            СотрудникиСрезПоследних.Сотрудник КАК Сотрудник,
   |            СотрудникиСрезПоследних.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
   |            СотрудникиСрезПоследних.Должность КАК Должность,
   |            СотрудникиСрезПоследних.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок
   |        ИЗ
   |            РегистрСведений.Сотрудники.СрезПоследних(
   |                    &ДатаНачала,
   |                    Организация = &Организация
   |                        И СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК СотрудникиСрезПоследних
   |
1 Конфигуратор1с
 
27.07.12
12:33
ПО (ИСТИНА) - это что за фигня?
2 ilqar89
 
27.07.12
12:34
я сам не догнал, типо все наверное
3 Конфигуратор1с
 
27.07.12
12:34
и вообще нифигна не понятно что ты хочешь
4 ilqar89
 
27.07.12
12:34
Этот кусок

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
   |                ПО (ГрафикиРаботы.ГрафикРаботы.Календарь = КалендарныеГрафики.Календарь)

мой
5 Конфигуратор1с
 
27.07.12
12:35
без обид но ВЫБРАТЬ
   |        ИнтересующиеСотрудники.Сотрудник КАК Сотрудник,
   |        ИнтересующиеСотрудники.Должность КАК Должность,
   |        КалендарныеГрафики.ДатаГрафика КАК ДатаГрафика,
   |        КалендарныеГрафики.Календарь КАК Календарь
   |    ИЗ
   |        ИнтересующиеСотрудники КАК ИнтересующиеСотрудники
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
   |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
   |                ПО (ГрафикиРаботы.ГрафикРаботы.Календарь = КалендарныеГрафики.Календарь)
   |            ПО (ИСТИНА) - полный бред, судя из поставленной цели
6 ilqar89
 
27.07.12
12:38
хочу чтобы приходили не дни отмеченные в календаре (там отмечены все как рабочие), а дни отмеченные в графике работ. например, есть 2 сторожа, они работают 1 день полностью, а второй день отдыхают, посменно.
Все дни в календаре рабочие, у них нет выходных, когда смена, тогда и выходят. Я в графике им поставил, а этот запрос читает из календаря, а так как в календаре все дни рабочие, он и возвращает все дни, но мне же не это нужно!
7 ilqar89
 
27.07.12
12:39
сорри, один сторож работает, др отдыхает, на следующий день наоборот
8 ilqar89
 
27.07.12
12:42
по (истина) уже было в родном запросе
9 ilqar89
 
27.07.12
12:48
пожалуйста помогите, очень нужно
10 hhhh
 
27.07.12
12:51
(9) ну поставьте ВНУТРЕННЕЕ СОЕДИНЕНИЕ. Зачем вы ЛЕВОЕ всобачили?
11 ilqar89
 
27.07.12
12:52
вместо какого левое? 1 или 2? наверное 2
12 ilqar89
 
27.07.12
12:54
переполнение памяти при внутреннем соединении, программа вылетает с сообщением недостаточно памяти
13 ilqar89
 
27.07.12
13:10
родной код запроса:

Запрос.Текст =
   "ВЫБРАТЬ
   |    СотрудникиСрезПоследних.Сотрудник КАК Сотрудник,
   |    СотрудникиСрезПоследних.Должность КАК Должность
   |ПОМЕСТИТЬ ИнтересующиеСотрудники
   |ИЗ
   |    РегистрСведений.Сотрудники.СрезПоследних(&ДатаНачала, Организация = &Организация) КАК СотрудникиСрезПоследних
   |ГДЕ
   |    СотрудникиСрезПоследних.СтруктурнаяЕдиница = &СтруктурнаяЕдиница
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    Сотрудники.Сотрудник,
   |    Сотрудники.Должность
   |ИЗ
   |    РегистрСведений.Сотрудники КАК Сотрудники
   |ГДЕ
   |    Сотрудники.Организация = &Организация
   |    И Сотрудники.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
   |    И Сотрудники.СтруктурнаяЕдиница = &СтруктурнаяЕдиница
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    СотрудникКалендарь.Сотрудник КАК Сотрудник,
   |    СотрудникКалендарь.Должность КАК Должность,
   |    СотрудникКалендарь.ДатаГрафика КАК ДатаГрафика,
   |    Сотрудники.Период КАК Период,
   |    ВЫБОР
   |        КОГДА Сотрудники.СтруктурнаяЕдиница = &СтруктурнаяЕдиница
   |                И Сотрудники.Должность = СотрудникКалендарь.Должность
   |            ТОГДА 8 * Сотрудники.ЗанимаемыхСтавок
   |        ИНАЧЕ 0
   |    КОНЕЦ КАК Часов,
   |    ВЫБОР
   |        КОГДА Сотрудники.СтруктурнаяЕдиница = &СтруктурнаяЕдиница
   |                И Сотрудники.Должность = СотрудникКалендарь.Должность
   |            ТОГДА 1
   |        ИНАЧЕ 0
   |    КОНЕЦ КАК Дней
   |ИЗ
   |    (ВЫБРАТЬ
   |        ИнтересующиеСотрудники.Сотрудник КАК Сотрудник,
   |        ИнтересующиеСотрудники.Должность КАК Должность,
   |        КалендарныеГрафики.ДатаГрафика КАК ДатаГрафика,
   |        КалендарныеГрафики.Календарь КАК Календарь
   |    ИЗ
   |        ИнтересующиеСотрудники КАК ИнтересующиеСотрудники
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
   |            ПО (ИСТИНА)
   |    ГДЕ
   |        КалендарныеГрафики.Календарь = &Календарь
   |        И КалендарныеГрафики.ДатаГрафика МЕЖДУ &ДатаНачала И &ДатаОкончания
   |        И КалендарныеГрафики.ДеньВключенВГрафик) КАК СотрудникКалендарь
   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
   |            &ДатаНачала КАК Период,
   |            СотрудникиСрезПоследних.Сотрудник КАК Сотрудник,
   |            СотрудникиСрезПоследних.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
   |            СотрудникиСрезПоследних.Должность КАК Должность,
   |            СотрудникиСрезПоследних.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок
   |        ИЗ
   |            РегистрСведений.Сотрудники.СрезПоследних(
   |                    &ДатаНачала,
   |                    Организация = &Организация
   |                        И СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК СотрудникиСрезПоследних
   |        
   |        ОБЪЕДИНИТЬ ВСЕ
   |        
   |        ВЫБРАТЬ
   |            Сотрудники.Период,
   |            Сотрудники.Сотрудник,
   |            Сотрудники.СтруктурнаяЕдиница,
   |            Сотрудники.Должность,
   |            Сотрудники.ЗанимаемыхСтавок
   |        ИЗ
   |            РегистрСведений.Сотрудники КАК Сотрудники
   |        ГДЕ
   |            Сотрудники.Организация = &Организация
   |            И Сотрудники.Период МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, 1) И &ДатаОкончания) КАК Сотрудники
   |        ПО СотрудникКалендарь.Сотрудник = Сотрудники.Сотрудник
   |            И СотрудникКалендарь.ДатаГрафика >= Сотрудники.Период
   |
   |УПОРЯДОЧИТЬ ПО
   |    Сотрудник,
   |    Должность,
   |    ДатаГрафика,
   |    Период УБЫВ
   |ИТОГИ ПО
   |    Сотрудник,
   |    Должность,
   |    ДатаГрафика";
14 ilqar89
 
27.07.12
13:17
какие нибудь идеи есть?
15 hhhh
 
27.07.12
13:44
(14) а что конкретно нужно? Мы например использовали документ ИндивидуальныеГрафикиРаботы для таких случаев. То есть в конфигуратор не влезали, никаких запросов не переписывали.
16 rasswet
 
27.07.12
13:48
раздели на несколько ВТ..и тогда соединяй уже подготовленные данные. имхо.
17 ilqar89
 
27.07.12
14:42
тема закрыта, я программно сделал