Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Вызовы 1CPP.DLL из PHP. Возможно ли это (число прочтений - 13025 )
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Вызовы 1CPP.DLL из PHP. Возможно ли это
Ответ #30 - 19. Июня 2007 :: 05:34
Печать  
SP28269 IDDoc Это ты поле в документе обозвал IDDoc?  На такие издевательства я не рассчитывал  Улыбка)
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Вызовы 1CPP.DLL из PHP. Возможно ли это
Ответ #31 - 19. Июня 2007 :: 05:43
Печать  
ADirks писал(а) 19. Июня 2007 :: 05:34:
SP28269 IDDoc Это ты поле в документе обозвал IDDoc?  На такие издевательства я не рассчитывал  Улыбка)


Слушай точно, я и забыл, только это был не я а лет этак пару назад Улыбка общий реквизит в конфу вставили Улыбка
извиняюсь
  
Наверх
ICQ  
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Вызовы 1CPP.DLL из PHP. Возможно ли это
Ответ #32 - 19. Июня 2007 :: 06:14
Печать  
А что делает ХП Представление документа?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Вызовы 1CPP.DLL из PHP. Возможно ли это
Ответ #33 - 19. Июня 2007 :: 06:55
Печать  
yudin писал(а) 19. Июня 2007 :: 06:14:
А что делает ХП Представление документа?

Просто строковое представление документа.  В основном используется для дерева документов.  Во вьюшку я его включил исключительно для удобства писания запросов в QA
  
Наверх
 
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Вызовы 1CPP.DLL из PHP. Возможно ли это
Ответ #34 - 19. Июня 2007 :: 11:06
Печать  
А откуда ты его берешь? Если я не ошибаюсь, строкове представление документа - это Док.ПредставлениеВида() + Док.НомерДок+Док.ДатаДок, при этом ПредставлениеВида()  лежит только в MD, а следовательно в sql базе его нет... Или ты ее (ХП) генеришь из 1С и обновляешь при изменении конфы? Или я думаю не в том направлении?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Вызовы 1CPP.DLL из PHP. Возможно ли это
Ответ #35 - 19. Июня 2007 :: 12:11
Печать  
yudin писал(а) 19. Июня 2007 :: 11:06:
А откуда ты его берешь? Если я не ошибаюсь, строкове представление документа - это Док.ПредставлениеВида() + Док.НомерДок+Док.ДатаДок, при этом ПредставлениеВида()  лежит только в MD, а следовательно в sql базе его нет... Или ты ее (ХП) генеришь из 1С и обновляешь при изменении конфы? Или я думаю не в том направлении?

Да, там просто тупая ХПшка с офигенным CASE'ом.
Код
Выбрать все
	| CREATE FUNCTION ПредставлениеДокумента(@ИдДок9 Char(9), @ПоказыватьДату Bit, @ПоказыватьНомер Bit)
	| RETURNS varChar(100)
	| AS
	| Begin
	| --версия функции: "+Константа.РелизКонфигурации+"
	| 	Declare @СтрокаРезультата varChar(100), @ВидДок Int, @идДокОсн char(9), @ВидДокОсн Int
	|
	//| 	Set @ВидДока = IsNull((Select Top 1 IDDOCDEF From _1SJOURN (NoLock) Where IDDOC = @ИдДок9),0)
	|	SELECT TOP 1 @ВидДок = IsNull(IDDOCDEF, 0), @идДокОсн = Right($ОбщийРеквизит.ДокументОснование, 9)
	|	FROM _1SJOURN (NoLock)
	|	WHERE IDDOC = @ИдДок9
	| 	Set @ВидДокОсн = IsNull((Select Top 1 IDDOCDEF From _1SJOURN (NoLock) Where IDDOC = @идДокОсн),0)
	|
	| 	If @ВидДок = 0 Begin
	| 		Set @СтрокаРезультата = ''
	| 	End Else Begin
	| 		Set @СтрокаРезультата = Case @ВидДок";

	Для Н = 1 По Метаданные.Документ() Цикл
		ВидДокумента = Метаданные.Документ(Н).Идентификатор;
		ИмяДокумента = Метаданные.Документ(Н).Представление();
		ИДДокумента  = РадугаМД.ИДДокумента(ВидДокумента);

		Если ВидДокумента = "ЗакрытиеОстатков" Тогда
			ТекстЗапроса = ТекстЗапроса + "
			|			When "+ИДДокумента+" Then Case IsNull((Select Top 1 IDDOCDEF From _1SJOURN (NoLock) Where IDDOC = @идДокОсн),0)
			|				When $ВидДокумента.ЗаказТовараУПоставщика Then 'Закрытие заказа поставщику'
			|				When $ВидДокумента.ТранзитТовараОтПоставщика Then 'Закрытие транзита'
			|				When $ВидДокумента.ЗаявкаНаКомплектацию Then 'Закрытие заявки на комплектацию'
			|				When $ВидДокумента.Счет Then 'Закрытие счёта'
			|				When $ВидДокумента.ЗаявкаНаСклад Then 'Закрытие заявки на склад'
			|				Else '"+ИмяДокумента+"'
			|				End";
		ИначеЕсли ВидДокумента = "ЗаявкаНаСклад" Тогда
			ТекстЗапроса = ТекстЗапроса + "
			|			When "+ИДДокумента+" Then Case IsNull((SELECT $Заявка.фДляФилиала FROM $Документ.ЗаявкаНаСклад Заявка (NoLock) WHERE Заявка.IDDoc = @ИдДок9), 0)
			|				When 1 Then 'Заявка на склад (ф)'
			|				Else 'Заявка на склад'
			|				End";
		ИначеЕсли ВидДокумента = "РасходнаяНакладная" Тогда
			ТекстЗапроса = ТекстЗапроса + "
			|			When "+ИДДокумента+" Then Case IsNull((SELECT $РасхНакл.фДоставка FROM $Документ.РасходнаяНакладная РасхНакл (NoLock) WHERE РасхНакл.IDDoc = @ИдДок9), 0)
			|				When 1 Then 'Доставка'
			|				Else 'Расходная накладная'
			|				End";
		ИначеЕсли ВидДокумента = "ПереоценкаТоваров" Тогда
			ТекстЗапроса = ТекстЗапроса + "
			|			When "+ИДДокумента+" Then Case IsNull((SELECT $ПереоценкаТоваров.фПоВременномуХранению FROM $Документ.ПереоценкаТоваров ПереоценкаТоваров (NoLock) WHERE ПереоценкаТоваров.IDDoc = @ИдДок9), 0)
			|				When 1 Then 'Переоценка товаров (вр.хр)'
			|				Else 'Переоценка товаров'
			|				End";
		Иначе
			ТекстЗапроса = ТекстЗапроса + "
			|			When "+ИДДокумента+" Then '"+ИмяДокумента+"'";
		КонецЕсли;
	КонецЦикла;

	ТекстЗапроса = ТекстЗапроса + "
	| 			Else ''
	| 			End
	|
	| 		If @СтрокаРезультата <> '' Begin
	| 			If @ПоказыватьНомер = 1
	| 				Set @СтрокаРезультата = @СтрокаРезультата + ' № ' + (Select Top 1 LTrim(RTrim(DocNo)) From _1SJOURN (NoLock) Where IDDOC = @ИдДок9)
	| 			If @ПоказыватьДату = 1
	| 				Set @СтрокаРезультата = @СтрокаРезультата + ' от ' + (Select Top 1 Convert(Char(10),Cast(LEFT(DATE_TIME_IDDOC,8) As DateTime),104) From _1SJOURN (NoLock) Where IDDOC = @ИдДок9)
	| 		End
	| 	End
	|
	| 	Return @СтрокаРезультата
	| End
	| ";
 



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