Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Запрет входа в базу под одним и тем же пользователем на ПК (1С 7.7, конф. не типовая)

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №1
 
20.09.2010 16:53

"По сабжу: надо разрешить входить в базу под одним и тем же пользователем (ОбщийДоступ) с разных ПК, но пресечь попытку входа в базу на одном и том же ПК под одним и тем же пользователем.<br>Проще:<br>можно<br>ПК №1 пользователь ОбщийДоступ<br>ПК №2 пользователь ОбщийДоступ<br>ПК №3 пользователь ОбщийДоступ<br>нельзя<br>ПК №1 пользователь ОбщийДоступ<br>ПК №1 пользователь ОбщийДоступ<br>Вот, что когда-то пытался сделать:<br>при старте системы<br><br> ФС.УстТекКаталог("C:\");<br> Если КаталогПользователя()=КаталогИБ() Тогда<br> ИмяЛокФайла="c:\"+ПолучитьИД(Пользователь)+".dbf";<br> ЛокФайл=СоздатьОбъект("XBase");<br> Если ФС.СуществуетФайл(ИмяЛокФайла)=0 Тогда<br> ЛокФайл.КодоваяСтраница(0);<br> ЛокФайл.ДобавитьПоле("ndx","Число",3,1);<br> ЛокФайл.СоздатьФайл(ИмяЛокФайла,"c:\ndx.cdx");<br> Иначе<br> Если ЛокФайл.Открыта()=0 Тогда<br> ЛокФайл.ОткрытьФайл(ИмяЛокФайла,"c:\ndx.cdx",0);<br> КонецЕсли;<br> КонецЕсли;<br> <br> Код=ЛокФайл.КодОшибки();<br> Если Код<>0 Тогда<br> Предупреждение("На данном компьютере вход в 1С под пользователем"+РазделительСтрок+СокрЛП(Пользователь)+" уже осущетвлен!");<br> ЗавершитьРаботуСистемы(0);<br> КонецЕсли;<br> КонецЕсли;<br>при выходе<br><br> Если КаталогПользователя()=КаталогИБ() Тогда<br> ЛокФайл.ЗакрытьФайл();<br> ФС.УдалитьФайл(ИмяЛокФайла);<br> КонецЕсли;<br><br><br>ЛокФайл и ИмяЛокФайла - глобальные переменные<br><br>Загвоздка, если из базы вылетели и не зарыли файл и не удалили потом при старте он не открывается (код ошибки 70) хотя не блокируется и свободно может быть удален.<br><br>Как победить? "

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №2
 
20.09.2010 17:51

В SYSLOG\links.tmp система пишет регистрации сессий 1С, по которым строится "монитор пользователей". Данные в файле обновляются с какой то паузой, но не сильно значительной, которая была бы существенна в данном случае. Файл для чтения открыт. Я бы попробовал разобрать его структуру, а, судя по всему, она несложная, и от него оттолкнуться в решении задачи

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №3
 
20.09.2010 18:24

> В SYSLOG\links.tmp система пишет регистрации сессий 1С, по которым строится "монитор пользователей". Данные в файле обновляются с какой то паузой, но не сильно значительной, которая была бы существенна в данном случае. Файл для чтения открыт. Я бы попробовал разобрать его структуру, а, судя по всему, она несложная, и от него оттолкнуться в решении задачи<br>inks.tmp разобрать то можно, но тут опять попадаем на грабли с вылетами пользователей из 1С и соответственно с сессиями висюками, можно по искать, что и где там лочить нужно, что-бы отличить висюка от нормальной сессии, но это уже не средствами 1С. Потому и пытался на XBase через монопольный доступ к файлу-маячку сделать...

Вьюн
читатель
офлайн
Дата регистрации: 14.01.2007
Сообщений: 657
Пост №4
 
20.09.2010 18:53

А если сразу при входе, если файл существует, попытаться удалить этот файл. Если не удалился, то занят, а иначе создаем этот файл заново и заходим.<br>

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №5
 
21.09.2010 10:25

> А если сразу при входе, если файл существует, попытаться удалить этот файл. Если не удалился, то занят, а иначе создаем этот файл заново и заходим.<br>Да вот я то-же подумываю скатиться к данному способу, не так элегантно как с блокировкой файла средствами XBase и попытка его открыть.<br>Жаль метод ФС.УдалитьФайл(... не возвращает значения как прошла операция...

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №6
 
21.09.2010 10:31

"Все, победил... не надо было заморачиваться с индексом<br>> ЛокФайл.ДобавитьПоле("ndx","Число",3,1);<br>убрано<br><br>> ЛокФайл.СоздатьФайл(ИмяЛокФайла,"c:\ndx.cdx");<br>исправлено на<br>> ЛокФайл.СоздатьФайл(ИмяЛокФайла,);<br><br>> ЛокФайл.ОткрытьФайл(ИмяЛокФайла,"c:\ndx.cdx",0);<br>исправлен на <br>> ЛокФайл.ОткрытьФайл(ИмяЛокФайла,,0);<br><br>Думаю может еще и проверку ЛокФайл.Открыта()=0 убрать?<br><br>Таак...<br>> ЛокФайл.ДобавитьПоле("ndx","Число",3,1);<br>пришлось вернуть обратно"

Вьюн
читатель
офлайн
Дата регистрации: 14.01.2007
Сообщений: 657
Пост №7
 
21.09.2010 12:47

А после ФС.УдалитьФайл() проверить файл на существование?

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №8
 
21.09.2010 13:36

"> А после ФС.УдалитьФайл() проверить файл на существование?<br>А как еще по другому? ;)"

Вьюн
читатель
офлайн
Дата регистрации: 14.01.2007
Сообщений: 657
Пост №9
 
21.09.2010 13:50

> Жаль метод ФС.УдалитьФайл(... не возвращает значения как прошла операция...<br>Значит так и проверять, как прошло удаление.

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №10
 
21.09.2010 14:13

> Значит так и проверять, как прошло удаление.<br>Ну а куда же при данном способе деться, но про УдалитьФайл все равно жаль, так было бы быстрее и проще...

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация