К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Как программно проверить - открыт ли документ ?

med
0 - 03.07.2012 - 14:07
УПП
Обработка проверяет документы "Событие" иу которых стоит пометка "На отправку" рассылает электронную почту.
Но документ может быть в данный момент открыт пользователем для редактирования и получается , что электронное письмо уйдет по реквизитам и с текстом которые он псоледний раз сохранил, пометку соответственно, что письмо отправлено поставить не удастся, и в следующий обход обработкой это сообщение будет отправлено повторно.
Пытался проверить
через
СобытиеОбъект.ПолучитьФорму().Открыта()
не реагирует - всегда свободно (ЛОЖЬ)
Как еще можно проверить программно открыт ли документ ?



Uho
1 - 03.07.2012 - 14:22
Цитата:
Сообщение от med Посмотреть сообщение
открыт пользователем для редактирования
как узнаешь, что документ открыт именно для редактирования?

ЗЫ. почитай про блокировки
Гость
2 - 03.07.2012 - 15:00
Форма осуществляет запись только поверх той версии объекта, из которой она открывалась. В твоем примере, насколько я понял:
1. Открывается форма версии 1.
2. Обработка читает из БД документ версии 1
3. Обработка изменяет и записывает документов. Ставится версия 2 у этого документа.
4. При попытке записать форму, система проверяет текущую версию в БД (она там будет уже за номером 2). Найдя расхождение, система ругается.
5....
6. ПРОФИТ!
Гость
3 - 03.07.2012 - 17:05
(0) пометку соответственно, что письмо отправлено поставить не удастся Пробовал? Должно быть как в (2): т.е. с точностью до наоборот - пометку поставить удастся (и письмо отправиться "по реквизитам и с текстом которые он псоледний раз сохранил"), а вот наработанное в открытой форме пользователь сохранить не сумеет
med
4 - 04.07.2012 - 12:15
2-Lexusss >3-roma n >
Попробовал
Действительно так
Но это тоже нехорошо, пользователь открыл - редактирует
а в это время неотредактированный экземпляр уходит...
Как бы все таки программно отслеживать, что документ в данный момент открыт ?
Uho
5 - 04.07.2012 - 12:17
4-med >
Цитата:
Сообщение от Uho Посмотреть сообщение
почитай про блокировки
med
6 - 04.07.2012 - 12:29
5-Uho >
Цитата:
Сообщение от Uho Посмотреть сообщение
Цитата: Сообщение от Uho почитай про блокировки
А чуть развернетее можете ?
Потому как гугль на "блокировки в 1с 8.2" выдает совсем не те блокировки , которые мне нужны, скажите еще какое нибудь ключевое слово.
Uho
7 - 04.07.2012 - 12:35
например, ЗаблокироватьДанныеДляРедактирования()
med
8 - 04.07.2012 - 14:13
7-Uho > что то никак с ней не разбирусь...
"ЗаблокироватьДанныеФормы:Для установки пессимистической блокировки"
Написал в Основную Форму
в процедуру Перед ОТкрытием
КлючУникальности = Новый УникальныйИдентификатор;
ЗаблокироватьДанныеДляРедактирования(ссылка,,КлючУ никальности);

Создаю новый документ, записываю его (не провожу) произвожу в нем после этого изменения

Запускается обработка документов она спокойно в этот документ заходит правит его, проводит....
Где ж тут блокировка ?
Гость
9 - 04.07.2012 - 14:20
(4) Что за чушь? В данном применении, совершенно бредово сохранить отредактированное письмо, хотя отправлен был совершенно другой экземпляр. Опиши конкретную ситуацию, тогда и можно говорить.
med
10 - 04.07.2012 - 14:44
9-Lexusss > Хорошо ситуация
был создан документ "Событие Отправка СМС" в него занесены , текст, контактное лицо, номер. Установилось состояние "на отправку", пользователь его записал , закрыл.
И вдруг... вспомнил, что или в тексте ошибка или контактное лицо не то или еще что - ему надо поменять этот документ - открыл его меняет, ну мало ли отвлекли его на пару минут или еще что, а в это время по расписанию прошла отправка всех подготовленных СМС и СМС от этого документа тоже ушла , причем та - которая была сохранена изначально, а не эта, которую пользователь исправил, но не успел сохранить.
Вот как отследить, что документ "Событие Отправка СМС" в данный момент открыт пользователем, и его пока не надо отправлять.?
Uho
11 - 04.07.2012 - 14:53
10-med > в обработке используй

Попытка
ЗаблокироватьДанныеДляРедактирования()
Исключение

КонецПопытки
Гость
12 - 04.07.2012 - 23:36
Метод Рупора Абсурда
Гость
13 - 05.07.2012 - 06:36
Лучше зайти с другой стороны, в документе "Событие Отправка СМС" сделать статус (Готов к отправке/Не готов) и возложить ответственность на пользователя по выбору статуса. Далее если произошла отправка смс, отслеживать при открытие документа и блокировать на редактирование в этом случае, если нужно корректировать после отправки - лучше обсудить с руководством как в этой ситуации быть: заново отправлять смс или.
med
14 - 05.07.2012 - 07:09
11-Uho >а в ЗаблокироватьДанныеДляРедактирования()
вставить ссылку на проверяемый документ ?
13-Апосум > т .е. сделать еще один статус ? (сейчас уже при созаднии автоматически проставляется "На отправку"
Цитата:
Сообщение от Апосум Посмотреть сообщение
отслеживать при открытие документа и блокировать на редактирование
Так в том то и дело, после отправки документ блокируется тут проблем нет.
Проблема когда документ открыт в момент отправки.
Гость
15 - 05.07.2012 - 07:33
Вот такой код попробуй, при отправке проверка:
Форма = ТвойДокумент.ПолучитьФорму();
Если Форма.Открыта() Тогда

КонецЕсли;
Гость
16 - 05.07.2012 - 07:39
15-Апосум > в чьём сеансе это должно сработать?
med
17 - 05.07.2012 - 08:05
15-Апосум >
а это не одно и тоже с
Цитата:
Сообщение от med Посмотреть сообщение
Пытался проверить через СобытиеОбъект.ПолучитьФорму().Открыта() не реагирует - всегда свободно (ЛОЖЬ)
Гость
18 - 05.07.2012 - 08:48
Метод Открыта() покажет только в пределах сеанса этого пользователя, а по всем пользователям не проверяет.
Только что попробовал следующий способ:
а)при открытие формы документа с которым работаем нужно написать Заблокировать()
б)при отправки смс,
Док = ДокСсылка.ПолучитьОбъект();
ФлагМожноОтправлять = Истина;
Попытка
Док.Заблокировать();
Исключение
ФлагМожноОтправлять = Ложь;
КонецПопытки;

Метод Заблокирован() не отрабатывает и приходится через попытку снова вызывать метод Заблокировать().
Uho
19 - 05.07.2012 - 10:07
18-Апосум > ваще то это все написано в СП
Гость
20 - 05.07.2012 - 10:11
(10) Проведение документа - великая вещь. Равно как и запрет на не оперативное проведение. Задумайся об этом в терминах своей задачи.


К списку вопросов






Copyright ©, Все права защищены