Имя: Пароль:
1C
 
Запрос к неопределенному реквизиту
0 Delorn
 
09.09.09
16:45
Хочется одним типовым запросом получить список документов с условием по конкретному значению. Учитывая что поле на которое накладывается значение неопределенного вида.
Тобишь. Есть документ ТребованиеНакладная у него реквизит субконто1 надо получить запросом список документов по конкретному субконто.
Как понимаю без ухищрений запрос возвращает пустое значение.
1 mikecool
 
09.09.09
16:50
запрос к регистрам/бухитогам строй
2 Delorn
 
09.09.09
16:58
(1) так и делаю. Просто хотелось узнать как это делается запросом.
3 Delorn
 
09.09.09
16:59
+(2) не запрос к бух итогам :) а запрос к реквизиту неопределенного вида. В инете ни чего не нашел.
4 МихаилМ
 
09.09.09
17:10
Теорерически -не проблема .а практически : 1с77 не умеет индексировать поля документов поэтому будет полный перебор таблицы документа, что будет долго . правда остается возможность установки отбора для журнала.
5 Delorn
 
09.09.09
17:41
(4) ну дык и как же это будет практически? База на скюле секунд 5ть выполнения устроит.
Уточню
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|ТребованиеНакладная = Документ.ТребованиеНакладная.ТекущийДокумент;
|Субконто3 = Документ.ТребованиеНакладная.Субконто3;
|Условие(Субконто3 = ВыбСубконто3);
|Группировка ТребованиеНакладная;
|Группировка Субконто3;
|"//}}ЗАПРОС
;      
Вот это выдает пустой список. Оно и понятно. Субконто3 в документе составное поле которое хранит в себе вид и ид. а запрос в ВыбСубконто передает только ид... Не ужели даже самое простое не могет :) При том перебор без условия спасает.
6 МихаилМ
 
09.09.09
18:08
то (5)
ну проверте с помощью sql profiler.
сейчас 77 + sql нет под рукой
но должно работать.
к томуже непонятна группировка по Субконто3
7 Злой Бобр
 
09.09.09
18:38
(5)
SELECT ТребованиеНакладная.IDDOC [Док $Документ.ТребованиеНакладная]
FROM $Документ.ТребованиеНакладная AS ТребованиеНакладная
   INNER JOIN _1SJOURN AS Журнал ON ТребованиеНакладная.IDDOC = Журнал.IDDOC
WHERE (Журнал.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата)
   AND (Журнал.ISMARK = 0)
   AND ($ТребованиеНакладная.Субконто3 = :ВыбСубконто3)
GROUP BY ТребованиеНакладная.IDDOC
8 Delorn
 
10.09.09
10:10
(6) а что там проверять? я и так знаю причину... Субконто3 в моем случае это основное средство :) бухгалтеры попросили отчет по одному документу за все время жизни ОС...
(7) Злой ты бобер :( прямым запросом я и сам могу. Но надо использовать стандартные средства. Насяльника не разрешает использовать в некоторых базах сторонние DLL. Хотя может АДО заюзать...
9 Злой Бобр
 
10.09.09
12:05
(8) Ну стандартными так и стандартными, типа не один хрен...
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|ТребованиеНакладная = Документ.ТребованиеНакладная.ТекущийДокумент;
|Субконто3 = Документ.ТребованиеНакладная.Субконто3;
|Группировка ТребованиеНакладная;

|Условие((Субконто3.Вид()=""РасходнаяНакладная"") и (Субконто3 = ВыбСубконто3));
или
|Условие((Субконто3.Вид()=ВыбСубконто3.Вид()) и (Субконто3 = ВыбСубконто3));

А насчет неиспользования ВК - это скорей от непонимания, чем от ума.
10 МихаилМ
 
10.09.09
17:23
(8)
в профайлере можно подсмотреть тип ВыбСубконто3.  быть 22 символа для реквизита неопределенного типа.
11 Delorn
 
10.09.09
17:27
(9) большое спасибо :)
(10) и что бы мне дал профайлер? ну увидел я все что мне нужно и? :) Смешной ты но за апы спасибо.
12 МихаилМ
 
10.09.09
17:43
(11)
Вы бы поняли почему не работает отбор
если ВыбСубконто3 = строка 22(или 23) символа то условие отбора должно работать
если нет - можно попробовать ее стать 22 символа  


к тому же я с Вами на брандершафт не пил.
13 Delorn
 
10.09.09
18:20
(12) :) ой ой какие мы умные даже слова 22 или 23 символа знаем. Чем бы мне это помогло? Вот (9) мне очень сильно помогло.
При чем тут 22? У ссылки в 7.7. 13 симольное представление.
14 МихаилМ
 
10.09.09
21:05
то (13)
Ошибаетесь  
из 1Cv7.DD
видно
F=SP13141   |(P)Субконто3        |C   |23    |0

в DDS - тоже самое


13 символов - если известен вид (документ,справочник...)