Имя: Пароль:
1C
1С v8
Нажатие кнопки ОК(Стандартной)
,
0 КВА
 
22.11.12
21:35
Стоит задача, чтобы пользователь при создании документа мог оповестить своего руководителя об этом. И при нажатии кнопки ОК (Стандартной) отрабатывал код с оповещением. Прописал код в Процедуре ОбработкаПроведения (), при создании документа пользователь жмет записать все нормально в процедуру не заходит как и надо, при нажатии ОК все  отрабатывает. Но тут пользователь решает посмотреть документ или его отредактировать смотрит или редактирует, жмет записать так как знает что при нажатии снова будет оповещен руководитель и тут весь облом оповещение отправляется как и при нажатии ОК так и при ЗАПИСИ. Но мне нужно чтобы только при ОК. Спрашивал у заказчика на счет того чтобы на форме сделать признак того что оповещение было отправлено не хотят.  Хотят чтобы только при нажатии ОК отправлялось.
Установка в свойствах документа признака «Записывать модифицированные» не принес нужного результата.
Документ не производит никаких  движений по регистрам.
Подскажите как сделать что бы это реализовать?
1 mexanik_96
 
22.11.12
21:56
проверь на выбран()=0
2 mexanik_96
 
22.11.12
21:57
если док.выбран() = 0 тогда
{кодсообщения}
конецесли
3 КВА
 
22.11.12
22:04
(1) Метод Выбран() он для регистров и внешних источников или что то не понимаю((
4 mexanik_96
 
22.11.12
22:10
с семаком перепутал.
Если док.ЭтоНовый() Тогда
   
КонецЕсли;
5 КВА
 
22.11.12
22:12
(4)Да оно всегда должно отправляться при нажатии только ОК ((
6 mexanik_96
 
22.11.12
22:13
дак поставь после вызова нажатия кнопки
7 mexanik_96
 
22.11.12
22:13
потом проверка на новый если истина сообщать, иначе ничего не дать. Проблема в чем?
8 mexanik_96
 
22.11.12
22:14
дать = делать
9 КВА
 
22.11.12
22:19
(8)Они хотят чтобы всегда при нажатии ОК сообщало не зависимо новый или модифицированный.
10 mexanik_96
 
22.11.12
22:22
реквизит без вывода на форму?
11 КВА
 
22.11.12
22:22
Есть вариант спрашивать о желании отправить но это самый крайний вариант
12 КВА
 
22.11.12
22:25
(10)ты имееш виду что то вроде булево и при нажатии ОК он принемает одно а при нажатии Записать другое? Тогда где поймать что я выбрал Ок или Записать?
13 mexanik_96
 
22.11.12
22:29
примерно
14 КВА
 
22.11.12
22:30
элементыформы.ОсновныеДействияФормы.Кнопки где то там ? ок спс завтра попробую думаю что то выйдет
15 mexanik_96
 
22.11.12
22:31
зачем там? просто реквизит у дока, с именем флаг. никак чтоли не сделать?
16 КВА
 
22.11.12
22:34
(15)Млин а где мне узнать что пользователь нажал?(
17 КВА
 
22.11.12
22:38
(15)РежимЗаписи после Проведения документа всегда становится в значении ПРОВЕДЕНИЕ
18 mexanik_96
 
22.11.12
22:39
Если док.ЭтоНовый() Тогда
   флаг =1;
КонецЕсли;
19 mexanik_96
 
22.11.12
22:40
флаг = реквизит документа
20 КВА
 
22.11.12
22:40
(18)Он после первого проведение уже не новый а они хотят чтобы всегда при нажатии ОК отробатывал.
21 mexanik_96
 
22.11.12
22:44
далее
если флаг = 1 тогда

иначе

еще писать? или сам все же??
22 КВА
 
22.11.12
22:48
(21) Млин я наверное что сложно объясняю впервый раз отработает нормально твой вариант с ЭтоНовый но последующии разы пользователь при нажатии на ОК не получит того чего хочит потому что док будет не новый (
23 mexanik_96
 
22.11.12
22:52
код показать можешь?
24 КВА
 
22.11.12
22:56
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
   
   // Проверим на необходимость составления ЛПО
   Если НЕ ЛПОСформирован Тогда
       ФлагЛПО = Ложь;
   
       Для Каждого СтрокаЗаказа Из ПереченьЗаявки Цикл
           
           Сумма131 = 0;
           Счет131 = Лев(Строка(СтрокаЗаказа.СтатьиЗатрат.Счет), 3);
           Если Счет131 = "131" Тогда
               ФлагЛПО = Истина;
               Сумма131 = Сумма131 + СтрокаЗаказа.Сумма;
           КонецЕсли;    
       КонецЦикла;
       
       Если ФлагЛПО Тогда
           
           ВалютаДоллар             = Справочники.Валюты.НайтиПоКоду(840, Истина);
           СтруктураВалютаДоллар    = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДоллар, Дата);
           СтруктураВалютаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(Валюта, Дата);
           
           СуммаВВалюте = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(Сумма131,
               Валюта, ВалютаДоллар, СтруктураВалютаДокумента.Курс, СтруктураВалютаДоллар.Курс);
           
           Если СуммаВВалюте > 5000 Тогда
               Отказ = Истина;
               Предупреждение("Необходимо заполнить форму LPO");        
           КонецЕсли;
       
       КонецЕсли;
   КонецЕсли;
   
   Если НЕ Инициатор = глЗначениеПеременной("глТекущийПользователь") Тогда
       ОбщегоНазначения.ОшибкаПриПроведении("Проведенным заявку может сделать только инициатор заявки!", Отказ);
   КонецЕсли;
   
   //Добавил Вот тут!!!! Если в первый раз то будет новый а как же с последующими разами????
    Если РольДоступна("Инициатор") Тогда
       ОповеститьПоЭлПочте(1);
       КонецЕсли;
   //Конец

   
КонецПроцедуры // ОбработкаПроведения()
25 mexanik_96
 
22.11.12
23:02
а выполнить нажатие на кнопку ок нету?
убрать из обработки проведения.
добавить проц нажатие на кнопку ок
с кодом

процедура нажатиеОк()
ОбработкаПроведения(Отказ, РежимПроведения);

    Если РольДоступна("Инициатор") Тогда
       ОповеститьПоЭлПочте(1);
       КонецЕсли;

конецпроцедуры
26 mexanik_96
 
22.11.12
23:03
то есть с кнопки ок вызываешь и проведение и сообщение, по другому записывает и не сообщает. может быть так?
27 КВА
 
22.11.12
23:03
нету ана же стандартная ((
28 mexanik_96
 
22.11.12
23:08
добавить?
29 КВА
 
22.11.12
23:11
(28)над попробовать я тебя понял спс.
30 Elf_80_lvl
 
22.11.12
23:48
(0) Я всегда думал что такие задачи через подписку решаются... Надеюсь база управленческая, а не типовая бух =)