8.х Блокировка открытия элемента справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем andrenko, 23 мар 2009.

  1. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Есть вот такая фигня:
    Програмно, по событию, открывается элемент справочника, а как определить что он уже кемто открыт?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Заблокировать()
    Заблокирована()
  3. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    а не работает:(

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

    вот код...

    Пока выборка.Следующий() Цикл
    выборкасправочника = выборка.ПолучитьОбъект();
    если выборкасправочника.Заблокирован() = ложь тогда
    ОткрытьЗначение(выборкасправочника);
    выборкасправочника.Заблокировать();
    КонецЕсли;
    КонецЦикла;
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Открыт кем-то - это значит, что открыта форма.
    А вы проверяете ОБЪЕКТ.
    Уточните смысл задачи - для чего?
  5. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Это напоминалка. Справочник.
    Периодически отбирает все непрочитанные и если дата меньше текущей, то открывает. проврку на пользователя не ставил дабы не загружать код.
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Смотри типовые и не стоит изобретать велосипед, который едет на квадратных колесах.
  7. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Для напоминалки лучше использовать объект "Задача".
  8. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    при чем тут типовая?
    Стоит задача - ее нужно решить. Если ты не знаешь как - не флуди.

    а каков принцип ее работы?
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Типовая тут при том, что там давно все сделано. Тебе ткнуть пальцем или сам откроешь конфу и увидишь, что пытаешься велосипед изобрести?
  10. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    я задал вопрос о том каким образом заблокировать открытый элемент справочника. При чем тут типовая конфа? Я ее вообще не использую и использовать не собираюсь т.к. она на 95 % не соответсвует моим бизнес-процессам. Ни какая из типовых конф.

    тем более что напоминалки работают, но алгоритм кривоват из-за непоняток с блокировками. Кода всего на 10 строк:) + 1 справочник и все летает как по одному пользователю так и от пользователя к пользователю. Я все сделал за 30-40 минут, - а с напоминалками (чужим кодом) буду разбираться больше часа.
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    При том, что задача решается ДРУГИМ способом.
    Вы же пытаетесь вырезать гланды через зад.
  12. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    Маленький ньанс - я к глндам не обращаюсь:) см. сообщение выше - я его добавил
  13. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Ладно, убедил. Не трать свое драгоценное время, создай экспортную переменную в модуле приложения (например, глСписокОткрытыхЭлементовСправочника), в которой храни открытые элементы, перед открытием проверяй, не открыт ли уже этот элемент. Если открыт - давай отказ, если нет - добавляй в список.
  14. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    я иначе сделал - создал переменную в самом справочнике. При открытии проверяю на истину/ложь если если Ложь то получаю, даю Истина сохраняю и открываю, при закрытии даю Ложь и сохраняю.

    новозник вопрос по ходу - обсуждаю в соседней ветке - а если база упала и элемент не пересохранился? Следовательно нужно смотреть дату открытия и периодически пытаться истину менять на ложь (допустим если дата открытия больше часа или двух). Правда возникает вопрос как узгать открыт ли сейчас элемент справочника и кто сейчас использует базу (заодно ограничить бездействие пользователя).
  15. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Пипец. Для решения этой проблемы используй ГЛОБАЛЬНУЮ ПЕРЕМЕННУЮ В МОДУЛЕ ПРИЛОЖЕНИЯ. В ней всё храни
  16. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    а какая разница где хранить?
  17. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Мда..... Проще было за час перетащить из типовой функционал, который отлажен и работает четко
  18. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    а каков там алгоритм?
  19. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Посмотри в метаданных объект ЗАДАЧА
  20. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    т.е. ты ответа не знаешь?

    Ладно, вернемся к топику - как програмно определить - открыт элемент справочника или нет?

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