7.7 Как программно узнать кто из пользователей сейчас открыл документ?

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем Asttoxa, 15 сен 2010.

  1. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Хорошо давайте...
    Вот собственно первый вопрос :)

    Как узнать в документе, кто в данный момент из пользователей, использует для редактирования текущий документ? Например в процедуре ПриОткрытии()
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Только прикручиванием костылей в виде доп справочника, который регистрирует открытие документов и кто открыл, в момент закрытия документа запись из справочника удалять.

    ЗЫ Процедура ПриОтркрытии не сработает, если в документе "сидит" другой пользователь.
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Есть ВК которая это делает
  4. scrat.08
    Offline

    scrat.08

    Регистрация:
    10 сен 2010
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    А журнал регистрации не помогает?
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Хм... А вы пробовали работать из 1с с журналом регистрации?
  6. scrat.08
    Offline

    scrat.08

    Регистрация:
    10 сен 2010
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    http://www.kb.mista.ru/article.php?id=311

    начать с последней строки файла и порверять на объект , если совпадает, то выдавать имя пользователя
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    С текстом согласен, но до кокого момента проверять? Весь файл MLG?
  8. scrat.08
    Offline

    scrat.08

    Регистрация:
    10 сен 2010
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    если с последней строки журнала регистрации идти в обратном направлении, то в первой попавшейся строке по объекту будет имя пользователя, который последним чтолибо делал с этим доком, т.е. который открыл его в текущий момент. Не думаю, что система фиксирует неудачные попытки открытия документов. Хотя сча посмотрю ради интереса.
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    метод конечно хитрый, но возможны варианты:
    1. Документ открыли вчера, журнал регистрации разбивается по дням.
    2. Документ открыт вчера, журнал начали вести сегодня.
    3. Журнал не ведется вообще.
    .....ещё пара-тройка бредовых вариантов :)
  10. scrat.08
    Offline

    scrat.08

    Регистрация:
    10 сен 2010
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    1.Если не ведется, журнал регистрации можно включить. Ведь нам не нужны данные прошлого периода, нужна инфа онлайн.
    2. Не понимаю, зачем вообще отключать журнал регистрации, юзеры часто валят друга на друга ошибки, и для разбора полетов журнал очень даже полезен.
    3. А если прикрутить доп справочник, то при вылете базы данных процедуры закрытия не будет, хотя впринципе в этом случае и документ занят не будет, и проверка не нужна будет. Тогда уж лучше завести константу, в которую будет писаться имя любого, кто умудрился открыть документ. И если док не открывается, то считывать эту константу.
  11. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Правильный ответ тут: http://www.1c-pro.ru/index.php?s=&show...st&p=111149
    Журнал регистраций - это бред..
    Справочник с реквизитом ВидДокумента, Пользователь. В наименование номера дока, можно даже время ввести.. Открыл создал документ, закрыл - удалил без пометки. Можно навесить фильтры какие-нибудь по видам документов, например. Или выброс из документа прикрутить..

    Одну константу под любого пользователя и под кучу одновременно открытых документов?) Константа - это постоянный или редко изменяемый объект по сути..
    При начале работы системы проверка на документы пользователя справочнике и удаление.
  12. scrat.08
    Offline

    scrat.08

    Регистрация:
    10 сен 2010
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Нет, константа подразумевалась если проверять один из документов :) Тут согласна , справочник удобнее, только не на закрытии удалять запись, а на переписываение записи каждый раз при открытии документа, потому что некорректное завершение может быть в любой момент.
  13. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Альтернативный вариант, если еще подумать - на форме документа вставить тектовое поле в котором выводится имя последнего пользователя открывшего док. При открытии документа соответсвенно сразу Записать(). Ну, а ты прочитать это сможешь в режиме просмотра.

    Справочник будет пухнуть. А то что будет висеть лишний элемент при аварийном завершении - это не страшно, т.к. никто искать док с этим номером не будет ибо он будет открываться.
  14. scrat.08
    Offline

    scrat.08

    Регистрация:
    10 сен 2010
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    на каждую формочку каждого документа? и при обновлениях релиза тех документов, которые еще не правили до этого, каждый раз проверять, изменилось ли на форме что-нибудь или нет вручную. Вообще все же склоняюсь к мысли, что правильнее анализировать журнал регистрации, и не рисовать никаких лишних данных. прочитал строку - выдал сообщение


    Можно я чуть отступлю от темы и проконсультируюсь. Часто нужно выгнать юзеров из базы, я лично отсылаю сообщения активным юзерам нетсендами. Хочу сделать обработку, которая сделает это за меня, нашла в инете вот что:
    http://softsearch.ru/programs/110-818-bibl...-download.shtml

    Я могу использовать эти библиотеки? или при проверке программного обеспечения соответсвующими органами будет выявленно нарушение? вроде как тут лицензий никаких нет.
  15. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Ну хорошо справочник так справочник. Но что делать если всетаки аварийно закрыли? Запись то останется. Как проверить занят документ или нет.

    А по поводу того что не сработает ПриОткрытии() если в доке сидит пользователь, я хочу проверять не этот документ а подчиненный!
  16. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Есть такой метод "Блокировка"

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

    Ну а какой документ проверять - это уже ваша фантазия, как напишете, так и будет работать
  17. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    ну, дело вкуса, конечно если конфа на поддержке то смысла нет. Посмотрел сейчас, у меня журнал регистрации весит больше 60 мб, надо порезать наверн..)

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

    Код:
    я хочу проверять <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/не')">не этот документ а подчиненный!</span>
    
    
    странное желание, если говорить о справочнике - в нем будут отмечаться все открытые. Если, кстати, вернуться к теме обновления конфы - то модуль документов всегда нужно будет править, с этой точки зрения отдельная обработка с чтением журнала регистрации выглядит предпочтительнее. Но как указал выше Бухгалтерский угодник существует решение в виде внешнней компоненты, пробуй копать в этом направлении

    Upd. О'кей пусть будет общий реквизит документов ПоследнийОткрыватель и внешняя обработка в которой ты будешь выбирать тип и номер дока. Можно учесть в коде просмотр реквизита подчиненного дока
  18. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Я не сталкивался с таким методом.
    Тоесть если сделать Блокировка(1) и аварийно выйти то у этого документа Блокировка перейдет в 0??
  19. scrat.08
    Offline

    scrat.08

    Регистрация:
    10 сен 2010
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    спасибо за ответ.

    а вообще можно узнать проблему полностью, для чего узнавать кто блокировал? суть проблемы..
  20. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Суть вот в чем ... в базе существуют основной документ (О), который создает подчиненный ему другой документ (П).
    Документ (О) создают и пользуются сотрудники отдела (1) ... Соответственно (О) создает документ (П).... А вот документом (П) пользуются сотрудники в отделе (2) .... И отдел (1) и (2) расположены очень далеко друг от друга... И проблема возникает тогда когда Сотрудники отдела (1) открывают документ (О) и начинают его править в то время как сотрудники отдела (2) открывают документ (П) и так же начинают его править! Ух как завернул :) Пользоваться Попытка ... Исключение... не могу т.к. сотрудники могут долго ждать с открытым документом пока на другом компе его закроют ... и поэтому хотелось бы знать ДО (!) открытия документов, что они используются а не после того как были внесены изменения.

    Ну а узнать кто блокировал ... как второстепенная задача ... чтобы знать кого пинать чтобы закрыли! :)

Поделиться этой страницей