Версия для печати темы (https://pro1c.org.ua/index.php?s=d44345cc39cc911c71ac8896118fd940&showtopic=41298)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Тонкости запроса

Автор: rodrigezrobert 25.10.17, 13:03

Здравствуйте!
Есть табличная часть "ТарифныеПланы" с реквизитами "ДатаНачалаДействияТП" и "НазваниеТарифногоПлана". Действующий тарифный план соответствует самой большой дате "ДатаНачалаДействияТП".
Как запросом выбрать все актуальные(действующие) тарифные планы, что бы не делать это в обработке результатов запроса?
Делаю так как указал внизу, но в результате выходят все тарифные планы, а нужно действующие.
Спасибо!

ВЫБРАТЬ
    СотрудникиДанныеКонтактов.Ссылка,
    СотрудникиДанныеКонтактов.КонтактныеДанные.Ссылка
ПОМЕСТИТЬ Сотрудники
ИЗ
    Справочник.Сотрудники.ДанныеКонтактов КАК СотрудникиДанныеКонтактов
ГДЕ
    СотрудникиДанныеКонтактов.ВидКонтакта.Ссылка = ЗНАЧЕНИЕ(Справочник.ВидыКонтактов.МобильныйРабочий)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    SimКартыТарифныеПланы.Ссылка,
    МАКСИМУМ(SimКартыТарифныеПланы.ДатаНачалаДействияТП) КАК ДатаНачалаДействияТП,
    SimКартыТарифныеПланы.ТарифныйПлан
ПОМЕСТИТЬ АктуальныеТарифныеПланы
ИЗ
    Справочник.SimКарты.ТарифныеПланы КАК SimКартыТарифныеПланы

СГРУППИРОВАТЬ ПО
    SimКартыТарифныеПланы.Ссылка,
    SimКартыТарифныеПланы.ТарифныйПлан
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Сотрудники.Ссылка,
    АктуальныеТарифныеПланы.ТарифныйПлан.Ссылка,
    АктуальныеТарифныеПланы.ДатаНачалаДействияТП
ИЗ
    Сотрудники КАК Сотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ АктуальныеТарифныеПланы КАК АктуальныеТарифныеПланы
        ПО Сотрудники.КонтактныеДанныеСсылка.Ссылка = АктуальныеТарифныеПланы.Ссылка

Автор: sava1 25.10.17, 13:37

Выбрать первые 1
.
.
Упорядочить по "Дата" УБЫВ

Автор: rodrigezrobert 25.10.17, 13:47

sava1 @ Сегодня, 14:37 * ,
Выбрало 1 самый новый Тарифный план из всех SimКарт, а мне нужно самый новый из каждой SimКарты, то есть самый новый для каждого элемента справочника.

Автор: Vidocq05 25.10.17, 13:53

rodrigezrobert @ Сегодня, 14:03 * ,

ВЫБРАТЬ
    SimКартыТарифныеПланы.Ссылка,
    МАКСИМУМ(SimКартыТарифныеПланы.ДатаНачалаДействияТП) КАК ДатаНачалаДействияТП,
    //SimКартыТарифныеПланы.ТарифныйПлан
ПОМЕСТИТЬ АктуальныеТарифныеПланы
ИЗ
    Справочник.SimКарты.ТарифныеПланы КАК SimКартыТарифныеПланы

СГРУППИРОВАТЬ ПО
    SimКартыТарифныеПланы.Ссылка,
   // SimКартыТарифныеПланы.ТарифныйПлан

Потом создаете еще одну временную таблицу. Берете АктуальныеТарифныеПланы и соединяете левым соединением с Справочник.SimКарты.ТарифныеПланы по Ссылка и ДатаНачалаДействияТП. Выбираете с Справочник.SimКарты.ТарифныеПланы: Ссылка, ДатаНачалаДействияТП, ТарифныйПлан. А дальше так как у Вас в запросе.

Автор: sava1 25.10.17, 14:00

Для всех

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


вместо регистр - таблица

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua