Определить первое проведение документа после опр. интерактивного действия с док. #653286


#0 by Пип Пибип
Есть документ. Пользователь выполняет какое-либо интерактивное действие с документом - в форме документа нажимает определенную новую кнопку (не Ок и не Записать). Предварительно, документ может быть проведен/проведен и снят с проведения/не проведен, только записан/даже не записан (что угодно, короче). После этого, пользоваетель может форму документа закрыть, открыть, в документе нажать Записать, 1С закрыть, 1C открыть, etc. Стоит задача: при первом проведении (первом после того интерактивного действия пользователя, на форме), в обработчике ОбработкаПроведения точно узнать, что это собственно, первое проведение, после того действия пользователя Как это узнать лучше всего? Через новый дополнительный реквизит документа? На тему нашел только это: Формы неуправляемые, 1С 8.2.хх
#1 by skunk
сосбтвенно а зачем в проведении надо знать, что оно именно первое?
#2 by Wobland
документу должно быть на это накласть
#3 by Пип Пибип
, - необходимо отправить присьмо после этого действия пользователя. Письмо необходимо отправить только один раз, при первом после того действия пользовователя проведении документа. Действие пользователя (нажатие на кнопку) необратимое (для пользователя). Т.е., кнопку эту он не нажмет ни разу, либо нажмет только один раз
#4 by Irbis
Ищи другое событие, проведение здесь ни причем.
#5 by Пип Пибип
Задача так стоит Какие есть варианты технически это реализовать? Не хочется делать что-либо вроде регистра, в котором хранить - "Отправлять письмо по такому документу, или нет"
#6 by Byasha
Там где нашел - там же и ответ. Используй дополнительные свойства объекта. При первом проведении в структуру добавь ключ "ЭТО_Первое_Проведение". При проведении анализируй значение этого ключа. Структура существует пока существует объект. Правда в свете "Действие пользователя (нажатие на кнопку) необратимое (для пользователя). Т.е., кнопку эту он не нажмет ни разу, либо нажмет только один раз" не понятно зачем тебе знать какое по счету проведение выполняется, если пользователь его может только 1 раз запустить?
#7 by GANR
>При первом проведении в структуру добавь ключ "ЭТО_Первое_Проведение" как убедиться, что оно именно первое (ЭтоНовый не вариант, так как документ мог быть сначала записан)
#8 by GANR
Наверное, либо регистр ПроведенныеДокументы (без регситратора) с подпиской на событие, либо реквизит. Хотя... может как-то можно почтовый ящик проверять - было письмо отправлено или нет? Кидаешь в письмо GUID документа и, если письмо с таким GUIDом находится - не шлешь.
#9 by Byasha
Тебе нужно вообще самое первое в истории документа проведение отловить? Или в только первое после интерактивного изменения в форме?
#10 by skunk
в модуле документа ... процедура при записи ... проверяешь новый или нет и устанавливаешь флаг в глобальной переменной модуля документа ...  в обработке проведения смотришь ... ну это сработает ... только если документ был действительно новый ... то есть пользователь создал и сразу-же провел ... а так только через реквизит ... но и все равно лажа ... создал оператор документ ... отправил письмо контрагенту ... потом оператор понял, что выбрал не того контрагента ... открыл документ выбрал правильного контрагента и провел ... а письмо уже ушло ... и ушло совсем не туда
#11 by GANR
Нужно отправить письмо при первом проведении. И больше, даже если проведение отменится и опять встанет - не отправлять.
#12 by Пип Пибип
думал на этим. Письма хранятся в документе ЭлектронноеПисьмо. В HTML-теле письма номер и дата документа есть "только первое после интерактивного изменения в форме" - в точку
#13 by Byasha
Когда открывается форма документа - структура содержит только предопределенные системные значения. Когда документ проводится - анализируем структуру - ключ есть - проведение повторное, нет - проведение первое, добавляем ключ в структуру. Но это сработает только если проведение идет из формы, и если не нужно ловить самое первое, в истории документа, проведение. Если нужно отловить самое первое - то тут только дополнительный реквизит документа, или отдельный регистр сведений.
#14 by Пип Пибип
при чем, сделать интерактивное действие может один пользователь а провести/перепровести документ после этого (и вызвать отправку письма, при первом после интерактивного действия проведении/перепроведении) - другой, в другом сеансе 1С
#15 by Byasha
Религия новый реквизит документа добавить не позволяет?
#16 by Пип Пибип
понял, буду делать через новый доп реквизит Спасибо!
#17 by skunk
делай
#18 by skunk
все таки определенные внедренцы мне очень сильно нравяться
#19 by Пип Пибип
а вдруг есть более элегантное решение? "Не могу молчать!" (с)
#20 by ScreamSaw
А может сделать проверку, есть ли по этому документу информация в html-теле письма? Хотя, пожалуй, слишком бессмысленно и беспощадно. Я бы сделал через доп. реквизит.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С