Имя: Пароль:
1C
1С v8
Запрос к документам по наличию реквизита
0 Скорпио_шка
 
15.05.13
11:01
Добрый день.
Нужна помощь, не могу понять как составить запрос.
Нужно выбрать непроведенные документы за определенный период, у которых есть реквизит (в шапке или в ТЧ) Справочник.СтатьиЗатрат...
1 1Сергей
 
15.05.13
11:02
сгенерировать текст запроса и выполнить его
2 Скорпио_шка
 
15.05.13
11:03
Для каждого Вид Из Метаданные.Документы Цикл
       Если ТекстЗапроса<>"" Тогда
           ТекстЗапроса=ТекстЗапроса+"
           |ОБЪЕДИНИТЬ ВСЕ";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса+"
       |ВЫБРАТЬ
       |ДокументВид.Ссылка КАК Документ,";
       ТекстЗапроса = ТекстЗапроса+"
       |"+ Символы.ПС + "    """ +Вид.Представление()+""" КАК Имя,";
       ТекстЗапроса=ТекстЗапроса+"
       |ДокументВид.Дата КАК ДатаДокумента
       //|ДокументВид.Номер КАК НомерДокумента
       |ИЗ Документ."+Вид.Имя+" КАК ДокументВид";
       ТекстЗапроса = ТекстЗапроса+"
       |ГДЕ  ДокументВид.Дата МЕЖДУ &ДатаНач И &ДатаКон
       | И ДокументВид.Проведен = ЛОЖЬ";
       
   КонецЦикла;
3 Скорпио_шка
 
15.05.13
11:04
Как-то так получилось, но как добавить условие по наличию реквизита?
4 Волшебник
 
15.05.13
11:04
циклом по метаданным составляешь список документов, потом создаёшь запрос типа:

Выбрать Ссылка
ИЗ
(
Выбрать Ссылка ИЗ Документ.ИмяДок1
Объединить Все
Выбрать Ссылка ИЗ Документ.ИмяДок2
) Как Доки
ГДЕ НЕ Ссылка.Проведен И Ссылка.Дата Между Дата1 и Дата2
5 NcSteel
 
15.05.13
11:04
Между прочем так в типовых структура подчиненности работает. Можно честно скопировать текст
6 1Сергей
 
15.05.13
11:06
(3) в реквизит в шапке, в таблице, где?
7 Скорпио_шка
 
15.05.13
11:07
И там , и там. Хотя бы с шапки начать, что ли
8 1Сергей
 
15.05.13
11:11
Для каждого Вид Из Метаданные.Документы Цикл
   Если Вид.Реквизиты.Найти("Автор1") = Неопределено Тогда
       Продолжить;
   КонецЕсли;
       Если ТекстЗапроса<>"" Тогда
           ТекстЗапроса=ТекстЗапроса+"
           |ОБЪЕДИНИТЬ ВСЕ";
       КонецЕсли;
...
9 Скорпио_шка
 
15.05.13
11:13
Спасибо!!!
10 NcSteel
 
15.05.13
11:15
&НаСервере
Процедура ДобавитьВТаблицуЗначенийОписаниеПолейПоиска(МетаданныеОбъекта, ОбластьПоиска, Таблица, ТипАбоненты, ИмяТаблицы)
   
   Для Каждого    ЭлементМетаданных Из МетаданныеОбъекта[ОбластьПоиска] Цикл
       
       Если Не ЭлементМетаданных.Тип.СодержитТип(ТипАбоненты) Тогда Продолжить; КонецЕсли;
       
       СтрокаТаблицыЗначений = Таблица.Добавить();
       СтрокаТаблицыЗначений.ИмяТаблицы = ИмяТаблицы;
       СтрокаТаблицыЗначений.Поле = ЭлементМетаданных.Имя;

   КонецЦикла;
   
КонецПроцедуры