Имя: Пароль:
1C
1С v8
Выбрать только документы
0 kugelfangg
 
23.03.12
16:31
Здравствуйте, Господа!

Допустим есть регистр сведений у которого есть измерение "Объект" с типом "ЛюбаяСсылка".

Подскажите пожалуйста каким образом при помощи запроса можно получить из этого регистра данные только по всем документам?
1 golden-pack
 
23.03.12
16:39
ТИПЗНАЧЕНИЯ
2 m-serg74
 
23.03.12
16:45
(0) ГДЕ НЕ (Объект.Дата IS NULL)
       И НЕ (Объект.Номер IS NULL)
но это в случае если у справочника не будет таких реквизитов
3 patapum
 
23.03.12
16:48
или туда же
ГДЕ Объект.Код ЕСТЬ NULL И Объект.Наименование ЕСТЬ NULL
4 golden-pack
 
23.03.12
16:55
(2) (3) непрокатит
5 m-serg74
 
23.03.12
16:56
(4) а (1) в запросе прокатит? )))
6 golden-pack
 
23.03.12
17:01
(5) типа новая функция
7 КМ155
 
23.03.12
17:04
(5) ВЫБРАТЬ
   РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ,
   РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.СуммаВзаиморасчетовПриход,
   РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.СуммаВзаиморасчетовРасход
ИЗ
   РегистрНакопления.РасчетыПоРеализацииВУсловныхЕдиницахОрганизации.Обороты КАК РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты
ГДЕ
   ТИПЗНАЧЕНИЯ(РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ) = Тип(Документ.РеализацияТоваровУслуг)
8 golden-pack
 
23.03.12
17:04
Функция опеределения типа значения в запросе.

Параметры функции:

Параметр — выражение любого типа

Возвращаемое значение: тип значения.

Пример:

ВЫБРАТЬ ТИПЗНАЧЕНИЯ(Продажи.Регистратор)
ИЗ РегистрНакопления.Продажи КАК Продажи
9 m-serg74
 
23.03.12
17:05
(6) она возвращает какого именно типа справочник или док. например "Контрагент" "Характеристика номенклатура", а ему надо отобрать все "Документ"
10 m-serg74
 
23.03.12
17:05
>Подскажите пожалуйста каким образом при помощи запроса можно получить из этого регистра данные только по всем документам?
11 m-serg74
 
23.03.12
17:08
поэтому (2) (3) прокатит!
12 kugelfangg
 
23.03.12
17:21
(11) вариант(2)(3) работает, но проблема в том, что в этом регистре более 300тыс. строк, и это изнасилование сервера.=(
13 m-serg74
 
23.03.12
17:26
извиняюсь других способов незнаю(
14 golden-pack
 
23.03.12
17:27
(11) Где уверенность, что в справочник не будет руками добавлен реквизит "Дата" или "Номер" ?
15 КМ155
 
23.03.12
17:30
(14) +1
в любой типовой есть ДоговорыКонтрагента с датой и номером
16 m-serg74
 
23.03.12
17:33
(15) значит
ГДЕ НЕ (Объект.Дата IS NULL)
      И НЕ (Объект.Номер IS NULL)
      И НЕ (Объект.Ссылка ССЫЛКА Справочник.ДоговорыКонтрагента)
      И НЕ (...)
это проче чем описать все Документы
17 m-serg74
 
23.03.12
17:35
а если
ГДЕ НЕ (Объект.Дата IS NULL)
     И НЕ (Объект.Номер IS NULL)
     И Объект.Код ЕСТЬ NULL
     И Объект.Наименование ЕСТЬ NULL
то шансов наверное не останется
18 le_
 
23.03.12
18:01
Все просто:
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    Хранилище.Объект КАК Док
                         |ИЗ
                         |    Справочник.Хранилище КАК Хранилище
                         |ГДЕ
                         |    ТИПЗНАЧЕНИЯ(Хранилище.Объект) В (&Документы)");
   Запрос.УстановитьПараметр("Документы", Документы.ТипВсеСсылки().Типы());
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Сообщить(Выборка.Док);
   КонецЦикла;
КонецПроцедуры
19 2S
 
23.03.12
18:02
(18) зачет
20 m-serg74
 
23.03.12
18:08
(18) если пашет, то +100
21 m-serg74
 
23.03.12
18:15
(18)
{(7, 48)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ТИПЗНАЧЕНИЯ(НазначенияСвойствОбъектов.Объект) <<?>>В (&Документы)
22 le_
 
23.03.12
18:18
(21) Там тип Характеристика.
23 le_
 
23.03.12
18:23
+ (21) В параметр устанавливай:
ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы.ТипЗначения.Типы()
24 m-serg74
 
23.03.12
18:28
(23)
   Запрос = Новый Запрос(
   "ВЫБРАТЬ
   |    НазначенияСвойствОбъектов.Объект,
   |    НазначенияСвойствОбъектов.Свойство
   |ИЗ
   |    РегистрСведений.НазначенияСвойствОбъектов КАК НазначенияСвойствОбъектов
   |ГДЕ
   |    ТИПЗНАЧЕНИЯ(НазначенияСвойствОбъектов.Объект) В (&Документы)");
   Запрос.УстановитьПараметр("Документы", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы.ТипЗначения.Типы());
   й=Запрос.Выполнить().Выгрузить();

эффект (ошибка) та же что и в (21)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший