Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Строка неограниченной длины (число прочтений - 8583 )
U_zer
Экс-Участник


Строка неограниченной длины
10. Февраля 2009 :: 11:09
Печать  
Всем привет!

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Строка неограниченной длины
Ответ #1 - 10. Февраля 2009 :: 11:20
Печать  
http://www.mista.ru/articles1c/hare/article.12.html (читай про "чудовище")
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Строка неограниченной длины
Ответ #2 - 10. Февраля 2009 :: 11:35
Печать  
JohnyDeath писал(а) 10. Февраля 2009 :: 11:20:
http://www.mista.ru/articles1c/hare/article.12.html (читай про "чудовище")


Спасибо! Но это для ДБФ, а для SQL?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Строка неограниченной длины
Ответ #3 - 10. Февраля 2009 :: 11:39
Печать  
По-моему без разницы.
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: Строка неограниченной длины
Ответ #4 - 10. Февраля 2009 :: 12:30
Печать  
Все поля неограниченной длинны должны быть в конце строки таблицы.
Это ограничение ODBC
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Строка неограниченной длины
Ответ #5 - 10. Февраля 2009 :: 12:40
Печать  
slawa писал(а) 10. Февраля 2009 :: 12:30:
Все поля неограниченной длинны должны быть в конце строки таблицы.
Это ограничение ODBC

Вроде ровно наоборот.
Сталкивался при переводе базы с dbf на sql. Значение реквизита неограниченной длины обрезалось, если он был последним в списке реквизитов.
А последней она должна быть в селект-листе запроса.
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Строка неограниченной длины
Ответ #6 - 10. Февраля 2009 :: 13:32
Печать  
vip писал(а) 10. Февраля 2009 :: 12:40:
slawa писал(а) 10. Февраля 2009 :: 12:30:
Все поля неограниченной длинны должны быть в конце строки таблицы.
Это ограничение ODBC

Вроде ровно наоборот.
Сталкивался при переводе базы с dbf на sql. Значение реквизита неограниченной длины обрезалось, если он был последним в списке реквизитов.
А последней она должна быть в селект-листе запроса.


Что это? Про sql?
В ДБФ без разницы где и сколько.
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: Строка неограниченной длины
Ответ #7 - 10. Февраля 2009 :: 23:32
Печать  
vip писал(а) 10. Февраля 2009 :: 12:40:
slawa писал(а) 10. Февраля 2009 :: 12:30:
Все поля неограниченной длинны должны быть в конце строки таблицы.
Это ограничение ODBC

Вроде ровно наоборот.
Сталкивался при переводе базы с dbf на sql. Значение реквизита неограниченной длины обрезалось, если он был последним в списке реквизитов.
А последней она должна быть в селект-листе запроса.


В селекте строки неог.длины должны быть в конце (Это ограничение ODBC).
1С-ка про это не знает и поэтому запросы собирает по порядку реквизитов. Тут и появляются проблемы, например при реорганизации базы, если эти реквизиты не в конце списка.
Кажись так.
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Строка неограниченной длины
Ответ #8 - 11. Февраля 2009 :: 07:27
Печать  
slawa писал(а) 10. Февраля 2009 :: 23:32:
vip писал(а) 10. Февраля 2009 :: 12:40:
slawa писал(а) 10. Февраля 2009 :: 12:30:
Все поля неограниченной длинны должны быть в конце строки таблицы.
Это ограничение ODBC

Вроде ровно наоборот.
Сталкивался при переводе базы с dbf на sql. Значение реквизита неограниченной длины обрезалось, если он был последним в списке реквизитов.
А последней она должна быть в селект-листе запроса.


В селекте строки неог.длины должны быть в конце (Это ограничение ODBC).
1С-ка про это не знает и поэтому запросы собирает по порядку реквизитов. Тут и появляются проблемы, например при реорганизации базы, если эти реквизиты не в конце списка.
Кажись так.


В конце какого списка?
Например, у меня реквизит неогр длины в шапке документа.
Я вообще слышал, что данное ограничение для общих реквизитов документа. Вообще, интересует крэш-тест, есть ли такой? Ну, типа запросик, что-ли, чтобы выполнить - и получить ошибку ....
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Строка неограниченной длины
Ответ #9 - 11. Февраля 2009 :: 08:01
Печать  
сейчас проверил.
у меня под sql 2000
Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)   May  3 2005 23:18:38   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Все работает независимо последний или нет строка неограниченной длины
Код
Выбрать все
	Запрос = СоздатьОбъект("ODBCRecordSet");
		ТекстЗапроса = "
		|select top 100  sp6157,sp6158 from dh6156
		|";
		ТЗ1 = "";
		Сообщить("ТекстЗапроса = " + ТекстЗапроса);
		Запрос.Отладка(1);
		ТЗ1 = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
		ТЗ1.ВыбратьСтроку();
 



Код
Выбрать все
	Запрос = СоздатьОбъект("ODBCRecordSet");
		ТекстЗапроса = "
		|select top 100  sp6158,sp6157 from dh6156
		|";
		ТЗ1 = "";
		Сообщить("ТекстЗапроса = " + ТекстЗапроса);
		Запрос.Отладка(1);
		ТЗ1 = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
		ТЗ1.ВыбратьСтроку();
 



поле sp6158 строка неограниченной длины
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: Строка неограниченной длины
Ответ #10 - 11. Февраля 2009 :: 09:14
Печать  
Цитата:
В конце какого списка?
Например, у меня реквизит неогр длины в шапке документа.
Я вообще слышал, что данное ограничение для общих реквизитов документа. Вообще, интересует крэш-тест, есть ли такой? Ну, типа запросик, что-ли, чтобы выполнить - и получить ошибку ....


Да, точно, вспомнил Улыбка
Именно в конце общих реквизитов документов.
Иначе SQL 1С-ка падает.
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: Строка неограниченной длины
Ответ #11 - 11. Февраля 2009 :: 09:16
Печать  
Z1 писал(а) 11. Февраля 2009 :: 08:01:
Все работает независимо последний или нет строка неограниченной длины


По ошибке не вылетает, но данные, из неог.строки,  не вернет.
Проверь, полученные данные и в первом и во втором случает.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Строка неограниченной длины
Ответ #12 - 11. Февраля 2009 :: 09:36
Печать  
slawa писал(а) 11. Февраля 2009 :: 09:16:
Z1 писал(а) 11. Февраля 2009 :: 08:01:
Все работает независимо последний или нет строка неограниченной длины


По ошибке не вылетает, но данные, из неог.строки,  не вернет.
Проверь, полученные данные и в первом и во втором случает.


Проверил в qa работает всегда правильно независимо от порядка


в 1с ( т.е. под ODBC )
select top 100  sp6158,sp6157 from dh6156
когда рекв неог длины не последний работает НЕПРАВИЛЬНО
возвращает пустые строки

select top 100  sp6157,sp6158 from dh6156
когда рекв неог длины  последний работает ПРАВИЛЬНО
возвращает содержимое  строк

т.е для ODBC строки неогранич длины должны быть последними.

  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Строка неограниченной длины
Ответ #13 - 11. Февраля 2009 :: 09:52
Печать  
Z1 писал(а) 11. Февраля 2009 :: 09:36:
slawa писал(а) 11. Февраля 2009 :: 09:16:
Z1 писал(а) 11. Февраля 2009 :: 08:01:
Все работает независимо последний или нет строка неограниченной длины




в 1с ( т.е. под ODBC )
select top 100  sp6158,sp6157 from dh6156
когда рекв неог длины не последний работает НЕПРАВИЛЬНО
возвращает пустые строки

select top 100  sp6157,sp6158 from dh6156
когда рекв неог длины  последний работает ПРАВИЛЬНО
возвращает содержимое  строк

т.е для ODBC строки неогранич длины должны быть последними.



О! Вот оказывается что. Спасибо за исследование!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать