0
- 03.07.2012 - 14:07
|
УПП Обработка проверяет документы "Событие" иу которых стоит пометка "На отправку" рассылает электронную почту. Но документ может быть в данный момент открыт пользователем для редактирования и получается , что электронное письмо уйдет по реквизитам и с текстом которые он псоледний раз сохранил, пометку соответственно, что письмо отправлено поставить не удастся, и в следующий обход обработкой это сообщение будет отправлено повторно. Пытался проверить через СобытиеОбъект.ПолучитьФорму().Открыта() не реагирует - всегда свободно (ЛОЖЬ) Как еще можно проверить программно открыт ли документ ? | |
1
- 03.07.2012 - 14:22
| как узнаешь, что документ открыт именно для редактирования? ЗЫ. почитай про блокировки | |
2
- 03.07.2012 - 15:00
|
Форма осуществляет запись только поверх той версии объекта, из которой она открывалась. В твоем примере, насколько я понял: 1. Открывается форма версии 1. 2. Обработка читает из БД документ версии 1 3. Обработка изменяет и записывает документов. Ставится версия 2 у этого документа. 4. При попытке записать форму, система проверяет текущую версию в БД (она там будет уже за номером 2). Найдя расхождение, система ругается. 5.... 6. ПРОФИТ! | |
3
- 03.07.2012 - 17:05
| (0) пометку соответственно, что письмо отправлено поставить не удастся Пробовал? Должно быть как в (2): т.е. с точностью до наоборот - пометку поставить удастся (и письмо отправиться "по реквизитам и с текстом которые он псоледний раз сохранил"), а вот наработанное в открытой форме пользователь сохранить не сумеет | |
4
- 04.07.2012 - 12:15
|
2-Lexusss >3-roma n > Попробовал Действительно так Но это тоже нехорошо, пользователь открыл - редактирует а в это время неотредактированный экземпляр уходит... Как бы все таки программно отслеживать, что документ в данный момент открыт ? | |
5
- 04.07.2012 - 12:17
| 4-med > | |
6
- 04.07.2012 - 12:29
|
5-Uho >А чуть развернетее можете ? Потому как гугль на "блокировки в 1с 8.2" выдает совсем не те блокировки , которые мне нужны, скажите еще какое нибудь ключевое слово. | |
7
- 04.07.2012 - 12:35
| например, ЗаблокироватьДанныеДляРедактирования() | |
8
- 04.07.2012 - 14:13
|
7-Uho > что то никак с ней не разбирусь... "ЗаблокироватьДанныеФормы:Для установки пессимистической блокировки" Написал в Основную Форму в процедуру Перед ОТкрытием КлючУникальности = Новый УникальныйИдентификатор; ЗаблокироватьДанныеДляРедактирования(ссылка,,КлючУ никальности); Создаю новый документ, записываю его (не провожу) произвожу в нем после этого изменения Запускается обработка документов она спокойно в этот документ заходит правит его, проводит.... Где ж тут блокировка ? | |
9
- 04.07.2012 - 14:20
| (4) Что за чушь? В данном применении, совершенно бредово сохранить отредактированное письмо, хотя отправлен был совершенно другой экземпляр. Опиши конкретную ситуацию, тогда и можно говорить. | |
10
- 04.07.2012 - 14:44
|
9-Lexusss > Хорошо ситуация был создан документ "Событие Отправка СМС" в него занесены , текст, контактное лицо, номер. Установилось состояние "на отправку", пользователь его записал , закрыл. И вдруг... вспомнил, что или в тексте ошибка или контактное лицо не то или еще что - ему надо поменять этот документ - открыл его меняет, ну мало ли отвлекли его на пару минут или еще что, а в это время по расписанию прошла отправка всех подготовленных СМС и СМС от этого документа тоже ушла , причем та - которая была сохранена изначально, а не эта, которую пользователь исправил, но не успел сохранить. Вот как отследить, что документ "Событие Отправка СМС" в данный момент открыт пользователем, и его пока не надо отправлять.? | |
11
- 04.07.2012 - 14:53
|
10-med > в обработке используй Попытка ЗаблокироватьДанныеДляРедактирования() Исключение КонецПопытки | |
12
- 04.07.2012 - 23:36
| Метод Рупора Абсурда | |
13
- 05.07.2012 - 06:36
| Лучше зайти с другой стороны, в документе "Событие Отправка СМС" сделать статус (Готов к отправке/Не готов) и возложить ответственность на пользователя по выбору статуса. Далее если произошла отправка смс, отслеживать при открытие документа и блокировать на редактирование в этом случае, если нужно корректировать после отправки - лучше обсудить с руководством как в этой ситуации быть: заново отправлять смс или. | |
14
- 05.07.2012 - 07:09
|
11-Uho >а в ЗаблокироватьДанныеДляРедактирования() вставить ссылку на проверяемый документ ? 13-Апосум > т .е. сделать еще один статус ? (сейчас уже при созаднии автоматически проставляется "На отправку" Так в том то и дело, после отправки документ блокируется тут проблем нет. Проблема когда документ открыт в момент отправки. | |
15
- 05.07.2012 - 07:33
|
Вот такой код попробуй, при отправке проверка: Форма = ТвойДокумент.ПолучитьФорму(); Если Форма.Открыта() Тогда КонецЕсли; | |
16
- 05.07.2012 - 07:39
| 15-Апосум > в чьём сеансе это должно сработать? | |
17
- 05.07.2012 - 08:05
|
15-Апосум > а это не одно и тоже с | |
18
- 05.07.2012 - 08:48
|
Метод Открыта() покажет только в пределах сеанса этого пользователя, а по всем пользователям не проверяет. Только что попробовал следующий способ: а)при открытие формы документа с которым работаем нужно написать Заблокировать() б)при отправки смс, Док = ДокСсылка.ПолучитьОбъект(); ФлагМожноОтправлять = Истина; Попытка Док.Заблокировать(); Исключение ФлагМожноОтправлять = Ложь; КонецПопытки; Метод Заблокирован() не отрабатывает и приходится через попытку снова вызывать метод Заблокировать(). | |
19
- 05.07.2012 - 10:07
| 18-Апосум > ваще то это все написано в СП | |
20
- 05.07.2012 - 10:11
| (10) Проведение документа - великая вещь. Равно как и запрет на не оперативное проведение. Задумайся об этом в терминах своей задачи. | |
| Интернет-форум Краснодарского края и Краснодара |