Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема SQL запрос по остатков (число прочтений - 4098 )
vadimleon
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 10. Декабря 2008
SQL запрос по остатков
10. Декабря 2008 :: 08:56
Печать  
Доброе время суток,
Я долго не мог решать, браться за 1С программирование или нет, тормозила меня специфика моей работы – SysAdmin (All in One), когда времени никогда не хватает на серьезных дел. Но вот и возникла та ситуация когда отложить больше нельзя. В компании где я работаю, трудились до меня несколько поколении SysAdmin’ов… был изначально в штатах и программист 1С …который совместно с Admin’ом создали цельную систему. Ну это было давно …и естественно, как и любые уважающий себя программисты, в сторону документирования системы не работали. Я 4 поколении… на словах до меня дошло мало. Ну в челом вот такая картина, MS SQL – 1Cv7; MS SQL – Sharepoint&(asp); MS - SQL – Access. DB Access и сайт компании, имеют созданные запросы в Transact-SQL и получают необходимые данные из таблицах 1С(SQL версия), для дальнейшей работы с ними. Моё слабое место 1C, мне очень тяжело с этими запросами разобраться, пока для меня они даже логически кажутся неправильны, помогите!

Данный запрос формирует таблицу клиентов и получает сальдо по расчёту с дебиторами и кредиторами, эту таблицу я дальше обрабатываю в asp, и каждый клиент заходя в свою приватную зону получает состояния счета . В моем случи, Дебит – «Долг=»  а Кредит – «Фин.Г». К сожалению, рабочий код мне не достался, а только то что сумел получить после крушения SQL сервера. После восстановления старого сервера был найден этот код:

CREATE VIEW dbo.VIEW
AS
SELECT cast(SC5116.CODE AS int) AS код,
    SC5116.DESCR AS Наименование,
    Пояснение = CASE _1SBKTTL.ACCID WHEN 'Z1426F' THEN 'Фин.Г.'
     + str(0 - _1SBKTTL.SD)
    WHEN 'Z142DL' THEN 'Долг = ' + str(_1SBKTTL.SD, 10, 2)
    ELSE 'Kto ego znaet!' END,
    КодБлокировки = CASE _1SBKTTL.ACCID WHEN 'Z1426F' THEN
     301 WHEN 'Z142DL' THEN 302 END
FROM SC5116 INNER JOIN
    _1SBKTTL ON SC5116.ID = _1SBKTTL.SC0
WHERE (((_1SBKTTL.ACCID = 'Z1426F') AND
    (_1SBKTTL.KIND = '2') AND (SC5116.SP5867 = '1')  AND
    (_1SBKTTL.SD <> 0)) OR
  ((_1SBKTTL.ACCID = 'Z142DL') AND (_1SBKTTL.SD > 10) ))  AND
    (_1SBKTTL.DATE > getdate())) AND
/*    (cast(SC5116.parentid AS int) BETWEEN 1 AND 3)*/
(   (Ltrim(SC5116.parentid) = '1')  or  (ltrim(SC5116.parentid) ='3') or  (ltrim(SC5116.parentid) ='2'))

Я его попробовал восстановить методом «тыка» и правильному синтаксу Transact’a, вот что получилось:

CREATE VIEW dbo.TIR_VIEW
AS
SELECT
  _1SBKTTL.DATE AS Data, cast(SC5116.CODE AS int) AS код,
  SC5116.DESCR AS Наименование,
  Пояснение = CASE _1SBKTTL.ACCID
    WHEN 'Z1426F' THEN 'Фин.Г.'+ str(0 - _1SBKTTL.SD)
    WHEN 'Z142DL' THEN 'Долг = ' + str(_1SBKTTL.SD, 10, 2)
    ELSE 'Kto ego znaet!'
  END,
  КодБлокировки = CASE _1SBKTTL.ACCID
    WHEN 'Z1426F' THEN 301
    WHEN 'Z142DL' THEN 302
    END
FROM SC5116 INNER JOIN _1SBKTTL ON SC5116.ID = _1SBKTTL.SC0
WHERE      (
           (
                 (_1SBKTTL.ACCID = 'Z1426F') AND
                 (_1SBKTTL.KIND = '2') AND
                 (SC5116.SP5867 = '1') AND
                 (_1SBKTTL.SD <> 0)
           )
                       
           or
           
           (
                 (_1SBKTTL.ACCID = 'Z142DL') /*and
                 (_1SBKTTL.SD > 10)*/
           )
     )
     and
     (      
           (_1SBKTTL.DATE > getdate()) – Для меня это нелогично!!!
     )
     and
     (
           (Ltrim(SC5116.parentid) = '1')  or 
                     (ltrim(SC5116.parentid) ='3') or 
                     (ltrim(SC5116.parentid) ='2')
     )   

В таком виде он поработал пару месяцев, а сейчас перестал… перед тем как здесь писать, «тыкал» долго – без результатов.
Сейчас должен быстро устранить эту проблему, буду очень признателен за вашу активность и терпения к «новичку».
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: SQL запрос по остатков
Ответ #1 - 10. Декабря 2008 :: 10:14
Печать  
Цитата:
(_1SBKTTL.DATE > getdate()) -- Для меня это нелогично!!!

Это будет вполне логично, если рассчитать бух. итоги в 1С по квартал, следующий за текущим.
  

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


1C++ rocks!

Сообщений: 3
Зарегистрирован: 10. Декабря 2008
Re: SQL запрос по остатков
Ответ #2 - 10. Декабря 2008 :: 12:32
Печать  
(_1SBKTTL.DATE > getdate()) а в контексте моего отчета это реально? …когда клиенту нужно состояния счета на данный момент.
Ребята, помогите пожалуйста с литературой или есть у кого то  полное описании таблиц, которые фигурируют в запросе, а также и определение кодов из этих таблиц, примеры с сальдо по расчёту с дебиторами…
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: SQL запрос по остатков
Ответ #3 - 10. Декабря 2008 :: 12:36
Печать  
vadimleon писал(а) 10. Декабря 2008 :: 12:32:
есть у кого то  полное описании таблиц, которые фигурируют в запросе, а также и определение кодов из этих таблиц

http://metaprog.co.ua/secrprog/buh_s.html
  
Наверх
IP записан
 
vadimleon
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 10. Декабря 2008
Re: SQL запрос по остатков
Ответ #4 - 10. Декабря 2008 :: 14:25
Печать  
leshik писал(а) 10. Декабря 2008 :: 12:36:
vadimleon писал(а) 10. Декабря 2008 :: 12:32:
есть у кого то  полное описании таблиц, которые фигурируют в запросе, а также и определение кодов из этих таблиц

http://metaprog.co.ua/secrprog/buh_s.html

Спасибо leshik!

Я за одно думаю и об альтернативной решении; если в 1С есть сформированный отчет по сальдо, который ежедневно выгружается в *.dbf. Вопрос: есть возможность этот отчет сразу экспортировать в таблицу SQL сервера?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: SQL запрос по остатков
Ответ #5 - 10. Декабря 2008 :: 15:57
Печать  
vadimleon писал(а) 10. Декабря 2008 :: 14:25:
Я за одно думаю и об альтернативной решении; если в 1С есть сформированный отчет по сальдо, который ежедневно выгружается в *.dbf. Вопрос: есть возможность этот отчет сразу экспортировать в таблицу SQL сервера?

Можно.
Посмотри в сторону http://www.1cpp.ru/forum/YaBB.pl?num=1181817217
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать