Имя: Пароль:
1C
1С v8
Не пойму вложенные запросы
0 laby1
 
18.02.16
14:50
Какая польза от вложенных запросов, если она мне дает ошибку что во вложенном запросе не знает значения из внешнего

Вот:

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

ТалоныНаМолокоВыдачаСотрудники.Сотрудник она не знает???

Тогда какой смысл вложенного запроса
1 CountR
 
18.02.16
14:54
Внешний запрос выбирает данные из внутреннего, а не наоборот.
2 Dotoshin
 
18.02.16
14:54
(0) А теперь простыми русским словами расскажи, что должен сделать этот запрос?
3 Dmitry1c
 
18.02.16
14:54
(0) вложенные запросы - скорее рудимент, чем полезная вещь. Лучше использовать пакетные запросы (более новые).

Вложенные запросы сейчас остаются актуальными лишь в динамических списках, и то, в в 8.3.8 обещали пакетные
4 Ёпрст
 
18.02.16
14:54
зачем там вообще кросс джоин с подзапросом ?
5 laby1
 
18.02.16
14:57
(2) Ну я хотел как в SQL написать там можно так ... Я хочу для каждого дня месяца сделать 31 вложенный запрос чтоб по каждому дню он мне зафигачил должность и подразделение
6 laby1
 
18.02.16
14:58
(3) Пакетные запросы както сложно еще мне понять так вроде понимаю, но пока еще ни одного не написал, боюсь в окнах потеряться ...
7 Ёпрст
 
18.02.16
14:58
(5) ты не поверишь, но даже в sql ты бы это не написал как в (0) - там же бредятина
8 laby1
 
18.02.16
15:00
(7) не конструктивно
9 laby1
 
18.02.16
15:07
ау
10 laby1
 
18.02.16
15:10
может надо временную таблицу сначала сделать, я только не помню если сначала временную сделать а потом из нее брать это и будет пакет запросов?
11 laby1
 
18.02.16
15:10
что-то не доучил, каша в голове, сорри
12 laby1
 
18.02.16
15:18
А хранимые процедуры, функции есть в 1С?
13 qwasqu
 
18.02.16
15:26
Многие программеры, которые не сталкивались с 1С думают, что в два счета на 1С кодить научатся.
14 Ёпрст
 
18.02.16
15:33
(12) в 7.7 есть, в снеговике, только временные таблички
15 qwasqu
 
18.02.16
15:35
(14) Думаю, что это что-то типа менеджервременныхтаблиц
16 Ёпрст
 
18.02.16
15:38
(15) нет
17 qwasqu
 
18.02.16
15:39
(16) Дык там же взял, создал табличку, из нее еще таблички, потом первые уничтожил, а последними пользуешься где хочешь.
18 laby1
 
18.02.16
15:40
(13) Кодить научиться не проблема, а вот кодить оптимально и быстро, чтоб запросом получать по максимуму, многие не разбираются глубоко и кодят в итоге не эффективно
19 qwasqu
 
18.02.16
15:42
(18) Красавчег!
20 f_vadim
 
18.02.16
15:44
вложенные запросы - нужная вещь.
на каждый чих создавать временные таблицы - тупость.
21 Ёпрст
 
18.02.16
15:46
(17) как это коррелирует с вопросом о хранимых процедурах и функциях ?
22 fishb1
 
18.02.16
16:12
(20) А как насчет вложенного запроса к временной таблице?
23 f_vadim
 
18.02.16
16:27
(22) ситуации - они разные бывают
24 Alexandr_U1982
 
18.02.16
16:31
(5) Зачем тебе по каждому дню подразделение и должность?
(18) Ты считаешь, что в (0) "эффективный" запрос?
25 laby1
 
18.02.16
16:40
(24) В (0) это пример для понимая топика
26 laby1
 
18.02.16
16:41
(24) Чтоб узнать положено ли молоко
27 Провинциальный 1сник
 
18.02.16
16:44
(20) Джойн с вложенным запросом может весьма прикольно выполняться несколько часов вместо пары секунд, когда оптимизатор ошибочно подумает "а, фигня, тут наверное пара строк, давай его нестед лупом джойнить") Использование временных таблиц намного предсказуемее - размер таблиц известен заранее.
28 Alexandr_U1982
 
18.02.16
16:47
(26) От чего зависит положено ли молоко сотруднику?

