Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 21:43

Объясните "Конструкция "В""

Автор макс, 27 июл 2010, 10:55

0 Пользователей и 1 гость просматривают эту тему.

макс

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


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

Myti

Номенклатура В (Дальше запрос) - имеется ввиду не одну единицу номенклатуры,а несколько,,, все что сформировал запросец

макс

как я понял он выбирает только по номенклатурным наименованиям без повторений

Slin

Этот фрагмент присоединяет остатки на определенный момент для номенклатуры из документа
таким образом "В" означает, что выражение слева от "В" должно входить в множество значений полученных справа от "В"
если конкретно:
слева от "В" - множество всей номенклатуры, т.е. весь справочник
справа - результат вложенного запроса - номенклатура документа
в результате применения "В" - номенклатура, упомянутая в документе.

Slin

Цитата: макс от 27 июл 2010, 11:20
как я понял он выбирает только по номенклатурным наименованиям без повторений
Вложенный запрос выбирает номенклатуру в документе без повторений - ключевое слово "РАЗЛИЧНЫЕ"

Myti


макс

как работает ДЛЯ ИЗМЕНЕНИЯ?

Slin

ДЛЯ ИЗМЕНЕНИЯ просто блокирует соответствующую таблицу до окончания транзакции
т.е. другие программы (профедуры и функции) не могут изменить данную таблицу, пока не закончится данная процедура

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск