Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Нужна консультация о структуре 1С (число прочтений - 5341 )
logarifm
Junior Member
**
Отсутствует



Сообщений: 92
Местоположение: Украина
Зарегистрирован: 29. Марта 2007
Пол: Мужской
Нужна консультация о структуре 1С
27. Ноября 2007 :: 11:21
Печать  
Здраствуйте.

Вопрос заключется вот вчем:
Есть DDS-файл где хранится словарь базы.

Делая такой запрос, непосредственно в QA:

USE modern05

Select *
FROM DH410 WITH (NOLOCK)
INNER JOIN DT410 WITH (NOLOCK)
ON         DH410.IDDOC = DT410.IDDOC

WHERE DH410.IDDOC = '  KBEN   '

Результат таков, это расходная накладная:

IDDOC     SP412     SP413   
KBEN         B            57O

Вот DDS для расходной:

#==TABLE no 151    : Документ РасходнаяНакладная
# Name    |Descr                         |SQLTableNam|RecordLock
T=DH410   |Документ РасходнаяНакладная   |DH410      |         
#-----Fields-------
# Name                  |Descr               |Type|Length|Precision
F=IDDOC                 |ID Document's       |C   |9     |0       
F=SP412                 |(P)Склад            |C   |9     |0       
F=SP413                 |(P)Клиент           |C   |9     |0       
F=SP6030                |(P)Договор          |C   |9     |0       
F=SP9500                |(P)РежимПогашения   |C   |9     |0       
F=SP415                 |(P)Валюта           |C   |9     |0       
F=SP416                 |(P)ДатаКурса        |D   |0     |0       
F=SP417                 |(P)Курс             |N   |9     |4       
F=SP5083                |(P)УчитыватьНП      |N   |1     |0       
F=SP8409                |(P)КатегорияЦен     |C   |9     |0       
F=SP8412                |(P)ТипСкидки        |C   |9     |0       
F=SP8410                |(P)РазмерСкидки     |N   |11    |2       
F=SP6031                |(P)Проводки         |N   |1     |0       
F=SP911                 |(P)ДокументОснование|C   |13    |0       
F=SP10788               |(P)ДоверенностьДата |D   |0     |0       
F=SP10789               |(P)ДоверенностьНомер|C   |14    |0       
F=SP11463               |(P)ЦеныБезНДС       |N   |1     |0       
F=SP11726               |(P)Через            |C   |40    |0       
F=SP12316               |(P)Распроводился    |N   |1     |0       
F=SP8413                |(P)СуммаБезСкидки   |N   |14    |2       
F=SP428                 |(P)Сумма            |N   |16    |2       
F=SP604                 |(P)НДС              |N   |17    |5       
F=SP5084                |(P)СуммаНП          |N   |14    |2       
F=SP7469                |(P)Всего            |N   |11    |2       
F=SP6062                |(P)СуммаПогашВал    |N   |14    |5       
F=SP6063                |(P)СуммаПогашРуб    |N   |11    |2       
F=SP1008                |(P)Основание        |C   |128   |0       
F=SP3480                |(P)СоАвтор          |C   |9     |0       
F=SP12774               |(P)ОбщВидДокументаКл|C   |23    |0       
F=TSP12774              |                    |C   |3     |0       
#----Indexes------
# Name                           |Descr         |Unique|Indexed fields                                              |Type      
I=PK_DH410                       |of IDDOC      |1     |IDDOC                                                       |1         
#

#==PROCEDURE EscalateTLock
# Name                          |Descr         |Parameters                              |Source                                                                         
P=_1sp_DT410_TLock              |EscalateTLock |                                        |set nocount on declare @i integer select @i=1 from DT410(TABLOCK HOLDLOCK) where 0=1
#

#==PROCEDURE EscalateTLockX
# Name                          |Descr         |Parameters                              |Source                                                                         
P=_1sp_DT410_TLockX             |EscalateTLockX|                                        |set nocount on declare @i integer select @i=1 from DT410(TABLOCKX HOLDLOCK) where 0=1

Меня интересует где мне искать SP412     SP413 и т.д. в словаре это как реквизиты, что так и есть. Но это веть ссылки на реальные таблицы, на справочники, перечисления и т.д. как это узнать. Справочник это SC

  

я переписал бы мир, но Бог не дает мне исходники...
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #1 - 27. Ноября 2007 :: 11:37
Печать  
в метаданных узнать тип реквизитов Склад и Клиент
если это Справочники, то узнать виды
в dds посмотреть имена таблиц справочников этих видов
в запросе "прицепить" эти таблицы по полю id
  

1&&2&&3
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Нужна консультация о структуре 1С
Ответ #2 - 27. Ноября 2007 :: 11:48
Печать  
Уважаемый!
ЕСли у вас есть DDS значит есть и MD ну а раз есть это да ещу вы строите запросы к базе, то неимеет ли смысл взять 1СQA и через $Документ.Расходная все это расковыривать?
у 1С++ если мене память не отшибло есть метапарсер и зачем спрашивается заморачивать себе и людям голову относительно всяких тама SC DT DH SP и тому подобных?
  
Наверх
 
IP записан
 
logarifm
Junior Member
**
Отсутствует



Сообщений: 92
Местоположение: Украина
Зарегистрирован: 29. Марта 2007
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #3 - 27. Ноября 2007 :: 12:08
Печать  
НЕ все так просто. Расказываю:
Покупаем мы программу логистики склада и прикол состоит в шлюзации. Перебрав немалость вариантов пришел к мнению все через СКЛ. Пользователь в 1С записуя документ дает команду программе по логистеке склада IDDOC и все это через Вебсервис. Ихняя программа, теперь как вы поняли они абсолютно никакого доступа к мд не имеют. В ихнюю программу войдет ИД документа. Они теперь обязаны средствами СКЛ найти то что их интересует... Все класно только как им узнать связи SP???
  

я переписал бы мир, но Бог не дает мне исходники...
Наверх
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #4 - 27. Ноября 2007 :: 12:13
Печать  
logarifm писал(а) 27. Ноября 2007 :: 12:08:
НЕ все так просто. Расказываю:
Покупаем мы программу логистики склада и прикол состоит в шлюзации. Перебрав немалость вариантов пришел к мнению все через СКЛ. Пользователь в 1С записуя документ дает команду программе по логистеке склада IDDOC и все это через Вебсервис. Ихняя программа, теперь как вы поняли они абсолютно никакого доступа к мд не имеют. В ихнюю программу войдет ИД документа. Они теперь обязаны средствами СКЛ найти то что их интересует... Все класно только как им узнать связи SP???

Напиши для них нужные вьюшники или табличные функции, пусть они ими пользуются
  
Наверх
ICQ  
IP записан
 
logarifm
Junior Member
**
Отсутствует



Сообщений: 92
Местоположение: Украина
Зарегистрирован: 29. Марта 2007
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #5 - 27. Ноября 2007 :: 12:43
Печать  
Какие будут еще предложения...
  

я переписал бы мир, но Бог не дает мне исходники...
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Нужна консультация о структуре 1С
Ответ #6 - 27. Ноября 2007 :: 13:27
Печать  
logarifm писал(а) 27. Ноября 2007 :: 12:43:
Какие будут еще предложения...


А кладовщики на складе вручную что ли  пишут запросы ?
Зачем DDS?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Нужна консультация о структуре 1С
Ответ #7 - 27. Ноября 2007 :: 13:32
Печать  
Пишешь свой запрос стандартно- "ТекстЗапроса" , потом
Код
Выбрать все
МД = СоздатьОбъект("MetaDataWork");
Если  ПустоеЗначение(СписокТекстовыхПараметров)=0 Тогда
		Для Счетчик=1 По СписокТекстовыхПараметров.РазмерСписка() Цикл
			ТекПредставление="";
			;
			МД.УстановитьТекстовыйПараметр(ТекПредставление,ТекЗначение);
		КонецЦикла;
КонецЕсли;
ПодзапросSQL=МД.ОбрМетаСКЛ(ТекстЗапроса);
Сообщить(ПодзапросSQL);
 


На выходе тебе готовый запрос с SP и т.п. его помещаешь в программу на склад.
  
Наверх
 
IP записан
 
logarifm
Junior Member
**
Отсутствует



Сообщений: 92
Местоположение: Украина
Зарегистрирован: 29. Марта 2007
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #8 - 27. Ноября 2007 :: 13:34
Печать  
kiruha писал(а) 27. Ноября 2007 :: 13:27:
logarifm писал(а) 27. Ноября 2007 :: 12:43:
Какие будут еще предложения...


А кладовщики на складе вручную что ли  пишут запросы ?
Зачем DDS?


Все кладовщики видят по 1С. Но система логистики совсем другая, по типу 8.х логистики по зонам товара и т.д.

Мне нужно узнать SP
  

я переписал бы мир, но Бог не дает мне исходники...
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Нужна консультация о структуре 1С
Ответ #9 - 27. Ноября 2007 :: 13:41
Печать  
Ну не очень понятно зачем...

Если по существу - информации в DDS нет
http://www.1cpp.ru/forum/YaBB.pl?num=1190375091/0

можно свою табличку сделать
  
Наверх
 
IP записан
 
logarifm
Junior Member
**
Отсутствует



Сообщений: 92
Местоположение: Украина
Зарегистрирован: 29. Марта 2007
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #10 - 27. Ноября 2007 :: 13:44
Печать  
kiruha писал(а) 27. Ноября 2007 :: 13:32:
Пишешь свой запрос стандартно- "ТекстЗапроса" , потом
Код
Выбрать все
МД = СоздатьОбъект("MetaDataWork");
Если  ПустоеЗначение(СписокТекстовыхПараметров)=0 Тогда
		Для Счетчик=1 По СписокТекстовыхПараметров.РазмерСписка() Цикл
			ТекПредставление="";
			;
			МД.УстановитьТекстовыйПараметр(ТекПредставление,ТекЗначение);
		КонецЦикла;
КонецЕсли;
ПодзапросSQL=МД.ОбрМетаСКЛ(ТекстЗапроса);
Сообщить(ПодзапросSQL);
 


На выходе тебе готовый запрос с SP и т.п. его помещаешь в программу на склад.


ТекстЗапроса = чему равен???
  

я переписал бы мир, но Бог не дает мне исходники...
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Нужна консультация о структуре 1С
Ответ #11 - 27. Ноября 2007 :: 13:53
Печать  
Как чему?
Пишешь нужный запрос на SQL  с модификаторами $ и метаименами.
Вообщем любой запрос из этой ветки форума.

Тебе же   в другой программы  только шаблон нужен?
  
Наверх
 
IP записан
 
logarifm
Junior Member
**
Отсутствует



Сообщений: 92
Местоположение: Украина
Зарегистрирован: 29. Марта 2007
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #12 - 27. Ноября 2007 :: 14:04
Печать  
ВыбТМЦ = СоздатьОбъект("СписокЗначений");
     ВыбТМЦ.ДобавитьЗначение("9900-809-51");
     
     ТекстЗапроса = "
     |SELECT
     |        $Номенклатура.Артикул Артикул
     |FROM $Справочник.Номенклатура AS Номенклатура (NOLOCK)
     |WHERE $Номенклатура.Артикул IN (SELECT Val FROM #ВыбТМЦ)
     |GROUP BY
     |     $Номенклатура.Артикул
     |ORDER BY
     |     $Номенклатура.Артикул
     |      
     |";
     
     глOpenConf.УложитьСписокОбъектов(ВыбТМЦ,"#ВыбТМЦ","Номенклатура");
     МД = СоздатьОбъект("MetaDataWork");
     Если  ПустоеЗначение(СписокТекстовыхПараметров)=0 Тогда
           Для Счетчик=1 По СписокТекстовыхПараметров.РазмерСписка() Цикл
                 ТекПредставление="";
                 ;
                 МД.УстановитьТекстовыйПараметр(ТекПредставление,ТекЗначение);
           КонецЦикла;      
     КонецЕсли;
     ПодзапросSQL=МД.ОбрМетаСКЛ(ТекстЗапроса);
     Сообщить(ПодзапросSQL);

Ругается
  

я переписал бы мир, но Бог не дает мне исходники...
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #13 - 27. Ноября 2007 :: 14:15
Печать  
"УложитьСписокОбъектов" укладывает только агрегатные объекты 1С (справочники, документы).
  
Наверх
 
IP записан
 
logarifm
Junior Member
**
Отсутствует



Сообщений: 92
Местоположение: Украина
Зарегистрирован: 29. Марта 2007
Пол: Мужской
Re: Нужна консультация о структуре 1С
Ответ #14 - 27. Ноября 2007 :: 14:20
Печать  
Пишу:

СписокТекстовыхПараметров = СоздатьОбъект("СписокЗначений");
     Для А = 1 По Метаданные.Документ("РасходнаяНакладная").РеквизитШапки() Цикл
           ИндРеквШапки = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(А).Идентификатор;
           СписокТекстовыхПараметров.ДобавитьЗначение(ИндРеквШапки);
     КонецЦикла;
     
     глOpenConf = глПараметрыOpenConf();
     ТекстЗапроса = "
     |SELECT
     |        $Номенклатура.Артикул Артикул
     |FROM $Справочник.Номенклатура AS Номенклатура (NOLOCK)
     |WHERE $Номенклатура.Артикул = '9900-809-51'
     |GROUP BY
     |     $Номенклатура.Артикул
     |ORDER BY
     |     $Номенклатура.Артикул
     |      
     |";
     
     //тДанныхНоменклатуры = глOpenConf.ВыполнитьИнструкцию(ТекстЗапроса);
     //тДанныхНоменклатуры.ВыбратьСтроку();
     МД = СоздатьОбъект("MetaDataWork");
     Если  ПустоеЗначение(СписокТекстовыхПараметров)=0 Тогда
           Для Счетчик=1 По СписокТекстовыхПараметров.РазмерСписка() Цикл
                 ТекПредставление="";
                 ;
                 МД.УстановитьТекстовыйПараметр(ТекПредставление,ТекЗначение);
           КонецЦикла;      
     КонецЕсли;
     ПодзапросSQL=МД.ОбрМетаСКЛ(ТекстЗапроса);
     Сообщить(ПодзапросSQL);


Результат:

SELECT
       Номенклатура.sp11732 Артикул
FROM sc33 AS Номенклатура (NOLOCK)
WHERE Номенклатура.sp11732 = '9900-809-51'
GROUP BY
     Номенклатура.sp11732
ORDER BY
     Номенклатура.sp11732
     

Но єто не то что мне нужно!!!
  

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