Имя: Пароль:
1C
 
Изменить автора при отмене проведения документа.
Ø
,
0 VCH
 
05.08.05
15:16
1С 7.7.
Задача. При отмене проведения документов изменять автора.
Где это можно сделать глобально?
Заранее благодарю за ответ.
1 Исключение
 
05.08.05
15:19
ПриОтменеПроведенияДокумента(Докум)
2 VCH
 
05.08.05
15:22
Когда делаю эту конструкцию - уходит на исключение.
  Попытка
    док.Автор=глПользователь;
    док.Записать();
  Исключение
    Сообщить("Не получилось");
  КонецПопытки;
3 Xon
 
05.08.05
15:31
(2) А где эта конструкция у Вас находится?
4 VZ
 
05.08.05
15:33
(2) Правильно делает. СоздатьОбъект() и прочее Пушкин писать будет?
5 VCH
 
05.08.05
15:45
3 в ПриОтменеПроведенияДокумента(Док)
4 такая тоже уходит на исключение:
  Попытка
    дд=СоздатьОбъект("Документ");
    дд.НайтиДокумент(док);
    дд.Автор=глПользователь;
    дд.Записать();
  Исключение
    Сообщить("Не получилось");
  КонецПопытки;
6 VZ
 
05.08.05
15:53
(5) Во-первых, надо знать, что пришло в параметре Док: ссылка или контекст документа - для этого есть ТипЗначения(). Во-вторых, в свою Попытку засунул кучу операторов, и что из них вызвало Исключение? дд.Автор=...? Может, НайтиДокумент() ничего не нашел?
7 Мулька
 
05.08.05
15:56
(6) + в третьих - не трож автора. Это уже редактор у тебя, однако
8 VCH
 
05.08.05
16:15
  дд=СоздатьОбъект("Документ");
  Сообщить("нашел="+дд.НайтиДокумент(док));
  дд.Автор=глПользователь;
  Попытка
    дд.Записать();
  Исключение
    Сообщить("Не получилось");
  КонецПопытки;
Переделал так.
Выдает:
нашел=1
Не получилось
(7) Почему нельзя автора изменить?
10 Макс 1С
 
05.08.05
16:42
скорее всего у тебя объект заблокирован... т.к. пользователь отменяет его проведение...
напиши в процедуре ПриОТменеПроведения автор = ЧтоТебеНАдо.....
11 zzz
 
05.08.05
17:00
Процедура ОбработкаУдаленияПроведения()
  Автор=Пользователь;
КонецПроцедуры
12 zzz
 
05.08.05
17:05
ПриОТменеПроведения не катит. тока в ОбработкаУдаленияПроведения()
13 zzz
 
05.08.05
17:09
можно кстати так:
Процедура ОбработкаУдаленияПроведения()
  ПриОтменеПроведенияДока(Контекст);
КонецПроцедуры
.
в глобальнике:
Процедура ПриОтменеПроведенияДока(докк) Экспорт
  // отмечаем автора удаления
  докк.Автор = глПользователь;
  //или лучше так
  докк.АвторУдаления = глПользователь;
КонецПроцедуры
14 NS
 
05.08.05
17:18
Обработка -
Процедура ПриОткрытии()
Док=Создатьобъект("Документ");
Док.найтидокумент(Форма.Параметр);
Док.Автор=глПользователь;
Док.Записать();
СтатусВозврата(0);
КонецПроцедуры
В Гл Модуле
ОткрытьФорму("ОбработкаИзмененияАвтора",Док);
15 zzz
 
05.08.05
17:27
2(14)
Док.Записать();
{Обработка.ИзмененияАвтора.Форма.Модуль(6)}: Объект заблокирован
16 NS
 
05.08.05
17:30
обработка
перем док;
Процедура ПриОткрытии()
 Док=Создатьобъект("Документ");
 Док.найтидокумент(Форма.Параметр);
 Форма.Закрыть(0);
КонецПроцедуры
Процедура ПриЗакрытии()
Док.Автор=глПользователь;
Док.Записать();
СтатусВозврата(0);
КонецПроцедуры
В Гл Модуле
ОткрытьФорму("ОбработкаИзмененияАвтора",Док);
17 Дурочка 1С
 
05.08.05
17:33
(16) СтатусВозврата(0); - прикольно
18 zzz
 
05.08.05
17:34
2(17) чтоб не открывалась обработка. а чего прикольного?
19 NS
 
05.08.05
17:35
Совсем уже голова не варит - статусвозврата нужно убрать...
обработка
перем док;
Процедура ПриОткрытии()
 Док=Создатьобъект("Документ");
 Док.найтидокумент(Форма.Параметр);
 Форма.Закрыть(0);
КонецПроцедуры
Процедура ПриЗакрытии()
Док.Автор=глПользователь;
Док.Записать();
КонецПроцедуры
В Гл Модуле
ОткрытьФорму("ОбработкаИзмененияАвтора",Док);
20 zzz
 
05.08.05
17:36
18+ аа, ступил. он в ПриЗакрытии() сунул.
я думал (16) копия (14).
Неохота пробовать (16). Заблокирован он не в обработке ведь.
21 NS
 
05.08.05
17:37
(18) Чтоб не закрывалась. ;-)
(17) Текст копировал, этой строки не заметил.
22 NS
 
05.08.05
17:39
(20) (19) конечно работает...
23 Дурочка 1С
 
05.08.05
17:41
По-моему, зря вы играете в лотерею с предопределенными процедурами.
перем док;
Процедура ДелаемЧеНадо()
// Вот здесь та процедура, из которой мы попали
// в эту обработку уже отработала. 100 пудов!
Док.Автор=глПользователь;
Док.Записать();
Форма.Закрыть(0);
КонецПроцедуры
Процедура ПриОткрытии()
 Док=Создатьобъект("Документ");
 Док.найтидокумент(Форма.Параметр);
ДелаемЧеНадо();
 КонецПроцедуры
24 NS
 
05.08.05
17:45
(23) А вот тут ты врешь...
Разницы между (16) и (23) Нет никакой.
а (19) - принципиально иное.
Между закрытием формы и открытием - обработка будет ждать завершения обработки документа (снятия с проведения и выполнение операторов гл. модуля)
25 zzz
 
05.08.05
17:46
2(22)
1. Док портит в глобальнике
2. Докc.Записать();
{Обработка.ИзмененияАвтора.Форма.Модуль(19)}: Объект заблокирован: хххх
26 zzz
 
05.08.05
17:49
проверяйте свои советы хотябы ..
реально работает тока "ОбработкаУдаленияПроведения()" из (11,13)
27 NS
 
05.08.05
17:52
(25) ничего не понял - какой док в глобальнике?
1) нет переменной "док" в глобальнике с признаком Экспорт
2) Специально проверил (19) на рабочей базе...
Всё работает.
Откуда 19-тая строка?
28 zzz
 
05.08.05
17:55
2(27)
1. короче если в глобальнике к этой переменной "Док" будет обращение после вызова обработки, то у меня вылазит ошибка.
2. у меня не работает. 19-я, потому что 1-й вариант закоментарен.
29 zzz
 
05.08.05
17:58
(23) тоже не работает. Релиз 25, ДБФ, монопольно.
30 VCH
 
05.08.05
18:18
Сделал, как в 19.
Заработало!
Спасибо всем, кто откликнулся!
31 NS
 
05.08.05
19:13
(30) Подожди.
Возможно ситуция, когда возникнет ошибка в (19) - я это указывал.
https://1cers.ru/topic.php?id=114905&
с полным контролем -
перем док;
Процедура ПриОткрытии()
 Док=Создатьобъект("Документ");
 Док.найтидокумент(Форма.Параметр);
 Форма.Закрыть(0);
КонецПроцедуры
Процедура ПриЗакрытии()
Док.Автор=глПользователь;
Попытка
Док.Записать();
Исключение
Статусвозврата(0);
Форма.Закрыть(0);
КонецПопытки;
КонецПроцедуры
32 VZ
 
05.08.05
19:34
(31) А окно мелькать не будет?
Может, так:
 
перем док;
Процедура ПриОткрытии()
 Док=Создатьобъект("Документ");
 Док.найтидокумент(Форма.Параметр);
 Док.Автор=глПользователь;
 успех = 1;
 Попытка
   Док.Записать();
 Исключение
   успех = 0;
 КонецПопытки;
 Если Успех=0 Тогда
   Форма.Закрыть(0);
 Иначе
   СтатусВозврата(0); //нафиг открывать, усе в порядке
 КонецЕсли;
КонецПроцедуры
Процедура ПриЗакрытии()
Док.Автор=глПользователь;
Попытка
Док.Записать();
Исключение
Статусвозврата(0);
Форма.Закрыть(0);
КонецПопытки;
КонецПроцедуры
33 NS
 
05.08.05
19:57
(32) Нет смысла пытаться записать документ в ПриОткрытии - исключение будет всегда.
Форма промерцает 1/10 секунды.
34 Не бейте ногами
 
05.08.05
21:39
32,33) ни фига не понял: чтобы сделать то, что в 0) что надо создать и что куда добавить? То в ГМ, то не в ГМ?
35 NS
 
05.08.05
21:49
(34) Объясняю - ежели не в ГМ - то нет проблем.
Ежели в ГМ - то (31)