Получить количество присоединенных файлов в справочнике
Коллеги, доброго времени суток!
Возник вопрос у меня.
Необходимо получить количество файлов кроме последних по дате за весь период. То есть в карточке элемента во вкладке "Файлы", могут быть несколько одноименных файлов, но различны по дате изменения.
Я сделал запрос, он выводит количество, но как говорят архитекторы, я кое-что не доработал. Возможно у вас есть идея.
Буду благодарен за ваши советы.
Спасибо!
Возник вопрос у меня.
Необходимо получить количество файлов кроме последних по дате за весь период. То есть в карточке элемента во вкладке "Файлы", могут быть несколько одноименных файлов, но различны по дате изменения.
Я сделал запрос, он выводит количество, но как говорят архитекторы, я кое-что не доработал. Возможно у вас есть идея.
Буду благодарен за ваши советы.
Спасибо!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.Ссылка,
| МАКСИМУМ(БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ДатаСоздания) КАК ДатаСоздания
|ИЗ
| Справочник.БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы КАК БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы
|ГДЕ
| БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла В(&СТ_ХФ_ВидПрисоединенногоФайла)
| И БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ВладелецФайла,
| БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла,
| БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.Ссылка";
МассивВП = Новый Массив;
МассивВП.Добавить(Справочники.СТ_ХФ_ВидыПрисоединенныхФайлов.ГруппыНоменклатурыВКаталоге_CAD_REVIT);
МассивВП.Добавить(Справочники.СТ_ХФ_ВидыПрисоединенныхФайлов.ГруппыНоменклатурыВКаталоге_Изображение);
МассивВП.Добавить(Справочники.СТ_ХФ_ВидыПрисоединенныхФайлов.ГруппыНоменклатурыВКаталоге_СхемаГабаритыСветильника);
МассивВП.Добавить(Справочники.СТ_ХФ_ВидыПрисоединенныхФайлов.НайтиПоКоду("000000143"));
МассивВП.Добавить(Справочники.СТ_ХФ_ВидыПрисоединенныхФайлов.НайтиПоКоду("000000046"));
Запрос.УстановитьПараметр("СТ_ХФ_ВидПрисоединенногоФайла", МассивВП);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Сообщить(ВыборкаДетальныеЗаписи.Количество());
ПоказатьПо теме из базы знаний
Найденные решения
(11) Вот окончательный запрос:
ВЫБРАТЬ
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.Наименование,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ДатаСоздания) КАК КоличествоФайлов,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ВладелецФайла,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла
ИЗ
Справочник.БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы КАК БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы
ГДЕ
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла В(&СТ_ХФ_ВидПрисоединенногоФайла)
И БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ
СГРУППИРОВАТЬ ПО
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.Наименование,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ВладелецФайла,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ДатаСоздания) > 1
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Наверно так:
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ВладелецФайла) КАК Количество
ИЗ
Справочник.БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы КАК БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы
ГДЕ
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла В(&СТ_ХФ_ВидПрисоединенногоФайла)
И БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ
И количество файлов вам надо в разрезе владельца или общее кол-во? И я так понимаю, что задание у вас тестовое? Просто за конструкцию:
в продакшине грозит отрывание рук.
СТ_ХФ_ВидыПрисоединенныхФайлов.НайтиПоКоду("000000046")
в продакшине грозит отрывание рук.
(8) Смотрите:
1.
Вам просто выдаст наибольшую дату из возможных.
2. Группировку по ссылке надо убрать, вам правильно сказали, что она всегда уникальная будет.
Что-то я тоже так с ходу не могу понять, как выполнить вашу задачу (трудно когда нет возможности "пощупать" конфигурацию). Мыслю в сторону пакетного запроса. В первом получаем наиболее новые файлы для каждого владельца (примерно так у вас и сделано). Вторым запросом делаем как в (5) нос условием на исключение файлов полученных в первом запросе. Делаем группировку по владельцу, и в цикле выводим результат по каждому из владельцев. Но это грубо. Может быть, кто-то из коллег предложит что-то более простое и красивое. Я что-то пока не могу сообразить.
1.
МАКСИМУМ(БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ДатаСоздания) КАК ДатаСоздания
Вам просто выдаст наибольшую дату из возможных.
2. Группировку по ссылке надо убрать, вам правильно сказали, что она всегда уникальная будет.
Что-то я тоже так с ходу не могу понять, как выполнить вашу задачу (трудно когда нет возможности "пощупать" конфигурацию). Мыслю в сторону пакетного запроса. В первом получаем наиболее новые файлы для каждого владельца (примерно так у вас и сделано). Вторым запросом делаем как в (5) нос условием на исключение файлов полученных в первом запросе. Делаем группировку по владельцу, и в цикле выводим результат по каждому из владельцев. Но это грубо. Может быть, кто-то из коллег предложит что-то более простое и красивое. Я что-то пока не могу сообразить.
(8)
Всё ещё не понятно. Такая постановка задачи не имеет смысла. То есть, даты файлов никак не участвуют в её решении, которое будет сводиться к:
Количество файлов по владельцу, удовлетворяющих условию - 1.
А ещё вначале вы писали "кроме последних по дате за весь период", что противоречит этому уточнению.
если у владельца 3 файла с разными датами, то нужно получить количество последних двух файлов
Всё ещё не понятно. Такая постановка задачи не имеет смысла. То есть, даты файлов никак не участвуют в её решении, которое будет сводиться к:
Количество файлов по владельцу, удовлетворяющих условию - 1.
А ещё вначале вы писали "кроме последних по дате за весь период", что противоречит этому уточнению.
(11) Вот окончательный запрос:
ВЫБРАТЬ
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.Наименование,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ДатаСоздания) КАК КоличествоФайлов,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ВладелецФайла,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла
ИЗ
Справочник.БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы КАК БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы
ГДЕ
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла В(&СТ_ХФ_ВидПрисоединенногоФайла)
И БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ
СГРУППИРОВАТЬ ПО
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.Наименование,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ВладелецФайла,
БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.СТ_ХФ_ВидПрисоединенногоФайла
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БИТ_СТ_ГруппыНоменклатурыВКаталогеПрисоединенныеФайлы.ДатаСоздания) > 1
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот