|
Замечательный запрос | ☑ | ||
---|---|---|---|---|
0
Labrador
11.04.13
✎
11:37
|
Суть вопроса: как можно запросом вытащить все документы определенного вида.
Пример: Мне нужно ренумерацию, для этого я выбираю например "Реализацию Товаров и Услуг" запросом достаю все необходимые документы. Этим же запросом например я захочу вытащить уже позже "ТребованияНакладная" изменить тот же самый реквизит. Это реально? Или для каждого конкретного вида необходимо будет формировать отдельный запрос. |
|||
1
Labrador
11.04.13
✎
11:38
|
Есть подозрение что можно это простым перебором по метаданным сделать, но скорость будет - ужасная....
|
|||
2
Flyd-s
11.04.13
✎
11:39
|
ВЫБРАТЬ
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ |
|||
3
В тылу врага
11.04.13
✎
11:39
|
этим же, но позже - оригинально
|
|||
4
Мыш
11.04.13
✎
11:40
|
Запрос.Текст
|
|||
5
Labrador
11.04.13
✎
11:43
|
Прощу прощения, если непонятно объясняю =)
(3) Имелось ввиду что вид документа через параметр в запросе будет указываться=) |
|||
6
Serg_1960
11.04.13
✎
11:43
|
(зануда) Пока автор не сказал про период "ренумерации" и ему не сказали о периоде автонумерации - нет смысла спешить отвечать.
|
|||
7
fisher
11.04.13
✎
11:44
|
(0) Текст запроса - это всего лишь текст, как ни странно. Просто заменяй в нем имя базовой таблицы и всё.
|
|||
8
Мыш
11.04.13
✎
11:44
|
(5) Тип параметра какой? )
Не проще ли так: Запрос.Текст=СтрЗаменить(Запрос.Текст,"ВидДок1","ВидДок2"); |
|||
9
ДенисЧ
11.04.13
✎
11:45
|
Например
ТекстЗАпроса = " ВЫБРАТЬ МойРеквизит ИЗ Документ.%ВидДокумента% ГДЕ условия"; И потом стрЗаменить("%ВидДокумента%", НужныйВид) |
|||
10
Мыш
11.04.13
✎
11:45
|
(6) Эти грабли оставили на закуску. А ты всё испортил!! )
|
|||
11
Labrador
11.04.13
✎
11:48
|
(7),(8),(9) Спасибо =) Простое оказалось решение =)
(6), (10) А можно по-подробнее? |
|||
12
fisher
11.04.13
✎
11:48
|
(9) Лучше все-таки реальный вид документа в запросе. Не так красиво, зато дорабатывать удобнее.
|
|||
13
GANR
11.04.13
✎
11:49
|
Построить запрос так v8: Перебор всех документов как в 77. Какой аналог? + в секции ГДЕ условие ТИПЗНАЧЕНИЯ(Ссылка) = &ТипДокумента :). Но не советую - запрос будет универсальный, но ресурсоемкий, лучше динамически формировать, как в (9).
|
|||
14
Serg_1960
11.04.13
✎
11:53
|
(6) (не совсем в тему)
ПериодГод = Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Год; ПериодКвартал = Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Квартал; ПериодМесяц = Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Месяц; ПериодДень = Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.День; БезПериода = Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Непериодический; Сообщить("Документы: контроль уникальности номера и проверка даты"); Для Каждого Объект ИЗ Метаданные.Документы Цикл Состояние(Объект.Синоним); Если Объект.КонтрольУникальности Тогда Имя = Объект.Имя; Период = Объект.ПериодичностьНомера; Если Период = ПериодГод Тогда Диапазон = "ГОД"; ИначеЕсли Период = ПериодКвартал Тогда Диапазон = "КВАРТАЛ"; ИначеЕсли Период = ПериодМесяц Тогда Диапазон = "МЕСЯЦ"; ИначеЕсли Период = ПериодДень Тогда Диапазон = "ДЕНЬ"; Иначе Диапазон = ""; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | "+Имя+".Номер КАК Номер, | КОЛИЧЕСТВО("+Имя+".Ссылка) КАК Количество |ИЗ | Документ."+Имя+" КАК "+Имя+" | |СГРУППИРОВАТЬ ПО | "+Имя+".Номер"+?(ЗначениеЗаполнено(Диапазон),", НАЧАЛОПЕРИОДА("+Имя+".Дата,"+Диапазон+")", "")+" | |ИМЕЮЩИЕ | КОЛИЧЕСТВО("+Имя+".Ссылка) > 1"; Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Пока Выборка.Следующий() И Выборка.Количество > 1 Цикл Сообщить("Неуникальный номер (" + Выборка.Номер + ") в " + Объект.Синоним); КонецЦикла; КонецЕсли; КонецЕсли; ОбработкаПрерыванияПользователя(); КонецЦикла; |
|||
15
Labrador
11.04.13
✎
12:00
|
(14) Спасибо =) Буду разбираться=)
|
|||
16
Flyd-s
11.04.13
✎
12:03
|
Зачем для перенумерации изобретать велосипед? Есть же готовые обработки миллион штук
|
|||
17
Labrador
11.04.13
✎
12:04
|
(16) Есть, но пока я еще только учусь, поэтому такие несложные вещи должен научиться собирать =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |