|   |   | 
| 
 | Замечательный запрос | ☑ | ||
|---|---|---|---|---|
| 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) Есть, но пока я еще только учусь, поэтому такие несложные вещи должен научиться собирать =)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |