Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) [Решено] Вопросы по работе с таблицей _1SEntry (число прочтений - 5680 )
mistyx
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 25. Февраля 2010
[Решено] Вопросы по работе с таблицей _1SEntry
25. Февраля 2010 :: 11:29
Печать  
Добрый день.

Есть SQL-ный запрос, который нужно исполнять из 1С:

Код
Выбрать все
SELECT
Ent.DOCID as [Id_Document $Документ." + ВидДокумента + "],
Ent.NUMBER as LineNum,
Deb.SCHKOD as AccountDeb,
Crd.SCHKOD as AccountCrd,
Ent.DTSC0 as [ДтСубконто1 $Субконто], Ent.VDTSC0 as [ДтСубконто1_вид $ВидСубконто],
Ent.DTSC1 as [ДтСубконто2 $Субконто], Ent.VDTSC1 as [ДтСубконто2_вид $ВидСубконто],
Ent.KTSC0 as [КтСубконто1 $Субконто], Ent.VKTSC0 as [КтСубконто1_вид $ВидСубконто],
Ent.KTSC1 as [КтСубконто2 $Субконто], Ent.VKTSC1 as [КтСубконто2_вид $ВидСубконто],
Ent.SUM_ as Amount,
Ent.AMOUNT as Quantity,
REPLACE(REPLACE(CAST(Ent.SP547 as varchar(8000)),'" + РазделительСтрок + "',' '),'" + СимволТабуляции + "',' ') as Notes

FROM _1SJourn as Jur (nolock)
INNER JOIN _1SEntry Ent (nolock) ON Ent.DOCID = Jur.IDDOC
LEFT JOIN _1SACCS as Deb (nolock) ON Deb.ID = Ent.ACCDTID
LEFT JOIN _1SACCS as Crd (nolock) ON Crd.ID = Ent.ACCKTID

WHERE Jur.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
AND Jur.IDDocDef = $ВидДокумента." + ВидДокумента + "
AND Jur.IsMark = 0 AND Jur.Closed & 1 = 1"; 



Подскажите, пожалуйста, каким образом можно в этом запросе вместо прямого указания поля SP547 через алиас вытащить СодержаниеПроводки из таблицы _1SEntry. Судя по мануалу, должна работать конструкция $Проводка.СодержаниеПроводки, однако заставить ее работать не получилось, мучаюсь уже третий день.

И еще - объясните мне сакральный смысл необходимости писать конструкцию

Код
Выбрать все
Ent.DTSC0 as [ДтСубконто1 $Субконто], Ent.VDTSC0 as [ДтСубконто1_вид $ВидСубконто] 



для того, чтобы в ДтСубконто1 попало правильное субконто. Убивает меня то, что если в названии "ДтСубконто1_вид" изменить хотя бы одну букву, то в ДтСубконто1 тут же становится пусто. Я уже молчу про то, что без выбора поля $ВидСубконто про само субконто можно забыть. Возможно, это где-то описано в ФАКе - в таком случае буду благодарен за ссылку на нужное место ФАКа Улыбка
« Последняя редакция: 25. Февраля 2010 :: 15:27 - mistyx »  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по работе с таблицей _1SEntry
Ответ #1 - 25. Февраля 2010 :: 11:46
Печать  
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mistyx
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 25. Февраля 2010
Re: Вопросы по работе с таблицей _1SEntry
Ответ #2 - 25. Февраля 2010 :: 11:53
Печать  
berezdetsky писал(а) 25. Февраля 2010 :: 11:46:
Типизация колонок типами 1С в тексте запроса.

Понятно, спасибо. А по первой части вопроса можете что-нибудь пояснить?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по работе с таблицей _1SEntry
Ответ #3 - 25. Февраля 2010 :: 12:30
Печать  
Нет. У меня не воспроизводится.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mistyx
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 25. Февраля 2010
Re: Вопросы по работе с таблицей _1SEntry
Ответ #4 - 25. Февраля 2010 :: 12:38
Печать  
berezdetsky писал(а) 25. Февраля 2010 :: 12:30:
Нет. У меня не воспроизводится.

Эммм... Не воспроизводится = все работает правильно? А можете тогда написать работающий у Вас запрос вида SELECT <ЧТО-ТО> FROM _1SEntry, который возвращает поле СодержаниеПроводки, где что-то - та самая конструкция с символом "$"?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по работе с таблицей _1SEntry
Ответ #5 - 25. Февраля 2010 :: 12:48
Печать  
SELECT $Проводка.Комментарий
FROM _1sentry



1С++ v3.0.1.26.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mistyx
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 25. Февраля 2010
Re: Вопросы по работе с таблицей _1SEntry
Ответ #6 - 25. Февраля 2010 :: 13:44
Печать  
Специально скачал последнюю версию 1C++ (3.0.1.26). Выполняю код:
     
Код
Выбрать все
ЗагрузитьВнешнююКомпоненту("1cpp.dll");

Обработчик = СоздатьОбъект("ODBCRecordset"); Обработчик.УстБД1С();

ТекстЗапроса = "SELECT TOP 50 $Проводка.Комментарий FROM _1SEntry";
    
Результат = Обработчик.ВыполнитьИнструкцию(ТекстЗапроса); 



В ответ получаю - Meta name parser error: неизвестное метаимя или алиас "$Проводка".

Существуют ли какие-нибудь способы, чтобы определить, где собака порылась?
Например, убедиться, что загружена правильная версия библиотеки.
Я знаю, что лечение по фотографии доступно только истинно просветленным, но вдруг Улыбка
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по работе с таблицей _1SEntry
Ответ #7 - 25. Февраля 2010 :: 13:56
Печать  
Версию загруженной компоненты можно увидеть в окне Помощь\О программе или Сервис\Параметры на вкладке 1С++.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mistyx
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 25. Февраля 2010
Re: Вопросы по работе с таблицей _1SEntry
Ответ #8 - 25. Февраля 2010 :: 15:27
Печать  
berezdetsky писал(а) 25. Февраля 2010 :: 13:56:
Версию загруженной компоненты можно увидеть в окне Помощь\О программе или Сервис\Параметры на вкладке 1С++.

Большое спасибо, все заработало. Оказывается, авторы базы держали в каталоге с базой 1cpp.dll v1.8.1.2, которая не знала алиас $Проводка.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: [Решено] Вопросы по работе с таблицей _1SEntry
Ответ #9 - 26. Февраля 2010 :: 05:18
Печать  
Загружать 1cpp лучше один раз в глобальном модуле.
( некоторые dll определенного порядка загрузки).
Метод Обработчик.УстБД1С(); для родной базы можно не применять.
  
Наверх
 
IP записан
 
mistyx
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 25. Февраля 2010
Re: [Решено] Вопросы по работе с таблицей _1SEntry
Ответ #10 - 26. Февраля 2010 :: 05:31
Печать  
Z1 писал(а) 26. Февраля 2010 :: 05:18:
Загружать 1cpp лучше один раз в глобальном модуле.
( некоторые dll определенного порядка загрузки).

Спасибо, я знаю, но нужно было привести пример, который должен работать as is.

Z1 писал(а) 26. Февраля 2010 :: 05:18:
Метод Обработчик.УстБД1С(); для родной базы можно не применять.

А что такое "родная база"? Мне одной обработкой нужно последовательно выкачать данных из 8 баз с разной структурой (из них 6 одинаковых и две существенно переработанных). Как быть в этой ситуации?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: [Решено] Вопросы по работе с таблицей _1SEntry
Ответ #11 - 26. Февраля 2010 :: 06:38
Печать  
mistyx писал(а) 26. Февраля 2010 :: 05:31:
Z1 писал(а) 26. Февраля 2010 :: 05:18:
Загружать 1cpp лучше один раз в глобальном модуле.
( некоторые dll определенного порядка загрузки).

А что такое "родная база"? Мне одной обработкой нужно последовательно выкачать данных из 8 баз с разной структурой (из них 6 одинаковых и две существенно переработанных). Как быть в этой ситуации?

Родная база это та база в которой выполняется 1с программа.
8 баз расположены на одном сервере и одном экземпяре или как то по другому ?

Если сервер один и на нем 8 баз ( т.к. 1с как правило работает под sa ) то можно все вытащить одним запросом
Пример
select top 100 * from db1.dbo._1SEntry
union all
select top 100 * from db2.dbo._1SEntry
union all
select top 100 * from db3.dbo._1SEntry
union all
select top 100 * from db4.dbo._1SEntry
union all
select top 100 * from db5.dbo._1SEntry
union all
select top 100 * from db6.dbo._1SEntry
union all
select top 100 * from db7.dbo._1SEntry

где db1, ... db7  имена реальных баз

PS В примере предполагается что во всех базах таблицы _1SEntry
одинаковые ( хотя это и так вытекает из union  all что
столбцы должны быть сопоставимы )


  
Наверх
 
IP записан
 
mistyx
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 25. Февраля 2010
Re: [Решено] Вопросы по работе с таблицей _1SEntry
Ответ #12 - 26. Февраля 2010 :: 07:43
Печать  
Z1 писал(а) 26. Февраля 2010 :: 06:38:
Родная база это та база в которой выполняется 1с программа.
8 баз расположены на одном сервере и одном экземпяре или как то по другому ?

Если сервер один и на нем 8 баз ( т.к. 1с как правило работает под sa ) то можно все вытащить одним запросом

Ага, на одном сервере и каждая - в одном экземпляре.

Спасибо за идею про указание имени базы. После C# и MS SQL 2008 голова пухнет с этим 1С Улыбка
Так замучился с алиасами, что даже в голову не пришло указывать имя базы в запросе. Сейчас опробую Улыбка
  
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Вопросы по работе с таблицей _1SEntry
Ответ #13 - 17. Июня 2011 :: 09:46
Печать  
berezdetsky писал(а) 25. Февраля 2010 :: 12:48:
SELECT $Проводка.Комментарий
FROM _1sentry



1С++ v3.0.1.26.


То ль лыжи не едут....
Meta name parser error: объект не найден "$Проводка.Комментарий"

При этом
вер = "";
МетаИнфо.получитьверсию(вер);
Сообщить (""+вер);

даёт на выходе
3.2.3.15
т.е. случайный подхват откуда-нибудь старой версии исключён.

Неужто мы где-то между 3.0.1.26 и 3.2.3.15 потеряли обратную совместимость?
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: [Решено] Вопросы по работе с таблицей _1SEntry
Ответ #14 - 17. Июня 2011 :: 10:22
Печать  
PS:

Ежели кому интересно - пока что делаю примерно так (по методике Rainbow):
"));

и далее:

ТекстЗапроса="select top 1000 SP"+СПров+"  from _1sentry";
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать