Как программно проверить - открыт ли документ ? УПП Обработка проверяет документы "Событие" иу которых стоит пометка "На отправку" рассылает электронную почту. Но документ может быть в данный момент открыт пользователем для редактирования и получается , что электронное письмо уйдет по реквизитам и с текстом которые он псоледний раз сохранил, пометку соответственно, что письмо отправлено поставить не удастся, и в следующий обход обработкой это сообщение будет отправлено повторно. Пытался проверить через СобытиеОбъект.ПолучитьФорму().Открыта() не реагирует - всегда свободно (ЛОЖЬ) Как еще можно проверить программно открыт ли документ ? |
[quote=med;25793528]открыт пользователем для редактирования[/quote]как узнаешь, что документ открыт именно [em]для редактирования[/em]? ЗЫ. почитай про блокировки |
Форма осуществляет запись только поверх той версии объекта, из которой она открывалась. В твоем примере, насколько я понял: 1. Открывается форма версии 1. 2. Обработка читает из БД документ версии 1 3. Обработка изменяет и записывает документов. Ставится версия 2 у этого документа. 4. При попытке записать форму, система проверяет текущую версию в БД (она там будет уже за номером 2). Найдя расхождение, система ругается. 5.... 6. ПРОФИТ! |
(0) [em]пометку соответственно, что письмо отправлено поставить не удастся[/em] Пробовал? Должно быть как в (2): т.е. с точностью до наоборот - пометку поставить удастся (и письмо отправиться "по реквизитам и с текстом которые он псоледний раз сохранил"), а вот наработанное в открытой форме пользователь сохранить не сумеет |
2-Lexusss >3-roma n > Попробовал Действительно так Но это тоже нехорошо, пользователь открыл - редактирует а в это время неотредактированный экземпляр уходит... Как бы все таки программно отслеживать, что документ в данный момент открыт ? |
4-med > [quote=Uho;25793780] почитай про блокировки [/quote] |
5-Uho >[quote=Uho;25808529]Цитата: Сообщение от Uho почитай про блокировки[/quote] А чуть развернетее можете ? Потому как гугль на "блокировки в 1с 8.2" выдает совсем не те блокировки , которые мне нужны, скажите еще какое нибудь ключевое слово. |
например, ЗаблокироватьДанныеДляРедактирования() |
7-Uho > что то никак с ней не разбирусь... "ЗаблокироватьДанныеФормы:Для установки пессимистической блокировки" Написал в Основную Форму в процедуру Перед ОТкрытием КлючУникальности = Новый УникальныйИдентификатор; ЗаблокироватьДанныеДляРедактирования(ссылка,,КлючУникальности); Создаю новый документ, записываю его (не провожу) произвожу в нем после этого изменения Запускается обработка документов она спокойно в этот документ заходит правит его, проводит.... Где ж тут блокировка ? |
(4) Что за чушь? В данном применении, совершенно бредово сохранить отредактированное письмо, хотя отправлен был совершенно другой экземпляр. Опиши конкретную ситуацию, тогда и можно говорить. |
9-Lexusss > Хорошо ситуация был создан документ "Событие Отправка СМС" в него занесены , текст, контактное лицо, номер. Установилось состояние "на отправку", пользователь его записал , закрыл. И вдруг... вспомнил, что или в тексте ошибка или контактное лицо не то или еще что - ему надо поменять этот документ - открыл его меняет, ну мало ли отвлекли его на пару минут или еще что, а в это время по расписанию прошла отправка всех подготовленных СМС и СМС от этого документа тоже ушла , причем та - которая была сохранена изначально, а не эта, которую пользователь исправил, но не успел сохранить. Вот как отследить, что документ "Событие Отправка СМС" в данный момент открыт пользователем, и его пока не надо отправлять.? |
10-med > в обработке используй Попытка ЗаблокироватьДанныеДляРедактирования() Исключение КонецПопытки |
Метод Рупора Абсурда |
Лучше зайти с другой стороны, в документе "Событие Отправка СМС" сделать статус (Готов к отправке/Не готов) и возложить ответственность на пользователя по выбору статуса. Далее если произошла отправка смс, отслеживать при открытие документа и блокировать на редактирование в этом случае, если нужно корректировать после отправки - лучше обсудить с руководством как в этой ситуации быть: заново отправлять смс или. |
11-Uho >а в ЗаблокироватьДанныеДляРедактирования() вставить ссылку на проверяемый документ ? 13-Апосум > т .е. сделать еще один статус ? (сейчас уже при созаднии автоматически проставляется "На отправку" [quote=Апосум;25819828]отслеживать при открытие документа и блокировать на редактирование[/quote] Так в том то и дело, после отправки документ блокируется тут проблем нет. Проблема когда документ открыт в момент отправки. |
Вот такой код попробуй, при отправке проверка: Форма = ТвойДокумент.ПолучитьФорму(); Если Форма.Открыта() Тогда КонецЕсли; |
15-Апосум > в чьём сеансе это должно сработать? |
15-Апосум > а это не одно и тоже с [quote=med;25793528]Пытался проверить через СобытиеОбъект.ПолучитьФорму().Открыта() не реагирует - всегда свободно (ЛОЖЬ)[/quote] |
Метод Открыта() покажет только в пределах сеанса этого пользователя, а по всем пользователям не проверяет. Только что попробовал следующий способ: а)при открытие формы документа с которым работаем нужно написать Заблокировать() б)при отправки смс, Док = ДокСсылка.ПолучитьОбъект(); ФлагМожноОтправлять = Истина; Попытка Док.Заблокировать(); Исключение ФлагМожноОтправлять = Ложь; КонецПопытки; Метод Заблокирован() не отрабатывает и приходится через попытку снова вызывать метод Заблокировать(). |
18-Апосум > ваще то это все написано в СП |
(10) Проведение документа - великая вещь. Равно как и запрет на не оперативное проведение. Задумайся об этом в терминах своей задачи. |
Текущее время: 09:14. Часовой пояс GMT +3. |