Почему-то не работает прямой запрос из другой конфигурации.

1. succub1_5 89 12.11.15 10:31 Сейчас в теме
Почему-то не работает прямой запрос из другой конфигурации.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DenisCh 12.11.15 10:32 Сейчас в теме
Клёво...
Телепаты обычно тусуются на другом форуме...
3. succub1_5 89 12.11.15 10:34 Сейчас в теме
**Глючит отправка

Здравствуйте, имеется платформа 7.7 и 2 конфы: ТиС 9.2 в котрой создавался и тестировался запрос:
Запрос = СоздатьОбъект("ODBCRecordset");    
	ТекстЗапроса = "
	|SELECT
	|	CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 4111 THEN
	|		'         Отчет кассовой смены №'
	|	ELSE
	|		CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 239 THEN
	|			'         Перемещение №'
	|		ELSE
	|			CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 434 THEN
	|				'         Приходная накладная №'
	|			ELSE
	|				CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 297 THEN
	|					'         Списание №'
	|				ELSE
	|					CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 4093 THEN
	|						'         Оприходование излишков №'
	|					ELSE
	|						'         ' + CAST(РегистрОстаткиТоваров.ВидДокумента AS varchar(9))
	|					END
	|				END
	|			END
	|		END
	|	END + RTRIM(Журнал.DOCNO) + ' от ' + SUBSTRING(РегистрОстаткиТоваров.ПозицияДокумента, 7, 2) + '.' + SUBSTRING(РегистрОстаткиТоваров.ПозицияДокумента, 5, 2) + '.' + SUBSTRING(РегистрОстаткиТоваров.ПозицияДокумента, 3, 2) AS ВидДокумента,
	|	РегистрОстаткиТоваров.ОстатокТовараНачальныйОстаток,
	|	РегистрОстаткиТоваров.ОстатокТовараПриход,
	|	РегистрОстаткиТоваров.ОстатокТовараРасход,
	|	РегистрОстаткиТоваров.ОстатокТовараКонечныйОстаток,
	|	'4!' + CAST(РегистрОстаткиТоваров.ВидДокумента AS varchar(9)) + '!' + RIGHT(РегистрОстаткиТоваров.ПозицияДокумента, 9) 
	|FROM                                
	|	$РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~, Документ, Движения, , Фирма = :Фирма AND Склад = :Склад AND Товар = :Расшифровка, Товар, ОстатокТовара) AS РегистрОстаткиТоваров
	|LEFT JOIN
	|	_1SJOURN AS Журнал
	|	ON Журнал.IDDOC = RIGHT(РегистрОстаткиТоваров.ПозицияДокумента, 9)
	|ORDER BY
	|	LEFT(РегистрОстаткиТоваров.ПозицияДокумента, 8)
	|";
	
	// параметры запроса
	НачДата = ДатаНач;
	КонДата = ДатаКон;
	СкладИД = "     J   ";
	Расшифровка = "  1DTL   ";
	Запрос.УстановитьТекстовыйПараметр("НачДата", НачДата);
	Запрос.УстановитьТекстовыйПараметр("КонДата", КонДата);
	Запрос.УстановитьТекстовыйПараметр("Фирма", "     0   "); // пустая фирма
	Запрос.УстановитьТекстовыйПараметр("Склад", СкладИД);
	Запрос.УстановитьТекстовыйПараметр("Расшифровка", Расшифровка);
	
	Запрос.Отладка(1);  
	
	Результат = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);   
	Сообщить(Результат.КоличествоСтрок());
	
	Если Результат.КоличествоСтрок() > 0 Тогда            
		Результат.ВыбратьСтроки();
		Пока Результат.ПолучитьСтроку() = 1 Цикл
			Сообщить("" + Результат.ВидДокумента + " - " + Результат.ОстатокТовараНачальныйОстаток + " " + Результат.ОстатокТовараПриход + " " + Результат.ОстатокТовараРасход + " " + Результат.ОстатокТовараКонечныйОстаток);    
		КонецЦикла;
	КонецЕсли;
Показать
и отработал отлично.
4. succub1_5 89 12.11.15 10:34 Сейчас в теме
И самописная конфа, в которой удаленно подключаемся к базе и тот же самый запрос выдает ошибку: Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ОстаткиТоваров", а если из запроса
|FROM                                
	|	$РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~, Документ, Движения, , Фирма = :Фирма AND Склад = :Склад AND Товар = :Расшифровка, Товар, ОстатокТовара) AS РегистрОстаткиТоваров
убрать Документ и соответственно закомментировать все к документу относящееся, то начинает работать.
ЧЯДНТ?
5. adva 45 12.11.15 11:22 Сейчас в теме
может конфы отличаются по структуре (по внутренним идентификаторам объектов, а не по именам)?
6. ditp 91 12.11.15 11:34 Сейчас в теме
Возможно, стоит посмотреть на свойство md (http://www.1cpp.ru/docum/icpp/html/ODBC.html#md) и метод ПрисоединитьМД (http://www.1cpp.ru/docum/icpp/html/ODBC.html#metadatawork)
7. succub1_5 89 12.11.15 12:06 Сейчас в теме
(6) ditp, да я когда разбирался пользовался - удобный мануал:
РегистрОстаткиОбороты

Виртуальная таблица остатков и оборотов

Синтаксис:

$РегистрОстаткиОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][, <Периодичность>][,<МетодДополнения>][,
<Соединение>][,
<Условие>][,
<Измерение>][,<Ресурс>]
) [as <Алиас>]

Параметры:

НачалоПериода - тип: значение. Строка, представляющая период или момент времени во внутреннем формате 1С. По умолчанию начало ведения учета.

КонецПериода - тип: значение. Строка, представляющая период или момент времени во внутреннем формате 1С. Если передан период времени (дата, позиция документа), он в расчет не включается. Для того чтобы он включался в расчет нужно воспользоваться модификатором, или предварительно сформировать момент времени (См. СформироватьПозициюДокумента()). По умолчанию точка актуальности.

Периодичность - тип: конструкция типа ключевое слово. Указывается дополнительный разворот итогов по периодичности. Задается один из следующих вариантов:

Период | Period - только за период (не разворачивать);
Документ | Document - разворачивать по документу;
День | Day - разворачивать по дням;
Неделя | Week - разворачивать по неделям;
Декада | TenDays - разворачивать по декадам;
Месяц | Month - разворачивать по месяцам;
Квартал | Quarter - разворачивать по кварталам;
Год | Year - разворачивать по годам.

По умолчанию Период.

МетодДополнения - тип: конструкция типа ключевое слово. Имеет смысл, только когда используется разворот по периодам. Задается один из следующих вариантов:

Движения (Actions) - в таблицу включаются обороты по каждому периоду движений, и текущие остатки только по тем комбинациям измерений, по которым были движения в период расчета;
ДвиженияИГраницыПериода (ActionsAndPeriodBoundaries) - в таблицу включаются обороты по каждому периоду движений и текущие остатки; также таблица дополняется записями о ненулевых остатках на начало и/или конец на границы периода расчета.

Соединение - тип: конструкция типа join. На языке SQL можно описать дополнительные соединения с таблицами, которые могут быть необходимы для формирования условий в следующем параметре. Можно оперировать полями измерений регистра, обращаясь к ним по идентификатору 1С. По умолчанию отсутствует.

Условие - тип: конструкция типа where. На языке SQL можно описать условие для ограничения выборки. Можно оперировать полями измерений регистра, обращаясь к ним по идентификатору 1С, а также полями таблиц, соединения с которыми были описаны в предыдущем параметре. По умолчанию отсутствует.

Измерение - тип: конструкция типа список идентификаторов. Указывается список измерений, по которым нужно рассчитать остатки и обороты. По умолчанию по всем.

Ресурс - тип: конструкция типа список идентификаторов. Указывается список ресурсов, которые нужно рассчитать. По умолчанию по всем.

Поля:

<ИмяИзмерения> - имена измерений указанных к расчету; тип определяется типом измерения регистра;
<ИмяРесурса>НачальныйОстаток - имена ресурсов с добавлением слова НачальныйОстаток, указанных к расчету; тип определяется типом ресурса регистра;
<ИмяРесурса>Приход - имена ресурсов с добавлением слова Приход, указанных к расчету; тип определяется типом ресурса регистра;
<ИмяРесурса>Расход - имена ресурсов с добавлением слова Расход, указанных к расчету; тип определяется типом ресурса регистра;
<ИмяРесурса>КонечныйОстаток - имена ресурсов с добавлением слова НачальныйОстаток, указанных к расчету; тип определяется типом ресурса регистра;
Период - тип datetime; дата начала периода, по которому происходит разворот оборотов; существует только в том случае, если указана периодичность День, Неделя, Декада, Месяц, Квартал, Год;
ПозицияДокумента - тип char(23); строка в формате date_time_iddoc (8+6+9); существует только в том случае, если указана периодичность Документ;
ВидДокумента - тип int; идентификатор вида документа; существует только в том случае, если указана периодичность Документ.

Описание: Используется для получения остатков и оборотов. Определена только для регистра остатков.
Показать

Так же собственно и делаю. Мб дело не в синтаксисе?
8. ditp 91 12.11.15 12:09 Сейчас в теме
(7) succub1_5, так я и пишу не про синтаксис, а про свойство md у объекта ODBCRecordset и о том, что его нужно правильно инициализировать с помощью ПрисоединитьМД

P.S. скобочки испортили ссылки. должно быть http://www.1cpp.ru/docum/icpp/html/ODBC.html#md и http://www.1cpp.ru/docum/icpp/html/ODBC.html#metadatawork
9. succub1_5 89 12.11.15 13:15 Сейчас в теме
еще нюанс: на 2003 Win работает без проблем, на XP нет, версии драйвера 2003 - SQL Server 2000.86.3959.00, XP - 2000.85 - может из-за этого?
После подмены файлов версии стали одинаковые, но всеравно не пашет.
10. VitusBering 5 12.11.15 13:41 Сейчас в теме
Может проблема в идентификации имени самой таблицы. Попробуйте заменить "$РегистрОстаткиОбороты.ОстаткиТоваров" на реальное имя таблицы (которое из букв и цифр состоит) и не использовать метапарсер имен.
11. succub1_5 89 12.11.15 14:05 Сейчас в теме
(10) VitusBering, мм сложновато конечно напрямую вот что Запрос.Отладка(1) выдает (на Win 2003 или 7) #TC4E455A3A6D64DDEBB8D354CD3A4F778...
12. VitusBering 5 12.11.15 14:09 Сейчас в теме
Если имя фиксированное, то и хрен с ним, пусть такое кудрявое будет )) только вот на счет постоянства имени виртуальной таблицы уже не уверен...
13. succub1_5 89 12.11.15 14:11 Сейчас в теме
(12) VitusBering, по другому складу/товару вот что сформировало: #T5C8300D8D60F492193BF05350E9EF3B5
Поэоду проблема не в запросе, а в версиях винды и что там связано с версией драйвера.
14. succub1_5 89 13.11.15 08:08 Сейчас в теме
Всем спасибо за советы, все оказалось куда проще - надо было 1CPP.dll последнюю где WinXP скопировать =)
15. 1yh1 17.11.15 09:01 Сейчас в теме
иногда удобнее насоздавать view в SQL server и обращаться напрямую к ним без $,
и запросы тестировать удобней

sel ect * fr om Д_ОтгрузкаТовара Документ
left join дс_ОтгрузкаТовара ДокументСтроки on ДокументСтроки.iddoc = документ.iddoc
where ДатаДок between :НачДата and :КонДата~

вот обработка: (с) pvase 2007 http://metaprog.co.ua
чуть изменённая мной
Прикрепленные файлы:
CreateViewMY.ert
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот