Секретный релиз платформы v77.27.7
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Реализация в виде прокси-dll, в которой исправляются известные проблемы платформы:
- невозможность работы, при запуске на mssql 2005-2014 (без патчинга bkend.dll);
- невозможность работы без понижения режима совместимости до mssql 2000, при запуске на mssql 2005-2014;
- невозможность работы в ОС Win Vista/7/8/8.1 в режиме клиент-сервера (без манипуляций с файлами odbc-драйвера);
Ограничения:
- нет совместимости с некоторыми 1c++ запросами (ищу решение);
Поддерживаемые клиентские ОС:
- Windows 2000;
- Windows XP;
- Windows 2003;
- Windows Vista;
- Windows 7;
- Windows 8;
- Windows 8.1;
Поддерживаемые SQL-сервера:
- MS SQL 2000;
- MS SQL 2005;
- MS SQL 2008;
- MS SQL 2008 r2;
- MS SQL 2012;
- MS SQL 2014;
Состав поставки:
- BkEnd.dll - proxy-dll;
- BkEndUtls.dll - служебная библиотека;
Порядок установки:
- Установить платформу из оригинального установщика;
- Установить и настроить HASP-ключ (обязательное условие, а то к вам придут врачи);
- Переименовать оригинальный файл BkEnd.dll в BkEnd0.dll (0 - это ноль);
- Скопировать файлы BkEnd.dll и BkEndUtls.dll из поставки в каталог, куда установлена 1с (например, C:\Program Files\1Cv77\BIN);
Для счастливых обладателей dbf-версии ничего не меняется.
Для обладателей sql-версии, у которых база данных размещается на MS SQL 2005-2014, необходимо соблюсти следующие требования для sql-логина (учетка, под которой 1с подключается к sql):
- обладание, как минимум правами db_owner;
- права на VIEW SERVER STATE;
С первым требованием все и так ясно, второе - требует пояснений. Для определения количества соединений к текущей базе данных, 1с обращается к системной таблице sysprocesses. Если у логина отсутствуют права на VIEW SERVER STATE, то будут видны только соединения, осуществленные под своей учеткой, что не совсем хорошо - нужно видеть все соединения с текущей базой, чтобы получать адекватые сообщения об ошибках. Большинство "специалистов" запускает 1с под учеткой SA (или другой, но с соответствующими суперправами), следовательно, у них такой проблемы не стоит. Зато имеется другая проблема - так называемый фоновый процесс сброса грязных страниц из кэша буфера данных, при выполнении которого, не удается запустить 1с в монопольном режиме.
В MS SQL 2005/2008 системная таблица (уже представление, оставленное для обратной совместимости) sysprocesses помечена устаревшей и в следующих редакциях MS SQL будет удалена. Компания Microsoft рекомендует использовать текущие аналоги - так и поступаем :) Для определения соединений к текущей базе данных (в этом исправленном релизе платформы 1с) больше не используется системная таблица sysprocesses (если ms sql 2005/2008, для ms sql 2000 используется).
Для того, чтобы дать права на VIEW SERVER STATE нужно выполнить простой скрипт:
USE master
GO
GRANT VIEW SERVER STATE TO <your_login>
GO
Все остальные настройки по-умолчанию.
Общие рекомендации
- не использовать это решение без достаточного тестирования в вашем окружении;
- не класть OrdNoChk.prm в каталоги Программы и ИБ;
- вызывать реструктуризацию, если база данных до этого использовалась с родной BkEnd.dll (в хранимых процедурах есть код, который не проходит по ограничениям MSSQL 2005-2014);
Возникли проблемы? Отписываемся в следующем формате:
- версия сборки и дата файлов bkend.dll и bkendutls.dll;
- сервер СУБД в формате select @@version;
- версия ОС;
- конфигурация 1с;
- действия, которые вызывали проблему;
- делали ли, как выразился один из тестеров, "так называемую" реструктуризацию;
Disclaimer
Все права на ПП 1С:Предприятие принадлежат компании 1С (www.1c.ru). Ни один бит оригинальных файлов не изменен, все манипуляции выполняются штатными возможностями Microsoft(c) Windows(c).
Для чего это нужно?
Пока честные пользователи пытаются перейти с 1cv77 на 1cv8.x, необходимо иметь крепкий тыл в виде настроенной инфраструктуры, которая развернута на современном оборудовании и современном ПО. Однако, необходимо соблюсти лицензионную чистоту как по отношению к 1с, так и к Microsoft. Данным решением это получается сделать: бинарники 1c остаются нетронутыми, ПО от Microsoft актуально и современно.
У кого нет острой необходимости менять MS SQL 2000 на более свежие версии, тем нет надобности прибегать к этому решению.
Использование Вами данного решения идет по принципу "AS-IS".
Критика и конструктивные предложения принимаются.
History log
- Реструктуризация теперь завершается инструкцией CHECKPOINT, вместо DUMP TRANSACTION WITH TRUNCATE_ONLY;
- Изменена схема поиска хинтов;
- Изменены формальные признаки для поиска хинтов;
- Реструктуризация проекта;
- Отключена проверка порядка сортировки (если в каталоге программы или ИБ будет лежать OrdNoChk.prm, то используются родные механизмы платформы);
- Оптимизирована работа с постоянными объектами проекта;
- Для версии sql2000 и ниже используются родные механизмы, без вмешательств;
- Внес ошибку, когда устранял проблему SELECT GetDate();
- Устранил ошибку (добавил новых :) );
- Отключил установку/снятие режима bulk/copy;
- Реализовал возможность запуска 1с через win-авторизацию;
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Инструментарий разработчика Системный администратор Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
Консоль запросов к базе SQL, не требующая внешних компонент
10 стартмани
29.04.2015 25475 60 Gvozdod 8
Инструментарий разработчика Системный администратор Разработчик 1С:Предприятие 7.7 Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 1C77 Россия Бесплатно (free)
Обновленная сборка OpenConf Light Pack.
27.04.2014 63545 502 unichkin 51
Инструментарий разработчика Системный администратор Разработчик 1С:Предприятие 7.7 1С:Предприятие 8 Абонемент ($m)
Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.
1 стартмани
23.04.2014 193860 1923 Alexoniq 1678
Сервера Системный администратор Разработчик Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 1C77 Россия Абонемент ($m)
Версия vk_TerminalSleep для работы совместно с "секретным релизом" на Windows 7.
1 стартмани
07.01.2014 19794 39 Ma_X_X 11
Инструментарий разработчика Разработчик 1С:Предприятие 7.7 1С:Предприятие 8 Россия Абонемент ($m)
Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))
1 стартмани
04.09.2013 36755 61 O-Planet 78
Инструментарий разработчика Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.
1 стартмани
13.08.2013 25187 Reptile 5
Инструментарий разработчика Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.
1 стартмани
14.07.2013 30225 57 adamx 11
Инструментарий разработчика Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........
1 стартмани
21.02.2013 21143 36 MarSeN 14
Запрос после Отладка(1) совпадает с тем, что поймано профайлером?
1CUniSetup27.exe (с SQL 2000), Win Server 2008 R2 x64, SQL 2005
Загружаю из под WinXP,
База Подрядчик строительство 2.3, размер базы в ДБФ ~ 3.5 Гб, в архиве 91Мб
Сделал как сказано:
*переименовал BkEnd.dll в BkEnd0.dll
*добавил те что в архиве (1.0.0.5)
*заменил sqlsrv32.dll и sqlsrv32.rll на сервере в папках System32 и SysWOW64
Начинаю делать загрузку в SQL и вылетает ошибка при создании хранимой процедуры _1sp__1SBKTTL_ChangeTotal судя по ошибке ругается в отсутствии объявления переменной @ObKt1
Скрин прикреплен
В профайлере поймал текст процедуры:
Create procedure _1sp__1SBKTTL_ChangeTotal(@Date DATETIME, @Kind CHAR(1), @MonthOfQuart INTEGER, @ProvPart
INTEGER, @FlAdd INTEGER, @Sum NUMERIC(15, 3), @UpdateOb INTEGER, @AccId CHAR(9), @CurId CHAR(9), @Flags
TINYINT, @SC0 CHAR(13), @VSC0 INTEGER, @OSC0 TINYINT, @SC1 CHAR(13), @VSC1 INTEGER, @OSC1 TINYINT, @SC2
CHAR(13), @VSC2 INTEGER, @OSC2 TINYINT) AS
SET NOCOUNT ON
DECLARE @ObDt1 NUMERIC(15,3),@ObDt2 NUMERIC(15,3),@ObDt3 NUMERIC(15,3)
DECLARE @ObKt1 NUMERIC(15,3),@ObKt2 NUMERIC(15,3),@ObKt3 NUMERIC(15,3)
DECLARE @Sd NUMERIC(15,3)
SELECT @ObDt1=0,@ObDt2=0,@ObDt3=0,@ObKt1=0,@ObKt2=0,@ObKt3=0,@Sd=0
IF @UpdateOb=1 BEGIN
IF @ProvPart=0 BEGIN
IF @MonthOfQuart=0 IF @FlAdd=1 SELECT @ObDt1=@Sum ELSE SELECT @ObDt1=-@Sum
ELSE IF @MonthOfQuart=1 IF @FlAdd=1 SELECT @ObDt2=@Sum ELSE SELECT @ObDt2=-@Sum
ELSE IF @MonthOfQuart=2 IF @FlAdd=1 SELECT @ObDt3=@Sum ELSE SELECT @ObDt3=-@Sum
END
ELSE BEGIN
IF @MonthOfQuart=0 IF @FlAdd=1 SELECT @ObKt1=@Sum ELSE SELECT @ObKt1=-@Sum
ELSE IF @MonthOfQuart=1 IF @FlAdd=1 SELECT @ObKt2=@Sum ELSE SELECT @ObKt2=-@Sum
ELSE IF @MonthOfQuart=2 IF @FlAdd=1 SELECT @ObKt3=@Sum ELSE SELECT @ObKt3=-@Sum
END
END
ELSE BEGIN
IF ( ( @FlAdd=1 AND @ProvPart=0 ) OR ( @FlAdd=0 AND @ProvPart=1 ) )
SELECT @Sd= @Sum
ELSE
SELECT @Sd=-@Sum
END
IF @Kind>'3' AND @Kind<'7' BEGIN
SELECT @SC0=' '
SELECT @SC1=' '
SELECT @SC2=' '
END
Update _1SBKTTL set
OBDT1=case when abs(OBDT1+@ObDt1)>99999999999.999 then 99999999999.999 else OBDT1+@ObDt1 end,
OBDT2=case when abs(OBDT2+@ObDt2)>99999999999.999 then 99999999999.999 else OBDT2+@ObDt2 end,
OBDT3=case when abs(OBDT3+@ObDt3)>99999999999.999 then 99999999999.999 else OBDT3+@ObDt3 end,
OBKT1=case when abs(OBKT1+@ObKT1)>99999999999.999 then 99999999999.999 else OBKT1+@ObKT1 end,
OBKT2=case when abs(OBKT2+@ObKT2)>99999999999.999 then 99999999999.999 else OBKT2+@ObKT2 end,
OBKT3=case when abs(OBKT3+@ObKT3)>99999999999.999 then 99999999999.999 else OBKT3+@ObKT3 end,
SD =case when abs(SD +@Sd )>99999999999.999 then 99999999999.999 else SD +@Sd end
where DATE=@Date and KIND=@Kind and ACCID=@AccId and CURRID=@CurId and SC0=@SC0 and SC1=@SC1 and SC2=@SC2
IF @@ROWCOUNT=0 BEGIN
INSERT INTO _1SBKTTL VALUES
(
@Date,@AccId,@CurId,@Kind,@ObDt1,@ObKt1,@ObDt2,@ObKt2,
@ObDt3,@ObKt3,@Sd,@Flags,@SC0,@VSC0,@OSC0,@SC1,@VSC1,@OSC1,@SC2,@VSC2,@OSC2
)
END
хотя судя по тексту:
DECLARE @ObKt1 NUMERIC(15,3),@ObKt2 NUMERIC(15,3),@ObKt3 NUMERIC(15,3)
она объявляется.
Попытался выполнить этот запрос просто в SQL получил ошибку
Msg 137, Level 15, State 2, Procedure _1sp__1SBKTTL_ChangeTotal, Line 38
Must declare the scalar variable "@ObKT1".
При разборе полетов попытался сделать замену вот в этих частях:
OBKT1=case when abs(OBKT1+@ObKT1)>99999999999.999 then 99999999999.999 else OBKT1+@ObKT1 end,
OBKT2=case when abs(OBKT2+@ObKT2)>99999999999.999 then 99999999999.999 else OBKT2+@ObKT2 end,
OBKT3=case when abs(OBKT3+@ObKT3)>99999999999.999 then 99999999999.999 else OBKT3+@ObKT3 end,
на @ObKt1 ("t"-маленькая) и процедура выполнилась без проблем.
теперь вот думаю как можно это дело поправить? чтобы при загрузке в SQL, 1C формировала правильный текст запроса.
До этого база была на win 2003, SQL 2005 помню что тоже шаманил для запуска, но там все работало. По определенным причинам пришлось срочно на новом сервере запустить все под новой операционкой. И тут встал стопор. Сегодня более менее как-то перекантовавлись (8 человек запустил), но к понедельнику надо чтоб работало 20+ пользователей в DBF - не камильфо в таком количестве.
Срочно прошу о помощи. ХЗ еще какие ошибки повалят следом :(
Рабочая база на 2000 скуле, копия дома и на работе на 2005 - уже больше года никак руки не дойдут перевести и рабочую на 2005-й.
уважаемый, в публикации
по кнопке скачать, сразу скачивается solution5.
А то что там есть другие версии, то пока не нажмешь на "посмотреть и скачать все файлы (3)" не узнаеш. Я например не знал.
--
Я тоже сначала скачал 5 версию, ну а потом пришлось почитать обсуждения и скачать 7-ю :).
Есть просьба к Автору, было бы неплохо подвязывать к кнопке скачать последнюю версию, если конечно не сильно затруднит.
Главная цель - загрузиться как можно раньше, а там разберемся, следовательно, ТСВК для этого случая не подходит.
Выбор способа загрузки
Возможны разные способы загрузки своей dll в адресное пространство приложения-жертвы по легальности и сложности - в интернетах об этом полно инфы. Я выбрал так называемый Trojan/Proxy dll. Кому интересно могут поизучать тему в интернетах и/или у Рихтера. Если вкратце, то суть метода заключается в том, что вместо родной dll кладется своя, которая тупо редиректит экспортируемые функции в нужную dll. Почему и называется proxy dll. Видел где-то описание методов, когда делается такой финт без подмены dll, но это отдельная история, если Саня (orefkov) захочет, то он ее расскажет :) Со способом загрузки определились.
Способ проброса экспортируемых функций
Как известно, имеется такое понятие, как экспортируемые и импортируемые функции. Говорим за первое. Т.е. если в коде функции помечены экспортируемыми, то в соответствующей таблице экспорта они будут фигурировать и значит, какой-то другой модуль может их использовать, объявя у себя ее импортируемой (следовательно, будет светиться в таблице импорта). Вот напочитать:
Зная, все это осталось только прикинуться BkEnd.dll, в которой реализован проброс. Как выяснилось, BkEnd.dll экспортирует чуть больше 4 тыс. функций... Вы же не подумали, что я все пробросы делал руками? :) Берем в руки DUMPBIN.exe с ключом /EXPORTS, скриптуем необходимое и получаем, что нужно. Я было начал делать проброс через pragma-директивы, но почему-то на трех экспортируемых функциях компилятор падал, пришлось делать старым добрым def-файлом. Формат в нашем случаем простой:
ИмяФункции = BkEnd0.ИмяФункции
И вот так для >4 тыс. функций.
Такие пробросы (FuncName = SomeDLL.FuncName) придумала Microsoft давно, вроде, как пишут историки, для случаев, когда будет нехватать места на винтах, чтобы это разруливать. Ну вот и смогли загрузиться и даже пробросы сами работают. Т.е. все просто до безобразия. Из программирования было только скриптование вывода DUMPBIN.
Теперь пытаемся цепануться к mssql2005/2008, как и следовало ожидать, ругается на версию скуля. Если пытаемся цепляться к скулю с машинок, где ОС Vista/7/2008 еще видим предупреждение о неверной версии odbc. Проблемы одного порядка, как оказывается.
Небольшая вводная - 1с использует odbc, как уже догадались.
Для определения версии СУБД и версии odbc (драйвера и диспетчера) 1с использует функцию из ODBCAPI SQLGetInfo:
Где второй параметр 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 так же, только номера другие :)
И вот уже можем цепляться к MSSQL 2005/2008 (MSSQL 2000 и ниже тоже в силе), а так же с новых ОС, где поменяли версии odbc.
Вот все до этого было бесплатным бонусом, а вот запуск без режима совместимости - главный профит.
лТекст =
|Create Procedure dbo." + лХранПроцедура + "
|@mode int = 100,
|@ostastext bit = 1,
|@mode1 int = 0,
|@idtovar char(9),
|@data_ta DateTime,
|@where1 varchar(300) = null,
|@ostatok int OUTPUT,
|@osttext varchar(300) OUTPUT
|
|AS
|BEGIN
|
|SET NOCOUNT ON
|
|declare @ost1 int
|declare @rez1 int
....
";
DataBase = СоздатьОбъект("ODBCDatabase");
DataBase.Attach1C();
RecordSet = СоздатьОбъект("ODBCRecordSet");
RecordSet.SetDatabase(DataBase);
RecordSet.Выполнить(лТекст);
p.s: файлик bkend0.dll патчен
Исправление ошибки 100% загрузки процессора при ожидании блокировки в
1С:Предприятие 7.7, от romix
ТиС.
Тривиальный запрос (время исполнения которого д.б. ~10 секунд) отрабатывается часами.
Запросы тривиальные
.
ТекстЗапроса = " Период с ДатаН по ДатаК;
|Склад = Регистр.Продажи.Фирма;
|Номенклатура = Регистр.Продажи.Номенклатура;
|Количество = Регистр.Продажи.Количество;
|
|Функция КоличествоПродажи = Сумма(Количество);
|
|Условие(Склад в СписокСкладов);
|Условие(Номенклатура в СЗтовары);
|
|Группировка День;
|Группировка Склад Без Групп;
|Группировка Номенклатура Без Групп;
|";
ПоказатьСписокСкладов - список элементов, групп нет.
СЗтовары - список элементов, групп нет.
Период - ровно месяц (октябрь).
Движений вообщем мало (менее миллиона записей в таблице регистра, в справочнике номенклатуры всего ~130 тыс, в выборке (список товаров) ~2800 участвуют). По моему разумению тормозит адски. Не просто адски, а издевательски.
Осилил запустить профайлер. наблюдаю малопонятные для меня действия...
Постоянно идет создание и выполнение
CRE ATE PROCEDURE #RGTEMP1PROC(@current CHAR(9)) AS
SET NOCOUNT ON
SET TEXTSIZE 0
DECLARE @VAL CHAR(9)
IF EXISTS (SEL ECT * FR OM SC84 WITH (NOLOCK) WHERE ID=@current AND ISFOLDER=1 ) BEGIN
SET NOCOUNT ON
INS ERT INTO #RGTEMP1 SEL ECT ID,ISFOLDER FR OM SC84 WITH (NOLOCK) WHERE PARENTID=@current AND ID NOT IN( SEL ECT VAL FR OM #RGTEMP1 )
WHILE 1=1 BEGIN
SEL ECT @VAL=MAX(VAL) FR OM #RGTEMP1 WH ERE ISFOLDER=1
IF @VAL IS NULL BREAK
INS ERT IN TO #RGTEMP1 SELECT ID,ISFOLDER FR OM SC84 WITH (NOLOCK) WH ERE PARENTID=@VAL AND ID NOT IN( SELECT VAL FR OM #RGTEMP1 )
DELETE FR OM #RGTEMP1 WH ERE VAL=@VAL AND ISFOLDER=1
END
END
ELSE
IF NOT EXISTS( SELE CT * FR OM #RGTEMP1 WH ERE VAL=@current )
INSERT #RGTEMP1 VALUES(@current, 2)
return (0)
Показатьсоздание этой процедуры
выполнение ее (длительность=1)
и потом выполнение (длительность=16)
exec #RGTEMP1PROC ' 25I1CBD'
dr op procedure #RGTEMP1PROC
только постоянно идентификатор в кавычках меняется
Регистр.Продажи - оборотный (типовая ТиС)
sc84 - справочник номенклатуры
и так - много много раз... явно что-то неправильно..
запрос уходит на ОЧЕНЬ долгое выполнение (на десятки минут - час)
если заккомментарить условие на номенклатуру ~7 сек.
Ниже похожий запрос, тривиальный
ТекстЗапроса = " Период с ДатаН по ДатаК;
|Склад = Регистр.ОстаткиТМЦ.Фирма;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|
|Функция КоличествоНачОст = НачОст(Количество);
|Функция КоличествоКонОст = КонОст(Количество);
|Функция КоличествоПриход = Приход(Количество);
|Функция КоличествоРасход = Расход(Количество);
|
|Условие(Склад в СписокСкладов);
//|Условие(Номенклатура в СЗтовары);
|
|Группировка День;
|Группировка Склад Без Групп;
|Группировка Номенклатура Без Групп;
|"; Показатьс незакомментареным условием - вообще нереально дождаться.
закомментарил условие - один день в периоде (задан месяц) обрабатывается 3 мин, то есть месяц - как минимум 1,5 часа. бред
в профайлере по запросу к остаткам ползет вот такое:
база мизерная, ~7Гб, выгрузка в зипе занимает 186 Мб. - то есть вообще ни о чем...
ОС - win2008R2 enterprise 64x? оперативка 32 Гб, свободной достаточно.
SQL - Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyright © Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
1C - 7.70.027,
bkend - 1.0.0.7
bkendutls - версия не указана в свойствах, дата изменения 17.01.2012
конфигурация - на основе типовой ТиС (934)
реструктуризация - насколько мне известно - запускалась и работала изначально на секретном релизе (точнее сказать не могу). Реструктуризации проводились на этом релизе движка.
Что делать, куда стучать?
и на измерениях регистров не везде стоят нужные флажки.
но править проблематично - пойдетна точки пересчет регистров а там машинки очень слабые
При проведении документов с флагом ОперативныйУчет 1С впадает в ступор и тупо ничего не делает.
Ставишь брекпоинт в ОбработкаПроведения - отладчик туда даже не заходит.
Документы, для которых в конфигураторе не стоит флаг "Оперативный учет" проводятся нормально.
В скулевом профайлере вижу следующее:
exec sp_executesql N'Select * from _1SCONST WITH (NOLOCK) where ID=@P1 and OBJID=@P2 and DATE<=@P3 order by ID DESC, OBJID DESC, DATE DESC, TIME DESC, DOCID DESC',N'@P1 int,@P2 varchar(9),@P3 datetime',60,' 0 ','1753-01-01 00:00:00'
exec sp_executesql N'Select * from _1SCONST WITH (NOLOCK) where ID=@P1 and OBJID=@P2 and DATE<=@P3 order by ID DESC, OBJID DESC, DATE DESC, TIME DESC, DOCID DESC',N'@P1 int,@P2 varchar(9),@P3 datetime',58089,' 0 ','1753-01-01 00:00:00'
exec _1sp_SC208_ByID ' QT '
exec _1sp_SC135_ByID ' 5Z '
exec _1sp_SC156_ByID ' 2I '
exec _1sp_SC156_ByID ' 2J '
exec _1sp_SC156_ByID ' 2L '
exec _1sp_SC156_ByID ' 2Q '
exec _1sp_SC156_ByID ' 93 '
exec _1sp_SC156_ByID ' 8Q '
exec _1sp_SC156_ByID ' A0 '
exec _1sp_SC156_ByID ' 8Z '
exec _1sp_SC156_ByID ' 3M '
exec _1sp_SC208_ByID ' C9 '
exec _1sp_SC54252_ByID ' 0 '
exec _1sp_SC40412_ByID ' 2 '
exec _1sp__1SJOURN_ByIDDOC ' 147S2 '
set implicit_transactions on
exec _1sp__1SJOURN_TLockX
declare @p1 int
set @p1=1073741828
declare @p2 int
set @p2=180150015
declare @p5 int
set @p5=2
declare @p6 int
set @p6=1
declare @p7 int
set @p7=-1
exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 varchar(18),@P2 varchar(10)',N'Select * from _1SJOURN WITH (NOLOCK) where DNPREFIX=@P1 and DOCNO=@P2 order by DNPREFIX, DOCNO, ROW_ID',@p5 output,@p6 output,@p7 output,' 531362019 ','00061725 '
select @p1, @p2, @p5, @p6, @p7
exec sp_cursorfetch 180150015,1,0,1
select VERSTAMP from _1SJOURN WITH (NOLOCK) where ROW_ID=75184
exec sp_executesql N'Update _1SJOURN set IDJOURNAL=@P1, IDDOC=@P2, IDDOCDEF=@P3, APPCODE=@P4, DATE_TIME_IDDOC=@P5, DNPREFIX=@P6, DOCNO=@P7, CLOSED=@P8, ISMARK=@P9, ACTCNT=@P10, VERSTAMP=@P11, RF53012=@P12, RF53177=@P13, RF53736=@P14, RF53742=@P15, RF53748=@P16, RF57060=@P17, RF57068=@P18, RF57601=@P19, RF60706=@P20, SP53006=@P21, SP53007=@P22, SP54299=@P23 where ROW_ID=@P24',N'@P1 int,@P2 varchar(9),@P3 int,@P4 smallint,@P5 varchar(23),@P6 varchar(18),@P7 varchar(10),@P8 tinyint,@P9 bit,@P10 int,@P11 int,@P12 bit,@P13 bit,@P14 bit,@P15 bit,@P16 bit,@P17 bit,@P18 bit,@P19 bit,@P20 bit,@P21 varchar(9),@P22 varchar(9),@P23 varchar(9),@P24 int',0,' 147S2 ',53136,53,'201908285YC1S0 147S2 ',' 531362019 ','00061725',5,0,9,1,0,1,0,0,0,0,0,0,0,' FI ',' C9 ',' 0 ',75184
exec _1sp__1SJOURN_ByIDDOC ' 147S2 '
exec _1sp__1SSYSTEM_TLock ПоказатьВ зависимости от вида документа запросы могут различаться, но всегда заканчиваются
exec _1sp__1SJOURN_ByIDDOC
exec _1sp__1SSYSTEM_TLock
(если я правильно понимаю, то процесс записи измененных данных документа в базу прошел и по идее 1С как-раз должна приступить непосредственно к проведению документа)
Платформа 7.7.0.27 чистая + солюшн7
bkend.dll версия 1.0.0.7 от 17/01/2012
bkendutls - от 17/01/2012
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64) Jun 11 2012 16:41:53 Copyright © Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
"реструктуризация" делалась
Стоило написать сюда, как тут же нашел причину.
Короче, сегодня обратил внимание, что период расчета итогов стоит "5 дней".
Перевел на "месяц" - документы стали проводиться.
Для проверки - перевел периодичность назад на "5 дней" - та же фигня и бездейственный ступор 1Ски.
Некоторые могут возразить, что дескать почему мы игнорируем версии новых odbc, не приведет ли это к неопределенному поведению? Может быть Microsoft сошла с ума и в новых версиях odbc-драйверов все переделала? Имеет место быть такое опасение, однако MSDN умалчивает тот факт, что Microsoft сошла с ума. Значит считаем, что все ровно.
Дошли до момента, где база переводится в родной режим (90-2005, 10-2008)
Так как уже имеется опыт подмены вызовов ODBCAPI, то ничто не запрещает быть последовательным далее.
Как известно odbc может непосредственно передавать инструкцию на исполнение, так и через механизм предварительной подготовки. А именно:
- непосредственно SQLExecDirect:
- подготовленный SQLPrepare:
Правда имеется таких функций пара (A/W), и помня, что 1с далеко не юникод, то пара W-функций нам не нужна.
Вот и все проблемы с запуском на 2005/2008 свелись к узкому горлышку, мимо которого ничто не проскочет.
Применяя сим-салабим, получаем в руки все запросы, уходящие на сервер - делай с ними что хочешь. А хотим мы, чтобы они воспринимались скулем 2005/2008.
В чем проблема с запросами?
1. С SQL2005 ужесточили синтаксис табличных хинтов (это которые в скобках идут после имени таблицы), теперь нужно указывать ключ. слово WITH:
- про 2000 читаем с абзаца Table Hints:
- про 2005 читаем с абзаца WITH (<table_hint> ):
- про 2008:
Вывод: если есть хинты, то разделяем их запятыми и вставляем ключ. слово WITH. Если хинт один, то на всякий случай вставляем WITH тоже - после SQL2008 обещают запретить вообще не указывать это ключ. слово. А таааакже вырезаем нафиг хинт, указывающий какой индекс использовать.
Так как разнообразие запросов, генерируемых 1с, мало, то проблема решилась небольшим регулярным выражением.
2. После реструктуризации 1с обрезает журнал транзакций: DUMP TRANSACTION ...
Вот этот момент спорный и каюсь поспешил - заменил на ALTER DATABASE <DB> SET SINGLE_USER
В следующей версии просто ничего слаться не будет. Потому как у некоторых включен режим FULL, и после такой инструкции нужно прописывать руками. Ну и если не слать ничего, то и бекапирование ломаться не будет.
(в 2005-м вроде есть проблема - там же в принципе несложно должно быть конец интервала если он 30.12.9999 - тупо вырезать, нэ? думаю что тем, кто на 2005-х крутит или - как я - собирается - будет очень нужно)
ЗЗЫ: а, да, забыл по первых словах увлекшись громадьем и важностью решения - респектище + спасибище тебе!
Много писать не буду. Но суть проблеммы в том что решил связать как и многие Windows Server 2008 (2008R2) и SQL 2008 (2008R2). Собственно говоря это все работает и хорошо! Только одно НО!!! Загружать базу данных надо из под Windows XP!!! OrdNoChk.prm не работает с конфигуратором при загрузке данных кроме Windows Xp. Так База загруженная с XP потом нормально открываеться В 2008 и Seven.
Вот посоветовали этот топик. Как и писал полная фигня!!!! Интересно тот кто создавал он хоть сам проверял?
Ошибка порядка сортировки при загрузке с помощью стандартной BkEnd.dll решается очень просто: смещение 0x0018a79d, отдизассемблируйте и посмотрите внимательно на байтик. Если Ваш профессионализм составляет хотя бы сотую долю Вашего самолюбия, Вы разберетесь, что с этим байтиком делать.
В противном же случае, чтобы получить помощь, нужно всего лишь корректно попросить о помощи, и не более того. Окружающие Вас люди в Ваших личных тараканах не виноваты.
у меня все работает на w2k8 R2 и sql w2k8 R2, но 1с не увидела ключа (буду разбираться, видимо в 64х битном режиме что-то) и при загрузке данных ругается на кодовую страницу, хотя с подключенной базой с sql2000 все нормально.
кстати можно ли узнать об изменениях которые автор внес в последнее время, а то файлы обновляются, а что должно изменится неясно
"prm-ки в каталоге нет" - посмотреть нужно в двух каталогах - КаталогИБ() и КаталогПрограммы().
Ну и еще, там в рекомендациях я просил вызывать реструктуризацию, т.к. в ХП тоже есть код проблемный по синтаксису.
Да, если кто пользует Openconf, то его пришлось установить только из тотоалкомандира, запущенного с правами Админа (старт батника с правами Админа не позволяет зарегить библиотеки).
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 [флДокументарнаяЗадолженность$Число]
Команда идет: ВыполнитьСкалярный
Так это не глюк, а новые задачи для разработчика этого sql-скрипта :)
Решение исправляет проблемы платформы, а свои скрипты каждый правит сам под себя.
ps: Лучше выкладывать уже распарсенные sql-скрипты.
У меня тоже GetDate() не сработал
Было
ТекстЗапроса="
|SELECT GETDATE()
|";
Сделал
ТекстЗапроса="
|SELECT current_timestamp
|";
Теперь запрос работает, но почему GETDATE() непринимается? SMS его прекрасно воспинимает.
Дальше-болше. Понятно, что некотрые запросы прийдется переписать, но не понимаю почему так.
Ведь скуль2005 и 2008 прекрасно воспринимают табличные хинты типа NOLOCK SERIALIZABLE и тп без WITH.
Может я что-то не так настроил? Что значит реструкторизация? Может я не понял как ее произвести.
SPOCK, напиши пожалуста об этом попродробней.
(33)Про "Дальше-болше." давай подробнее. Пример запроса, на котором проблема проявляется.
"Что значит реструкторизация?" - это когда метаданные изменились и нажали ctrl+s.
Небольшой курс выяснения проблем: на чем-то валится? Значит ловим запрос профайлером и публикуем здесь - проблема решается.
(35)Ничего не нужно делать дополнительно, если есть проблема - она должна быть решена в этой библиотеке, кроме запросов, выполняемых через 1с++. Свои sql-запросы проще модифицировать.
(37)какая версия решения? Файлик OrdNoChk.prm нужно удалить вообще из каталогов ИБ и BIN. Он будет мешать, я этот момент отражал в описании.
У меня тоже GetDate() не сработал
А может удобнее объявить свою функцию GetDate()?
Возвращающую current_timestamp.
Мне интересно: есть ли какие-то преимущества в использовании формата SQL 2005/8?
В скорости работы 1C, мож в блокировках, исчезновении дэдлоков?
Из недостатков, я так понял: нельзя делать реорганизацию, надо переписывать некоторые прямые SQL запросы
Автору, конечно: +. Вещь нужная, другой вариант решения этой проблемы, написание, как Ethersoft, ODBC-драйвера с парсером.
.
Sql 2008 + секретный релиз 1С 77 нормально пашет, еще в новых SQL SQL2012+ нужно запускать скрипт исправления sp_dboption.sql
USE [master]
GO
/****** Object: StoredProcedure [dbo].[sp_dboption] Script Date: 21.03.2012 7:33:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[sp_dboption] -- 1999/08/09 18:25
*dbname sysname = NULL, -- database name to change
*optname varchar(35) = NULL, -- option name to turn on/off
*optvalue varchar(10) = NULL -- true or false
as
set nocount on
declare *dbid int -- dbid of the database
declare *catvalue int -- number of category option
declare *optcount int -- number of options like *optname
declare *allstatopts int -- bit map off all options stored in sysdatqabases.status
-- that can be set by sp_dboption.
declare *alloptopts int -- bit map off all options stored in sysdatqabases.status
-- that can be set by sp_dboption.
declare *allcatopts int -- bit map off all options stored in sysdatqabases.category
-- that can be set by sp_dboption.
declare *exec_stmt nvarchar(max)
declare *fulloptname varchar(35)
declare *alt_optname varchar(50)
declare *alt_optvalue varchar(30)
declare *optnameIn varchar(35)
select *optnameIn = *optname
,*optname = LOWER (*optname collate Latin1_General_CI_AS)
-- If no *dbname given, just list the possible dboptions.
-- Only certain status bits may be set or cleared by sp_dboption.
-- Get bitmap of all options that can be set by sp_dboption.
select *allstatopts=number from master.dbo.spt_values where type = 'D'
and name = 'ALL SETTABLE OPTIONS'
select *allcatopts=number from master.dbo.spt_values where type = 'DC'
and name = 'ALL SETTABLE OPTIONS'
select *alloptopts=number from master.dbo.spt_values where type = 'D2'
and name = 'ALL SETTABLE OPTIONS'
if *dbname is null
begin
select 'Settable database options:' = name
from master.dbo.spt_values
where (type = 'D'
and number & *allstatopts <> 0
and number not in (0,*allstatopts)) -- Eliminate non-option entries
or (type = 'DC'
and number & *allcatopts <> 0
and number not in (0,*allcatopts))
or (type = 'D2'
and number & *alloptopts <> 0
and number not in (0,*alloptopts))
order by name
return (0)
end
-- Verify the database name and get info
select *dbid = dbid
from master.dbo.sysdatabases
where name = *dbname
-- If *dbname not found, say so and list the databases.
if *dbid is null
begin
raiserror(15010,-1,-1,*dbname)
print ' '
select 'Available databases:' = name
from master.dbo.sysdatabases
return (1)
end
-- If no option was supplied, display current settings.
if *optname is null
begin
select 'The following options are set:' = v.name
from master.dbo.spt_values v, master.dbo.sysdatabases d
where d.name=*dbname
and ((number & *allstatopts <> 0
and number not in (-1,*allstatopts)
and v.type = 'D'
and (v.number & d.status)=v.number)
or (number & *allcatopts <> 0
and number not in (-1,*allcatopts)
and v.type = 'DC'
and d.category & v.number <> 0)
or (number & *alloptopts <> 0
and number not in (-1,*alloptopts)
and v.type = 'D2'
and d.status2 & v.number <> 0))
return(0)
end
if *optvalue is not null and lower(*optvalue) not in ('true', 'false', 'on', 'off')
begin
raiserror(15241,-1,-1)
return (1)
end
-- Use *optname and try to find the right option.
-- If there isn't just one, print appropriate diagnostics and return.
select *optcount = count(*) ,*fulloptname = min(name)
from master.dbo.spt_values
where lower(name collate Latin1_General_CI_AS) like '%' + *optname + '%'
and ((type = 'D'
and number & *allstatopts <> 0
and number not in (-1,*allstatopts))
or (type = 'DC'
and number & *allcatopts <> 0
and number not in (-1,*allcatopts))
or (type = 'D2'
and number & *alloptopts <> 0
and number not in (-1,*alloptopts)))
-- If no option, show the user what the options are.
if *optcount = 0
begin
raiserror(15011,-1,-1,*optnameIn)
print ' '
select 'Settable database options:' = name
from master.dbo.spt_values
where (type = 'D'
and number & *allstatopts <> 0
and number not in (-1,*allstatopts)) -- Eliminate non-option entries
or (type = 'DC'
and number & *allcatopts <> 0
and number not in (-1,*allcatopts))
or (type = 'D2'
and number & *alloptopts <> 0
and number not in (-1,*alloptopts))
order by name
return (1)
end
-- If more than one option like *optname, show the duplicates and return.
if *optcount > 1
begin
raiserror(15242,-1,-1,*optnameIn)
print ' '
select duplicate_options = name
from master.dbo.spt_values
where lower(name collate Latin1_General_CI_AS) like '%' + *optname + '%'
and ((type = 'D'
and number & *allstatopts <> 0
and number not in (-1,*allstatopts))
or (type = 'DC'
and number & *allcatopts <> 0
and number not in (-1,*allcatopts))
or (type = 'D2'
and number & *alloptopts <> 0
and number not in (-1,*alloptopts))
)
return (1)
end
-- Just want to see current setting of specified option.
if *optvalue is null
begin
select OptionName = v.name,
CurrentSetting = (case
when ( ((v.number & d.status) = v.number
and v.type = 'D')
or (d.category & v.number <> 0
and v.type = 'DC')
or (d.status2 & v.number <> 0
and v.type = 'D2')
)
then 'ON'
when not
( ((v.number & d.status) = v.number
and v.type = 'D')
or (d.category & v.number <> 0
and v.type = 'DC')
or (d.status2 & v.number <> 0
and v.type = 'D2')
)
then 'OFF'
end)
from master.dbo.spt_values v, master.dbo.sysdatabases d
where d.name=*dbname
and ((v.number & *allstatopts <> 0
and v.number not in (-1,*allstatopts) -- Eliminate non-option entries
and v.type = 'D')
or (v.number & *allcatopts <> 0
and v.number not in (-1,*allcatopts) -- Eliminate non-option entries
and v.type = 'DC')
or (v.number & *alloptopts <> 0
and v.number not in (-1,*alloptopts) -- Eliminate non-option entries
and v.type = 'D2')
)
and lower(v.name) = lower(*fulloptname)
return (0)
end
select *catvalue = 0
select *catvalue = number
from master.dbo.spt_values
where lower(name) = lower(*fulloptname)
and type = 'DC'
-- if setting replication option, call sp_replicationdboption directly
if (*catvalue <> 0)
begin
select *alt_optvalue = (case lower(*optvalue)
when 'true' then 'true'
when 'on' then 'true'
else 'false'
end)
select *alt_optname = (case *catvalue
when 1 then 'publish'
when 2 then 'subscribe'
when 4 then 'merge publish'
else quotename(*fulloptname, '''')
end)
select *exec_stmt = quotename(*dbname, '[') + '.dbo.sp_replicationdboption'
EXEC *exec_stmt *dbname, *alt_optname, *alt_optvalue
return (0)
end
-- call Alter Database to set options
-- set option value in alter database
select *alt_optvalue = (case lower(*optvalue)
when 'true' then 'ON'
when 'on' then 'ON'
else 'OFF'
end)
-- set option name in alter database
select *fulloptname = lower(*fulloptname)
select *alt_optname = (case *fulloptname
when 'auto create statistics' then 'AUTO_CREATE_STATISTICS'
when 'auto update statistics' then 'AUTO_UPDATE_STATISTICS'
when 'autoclose' then 'AUTO_CLOSE'
when 'autoshrink' then 'AUTO_SHRINK'
when 'ansi padding' then 'ANSI_PADDING'
when 'arithabort' then 'ARITHABORT'
when 'numeric roundabort' then 'NUMERIC_ROUNDABORT'
when 'ansi null default' then 'ANSI_NULL_DEFAULT'
when 'ansi nulls' then 'ANSI_NULLS'
when 'ansi warnings' then 'ANSI_WARNINGS'
when 'concat null yields null' then 'CONCAT_NULL_YIELDS_NULL'
when 'cursor close on commit' then 'CURSOR_CLOSE_ON_COMMIT'
when 'torn page detection' then 'TORN_PAGE_DETECTION'
when 'quoted identifier' then 'QUOTED_IDENTIFIER'
when 'recursive triggers' then 'RECURSIVE_TRIGGERS'
when 'default to local cursor' then 'CURSOR_DEFAULT'
when 'offline' then (case *alt_optvalue when 'ON' then 'OFFLINE' else 'ONLINE' end)
when 'read only' then (case *alt_optvalue when 'ON' then 'READ_ONLY' else 'READ_WRITE' end)
when 'dbo use only' then (case *alt_optvalue when 'ON' then 'RESTRICTED_USER' else 'MULTI_USER' end)
when 'single user' then (case *alt_optvalue when 'ON' then 'SINGLE_USER' else 'MULTI_USER' end)
when 'select into/bulkcopy' then 'RECOVERY'
when 'trunc. log on chkpt.' then 'RECOVERY'
when 'db chaining' then 'DB_CHAINING'
else *alt_optname
end)
if *fulloptname = 'dbo use only'
begin
if *alt_optvalue = 'ON'
begin
if databaseproperty(*dbname, 'IsSingleUser') = 1
begin
raiserror(5066,-1,-1);
return (1)
end
end
else
begin
if databaseproperty(*dbname, 'IsDBOOnly') = 0
return (0)
end
end
if *fulloptname = 'single user'
begin
if *alt_optvalue = 'ON'
begin
if databaseproperty(*dbname, 'ISDBOOnly') = 1
begin
raiserror(5066,-1,-1);
return (1)
end
end
else
begin
if databaseproperty(*dbname, 'IsSingleUser') = 0
return (0)
end
end
select *alt_optvalue = (case *fulloptname
when 'default to local cursor' then (case *alt_optvalue when 'ON' then 'LOCAL' else 'GLOBAL' end)
when 'offline' then ''
when 'read only' then ''
when 'dbo use only' then ''
when 'single user' then ''
else *alt_optvalue
end)
if lower(*fulloptname) = 'select into/bulkcopy'
begin
if *alt_optvalue = 'ON'
begin
if databaseproperty(*dbname, 'IsTrunclog') = 1
select *alt_optvalue = 'RECMODEL_70BACKCOMP'
else
select *alt_optvalue = 'BULK_LOGGED'
end
else
begin
if databaseproperty(*dbname, 'IsTrunclog') = 1
select *alt_optvalue = 'SIMPLE'
else
select *alt_optvalue = 'FULL'
end
end
if lower(*fulloptname) = 'trunc. log on chkpt.'
begin
if *alt_optvalue = 'ON'
begin
if databaseproperty(*dbname, 'IsBulkCopy') = 1
select *alt_optvalue = 'RECMODEL_70BACKCOMP'
else
select *alt_optvalue = 'SIMPLE'
end
else
begin
if databaseproperty(*dbname, 'IsBulkCopy') = 1
select *alt_optvalue = 'BULK_LOGGED'
else
select *alt_optvalue = 'FULL'
end
end
-- construct the ALTER DATABASE command string
select *exec_stmt = 'ALTER DATABASE ' + quotename(*dbname) + ' SET ' + *alt_optname + ' ' + *alt_optvalue + ' WITH NO_WAIT'
EXEC (*exec_stmt)
if **error <> 0
begin
raiserror(15627,-1,-1)
return (1)
end
return (0) -- sp_dboption
GO
Помню, года 1.5 назад через танцы с бубном и интернеты птица по имени server2008R2+SQL2008+7.7 у меня взлетела, да..
Так что плюс несомненный и огромный респект, за систематизацию всех проблемных моментов "в одном флаконе"!
...Но вот только кроме "использования современного ПО" никаких плюсов я для этой "птицы" тогда не увидел, поэтому вопрос в (34) остается открытым: "преимущества в использовании формата SQL 2005/8?"
система: Server 2008
sql: MS SQL 2008
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
релиз 27
конфигурация Торговля 7.7
сервер SQL2005(9.00.3080.00)
база sql с такими параметрами
compat: SQL Server 2005(90)
collation: Cyrillic_General_CI_AS
создавалась сначала пустышка в студио, затем заливалась через конфигуратор.
как я понял в глобальнике не отрабатывает "глПроверкаАктуальностиОтчета"
вот это условие всегда возвращает "1"
Если ВыбПоследовательность.Проверить(ПозицияОтчета)=0 Тогда
вот. всё что знал сказал.
Куда копать ?
P.S.
хотя вроде ловит если изменения произошли не в предпоследнем документе.
текст SQL запроса сравнил, он получается одинаковый
При загрузке базы из 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 Показать
Создал пустую базу (в режиме 2008 (100)), назначил пользователя владельцем, в конфигураторе прописал настройки ...
в общем все вроде правильно.
Кстати, предварительно пытался перетащить туже базу только без данных (пустую конфигурацию). Все проходило без проблем.
Сам я в sql особо не копенгаген.
Может подскажите где грабли?
Еще вспомнил...
До этого корячился в преславутой BkEnd.dll
И подменой ODBC через реестр.
Как теперь откатить подмену?
делал вот по этой инструкции:
1. Папку 1Cv7_SQLDriver скопировать в корень диска C
2. Импортировать в реестр файл 1C_SQL_ODBC.reg
3. с помощью команды sdbinst.exe [путь к файлу] 1sfix.sdb установить исправление.
4. 1с должна запуститься
Может ошибка с этим связана?
Все загрузилось, сейчас тестируем.
Пыс.Пыс.
Я только не понял , что за рекомендации:
"вызывать реструктуризацию, если база данных до этого использовалась с родной BkEnd.dll (в хранимых процедурах есть код, который не проходит по ограничениям SQL2005/2008);"
Как это сделать?
Как мне кажется такие разработки должны публиковаться с исходными кодами чтобы силами сообщества можно было достаточно оперативно подправлять найденные баги.
ну тогда как поступаем с таким, например, DUMP TRANSACTION %s WITH TRUNCATE_ONLY на sql2008r2?
так-то я сам в этом не заинтересован.
Диаграмма.КоличествоТочек(КолвоТочек);
{Отчет.СтатистикаРаботы.Форма.Модуль(69)}: Значение не представляет агрегатный объект (КоличествоТочек)
Win2008R2+SQL2005
Спасибо за разработку!
Во вторых есть такая хотелка:
Установлен MS SQL Server 2008 R2.
Если база находится в режиме совместимости c 2000 SQL, то все работает отлично.
проблема начинается при переключении базы в режим совместимости 2008 (100)
При выполнении из 1С такого запроса (из внешней компоненты. Компонента чужая, доработать возможности нет)
' DECLARE @tmp int
SELECT @tmp=1 from _1SBKTTL (tablockx, holdlock) where 0=1'
SQLExecDirect() перехватывается Вашей библиотекой как задумано. Текст запроса передается в BkEndUtls.ProccessQueryText(), но никак не изменятся. Т.е. как я понимаю должен добавиться "WITH" перед хинтами блокировки.
Если можно это поправить - было бы просто чудесно.
Вариант конечно - прикрутить еще одну компоненту - которая будет частично дублировать функционал Вашей библиотеки в части перехвата запросов и их трансляции, но у Вас это уже реализовано.
возможно, что не зарегена эта длл-ка, или она работает некорректно. например, v7plus.dll на win7 x64 начинает нормально грузиться только после простановке в свойствах ярлыка 1С совместимости с WinXP
Хотелось бы ...
У вас такая ситуация уже возникла или это только фантазии?
Мы сейчас находимся на стадии внедрения этого "Секретного релиза".
Пока тестируем. Есть проблемы, но пока не могу сказать с чем это связано. То ли это косяки SQL, толи 1С.
При выполнении регламентных работ почему-то на SQL версии встают кривые проводки. Хотя то же самое на dbf отрабатывает правильно.
У нас конфигурация написаная с самого начала (с Глобального модуля) под наше предприятие. Размер MD файла около 30mb. База за год вырастает до 5 Гб. Все бы хорошо, но размер одной из dbf таблиц подкатывает к 2Гб, а это, как вы знаете каюк!
По этому кровь из носу надо перетаскивать всю базу на SQL. Выбора у нас нет.
Переходить на 8, тоже не представляется возможным. Слишком долго и затратно.
По этому кровь из носу надо перетаскивать всю базу на SQL. Выбора у нас нет.
Выбор у вас есть! Вот эта штука два года назад спасла меня в аналогичной ситуации (не было возможности поднять SQL в 7-ми филиалах за 2 дня)
Можете объяснить как-то по подробнее, только наверное не здесь.
Сервак Win2003 x64 (замен драйверов нет), SQL 2005
Перевел базу в режим совместимости 2005(90). В конфигураторе закрузка базы проходит, в режим предприятия тоже, но до тех пор пока не пытаешься открыть любой журнал документов или сформировать отчет!
Ошибка:
SQL State 42000
Native 1018
Incorrect syntax near 'INDEX' .... a table hint, a WITH keyword
Пытался внести изменения в конфу(для так наз реструктуризации, добавил новый реквизит у справочника - достаточно???) - результат ТОТ ЖЕ!
Присоединяюсь к вопросу.
Установил Server2008r2 + sql server 2008. в базе указал режим совместимости с sql 2000 (80)
Пробовал переводить в режим совместимости с sql 2008 (100) - в однопользовательском режиме не заметил никаких изменений.
Что дает режим sql 2008 (100)?
1C77 привилась к такой среде нормально, поднимал рабочую базу из выгрузки. Выгрузка сделана с SQL 2005 базы, ну т.е. 1С Sql, не с помощью средств СУБД, а с помощью 1С.
Есть одна база тоже скульная, тоже на SQL 2005 сидела, вот она не хочет подниматься, целую ночь загружалась в SQL 2008 и до сих пор висит, почему остальные базы загружаются, а именно одна нет. Где искать причину? Дело в том, что загрузка в SQL 2008 идет до сих пор, уже прошло порядка 18 часов, сама база на SQL 2005 весит около 980Мб это файл .mdf, а лог файл .log чуть больше 50 Мб. Выгрузка базы средствами 1С 36 Мб.
База на SQL 2008 создана с учетом предложенных тут настроек, а все остальные по умолчанию, дело в том что не хочет грузится одна база.
Причем глядя на список процессов видно было загрузку на SQL сервере и практически полное бездействие на 1c.
На другой машине (собрал в виртуалке с нуля для проверки) всё залилось.
Думается мне тут есть тлетворное влияние разных версий DLL
Подскажите есть обработки которые позволяют изменить ДАТУ ДОКУМЕНТА не проводя его? Документ уже проведен и не хочется перепроводить его. Ответ: Нельзя изменить атрибут ДатаДок у проведенного документа, надо сделать не проведенным.
В общем проблема найдена, почему висит так долго при загрузке на SQL, важно перед загрузкой проверить базу с которой делалась выгрузка. Зайти в общий журнал документов и в интервале (период) проставить например 01.01.0000 по 31.12.9999 и проверить самый верхний и самые нижние документы. Обратите внимание на самые нижние документы если есть документ/ы которые выходят за пределы ТА (пределы базы), то надо исправить дату документа. У меня в базе был документ который провели в марте этого года, а вот дата документа 6201 год стоит. Вот почему на SQL висит, база уже загрузилась на скуле (точнее структура создана), а вот потом начинается пересчет ссылок или что-то в это роде. И процесс висит очень долго, я ждал порядка 20 часов, возможно бы и загрузка когда-нибудь и закончилась, но всё же если есть такие документы это неправильно и надо исправить! Перед тем как будете вводить в интервал (период) года, ОБЯЗАТЕЛЬНО зайдите в СЕРВИС>Параметры и проставьте: Число цифр года в представлении даты: 4. Потом можете вводить указанный мною период. Далее сделайте выгрузку и загружайте в СУБД. У меня загрузка заняла 15 минут . Тоже самое и для самых верхних, если есть такие ранние например дата док от 1920 то, тоже неправильно.
Подскажите есть обработки которые позволяют изменить ДАТУ ДОКУМЕНТА не проводя его? Документ уже проведен и не хочется перепроводить его. Ответ: Нельзя изменить атрибут ДатаДок у проведенного документа, надо сделать не проведенным.
Я бы вам (и всем) посоветовал перед началом выгрузки данных из 1С открыть общий журнал документов, установить начало периода пустым, а не как вы предлагаете "01.01.0000". Столкнулся с те ми же проблемами.
Перенос бызы, точнее ее загрузка в SQL занимала около 10 часов. Периодически заглядывая на экран обнаружил что идет пересчет перектрестных ссылок начиная с даты "01.01.1753" по каждому документу. Стал копать. Обнуружил что в базе присутствуют два документа без даты!.При чем давность этих документов порядка двух-трех лет. Как умудрились сохранить такие документы мне не понятно, программа этого не позволяет. Как вариант это могло произойти в результате какого-то сбоя.
Так что проверяйте.
Причем если вы всетаки загрузите такие данные, я вам не завидую, потому что пересчет итогов вас неприятно удивит своей продолжительностью ;) по той же причине.
все работает без ошибок. Нашел толь один досадный момент, а именно:
При входе каждого пользователя в 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 данного сообщения небыло, а тут его добавили. Более подробно здесь
Хотелось бы в прокси dll учитывать эту особенность и либо вообще не посылать на сервер комманду смены recovery model либо предварительно проверять что там уже стоит.
И тут оказывается, что некоторые элементы вспомогательного справочника не получается создать. Пишет "При выполнении транзакции произошла ошибка! Объект заблокирован:..."
Смотрю чем отличается справочник от других, например у него длинна кода и наименования 0. Меняю, не помогает.
пока не найду решение, придется их вернуть на DBF
Использую вашу обработку. При загрузке данных в Sql 1С "Вылетает" не закончив загрузку. В базе появляются справочники и два вида документов, остальные документы не догружаются.
1) файлы версии 1.0.0.5 от 05.04.11;
2) субд sql 2008 r2;
3) загрузка производится с компа на котором стоит Vista;
4) конфигурация переписанная ТИС;
5) проблема возникает при загрузки данных....
Процедура ПриНачалеРаботыСистемы()
...
//если версия ОС Windows 2008r2, то выполнение следующего кода приводит к нормальному завершению сеанса
//хз почему
ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"v7plus.dll");
Инфо = СоздатьОбъект("AddIn.V7SysInfo");
ВерсияОС = Инфо.ВерсияОС;
Поз = Найти(ВерсияОС," ");
Если Сред(ВерсияОС,Поз+1,1)="6" Тогда
Попытка
Соединение = СоздатьОбъект("Addin.V7HttpReader");
Соединение.КоличествоПопытокАвторизации = 3;
Стр = "";
Соединение.ПолучитьКакСтроку("http://www.ya.ru", Стр);
Исключение
КонецПопытки;
КонецЕсли;
...
КонецПроцедуры Показатьможно и с локального хоста.
Понимаю что бред, но заметил это когда робот загрузился и не вылетел, а он загружает курсы, туда и начал рыть.
Причем просто создание объекта не помогает, надо именно скачать хоть 1 байт.
Добрый день,
Использую вашу обработку. При загрузке данных в Sql 1С "Вылетает" не закончив загрузку. В базе появляются справочники и два вида документов, остальные документы не догружаются.
1) файлы версии 1.0.0.5 от 05.04.11;
2) субд sql 2008 r2;
3) загрузка производится с компа на котором стоит Vista;
4) конфигурация переписанная ТИС;
5) проблема возникает при загрузки данных....
Пробовали запускать 1cv7s.exe в режиме совместимости с XP ?
У меня настройки регламентных работ не хотели открываться без этого режима.
SQL State: 08001 Native 0 Message [Microsoft][ODBC SQL Server Driver] Не предоставлены ключевые слова DSN и Server
SQL State: 01500 Native 0 Message [Microsoft][ODBC SQL Server Driver] Не допустимый атрибут строки соединения
Все установлено по инструкции и помню на SQL Server 2005 работало.
На всякий случай совместимость базы понизил до SQL Server 2008 (100) ниже никик.
Что делать?
SQL State: 08001 Native 0 Message [Microsoft][ODBC SQL Server Driver] Не предоставлены ключевые слова DSN и Server
SQL State: 01500 Native 0 Message [Microsoft][ODBC SQL Server Driver] Не допустимый атрибут строки соединения
Все установлено по инструкции и помню на SQL Server 2005 работало.
На всякий случай совместимость базы понизил до SQL Server 2008 (100) ниже никак.
Что делать?
Еще где-то видел, что в борьбе с этим исключением помогает изменение переменных среды
Вот цитата:
У меня например под XP SP2 она такая: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Sy stem32\Wbem;C:\Program Files\QuickTime\QTSystem\
Переменные TMP и TEMP по-умолчанию должны быть: %USERPROFILE%\Local Settings\Temp
После изменений необходимо (могу ошибаться) перегрузить компьютер.
Еще посоветую проверить доступ пользователя (вкладка безопасность свойств) к каталогам баз 1с и т.д.
У меня похожая ситуация была. Типовая (нашей разработки) грузилась без проблем, а с данными вылетала с ошибкой.
я писал тут уже.
Использую ваши модули.
При попытке загрузке данных в Sql v77 "падает" даже толком не не начав загрузку.
Создание таблиц пробегает и встает на сообщении: "Загрузка системной информации" ...
1) файлы версии 1.0.0.5 от 05.04.11;
2) Сервак Ось: Win2008R2 Enterprise Rus;
3) СУБД SQL2008R2 Enterprise Rus;
4) клиентский комп (откуда гружу выгрузку v77) Win7Prof 64;
5) конфигурация переписанная ТИС;
6) проблема возникает при загрузке;
7) База на СУБД создавалась во всех вариантах: от 2000 (8.0) до 2008 (10.0).
Пробовал ставить v77 режим совместимости с Хрюшей, пробовал грузить с компа с ХРюшей, все равно одно и то же сообщение об ошибке:
-------------
SQL State: HY000
Native: 0
Message: [Microsoft][ODBS SQL Server Driver] Несоответствие версий
ODBCBCP и драйвера
-------------
Всю голову уже сломал, тучу форумов прочитал, никак не пойму, что делаю НЕ так??
Подключился с Windows 7 64-x, загрузил базу, зашел в конфигуратор, добавил пробел к имени релиза, сохранил (типа реструктуризация), запустился в монопольном все работает. Документы все на месте, новые создаются и проводятся, периоды открываются, отчеты формируются.
Сервер:
Windows 2008 Server R2 Standart Edition (понятно, что 64-bit)
MS SQL Server 2008 R2 64-bit
ODBC-драйвера, менял, еще до установки этого решения, но может это и ни к чему (3 библиотеки sqlsrv32.dll, sqlsrv32.rll и odbcbcp.dll брал от Windows 2003 Server)
Клиент:
Windows 7 64-bit
1С: Предприятие 7.7 SQL (27 релиз) Uni-сборка, установка в режиме для SQL 2005
BkEnd.dll не патченый, по крайней мере не из сборки, брал с другого компа, где вроде из стандартной поставки ставили, хотя... кто знает может тоже из сборки какой-то
Переименовал BkEnd.dll в BkEnd0.dll, скопировал библиотеки в папку программы, как в инструкции сказано
Вроде все.
Как уже сказал, на первый взгляд все работает, дальше видно будет.
Попробую с самого Windows 2008 Server зайти в программу и загрузить базу.
Также не проверял еще будет ли работать при множественном подключении клиентов.
Автору спасибище огромное, другие пляски с бубном, типа изменения BkEnd.dll, не помогали.
Сервер:
Windows 2008 Server R2 Standart Edition x64, MS SQL Server 2008 R2 64-bit, Удаленный рабочий стол.
Клиенты работают с 1С через терминал
Возникла необходимость перенести 1С 7.7 и 1С 8.2 на один сервер (Windows Server 2012 Standart и Microsoft SQL Server 2012 ).
Прочитал много материла разного про работу 1с 7.7 и сиквела 2012.
Воспользовался материалами данной статьи.
Все заработало, но одно но - odbcbcp.dll, sqlsrv32.dll и sqlsrv32.rll все равно пришлось менять.
Уровень совместимости для смквельной базы 1С 7.7 поставил SQL Server 2012 (110), пробовал и 2005(90). На поведение системы никак не влияло
Запускал тестирование базы, выгрузку - загрузку.
Пока все работает.
ODBC-драйвера, менял, еще до установки этого решения, но может это и ни к чему (3 библиотеки sqlsrv32.dll, sqlsrv32.rll и odbcbcp.dll брал от Windows 2003 Server)
надо оставить оригинальные. т.е. не брать от другой ОС.
На самом сервере зашел в 1С, тоже прекрасно. Запустил перепроведение документов, пошло, правда почему-то неожиданно медленно.
Знаю, что SQL-вариант медленнее файлового, но не ожидал что настолько. Хотя тут еще надо с настройками SQL-сервера повозиться, говорят память понастраивать можно и может что-то в свойствах базы...
Грабли возникли с Windows XP 32-bit.
Скопировал каталог 1С с Windows 7, там запускается нормально. И эта же 1С на сервере нормально запустилась.
На ХР же даже в конфигуратор не смог зайти. Выкидывает с ошибкой "Нарушена структура таблицы ..."
В чем может быть проблема ?
После того как получилось загрузить из под Windows 7 поменял владельца базы данных, могло это как-то повлиять ?
В Windows 7 в конфигураторе зашел и поменял пользователя, под которым к базе цепляюсь, зашел в 1С без проблем, а в ХР не пускает в конфигуратор, даже чтобы настройки подключения сменить.
У кого получилось настроить подключение под разными ОС, отпишитесь, чтоб знать что это возможно.
надо оставить оригинальные. т.е. не брать от другой ОС
поменяю завтра на родные
а как это сказывается на работу ?
кстати, в текущей версии уже исправлено "ALTER DATABASE <DB> SET SINGLE_USER" ?
или стоит попозже обновиться ?
и в чем это сейчас может проявляться ? или не стоит заморачиваться ?
- bkend.dll 1,0,0,5 и 5 апреля 2011 г., 23:59:05
- bkendutls.dll - версия не указана и 5 апреля 2011 г., 23:59:53
2. сервер СУБД в формате select @@version;
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr 2 2010 15:53:02 Copyright © Microsoft Corporation Developer Edition on Windows NT 6.1 <X86> (Build 7600: )
3. версия ОС;
Windows 7 Профессиональная
4.конфигурация 1с;
ээээ... ТиС платформа 7.70.027
5. действия, которые вызывали проблему;
- открываю конфигуратор, Конфигурация - Открыть конфигурацию:
SQL State: IM003
Native: 160
Message: Не удаетсся загрузить указанный драйвер из-за системной ошибке 126 ( SQL Server).
делали ли, как выразился один из тестеров, "так называемую" реструктуризацию;
- неа, не делал. так как открываю только конфу и там ошибка валится.
Открываю конфигуратор, Конфигурация - Открыть конфигурацию:
SQL State: IM003
Native: 160
Message: Не удается загрузить указанный драйвер из-за системной ошибке 126 ( SQL Server).
Предпринял попытку, используя Solution7, завести 1С-ку под MS SQL 2014 х64.
ОС: Windows Server 2012 R2 Standart x64.
Все ставилось по методичке. Был создан отдельный логин для 1С-ки, даны все необходимые права.
База при создании сразу же была присвоена этому пользователю. Compatibility level: SQL Server 2014 (120).
Загрузка базы делается средствами 1С: "Администрирование" -> "Загрузить данные".
Вроде бы взлетела, но потом вылезла следующая проблема.
При восстановлении последовательностей (т.е. в монопольном режиме) через некоторое время вылазит
следующее сообщение "...Database '..' is already open and can only have one user at a time" и, понятно,
что после этого 1С-ка валится с невосстановимой ошибкой БД. Скриншот я прикрепил к сообщению.
Из проведенных экспериментов и наблюдений:
1. Такое характерно для больших баз. У меня на базе 14ГБ это происходит постоянно, т.е. восстановить
последовательность с помощью штатного механизма я не могу.
2. На базе до 1ГБ, в которой тоже много документов, последовательность восстанавливается без проблем и
за очень большой период.
3. Ошибка вылазит на разных периодах, разных документах.
4. Перезапуск SQL (память освобождается) отдаляет время появления ошибки.
Ощущение, что в 2014 сервере поменяли что-то, связанное с управлением памятью (может тот самый фоновый процесс сброса грязных страниц), и в какой-то момент 1С-ка не получает доступ к базе.
Ошибка происходит в этой процедуре: _1sp__1SJOURN_TLockX
Все остальное работает без проблем.
Есть какие-то идеи как это побороть?
P.S.: автору большое спасибо и уважение за разработку!
Ну а так это самое лучшее решение.
spock, допили плиз, многим надо
"Зато имеется другая проблема - так называемый фоновый процесс сброса грязных страниц из кэша буфера данных, при выполнении которого, не удается запустить 1с в монопольном режиме".
Следует ли из этого, что при использовании "секретного релиза" под учеткой SA, принципиально невозможно запустить 1С в монопольном режиме? Или эта проблема проявляется время от времени?
"...фоновый процесс... при выполнении которого, не удается запустить 1с в монопольном режиме". Т.е., когда запускается этот процесс, то без этот "секретного релиза" (или народного патчига) будет невозможно монопольно зайти в 1с под учеткой, у которой есть VIEW SERVER STATE пермишины. Если нужно, то могу дальше разъяснить..
после этого патча, предложение повторить транзакцию не выводится, а падает с ошибкой. это как-то лечится ?
SQL server 2005
1с работает на win7
У кого нибудь выходит запрос на повтор транзакции ?
про установку, сложный вопрос. Нельзя установить 1с 7.7 на win7-64bit
есть некий набор "рабочих файлов 1с" который размножается копированием.
Единственное, думаю, возможно влияет установленный в SQL2005 у боевой базы "Compatibility level=SQL Server 2000(80)"
А запрос на повтор транзакции, например при проведении документа, всё-таки вылазит или нет ? (часто бывает в момент больших обменов по УРБД)
P.S.
надо бы в FAQ вынести список важных DLL с версиями, для обязательной проверки (система, файл, размер, версия)
:)
Для ПОЛНОГО счастья не хватает добавления исправления ошибки "100% загрузки процессора при ожидании блокировки". Есть решение от maxpiter но у меня зоопарк конфигураций и в каждую вставлять вызов внешней DLL это не спортивно, надо платформенное решение. Ну а так это самое лучшее решение. spock, допили плиз, многим надо
Неужели только я так хочу? Может кто подскажет другой выход?
мда жаль конечно что это решение не появилось раньше, загрузить уже такое не получается, пишет "ошибка загрузки данных" и все :(
последняя строка в профайлере:
insert bulk RA8316("IDDOC" char(9) COLLATE Cyrillic_General_CI_AS,"LINENO_" smallint,"ACTNO" int,"DEBKRED" bit,"IDDOCDEF" int,"DATE_TIME_IDDOC" char(23) COLLATE Cyrillic_General_CI_AS,"SP8312" char(9) COLLATE Cyrillic_General_CI_AS,"SP8313" numeric(2,0),"SP8314" numeric(12,2),"SP11536" numeric(12,2),"SP13749" numeric(12,2),"SP8315" numeric(1,0))
если верить статус строке то "Оказание услуг 3700" и тут вымирает - ошибка выгрузки :(
такое обдиралово которое сейчас у 1с с их кривыми конфами, которые снова пилить нужно, пользователей переучивать, выслушивать годами негатив в свой адрес и это при огромных затратах, в итоге считали ни один раз и преимуществ ноль!
Позволяет без проблем запустить на современном серверном софте и железе эти анахронизмы конца 90-х, дабы спокойно перенести данные в ИБ на текущей платформе.
От меня лично за такую возможность автору большое спасибо!
Много баз на разных платформах XP,W7,Sql 2000,2008, 1с77, 1с++, ТоySQl
один релиз на все базы
Полет нормальный, проблем нет, пока одни плюсы
Рекомендую
P/s По 8-ке. Зачем платить больше, если есть "Дося"?
C 1992 года занимаюсь внедрением 1С-программ. Начинал с версии 3.0 (это когда они ещё на Проф и базовую не разделялись). При выходе каждой принципиально новой версии движки пользаки делились на "противников" и "заступников" нового решения. Так было с версиями 1.0 и 2.0 Проф, 6.0 под Винду. Особенно много пользаки выли при переходе с 6.0 на решения v7.х.
Теперь, кто не знает, 8-ка делится на старые конфиги писанные под 8.0/8.1 и новые (с командным интерфейсом и управляемыми формами). Разработчики под V8 опять поделились на "противников" и "заступников" теперь уже командного интерфейса. Недавно вышел 14-й релиз платформы 8.2, изначально кодовый индекс было 8.3, но чтобы снизить общий негатив от частой смены названий и релизов, решено было оставить старый индекс - 8.2. В нем заложено 101 крупное изменение и туча мелких.
На партнерском семинаре официально сказано что в разработке следующая версия платформы.
Лично мне пофиг на смену поколений программ "1С". Имею несколько сертификатов по 6.0, 7.х, а по 8.х уже три специалиста. Довольно легко перешел с обычных форм на управляемые.
Считаю, что кадровому программисту-прикладнику (в терминологии "1С" специалисту по платформе и конфигурациям) не составит особого труда перейти на следующую движку "1С". Методической литературы - море. Тем более, что между откровенно урезанной по языку и архитектуре v77 и довольно продвинутой во всех смыслах V8 есть немало общего в языке. А тем кто знаком с транзаком и вовсе будет забавно увидеть запросы 8-й платформы.
PS Управляемая конфига (с командным интерфейсом) умеет работать в окне браузеров и терминал-сервер ей больше не нужен, а Apache используется как HTTP-транспорт, так зачем платить больше? :-)
Для ПОЛНОГО счастья не хватает добавления исправления ошибки "100% загрузки процессора при ожидании блокировки". Есть решение от maxpiter но у меня зоопарк конфигураций и в каждую вставлять вызов внешней DLL это не спортивно, надо платформенное решение. Ну а так это самое лучшее решение. spock, допили плиз, многим надо
spock, есть планы по данному вопросу? ОЧЕНЬ надо!!!!
Это тот минимум, которого мне не хватает, остальное (скажем вход под виндовс авторизацией) это приятно но, не критично.
меняем параметры базы данных SQL:
- в строку "Сервер" пишем имя своего сервера и дописываем ";Trusted_Connection=yes" должно получиться примерно следующее: "SQL2K8R2;Trusted_Connection=yes" (без кавычек сессно);
- в строку "База данных" пишем имя своей БД;
- в строку "Пользователь" пишем владельца этой БД;
- в строку "Пароль" можем ничего не писать;
Планируем, что у нас будет две доменные группы пользователей, например, с названиями 1c_users и 1c_configurasts. Первые могут только работать в базе, а вторые могут еще заходить монопольно и всякое разное. Заводим эти две группы в домене и закидываем в них свой персонал.
Теперь пропишем этим группам необходимые пермишины:
USE [master]
GO
CREATE LOGIN [DOMAIN\1c_users] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
USE <MyDatabase>
GO
CREATE USER [DOMAIN\1c_users] FOR LOGIN [DOMAIN\1c_users]
GO
USE [master]
GO
GRANT VIEW SERVER STATE TO [DOMAIN\1c_users]
GO
USE <MyDatabase>
GO
GRANT SELECT TO [DOMAIN\1c_users]
GO
GRANT UPDATE TO [DOMAIN\1c_users]
GO
GRANT DELETE TO [DOMAIN\1c_users]
GO
GRANT EXECUTE TO [DOMAIN\1c_users]
GO
GRANT INSERT TO [DOMAIN\1c_users]
GO
Показатьи продвинутый пользователь
USE [master]
GO
CREATE LOGIN [DOMAIN\1c_configurasts] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
USE <MyDatabase>
GO
CREATE USER [DOMAIN\1c_configurasts] FOR LOGIN [DOMAIN\1c_configurasts]
GO
USE [master]
GO
GRANT VIEW SERVER STATE TO [DOMAIN\1c_configurasts]
GO
USE <MyDatabase>
GO
GRANT SELECT TO [DOMAIN\1c_configurasts]
GO
GRANT ALTER TO [DOMAIN\1c_configurasts]
GO
GRANT UPDATE TO [DOMAIN\1c_configurasts]
GO
GRANT DELETE TO [DOMAIN\1c_configurasts]
GO
GRANT EXECUTE TO [DOMAIN\1c_configurasts]
GO
GRANT INSERT TO [DOMAIN\1c_configurasts]
GO
ПоказатьЕще раз - 1c_users и 1c_configurasts условные названия.
Заходим в 1с...
Тогда вопрос: если я не планирую использовать доменую авторизацию, могу я обновляться до 6-ки с расчетом на разные ништяки и дебаги по основной теме? И как корректно обновиться, чтобы AD не использовать?
да и как назло, перейти не удается, все испробовал, выгрузка ОК, но реально получается не нормальная выгрузка получается.
Есть решение по доменной авторизации - пользователя выбирать нужно, а пароли у всех пустые.
В принципе, при небольшой доработке напильником, можно сделать так, чтобы и имя пользователя автоматически подставлялось.
Но это тема для отдельной публикации, а в связи с острой нехваткой времени, я не уверен, что осилю...
Сначала я хотел это решение кому-нибудь продать, потом решил, что оно уже никому не нужно, так как все дружно ломанулись на восьмерку. Так что если меня начать очень активно пинать, может, и опубликую...
Обойти - я представляю только один способ - скопировать к себе папку базы данных, и в этом случае необходимо, чтобы в базе не было никого, что для нагруженных баз практически невероятно. Тем более у себя я этот способ применил не для того, чтобы на 100% защитить базу, а для удобства пользователей, т.к. не надо помнить лишний пароль к 1С, и не приходится их пользователям вводить. В любом случае так лучше, чем в стандартном режиме.
Подробности готов обсудить в личке ))
Конечно, если у нас есть DLL, использующая Trusted Connections, почему бы не передать в скуль токен текущего виндоуз-юзверя, а там уже создать группы по правам в базе... Но потом это будет гигантская и очень муторная работа - писать SQL-скрипты для каждого набора прав 1С, выдавая права на каждое поле базы.... Бррр, страшно даже представить )
Вообще-то, продукты на v77 дороже в среднем на 25% аналогичных на v8 по официальному прайсу "1С". Кроме того, с апреля этого года (несмотря на то, что продуктов на v77 в прайсе больше нет, а заказать их через франчей все еще можно) для заказа устаревших продуктов требуется письменное обоснование такого приобретения с печатью клиента и подписью "генерала" клиента. Каждая подобная заявка будет рассматриваться в "1С" индивидуально.
Кроме того, с июля 2012 (дата пока планируемая) ВСЕ без исключений продукты v77 потребуют обязательного приобретения подписки ИТС.
Исходя из вышесказанного, как-то не вижу ярко выраженной дешевизны продуктов на v77. Разве что автор имел ввиду нелегальные экземпляры .. но такая "экономия" может при случае выйти в разы дороже :-)
Также цена перехода на 8 очень большая, средняя компания сидит на 7.7. Комплексной (точнее что от нее осталось) переход с производством на УПП франчи выставляют от 1-1,5 миллионов рублей, преимуществ четких нет, кроме того что 8.2 жутко тормозит при запуске у нас на ЗУП в терминалах, а расходы коласальные, при этом успешных внедрений в полном объеме по нашей например области УПП, сами признают, нет!
А то, что кому то втюхали супер-пупер УПП это говорит о хороших продажниках не более, теперь многие кого знаю ищат спецов и приходится платить не малые деньги программистам, потому как попали по полной. По сути УПП (1с к сожалению сделала такую ставку) это продукт к которому всю компанию подстраивать нужно, а не наоборот. А это почти не реально в наших условиях. Да и компаний много кто занимается производством и т.д. но не являются "газпромами", которые готовы отвалить такие деньги.
А 7.7. им позволяет подстраиваться под реали жизни и справляется не плохо, зависит от компетентности програмиста. Все эти внешние компоненты просто сильно расширяют возможности. в общем спор если честно не в тему и смысла в нем нет, если не нравится 7.7. зачем сюда писать?
Также цена перехода на 8 очень большая, средняя компания сидит на 7.7. Комплексной (точнее что от нее осталось) переход с производством на УПП франчи выставляют от 1-1,5 миллионов рублей, преимуществ четких нет, кроме того что 8.2 жутко тормозит при запуске у нас на ЗУП в терминалах, а расходы коласальные, при этом успешных внедрений в полном объеме по нашей например области УПП, сами признают, нет!
Как вижу, у вас поднакипело от общения с кем-то из франчей по v8 .. это бывает :-) Далее по-порядку постараюсь ответить на все вопросы:
1) В ценовом диапазоне бывшей комплексной поставки на v77 находится конфигурация "Комплексная автоматизация 8", с ценой ниже, нежели у предшественника на v77; в порядке перехода на неё нужно обращаться не к монстрикам-франчам вроде БИТов или Рарусов, а к компаниям поменьше, соответственно отношение будет к клиенту лучше, а ценник проще; у нашего франча за последние 2 года (прошедшие с момента выпуска "КА8" на рынок) около 10-ка подтвержденных переходов с устаревших продуктов v7 на "КА8" (когда я говорю подтвержденных, это означает составленный клиентом и подписанный их "генералом" отзыв о проведенном внедреннии "КА8", размещенном на сайте "1С" в соответствующем разделе и промодерированным отделом «1С», отвечающим за проверку отзывов), а у нас маленький франч – меньше десятка спецов.
2) Только подтвержденных УСПЕШНЫХ внедрений «УПП8» тысячи. Давайте не будем голословными, вот ссылка, в ней все есть: контактные данные ОТВЕТСТВЕННЫХ за внедрение лиц КЛИЕНТА, их телефоны, почта, прочее:
Мне не верьте, верьте им – звоните, спрашивайте.
3) Как я уже писал как-тот ранее в этот форум, опытному программисту не составит труда перейти на новую плаформу от фирмы «1С», было бы желание. В свое время я много слышал про v77 (при переходе с 6.0) и от бухов и от специалистов всяких нелестных высказываний и «пожеланий» пройти со своей «криворукой», «тяжелой» и «замороченной» семеркой куда "подальше" .. причем, далеко не все были так корректны в своих высказываниях, как вы :-)
Например, простой факт: бухия 6.0 кушала ровно 6Мб ОЗУ в клиентском сеансе терминал-сервера, выполнялась при старте мгновенно (на компах тех лет, тип i200/16 или i233/32), не обладала кучей «бесполезных наворотов» в интерфейс е и не имела «огромного» количества «лишних» обработок и документов. Это я вам привел некий «коллаж» из высказываний пользаков тех лет.
Кстати, многие большие проекты на v77 (в некоторых я участвовал лично) потребовали настолько радикального изменения исходного кода типовых конфигураций (зачастую именно из-за узости языка платформы и ее неумения нормально взаимодействовать с СУБД-сервером), что собственно от типовых модулей там вовсе ничего не осталось. Финансовые и временные затраты на подобные изменения были отнюдь не маленькими. Итоговые бюджеты переваливали за несколько миллионов (разумеется, я говорю о десятках и сотнях одновременных соединений с ИБ).
ЗЫ Я не сказал, что мне v77 не нравится. Для своего времени она была - супер. Но это уже прошлое, причем для многих хорошо забытое прошлое. Можно, конечно, ездить на «ВАЗ 2101» (или кому больше нравится на «Тoyota Corolla») выпуска 80-х годов прошлого века и хаять все новые автомобили, мотивируя толщиной железа в кузове или надежностью движки, но лично я смысла использовать старушек не вижу. Тем более, что v9 не за горами, а платформа «1С:Предприятие 8» хороший продукт, не требующий танцев с бубном там, где их требует старушка-v7.
Только подтвержденных УСПЕШНЫХ внедрений «УПП8» тысячи. Давайте не будем голословными, вот ссылка, в ней все есть: контактные данные ОТВЕТСТВЕННЫХ за внедрение лиц КЛИЕНТА, их телефоны, почта, прочее:
Не нужно путать внедренные и УСПЕШНО внедренные, ниодна компания с которыми говорили и внедрена УПП не сказала что все работают на УРА и никаких проблем. Все жалуются, что полностью использовать УПП не удалось и внедрение было тяжелым и очень дорогим.
ВНЕДРЕНИЕ после которого компания начинает работать с нужной конфой, не является УСПЕШНОЙ, она так является чисто с юридической стороны, но никак не с той стороны когда компания получила то, что хотела!
Кстати, многие большие проекты на v77 (в некоторых я участвовал лично) потребовали настолько радикального изменения исходного кода типовых конфигураций (зачастую именно из-за узости языка платформы и ее неумения нормально взаимодействовать с СУБД-сервером), что собственно от типовых модулей там вовсе ничего не осталось. Финансовые и временные затраты на подобные изменения были отнюдь не маленькими. Итоговые бюджеты переваливали за несколько миллионов (разумеется, я говорю о десятках и сотнях одновременных соединений с ИБ).
ну компоненты типа 1с++ решают то, чего в некоторых случаях даже 8 не может.
и тут я спорить не собираюсь, религия у всех своя! ПРосто эта тема не для этого вовсе, я писал про то, что если не нравятся разработки для 7.7. не нужно в эти ветки писать и сманивать в свою религию, те кто ими пользуется умные люди и знают что им подходит больше, как со стороны внедрения так и со стороны денег.
Касательно 8 1с просто идевается над людьми, это и косяки (которая 1с не считает таковыми но их не было в 7.7.) с загрузкой разных документов в одно время до секунды и писал ты обработку или конфигурацию, народ отдел кучу денег, а потом появляется 8.2. с Управляемыми формами и обработки твои переделывать, отношения самой 1С стало наплевательским на желание людей, это и партионкой подтверждается когда народ говорит нужно ЛИФО или норальное ФИФО, а они отписываются наша политика как хотим так и делаем, или так или фиг вам.
ВНЕДРЕНИЕ после которого компания начинает работать с нужной конфой, не является УСПЕШНОЙ, она так является чисто с юридической стороны, но никак не с той стороны когда компания получила то, что хотела!
Мне интересно, а Вы лично всегда пользуетесь абсолютно ВСЕМ предоставленным функционалом операционной системы сервера, да что там сервера, хотя-бы десктопной Оси? Вам точно нужны решительно все "примочки" которыми обычно снабжает своих зверьков Мелкософт?
Следуя вашей логике не стоит покупать свежие Оси вроде Win7 или (WinXP in past) ведь ИХ (ОСей) внедрение тоже НЕ успешно, так как " ... полностью использовать ... ... не удалось". Отчего же не работать с Win95 или Win98, последняя как раз ровесница платформы v7 :-)
По нашим данным все те клиенты, которые перешли на решения v8 сейчас вполне довольны своими информационными системами.
и тут я спорить не собираюсь, религия у всех своя! ПРосто эта тема не для этого вовсе, я писал про то, что если не нравятся разработки для 7.7. не нужно в эти ветки писать и сманивать в свою религию, те кто ими пользуется умные люди и знают что им подходит больше, как со стороны внедрения так и со стороны денег.
Про случаи, в которых v8 "не может", а v7 "может", сможете привести пример, со ссылками на компоненты и конкретные релизы конфигураций v7 и v8? Мне, как постоянно практикующему спецу по конвертации данных будет очень интересно воспроизвести такую ситуацию, чтобы на проектах не "наступить". Хотя, если честно, пока не встречал ничего такого.
Коллега! Извините, если мои комментарии вас каким-то образом задели или обидели. Ни в коем случае, я не собирался никого в этой эхе склонять в сторону v8. Даже наоборот, автору данной разработки, лично от себя, сказал уже не раз СПАСИБО, так как с помощью "секретного релиза" появилась возможность на реальных внедрениях не изображать в виртуальной среде древний аппаратно-программный комплекс, который необходим для переноса и проверки данных.
Обработки писанные под обычный интерфейс с минимальной адаптацией начинают работать и в командном интерфейсе, для этого, в свойствах конфигурации, предусмотрен специальный режим исполнения старых форм "Использовать обычные формы в управляемом приложении". Как вы уже говорили ранее: " .. все зависит от спеца ..".
ЗЫ Списание по методу LIFO (последний пришел, первый ушел) упразднено федеральным законодательством, по этой причине типовые конфигурации обеих платформ (v7 и v8) приведены в соответствие, то бишь такой режим списания партий отключен.
ЗЫ Списание по методу LIFO (последний пришел, первый ушел) упразднено федеральным законодательством, по этой причине типовые конфигурации обеих платформ (v7 и v8) приведены в соответствие, то бишь такой режим списания партий отключен.
Ссылка? Минфин не против такого учета, но и не против текущего, тоесть ему пофиг, а народу неудобно!
дисскуссию закрываю, не тема эта. Доказывать не буду вам ничего, у меня опыта разработки не меньше и спорить не хочу, каждому свое. Повторюсь еще раз, эта тема для тех кто пользуется 7.7. если вам не интересна она, не нужно приходить и говорить "фи".
Огромное количество средних и мелких компаний в нашем регионе подтверждают мою точку зрения (у тех кто уже пользовался 7.7.), есть мода, а есть реали и они говорят о том, что целесообразности перехода особого нет, если денег лишних конечно нет :)
Огромное количество средних и мелких компаний в нашем регионе подтверждают мою точку зрения (у тех кто уже пользовался 7.7.), есть мода, а есть реали и они говорят о том, что целесообразности перехода особого нет, если денег лишних конечно нет :)
Согласен, офтопик уже давно.
Согласен и с тем, что V8 не всем спецам доступна, из тех, кто таковыми себя считает или называет. Впрочем, это утверждение справедливо для любой новой системы, будь то платформа для разработки прикладных решений или операционная система.
Поживем-увидим, что вы будете лет через пять говорить :-)
Тема закрыта.
Ах да! Совсем забыл. Специально для вас:
На это раз точно закрыто.
"за исключением товаров, учитываемых по продажной стоимости"
поживем, как вы говорите лет 5 и увидим, а бросаться в откровенно сырой пока продукт не вижу смысла. Я не противник ее, но пока не вариант имхо, когда с каждой версией отчеты переписывать да и конфы, устаканится тогда и посмотрим.
Бугага :-) Некоторые группы МПЗ, например, в рознице или принятые на комиссию ВСЕГДА учитываются по продажной цене и списываются по ней же, какие партии, о чем вы :-) Читайте ПБУ - пригодится.
[/IS-QUOTE] поживем, как вы говорите лет 5 и увидим, а бросаться в откровенно сырой пока продукт не вижу смысла. Я не противник ее, но пока не вариант имхо, когда с каждой версией отчеты переписывать да и конфы, устаканится тогда и посмотрим.[/IS-QUOTE]
Только за последний квартал к типовухам v77 выпущено 4 релиза типовой отчетности, а релизов типовых конфиг - 2. Мне интересно, ваши бухи не отчитываются в фонды и налоговую ... а, я догадался, это тоже происки недобросовестной фирмы "1С" :-)
У любой развивающейся программы есть оппоненты, все правильно. А вот про v7 уже - либо хорошо, либо ничего.
Еще раз - эта разработка ни как не является конкурентом v8.x по понятным причинам. Это помощник перехода на v8.x, помогающий сберечь немного денег на лицензировании MSSQL.
Еще раз - эта разработка ни как не является конкурентом v8.x по понятным причинам. Это помощник перехода на v8.x, помогающий сберечь немного денег на лицензировании MSSQL.
Приношу свои извинения.
я, %?ть, не понял!??? Что за н%х? Споры по ПБУ ЗДЕСЬ неуместны!!!
Еще раз - эта разработка ни как не является конкурентом v8.x по понятным причинам. Это помощник перехода на v8.x, помогающий сберечь немного денег на лицензировании MSSQL.
Я думал это не кончится уже :) спасибо, что закрыл :) Только я не понял чем помагает перейти на 8, а чем помагает на лицензировании тоже не совсем понял, если только при переходе с 2к на 2008 :)
Сразу не взлетело по двум причинам:
1. вследствие предыдущих попыток завести этот пылесос библиотеки ODBC в System32 и SysWOW64 были непонятных версий от чего попало;
2. либа BkEnd.dll была с набором патчей, вернул стандартную 1Сную.
Слушай, я так понял переход на скуль не освобождает конфу на перепись на прямые?, просто в терминале в файловой бухии подбор товара работает шустро, после перехода на скуль 2008 вернулось то, что было по сети :) Подбор жутко долгий, по отладчику видно что упирается все в запрос к БухИт.СКД() в двух формулах по остаткам и резервам, тоесть получается все таки это не решает ничего связанного с Прямыми запросами, всмысле один фиг переписывать, родное нормально работать не будет? понимаю что нет, просто спросил вдруг не прав :)
У меня есть архивы 1С-ов разных фирм и лет в формате 7.7. Доступ к ним нужен ещё шесть лет.
SQL2000 снят с поддержки и не является ИТ-стандартом в нашей компании. Win7 собираются поставить насильно на всех РМ со следующего года. Других вариантов, как мучиться со связкой 1С+W7+SQL2008 у меня нет. Не думаю, что я один такой.
Автора прошу прощения за флуд.
а что ,исправлено в solution6 ?
Видать, через-чур тихо зарелизился. Вин-авторизация к скулю появилась. Несколькими постами выше описано, как это можно завести. Ну и убрал sp_dboption, который так волновал одного человека.
Но толку нет, убрал из всей базы все поля с типом текст неопределенной длинны и толку нет, справочники грузятся а на доках валится с ошибкой загрузки :(
а в последних сборках авторизация это скульная? или доменная? и как отключается или включается?
Это эстетство, конечно, но нельзя ли 1c_configurasts заменить на 1c_admins, а то уж очень глаза режет.
Ну пожааааааааалуйста....
Кстати, при использовании Solution5 периодически жалуются люди на блокировки при попытке сохранить документ - объект заблокирован, и после этого помогает только выход из 1С и новый вход, документ, естественно, приходится выбрасывать. Сейчас буду версию 6 тестить, если продолжится - пришлю отчет по всей форме.
spock, имена пользователей для Windows-авторизации зашиты в DLL, правильно?
нет, не правильно. Какой смысл статически прописывать доменные учетки в коде?
Это эстетство, конечно, но нельзя ли 1c_configurasts заменить на 1c_admins, а то уж очень глаза режет.
Ну пожааааааааалуйста....
1c_configurasts - это условное название, каждый для себя сам выбирает нужное название группы пользователей в домене.
Кстати, при использовании Solution5 периодически жалуются люди на блокировки при попытке сохранить документ - объект заблокирован, и после этого помогает только выход из 1С и новый вход, документ, естественно, приходится выбрасывать. Сейчас буду версию 6 тестить, если продолжится - пришлю отчет по всей форме.
Что-то криво настроено. Предлагаю пинать админов.
Сейчас перечитал - вижу, что это доменные группы, так что все на места встало.
По поводу блокировок - я сам и есть админ, только пожалуйста, не пинайте меня, я и сам себя уже пинаю достаточно давно ;-)
Конечно, если у нас есть DLL, использующая Trusted Connections, почему бы не передать в скуль токен текущего виндоуз-юзверя, а там уже создать группы по правам в базе... Но потом это будет гигантская и очень муторная работа - писать SQL-скрипты для каждого набора прав 1С, выдавая права на каждое поле базы.... Бррр, страшно даже представить )
Ну согласен, для удобства так то да. На счет заводить юзерей в скуле не вариант имхо тоже, домен конечно лучше :)
на данный момент одна из ошибок - после закрытия 1с windows пишет "Прекращена работа в 1c:v7 Starter Program (for SQL)"
конфигурация win2008(не R2) as terminal server + sql 2005 sp4 + 1c v7.7 rel. 027 + Solution6 + Рарус:Альфа-Авто
Ошибку нужно искать. Проблема в каком запросе проявляется?
Ошибку нужно искать. Проблема в каком запросе проявляется?
Извиняюсь за преждевременную панику, всё решено заменой 1cpp.dll на последнюю icpp (3.2.3.17).
Всё функционирует полноценно. Остался один вопрос, немного оффтоп, посоветуйте пожалуйста что можно сделать? В данной конфигурации очень медленно отображаются справочники (при открытии окна Номенклатуры на полный экран, загружается оно около 3 минут, если его открыть в одну строку, то открывается мгновенно.) Тестировалось на нескольких базах, и с помощью взломанной bkend.dll тоже проверяли. Если вместо терминального сервера на 2008 использовать 2003, то всё начинает просто летать. Я конечно понимаю что в данной ситуации лучше поставить 2003, но переход планируют в ближайшее время, а скорость работы критична.
В данной конфигурации очень медленно отображаются справочники (при открытии окна Номенклатуры на полный экран, загружается оно около 3 минут, если его открыть в одну строку, то открывается мгновенно.)
Надо переписать в этой форме расчет остатков и резервов на прямые запросы.
Надо переписать в этой форме расчет остатков и резервов на прямые запросы.
Для чистоты эксперимента 1с7.7 SQL (под SQL2005 И win Server2008) использовали конф.1С7.7 бухгалтерия и "родной" справочник контрагенты. В справочнике две колонки код и наименование. Через замер производительности в обработчике для справочника контрагенты видно что нет ни одного кода на языке 1С. Т.е. Спр. контрагенты выводит элементы используя только внутренний код программы 1С. Результат такой-же медленный.
Но теперь другая проблема - сама настройка SQL. Так получилось, что 2008 - это первая версия, которую я вижу, и лобовая атака не помогает. Тыкните пож в мануал - как настроить то для 7.7? Сама SQL установлена, на ней 8 ЗиК крутится, аутентификация Windows.
База вроде создалась, но верны ли параметры, и т.п. И юзера не пускает... Короче, оч. нужен мануал!
С win-авторизацией возникла проблема - стало выдавать ошибку при входе о том, что доступ возможен только из одного каталога ИБ. Поиск в сети показал, что 1С использует заклад на то, что какой-то процесс должен только одним логином выполняться, ссылки нет под рукой. Откатился пока на скуль-авторизацию, копать некогда.
Я у себя эту проблему решил с помощью процедуры sp_create_plan_guide.
Spock если не сложно можно этот неоптимальный запрос перехватывать в твоей dll и посылать на сервак запрос более правильный который башку оптимизатору sql не сносит. Реально будет огромный плюс к твоей разработке.
EXEC sp_create_plan_guide
@name = N'_1SJOURN_Optimization',
@stmt = N'Select JOURN.* from _1SJOURN JOURN WITH (NOLOCK), _1SCRDOC CRDOC WITH (NOLOCK) where JOURN.DATE_TIME_IDDOC=CRDOC.CHILD_DATE_TIME_IDDOC and CRDOC.MDID=@P1 and CRDOC.PARENTVAL=@P2 and CRDOC.CHILD_DATE_TIME_IDDOC>=@P3 and CRDOC.CHILD_DATE_TIME_IDDOC<=@P4 order by CRDOC.MDID, CRDOC.PARENTVAL, CRDOC.CHILD_DATE_TIME_IDDOC',
@type = N'SQL',
@module_or_batch = NULL,
@params = N'@P1 int,@P2 char(23),@P3 char(23),@P4 char(23)',
@hints = N'OPTION(OPTIMIZE FOR (@P1 = 0, @P2 = ''O1 17Y CRTI '', @P3 = ''19980101 0 0 '', @P4 = ''20201231FHML6O 0''))'
Советуют в запросе убрать данное условие (т.е выполнить подмену в bkend или перехватом)
' CRDOC.CHILD_DATE_TIME_IDDOC>=@P3 and CRDOC.CHILD_DATE_TIME_IDDOC<=@P4 '
и пользоваться без него,
период обрабатывать после выборки в коде 1С, тем более что запросов с явным заданием периода в коде 1С практически нет.
P.S У нас 2008 SQL, база 30Гб, оптимизатор тоже выдает тормоза, лечим перехватом, обновлением статистики, собственными запросами к дереву документов, сейчас вроде затихло :)
()
Хорошо бы вставить функционал перехвата запросов в библиотеку. Хотя бы через файл лежащий в КаталогИБ, например
sqlconvert.ini - В котором инициализировать массив динамических замен.
Оптимизатор sql2005 и старше стал умнее :)
1. Выходит, что тормоза бывают тогда, когда оптимизатор решает, что лучше будет начать выборку с таблицы _1sjourn;
1.1. Решает он так потому, что в селект-листе JOURN.* + связывание по JOURN.DATE_TIME_IDDOC=CRDOC.CHILD_DATE_TIME_IDDOC и, возможно, потому что есть док-ты далеко в будущем;
1.2. Так как выборка начинается с жирной таблицы с плохой селективностью по DATE_TIME_IDDOC, то сваливаемся в сканирование. В плохом случае делается отбор до нескольких миллионов строк (зависит от кол-ва документов);
1.3. Потом этот ахулион джонится с данными из таблицы _1scrdoc, которые очень красиво и быстро забираются с индекса и не являются проблемой;
2. Тормозов нет, когда оптимизатор строит план от таблицы _1scrdoc;
Видимо, в sql2000 оптимизатор строил план от _1scrdoc всегда, тут же железяка стала умничать. Может со статистикой плохо...
Совет про plan_guide интересный, но параметры диапазона дат нужно сузить - должно быть эффективнее.
Совет про убрать предикат по диапазону дат тоже интересный - таким образом мы не даем оптимизатору возможность строить план от таблицы _1sjourn, действенно, но не наш метод.
Я думаю, что лучше будет, если диапазон дат сохранить, но заставить оптимизатор строить план от _1scrdoc.
Попутно выяснил что построение неоптимального плана сильно зависит от статистики, то что вчера тормозило сегодня уже не тормозит. Добится тормазов удалось только передачей в процедуру sp_create_plan_guide значения даты 20121231 как для начала так и для конца периода.
Предлагаю запрос на INNER JOIN переделать. В случае использования INNER JOIN перестает использоваться временная таблица в tempdb что уже не плохо. Я план посмотрел выглядит неплохо, но нужно проверять на рабочей базе. Теоретически теперь план всегда должен оптимальный строиться т.к. мы из where убрали отбор по _1sjourn Вот новый запрос:
Select JOURN.* from _1SJOURN AS JOURN INNER join _1SCRDOC AS CRDOC ON СRDOC.CHILD_DATE_TIME_IDDOC=JOURN.DATE_TIME_IDDOC
where
CRDOC.MDID=@P1 and CRDOC.PARENTVAL=@P2 and CRDOC.CHILD_DATE_TIME_IDDOC>=@P3 and
CRDOC.CHILD_DATE_TIME_IDDOC<=@P4 order by CRDOC.MDID, CRDOC.PARENTVAL, CRDOC.CHILD_DATE_TIME_IDDOC
это не поможет, проверено , была произведена такая замена в bkend, результат то же - через какое-то время
план не оптимальный
надо убирать
CRDOC.CHILD_DATE_TIME_IDDOC>=@P3 and CRDOC.CHILD_DATE_TIME_IDDOC<=@P4
Можно было-бы предусмотреть замену запросов на лету в библиотеке
Например в случае с подчиненными:
// посылает запрос на sql, т.е. библиотеке
// по данной команде выполняем ODBC в той же сессии
// по такой команде, добавляем динамическую замену
глВыполнитьЗамену("select 'replsql=1;CRDOC.CHILD_DATE_TIME_IDDOC>=? and CRDOC.CHILD_DATE_TIME_IDDOC<=?; '")
// выполняем запрос 1с требующий замену
Док.ВыбратьПодчиненные...(,,ТекущийДокумент())
// выключаем замену
глВыполнитьЗамену("select 'replsql=0;CRDOC.CHILD_DATE_TIME_IDDOC>=? and CRDOC.CHILD_DATE_TIME_IDDOC<=?; '")
....
... Показать(296) kudenzov, Зачем удалять, есть индексы которые нужны перманентно.Например у меня процедура в журнале документов ищет доки по части номера документа и дате, так чтобы она быстро искла пришлось добавить индекс на _1sjourn. В sql 2000 я правлю sp_statistics (именно так как написано здесь чтобы 1с не видела мои индексы но в sql2005 я этого делать не хочу т.к. в случае решения от spock можно более красиво эту проблему решить. Опять же Вы не внимательно прочитали мой пост. Если не внести изменения в sp_statistics либо или не сделать исправления из поста (294) то 1с будет убивать мои индексы каждый раз когда при запуске 1с в базе не будет других пользователей, а мне не очень улыбается переодически большые индексы перестраивать(Реструктуризация бд не в счет).
Ключевое слово здесь - FORCE ORDER
индекс есть стандартный
I=PARENT |Parent Referen|1 |MDID,PARENTVAL,CHILD_DATE_TIME_IDDOC |0
-- (spock) Kirill - Solution7
-- Спасибо автору за проделанную работу
SELECT JOURN.*
FROM [dbo].[_1scrdoc] as CRDOC WITH (NOLOCK)
INNER JOIN [dbo].[_1sjourn] as JOURN WITH (NOLOCK) ON JOURN.date_time_iddoc = CRDOC.child_date_time_iddoc
WHERE
CRDOC.mdid = ?
AND CRDOC.parentval = ?
AND CRDOC.child_date_time_iddoc >= ?
AND CRDOC.child_date_time_iddoc <= ?
ORDER BY JOURN.date_time_iddoc
OPTION(FORCE ORDER, LOOP JOIN)
Необходимо что-бы выборка сначала произошла по _1scrdoc, т.к таких документов не более 1-10 в стандартных случаях, за исключением отбора по графе в журналах
Обсуждение от 17 окт 08 на SQL.ru (Anddros):
P.S При неисправленном запросе на 2008 вызывает вообще провисание при выборке в общем журнале по графе отбора например по Контрагенту, при очень большом _1sjourn (данную ситуацию неоднократно наблюдал в SQL Profiler)
Что происходит:
1. Открываем журнал
2. Задаем период весь журнал
3. Выбираем контрагента
4. При испорченном плане сканируется весь журнал причем двумя запросами: count(*) и сама выборка
5. Идет sp_cursorfetch (собственно заполнение строк журнала)
6. Наступает событие обновление экрана (при неоконченном первом запросе) - посылается такой же запрос
7. Переход на пункт 4
Пользователь ждет, SQL наращивает очередь,а пользователей более 300 :)
Получаем зависание 1С
Как известно 1с при старте производит проверку базы данных. Поэтому например нет возможности добавить к таблице свой индекс, 1с его просто удалит при старте. А часто дополнительный индекс может сильно ускорить какой-то процесс. Поэтому есть идея (в sql 2000 я это решал через правку sp_statistics).
Проверка на наличие индексов у таблице производится через вызов хранимой процедуры sp_statistics следовательно если при вызове ее перехватить и немного подправить параметры то 1с не увидит наши индексы. одно условие свои индексы должны начинаться с определенного префикса например '_ix_'
вот родной вызов sp_statistics для справочника sp8692
sp_statistics N'sp8692',N'dbo',NULL,N'%',N'N',N'Q'
а вот исправленный
sp_statistics N'sp8692',N'dbo',NULL,N'[^_][^i][^x][^_]%',N'N',N'Q'
как видно из примера теперь 1с не увидит индексы начинающиеся с _ix_ и следовательно не грохнит их.
Что думаеш spock ?
Порекомендуйте, пожалуйста, где почитать об ускорении групповых операций 1C под SQL ?
Я знаю, что SQL не дает преимущества в скорости, но если проведение месяца сплошным потоком в 6 раз медленнее, чем на DBF, ужасно хочется с этим что-нибудь сделать.
Как вариант это переписать восстановление вручную.
Делать транзакции +/- определенное количество документов.
И внимание.
Использовать это:
База=СоздатьОбъект("ODBCDataBase");
База.ReconnectNative();
по крайней мере у меня стало меньше времени уходить на восстановление.
Перепроводите документы со сдвигом ТА, чтобы каждый документ проводился на ТА - тогда не нужен расчет итогов.
Я уже выяснил, что объект ODBCDataBase содержится в 1С++, проверил, что ее подключение не дает никакого прироста в скорости, и я сильно подозреваю, что секретный релиз и так использует native подключение.
Машина у меня довольно мощная, при этом проведение месяца в почти стандартной торговле занимает у меня час в базе SQL и 10 минут в базе DBF. Поскольку вся эта канитель затеяна ради регулярного проведения другой базы, которая является значительно модифицированной торговлей, и модифицировал ее не я, а стоит она на сильно худшем железе и денег на апгрейд пока не дадут, есть желание изучить возможности оптимизации.
Жаль что второй раз "плюсануть" нельзя!
Запустил 1С77 под Win7-64x. Правда по админом в режиме совместимости с WinXP.
Все вроде работает нормально.
Даже самые разные прямые запросы 1С++ в обработке по свертке базы
(проверяемая база была в формате SQL, под DBF не проверял).
Особо хочется отметить приятный эффект
(незнаю связан ли с данной разработкой, или с операционной системой):
Как известно при выполнении трудоемких действий в конфигураторе
(реорганизация базы, тестирование-исправление) 1С-ка выводит сообщения в панели состояния.
И если по ходу дела переключиться в окно другого приложения и вернуться назад,
то 1С-ка тупеет почему-то и перестает обновлять сообщения в панели состояния.
В данном случае (проводилось тестирование-исправление) этого дефекта не наблюдалось.
ЗЫ
Мелочь ... но приятно! :)))))))))))))))))))))
твоя правда! но и моя тоже
;)))
При загрузке/выгрузке данных 1с-ка как-то странно ведет.
До определенного момента переключение между окнами не "замораживает" сообщения в панели состояния.
а потом 1с-ка сама без переключения "замораживается".
А я о чем?
Тута походу если включить совместимость с 2000 то работать будет на ура(т.е. не замораживается).
Но вот загвоздка в другом.
В режиме Предприятия совместимость включать незя, ну по крайней месте с 1С++ это точно.
Не так давно накололся на этом.
Под 2005 сервером запрос нормально выполняется,
а под 2000-ным ошибку валит, типа:
"поля, перечисленные в предложении ORDER BY, должны присутствовать в списке SELECT".
Источник ошибки - подзапросы,
выдаваемые метапарсером при развороте виртуальной таблицы $ПоследнееЗначение.ИмяСпр.ИмяРекв.
Так что можно сделать вывод, что метапарсер в 1с++ под MSSQL-2000 явно не затачивался.
Описанный в (334) глюк не связан с твоими библиотеками.
Все делалалось на обычной 1С-7.7.
у меня есть одна база - сильно подломленная ТиС-7.7
вся на прямых запросах 1С++ под MS SQL и на FormEx.
Возникла надобность поставить ее на бук чтобы показать.
Бук не шибко крутой, ну я по простоте душевной поставил на нее SQL-2000
Окрыл базу, смотал на пробу первый попавший отчет - вроде работает.
Прихожу к людям ...
... и то что было интересно показать - не работает,
выдает описанную выше ошибку.
Ну и пришлось SQL-2000 снести и поставить SQL-2005.
:))))
Вообще-то странно.
У меня такое происходило только с OLEDB для DBF,
Хотя вообще-то для любых запросов правилом должно быть то что тебе метапарсер сказал.
А насчет заточки 1С++ для 2000 это ты неправ.
ODBCRecordSet появился как раз таки на 2000 когда 2005 еще и не пахло.
Так что ненадо винить 1С++.
Запросы надо корректные писать.
Вопрос, как говорится, тонкий:
Может быть сервер 2000 у меня древний, без каких-то сервис-паков....
От версии 1С++ тоже может зависить (она правда у меня довольно свежая)...
Ну а насчет корректности запросов...
...извини!
Думаю использование виртуальной таблицы
$ПоследнееЗначение.ИмяСпр.ИмяРекв
в списке select - вполне корректно для T-SQL.
Ну а то как эту виртуальную таблицу развернет метапарсер...
за этож я не отвечаю.
:))))))))))))))))
Даже у вас МОРОЗ-ик и даже снежок.
А у нас в этом году со снегом плоховато. В прошлом году просто совсемь завалило в это время.
Двигаемся же в дубак как по полю боя -
- короткими перебежками до близжайшего гааастранома.
:)))
А вы тоже все на 7.7 сидите?
и как многие все планируете на 8.х переходить?
там с совместимостью с новыми версиями винды вроде пааааалутше.
...денег всегда мало, а работы много.
:))).
А на каких конфигурациях работаете.
У нас жутко переписанная ТиС-7.7 (все почти на прямых запросах).
Просто перевести ее на 8-ку нереал.
Нужно какую-нибудь конфу под 8-х также уделать.
Правда на всех компах XP-ха стоит.
Vista и Win-7 только на некоторых ноутах.
А 1с-7.7 сама в терминале жывет.
Проблема обычно возникает если ты используешь $ПоследнееЗначение.ИмяСпр.ИмяРекв на одном уровне при объединении через UNION. В этом случае он всегда ругается на то что нельзя в UNION использовать ORDER BY.
А как поведет себя 7.7 если сделать блокировки на определенные таблицы или же записи в этих таблицах
используя виндовозную авторизацию а не sa?
Ну скажем так Справочник Ограничить просомтр определенных групп вообще.
Кирилл что скаже на это?
Реально ли?
нарулить типа разделения прав доступа на уровне полей и записей как в 8.х.
Но таким способом наверное не получится
по следующему соображению:
Если использовать стандартную платформу 1с-7.7
(если я ошибаюсь - народ поправит ;) )
то она на SQL-сервере использует не видозную авторизацию, а именно скульную.
И учетка под которой 1С-ка ходит на SQL жестко прописывается в свойствах базы в конфигураторе
(это кстати относится и к 8.х).
Так что, к сожалению,
не получится разным юзерам ходить под 1С на SQL под разными учетками,
чтобы разграничить доступ к таблицам правами на SQL-сервере.
PS:
К стати о птичках, вопрос:
А сам SQL умеет рулить правами на уровне полей и записей?
2000-ный вроде рулил только на уровне самих таблиц.
Про 2005/2008 я не знаю изменилось что-нибудь в этом отношении.
1c уже есть установленная по вышеописанной методике (с Solution5), и работает с MS SQL Server 2008 (10.0.1600) ОС Windows 2008 Std 32bit
Сейчас ставлю новый сервер MS SQL Server 2008 R2 (10.50.1600) ОС Windows 2008 R2 Std 64bit
и 1С ,работающая нормально со старым сервером, на новый базу не может загрузит - выдает описанную ошибку
А что значит использовать другие способы? Это с подменой библиотек что-ли?
Уже разобрался. У меня какой-то странный "родной" bkend.dll был в папке. Работал много лет без сбоев, но видимо был чем-то пропатченный. Когда взял другой (из чистой установки) - заработало.
Спасибо за хороший инструмент.
Перепровел базу ТиС за несколько лет. За неделю непрерывного перепроведения ни одного сбоя.
Сравнил обороты, себестоимость, остатки, дебиторку.. в общем все итоги и обороты по регистрам в получившейся базе и в основной - ни одного расхождения.
Вердикт: буду внедрять в промышленную эксплуатацию.
З.Ы.
Использовал Solution5. Жаль, что по основной ссылке загружается он, а не последняя версия.
Кстати в последней поборено зависание на журнале подчиненных документов!
У меня тоже стоит, правда на 2008 пока только бухи сидять, они же и выловиди странное поведение журнала подчиненных документов.
Помещаем файлы (из ХР: sqlsrv32.dll, sqlsrv32.rll) в
C:\ODBC\
Делаем рег файл типа
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI]
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
"SQL Server 1C"="Installed"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Server 1C]
"UsageCount"=dword:00000004
"Driver"="C:\\ODBC\\sqlsrv32.dll"
"Setup"="C:\\ODBC\\sqlsrv32.dll"
"SQLLevel"="1"
"FileUsage"="0"
"DriverODBCVer"="03.50"
"ConnectFunctions"="YYY"
"APILevel"="2"
"CPTimeout"="60"
в поле "Сервер" пишем "ИмяИлиАйписервера;Driver=SQL Server 1C"
остальные поля заполняем как обычно
Я вот тоже подумывал, что может пора уже посчитать сколько будет стоить переход на 8-ку для 60-ти пользователей да боюсь лучше не озвучивать.
По моим прикидкам денежных вложений потребуется в следующие вещи:
1. Рабочие станции
2. Сервера SQL
3. Лицензии 1С 8 версии (сейчас у нас 7.7 с неограниченным кол-вом пользователей).
У нас уже был один переход со старой версии 1С на 7.7 когда конфигурация еще была написана под 7.5 версию. Так что помню сколько было косяков с учетом доработки новой конфигурации.
Поставил данную разработку, 3 месяца все было без проблем или почти без проблем,
т.е. примерно раз в месяц приходилось реструктиризировать базу из за зависания
на выборе подчиненных документов.
С начала марта вдруг зависать на этих запросах стала чуть не каждые два часа!
Конфа сильно самописная.
Сервер 2008 std R2.
SQL 2008 SP2.
Такое ощущение что, что то периодически подменяет запрос к подчиненным документам на некорректный.
Кто, что может посоветовать. Погибаю!
1) Предположим, есть доменный юзверь "petrov" и пользователь в 1с "ПетровПП". При включении win-авторизации в окошке выбора пользователя/ввод пароля 1С отобразится какое имя - "petrov" или "ПетровПП"? Если "petrov", то существует ли способ прописывания соответствий "petrov = ПетровПП"?
2) Если, например, понадобится позже отключить win-авторизацию и вернуться назад на 1с-авторизацию, что необходимо сделать? Достаточно ли удалить фрагмент строки ";Trusted_Connection=yes" из поля "Сервер" или нужно совершать что-то дополнительно?
Сейчас использую win-авторизацию, реализованную так - . Всё работает замечательно, но недавно всплыла одна неприятная особенность - подхватывается доменный пароль лишь пользователя, который сейчас залогинился на машину; если нужно войти под другим пользователем, то приходится вводить не доменный, а 1с-пароль :-(
Процедуры
1.Отчет по проводкам за квартал,
2.Перепроведение документов за кварталv
Условия одинаковые(база та же, количество документов и проводок то же).
Железо - soft
1. сервер 2x Xeon5120@1.86 16gb sata - v7.7 + win2003+ ms sql server 2000 (sp4) enterprise
2. сервер 2х Xeon5630@2.56 24gb ssd - v7.7(патченный) + win2008R2 64+ ms sql server 2008 standart
3. сервер 2х Xeon5630@2.56 24gb ssd - v7.7(solution6) + win2008R2 64+ ms sql server 2008 standart
Результат по таймеру
[Задача, железо]
[1,1] = 95 сек
[1,2] = 135 сек
[1,3] = 186 сек
[2,1] = 62 мин
[2,2] = 75 мин
[2,3] = 120 мин
я не могу обяснить причину, возможно не правильно натроен sql на новом серваке
Пока решил остаться на старом железе со старым софтом т.е.
Сервер:
Windows 2008 Server R2 Standart Edition (64-bit).
MS SQL Server 2008 R2 64-bit.
1С 7.7 025 (на локальных машинах), 027 (на сервере).
Без проблем всё установил, вроде работает. Поставил пока на тестовый сервак, но думаю будем в рабочий вариант переводить.
Автору большое спасибо.
А вот тут вы уважаемый глубоко ошибаетесь.
Если не хотите проблем с базой в будующем работайте в одной версии.
Иначе будут проблемы и причем большие.
И вообще переходе на 27 рел. с 25 на скок я помню в 25 были какие-то глюки раз сразу вышел 26 а за ним 27.
Да и проверен он годами у мне то поверье.
2 дня полет нормальный.
+ после перехода база даже шустрее всести стала себя.
- пришлось некоторые прямые запросы переписать, в особенности с если использовать ORDER BY.
А так вообщем пока то что надо.
Плагин для лечения выгрузки и загрузки больших баз в 1С 7.7
Текст="
|select
|t.ДатаДок [ДатаДок $Дата],
|t.IDDОтКуда Склад,
|t.IDDФирма НовыйСклад,
|t.IDDТовар Товар,
|t.Цена ЦенаСНДС,
|t.IDDЕдиница Единица,
|sum(t.Количество) Количество,
|sum(t.Количество*t.Цена) СуммаСНДС
|from (
|select
|--m.datadoc ДатаДок,
|left(j.date_time_iddoc,8) ДатаДок,
|--$ОбщийРеквизит.Фирма IDDОтКуда,
|ФирмыОткуда.descr IDDОтКуда,
|фирмы.descr IDDФирма,
|--Фирмы.id IDDФирма,
|--$ТОвары.IDD IDDТовар,
|Товары.descr IDDТовар,
|$Единицы.IDD IDDЕдиница,
|$Строки.Количество Количество,
|($ПоследнееЗначение.Цены.Цена(Цены.id,:КонДата)-($ПоследнееЗначение.Цены.Цена(Цены.id,:КонДата))*"+Константа.СкидкаБат+"/100) Цена
|from $Документ.Перемещение Шапка (nolock)
|inner join _1sjourn j (nolock) on j.iddoc=Шапка.iddoc
|inner join $ДОкументСтроки.Перемещение Строки (nolock) on Строки.iddoc=Шапка.iddoc
|inner join $Справочник.Инт_ЦФО ЦФО (nolock) on ЦФО.id=$Шапка.ЦФОКуда
|inner join $Справочник.Фирмы Фирмы (nolock) on right(Фирмы.id,3)=$ЦФО.КодИБ
|inner join $Справочник.Фирмы ФирмыОткуда (nolock) on ФирмыОткуда.id=$ОбщийРеквизит.Фирма
|inner join $Справочник.Номенклатура ТОвары (nolock) on Товары.id=$Строки.Товар
|inner join $Справочник.Единицы Единицы (nolock) on Единицы.id=$Строки.Единица
|left join $Справочник.Цены Цены (nolock) on Цены.ParentExt=Товары.id and LOWER(Цены.descr)='розничная'
|--inner join moved m (nolock) on m.iddoc=j.iddoc
|--inner join _1sjourn j (nolock) on j.iddoc=Шапка.iddoc
|where
|j.date_time_iddoc between :НачДата and :КонДата~
|--m.datadoc between :НачДата and :КонДата~
|and
|$Шапка.ВнешнПерем=1
|and
|$Шапка.Статус=$Перечисление.СтатусДок.Отработан
|--and $Шапка.ЦФОКуда<>$ПустойИД
|and $Шапка.Склад <>' 11KO '
|and Фирмы.id<>' 28KO '
|and ФирмыОткуда.id<>' 28KO '
|) t
|group by
|t.ДатаДок,t.IDDОтКуда,t.IDDФирма,t.IDDТовар,t.Цена,t.IDDЕдиница
//|order by
//|t.Склад
около 8 Гб.
Дописаный ТИС+КФ+УРБД.
Вторая 18 Гб (практически это одна таблица) причем не 1С-ная, но в базе 1С.
У мене в ней статистика собирается.
Потихоньку начинаю переводить остальные базы.
Режим совместимости Полный.
Поправь если я неправ но там достаточно поставить ключевое слово with и все. Аргументирую свою просьбу. Недавно перевел на sql 2005 с помощью твоей компоненты одну базу в которой есть очень большой справочник ~200000 строк. Переодически при контекстном поиске по наименованию в таком справочнике происходят тормоза которых небыло в sql 2000. стал копать и выяснил, что sql 2005 иногда строит неправильный план запроса и использует не индекс DESCR и кластерный индекс по PK_[название таблицы справочника] и сваливается в скан что приводит к большому вводу/выводу. Сравнив запросы увидел что в родном (без твоего парсинга запросе стоит хинт index=descr) соответственно всегда выбирается оптимальный индекс. Поверь запросов где строится неоптимальный план масса вот еще один мой пример (421). А пост (401) подтверждает мои слова.
вот примеры запросов
до парсинга:
select * from SC84(NOLOCK INDEX=DESCR) where DESCR>='Я' and substring(DESCR,1,1)='Я' order by DESCR,ROW_ID
после парсинга
select * from SC84 WITH (NOLOCK) where DESCR>='Я' and substring(DESCR,1,1)='Я' order by DESCR,ROW_ID
а очень нужно
select * from SC84 WITH (NOLOCK INDEX=DESCR) where DESCR>='Я' and substring(DESCR,1,1)='Я' order by DESCR,ROW_ID
Еще для примера.
Я в QA выполнял простой запрос по справочнику "select * from SC84 WITH (NOLOCK) where DESCR like 'Я%' order by descr, row_id" так вот пока я не указал хинт "index=descr" sql 2005 упорно строил план от индекса pk_* и выполнял запрос в два раза медленней.
Бо в них бли жуткие тормоза.
Шо при открытии журнала подчиненных документов что при вызове процедуры ВыбратьПодчиненные().
В остально я не в курсе.
Кликаешь в расшифрову, формируется карточка счета по документам
40, 30,. А еще 30 не видит
Перепроводишь документ. В котором 30. Начинает видеть
то есть после перепроведения карточка сходится с обороткой
Снял копию базы на омент появления косяка. Напишу результат
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура,ВыбНоменклатура,2);
Ит.ВыполнитьЗапрос('18.04.2012','18.04.2012',"ОСТ.1",,,,"Операция",); //Так периоды есть
Ит.ВыполнитьЗапрос('18.04.2012','18.04.2012',"ОСТ.1",,,,"Проводка",); //Так периодов нет
Сообщить(Ит.ВыбратьПериоды());
Проводки у документа есть.
КолПроводок = 0;
Оп = ВыбДокумент.Операция;
Оп.ВыбратьПроводки();
Пока Оп.ПолучитьПроводку() = 1 Цикл
КолПроводок = КолПроводок+1;
КонецЦикла;
Сообщить(КолПроводок); //Вот так проводки выбираются
Пересчет итогов не помогает. Спасает только перепроведение документов.
Вопрос решил так. "Карточка счета на прямых запросах"
Очень рекомендую. Карточка стала крутиться в разы быстрее
У меня помимо 1C++, используется vk_hook1c, а точнее брал исходники и кое-что переделывал под себя. Но смысл такой: как я понимаю и одно и второе решение производит перехват запросов и затем правит их, но перехват как я понимаю происходит последовательно сначала один, затем второй. Так вот возникает вопрос кто первым перехватывает запрос "Секретный релиз" или vk_hook1C. Просто от этого зависит как дальше в случае необходимости использовать vk_hook1c: подсовывать ему типовой запрос 1с для правки или нужно отлавливать уже тот запрос, который получается после "секретного релиза".
Просто в момент загрузки, после того как конфигуратор скажет что надо сделать дамп журнала транзакция - НЕ НАДО ЖАТЬ КНОПКУ "ОК", надо зайти в ту папку куда прописан путь и найти там файлик *.DDS, зайти в него через блокнот, найти эту процедуру _1sp__1SBKTTL_ChangeTotal и произвести замену о которой я писал выше и сохранить, после этого вернуться в конфигуратор и нажать кнопку "ОК". Ошибка исчезнет.
Но у меня остался другой вопрос...
Я не понял как работает данная строчка, в частности не понятно что необходимо указать после "TO"
GRANT VIEW SERVER STATE TO
GO
В справке сказано, что там надо указать логин, т.е.
GRANT VIEW SERVER STATE TO <Логин>
GO
Остался вопрос: Какой тут указать логин??? [sa]?
Выдавать права на VIEW SERVER STATE нужно тому логину, под которым осуществляется соединение (в конфигураторе Администрирование - Параметры базы данных SQL). Суперпользователю sa выдавать такие права нет смысла - он их имеет от рождения. Но работать под sa? о_О Наверно, есть причины для этого :)
Я за сегодня и Server 2008 и SQL 2005 переустановил раза 2 - рыскаю в инете и ставлю че попало лишь бы запустить! Про Коллейшин - знаю - его и ставлю. Базу всегда подключал под "sa" - просто я с SQL не сильно дружу и с доп ролями хз что делать :)
Кстати, заметил интересную особенность...
После подстановки Ваших DLL, при запуске 1С из пустой папки и при выборе формата базы SQL или DBF, по умолчанию стоит DBF а кодовая страница слетает на 1250-"не помню кто". А до замены все нормально 1251-Россия.
Можно Вас попросить добавить в архив тот Bkend.dll, который у вас работает? Просто я хз почему у меня сейчас такие проблемы, два года назад когда все запускал на 2003 Сервере и SQL 2005 таких проблем точно не было :(, я про DDS и переделку процедур.
И... спасибо за содействие :)
Не надо ничего ставить, чтобы запустить. Установить sql с нужным коллейшином и не будет такой беды. Потом установить 1с и мое решение в точности, как описано в публикации!! Без творческого переосмысления.
У меня например под XP SP2 она такая: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Sy stem32\Wbem;C:\Program Files\QuickTime\QTSystem\
Переменные TMP и TEMP по-умолчанию должны быть: %USERPROFILE%\Local Settings\Temp
После изменений необходимо (могу ошибаться) перегрузить компьютер.
по совету ничего не получилось. Попробовал идти другим путем и ничего.
На новом сервере у нас установлена операционная система MS Windows Server 2008 R2 Standard, система управления базами данных MS SQL Server 2008 R2 Standard.
Создана новая база, без понижения уровня.
По инструкции все настроено, все работает.
Вот только есть смысл этим пользоваться, как и пишет автор, только тем, кто еще не перешел на 1С 8.
У нас то сервер был куплен и предназначался изначально для "восьмерки", но переход откладывается на несколько месяцев, поэтому решили попробовать запустить пока что на нем "семерку", тем более, что после внедрения 1С 8 потребность в базах 1С 7 на какое-то время останется.
Так вот, новый сервер представляет из себя значительно более мощное решение, чем старых два, на которых по отдельности крутились терминал и СУБД.
На новом сервере пустил пользователя по удаленному рабочему столу, он запустил довольно большую обработку.
Обработка заняла примерно 45 минут, на старом варианте это занимает примерно 30 минут =)))
Т.е. все работает, но видимо 1С 7.7 не рассчитана на работу с современным ПО и оборудованием, работать может, но воспользоваться всеми ресурсами… Видимо, нет.
Или дело в чем то другом?
Вообще у нас почти полностью переписанная конфигурация, сопровождается приходящим программистом уже лет 10.
Программист привык писать под dbf, и дома, когда все это пишет, у нее тоже все крутится на dbf. Смею предположить, что из-за этого тоже могут быть тормоза.
Но это не отменяет того, что при одной и тоже конфигурации, на новом железе обработка прошла медленнее ))
Старый вариант:
1й сервер, выполняющий роль сервера терминалов, также на нем находится общая папка с каталогом информационной базы. Попутно выполняет роли контроллера домена, файлового сервера, DHCP, DNS.
Железо - HP ProLiant DL380 G5, 2x QuadCore Intel Xeon, 2666 MHz, 4096 Мб, SAS-винты.
Софт - Windows Server 2003 R2 Standard 32bit.
2й сервер, выполняет роль сервера баз данных.
Железо - Desten Navigator 7000L (башня), 2х Intel® Xeon CPU 3.00GHz, 3072 Мб, система и базы на SCSI-винте.
Софт - Windows Server 2003 SP2 32bit, Windows SQL Server 2000 SP4.
Новый вариант:
На сервере располагается общая папка с каталогом информационной базы, также есть доступ некоторых пользователей к удаленному рабочему столу. На нем же новая база данных.
Железо - сервер на базе платформы SR2612URR, 2х Xeon 5660 2.80 GHz, 24 Гб, SAS-винты.
Софт - Windows Server 2008 R2 Standard 64bit, MS SQL 2008 R2 Standard 64bit.
Для сравнения пользователь запускал одну и туже обработку в терминальном режиме.
неоднократно слышал о том, что MS SQL 2000 самый быстрый для 1с 7.7, так как его и писали под MS SQL 2000
а на новые версии MS SQL в 1с просто забили, чтобы продвигать 8.х
Поэтому возник вопрос: корректно ли работает Solution 7 с компонентой "Загрузка процессора 100% в 7.7 под Windows Server 2008 при блокировке журнала транзакций" (? Или нужно брать другую версию Секретного Релиза, напр. Solution 5?
Solution 7 и vk_hook1C.dll выполняют разные задачи. То что в vk_hook1C.dll есть функционал подмены запросов, так это наследие от оригинальной разработки vk_hook.dll
Поэтому вполне возможно, что конфликт при подмене запросов через vk_hook1C.dll будет и это ни в коем случае не зависит от версии Solution :)
maxpiter, к Вам как к автору компоненты: а указанный функционал обязателен? Нельзя ли его убрать, если он может помешать работе Секретного Релиза?
На практике кто-нибудь, кроме zakiap2 жаловался на такую проблему или это только теоретические предупреждение? (по аналогии с Секретным Релизом, когда предупреждалось насчёт отсутствия совместимости с некоторыми 1с++ запросами)
В комментариях и в личку никто не жаловался.
(spock), поправьте если я не прав. Solution'ы заменяют не оптимальные запросы, которые идут в bkend.
Т.е. если вы подмените запрос через vk_hook1C, то Solution может его не перехватить, что по сути правильно и вы скорее всего получите, в худшем случае не оптимальный, но нужный вам запрос.
Есть хорошая статья как сделать, но вот как сохранить и что сохранить из ключей, чтобы потом в случае чего подсунув все восстановить?
Можно ли данное решение поставить на ЗиК. Т.е. происходит ли правка (именно правка под 2008, про оптимизации отдельный вопрос) запросов, чтобы можно было БД ЗиК запустить на SQL 2008 без понижения совместимости.
суть проблемы такова:
стоит SQL server 2005;
OC Server 2008 x64;
1C 7.7.027 ТИС;
Для доступа к базе требуется версия ODBC 3.500.... и выше поборол подменой dll из server 2003 x64
Но при создании новой базы, когда в администрировании настраиваю подключение к sql базе выдает следующее:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: StackHash_0a9e
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Код исключения: c0000005
Смещение исключения: 00000000
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
Подскажите пж. как быть!!!
Может быть стоит повторить этот же путь :)
подтверждаю, сам кричал что глючит, а оно работает...
вот что у меня установлено и работает, система win7-64bit-SP1
27 релиз+solution7
BkEnd.dll
MD5 Checksum: 4EC72938654CF7F8ADD836984FB54AC5
SHA-1 Checksum: 270D0F2524D77D45123284F9212E5197B3B1CF67
BkEnd0.dll
MD5 Checksum: 29784A3D18C7260BD4695B4E980A614D
SHA-1 Checksum: 59727DFAAAC18BFE4FB5B6A742E80E53B1CFB069
BkEndUtls.dll
MD5 Checksum: D0CBFC4AD4218D54CCA1082ADF03AD8C
SHA-1 Checksum: CC7227950F821D08A0BBD57F9534B9D53A62E41F
Generated by MD5 & SHA-1 Checksum Utility @
такими должны быть оригинальные файлы в винде семерке(64-SP1) менять их не надо
Содержимое папки %systemroot%\System32\
odbcbcp dll 57 344 2009-07-14 09:41
sqlsrv32 dll 933 888 2010-11-20 06:27
sqlsrv32 rll 106 496 2009-07-14 08:28
3 файлов 1 097 728 байт
Содержимое папки %systemroot%\syswow64
odbcbcp dll 49 152 2009-07-14 09:16
sqlsrv32 dll 778 240 2010-11-20 05:21
sqlsrv32 rll 106 496 2009-07-14 08:12
3 файлов 933 888 байт
Ошибка:
"База данных может быть открыта только из одного каталога информационной базы"
у меня наблюдалась,
если SQL-базу открыть в EnterpriseManeger (просто развернуть ветку со структурой базы)
и после этого запустить 1C в режиме Предприятие.
При этом, чтобы запустить как-то 1С,
иногда приходилось принудительно влючать для базы режим "Single User".
---
А SQL-база не подправленная?
У меня на прошлой работе была база ТИС-7.7 на гибких блокировках от конторы под названием "Софтпойнт".
Эта база каким-то образом открывалась 1С-кой не в режиме "Single User".
SQL-база нормальная, в 1С конфигурация ТиС с некоторыми доработками, прямые запросы не используются, все достаточно банально. В Enterprise Manager никто не залезал... просто в один прекрасный момент юзвери начинают звонить и говорить:- "Нам не зайти в базу, у нас ашипка...". Может, например, кто-то открыл окно ввода пароля и сидит в нем? Может или нет? Мне интересно, как ловить проблему... Если еще вылезет, попробую список скуль-процессов покурить, может, накопаю что-нибудь, а то в первый раз с перепугу в 2008 даже не нашел его. Вот почему они убрали его из дерева слева?
Результат: под администратором, находящимся в группе 1c_configurasts, в 1Ску входит без проблем. А под обычным пользователем выдает такие ошибки:
Native: 5011
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Пользователь не обладает разрешением на изменение базы "ххх", либо эта база данных не существует или находится в состоянии, не допускающим проверку доступа
SQL State: 42000
Native: 5069
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Не удалось выполнить инструкцию ALTER DATABASE
SQL State: 42000
Native: 15627
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Ошибка при выполнении команды sp_dboption
Пошуршал по Инету, нашел кое-какую инфу, но так как до глубокой ночи нет возможности её проверить, осмелюсь задать возникшие "нубские" вопросы:
1) Владельцем базы нужно делать win-пользователя? Какие ограничения по безопасности желательно наложить на него?
2) Для вашей реализации авторизации включение именованных каналов (Names Pipes) обязательно или всё будет работать и через TCP/IP?
3) В статье написано "Когда будете создавать новых пользователей, то у них не будет никаких прав на данные в базе 1С. Кроме того, что нужно будет выставить эти права, нужно будет также указать роли (для SQL Server 2000, для 7.0 не знаю как): db_datareader, db_datawriter , db_creator." Это нужно делать?
db_creator точно обязательно - без неё появляются указанные мной в посте 519 ошибки; необходимость db_datareader и db_datawriter не гарантирую ;-).
P.S. Неплохо было бы в сам архив к dll-ам добавить все необходимые инструкции (по установке Секретного Релиза, включению win-авторизации и т.д.), а то у не каждого может хватить терпения всякий раз для поиска решения перечитывать полтысячи постов как-то не комильфо ;-)
Пока не планировал даты, в раздумьях о включении туда понижателя приоритета процесса (100% загрузка которое).
P.S. В понедельник ввёл в "боевое использование" ваше решение win-авторизации для sql. Пока полёт нормальный :-).
Плюс (547), в общем spock, надо вставлять это в твое решение и будет СЧАСТЬЕ!!!
загрузке и уриб
после установки этого решения проблема исчезает
вот я и интересуюь насколько стабильно будет работать, не упадут ли базы
13.08.2012 16:45
так это решение исправляет проблемы работы со sql'ем, у dbf таких проблем нет.
"Отключена проверка порядка сортировки (если в каталоге программы или ИБ будет лежать OrdNoChk.prm, то используются родные механизмы платформы)". Вот из-за этого у тебя и нет ругани.
Вывод: используйте dll от XP, проверяйте бекапы, это облегчит вам жизнь ;)
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: BkEnd0.DLL
Версия модуля с ошибкой: 7.70.0.27
Отметка времени модуля с ошибкой: 4573f811
Код исключения: c0000005
Смещение исключения: 0012c9fb
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
2 пункта не сделал:
1.)USE master
GO
GRANT VIEW SERVER STATE TO
GO - так как ошибку выдает - типа Неправильный синтаксис около конструкции "TO". Если ставлю после "TO" пользователя, то "Невозможно предоставить, запретить или отменить разрешения sa, dbo, владельцу сущности, information_schema, sys или самому себе."
и
2.)делали ли, как выразился один из тестеров, "так называемую" реструктуризацию.
Не делали, бо непонятно как и где.
Может изза этого и не работает?
И можно ли 1С 7.7 со скулем 2012 связать?
Картинка с ошибкой в аватаре.
когда пытался выполнить:
USE master
GO
GRANT VIEW SERVER STATE TO sa
GO
то пишит: Невозможно предоставить, запретить или отменить разрешения sa, dbo, владельцу сущности, information_schema, sys или самому себе.
В статье сказано, про какойто фоновый процесс сброса грязных страниц, но я нифига не понял, что с ним делать.
надо 1с-ку пускать на скуль не под sa,
а под другим пользователем на скуле(предварительно создав его).
именно этому пользователю и надо дать те полномочия, о которых говорится в статье.
в случае же sa:
1. давать какие-либо права не требуется (у него их и так больше некуда),
но при этом могут быть проблемы при работе в монопольном режиме.
На счет фонового "сброса грязных страниц" я тоже не совсем понял.
Надо полагать какой-то системный процесс на сервере.
Можно автора будет попросить устроить "ликбез" на эту тему ;)
2. ты пытаешься под sa дать права sa (т.е. самому себе), о чем тебя скуль недвусмысленно и "матюгает"...
Cтолкнулись со следующей проблемой:
1cv77+Terminal(win2008) не работает разобрать по копиям, как следствие двухсторонняя печать
в терминальном режиме не работает пункт "разобрать по копиям" при печати из 1С, печатает просто последовательно все первые страницы, вторые и т. д. Если же в терминальном режиме запустить, например Word - все работает прекрасно. Уже перепробовали все комбинации в настройках драйверов, да и не в них дело, так как это происходит при печати на любых имеющихся моделях принтеров. Такое же происходит и локально в Windows 7, 2008.
на 2003 все нормально
Не связано ли это с библиотекой, если нет то как выходить из ситуации, есть ли решение
Ну и по сравнению с SQL 2005 (в режиме совместимости с 2000), работает несколько медленнее.
По совету автора решения пробовал заменить ODBC на оригинальные, от 2008 винды - не пашет, ругается. В чем может быть проблема?
Также при закрытии 1С вылетает следующая ошибка:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: ntdll.dll
Версия модуля с ошибкой: 6.1.7600.16695
Отметка времени модуля с ошибкой: 4cc7ab86
Код исключения: c0000005
Смещение исключения: 0003bc54
Версия ОС: 6.1.7600.2.0.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Что можешь подсказать по остальным 2-м ошибкам?
Решил попробовать использовать.
Поставил Solution7, vk_hook от maxpiter.SQL 2005, база в режиме 9.0. Реструктуризацию провел.
При попытке выполнения vk_hook.ПерехватSQLExecDirect(); вываливается ошибка:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: KERNELBASE.dll
Версия модуля с ошибкой: 6.1.7600.16385
Отметка времени модуля с ошибкой: 4a5bdbdf
Код исключения: e06d7363
Смещение исключения: 0000b727
Версия ОС: 6.1.7600.2.0.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Прочитал в теме что если вернуть на уровень совместимости 8.0 то проблемы не будет.
А есть ли какое-то другое решение?
C горем попалам установил SQL т.к. он не понимал многопроцессорный комп, пришлось в него интегрировать SP4.
Так вот после того как я запустил наконец-то SQL, загрузил в него базу из бекапа ,зашел в 1С Конфигуратор, прописал адрес SQL сервака и получил
тут писали что это решается все solution5, но у меня не получилось, т.к. при копировании этих dll 1C вообще не запускалось, ругаясь на ODBC чего-то там. Без низ с патченнной под SQL2005 bkend ошибка 126 эта. Оригинальных bkend нету у меня нигде.
Под Win 2008 R2 x64 + SQL 2008 все работало, но база работала в два раза медленнее, поэтому решил установить Win2003+SQL2005
Во первых!
Раз у вы уважаемые читаете обсуждение, то должны знать что solution5 использовать не стоит.
А используйте solution7 потому как там много чего поменялось + убраны тормоза на подчиненных документах.
Странно как вас ще юзверы не замучали последним.
Когда я запустил solution5 в рабочую базу так буквально через час начались вопли юзверов.
Если вы внимательно читали данное обсуждение то должны были увидеть что решение проблемы работы с win2008 b win 7 независит от формата хранения данных(sql dbf) все проблемы связанные с работой 7.7 решались как раз с этой целью.
1. Те кто приобретал 1с v7.7SQL уже имеют SQL серверы, и если эти структуры за примерно 5 лет эксплуатации не заработали 35к руб (зарплата "плохого" одинэсника за 1 месяц) на новый SQL, значит это им и не нужно.
2. 10G база данных. Вы по честному представляете сколько это документов в семерке? У меня например в торговле 309000 документов, .mdf получается размером 4436Mb, как-бэ не хило выходит ?
3. слова "терминальный режим" вам знакомы ? сложность реализации по сравнению с "SQL2008 в удалённом режиме" ? Да и злые языки говорят не взлетит
4. Я так думаю, что сделать "1c-to-postgress.dll" это совсем не галочку в компиляторе ткнуть и вывод этого решения в "продакшн" тоже не посыпан цветами.
Думаю стоит руководствоваться правилом "Бритвы Оккама", хотя если вам надо "Just-for-fun", я конечно не против, но тогда лучше у автора просить исходники и хоть на mySQL портируйте :)
С каких это щей мильён ? 1с семерка работает с SQL через ОДНОГО пользователя.
Про терминальные решения, которые "дешевле и лучше по функционалу" я с удовольствием послушаю.
Зачем работать с базой напрямую? Вам доставляет повисшие транзакции ? Опять-же при росте пинга вы очень весело сядете с блокировками. Мы обсуждаем 1с семерку, которая блокируется на общем журнале просто на ура.
Я как-бэ рекомендую вам почитать именно о 1с семерке, архитектуре там, масштабировании на 100 пользователей (что отдельная и не очень тривиальная задача), а задачи на тему "пропатчить KDE2 под FreeBSD" нынче не популярны.
В общем пора завязывать, а то нас выпилят с этого треда.
Моё IMHO таково: "не думаю, что ваша идея найдёт отклик в массах", если выразить одним словом то "бред"
после установки SQL 2008 в журнале событий винды стали появлять сообщения типа: Изменение параметра MULTI_USER на ON для базы
Это связано с тем что он 2008 (на 2000) такого невсречал.
или может это связано с серкетным релизом?
1) кто-нибудь еще пользуется sql-авторизацией с помощью вашего СР? Что будет (как поведёт себя сама 1С), если какой-то конкретной группе доменных пользователей ограничить (только чтение или вообще запретить) доступ к конкретной таблице в SQL-базе?
2) что слышно насчёт новой версии СР? Очень ждём включение в состав Секретного Релиза исправление загрузки процессора для режимов SQL 2005/2008/2012 (напомню, что в компоненте maxpiter'а имеется небольшой недостаток: vk_hook1C.dll работает только если установлен режим совместимости SQL 2000.)
3) MadDAD в №599 посте писал про перехват определенных sql-запросов. Будет ли это реализовано у вас? и можно ли предложенное MadDAD'ом сделать с помощью метода vk_hook.ВключитьПодмену компоненты maxpiter'а ?
(0) Автору, спасибо!
Ответ в (621)
как быть ?
при использовании DLL из архива solution 7.
не работает вот такой прямой запрос.
База MS SQl 2005 Ent x64
1с 77 27. + компонента 1с++
выполняю --- ВыполнитьИнструкцию("Create procedure ....")
выдает ошибку
Ошибка: State 42000, native 166, message [Microsoft][ODBC SQL Server Driver][SQL Server]'CREATE/ALTER PROCEDURE' does not allow specifying the database name as a prefix to the object name.
при использовании DLL из архива Solution 5 - все проходит нормально.
Во-первых, об этом не написано в описании. А читать 600+ комментариев не всегда есть возможность - люди работают.
Во-вторых, почему бы все три версии не поместить в один архив?
Так что я прав, а бредите Вы, батенька :)
Сделайте жест доброй воли - верните 2 стартмани. Они же все равно виртуальные ;)
Если Вам жалко, напишите мне. Я сам ему отдам, у меня их 931.23$m
Cигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: KERNELBASE.dll
Версия модуля с ошибкой: 6.1.7601.17514
Отметка времени модуля с ошибкой: 4ce7bafa
Код исключения: e06d7363
Смещение исключения: 0000b727
Версия ОС: 6.1.7601.2.1.0.256.48
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
Native: 924
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]База данных "DB1CBukh77" уже открыта, и одновременно к ней может обращаться только один пользователь.
Как победить?
Сборка длл 5, Windows Server 2008 R2 SP1, SQL Server 2012
- как ставилось, откуда дистрибутив 1с?
- какая конфигурация?
- повторяется ли эта ошибка постоянно или только эпизодически?
- какие соединения в этот момент существуют к базе: select * from sys.sysprocesses where dbid = <идент. базы>
- дистр 1с - установка на ХР, копирование на сервер 64 бита, изменение на секретный релиз как в публикации
- Бух 559, измененная для собственных нужд
- ошибка постоянна - загрузка данных или присоединение .mdf
- результат по запросу select * from sys.sysprocesses where dbid = db_id('DB1CBukh77_Archiv') в файле -
во время расчета итогов и при ошибке
- если я правильно понимаю, ошибка при сохранении конечных итогов, так как выбивает именно в конце полного перерасчета бухитогов? С помощью обработок остатки перенеслись в файловый вариант приемлемо. Перерасчет итогов в файловом варианте идет, но база очень сильно "похудела" - наверное опять до определенного количества записей в таблице итогов.
SQL State: 42000
Native: 924
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]База данных "DB1CBukh77" уже открыта, и одновременно к ней может обращаться только один пользователь.
Профайлер пока открыт (10-00, 21-06-2013)
Правда после вылета всегда загружал базу заново. Тестирование и исправление даже на боевой делать не хочу ))).
На остальное забил, если честно, - у нас ща горячая пора, приказ о переходе на УПП, так шо дотянуть бы до апреля 2014 на 7.7 это максимум.
Но мы отвлеклись от темы обсуждения, пора этот флейм прекращать.
ошибка появляется из за 1cpp v 3.2.3.20 при вызове метода класса
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: BkEnd0.DLL
Версия модуля с ошибкой: 7.70.0.27
Отметка времени модуля с ошибкой: 4573f811
Код исключения: c0000005
Смещение исключения: 001d1a8e
Версия ОС: 6.1.7600.2.0.0.768.3
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
1.сервер 2003 ms sql 2000
2.сервер терминал 2008, 1с 27., замененные файлы SQL...dll от 2003 сервера
распределенка урбд
при загрузке данных от переф. баз посредством конфигуратора, открытый журнал документов останавливается - пропадает курсор (SQL). помогает только переоткрытие журанала документов.
это при использовании 7 версии библиотеки
при использовании 5 ой версии - норм.
Добрый день.
Использую:
- 1С 77.27 Предприятие + Solution 7 Pack
- Запускаю на Windows 8 R2 Terminal Server
- Использую MS SQL 2008 R2
- Базы имеют Collation SQL_Latin1_General_CP1251_CI_AS
Проблема:
- не происходит быстрый поиск в справочнике "Контрагенты". А именно не происходит быстрый поиск по кодам, которые содержат русскую букву "С" и дефис "-". Например, не ищется код "МС2-000001".
Подробно:
Я сделал трекинг в SQL и выяснилось:
- в SQL 2000 при выполнении быстрого поиска выполняется SQL запрос: set rowcount 1 select * from SC46(NOLOCK INDEX=CODE) where CODE>='МС2''''''''''''''' and substring(CODE,1,3)='МС2' order by CODE,ROW_ID set rowcount 0 И запись находится. При чем этот же запрос работает и в SQL 2008 и тоже находит запись.
- в SQL 2008 при выполнении быстрого поиска выполняется SQL запрос: set rowcount 1 select * from SC46 WITH (NOLOCK) where CODE>='МС2' and substring(CODE,1,3)='МС2' order by CODE,ROW_ID set rowcount 0 И записи НЕ находятся.
Почему в разные версии SQL передаются разные запросы для меня загадка. Но считаю было бы неплохо поправить SQL запросы для SQL 2008. Можно использовать тот же запрос, который передается в SQL 2000. А можно использовать вот такой запрос (он тоже работает): select * from SC46 WITH (NOLOCK) where CODE>='МС2' collate Cyrillic_General_CI_AS and substring(CODE,1,3)='МС2' order by CODE,ROW_ID set rowcount 0
Добавлю, что скорее всего проблема в том что мы используем БД с кодировкой SQL_Latin1_General_CP1251_CI_AS. Но это вполне разрешенная кодировка для 1С77 и думаю она используется не только у нас. К тому же сменить Collation у рабочих баз большого объема вряд ли представляется возможным.
»
если там оочень большой справочник, и нет возможности в таком виде получить план, то можно ограничить TOP 10
прим. на всякий пожарный: нужен план текстом, например, из профайлера по event'у Performance - Showplan Text
Хочу уточнить:
1. поиск тестируем в базе на типовой платформе ( или хотите на секретном релизе)?
2. Т.к. база на sql 2000, то профайлер запускаем на sql 2000, в случае Performance - Showplan Text, не показывается никакого запроса. (действия с базой - поиск контрагента по коду - осуществляю на типовой платформе) См файл
1 адаптировать его под кодировку базы SQL_Latin1_General_CP1251_CI_AS - это реально?
2 Изменить кодировку базы SQL_Latin1_General_CP1251_CI_AS на кодировку сервера Cyrillic_General_CI_AS, есть ли подводные камни?
ps: это Решение будет использоваться на MS SQL 2008R2, как я понял из описания проблемы. Покажите все-таки текстовый план приведенного мною запроса, именно для вашей базы (120ГБ) на MS SQL 2008R2.
Сдалали на базе:
1.Сортировка SQL_Latin1_General_CP1251_CI_AS
2.База развернута на сервере MS SQL 2008R2
3.Профайлер запущен на сервере MS SQL 2008R2
ALL2008R2.xlsx
Мой предложенный выше запрос выгребает данные (code, row_id) из таблицы SC46 по индексу CODE, состоящему из полей code и row_id. В запрос есть указание на сортировку по полям code и row_id. Сервер должен пройтись по таблице (на самом деле индексу CODE) и просто вывести данные - операция INDEX_SCAN, это есть в плане запроса. Индекс уже упорядочен, данных для вывода в индексе достаточно. Серверу нет необходимости обращаться к физической таблице за доп. данными, т.е. все берется из индекса и данные там упорядочены так, как мы просим в запросе - по code, row_id. Но в плане есть еще ненужная операция TERTIARY_WEIGHTS и она весит много.
А все из-за того, что у вашей базы не полезный collation. Почитать можно тут:
Хотите премию от руководства? Поменяйте collation :)
2. Windows Server 2008 R2 Standard 64-разряная
3. Вылетает 1С сразу при запуске ярлыка 1С Предприятие пишет:
Прекращена работа программы "1C:V7 starter program (multi-user)
Сигнатура проблемы:
Имя события проблемы: BEX
Имя приложения: 1cv7.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcb7
Имя модуля с ошибкой: 1cv7.exe
Версия модуля с ошибкой: 7.70.0.27
Отметка времени модуля с ошибкой: 4573fcb7
Смещение исключения: 0003d9cf
Код исключения: c0000005
Данные исключения: 00000008
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
vk_hook.ТекстSQL = "SP3111=?";
vk_hook.НовыйSQL = "SP3111 in (' 4 ',' 7 ') and ''<>?";
можно будет наконец-то нормально в общем журнале делать выборки по нескольким фильтрам.
Зы: Вы ж можете попробовать, зачем задавать такие вопросы? Или я что то недопонял?
Зы: Ничего не трогаю, все программы даже выключил, сижу смиренно жду, 2-ой раз уже такое, что он пишет - где БД уже открыта? Всё закрыто, может в чём то другом дело?
потому что база находиться в однопользовательском режиме.
>>>а вот ОГРОМНУЮ инфобазу
огромная база это какая ?
и потянет или нет огромную базу Express ?
Также с какой базя ( dbf или sql ) пытаешься перейти ? если sql то какой ?
потому что база находиться в однопользовательском режиме.
Так какие регламентные задачи? Эта ошибка выскакивает, когда я "загружаю данные" в 1с в sql (заранее выгруженные из инфобазы файловой 1с), из-за этого инфобаза не загружается, никаких шедулеров, поставил специально проверить, никаких соединений, никто к ней не подключён, тем паче, что в sql 2012 management studio, пишется на базе "Sinle User", даже при всём желании не подключишься, такое разочарование, поставил а тут шиш, скажите что ещё может быть?
>>огромная база это какая ?
Которая достигла своего предела в базе проводках, там очень много данные,вся база весит чуть больше 5ГБ, если "выгрузить данные" всё это превращается в 163 МБ. Таблица проводок уже достигла предела, и 1с77 сыпет ошибки, подробнее
>>и потянет или нет огромную базу Express ?
Этот вопрос не понял, потянет огромную базу, если слово "Огромную" в переносном смысле (я про ограничение в 10ГБ), то хрен ж его знает, загрузить до конца не могу, БД СКЛ весит 5 ГБ + БД Лога почти 5, и всё время прерывается из за ошибки, вот и не пойму, то ли это ограничение в 10 ГБ, толи 1с чудит, толи ... толи, если нет то прошу уточнить.
>>Также с какой базя ( dbf или sql ) пытаешься перейти ? если sql то какой ?
Я пытаюсь перейти с DBF на SQL, Только там насколько мне известно у неё есть ограничение, свой апогей по заполнении таблиц о котором я писал. я описывал проблему и решил попробовать работу на SQL, а т.к. у 2012 ограничение 10 ГБ, а у предыдущих - 4 ГБ, я выбрать 2012 для тестов. Ну чтоб не покупать полную версию SQL.
Там я описывал и работу 1с77 с PostgreSQL, Через программу - SELTA, но мне этот способ не подошёл, да + служба поддержки поддерживает лишь краем глаза и слишком долгие ответы, всё затянулось с ними на слишком долгое время и я пока плюнул на СЕЛТИнский способ и пробую SQL Express, дальше видно будет.
проверить то что получилось и ее переносить.
потянет или нет Express имелось ввиду что там вроде только один процессор работает с sql
хотя для размеров базы 5 гб я бумаю с этим проблем быть не должно.
А Экспрес, я посмотрел в диспетчере задач, соотвествие - там задействованы все 8 процессоров. Может быть программно не используется, но это мне не ведомо.
А так, перетянул туда другую базу Бухгалтерии, тянет, открывается хорошо, поработал в ней, но полноценно не пробовал (куча операций, проводок, обработок - не запускал)
Зы: и что я парился с Экспресс, надо было сразу триал версию 2012 скачать. Ответ оказался под носом. Может кому опыт пригодится.
Зы2: Спасибо за советы люди добрые!
Встречал такую ошибку как у вас на некоторых серваках и не только в этой ситуации.
Оказалось - виновата виртуализация, точнее драйвер контроллера диска в ВМ (ну типа Guest Additions в VirtualBox).
Гипервизор KVM, стоял scsi-драйвер. Поменяли на virtio - ошибка ушла.
Столкнулся с такой штукой.
УРБД. Центр на SQL (секретный релиз :) ), филиал на dbf
Меняем в филиале документ. Запускаем обмен (сделан через батник).
В центре открываем журнал с документом. Запускаем обмен центра.
Если в центре двинуть скролинг мышки, журнал сразу становится чистым. Помогает выбрать перевыбор интервала.
Никто не наблюдал такую штуку?
2.Даже без секретного релиза связка часть баз под УРБД часть под sql
могут быть неприятные ошибки ( например в строках неограниченной длины)
В сортировках и отборах.
dbf 1c регистро зависимая
sql 1c регистро независимая
как бы объект запрос =СоздатьОбъект("Запрос");
в некоторых случаях по разному себя ведет в dbf и sql
3. как бы в ЦБ не рекомендуется работать ее использовать только для обменов
т.е. главный офис работает тоже в Пер Базе.
поднимется немного производительность
также можно будет иногда передать данные из одного филиала в другой
не мешая работе главного офиса.
+ MS SQL 2005 SP4 (Microsoft SQL Server 2005 - 9.00.5057.00 (Intel X86) Mar 25 2011 13:50:04 Copyright © 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) )
поставил Solution7 секретного релиза (bkends.dll от 16/01/12 23:10, BkEndUtls.dll - от 17/01/12 00:41)
Загружаю данные (выгрузка из ДБФ) в скулевую базу. 1Ска создает структуры таблиц, а непосредственно данные заливать не хочет.
Создаю абсолютно пустую базу. пытаюсь зайти в нее монопольно. Тоже (та же) ошибка:
42000/924: Database 'Base' is already open and can only have one user at a time
Пытаюсь зайти в пустую базу не-монопольно - снова ошибка, теперь такая:
42000/16933: the cursor does not include the table being modified or the table is not updatable through the cursor
HY109/0 Недопустимое положение курсора
Последняя выполненная команда в профайлере:
exec sp_cursorprepexec @p1 output,@p2 output,NULL,N'Select * from _1SUSERS WITH (UPDLOCK)',@p5 output,@p6 output,@p7 output и фетч этого курсора.
Подозреваю, что тут ломается при попытке 1Ской инсертнуть в _1SUsers данные о текущем соединении.
Куда рыть?
Попробовал поднять базу на SQL 2008 Express - взлетело.
Косяк явно в настройках 2005 скуля.
Единственно, что - почему-то 2005 сервер изначально не был пролинкован сам на себя и пришлось делать sp_addlinkedserver ручками
: была база под sql200 созданная под sql2000.
перетащил базу ( mdf, ldf) на сервер ms sql2005.
Преобразовал базу средствами sql к формату sql2005.
Далее подключил секретный релиз и выставивил режим 90.
попробуй сделать также.( т.е. базу из dbf переносишь в формат sql2000 под ms sql000,
далее переносишь базу на сервер ms msql2005, преобразовываешь базу к формату ms sq2005)
Почему я использую ms sql 2005 - потому что именно он у нас куплен официально.
Пойду курить про правильные переименования серверов...
Попробую 1Сный раздел реестра грохнуть. Хотя, конечно, хоть реестр может давать веселых глюков в работе 1С - про такие я даже не слышал.
Или ты про сами ДЛЛки секретного релиза?
Дык, на прошлой работе ровно на такой же связке (2003 сервер + 2005 скуль) секретный релиз встал в лет.
Итак, на прошлой работе стоял Вынь 2000 датацентр + 2005 скуль СП4.
НО! Я помогал админу в его второй конторе поднимать 77 на скуле - там была связка вынь 2003 + 2005 скуль (вот эта связка соответствует текущему серваку). Там поднимали 25 релиз с правкой бкенд.длл.
НО! Здесь я уже тоже попробовал 25 релиз + правка бленд.длл.
Ошибки сыпались ровно те же.
Делайте переименования правильно.
даже технет бывает не совсем корректен и только МСДН спасает ситуацию:
здесь local надо обязательно писать в кавычках - иначе скуль этот параметр просто молча проигнорирует
Solution5 Solution6 Solution7
Внимание, вопрос: как без всяких объяснений понять что надо качать? почему три файла? какой файл для какой проблемы/цели?
Backup/restore в ветке, почему-то не заметил (может плохо смотрел). Никто на версию mssql постарше не переезжал (поступил именно таким образом при переходе с 2000 на 2008 r2), или сие чревато какими-то недоразумениями?
ошибка появляется из за 1cpp v 3.2.3.20 при вызове метода класса
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: BkEnd0.DLL
Версия модуля с ошибкой: 7.70.0.27
Отметка времени модуля с ошибкой: 4573f811
Код исключения: c0000005
Смещение исключения: 001d1a8e
Версия ОС: 6.1.7600.2.0.0.768.3
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Как с этим бороться?
далее отпишусь как все будет работать
надо разбираться и править запросы - например на прямые запросы.
по sql2012 где то писали что по умолчанию неправильно выставляютсяпо умолчанию параметры энергосбережения и из-за этого сильные тормоза.
Так же походу выяснилось, что сильно влияет частота процессора и клиента (где запущена 1С 7) и самого сервера. Сервер даже специально перенесли обратно на старую платформу, но с более быстрыми по частоте процами.
В итого сейчас перепроведение проходит на связке win2008x86 (3,4 Ггц) и win2012 ms sql 2012 (2,67 Ггц).
Может кто сталкивался с вопросом переноса больших баз или шел таких путем?
Используется Win Server 2012, Solution7.
Главное - позакрывайте регистры и тогда загрузка в скуль с пересчетом итогов - будет практически влет
Разве 5 Гб большая? Я переносил 15 Гб - вот это большая.
При выгрузке проверяй, чтобы последним общий реквизитом не была строка неограниченной длины. Так же пользуйся plugin_unload_dat_fix.dll
чтобы не выгрузиться в dat
Во-первых хочу поблагодарить автора за этот труд. Реально облегчил жизнь старой доброй платформы под новыми ОС.
Во-вторых хочу попросить о добавке функционала (если это возможно). В частности речь о подмене запроса, который 1С-ка посылает при интерактивном поиске в форме справочника.
В оригинале он выглядит примерно так:
set rowcount 1 sel ect * fr om SC146(NOLOCK INDEX=DESCR) where DESCR>='И' and substring(DESCR,1,1)='И' order by DESCR,ROW_ID set rowcount 0А хотелось бы заменить условие
DESCR>='И' and substring(DESCR,1,1)='И'DESCR LIKE 'И%'Это очень актуально на больших справочниках.
Заранее благодарю.
ЗЫ Пытался использовать vkhook от romix, но этот запрос компонента не отлавливает вообще. Попытки пропатчить бекаенд вручную не удались - видимо в файле есть чексум.
У меня одна база содержит справочник с 200 тыс элементами и поиск по первым буквам просто мучительный.
Обычно проблема начинает ощущаться на 20к элементов и выше.
как я понимаю из описания - компонента может менять свое поведение в зависимости от версии скуля. Так что подмену можно не делать для старых версий. Как вариант....
Если на Вашей конфигурации и Ваших даных получилось что Вы утверждаете в 775,
из этого не следует что высказывание верно для всех остальных конфигураций.
В sql2000 есть ошибка замедления массового проведения всеми признаная.
в sql2005, sql2008 добавлено много новых возможностей ...
sql2005 и выше 64 разрядные с огромным объемом оперативной памяти - как бы их даже сравнивать никак нельзя с sql2000 c максимум 2-3гб для sql.
не знаю off не off Большое человеческое спасибо (0, spock ) за subj, за эту работу.
- Это ошибка у нас решалась ГибкимиБлокировками.
- Новые возможности надо уметь использовать, а 7.7 про них ничего незнает.
MS SQL 2000 тоже прекрасно потребляет отданные ему десятки гигабайт оперативки, но в таскменеджере этого конечно не видно. Сравнивать некорректно результаты полученные разными тестами на разных платформах, а в моем примере брался ночной бэкап рабочей базы и тестировался на параллельной инфраструктуре.
spock, спасибо за разработку.
База много лет жила на SQL Server 2000, сейчас необходимо переселить ее на SQL Server 2012. Файловая выгрузка-загрузка не работает, потому что база весит 83 гига и файловая выгрузка накрывается после нескольких часов работы.
Т.к. sql-бэкап с 2000 сервера напрямую на 2012м не разворачивается (несовместимость версий), сделали так:
1. На промежуточном сервере, где установлен SQL Server 2005, развернули копию базы (sql выгрузка/загрузка), на этом сервере поставили секретный релиз – база работает.
2. Сделали на SQL Server 2005 бэкап полученной на шаге 1 копии.
3. На сервере, где стоит SQL Server 2012, установили секретный релиз
4. Развернули базу из бэкапа, сделанного на шаге 2 на SQL Server 2012
При входе в полученную базу в режиме предприятия - ошибка:
Problem signature:
Problem Event Name: APPCRASH
Application Name: 1CV7s.exe
Application Version: 7.70.0.27
Application Timestamp: 4573fcd8
Fault Module Name: KERNELBASE.dll
Fault Module Version: 6.3.9600.17415
Fault Module Timestamp: 54504ade
Exception Code: e06d7363
Exception Offset: 00014598
OS Version: 6.3.9600.2.0.0.16.7
Locale ID: 1049
Additional Information 1: 5861
Additional Information 2: 5861822e1919d7c014bbb064c64908b2
Additional Information 3: a10f
Additional Information 4: a10ff7d2bb2516fdc753f9c34fc3b069
Теперь отписываюсь в указанном выше формате:
• версия сборки и дата файлов bkend.dll и bkendutls.dll:
bkend.dll версия 1.0.0.7, дата 17.01.2012
bkendutls.dll версия не указана, дата 17.01.2012
• Сервер СУБД:
Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright © Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
• версия ОС: Windows Server 2012 R2
• конфигурация 1с: самописная, возможно, что году этак в 2004 оно было бухгалтерией, но от типовой конфы мало что осталось
• делали ли реструктуризацию: делали
• действия, которые вызывали проблему: при выполнении кода
Спр=СоздатьОбъект("Справочник.Пользователи");
Если Спр.НайтиПоКоду(ИмяПользователя())=0 Тогдавылетает на строке
Если Спр.НайтиПоКоду(ИмяПользователя())=0 ТогдаИ не только для справочника Пользователи такая беда - если любой справочник подставлять туда, так же вылетает. Другие методы встроенного языка не тестировали.
Но это не конец истории.
Чтобы проверить вариант, предложенный _Z1 в (764), взяла старенькую базу с типовой конфой Упрощенная система налогообложения, ред. 1.3 (7.70.140),
перенесла ее с SQL Server 2000 на SQL Server 2005 (секр.релиз установлен, файла OrdNoChk.prm в каталогах Программы и ИБ нет) и оттуда на SQL Server 2012 (секр. релиз установлен, файла OrdNoChk.prm в каталогах Программы и ИБ нет).
Результат: на 2005 сервере база работает, а на 2012 в ней не проводятся документы, вываливается с невосстановимой ошибкой БД на выполнении бух.запросов.
В целевой базе (ради которой всё делается) на SQL Server 2012 ровно та же ошибка.
Подробности:
• версия сборки и дата файлов bkend.dll и bkendutls.dll:
bkend.dll версия 1.0.0.7, дата 17.01.2012
bkendutls.dll версия не указана, дата 17.01.2012
• Сервер СУБД:
Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright © Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
• версия ОС: Windows Server 2012 R2 Standart
• конфигурация 1с: Упрощенная система налогообложения, ред. 1.3 (7.70.140)
• делали ли реструктуризацию: делали
• действия, которые вызывали проблему:
при выполнении кода
БИ2 = СоздатьОбъект("БухгалтерскиеИтоги");
БИ2.ИспользоватьСубконто(ВидыСубконто.Номенклатура,СписокТоваров,2);
БИ2.ВыполнитьЗапрос(, ТекущийДокумент(), "10.1, 41.1, 43",,,,,5);Вываливается с ошибкой
SQL State:42000
Native:468
Message:[Microsoft][ODBC SQL Server Driver][SQL Server]Неудалось разрешить конфликт сортировки между "SQL_Latin1_General_CPI_CI_AS" и "Cyrillic_General_CI_AS" в операции equal to operation.
Трасса:
StmtText
--------
Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1005] THEN (1) ELSE (0) END))
|--Nested Loops(Left Semi Join, DEFINE:([Expr1005] = [PROBE VALUE]))
|--Constant Scan
|--Clustered Index Scan(OBJECT:([Test77].[dbo].[_1SACCS].[PK__1SACCS]), WHERE:([Test77].[dbo].[_1SACCS].[PLANID]=(1662) AND ([Test77].[dbo].[_1SACCS].[SC0]=(1291) OR [Test77].[dbo].[_1SACCS].[SC1]=(1291) OR [Test77].[dbo].[_1SACCS].[SC2]=(1291)) AND ([Test77].[dbo].[_1SACCS].[SC0]=(1291) AND [Test77].[dbo].[_1SACCS].[OSC0]=(1) OR [Test77].[dbo].[_1SACCS].[SC1]=(1291) AND [Test77].[dbo].[_1SACCS].[OSC1]=(1) OR [Test77].[dbo].[_1SACCS].[SC2]=(1291) AND [Test77].[dbo].[_1SACCS].[OSC2]=(1)) AND ([Test77].[dbo].[_1SACCS].[SCHKOD]>=' 10. 1.' AND substring([Test77].[dbo].[_1SACCS].[SCHKOD],(1),(7))=' 10. 1.' OR [Test77].[dbo].[_1SACCS].[SCHKOD]>=' 41. 1.' AND substring([Test77].[dbo].[_1SACCS].[SCHKOD],(1),(7))=' 41. 1.' OR [Test77].[dbo].[_1SACCS].[SCHKOD]>=' 43.' AND substring([Test77].[dbo].[_1SACCS].[SCHKOD],(1),(4))=' 43.')))
У базы Collation Cyrillic_General_CI_AS
У сервера (который SQL Server 2012) Collation SQL_Latin1_General_CPI_CI_AS
А вот у исходного сервера (2000) и промежуточного (2005) Collation Cyrillic_General_CI_AS
Вопрос: что нужно сделать, чтобы база на целевом сервере (2012) заработала, с учетом того, что на нем уже давно установлены и живут все рабочие базы холдинга?
1.Можно попробовать найти тестовый сервер sql 2012 у которого Cyrillic_General_CI_AS
и поробовать на нем.
2. Можно поробывать под вашим sql2012 в пустой базе создать несколько справочников и документов
и посмотреть воспроизвести Ваш запрос.
3. Попробуйте на базе sql2012 где не работает счета передавать не через строку а через список значений.
Также если есть несколько планов счетов то при создании счета надо обязательно вторым параметром указывать план счетов.
4. Если Валиться только один запрос ( а не целое множество ) то вполне реально переписать
этот запрос или через класс бухитоги или через прямой запрос.
Заполнить таблицы скриптами.
Но по моему при старте 1с стоит проверка что Collation базы должен совпадать
с Collation Сервера. Т.е. если попросить автора subj решить эту проблему
то тогда тоже скорее всего все заработает т.е. можно и так попробовать
но гораздо меньше усилий требует выделенный сервер с правильным Collation
(769) Отмена проверки при старте не поможет, т.к. Ошибки валятся когда идет сравнение полей из таблиц одна из которых временная (созданная в TempDB и соответственно с collation сервера), а вторая из базы с отличным от сервера collation.
Я для смены collation пользовался алгоритмом и скриптами из .
Единственное, индексы создала сама 1С.
Создайте новую тестовую пустую базу под sql2012
Подкючите ее через секр релиз версии 7.
Создайте в этой конфигурации Спр=СоздатьОбъект("Справочник.Пользователи");
Войдите в эту базу
набейти 3-4 пользователей.
Выполните код
Спр=СоздатьОбъект("Справочник.Пользователи");
Если Спр.НайтиПоКоду(ИмяПользователя())=0 Тогда
по идее все должно получиться
Вариант номер два Так как в 1с базе нет внешних ключей то можно просто с sql 2000
перетащить на sql 2012
Т.е. прилинковываешь sql 2012 к sql 2000
и далее например командой select into для каждой таблицы
Ну и после этого все хранимые процедуры перенести.
надо эксплатировать базу а изменение внести нельзя )
Скорее всего должен быть какой либо режим trace ( для сеанса или для базы)
которой при создании временных таблиц в tempdb использует назначенный Collation
(768) попробуй спросить об этом на форуме sql.ru
З.Ы, База 1С 7.7 самописная (70ГБ) переведена в ноябре 2014 с 2000 на 2012 (через промежуточный 2008) путем бэкап-ресторе с одновременной сменой collation с SQL_Latin1_General_CPI_CI_AS на Collation Cyrillic_General_CI_AS и работает до сих пор.
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: KERNELBASE.dll
Версия модуля с ошибкой: 6.3.9600.16496
Отметка времени модуля с ошибкой: 52b3e015
Код исключения: e06d7363
Смещение исключения: 00012eec
Версия ОС: 6.3.9600.2.0.0.256.48
Код языка: 1049
Дополнительные сведения 1: 5861
Дополнительные сведения 2: 5861822e1919d7c014bbb064c64908b2
Дополнительные сведения 3: 80a7
Дополнительные сведения 4: 80a7ccd5015bce3d41120fe057d4f98f
чтобы ушла ошибка точка входа не найдена надо было родную "BkEnd.dll" переименовать в "BkEnd0.dll" и только потом копировать файлы из поставки Solution7.rar.
P.S.: Автору разработки "Секретный релиз платформы v77.27.7" - большой респект и уважуха. Пол дня бился с подключением 1С77 к SQL 2012 (менял DLL-ки в system32, создавал хранимую процедуру по статье Гилева, представление на mastere и т.п.), но всё уперлось в режим совместимости с SQL 2000, которого в SQL 2012 нет. Если бы не эта публикация, не знаю что бы делал.
Еще раз огромное спасибо!
Краткая выжимка оттуда:- "К сожалению, в рекомендациях от Microsoft нет ничего, что можно было бы применить в рамках использования в 1С. В операциях перепроведения эта проблема в основном решается вручную. Запускается операция перепроведения по интервалам и ответственный сотрудник просто выходит из 1С, очищая буфер, а потом запускает на перепроведение новый интервал. Как вы понимаете это очень неудобно. Некоторые переводят базу в DBF и перепроводят там (из-за этой ошибки многие сторонники DBF приводили аргумент не в пользу SQL - существенно более оперативное проведения документов 1с в DBF).
Тем не менее, решение есть. Для этого достаточно самому из 1С периодически очищать буфер сессии." (или делать reconnect) - это чуть ранее из того же текста.
Так вот, возможно ли каждые 5 минут или каждые 100 или 1000 запросов в рамках proxyDLL переустанавливать соединение или как-то очищать буфер (тут я уже не очень хорошо понимаю, что они имеют в виду под этим.
ОС: MS Windows 2012 R2 Standard x64;
MS SQL Server 2012 SP 1 x64
При восстановлении последовательности . вылетает ошибка SQL из скриншота.
Кто нибудь сталкивался с такой ошибкой и может подсказать что делать в данной ситуации?
Буду очень благодарен за любую помощь проблемма очень актуальна так как мы планируем
в ближайшеее время перевод 1с 7.7 на данную ОС и SQL Сервер.
из публикации:
Возникли проблемы? Отписываемся в следующем формате:
версия сборки и дата файлов bkend.dll и bkendutls.dll;
сервер СУБД в формате select @@version;
версия ОС;
конфигурация 1с;
действия, которые вызывали проблему;
делали ли, как выразился один из тестеров, "так называемую" реструктуризацию;
версия сборки и дата файлов bkend.dll и bkendutls.dll:
BkEnd.dll
Версия продукта: 1.0.0.7
Дата изменения: 16.01.2012 23:10
BkEndUtls.dll
Версия продукта: -
Дата изменения: 17.01.2012 0:41
сервер СУБД:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright © Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
версия ОС: MS Windows 2012 R2 Standard x64
1с предприяие 7.7 для SQL 7.70027
конфигурация: доработанная типовая конфигурация "Торговля и склад" редакции 9.2. Оптово-розничная конфигурация 7.70.929
действие которое вызвало проблему: восстановлении последовательности документов. Повторилось 2 раза минут через 7-8 после начала
восстановления последовательности при проведении документов.
Пеструктуризацию не делали.
1C: 7.7 Релиз 27
Solution 7 установлен.
Есть проблема при подключении к базе 1С, которая находится на сервер SQL 2000. Выдает ошибку Specified driver could not be loaded due to system error. 182: C:\Windows\Systema32\SQLSRV32.DLL
Как это можно вылечить? На Windows 8 работает без проблем. С 10-й непонятно что делать.
Используется доменная авторизация подключения пользователей. Созданы две вин-группы: "DOMAIN\1CUSERS" и "DOMAIN\1CADMINS". Во вторую группу входят администраторы 1С и у неё права на ALTER, VIEW ANY DATABASE, VIEW SERVER STATE.
При попытке реструктуризации базы (добавление реквизита и т.п.) возникает следующая ситуация: в базе 1С появляется новая схема с именем "DOMAIN\USER", новый пользователь с именем "DOMAIN\USER", а реструктуризируемая таблица приобретает имя "DOMAIN\USER_Имя_таблицы_NEW" (где "DOMAIN\USER" - имя пользователя, под которым происходит реструктуризация, из группы "DOMAIN\1CADMINS") Соответственно, получается ерунда.
Если же для группы "DOMAIN\1CADMINS" добавить право SYSADMIN, тогда реструктуризация проходит нормально.
Профайлером поймал, что при реструктуризации таблицы выполняется команда "CRE ATE TABLE ИМЯ_Таблицы_NEW". А должно быть "CRE ATE TABLE [dbo].[ИМЯ_Таблицы_NEW]"
Где что не так?
Может кто сталкивался? Не могу понять, почему когда в конфигураторе добавляю новый реквизит справочника при сохранении изменений 1С вылетает?
Имя сбойного приложения: 1cv7s.exe, версия: 7.70.0.27, метка времени: 0x4573fcd8
Имя сбойного модуля: ODBCBCP.DLL, версия: 6.3.9600.17415, метка времени: 0x545049c2
Код исключения: 0xc0000005
Смещение ошибки: 0x0000443c
Идентификатор сбойного процесса: 0xac4
Время запуска сбойного приложения: 0x01d20d1bf45c7ba2
Путь сбойного приложения: C:\Program Files (x86)\1Cv77\BIN\1cv7s.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\ODBCBCP.DLL
Идентификатор отчета: 3f4bd428-790f-11e6-80d5-c8be19d39f6e
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
При этом если новый документ создать, все сохраняется.
Пробовал менять файлы
C:\Windows\System32\odbcbcp.dll
C:\Windows\System32\sqlsrv32.dll
C:\Windows\System32\sqlsrv32.rll
C:\Windows\SysWOW64\sqlsrv32.dll
C:\Windows\SysWOW64\sqlsrv32.rll
Не помогло
Проясните пожалуйста, решил использовать Solutions7 для работы в базе под MS SQL Server2005, не понятен один момент в свойствах базы, нужно выставлять уровень совместимости с MS SQL 2000, или оставлять MS SQL 2005 ?
Спасибо!
запрос 1с++ это практически sql запрос так что он не может быть не совместим с sql.
Даже более того можно на 1с++ написать чистый sql запрос
без подстановки псевдоимен ( правда это не удобно )
так что переформулируйте как то по другому предложение в 823
Считать от чего то какой-то второй абзац это как-то неправильно.
Как бы моя мысль такая.
На 1с++ можно написать чистый sql запрос который обязательно выполниться на sql сервере и вернет в 1с результат.
Есть версия платформы: 1С:Предприятие 7.7 для SQL (7.70.027)
ОС: Windows 10
MS SQL Server 2012
После установки файлов bkend.dll (версия 1.0.0.7 от 17.01.2012 00:10) и bkendutls.dll (версия 1.0.0.7 от 17.01.2012 01:41), версия 1С стала: 1С:Предприятие 7.7 (сетевая версия) (7.70.027) и исчезла возможность настройки базы для SQL.
Получается, что прислали лажу?
Solution7.rar ЗАРАБОТАЛ, ПРОДОЛЖАЮ ТЕСТИРОВАНИЕ...
Пример: Есть некий OLE-сервер в виде DLL для работы с подключенным к ПК оборудованием. В этом сервере используется метод:
Function Send(ByVal ppp As Long, ByVal c As Byte, ByVal is As String, os As String) As Boolean
В первых трех параметрах ppp, c, is в метод из 1с передаются команды на выполненние устройством некоторого действия, а в последнем параметре os метод возвращает нужное значение. 1с этого значения не видит, поскольку параметр передается в объект по значению. Сам метод возвращает статус выполнения команды, с ним проблем нет.
Вопрос: Возможно ли каким-либо патчем изменить поведение 1с и заставить ее передавать параметры в OLE-объект по ссылке?
зы. Автора DLL и ее исходного кода, к сожалению, нет.
в общем ситуация - dat-файл 3,1Гб.
Выгрузка из dbf: WinXP(x32)/Win2007(x64) + патч romix-а (большие выгрузки) - выгружается (с патчем Альф-а - тоже).
Загрузка в sql server 2008:
Win2008r2(x64)/Win2016(x64) + soulution7: патч romix-а (большие выгрузки) не фурычит, вместо него пробую патч альф-а (большие выгрузки) - затыкается на загрузке 2Гб из dat-файла (ошибка поиска в файле безымянный файл)
В итоге - вопрос:
Как используя solution7 выполнить загрузку (в sql) из dat-файла >2Гб?..
Загрузка выполнялась в пустую базу, в которой перед загрузкой была создана константа в соответсвтвии с рекомендациями автора. Без константы не грузится, выдает что-то вроде "Ошибка загрузки данных"..
как бы солюшен научить не отрубать патч ромикса для больших выгрузок - вот это было бы неплохо весьма...
ну или (это уже не сюда) Альф подкрутил бы свой плагин чтобы он за(!)гружал больше 2Г дат-файл (этот плагин с солюшеном вроде дружит, но вот загрузка с ним рвет на 2Гб)
сделать скл периферийкой дбф центральной, поставить миграцию только в справочники+константы - инициализировать периферийку.. потом по частям ставить миграцию - перекидывать в скл...
правда потом прибить признак урбд - не нашел исчерпывающей информации как это сделать...
но хотелось бы (843).
а если честно - до сих пор удивлен отсутствием замечаний (с давних пор) про невозможность переносить с солюшеном в скл большие выгрузки...
о, спасибо, добрый человек.
(блин так не хочется с урбд мутить... длинно это все - всех в отпуск отправлять не хотелось бы.. поддержку бы больших дат-файлов при загрузке с солюшеном - и всё, там и без урбд есть на что время тратить)
бюджета нет. однако есть легкое недоумение.
история развития разработок (в том числе Ваших) как-то исключала вопрос о бюджете в случае востребованности доработки функционала и/или исправления ошибок, вопрос о бюджете возникал в случаях индивидуальных хотелок. кроме того, механизм распространения разработок через данный ресурс позволяет по желанию автора размещать разработки в платный доступ (то самое "есть бюджет - есть доработка").
прим.: внимание! вышесказанное - ни в коем случае не претензия, тем более на фоне фактически огромной благодарности за то, что уже сделано и тут выложено... просто некоторое недоумение, проистекающее из удивления тем фактом, что вопрос о переносе в sql-формат (с использованием данной разработки) баз данных с размером выгрузки (dat-файла) больше 2Гб возник только у меня и только сейчас.. ну и с учетом уже имеющихся в истории развития данной разработки фактов решения вопросов ее совместимости с другими решениями (внешними компонентами) без условия предоплаты.
повторюсь - сие лишь мое личное недоумение и никоим образом не претензия. от меня вам лишь огромная благодарность за это решение.
Заранее извините за мою дотошность к "умершему".
Есть проблема с работой с SQL2005.
Сервер SQL поименован отлично от сервера Windows, а именно: NTS\SQL2005 (если сервер называется одинаково, проблем нет).
Проблема заключается в том, что не отрабатывает (как минимум) команду:
Спр.НайтиПоНаименованию("НеВключатьВСписок", 0);
При равных условиях (бинарники одинаковые, конфа одинаковая, база одинаковая, версия SQL одна и та же), на сервере с разными именами формирует запрос:
set rowcount 1
select *
from SC4055(NOLOCK INDEX=DESCR)
where DESCR>='НеВключатьВСписок'''''''''''''''''''''''''''''''''''
order by DESCR,ROW_ID
set rowcount 0
тестирование и исправление базы в этом случае лучше даже и не пробовать... естественно.
На SQL обозванном также как хост - как положено:
set rowcount 1
select *
from SC4055(NOLOCK INDEX=DESCR)
where DESCR>='НеВключатьВСписок' and substring(DESCR,1,17)='НеВключатьВСписок'
order by DESCR,ROW_ID
set rowcount 0
ЗЫ: Я понимаю, что это вопрос из разряда "вызов самому себе", но вдруг, а? ;)
Возникли проблемы в работе с MS SQL 2016. В конфигурации Бухгалтерия не удается открыть Оборотно-Сальдовую ведомость, возникает ошибка:
SQL State: 42000
Native: 1018
Message:[Microsoft][ODBC SQL Server Driver][SQL Server][Incorrect syntax near 'INDEX'. If this is intended as par of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.
+ в журнале вижу вот такое:
Faulting application name: 1cv7s.exe, version: 7.70.0.27, time stamp: 0x4573fcd8
Faulting module name: BASIC.DLL, version: 7.70.0.27, time stamp: 0x4573fbb2
Exception code: 0xc0000005
Fault offset: 0x000073d0
Faulting process id: 0x1a30
Faulting application start time: 0x01d423fa2db59202
Faulting application path: C:\Program Files (x86)\1Cv77\BIN\1cv7s.exe
Faulting module path: C:\Program Files (x86)\1Cv77\BIN\BASIC.DLL
Report Id: a0c1e16f-438e-4217-bb29-413d3387a32d
Faulting package full name:
Faulting package-relative application ID:
версия сборки и дата файлов bkend.dll и bkendutls.dll; 1.0.0.7
сервер СУБД в формате select @@version; Microsoft SQL Server 2016 (SP2-CU2) (KB4340355) - 13.0.5153.0 (X64) Jun 28 2018 17:24:28 Copyright © Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor)
версия ОС;Windows Server 2016 Standard
конфигурация 1с; Бухгалтерия ПРОФ
действия, которые вызывали проблему; открыть Оборотно-Сальдовую ведомость
делали ли, как выразился один из тестеров, "так называемую" реструктуризацию; Пока нет, в процессе
Может кто сталкивался? Буду признателен за наводку куда копать
sql 2017 уровень базы 140
оборотно сальдовую считает.
конфигурация самописная.
бух выйдет из отпуска погоняем на сервере "тяжелые" обработки.
Визуально сервер работает быстрее. (Если сформировать только что посчитанный отчет )
то выдает его из памяти (практически мгновенно )
Непонятно что за косяк при копировании базы mdf в другую папку этого диска скорость копирования(после третьего гигабайта) сильно падает. Может кто знает причину.
что Вы понимаете под рестстуктаризацией не знаю может именно в ней проблема.
Удалось разобраться. Решение такое:
Для корректного функционирования SQL баз 1С 77 на MSSQL 2016 в части формирования обороток необходимо:
1. В базе SQL изменить текст хранимой процедуры _1sp__1SACCS.
Для этого необходимо выполнить запрос
USE [BaseName]
GO
/****** Object: StoredProcedure [dbo].[_1sp__1SACCS_ByID] Script Date: 07.09.2018 12:38:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[_1sp__1SACCS_ByID](@ID CHAR(9)) AS
select * from _1SACCS(NOLOCK) where ID=@ID
Где в инструкции USE надо прописать имя SQL базы данных
2. Заменить в файле 1Cv7.DDS в каталоге базы 1С строку
P=_1sp__1SACCS_ByID |BYID |@ID C(9) |select * from _1SACCS(NOLOCK INDEX=ID) where ID=@ID
На
P=_1sp__1SACCS_ByID |BYID |@ID C(9) |select * from _1SACCS(NOLOCK) where ID=@ID
Данный способ поможет до изменения конфигурации ИБ 1С. После изменения конфигурации надо проверить функционирование оборотки и, если ошибка вернулась, повторить выполнение п.п. 1 и 2
Спасибо, ваш скрипт помог решить проблему с обороткой. Но с внешними отчётами это не сработало, та же ошибка. Не подскажете, что можно с этим сделать, возможно надо как-то скрипт подправить? Благодарен за любую помощь, сам не 1Сник.
Если в конфигураторе в параметрах базы указать после имени сервера строку ";Driver={ODBC Driver 13 for SQL Server}", то 1с возможно запустить в shared memory. Предполагал что такой режим должен быстрее применять изменения в конфигурации при большом объеме данных. Однако 1с не сохраняет данные, при такой строке подключения. Выдает окно предупреждения без сообщения. Последняя инструкция отправленная на sql "exec sp_cursorunprepare 1073741825". Ошибку sql не выдает. Есть предложения как победить?
Ещё особенность. При указании в конфигураторе в строке сервера ";Driver={ODBC Driver 17 for SQL Server}" выдается сообщение что требуются драйвера > "3.50.0303". Что странно.
.....
Переименовать оригинальный файл BkEnd.dll в BkEnd0.dll (0 - это ноль);
Скопировать файлы BkEnd.dll и BkEndUtls.dll из поставки в каталог, куда установлена 1с (например, C:\Program Files\1Cv77\BIN);
Подскажите пожалуйста текущую актуальную версию Вашего решения.
Вопрос связан с тем, что скачал версию от 16.01.2012, а указано что работает с MSSQL2014. Думал что может есть что то посвежее.
Есть проблема по быстродействию.
При варианте когда SQL сервер и клиент 1С находятся на разных хостах условный тест выполняется на 30% медленнее, чем при варианте
когда и клиент и сервер на одном хосте. Проблем по быстродействию железа точно нет есть свободные ресурсы ЦПУ и сетьи, диски SSD в них тоже не упераемся. Думал что может Ваш свежий релиз решит проблему.
Сравенение делалось с какой версией SQL ? Я сравнивал SQL 2000 с 2012. Делал перепроведение документов за месяц и сравнил по времени. Если на 2000м эта процедура заняла 45 минут, то на 2012м уже порядка 2 часов. С чем связано сказать сложно - возможно именно из-за курсоров, которые использует сам 1С 7.7. Все это конечно делалось на сервере.
Тоже делаю перепроведение документов за месяц. Сейчас попробовал WIN2003x64 + MSSQL2000SP4, стартует в два три раза бодрее, но перевалив за половину месяца начинает тормозить нещадно. окончания так и не дождался. Так что вопрос почему тормозит по сети WIN2012 server + MSSQL 2012 остается актуальным.
Какое кол-во документов? Проблема торможения связана на SQL 2000 c созданием и удалением временных таблиц. У нас был код запроса переписан на прямые SQL запросы минуя создание временных таблиц. Поэтому на SQL 2000 замедления почти не возникало.
Вот тут статья, описывающая проблему торможения при перепроведении документов
После переезда с MSSQL2000 на MSSQL2012 пользователи занимающиеся массовыми перепроведениями сказали что все стало быстро, а все остальные сказали что стало медленно, вот я и полез разбираться. Проблема в том что я типа "админ" и не смогу переписать "на прямые SQL запросы", поэтому и надеялся что автор "Секретный релиз платформы v77.27.7" может доработал свой проект относительно версии 2012 года.
Попробуйте в конфигураторе в параметрах базы указать после имени сервера строку ";Driver={ODBC Driver 13 for SQL Server}". И запустить перепроведение на том же компе где sql server установлен. Должно быстрее перепроводить.
В приложении к сообщению результаты тестов, может кому пригодиться.
По оси X номер периода который перепроводиться, по оси Y время на перепроведение..
sel ect
net_transport
,*
fr om sys.dm_exec_sessions as t1
left join sys.dm_exec_connections AS t2
ON t1.session_id=t2.session_id
where not t1.program_name is null
and original_login_name = 'sa'
версия сборки - 27,7
дата файла bkend.dll (16-01-12) и bkendutls.dll (17-01-12)
сервер СУБД я решил перееустановить, думал поможет - Microsoft SQL Server 2005 - 9.00.5324.00 (X64) Aug 24 2012 18:28:47 Copyright © 1988-2005 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
версия ОС Win Server R2 Enterprise 64x;
конфигурация 1с - Торговля и Склад;
действия, которые вызывали проблему - перевожу БД с файловой в серверную, на этапе заугрузки данных 1С просто закрывается. Так же замечено что БД становится в однопользовтельском режиме
делали ли, как выразился один из тестеров, "так называемую" реструктуризацию - После попытки загрузки данных - и снятия однопользовательского режима - я пробовал реструктуризацию. Но при повторной загрузке снова та же ошибка.
Если что я поборол благодоря
Продублирую ...
Как отключить УРБД в базе данных на платформе 7.7?
Согласно документации, процесс инициализации РБД - необратимый, но иногда возникает потребность удалить всякое упоминание о том, что база данных когда-то была распределенной. Что для этого необходимо сделать:
1. В первую очередь, в файле 1SSYSTEM.DBF вручную очистить 3-х символьное поле DBSIGN (содержащее код ИБ). и в принципе этого достаточно. Но для возврата ИБ в первозданное состояние, нужно выполнить п.п.2-3.
2. Удалить файлы 1SDBSET.DBF, 1SDWNLDS.DBF, 1SUPDTS.DBF и соответствующие индексные файлы (.CDX) .
3. В файле 1SSYSTEM.DBF обнулить 36-ти символьную строку DBSETUUID: 00000000-0000-0000- 0000-000000000000.
Для SQL-версий тоже самое необходимо віполнить с таблицами с такими же именами.
Условие(Номенклатура в СписокЗначений) - совсем не радует. тормозит безбожно. в меру своей ламерности сумел увидеть что скуль генерить какие-то темпоые табличик и создает отдельный запрос на проверку КАЖДОЙ номенклатуры в список...
в результате условие в чорном запросе ничем не помогает.
намного производительнее получить выборку и уже при обходе выборки проверять на СЗ.найтиЗначение(Запрос.Номенклатура)
еще лучше использовать 1с++ и УложитьСписокОбъектов ( здесь Можно и с папками ) но это больше времени.
Порядок установки:
.....
Переименовать оригинальный файл BkEnd.dll в BkEnd0.dll (0 - это ноль);
Скопировать файлы BkEnd.dll и BkEndUtls.dll из поставки в каталог, куда установлена 1с (например, C:\Program Files\1Cv77\BIN);
Все остальные ДЛЛ должны быть родные и в BIN и в Windows.
Сейчас 1с ЗиК 7.7 с подменными dll идут в комплекте к этой публикации, работает с solution7 последнее решение насколько мне известно. Завтра гляну какая версия файла SQLSRV32.dll у нас.
BkEnd.dll 16.01.2012
BkEndUtls.dll 17.01.2012
Это последняя версия на данный момент?
???
Как решился вопрос?
---
ms sql 2017
BkEnd.dll
Версия продукта: 1.0.0.7
Дата изменения: 16.01.2012 23:10
BkEndUtls.dll
Версия продукта: -
Дата изменения: 17.01.2012 0:41
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright © 2017 Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: )
делали "так называемую" реструктуризацию
Solution7.rar
DLL - 1.0.0.7
У Util нет версии
W2k8 R2 +
Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Feb 20 2014 20:04:26
Copyright © Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Как то решить вопрос можно? Ну либо $M back.
2) bkend.dll - 1.0.0.7
3) bkendutls.dll - дата изменения 17.01.2012 0:41
4) Сервер СУБД - Microsoft SQL Server 2014 (SP1-GDR) (KB4019091) - 12.0.4237.0 (X64)
Jul 5 2017 22:03:42
Copyright © Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 18362: )
5) Версия ОС - Windows 10 Pro 64-bit (10.0, Build 18362) (18362.19h1_release.190318-1202)
6) Конфигурация 1с - Торговля и Склад 9.2
7) Проведение документов (восстановление последовательности)
8) Реструктуризацию делал
Прикрепил результат "sel ect * fr om sys.sysprocesses where dbid = db_id('TDBASE')"
Развернул данный релиз (Solution 7).
Имеется Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Feb 20 2014 20:04:26
Copyright © Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
Восстановил бэкап БД с sql 2005 (была совместимость 80), под новой субд выставил совместимость 120.
Пробую запустить 1с 7.7 с двух разных операционок в монопольном режиме
с Windows server 2012 R2 возникает следующая ошибка
sql state 42000 native 102 incorrect syntax near '-'
с Windows 7 64 возникает такая ошибка
sql state 42000 native 2812 не найдена процедура sp_dboption
Качаю скрипт процедуры у Гилева, успешно создаю
На клиенте с Windows server 2012 R2 ошибка остается прежней
с Windows 7 64 возникает такая ошибка
sql state 25000 native 0 invalid transaction state
До этого с windows 7 и windows 2012 клиент 1с 7.7 работал с субд sql server 2005
В чем может быть проблема?
при реструкторизации идет drop вручную созданных индексов
DR OP INDEX [_DTA_INDEX_SC222-sp224] ON [dbo].[SC222]
не понравился символ "-" в названии индекса, 2005 sql проглатывал и не жужжал
Все отлично работало и тестировалось, пока не решил добавить новый реквизит в справочник.
На добавлении реквизита любого типа к любому объекту типа справочник или документ появляется ошибка следующего типа
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: ODBCBCP.DLL
Версия модуля с ошибкой: 6.3.9600.17415
Отметка времени модуля с ошибкой: 545049c2
Код исключения: c0000005
Смещение исключения: 0000443c
Версия ОС: 6.3.9600.2.0.0.16.7
Код языка: 1049
Дополнительные сведения 1: 5861
Дополнительные сведения 2: 5861822e1919d7c014bbb064c64908b2
Дополнительные сведения 3: 9044
Дополнительные сведения 4: 904415419f02c4ad4d39c4867383d25a
BkEnd.dll 1.0.0.7
Профайлер выдает одинаковый последний запрос на ошибке, меняются только имена таблиц
exec sp_bcp_dbcmptlevel "sklad" SET FMTONLY ON Sel ect * fr om SC3667_NEW SET FMTONLY OFF exec "sklad"..sp_tablecollations '"sklad"..SC3667_NEW'
Потом заходил в management studio и выполнял этот запрос, выполняется без ошибок.
Подскажите, пожалуйста, куда нужно копать. Видно, что ругается на ODBCBCP.DLL., версия родная, не заменял
Все нормально, обнаружил, что ODBCBCP.DLL родной версии, sqlsvr32.dll и sqlsvr32.rll я давно уже поменял на старые, заменил на родные и все хорошо.
1c77 solution 7
пользователь public, dboowner, GRANT VIEW SERVER STATE
AUTO_UPDATE_STATISTICS_ASYNC OFF
Заходим монопольно, начинаем проводить
Через некоторое время:
924: database is already open and can only have one user at a time
Что делать?
Кто сталкивался?
Развернул данный релиз (Solution 7).
ОС win2012 64, MS-SQL 2008
Вот такая ошибка при попытке добавить реквизит в документ или справочник:
[SQl Server Native Client 10.0] odbcbcp.dll is not compatible with 'SQl Server Native Client' driver. Please configure 'SQl Server' driver for DNS or connection string
При сохранение показывает, что обработал 100 объектов и вылетает.
Сталкивались с такой ошибкой? Можете, подсказать, что можно сделать?
Нет ли возможности их перехвата и замены
например заменить этот тормоз
CREATE PROCEDURE %s(*current CHAR(%d)) AS
SET NOCOUNT ON
SET TEXTSIZE 0
DECLARE *VAL CHAR(%d)
IF EXISTS (SELECT * FROM %s(NOLOCK) WHERE ID=*current AND ISFOLDER=1 ) BEGIN
SET NOCOUNT ON
INSERT INTO %s SELECT ID,ISFOLDER FROM %s(NOLOCK) WHERE PARENTID=*current AND ID NOT IN( SELECT VAL FROM %s )
WHILE 1=1 BEGIN
SELECT *VAL=MAX(VAL) FROM %s WHERE ISFOLDER=1
IF *VAL IS NULL BREAK
INSERT INTO %s SELECT ID,ISFOLDER FROM %s(NOLOCK) WHERE PARENTID=*VAL AND ID NOT IN( SELECT VAL FROM %s )
DELETE FROM %s WHERE VAL=*VAL AND ISFOLDER=1
END
END
ELSE
IF NOT EXISTS( SELECT * FROM %s WHERE VAL=*current )
INSERT %s VALUES(*current, 2)
return (0)
ПоказатьCRE ATE PROCEDURE %s(*current CHAR(%d)) AS
SET NOCOUNT ON
SET TEXTSIZE 0
DECLARE *VAL CHAR(%d)
IF EXISTS (SEL ECT * FR OM %s(NOLOCK) WHERE ID=*current AND ISFOLDER=1 ) BEGIN
SET NOCOUNT ON
INS ERT INTO %s SEL ECT ID,ISFOLDER FR OM %s(NOLOCK) WHERE PARENTID=*current AND ID NOT IN( SEL ECT VAL FR OM %s )
WHILE 1=1 BEGIN
SEL ECT *VAL=MAX(VAL) FR OM %s WH ERE ISFOLDER=1
IF *VAL IS NULL BREAK
INS ERT IN TO %s SELECT ID,ISFOLDER FR OM %s(NOLOCK) WH ERE PARENTID=*VAL AND ID NOT IN( SELECT VAL FR OM %s )
DELETE FR OM %s WH ERE VAL=*VAL AND ISFOLDER=1
END
END
ELSE
IF NOT EXISTS( SELE CT * FR OM %s WH ERE VAL=*current )
INSERT %s VALUES(*current, 2)
return (0)
ПоказатьRESTRICTED_USER позволяет это избежать с выдачей соответствующих прав. Сейчас переводим в этот режим в глобальном модуле и спокойно проводим базу.
Иногда вылет происходит и в момент обновления конфигурации
Хорошо бы второй BkEndUtls.dll c таким режимом
Если будете что-то дорабатывать, то поглядите пож. обход этого момента в вашей DLL.
Возможно 7.7 может работать и с более поздними ODBC драйверами.
Как долго искать специалиста, который возьмется обслуживать вашу нетленку? Большинство оставшихся семерочников сидят на уникальных конфах и вряд ли имеют свободные ресурсы, чтобы взять на сопровождение чужую нетленку. Очень уж много надо ресурсов для поддержки конфигурации 7.7 на современном уровне. Взять хотя бы обмен с Честным знаком для аптеки. А интеграция с сайтами? То, что вчерашний студент сделает за пару вечеров для обмена сайта с 8.3, программист на 7.7 будет делать собственное API и уже не на языке 1С. И кто кроме него во всем этом разберется?
Работа предприятия на 7.7 - это вынужденное решение, когда стоимость перехода на 8.3 слишком велика по сравнению с получаемой выгодой. Но всё равно сделать это придется, иначе работа предприятия становится слишком зависима от программиста 7.7
Делать же новые внедрения на 7.7 - маразм и непрофессионализм. Это я как чистый семерочник говорю.
Будет ли ToySQL работать?
Год назад я делал две такие установки и проблем не было. Может кто сталкивался с такой проблемой?
Пользователи неделю набивали документы через "обновленного" клиента. Теперь выгрузка-загрузка через "обновленного" клиента в такую же базу 2008 (режим 2000) на том же движке вызывает красноту в ведомости отстатков ТМЦ. Выгрузка-загрузка через старый комплект dll - тоже не сходятся остатки. В старой базе ведомости остатков ТМЦ без красноты.
В чем может быть проблема? Неужели кривизна в исходной базе, которая выгружается? Но почему тогда при запросах к ней остатки сходятся..
Пробовал тупо считать строки в выгруженной _1sjourn и такой же загруженной - сходятся и полное число и за интервал сверки остатков ТМЦ. То же и по номенклатурной таблице. Что можно проверить на уровне SQL? В 1с я совсем не шарю.
В шапке написано про ограничения на совместимость с запросами. Какими именно? Чтобы я проверил текст хранилок.
Предупреждение в шапке о потенциальных проблемах с запросами 1c++. Т.е. те запросы, которые написали прикладные программисты. Штатные запросы ядра платформы v77.27 - ок
После перехода на новый скуль была сделана принудительная реструктуризация базы (изменить что-нибудь в метаданных, например, поставить-снять галку и применить изменения)?
Есть примеры несовместимых запросов?
НО
Если ее выгрузить на sql2019 и там же на sql2019 загрузить, то снова появляется краснота.
Что могло побиться в базе или в процессе выгрузки?
Теперь другая проблема, BkEnd0.dll у меня падает при бекапе усеченной базы (ранее я успешно выгружал ее на sql 2008). С чем может быть связано?
Faulting application name: 1cv7s.exe, version: 7.70.0.27, time stamp: 0x4573fcd8
Faulting module name: BkEnd0.DLL, version: 7.70.0.27, time stamp: 0x4573f811
Exception code: 0xc0000005
Fault offset: 0x000e236d
Faulting process id: 0x26f0
Faulting application start time: 0x01d93a3ea13e503d
Faulting application path: c:\Program Files (x86)\1Cv77\BIN\1cv7s.exe
Faulting module path: c:\Program Files (x86)\1Cv77\BIN\BkEnd0.DLL
C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_1c
...
Sig[6].Name=Exception Code
Sig[6].Value=c0000005
Sig[7].Name=Exception Offset
Sig[7].Value=000e236d
...
DynamicSig[1].Name=OS Version
DynamicSig[1].Value=10.0.17763.2.0.0.272.7
DynamicSig[2].Name=Locale ID
DynamicSig[2].Value=1049
...
OsInfo[29].Key=osver
OsInfo[29].Value=10.0.17763.3887.amd64fre.rs5_release.180914-1434
...
FriendlyEventName=Stopped working
MD5:
4ec72938654cf7f8add836984fb54ac5 *BkEnd.dll (450 560 bytes)
d0cbfc4ad4218d54cca1082adf03ad8c *BkEndUtls.dll (236 032 bytes)
После этого 1С 77 перестала запускаться с сообщением:
Точка входа в процедуру
BkEnd0.&Format@Value@@QBEPBDXZ не найдена в библиотеке DLL BkEnd.dll.
Что делать? Или деньги мои 8500 на ветер улетели???
Автору огромный респект и уважуха. Разработка работает “из коробки” до сих пор. Развернул тестовый стенд с Windows Server 2022. Был поднят отказоустойчивый кластер и в него установлена MS SQL Server 2022 (кластерный вариант установки). Так вот разработка автора взлете и работает без бубна. При чем, уровень совместимости базы данных SQL стоит на 160 (sql server 2022). Конфа 1С 7.7 это ТиС переписанный частично уже под нас. Пока нареканий не было, НО это конечно в тестовом контуре. Скоро пойдет в боевой...
К автору есть предложения по доработке. В частности, связанные с поведением в момент переключения или отвала ноды кластера. По факту программа просто сваливается в ошибку, т.к. перестает видеть на краткий момент времени сервер SQL. Вот есть предложение по доработке этого момента, да бы программа не сваливалась в ошибку, а уходила в ожидание (т.е. корректно обрабатывала отвал). Как можно связаться с вами?
Можете попробовать у себя именно рестартом службы SQL Server!? Так как в кластере по факту и происходит рестарт (т.е. остановка на одной ноде и запуск на другой)...
(961)
Ну это 100% в нашем случае займет более 90 сек. Тут тогда нужно в вашем случае замерить сколько время простоя получается.
Мне кажется что отказоустойчивые решение не проходят бешовно для конечного пользователя. В любом случае будут вылеты.
Когда остановите службу SQL - тогда уже не будет доступна база Tempdb через которую все и происходит - все запросы. Вероятность того что никто не будет работать в этот момент близка к нулю. Т.е. если будут запросы то 1С вылетит.
Та же 1С 8.3 очень даже норм работает. Если пользователь что то активно делает в базе, то для него переподключение выглядит как небольшое зависание интерфейса программы и всё потом работает штатно! Если же просто открыт и нет активных действий, то вообще не знает что оно было). Пробовал опять же всё сам.
Я так понимаю, это грамотно отрабатывает служба сервера 1С 8 отрабатывает правильно, она же в роли прокладки между пользователем и SQL Server.
В данном случае, если это возможно с 1С 7.7 дописать момент, что при SQL не сразу вылетать с ошибкой, а уходить в тайминг на круг….
в 1С точно все файлы оригинальные? не "сборка" какая-нить со встроенным патчем в bkend.dll?
и установку этого решения делали строго по инструкции? переименовали оригинальный файл + добавили файлы из этого решения?
А забыл уточнить, сервер терминалов на виртуальной машине Hyper-V
Второй вопрос - для чего именно эта OLAP отчет - я о такой никогда не слышал. Есть же решение когда формируешь прямым запросом используя OWC - там и PivotTables и там же Excel Spreadsheet.
В целом проблема была в чём, если выскакивала ошибка Access Violation на терминальном сервере, пользователь просто закрывал терминал и сессия висела, плюс ошибка множилась. А с RemoteApp пользователь вынужден закрыть это окно, даже если он просто выключить ПК, ошибка закрывается и терминальный сервер закрывает автоматически сессию через N время.
Да видимо проблема в ReportEx.dll но это брошеный проект и спросить уже некого.
Так же может кому-то пригодится эта информация, данная ошибка появляется только на виртуальных машинах.
У меня есть ещё один старый терминальный сервер на 2003 и там этой ошибки нет, но так как железо устаривает, а на новый сервак поставить 2003 это что-то из области фантастики, приходится ставить виртуалки, но как оказалось RemoteAPP очень даже не плохой выход.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 82018
Создание 07.03.11 21:25
Обновление 29.11.15 14:50
Просмотры 512225
Загрузки 1951
Рейтинг
563
Комментарии 963
Код открыт Нет
Рубрики Инструментарий разработчика
Кому Разработчик
Тип файла Компонента, плагин (dll, vbs,..)
Платформа
Оперативный учет 7.7
,
Бухгалтерский учет 7.7
,
Расчет 7.7
Конфигурация 1C77
Операционная система Windows
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)