helpf.pro
Регистрация

v8.2 УП: запрет на распроведение проведенного документа

Ponomarenko
09.07.2013 14:06Прочитано: 6687
Здравствуйте. У нас программа 1С УПП 8.2. В процедуре ПередЗаписью() я вставила следующий код
Код 1C v 8.2 УП
 
Если Проведен=ложь Тогда
сообщить("не проведен");
иначе
сообщить("проведен");
Если ( (РольДоступна("Кладовщик1")=Истина)или (РольДоступна("КладовщикВводНом")=Истина)
или (РольДоступна("Кладовщик2")=Истина)или (РольДоступна("КладовщикРеал")=Истина)) Тогда
сообщить("Не достаточно прав на перепроведение документа" );
сообщить("Для изменения проведенного документа обратитесь к бухгалтеру");
Отказ=истина;
КонецЕсли;
КонецЕсли;

При распроведении проведенного документа пользователям с ролью Кладовщик1 или Кладовщик2 или.. код срабатывает хорошо, не дает распровести или перепровести уже проведенный документ. Но непроведенные документы этим пользователям тоже не проводятся и выходит сообщение при проведении, что этот документ уже проведен и его нельзя перепровести. Подскажите пожалуйста, что я сделала не правильно.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
09.07.2013 14:36Ответ № 1
Судя по коду как-то не укладывается что Кладовщик1 или Кладовщик2 - не дает распровести - Должен дать

Надо ввести еще одну общую переменную ЗначПроведенПриОткрытии и с ним сравнивать:
Код 1C v 8.х
 //В самом вверху кода
Перем ЗначПроведенПриОткрытии;

//В ПриОткрытии
ЗначПроведенПриОткрытии = Проведен;

// В ПередЗаписью
Если Проведен=ложь Тогда
сообщить("не проведен");
Иначе
сообщить("проведен");
Если ЗначПроведенПриОткрытии = Проведен Тогда
Если ( (РольДоступна("Кладовщик1")=Истина)или (РольДоступна("КладовщикВводНом")=Истина)
или (РольДоступна("Кладовщик2")=Истина)или (РольДоступна("КладовщикРеал")=Истина)) Тогда
сообщить("Не достаточно прав на перепроведение документа" );
сообщить("Для изменения проведенного документа обратитесь к бухгалтеру");
Отказ=истина;
КонецЕсли;
Иначе
// Проводим непроведенный документ
КонецЕсли;
КонецЕсли;
Ponomarenko
09.07.2013 14:59Ответ № 2
Спасибо. Все получилось.
Ponomarenko
15.07.2013 09:17Ответ № 3
К сожалению не получается. Не пойму, почему команда "Проведен" показывает всегда "нет" при открытие документа, даже у проведенного документа сообщает "нет".
kirilov
17.07.2013 12:23Ответ № 4
А Вы точно не путаете "Проведен" и "Записан"?!
в Процедуру ПриОткрытии() добавили ЗначПроведенПриОткрытии = Проведен;?
Ponomarenko
18.07.2013 11:01Ответ № 5
Нет, не путаю. В модуле объекта я объявила
Код 1C v 8.2 УП
 
Перем ЗначПроведенПриОткрытии;

В конце модуля объекта

ЗначПроведенПриОткрытии=проведен;
Потом в процедуре ПередЗаписью(), анализирую
Код 1C v 8.2 УП
 
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
сообщить("передЗаписью="+ЗначПроведенПриОткрытии);
Если ЗначПроведенПриОткрытии = Проведен Тогда
//иначе
Если ( (РольДоступна("Кладовщик1")=Истина)или (РольДоступна("КладовщикВводНом")=Истина)
или (РольДоступна("Кладовщик2")=Истина)или (РольДоступна("КладовщикРеал")=Истина)) Тогда
сообщить("Не достаточно прав на перепроведение документа" );
сообщить("Для изменения проведенного документа обратитесь к бухгалтеру");
Отказ=истина;
КонецЕсли;
//Иначе
// Проводим непроведенный документ
КонецЕсли;

Попробовала запомнить состояние переменной в форме документа в процедуре ПриОткрытие- состояние показывает правильно, но теперь в модуле объекта значение ЗначПроведенПриОткрытии= пустое. Как передать значение ЗначПроведенПриОткрытии из формы документа в модуль объекта?
DJ_Serega
20.07.2013 13:48Ответ № 6
Нужно в ПриОткрытии ()
Код 1C v 8.2 УП
 
ЗначПроведенПриОткрытии=проведен;
Mokey
22.07.2013 10:58Ответ № 7
В модуле:
Перем ЗначПроведенПриОткрытии Экспорт;

В форме перед записью:
ЭтотОбъект.ЗначПроведенПриОткрытии = Проведен;

последовательность записи объекта (МФ - модуль формы, МО - модуль объекта):
1) МФ ПередЗаписью
2) МФ ОбработкаПроверкиЗаполненияНаСервере
3) МО ОбработкаПроверкиЗаполнения
4) МФ ПередЗаписьюНаСервере
5) МО ПередЗаписью
6) МО ПриЗаписи
7) МФ ПриЗаписиНаСервере
8 )МФ После записи на сервере
9) МФ После записи

ой, это я про 8.1 написал, но, думаю, подход такой должен быть
Изменено 22.07.13 11:00:09
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.