Секретный релиз платформы v77.27.1

Секретный релиз платформы v77.27.1

Исправления платформы, позволяющие запустить 1cv77 в клиент-серверном варианте на СУБД MS SQL 2005/2008 без понижения режима совместимости.


24.02.2011 18:24 [16.01.2012 21:44] (spock) Kirill 337 [+] [−] Перейти к публикации

Страницы: 1 2 3 4 5 След.
1.
Ёпрст (файл скачал) 07.03.11 23:10 URL

Поделился всё таки тайным знанием..

Ответили: (31) (432) (450)

2.
Ёпрст (файл скачал) 07.03.11 23:11 URL

Метода опробована хоть?

3.
vasilykushnir (файл скачал) 07.03.11 23:35 URL

Опробована, опробована.
Рабочая база на 2000 скуле, копия дома и на работе на 2005 - уже больше года никак руки не дойдут перевести и рабочую на 2005-й.

Ответили: (379)

4.
waol (файл скачал) 09.03.11 13:47 URL

с 64-битной Windows 7 - работать будет ?

5.
wolfsoft 09.03.11 13:52 URL

Мне вроде нафиг не надо, но за такое "плюс" надо поставить просто за сам факт существования smile:D

6.
spock 09.03.11 16:56 URL

Перенесу-ка сюда.

Главная цель - загрузиться как можно раньше, а там разберемся, следовательно, ТСВК для этого случая не подходит.

Выбор способа загрузки
Возможны разные способы загрузки своей dll в адресное пространство приложения-жертвы по легальности и сложности - в интернетах об этом полно инфы. Я выбрал так называемый Trojan/Proxy dll. Кому интересно могут поизучать тему в интернетах и/или у Рихтера. Если вкратце, то суть метода заключается в том, что вместо родной dll кладется своя, которая тупо редиректит экспортируемые функции в нужную dll. Почему и называется proxy dll. Видел где-то описание методов, когда делается такой финт без подмены dll, но это отдельная история, если Саня (orefkov) захочет, то он ее расскажет smile:) Со способом загрузки определились.

Способ проброса экспортируемых функций
Как известно, имеется такое понятие, как экспортируемые и импортируемые функции. Говорим за первое. Т.е. если в коде функции помечены экспортируемыми, то в соответствующей таблице экспорта они будут фигурировать и значит, какой-то другой модуль может их использовать, объявя у себя ее импортируемой (следовательно, будет светиться в таблице импорта). Вот напочитать: http://msdn.microsoft.com/en-us/library/a90k134d(VS.80).aspx
Зная, все это осталось только прикинуться BkEnd.dll, в которой реализован проброс. Как выяснилось, BkEnd.dll экспортирует чуть больше 4 тыс. функций... Вы же не подумали, что я все пробросы делал руками? smile:) Берем в руки DUMPBIN.exe с ключом /EXPORTS, скриптуем необходимое и получаем, что нужно. Я было начал делать проброс через pragma-директивы, но почему-то на трех экспортируемых функциях компилятор падал, пришлось делать старым добрым def-файлом. Формат в нашем случаем простой:
ИмяФункции = BkEnd0.ИмяФункции
И вот так для >4 тыс. функций.

Такие пробросы (FuncName = SomeDLL.FuncName) придумала Microsoft давно, вроде, как пишут историки, для случаев, когда будет нехватать места на винтах, чтобы это разруливать. Ну вот и смогли загрузиться и даже пробросы сами работают. Т.е. все просто до безобразия. Из программирования было только скриптование вывода DUMPBIN.

Теперь пытаемся цепануться к mssql2005/2008, как и следовало ожидать, ругается на версию скуля. Если пытаемся цепляться к скулю с машинок, где ОС Vista/7/2008 еще видим предупреждение о неверной версии odbc. Проблемы одного порядка, как оказывается.

Небольшая вводная - 1с использует odbc, как уже догадались.

Для определения версии СУБД и версии odbc (драйвера и диспетчера) 1с использует функцию из ODBCAPI SQLGetInfo: http://msdn.microsoft.com/en-us/library/ms711681(VS.85).aspx
Где второй параметр InfoType:
- SQL_ODBC_VER (Диспетчер драйверов odbc32.dll);
- SQL_DRIVER_VER (Драйвер odbc sqlsrv32.dll, это определяется строкой подключения);
- SQL_DBMS_VER (Версия СУБД);
Т.е. эти значения 1с запрашивает, на что получает соответствующие ответы.
Начнем с конца SQL_DBMS_VER - для 2005 и 2008 там будет 09.xxx.xxxx и 10.xxx.xxxx соответственно. Видимо, в 1с стратегически решили остановиться на 08.xxx.xxxx, и все, что старше обрабатывать, как дефолтная ошибка (switch там вроде) - потому получаем неадекватное сообщение об ошибке.
С SQL_DRIVER_VER та же самая ситуация. Но SQL_ODBC_VER обрабатывается ровно, потому что в новых ОС версия таже.

Знаем название функции, через которую 1с получает версии, значит путь решения близок. Путь решения: <censored>.

В народной версии, где патчится BkEnd.dll просто в нужных местах делаются переходы (аналог GOTO) тех мест, где преверяются версии. Точнее смогут ответить только авторы тех решений. Для этого решения практически тоже самое, т.е. если версия больше 08.xxx.xxxx, то значит показываем 1с версию 08.xxx.xxxx. С версие odbc так же, только номера другие smile:)
И вот уже можем цепляться к MSSQL 2005/2008 (MSSQL 2000 и ниже тоже в силе), а так же с новых ОС, где поменяли версии odbc.

Вот все до этого было бесплатным бонусом, а вот запуск без режима совместимости - главный профит.

Ответили: (8)

7.
spock 09.03.11 16:58 URL

Цитата
waol пишет:с 64-битной Windows 7 - работать будет ?

Вот проверить и убедиться мне негде, но должно работать.

8.
orefkov (файл скачал) 10.03.11 1:32 URL

(6)
Хлеба и зрелищ!
Давай про режим совместимости описывай.

9.
pupkinSana (файл скачал) 10.03.11 13:48 URL

Интересно, а режим совместимости значительно влияет на тормоза?

Ответили: (450)

10.
spock 10.03.11 16:24 URL

опять скопипаст

Некоторые могут возразить, что дескать почему мы игнорируем версии новых odbc, не приведет ли это к неопределенному поведению? Может быть Microsoft сошла с ума и в новых версиях odbc-драйверов все переделала? Имеет место быть такое опасение, однако MSDN умалчивает тот факт, что Microsoft сошла с ума. Значит считаем, что все ровно.

Дошли до момента, где база переводится в родной режим (90-2005, 10-2008)
Так как уже имеется опыт подмены вызовов ODBCAPI, то ничто не запрещает быть последовательным далее.
Как известно odbc может непосредственно передавать инструкцию на исполнение, так и через механизм предварительной подготовки. А именно:
- непосредственно SQLExecDirect: http://msdn.microsoft.com/en-us/library/ms713611(v=VS.85).aspx
- подготовленный SQLPrepare: http://msdn.microsoft.com/en-us/library/ms710926(v=VS.85).aspx

Правда имеется таких функций пара (A/W), и помня, что 1с далеко не юникод, то пара W-функций нам не нужна.
Вот и все проблемы с запуском на 2005/2008 свелись к узкому горлышку, мимо которого ничто не проскочет.

Применяя сим-салабим, получаем в руки все запросы, уходящие на сервер - делай с ними что хочешь. А хотим мы, чтобы они воспринимались скулем 2005/2008.

В чем проблема с запросами?
1. С SQL2005 ужесточили синтаксис табличных хинтов (это которые в скобках идут после имени таблицы), теперь нужно указывать ключ. слово WITH:
- про 2000 читаем с абзаца Table Hints: http://technet.microsoft.com/en-us/library/aa258869(SQL.80).aspx
- про 2005 читаем с абзаца WITH (<table_hint> ): http://msdn.microsoft.com/ru-ru/library/ms177634(v=SQL.90).aspx
- про 2008: http://msdn.microsoft.com/ru-ru/library/ms187373(v=SQL.100).aspx

Вывод: если есть хинты, то разделяем их запятыми и вставляем ключ. слово WITH. Если хинт один, то на всякий случай вставляем WITH тоже - после SQL2008 обещают запретить вообще не указывать это ключ. слово. А таааакже вырезаем нафиг хинт, указывающий какой индекс использовать.

Так как разнообразие запросов, генерируемых 1с, мало, то проблема решилась небольшим регулярным выражением.

2. После реструктуризации 1с обрезает журнал транзакций: DUMP TRANSACTION ...
Вот этот момент спорный и каюсь поспешил - заменил на ALTER DATABASE <DB> SET SINGLE_USER
В следующей версии просто ничего слаться не будет. Потому как у некоторых включен режим FULL, и после такой инструкции нужно прописывать руками. Ну и если не слать ничего, то и бекапирование ломаться не будет.

Ответили: (11)

11.
Cthulhu (файл скачал) 11.03.11 17:35 URL

(10) "В следующей версии просто ничего слаться не будет." - под "следующей" имеется ввиду то, что тут выложено, или то, что ещё будет? если второе - то уж заодно и "когда приблизительно?"

Ответили: (13)

12.
Cthulhu (файл скачал) 11.03.11 17:45 URL

ЗЫ: и если уж "Вот и все проблемы с запуском на 2005/2008 свелись к узкому горлышку, мимо которого ничто не проскочет." + "Так как разнообразие запросов, генерируемых 1с, мало, то проблема решилась небольшим регулярным выражением." - то в этом же "узком горлышке" мо стоило бы подрихтовать заодно уж и вот эту - "ВыбратьПодчиненныеДокументы() проблема началась с sql2005. точнее проблема не в sql а в плохом запросе который генериться из 1с когда НЕ ЗАДАН интервал подчиненных документов старшая дата береться равной 30.12.9999 ( а надо 31 или вообще не ставить это условие)" (с) - беду??..

Ответили: (13)

13.
spock 11.03.11 17:50 URL

(11)на выходных доделаю.
(12)так не вижу этой проблемы на 2008. Я не могу ее повторить.

Ответили: (14) (450)

14.
Cthulhu (файл скачал) 11.03.11 17:58 URL

(13): спасибо, буду заглядывать с нетерпением.
(в 2005-м вроде есть проблема - там же в принципе несложно должно быть конец интервала если он 30.12.9999 - тупо вырезать, нэ? думаю что тем, кто на 2005-х крутит или - как я - собирается - будет очень нужно)

ЗЗЫ: а, да, забыл по первых словах увлекшись громадьем и важностью решения - респектище + спасибище тебе!

15.
gordon_free_man (файл скачал) 20.03.11 1:40 URL

Полная лажа!!!!! В архиве 2 библиотеки. BkEnd.dll BkEndUtls.dll. Так вот замена BkEnd.dll влечет ошибку "Точка входа и так далее". BkEndUtls.dll не дало тоже результатов. А еще назвали Секретный релиз платформы v77.27.1 smile:)))))

Много писать не буду. Но суть проблеммы в том что решил связать как и многие Windows Server 2008 (2008R2) и SQL 2008 (2008R2). Собственно говоря это все работает и хорошо! Только одно НО!!! Загружать базу данных надо из под Windows XP!!! OrdNoChk.prm не работает с конфигуратором при загрузке данных кроме Windows Xp. Так База загруженная с XP потом нормально открываеться В 2008 и Seven.

Вот посоветовали этот топик. Как и писал полная фигня!!!! Интересно тот кто создавал он хоть сам проверял?

Ответили: (16)

16.
CheBurator (файл скачал) 20.03.11 1:52 URL

(15) хоть бы запостил что конкретно фигпя/// а то автору тебя отлавливать надо.. на мисту бжать.. там читать...

17.
gordon_free_man (файл скачал) 20.03.11 1:59 URL

Еще раз повторюсь при замене BkEnd.dll библиотеке из архива 1с ПИШЕТ ОШИБКУ! Файл я прикрепил..... Не работает этот секретный вариантsmile:)

Ответили: (18)

18.
spock 20.03.11 9:09 URL

(17)у кого как... В твоем случае он не работает - ищи другие варианты.

21.
cathode (файл скачал) 20.03.11 15:51 URL

Что касается ошибки точки входа - Вы абсолютно уверены, что взяли BkEnd.dll от 27-го релиза? И что установка была произведена в точности так, как описывает автор разработки?
Ошибка порядка сортировки при загрузке с помощью стандартной BkEnd.dll решается очень просто: смещение 0x0018a79d, отдизассемблируйте и посмотрите внимательно на байтик. Если Ваш профессионализм составляет хотя бы сотую долю Вашего самолюбия, Вы разберетесь, что с этим байтиком делать.
В противном же случае, чтобы получить помощь, нужно всего лишь корректно попросить о помощи, и не более того. Окружающие Вас люди в Ваших личных тараканах не виноваты.

22.
valery_ok (файл скачал) 23.03.11 0:11 URL

спасибо автору.
у меня все работает на w2k8 R2 и sql w2k8 R2, но 1с не увидела ключа (буду разбираться, видимо в 64х битном режиме что-то) и при загрузке данных ругается на кодовую страницу, хотя с подключенной базой с sql2000 все нормально.
кстати можно ли узнать об изменениях которые автор внес в последнее время, а то файлы обновляются, а что должно изменится неясно

Ответили: (23)

23.
spock 23.03.11 16:38 URL

(22)убей OrdNoChk.prm каталогах программы и ИБ. Он больше не нужен, и даже больше - мешает.

Ответили: (272)

24.
spock 23.03.11 16:39 URL

+23 отпишу изменения в (0)

25.
sml (файл скачал) 28.03.11 14:27 URL

у меня w7 x64 + ms_sql_2005sp3 базы перенес как файлы (отцепил, скопировал и прицепил к новому серваку)
при запуске Предприятия ругается на несоответствие таблиц (prm-ки в каталоге нет)

что посоветуете?

Ответили: (26)

26.
spock 28.03.11 16:48 URL

(25)"несоответствие таблиц" - это md+dds не соответствуют физической структуре БД или что? Если есть проблемы, то ошибку лучше поточнее озвучивать вплоть до цитаты.
"prm-ки в каталоге нет" - посмотреть нужно в двух каталогах - КаталогИБ() и КаталогПрограммы().
Ну и еще, там в рекомендациях я просил вызывать реструктуризацию, т.к. в ХП тоже есть код проблемный по синтаксису.

27.
sml (файл скачал) 28.03.11 20:35 URL

Несоответствие таблиц - это про кодовые таблицы. Пришлось вернуть prm-ку в БИН-каталог. А чтобы не ругалась система на версию ODBC, пришлось заменить 3 файла драйвера в системном каталоге (от w2003servR2).
Да, если кто пользует Openconf, то его пришлось установить только из тотоалкомандира, запущенного с правами Админа (старт батника с правами Админа не позволяет зарегить библиотеки).

28.
sml (файл скачал) 29.03.11 10:10 URL

Скачал последнюю версию (у меня до этого была от 7марта) без prm-ки нормально подключился, но вылез другой глюк:
Invalid column name 'getdate'

на запросе:

select
case
when exists(
select Отгрузка.iddoc

from $Документ.Рейс as Рейс (nolock)
inner join $Документ.ОтгрузкаТМЦ as Отгрузка (nolock) on $Отгрузка.Док_Рейс = Рейс.iddoc and Рейс.iddoc = :ТекРейс
inner join _1sjourn as ЖурОтгрузки (nolock) on ЖурОтгрузки.iddoc = Отгрузка.iddoc
left join $Справочник.РеестрДокументовДОП as Реестр (nolock) on $Реестр.Документ = Отгрузка.iddoc
left join $Справочник.Контрагенты as Контрагенты (nolock) on Контрагенты.id = $Рейс.Покупатель

where
isnull($Реестр.ДокументыПолученыБух, 0) = 0
and datediff(day, cast(left(ЖурОтгрузки.date_time_iddoc, 8) as datetime), dateadd(day, datediff(day, 0, getdate()), 0)) > 5
and $Контрагенты.ВидКонтрагента <> $Перечисление.ВидыКонтрагентов.ЧастноеЛицо
and $Рейс.НалОпт <> 1

group by Отгрузка.iddoc

) then 1
else 0
end as [флДокументарнаяЗадолженность$Число]

Команда идет: ВыполнитьСкалярный

Ответили: (29)

29.
spock 29.03.11 16:48 URL

(28)ага, весь день сегодня хотел спросить на какой версии оно так вылезло - а оно вонокак.

Так это не глюк, а новые задачи для разработчика этого sql-скрипта smile:)
Решение исправляет проблемы платформы, а свои скрипты каждый правит сам под себя.

ps: Лучше выкладывать уже распарсенные sql-скрипты.

Ответили: (33)

Изменено: spock - 29.03.11 16:56
30.
sml (файл скачал) 29.03.11 20:00 URL

Если я правильно понимаю, Ваш патченый bkend предназначен только для конфигураций, где не используются прямые запросы, например с использованием 1cpp?

31.
spock 29.03.11 20:08 URL

Цитата
...Ваш патченый bkend...
- не патченный.
Цитата
...где не используются прямые запросы...
- такого не задумывалось, если есть такое странное поведение, то оно должно быть исправлено.

Запрос после Отладка(1) совпадает с тем, что поймано профайлером?

32.
ЗАК (файл скачал) 30.03.11 0:07 URL

Отличная вещь, спасибо. На Win2008R2 x64 + SQL2008R2 заработало как по маслу

33.
zk96 (файл скачал) 30.03.11 0:42 URL

(29)
У меня тоже GetDate() не сработал
Было
ТекстЗапроса="
|SELECT GETDATE()
|";
Сделал
ТекстЗапроса="
|SELECT current_timestamp
|";
Теперь запрос работает, но почему GETDATE() непринимается? SMS его прекрасно воспинимает.
Дальше-болше. Понятно, что некотрые запросы прийдется переписать, но не понимаю почему так.
Ведь скуль2005 и 2008 прекрасно воспринимают табличные хинты типа NOLOCK SERIALIZABLE и тп без WITH.
Может я что-то не так настроил? Что значит реструкторизация? Может я не понял как ее произвести.
SPOCK, напиши пожалуста об этом попродробней.

Ответили: (39)

34.
1yh1 (файл скачал) 30.03.11 12:01 URL

Цитата
zk96 пишет:
У меня тоже GetDate() не сработал

А может удобнее объявить свою функцию GetDate()?
Возвращающую current_timestamp.
Мне интересно: есть ли какие-то преимущества в использовании формата SQL 2005/8?
В скорости работы 1C, мож в блокировках, исчезновении дэдлоков?
Из недостатков, я так понял: нельзя делать реорганизацию, надо переписывать некоторые прямые SQL запросы
Автору, конечно: +. Вещь нужная, другой вариант решения этой проблемы, написание, как Ethersoft, ODBC-драйвера с парсером.

Ответили: (35) (47)

Изменено: 1yh1 - 30.03.11 12:21
35.
zk96 (файл скачал) 30.03.11 12:39 URL

(34) Что значит "объявить свою функцию GetDate()" ? Это функция скуля, разве можно ее переписать?

Ответили: (36) (39)

36.
1yh1 (файл скачал) 30.03.11 17:52 URL

(35)
будет dbo.GetDate(), всё-равно менять, так что лучше current_timestamp

37.
lordxxl (файл скачал) 30.03.11 18:42 URL

У меня при обмене РБД говорит что "порядок сортировки, установленный для базы данных, отличается от системного" хотя в языковых настройках везде русский, файлик отмены проверки в каталоге иб(OrdNoChk.prm)не помогает. Кто-нибудь сталкивался?

система: Server 2008
sql: MS SQL 2008

Ответили: (39)

38.
lordxxl (файл скачал) 30.03.11 18:49 URL

PS: в настройках БД стоит порядок сортировки Cyrillic_General_CI_AS

Изменено: lordxxl - 30.03.11 18:50
39.
spock 30.03.11 20:46 URL

у кого была засада с GetDate() попробуйте новый вариант.

(33)Про "Дальше-болше." давай подробнее. Пример запроса, на котором проблема проявляется.
"Что значит реструкторизация?" - это когда метаданные изменились и нажали ctrl+s.

Небольшой курс выяснения проблем: на чем-то валится? Значит ловим запрос профайлером и публикуем здесь - проблема решается.

(35)Ничего не нужно делать дополнительно, если есть проблема - она должна быть решена в этой библиотеке, кроме запросов, выполняемых через 1с++. Свои sql-запросы проще модифицировать.

(37)какая версия решения? Файлик OrdNoChk.prm нужно удалить вообще из каталогов ИБ и BIN. Он будет мешать, я этот момент отражал в описании.

Ответили: (40) (41)

40.
lordxxl (файл скачал) 31.03.11 6:43 URL

(39) OrdNoChk.prm везде удалил. Не помогло - по прежнему говорит что проядок сортировки отличается от системного

Ура всё заработало+) я просто использовал старый релиз!

Изменено: lordxxl - 31.03.11 16:54
41.
sml (файл скачал) 31.03.11 9:20 URL

(39) Спасибо, spock, теперь ошибка пропала. Буду смотреть дальше на своей копии. Если что вылезет, выложу 2 варианта запроса из профайлера: 1) с твоей dll и 2) с патченой

42.
1yh1 (файл скачал) 31.03.11 12:20 URL

Код
State 42000, native 1018, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'HOLDLOCK'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.

После
Код
exec _1sp__1SJOURN_TLockX

Если try except нету, то:
Невосстановимая ошибка базы данных!
и вылет, причина, я думаю, проста в Stored Procedures нет with

Ответили: (43)

43.
spock 31.03.11 17:42 URL

(42)да, проблема в хранимой процедуре. Нужно вызвать реструктуризацию, чтобы пересоздать ХП. Измени что-нибудь в метаданных (чтобы появились две звездочки) и сохрани конфу. ХП будут пересозданы с учетом нового синтаксиса.

Ответили: (45)

44.
shraik (файл скачал) 01.04.11 8:13 URL

Не срабатывает определение нарушения последовательности

релиз 27
конфигурация Торговля 7.7
сервер SQL2005(9.00.3080.00)
база sql с такими параметрами
compat: SQL Server 2005(90)
collation: Cyrillic_General_CI_AS
создавалась сначала пустышка в студио, затем заливалась через конфигуратор.

как я понял в глобальнике не отрабатывает "глПроверкаАктуальностиОтчета"
вот это условие всегда возвращает "1"
Если ВыбПоследовательность.Проверить(ПозицияОтчета)=0 Тогда

вот. всё что знал сказал.
Куда копать ?
P.S.
хотя вроде ловит если изменения произошли не в предпоследнем документе.
текст SQL запроса сравнил, он получается одинаковый

Изменено: shraik - 03.04.11 11:15
45.
dumsik (файл скачал) 01.04.11 16:57 URL

(43) Мне кажется от родного режима sql2005/2008 больше проблем чем пользы. Может было проше решить только специфичные проблемы связки 1с и sql2005/2008 а все базы держать в режиме совместимости (80). Под специфичными проблемами я понимаю (невозможность открытия базы в монопольном режиме, проблемы с odbc, проблемы с определением версии SQL).

Ответили: (46)

46.
spock 01.04.11 19:59 URL

(45)теперь есть возможность выбора - демократия.

Ответили: (48)

47.
Dolly_EV (файл скачал) 02.04.11 8:25 URL

Несомненный +!
Помню, года 1.5 назад через танцы с бубном и интернеты птица по имени server2008R2+SQL2008+7.7 у меня взлетела, да..
Так что плюс несомненный и огромный респект, за систематизацию всех проблемных моментов "в одном флаконе"!
...Но вот только кроме "использования современного ПО" никаких плюсов я для этой "птицы" тогда не увидел, поэтому вопрос в (34) остается открытым: "преимущества в использовании формата SQL 2005/8?"

48.
dumsik (файл скачал) 02.04.11 12:06 URL

(46) а как поведет себя прокси dll если я укажу в sql 2005 у базы режим совместимости 80 ?

Ответили: (49)

49.
spock 02.04.11 15:31 URL

(48)так же, как и в режиме совместимости выше.

Ответили: (53)

50.
leshik (файл скачал) 02.04.11 21:52 URL

Вот такую ошибку выдает при попытке сохранить проведенный документ в монопольном режиме:
RGHost

Ответили: (51)

Изменено: leshik - 02.04.11 21:53
51.
spock 03.04.11 8:14 URL

(50)реструктуризацию вызывал? Если да, то давай текст запроса, пойманный профайлером.

52.
leshik (файл скачал) 03.04.11 10:49 URL

хм... с текстом запроса все сложнее - там експресс smile:-(

53.
dumsik (файл скачал) 03.04.11 13:08 URL

(49) во если бы прокси dll понимала что база в режиме 80 и запросы не правила тогда.

Ответили: (70)

54.
leshik (файл скачал) 03.04.11 19:24 URL

Вот на этом запросе сваливается:

exec _1sp__1SJOURN_TLockX
В монопольном режиме отрабатывает нормально

Ответили: (55)

55.
spock 03.04.11 19:56 URL

(54)не было реструктуризации?

Ответили: (56)

56.
leshik (файл скачал) 03.04.11 22:31 URL

(55) скорее всего нет - сделать надо?

Ответили: (58)

57.
leshik (файл скачал) 03.04.11 22:32 URL

Была загрузка базы УРБД из DBF формата в SQL. Вот что было.

Ответили: (58)

58.
spock 04.04.11 17:02 URL

(56)так-то да.
(57)реструктуризация и обмен не одно и тоже.

59.
kudenzov (файл скачал) 04.04.11 23:35 URL

Огромное спасибо за Вашу работу!
Завтра начнем тестирование

P/S Блокировку входа при вводе пароля бы еще выключить в 1Cv7.LCK , сейчас патчим bkend

60.
kudenzov (файл скачал) 05.04.11 10:59 URL

клиент XP, slq 2008, режим совместимости 2008

При загрузке базы из zip (выгруженного из DBF):

Incorrect syntax near 'INDEX'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.

ENTRY(INDEX=ACCDTID)

Код
INSERT INTO _1SACCSEL
SELECT ACCID,DOCID,DATE_TIME_DOCID,NUMBER,CORNO,MAX(DT),MAX(KT) FROM
(
   SELECT ACCID=TMP.MAINID,ENTRY.DOCID,ENTRY.DATE_TIME_DOCID,ENTRY.NUMBER,ENTRY.CORNO,DT='*',KT=' '
   FROM #TMPACCSTBL TMP,_1SENTRY ENTRY(INDEX=ACCDTID)
   WHERE ENTRY.ACCDTID=TMP.SUBID and ENTRY.DATE_TIME_DOCID>'20040701     0     0   ' AND ENTRY.DATE_TIME_DOCID<'20040801     0     0   '
   UNION ALL
   SELECT ACCID=TMP.MAINID,ENTRY.DOCID,ENTRY.DATE_TIME_DOCID,ENTRY.NUMBER,ENTRY.CORNO,DT=' ',KT='*'
   FROM #TMPACCSTBL TMP,_1SENTRY ENTRY(INDEX=ACCKTID
   WHERE ENTRY.ACCKTID=TMP.SUBID and ENTRY.DATE_TIME_DOCID>'20040701     0     0   ' AND ENTRY.DATE_TIME_DOCID<'20040801     0     0   '
) AS ACCSEL
GROUP BY ACCID,DOCID,DATE_TIME_DOCID,NUMBER,CORNO

Ответили: (61)

Изменено: kudenzov - 05.04.11 11:02
61.
spock 05.04.11 16:40 URL

(60)так, сломал...

62.
dungeonkeeper (файл скачал) 06.04.11 8:35 URL

Пытались перетащить базу на sql 2008 сервер, но вылетает ошибка
Рисунок

Создал пустую базу (в режиме 2008 (100)), назначил пользователя владельцем, в конфигураторе прописал настройки ...
в общем все вроде правильно.
Кстати, предварительно пытался перетащить туже базу только без данных (пустую конфигурацию). Все проходило без проблем.

Сам я в sql особо не копенгаген.
Может подскажите где грабли?

Еще вспомнил...
До этого корячился в преславутой BkEnd.dll
И подменой ODBC через реестр.
Как теперь откатить подмену?

делал вот по этой инструкции:
1. Папку 1Cv7_SQLDriver скопировать в корень диска C
2. Импортировать в реестр файл 1C_SQL_ODBC.reg
3. с помощью команды sdbinst.exe [путь к файлу] 1sfix.sdb установить исправление.
4. 1с должна запуститься

Может ошибка с этим связана?

Ответили: (63) (75)

Изменено: dungeonkeeper - 06.04.11 9:03
63.
spock 06.04.11 18:12 URL

(62)вчера вечером выложил исправленный вариант - этого не должно быть уже.

Ответили: (64)

64.
kudenzov (файл скачал) 06.04.11 22:37 URL

(63) Подтверждаю, zip грузится

65.
dungeonkeeper (файл скачал) 07.04.11 19:22 URL

ВоПщем удалил 1Cv7_SQLDriver, так же отменил исправление "sdbinst.exe [путь к файлу] 1sfix.sdb"
Все загрузилось, сейчас тестируем.

Пыс.Пыс.
Я только не понял , что за рекомендации:
"вызывать реструктуризацию, если база данных до этого использовалась с родной BkEnd.dll (в хранимых процедурах есть код, который не проходит по ограничениям SQL2005/2008);"
Как это сделать?

Ответили: (66)

66.
spock 07.04.11 19:40 URL

(65)внести любые изменения в метаданные (отсортировать, поставить-снять галку, например) и сохранить.

67.
dumsik (файл скачал) 08.04.11 17:02 URL

Хотелось бы поделиться некоторыми мыслями касательно данной прокси dll. Несомненно, автор данного решения молодец, он предложил нам еще один очень хороший способ запуска 1с 7.7 на современном ПО. Но представим следующею ситуацию: После месячного или более тестирования я скрестя пальцы внедрил эту технологию на рабочих базах и все вроде хорошо работает и в друг 1с падает на очередном запросе который не корректно парсится прокси dll. Я честно пишу spock'у но ответа нет (долго нет), а база не работает... Поэтому ребята хорошо подумайте перед внедрением этой технологии, уж сильно глубоко капнул spock в переделке 1c под sql 2005/2008.
Как мне кажется такие разработки должны публиковаться с исходными кодами чтобы силами сообщества можно было достаточно оперативно подправлять найденные баги.

Ответили: (68)

68.
spock 09.04.11 9:33 URL

(67)так, а что мне ответить еще? Дублировать функционал я не собираюсь пока - я об этом сразу сказал, добавить нечего. Про проблемный запрос ничего не видел smile:|

Ответили: (70)

69.
spock 09.04.11 9:35 URL

+68 Кстати, хорошее замечание, что нужно хорошо подумать перед внедрением.

70.
dumsik (файл скачал) 09.04.11 16:40 URL

(68) Не было пока проблемного запроса, я просто описал возможную ситуацию. Основная мысль в том, что рано или поздно у Вас не будет желания/времени на поддержку этого решения, и тогда такая ситуация вполне возможна. Я в комментарии (53) писал, что оптимальным с моей точки зрения было анализировать режим совместимости базы и строить логику работы dll исходя из этого, т.к. если база в режиме совместимости 80 запросы бы не изменялись dll и вероятность падения 1с снизилась бы на порядок, тем более у многих в конфах куча прямых запросов которые переписывать (в случае их несовместимости с sql2005/2008) не очень хочется.

Ответили: (71)

Изменено: dumsik - 09.04.11 16:41
71.
spock 09.04.11 19:13 URL

(70)вот когда не будет желания, то сразу выложу исходники.

Цитата
если база в режиме совместимости 80 запросы бы не изменялись dll

ну тогда как поступаем с таким, например, DUMP TRANSACTION %s WITH TRUNCATE_ONLY на sql2008r2?

Цитата
куча прямых запросов которые переписывать ... не очень хочется.

так-то я сам в этом не заинтересован.

Ответили: (73)

72.
dungeonkeeper (файл скачал) 09.04.11 21:08 URL

Цитата
dumsik пишет:

Хотелось бы ...

У вас такая ситуация уже возникла или это только фантазии?
Мы сейчас находимся на стадии внедрения этого "Секретного релиза".
Пока тестируем. Есть проблемы, но пока не могу сказать с чем это связано. То ли это косяки SQL, толи 1С.
При выполнении регламентных работ почему-то на SQL версии встают кривые проводки. Хотя то же самое на dbf отрабатывает правильно.

У нас конфигурация написаная с самого начала (с Глобального модуля) под наше предприятие. Размер MD файла около 30mb. База за год вырастает до 5 Гб. Все бы хорошо, но размер одной из dbf таблиц подкатывает к 2Гб, а это, как вы знаете каюк!
По этому кровь из носу надо перетаскивать всю базу на SQL. Выбора у нас нет.
Переходить на 8, тоже не представляется возможным. Слишком долго и затратно.

Ответили: (76) (77)

73.
dumsik (файл скачал) 10.04.11 5:19 URL

(71)

Цитата
spock пишет:
ну тогда как поступаем с таким, например, DUMP TRANSACTION %s WITH TRUNCATE_ONLY на sql2008r2?


А разве режим совместимости -80 не подразумевает что такие запросы будут работать корректно ?

Ответили: (74)

74.
spock 10.04.11 8:22 URL

(73)а разве подразумевает?

Ответили: (75)

75.
dumsik (файл скачал) 12.04.11 14:42 URL

(74) да согласен DUMP TRANSACTION %s WITH TRUNCATE_ONLY на sql2008r2 не поддерживается (http://msdn.microsoft.com/en-us/library/ms144262.aspx). Но что мешает отслеживать только такие проблемные запросы? Поправь меня если ошибаюсь но ведь если база в режиме 80 то ошибки как в посте (62) на sql2008r2 не будет ?

76.
Dolly_EV (файл скачал) 13.04.11 13:10 URL

(72)

Цитата
dungeonkeeper пишет:
По этому кровь из носу надо перетаскивать всю базу на SQL. Выбора у нас нет.

Выбор у вас есть! Вот эта штука http://infostart.ru/public/15211/ два года назад спасла меня в аналогичной ситуации (не было возможности поднять SQL в 7-ми филиалах за 2 дня)

77.
dungeonkeeper (файл скачал) 14.04.11 9:41 URL

Цитата
Dolly_EV пишет:

(72)

Можете объяснить как-то по подробнее, только наверное не здесь.

78.
chuck (файл скачал) 15.04.11 18:03 URL

Ну что, поделюсь то же своим мнением.
Сервак Win2003 x64 (замен драйверов нет), SQL 2005

Перевел базу в режим совместимости 2005(90). В конфигураторе закрузка базы проходит, в режим предприятия тоже, но до тех пор пока не пытаешься открыть любой журнал документов или сформировать отчет!
Ошибка:
SQL State 42000
Native 1018
Incorrect syntax near 'INDEX' .... a table hint, a WITH keyword

Пытался внести изменения в конфу(для так наз реструктуризации, добавил новый реквизит у справочника - достаточно???) - результат ТОТ ЖЕ!

Ответили: (79)

79.
spock 15.04.11 19:48 URL

(78)ты качал 10.03.11. После этого новый вариант не скачивал?

80.
chuck (файл скачал) 16.04.11 0:21 URL

Скачивал здесь 15.04.11(версия BkEnd proxy DLL 1.0.0.5).
Есть что-то свежее??

Ответили: (81) (107) (133)

81.
spock 16.04.11 16:03 URL

(80)Версия та. Открытие журнала, формирование отчета к вылету не приводят.
Давай описание конфигурации 1с и трассу профайлера.

82.
chuck (файл скачал) 18.04.11 19:58 URL

spock!!!!!

Сорри! Ввел в заблуждение(как оказалось)!!! Оказывается вылета из 1С по причине использования "vk_Hook1C.dll"!!!!

83.
Mnemonik (файл скачал) 19.04.11 18:42 URL

Подскажите где найти более подробную информацию по созданию базы на SQL 2008 для 1С7.7. С SQL 2008 не знаком, литературу очень сложно найти.

Ответили: (84)

84.
spock 19.04.11 19:52 URL

(83)так-то BOL по-русски есть - читай на здоровье: http://msdn.microsoft.com/ru-ru/library/ms130214(v=sql.100).aspx

Изменено: spock - 20.04.11 18:50
85.
elkpro (файл скачал) 20.04.11 19:08 URL

Скачал вчера - запустил под Win 7 с SQL 2000.
Прямой запрос через ODBCRecordSet выдает ошибку:
State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'GETDATE'.

Что делать?

Ответили: (89) (92)

86.
Mnemonik (файл скачал) 21.04.11 6:05 URL

ОС на сервере WinSer2008 Enterprise R2, СУБД SQL 2008 R2.
1C77 привилась к такой среде нормально, поднимал рабочую базу из выгрузки. Выгрузка сделана с SQL 2005 базы, ну т.е. 1С Sql, не с помощью средств СУБД, а с помощью 1С.
Есть одна база тоже скульная, тоже на SQL 2005 сидела, вот она не хочет подниматься, целую ночь загружалась в SQL 2008 и до сих пор висит, почему остальные базы загружаются, а именно одна нет. Где искать причину? Дело в том, что загрузка в SQL 2008 идет до сих пор, уже прошло порядка 18 часов, сама база на SQL 2005 весит около 980Мб это файл .mdf, а лог файл .log чуть больше 50 Мб. Выгрузка базы средствами 1С 36 Мб.

База на SQL 2008 создана с учетом предложенных тут настроек, а все остальные по умолчанию, дело в том что не хочет грузится одна база.

87.
shraik (файл скачал) 21.04.11 7:08 URL

У меня аналогично. вчера стал грузить выгрузку с DBF базы на SQL Express 2008, тоже застряла близко к концу (судя по размеру MDF файла)
Причем глядя на список процессов видно было загрузку на SQL сервере и практически полное бездействие на 1c.
На другой машине (собрал в виртуалке с нуля для проверки) всё залилось.
Думается мне тут есть тлетворное влияние разных версий DLL

88.
Mnemonik (файл скачал) 21.04.11 11:45 URL

В общем проблема найдена, почему висит так долго при загрузке на SQL, важно перед загрузкой проверить базу с которой делалась выгрузка. Зайти в общий журнал документов и в интервале (период) проставить например 01.01.0000 по 31.12.9999 и проверить самый верхний и самые нижние документы. Обратите внимание на самые нижние документы если есть документ/ы которые выходят за пределы ТА (пределы базы), то надо исправить дату документа. У меня в базе был документ который провели в марте этого года, а вот дата документа 6201 год стоит. Вот почему на SQL висит, база уже загрузилась на скуле (точнее структура создана), а вот потом начинается пересчет ссылок или что-то в это роде. И процесс висит очень долго, я ждал порядка 20 часов, возможно бы и загрузка когда-нибудь и закончилась, но всё же если есть такие документы это неправильно и надо исправить! Перед тем как будете вводить в интервал (период) года, ОБЯЗАТЕЛЬНО зайдите в СЕРВИС>Параметры и проставьте: Число цифр года в представлении даты: 4. Потом можете вводить указанный мною период. Далее сделайте выгрузку и загружайте в СУБД. У меня загрузка заняла 15 минутsmile:). Тоже самое и для самых верхних, если есть такие ранние например дата док от 1920 то, тоже неправильно.


Подскажите есть обработки которые позволяют изменить ДАТУ ДОКУМЕНТА не проводя его? Документ уже проведен и не хочется перепроводить его. Ответ: Нельзя изменить атрибут ДатаДок у проведенного документа, надо сделать не проведенным.

Изменено: Mnemonik - 21.04.11 12:13
89.
spock 21.04.11 16:55 URL

(85)на каком запросе так валится?
Точно версия релиза 1.0.0.5??

Изменено: spock - 21.04.11 16:55
90.
dungeonkeeper (файл скачал) 21.04.11 17:04 URL

Цитата
Mnemonik пишет:

В общем проблема найдена, почему висит так долго при загрузке на SQL, важно перед загрузкой проверить базу с которой делалась выгрузка. Зайти в общий журнал документов и в интервале (период) проставить например 01.01.0000 по 31.12.9999 и проверить самый верхний и самые нижние документы. Обратите внимание на самые нижние документы если есть документ/ы которые выходят за пределы ТА (пределы базы), то надо исправить дату документа. У меня в базе был документ который провели в марте этого года, а вот дата документа 6201 год стоит. Вот почему на SQL висит, база уже загрузилась на скуле (точнее структура создана), а вот потом начинается пересчет ссылок или что-то в это роде. И процесс висит очень долго, я ждал порядка 20 часов, возможно бы и загрузка когда-нибудь и закончилась, но всё же если есть такие документы это неправильно и надо исправить! Перед тем как будете вводить в интервал (период) года, ОБЯЗАТЕЛЬНО зайдите в СЕРВИС>Параметры и проставьте: Число цифр года в представлении даты: 4. Потом можете вводить указанный мною период. Далее сделайте выгрузку и загружайте в СУБД. У меня загрузка заняла 15 минут . Тоже самое и для самых верхних, если есть такие ранние например дата док от 1920 то, тоже неправильно.





Подскажите есть обработки которые позволяют изменить ДАТУ ДОКУМЕНТА не проводя его? Документ уже проведен и не хочется перепроводить его. Ответ: Нельзя изменить атрибут ДатаДок у проведенного документа, надо сделать не проведенным.


Я бы вам (и всем) посоветовал перед началом выгрузки данных из 1С открыть общий журнал документов, установить начало периода пустым, а не как вы предлагаете "01.01.0000". Столкнулся с те ми же проблемами.
Перенос бызы, точнее ее загрузка в SQL занимала около 10 часов. Периодически заглядывая на экран обнаружил что идет пересчет перектрестных ссылок начиная с даты "01.01.1753" по каждому документу. Стал копать. Обнуружил что в базе присутствуют два документа без даты!.При чем давность этих документов порядка двух-трех лет. Как умудрились сохранить такие документы мне не понятно, программа этого не позволяет. Как вариант это могло произойти в результате какого-то сбоя.
Так что проверяйте.
Причем если вы всетаки загрузите такие данные, я вам не завидую, потому что пересчет итогов вас неприятно удивит своей продолжительностью smile;) по той же причине.

91.
CheBurator (файл скачал) 22.04.11 0:43 URL

велосипедисты.. проблема с пустой датой в журнале/доке является настолько частой среди проблем долгой загрузки, что ее можно считать уже "штатной". соответсвенно, перед тотальными манипуляциями рекомендуется если это возможно хорошенько почитсить/полечить/проаудировать базу..

92.
elkpro (файл скачал) 26.04.11 11:15 URL

Цитата
spock пишет:

(85)на каком запросе так валится?
Точно версия релиза 1.0.0.5??


Посмотрел - версия BkEnd.dll была 1.0.0.1. Поменял на 1.0.0.5 и все пошло.
Спасибо за наводку.

ругался именно на SQL функции GETDATE().

93.
dumsik (файл скачал) 30.05.11 17:45 URL

Поставил себе данную прокси dll в связке с sql 2005
все работает без ошибок. Нашел толь один досадный момент, а именно:
При входе каждого пользователя в 1С выполняется следующий код из bkend.dll
-------------------------------------------------------------------
{call sp_dboption('%s','select into/bulkcopy','false')}
{call sp_dboption('%s','select into/bulkcopy','true')}
-------------------------------------------------------------------
При этом выполняется переход, основываясь на том чему равно значение DATABASEPROPERTY(@dbName, 'IsTrunclog') если 1 то переходит в simple, если 0 то в full recovery mode. причем 1с не смотрит на то, что устанавливаемая recovery model уже может стоять, она просто тупо шлет комманду установки recovery model. Из-за этого в логах на сервере(SQL Log и Windows Application eventlog) постоянно накапливаются записи "Setting database option RECOVERY to FULL/simple for database %s".Причем для каждого старта 1С ! В SQL 2000 данного сообщения небыло, а тут его добавили. Более подробно здесь http://1c.proclub.ru/modules/newbb/viewtopic.php?topic_id=288878&forum=24
Хотелось бы в прокси dll учитывать эту особенность и либо вообще не посылать на сервер комманду смены recovery model либо предварительно проверять что там уже стоит.

Ответили: (94) (96)

Изменено: dumsik - 30.05.11 17:47
94.
kudenzov (файл скачал) 30.05.11 22:46 URL

(93) ну и в чем проблема - логи переполняются smile:)
Стандартная команда при входе
Ничего страшного не происходит

Ответили: (95)

95.
dumsik (файл скачал) 31.05.11 3:23 URL

(94) Не то чтобы проблема просто не должно так быть, у меня 200 юзеров и нескольколько фоновых процессов которые регулярно входят в базу. Получается что в логе сложно увидеть что-то кроме ""Setting database option ...". Кстати в SQL 2000 данные команды также приводили к автоматическому checkpoint. В SQL 2005 при смене recovery model checkpoint уже не происходит (я смотрел через монитор производительности) .

96.
spock 01.06.11 16:43 URL

(93)Да, конечно. Это есть в планах, так как sp_dboption объявлена MS устаревшей.

97.
alexey_1c (файл скачал) 14.06.11 9:35 URL

База загрузилась нормально, проводится документы, создаются новые элементы справочников Контрагенты, Номенклатура ..

И тут оказывается, что некоторые элементы вспомогательного справочника не получается создать. Пишет "При выполнении транзакции произошла ошибка! Объект заблокирован:..."

Смотрю чем отличается справочник от других, например у него длинна кода и наименования 0. Меняю, не помогает.

пока не найду решение, придется их вернуть на DBF

98.
alexey_1c (файл скачал) 14.06.11 19:27 URL

Это был глюк, кривые руки программиста который это ранее писал. Все очень хорошо работает.

99.
Айсберг (файл скачал) 17.06.11 16:21 URL

Добрый день,
Использую вашу обработку. При загрузке данных в Sql 1С "Вылетает" не закончив загрузку. В базе появляются справочники и два вида документов, остальные документы не догружаются.

1) файлы версии 1.0.0.5 от 05.04.11;
2) субд sql 2008 r2;
3) загрузка производится с компа на котором стоит Vista;
4) конфигурация переписанная ТИС;
5) проблема возникает при загрузки данных....

Ответили: (105)

Screen.JPG (88.78 КБ) [ Скачать ]
Изменено: Айсберг - 17.06.11 16:37
100.
dungeonkeeper (файл скачал) 20.06.11 8:26 URL

Цитата
Айсберг пишет:
Добрый день,
Использую вашу обработку. При загрузке данных в Sql 1С "Вылетает" не закончив загрузку. В базе появляются справочники и два вида документов, остальные документы не догружаются.

1) файлы версии 1.0.0.5 от 05.04.11;
2) субд sql 2008 r2;
3) загрузка производится с компа на котором стоит Vista;
4) конфигурация переписанная ТИС;
5) проблема возникает при загрузки данных....


Пробовали запускать 1cv7s.exe в режиме совместимости с XP ?
У меня настройки регламентных работ не хотели открываться без этого режима.

Ответили: (107)

101.
dungeonkeeper (файл скачал) 20.06.11 8:48 URL

Айсберг,
Еще где-то видел, что в борьбе с этим исключением помогает изменение переменных среды

Вот цитата:

Цитата
Переменная path не должна быть слишком длиной, либо была некорректна (путь указан например несуществующий).
У меня например под XP SP2 она такая: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Sy stem32\Wbem;C:\Program Files\QuickTime\QTSystem\
Переменные TMP и TEMP по-умолчанию должны быть: %USERPROFILE%\Local Settings\Temp
После изменений необходимо (могу ошибаться) перегрузить компьютер.


Еще посоветую проверить доступ пользователя (вкладка безопасность свойств) к каталогам баз 1с и т.д.

102.
Айсберг (файл скачал) 20.06.11 9:12 URL

Спасибо за советы. Попробую.
Пробовал загрузить типовую бухгалтерию - все получилось.
Все-таки есть подозрение, что в самой конфе что-то критичное для SQL

Страницы: 1 2 3 4 5 След.

337 [+] [−] Перейти к публикации