#0
by NikolayNiko
Здравствуйте! Пожалуйста подскажите, как в параметрах виртуальной таблицы периодического регистра сведений установить отбор так, чтобы получать только последнюю запись по одному конкретному измерению. Всего измерений 4. Один ресурс. Ресурс не заполнен.
#5
by mistеr
Виртуальная таблица СрезПоследних возвращает записи сразу по всем измерениям. Если нужно только по одному, то кроме задания параметров ВТ, нужно дополнительно упорядочить по периоду (по убыванию) и взять ПЕРВЫЕ 1.
#6
by Vladal
так уже брать и не виртуальную а обычную. озвучь задачу полностью. Может там срез последних на каждую дату, или статус договора на момент времени и т.д. И т.п. Не стесняйся, здесь как у доктора — чем четче анамнеза, тем точней диагноз.
#8
by Cyberhawk
"установить отбор так, чтобы получать только последнюю запись по одному конкретному измерению" // Покажи несколько последних записей таблицы и что должно быть на выходе
#10
by NikolayNiko
Если конкретнее, то в периодическом регистре сведений есть измерения: Организация, контрагент, договор; и одно измерение: Аннулировано. Измерение в регистре вообще не заполняется. Мне нужно получить последнюю запись по договору. Вот ломаю голову по незнанию, как же получается эта последняя запись, когда делаешь запрос с помощью конструктора. Да знаю, что надо читать и учиться или вызывать программиста, но надо сделать самому и сегодня же.
#15
by NikolayNiko
Ведь можно как-то просто в параметрах вирт таблицы указать измерение по которому должен идти поиск последнего. Именно не по всем измерениям, а по одному только. Как это описать, мне только это нужно. Нигде не могу найти
#18
by jsmith82
Аннулировано надо делать измерением, а не ресурсом и указывать в отборе НЕ Аннулировано
#20
by AlvlSpb
Автору надо получить последнюю запись по конкретному договору? ВЫБРАТЬ ПЕРВЫЕ 1 // поля выбора Или У меня послепраздничный синдром и я не понял задачи?
#22
by Рэйв
Для того чтобы по одному измерению срез последних дало его только одно и надо поставить в Выбрать. Сколько измерений будет выбрано - столько вариантов разреза и получишь.
#23
by youalex
Срез последних всегда получает все возможные комбинации измерений, и состав полей выборки (секция ВЫБРАТЬ) тут не играет.
#24
by NikolayNiko
Нет, не по конкретному документу, а по всем. Например если есть две записи с одним договором, то взять последний. То есть как сказал , не возможно?
#26
by МимохожийОднако
Тебе нужен листочек бумажки,если нет экселя. Выпиши в него табличку с данными и подумай. Пока каша в голове - программу не составишь.
#27
by Salimbek
Надо что-то типа такого: (Выбрать Макс(Период) КАК МПериод, Договор КАК МДоговор ИЗ РегистрСведений.ТвойРегистр ГДЕ Договор=&Договор) Как Выборка ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТвойРегистр КАК Данные ПО МПериод=Данные.Период И МДоговор=Данные.Договор
#28
by youalex
У тебя в регистре измерения Организация, контрагент, договор. Условие "Договор = &Договор" в параметрах среза фильтрует по договору, это то что тебе и нужно. Контрагент - это скорее всего справочник Контрагенты, который является владельцем спр. Договоры, т.е. Контрагент = Договор.Владелец. Остается Организация - если у тебя в регистре по выбранному договору одна организация, то будет одна строка, если две - то две строки, т.е. будут выбираться все комбинации с учетом условия Договор = &Договор. Более правильным будет указать в условиях все измерения, т.е. ИЗ РегистрСведений.НашРегистр.СрезПоследних(, Договор = &Договор И Контрагент = &Контрагент И Организация = &Организация) ) В параметры запроса пихаешь Договор (он у тебя уже есть), Контрагент (Договор.Владелец) и Организацию (нужно понять откуда ее взять, если она в регистре не заполнена, то просто Справочники.Организация.ПустаяСсылка)
#33
by NikolayNiko
и По моему что-то не то. ГДЕ Договор=&Договор. Если правильно понимаю будет браться только определенный договор, а мне как я уже писал нужны все. Вот: Структура регистра: Период|Регистратор|Номер|Организация|Контрагент|Договор|Условия|Аннулировано Например: 01.01.16|Регистр1|Номер|Орг1|Контр1|Договор1|Усл1|Ложь 01.02.16|Регистр1|Номер|Орг1|Контр1|Договор1|Усл2|Ложь 01.02.16|Регистр1|Номер|Орг1|Контр1|Договор2|Усл3|Ложь 01.03.16|Регистр1|Номер|Орг1|Контр1|Договор2|Усл4|Ложь Из этого хочу получить: 01.02.16|Регистр1|Номер|Орг1|Контр1|Договор1|Усл2|Ложь 01.03.16|Регистр1|Номер|Орг1|Контр1|Договор2|Усл4|Ложь
#34
by NikolayNiko
Создаю вложенный запрос. Беру два поля, Договор и период. Группирую договора по МаксПериоду. Хорошо, но как в основном запросе обратиться к полю условие если я его не выбирал во вложенном запросе. А если я его выбираю во вложенном - тогда оно попадает в группировку и результат уже не тот. Что за ... ?! Где лыжи не едут?!
#35
by Михаил Козлов
Если правильно понял: - выгрузить во временную таблицу договор и МАКС(Период) из таблицы регистра; - соединить таблицу регистра с временной таблицей по договору и периоду. Поле Условие получите из таблицы регистра, если соединение по договору и периоду дает единственную запись в таблице регистра.
#36
by Сти
Будет множить записи, если на один договор с тем же самым периодом будут записи для других организаций и контрагентом. Вообще можно сделать с помощью скореллированного запроса: [1C]ВЫБРАТЬ РегистрСрезПоследних.ДоговорКонтрагента ИЗ СамыйОфигенныйРегистрКАК РегистрСрезПоследних ГДЕ (РегистрСрезПоследних.Организация, РегистрСрезПоследних.Контрагент) В (ВЫБРАТЬ ПЕРВЫЕ 1 ВспомогательныйСрез.Организация, ВспомогательныйСрез.Контрагент ИЗ СамыйОфигенныйРегистрКАК ВспомогательныйСрез ГДЕ ВспомогательныйСрез.ДоговорКонтрагента = РегистрСрезПоследних.ДоговорКонтрагента И ВспомогательныйСрез.Период В (ВЫБРАТЬ МАКСИМУМ(ЕщеОдинСрез.Период) ИЗ СамыйОфигенныйРегистрКАК ЕщеОдинСрез ГДЕ ЕщеОдинСрез.Организация = ВспомогательныйСрез.Организация И ЕщеОдинСрез.Контрагент = ВспомогательныйСрез.Контрагент И ЕщеОдинСрез.ДоговорКонтрагента = ВспомогательныйСрез.ДоговорКонтрагента))[1C] Множить записи не будет, тут проблема только одна - если по всем трем измерениям есть записи с одинаковым периодом, то выберет какую-то одну из этих трех, но какую - один SQL знает. С двумя измерениями было бы проще, используя "упорядочить по Период Убыв" во вложенном, но, увы - условие на соответствие списка списку не дает сортировать.
#38
by Михаил Козлов
Конфа не озвучена, но в типовых у договора 1 владелец (Контрагент) и 1 организация. Срез последних, мне кажется, вообще ни при чем.
#39
by Сти
Да это понятно, но каких только чудес не встречалось в дописках-переделках. И 20 измерений в регистре накопления, а ведь это больше миллиона итогов. И периодический регистр сведений с одним из измерений в виде строки ТЧ документа (видимо, чтобы номенклатуру можно было повторить в доке, что было в нем абсолютно противопоказано). И...
#40
by NikolayNiko
Спасибо! Так и сделал. Все окей! Тоже большое списибо. Конфа не типовая, но описанных сюрпризов теоретически быть не должно. Да и вообще спасибо всем кто откликнулся!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- 1С Такси. Переименовать "Главное" (он же Рабочий стол, он же Quick Menu).
- Ка отключить прокрутку на форме
- Не отрабатывает команда certutil в WshShell
- Как убрать всплывающее окошко в нижнем правом углу?
- Значение строки поиска динамического списка
- КД2 - как при переносе попросить базу-приемник провести перенесенные документы?
- Ребилд RAID 1. Разные SATA диски. Нужен совет.
- Работа в ПривилегированномРежиме у пользователя с ограничением прав.
- Кто использует 1С:EDT
- v7: Новые графы в книге продаж, разные для разных строк счета-фактуры
- УТ Версия 11.4.1.241
- КД 2.0 Поиск ИЛИ
- Рабочая область начальной страницы
- Как сделать, чтобы подвал считал итоги по тч на форме? УФ83
- Как заставить обновиться внешний отчет в УТ11.3?
- v7: тис 944 обновление 20.10.17
- Доходы ИП на ОСНО не попадают в КУДиР
- Ищу шрифт ККМ Штрих-ФР
- Почему не срабатывает процедура ОбработкаРасшифровки() в модуле формы.
- нужен совет по борьбе со спамом