Если действительно нужно получить на каждый день подразделение и должность, можно пойти таким путем:
1. Получить всех различных сотрудников из табеля.
2. Для каждого сотрудника получить период работы в  подразделении на должности в пределах периода табеля.
3. Соединить табель с таблицей, в которой периоды работы сотрудников.
29 f_vadim
 
18.02.16
16:51
(27) я не предлагал пользоваться только вложенными запросами. я против бездумного использования вообще чего бы то ни было, как предлагается в (3).
30 f_vadim
 
18.02.16
16:52
кстати в про пакетные в динамических списках - их зарелизили так, что порционное считывание один фик только по основной таблице. так что тормозов словить - только так.
31 Alexandr_U1982
 
18.02.16
16:55
(26) С какой целью нужно знать положено ли молоко сотруднику? Это заполнение ТЧ, формирование печатной формы, проведение документа, расчет чего-то?

Вообще вместо документа табель, лучше использовать регистр сведений "ГрафикиРаботыПоВидамВремени".

А если на сотрудника не ввели табель, то не нужно определять положено ли ему молоко?
32 laby1
 
18.02.16
17:05
(28) в типовой конфигурации структура табелей не по феншую, отсюда и такой гемор
33 laby1
 
18.02.16
17:06
(31) заполнение тч
34 laby1
 
18.02.16
17:06
ГрафикиРаботыПоВидамВремени будем посмотреть
35 laby1
 
18.02.16
17:08
(31) если нет табеля нет молока, верно, нет зп кстати тоже
36 su_mai
 
18.02.16
17:09
(18) От шта крисис животворящий делает с нами, о как...
37 laby1
 
18.02.16
17:13
(36) да, нельзя уже штаны просиживать, хотя многие этого не понимают к сожалению
38 Alexandr_U1982
 
18.02.16
17:18
(32) Не знаю, что у вас в табеле изменено. Но данные нужно брать не из документа, а из регистра, по которому документ сделал движения.

Типовой табель делает движения по регистру накопления "РабочееВремяРаботниковОрганизаций" и регистру сведений "ГрафикиРаботыПоВидамВремени". В зависимости от того, в какой из регистров упали сведения о молоке (или все же об отработанном времени?), оттуда их и нужно собирать.

Регистр сведений "ГрафикиРаботыПоВидамВремени" также содержит информацию и о плановом рабочем времени из графиков работы (в том числе и индивидуальных), поэтому по нему можно собрать информацию о плановом рабочем времени в случае, если не введен табель.
39 laby1
 
18.02.16
17:23
(38) да, я с Вами согласен. Мне достался код от прошлого программиста, в нем есть какаято ошибка, вот я и переделываю теперь его, с тем чтобы исправить и оптимизировать. Завтра буду смотреть что там по регистрам. В регистрах по идее должно быть по феншую
40 su_mai
 
18.02.16
18:54
(37) Чем раньше занимался до 1С? Если не секрет конечно...
41 ObjectRelation Model
 
18.02.16
19:00
ТалоныНаМолокоВыдача это круто я считаю
42 Гобсек
 
19.02.16
08:14
Небольшой пакетный запрос можно отладить влет при помощи консоли запросов. Посмотрел содержимое промежуточных таблиц и все понятно. Во вложенном запросе запутаться весьма легко. Даже в небольшом.
43 laby1
 
19.02.16
08:49
(40) Delphi-Firebird, Delphi-MS-SQL
44 su_mai
 
19.02.16
09:22
(43) Тогда в ближайшее время: "О сколько нам открытий чудных Готовит просвещенья дух"...

По теме вопроса: в 1С никакие поля внешнего запроса не доступны во вложенном запросе, кроме случая корелированного подзапроса по условию, те в условии можно использовать поля внешнего запроса.

В 1С нет чистого SQL, есть свой язык запросов основанный на SQL, но не все приемы SQL применимы в 1С.

ПС
Рекомендую не только Мисту посещать но и Инфостарт, огромное количество полезных статей и решений.
45 Dotoshin
 
19.02.16
09:26
(43) Ну тогда читай ЖКК, Радченко, смотри Гилева, Чистова, Насипова и далее по списку.
Еще желательно найти человека, которому можно вопросы задавать.
И успехов тебе в этом нелегком деле.:)
46 Alexandr_U1982
 
19.02.16
10:14
(42) Да и большой пакетный запрос удобно отлаживать в консоли запросов
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший