|
Запрос к документам по наличию реквизита |
☑ |
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
|
&НаСервере
Процедура ДобавитьВТаблицуЗначенийОписаниеПолейПоиска(МетаданныеОбъекта, ОбластьПоиска, Таблица, ТипАбоненты, ИмяТаблицы)
Для Каждого ЭлементМетаданных Из МетаданныеОбъекта[ОбластьПоиска] Цикл
Если Не ЭлементМетаданных.Тип.СодержитТип(ТипАбоненты) Тогда Продолжить; КонецЕсли;
СтрокаТаблицыЗначений = Таблица.Добавить();
СтрокаТаблицыЗначений.ИмяТаблицы = ИмяТаблицы;
СтрокаТаблицыЗначений.Поле = ЭлементМетаданных.Имя;
КонецЦикла;
КонецПроцедуры
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший