Имя: Пароль:
1C
1C 7.7
v7: Имена полей в AccountsRecordsetV3
0 DES
 
06.07.18
18:00
Кто знает как добиться своего имени поля в запросе?
"SELECT Субконто1 [Субконто1 $Субконто]
    |, Субконто1_вид
    |FROM $БИОбороты.Основной(:НачДата, :КонДата ~
    |,
    |,
    |,(Счет = :ВыбСчет661) OR (Счет = :ВыбСчет641)
    |,(ЛицевыеСчета)
    |,
    |,(КорСчет = :ВыбСчет50) OR (КорСчет = :ВыбСчет51)
    |) БИОборотыОсновной
    |";
хочу так
"SELECT Субконто1 [ЛицевойСчет $Субконто]
...
а оно ругается
Для типизации поля "ЛицевыеСчета", не найдено дополнительное типизирующее поле.
И еще вопрос.
Можно ли делать
select * from (здесь верхний селект)
тоже ругается на завершающую скобку.
1 Salimbek
 
06.07.18
21:34
1) "SELECT Субконто1 [Субконто1 $Субконто]
    |, Субконто1_вид
попробуй поменять на
"SELECT Субконто1 [ЛицевойСчет $Субконто]
    |, Субконто1_вид ЛицевойСчет_вид

2) select * from (здесь верхний селект) as v
2 DES
 
06.07.18
22:50
спс . взлетело
А можно как то вытащить атрибуты субконто1?

"SELECT Субконто1 [ЛицевойСчет $Субконто]
|, Субконто1_вид [ЛицевойСчет_вид]
|, Субконто1.ADR [адр $Справочник.Адреса]
чето не хочет...
3 Salimbek
 
06.07.18
23:02
(2) Давай я тебя научу. Вот смотри - делаешь:
SELECT top 1 * FROM ...
и смотришь - какие поля у тебя есть. Если нужного тебе поля нет, но оно есть в другой таблице, значит надо связать таблички. Тут думаешь - как связывать LEFT или INNER и пишешь соединение. Например:
INNER JOIN $Справочник.Что_то as Spr ON v.Субконто1=Spr.Id
И тогда уже можешь добавлять в SELECT поля этой таблицы в виде Spr.Адрес.

Тут еще надо понимать - а вдруг это Субконто может быть разных типов, тогда с таким соединением ты получишь хрень полную. И тогда надо ставить условие на Вид субконто. Но понять это все можешь только ты и на твоих данных, анализируя SELECT top 1 * FROM ...
4 DES
 
06.07.18
23:04
ок, спс
5 DES
 
07.07.18
11:45
что то не получается выбрать из подзапроса, пишу:
Select V.* from
(
SELECT
  Субконто1 [ЛС $Субконто]
  , Субконто1_вид ЛС_вид
) as V

Все норм
А если

Select V.ЛС [ЛС $Субконто],  V.ЛС_вид [ЛС_вид]
from
(
SELECT
  Субконто1 [ЛС $Субконто]
  , Субконто1_вид ЛС_вид
) as V


Недопустимое имя столбца "Лс"
6 Salimbek
 
07.07.18
11:57
(5) Опять же, объясняю: Когда ты пишешь [ЛС $Субконто], то на выходе из этого запроса тебе SQL возвращает поле с именем "ЛС $Субконто", а далее 1C++ когда видит такие странные поля включает свою логику - переименовывает поле в "ЛС" и вместо ИД-шника (который там лежит по факту) вставляет ссылку на элемент справочника или чего там еще. Т.е. такое именование полей нужно ТОЛЬКО в самой верхней выборке, когда результат будет уходить в 1С-ку. Во внутренних подзапросах такое именование - бесполезно.
Исходя из этого понимания - вывод:
(
SELECT
  Субконто1 [ЛС $Субконто]
  , Субконто1_вид ЛС_вид
) as V

вот тут вот такое именование полей не нужно, достаточно просто: Субконто1 ЛС и тогда в селекте сможешь указать V.ЛС
7 DES
 
07.07.18
22:58
а как работает условие счета и корсчета?
    
| FROM $БИОбороты.Основной(:НачДата, :КонДата ~
    |, Месяц
    |,
    |, (Счет = :Счет661)
    |, Субконто1
    |, Субконто1 = :ВыбрСубк
    |, (КорСчет <> :Счет661)  
так не работает,
т.е. строки с одинаковым счетом и корсчетом попадают в выборку
8 Salimbek
 
09.07.18
09:35
(7) Можно, наверное, и просто:
...
| FROM $БИОбороты.Основной(:НачДата, :КонДата ~
    |, Месяц
    |,
    |, (Счет = :Счет661) AND (Счет<>КорСчет)
...
Детальнее не скажу, я с бух. данными плотно дела не имел.