Имя: Пароль:
1C
1С v8
Запрос: Все субконто с типом Справочник
,
0 AugustBlack
 
05.09.12
12:27
привет, нужен хелп с запросом необходимо выбрать из плана счетов все субконто с типом справочник.
пишу

ВЫБРАТЬ
   ХозрасчетныйВидыСубконто.ВидСубконто,
   ХозрасчетныйВидыСубконто.ВидСубконто.ТипЗначения
ИЗ
   ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто

не пойму как сделать чтото вроде
где ВидыСубконто "содержит" тип справочник, помогите.
1 DrShad
 
05.09.12
12:28
что будешь делать с субконто, у которых составной тип?
2 AugustBlack
 
05.09.12
12:32
вот вот в запросе так указать нельзя получается
3 DrShad
 
05.09.12
12:33
ща попробую поглядеть запросом, никогда до этого не приходилось так извращаться, а вообще накуя это нужно?
4 AugustBlack
 
05.09.12
12:35
нужно выгрузить данные в (excel к примеру) из справочников которые привязаны к счетам
5 ptiz
 
05.09.12
12:36
А зачем запросом? Просто циклом по метаданным пройдись и выбери нужные справочники.
6 AugustBlack
 
05.09.12
12:39
да хочется как можно более "оптимизировано" :-D
7 DrShad
 
05.09.12
12:40
(6) выборка ПВХ и циклом по ней имена объектов метаданных - потом выгружай
8 Reset
 
05.09.12
12:41
Вариант для пятницы: Не (Субконто.Предопределенный Есть NULL)
9 Reset
 
05.09.12
12:42
(8) а, хотя даже если и сработает, то ПВХ зацепит.
10 AugustBlack
 
13.09.12
12:10
(7) а как тут?  
СтрокаПоиска = Строка(Строка.ВидСубконто)
в этой строчке МетаданныеСправочника = Метаданные.Справочники.Найти(СтрокаПоиска);
т.е я могу вытащить только синоним, а не наименование объекта метаданных. поиска по синониму нет..
гляньте
СпрТЗ = Новый ТаблицаЗначений;
   СпрТЗ.Колонки.Добавить("Наименование",,"Наименование");
   
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    Хозрасчетный.Ссылка КАК Ссылка
       |ИЗ
       |    ПланСчетов.Хозрасчетный КАК Хозрасчетный
       |ГДЕ
       |    НЕ Хозрасчетный.ПометкаУдаления
       |
       |УПОРЯДОЧИТЬ ПО
       |    Ссылка";

   Счета = Запрос.Выполнить().Выгрузить();
   Первый = Истина;
   Для Каждого Счет Из Счета Цикл
       Сообщить("Счет: " + Счет.Ссылка);
       Для Каждого Строка Из Счет.Ссылка.ВидыСубконто Цикл
           СтрокаПоиска = Строка(Строка.ВидСубконто);
           МетаданныеСправочника = Метаданные.Справочники.Найти(СтрокаПоиска);
           Если МетаданныеСправочника <> Неопределено Тогда
               Если Первый Тогда
                   Сообщить(СтрокаПоиска);
                   НоваяСтрока = СпрТЗ.Добавить();
                   НоваяСтрока.Наименование = СтрокаПоиска;
                   Первый = Ложь;
               Иначе
                   Если СпрТЗ.Найти(СтрокаПоиска, "Наименование") = Неопределено Тогда
                       Сообщить(СтрокаПоиска);
                       НоваяСтрока = СпрТЗ.Добавить();
                       НоваяСтрока.Наименование = СтрокаПоиска;
                   КонецЕсли;    
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
КонецПроцедуры
11 AugustBlack
 
13.09.12
12:14
т.е что я хочу спросить как по синониму в метаданных объект найти? наименование вытащить неоткуда
12 AugustBlack
 
13.09.12
12:16
епт это получается что все объекты с типом справочник перебирать, сравнить их свойство "Синоним" с моим
13 Reset
 
13.09.12
13:00
(12) А синоним откуда берется? Оттуда же и имя. Только не говори что порльзователь вводит ;)
14 Reset
 
13.09.12
13:02
Т.е. Строка.ВидСубконто.Метаданные().Имя
15 Reset
 
13.09.12
13:03
Хотя я опять видимо тему не прочитал
16 Reset
 
13.09.12
13:12
Вот так можно определить, является ли НекоеЗначениеЛюбогоТипа ссылкой либо объектом любого справочника
ЭтоСправочник=Метаданные.Справочники.Найти(Метаданные.НайтиПоТипу(ТипЗнч(НекоеЗначениеЛюбогоТипа)))<>Неопределено;
17 AugustBlack
 
13.09.12
13:15
(16) спасибо, но я поиск по синониму так сделал
Функция ПоискСправочникиПоСинониму(Синоним)
   Мета = Неопределено;
   Для Каждого Спр Из Метаданные.Справочники Цикл
       Если Спр.Синоним = Синоним Тогда
           Мета = Спр;
       КонецЕсли
   КонецЦикла;
   Возврат Мета;
КонецФункции
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой