Имя: Пароль:
1C
 
Как скинуть пользователя с 1С-сервера?
0 nik_k
 
21.09.04
00:07
При аварийном выходе из 1С 8.0 на сервере 1С остается висеть соединение с захватом объектов, которые были открыты на момент вылета. При повторном подключении юзера он не может открыть документы, которые только что редактировал! Требутся вмешательство администратора, чтобы через утилиту Серверы 1С отсоединить пользователя. 1С говорит, что через 6-8минут зависшие соединения удаляются автоматически. Однако у нас висят по нескольку часов. Ерунда получается. Надо выделять человека, который будет скидывать зависших пользователей. В системе работает около 20 пользователей в реальном режиме времени и ждать никто не намерен. Какой может быть выход? Проблема стоит очень остро, вплоть до сворачивания проекта!
1 Волшебник
 
21.09.04
00:07
Почему происходит аварийный выход 8.0? В чем причина? Может лечить надо здесь?
2 nik_k
 
21.09.04
00:21
Трудно сказать. Явной причины не обнаруживается. Возможно сказывается недостаток опыта программирования в 8.0. С сетью были проблемы, вызывали спецов - все летает. Интересно, что иногда при отключении одного пользователя на сервере 1с - слетают все! На сервере крутится 2 базы. Иногда при возникновении ошибки на одной базе (отладочной) - ложится сервер, автоматом - оключаются все пользователи в рабочей базе.
3 nik_k
 
21.09.04
00:25
Оптимизируем модули проведения документов по времени выполнения. Стараемся исключить взаимные блокировки иногда возникающие при создании, записи и проведении одних документов из других!
4 Волшебник
 
21.09.04
00:42
Какой релиз платформы? Какая конфигурация? Если типовая, сколько было доработок? Какая конфигурация сервера, сети и рабочих станций?
5 Волшебник
 
21.09.04
00:51
Что показывает журнал регистрации 1С и лог SQL Server? Есть какие-то ошибки? Может SQL сваливается в deadlock или табличные блокировки?

Что показывает замер производительности? На что уходит больше всего времени? Какие действия в основном делают пользователи?
6 Волшебник
 
21.09.04
00:58
Восьмерка может вылетать, если теряет связь с ключом защиты или сервером лицензий. Какие ключи стоят - локальные или многопользовательский? Может периодически отваливается сеть?
7 Волшебник
 
21.09.04
12:46
Будут ответы хотя бы на один вопрос? Или проблема уже не актуальна?
8 Морская свинка
 
21.09.04
16:36
SET QUOTED_IDENTIFIER  OFF    SET ANSI_NULLS  ON
GO

/****** Object:  Stored Procedure dbo._sp_FreeDB    Script Date: 25.12.00 17:42:14 ******/
if exists (select * from sysobjects where id = object_id(N'[dbo].[_sp_FreeDB]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[_sp_FreeDB]
GO

CREATE PROCEDURE _sp_FreeDB
   @Name sysname=NULL,
   @Dir1C varchar(128)=NULL
AS

if (@Name is NULL)
   print('_sp_FreeDB
       @Name sysname,
       @Dir1C varchar(128)=NULL')

declare    @spid int,
   @host varchar(20),
   @user varchar(20),
   @app varchar(20),
   @cmd varchar(128),
   @strdata varchar(100)
   
declare Cur_Proc cursor local fast_forward for
       Select SPID,HOSTNAME,LOGINAME,PROGRAM_NAME from master.dbo.sysprocesses where upper(db_name(dbid))=upper(@Name)
   
open Cur_Proc
fetch from Cur_Proc into @spid,@host,@user,@app
while @@FETCH_STATUS=0
begin
   Select @cmd='kill '+rtrim(convert(varchar(5),@spid))
   Select @strdata='kill '+ltrim(str(@spid))+' '+rtrim(@host)+' '+rtrim(@user)+' '+rtrim(@app)
   print @strdata
   execute (@cmd)
   fetch from Cur_Proc into @spid ,@host,@user,@app
end
close Cur_Proc
deallocate Cur_Proc

if (@Dir1C is not NULL)
begin
   exec master.dbo.xp_cmdshell 'net session /delete /y'
   Select @cmd='del '+@Dir1C+'\*.lck'
   exec master.dbo.xp_cmdshell @cmd
   Select @cmd='del '+@Dir1C+'\*.$lk'
   exec master.dbo.xp_cmdshell @cmd
   Select @cmd='del '+@Dir1C+'\*.$ui'
   exec master.dbo.xp_cmdshell @cmd
end

return





















GO

SET QUOTED_IDENTIFIER  OFF    SET ANSI_NULLS  ON
GO
9 nik_k
 
23.09.04
01:50
Извиняюсь за молчание. Все время у клиента. Доступ в Интернет только с домашнего компьютера.
1С версия 8.0.7.36, ключ многопользовательский на 50 мест, конфигурация разрабатывалась практически с нуля. Сервера 1С и SQL разнесены на разные компьютеры. По ошибкам статистику не вели, но были разные, в основном связанные с блокировками.
Попутно возник вопрос: можно ли выполнить замер производительности на сервере, когда работает много пользователей или производительность может измеряться только для той конфигурации, в которой запущена?
Пользователи активно создают "заявки клиентов", затем их группируют в документы "загрузочные ведомости" по машинам и формируют "накладные".
Причем хотят видеть есть по заявке ТТН или нет, проведена она или нет и т.п.
Плюс к этому добавили регистр сведений в который пишем какие действия с документами выполняет пользователь (запись, проведение, создание и т.д.). Часто при записи регистра возникали ошибки. Может что-то не так в функции?

Функция глЗафиксироватьАвтораИзменения(прСсылка,прДействие) Экспорт
   //блокируем записи регистра
   лкПериод = ТекущаяДата();
   Запрос = Новый Запрос("ВЫБРАТЬ                          |    ИзмененияДокументовСрезПоследних.Документ                  |ИЗ
     |    РегистрСведений.ИзмененияДокументов.СрезПоследних(&Период, Документ = &Документ) КАК ИзмененияДокументовСрезПоследних
     |ДЛЯ ИЗМЕНЕНИЯ
     |    РегистрСведений.ИзмененияДокументов.СрезПоследних");

   Запрос.УстановитьПараметр("Период",  лкПериод);                
   Запрос.УстановитьПараметр("Документ",прСсылка);                      
   Результат = Запрос.Выполнить();
   
   Попытка
   МенеджерЗаписи = РегистрыСведений.ИзмененияДокументов.СоздатьМенеджерЗаписи();
   МенеджерЗаписи.Период   = лкПериод;
   МенеджерЗаписи.Документ = прСсылка;
   МенеджерЗаписи.Действие = прДействие;
   МенеджерЗаписи.Автор    = глПользователь;
   МенеджерЗаписи.Записать();
Исключение
   Сообщить("Не удалось записать автора документа: " + ОписаниеОшибки(), СтатусСообщения.Важное);
   Возврат(Ложь);
КонецПопытки;
Возврат(Истина);
КонецФункции // глЗафиксироватьАвтораИзменения(прОбъект)
10 nik_k
 
23.09.04
01:58
Спасибо Морская свинка! Только непонятно, где запускать эту процедуру.
11 F427
 
23.09.04
06:39
(10) мда...
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.