Имя: Пароль:
1C
1С v8
При отмене проведения документа
0 kotokent
 
23.01.14
13:59
Создается общий модуль и привязка к подписки на событие, задача следующая:
При отмене проведения документа проверять, если документ содержит реквизит ответственный и текущий пользователь отличается от пользователя, выбранного в качестве ответственного тогда система не должна позволять отменить проведение документа. А если реквизит не заполнен тогда заполнить его текущим пользователем.
Процедура ОтменаПроведенияОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если Источник.Ответственный = Истина и ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда
        Источник.Провести = Ложь
    Иначе
        Если Источник.Ответственный = "" Тогда
            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        КонецЕсли
    КонецЕсли    
КонецПроцедуры
1 kotokent
 
23.01.14
13:59
Что не так?
2 Wobland
 
23.01.14
14:01
не, это правда _тестовая_ задача?
3 kotokent
 
23.01.14
14:01
(2) ну да, а что?
4 Wobland
 
23.01.14
14:02
отказ=ЕстьРеквизит() И Текущий<>ТомуКтоВДокументе;
5 Wobland
 
23.01.14
14:02
(3) да я что-то решил, что в комментариях копаться надо при отмене ;)
6 kotokent
 
23.01.14
14:03
(4) а это куда писать то?
7 Wobland
 
23.01.14
14:04
(6) это идея. над ней надо медитировать
8 kotokent
 
23.01.14
14:04
(7) попробуем...
9 kotokent
 
24.01.14
06:20
Может кто то еще что подскажет?!?!?!
10 Wobland
 
24.01.14
06:23
(9) может, и подскажет. тебе что именно?
11 kosts
 
24.01.14
06:24
(9)
Тут не правильно:

Источник.Ответственный = Истина
12 Wobland
 
24.01.14
06:26
>Источник.Провести
тут тоже. скорей всего ;)
13 Рэйв
 
24.01.14
06:28
(11)С каких пор у тебя ответсвенный- булево?
Оно в жизни не зайдет в ветку по условию

Источник.Ответственный = Истина
14 Wobland
 
24.01.14
06:29
(13) если у него есть реквизит Провести, то от Ответственного всего можно ждать ;)
15 Рэйв
 
24.01.14
06:29
может ты имел в видк
Если ЗначениеЗаполнено(Источник.Ответственный)...
16 Рэйв
 
24.01.14
06:29
(14)Это да. Какая то адинес у него- чудо враждебной техники:-)
17 catena
 
24.01.14
06:52
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента)
    Возврат НЕ (МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецФункции // ЕстьРеквизитДокумента()

Процедура ОтменаПроведенияОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если ЕстьРеквизитДокумента("Ответственный", Источник.Метаданные())  Тогда
        Если ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда
            Отказ = Истина
        ИначеЕсли не ЗначениеЗаполнено(Источник.Ответственный) Тогда
            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        КонецЕсли
    КонецЕсли    
КонецПроцедуры
18 kotokent
 
24.01.14
07:10
(17) Пишет ошибку: "Не удалось провести..."
19 kotokent
 
24.01.14
07:13
(14) Реквизита провести нету :), надо при отмене проведении документа записать в поле ответственого текущего пользователя если оно пустое, а если нет, то не дать отменить проведение документа
20 Wobland
 
24.01.14
07:13
(18) многоточие - это очень плохая ошибка, по ней ничего не понять. крепись
21 kotokent
 
24.01.14
07:15
(20) Не удалось провести "Реализация товаров и услуг" от 24.01.2014
22 Wobland
 
24.01.14
07:19
(21) опять наврал. ну да ладно
катена, не приняв с утра нужного количества кофе, наваяла тебе про проведение, а ты даже задумываться над кодом не стал?
23 kotokent
 
24.01.14
07:20
(17) код в общем то по логике правильный, но что то не работе
24 Wobland
 
24.01.14
07:21
(23) мелочь одна: в принципе не решает (0)
25 kotokent
 
24.01.14
07:21
(22) так он вроде правильный
только не работает
26 Рэйв
 
24.01.14
07:21
(23)Отладкой не пользуешься из религиозных убеждений или как?
27 Wobland
 
24.01.14
07:22
ээ, катена, извини, это у меня в организме мало кофе, не увидел втою ОтменаПроведения
28 kotokent
 
24.01.14
07:22
(26) не умею пока
29 Рэйв
 
24.01.14
07:22
(28)о_0
Может тогда лучше пригласить специалиста?
30 Wobland
 
24.01.14
07:23
надо переходить на тяжёлые наркотики..
что это за слово: ОтменаПроведенияОбработкаПроведения?
31 kotokent
 
24.01.14
07:23
(29) я на него и учусь:)
32 Рэйв
 
24.01.14
07:27
(31)Встань на первое "Если" курсором и нажми F9.
Познакомься, этот красный шарик называется ТочкаОстанова:-)
Запусти модуль на выполнение, когда на шарике появится стрелочка нажми Ctrl+Alt+W.
Познакомься, это называется Таболо, в него можно вбивать люые переменные или выражения возвращающие значения.

Дальше жмешь f10-это пошаговое выполнение.
Надеюсь до дальнейшего добумаешься сам:-)
33 kotokent
 
24.01.14
07:27
(30) ОтменаПроведения - подписка на событие у меня такая
34 Wobland
 
24.01.14
07:28
(33) а как ты умудрился запустить проведение?
35 kotokent
 
24.01.14
07:29
(34) Не понял вопроса
36 User_Agronom
 
24.01.14
07:30
Источник.Ответственный = Истина
Ну да. Несоответствие типов
37 Wobland
 
24.01.14
07:32
(35) проверялся ли ты на отмене проведения?
38 kotokent
 
24.01.14
07:32
Ошибку выдает и все... Что нельзя провести документ
39 kotokent
 
24.01.14
07:33
(37) отмена проходит, но пользователь один и тот же отается, и отмена проходит под другим пользавателем
40 Wobland
 
24.01.14
07:33
(38) как ты добился того, что при отмене проведения он у тебя проводится? или ты некоторые посты не по этой проблеме сюда пишешь?
41 catena
 
24.01.14
07:33
(27)Она не моя :) Я в авторскую процедуру повставляла функции, которые он хотел, а уж в нужном порядке расставляет пусть сам. С кофем беда, он подло кончился :(
42 Wobland
 
24.01.14
07:35
(39) ещё немного, и ты поймёшь всю полезность и низкое содержание холестерина у отладчика
43 kotokent
 
24.01.14
07:39
Ничего не получается
44 Wobland
 
24.01.14
07:45
(43) без этого ты не превратишься в специалиста. нужно совершить тысячи ошибок, двадцать раз отчаяться и сорок - биться головой об стол.
45 kotokent
 
24.01.14
07:45
(17)Он показывает что "Отказ"  - ЛОжь
46 kotokent
 
24.01.14
07:47
(17) он как то не сравнивает, что написано в "Ответственный" и какой текущий пользователь
47 kotokent
 
24.01.14
08:02
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента)
    Возврат НЕ (МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецФункции



Не пойму зачем она?!?!
48 Wobland
 
24.01.14
08:04
Функция ЕстьРеквизитДокумента выясняет, есть ли реквизит у документа. внезапно, правда?
49 kotokent
 
24.01.14
08:11
(48) До этого я просто писал "ИСточник.Ответственный"
50 kotokent
 
24.01.14
08:12
(48) Процедура КомментарийВоВсехДокументахПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
        Источник.Комментарий = "Документ записан " + ТекущаяДата() + " пользователем " + ПараметрыСеанса.ТекущийПользователь;
КонецПроцедуры
51 kotokent
 
24.01.14
08:12
(48)
Процедура КомментарийВоВсехДокументахПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
        Источник.Комментарий = "Документ записан " + ТекущаяДата() + " пользователем " + ПараметрыСеанса.ТекущийПользователь;
КонецПроцедуры
52 kotokent
 
24.01.14
08:17
Блин, у меня у документа уже нет ответственного, по логике в этом коде (17) должно записывать в Ответственный текущего пользователя, а оно не работает!?!? Что за хрень...
53 Wobland
 
24.01.14
08:18
в (17) при пустом ответственном чаще всего последует отказ
54 kotokent
 
24.01.14
08:19
(53) а как сделать чтобы туда записывался текущий пользователь?
55 Wobland
 
24.01.14
08:21
поменять если и иначе местами
56 kotokent
 
24.01.14
08:22
(55) не помогло
57 kotokent
 
24.01.14
08:23
(55) что то вообще не работае, я даже просто в Оттветственный не могу внести запись
58 kosts
 
24.01.14
08:25
(57) Может быть использовано не подходящее событие?
59 kotokent
 
24.01.14
08:26
(58) ваши предложения?!
60 kotokent
 
24.01.14
08:27
(58) Что тут не так?


Процедура ОтменаПроведенияОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если ЕстьРеквизитДокумента("Ответственный", Источник.Метаданные())  Тогда
        Если ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда
            Отказ = Истина;
            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        ИначеЕсли не ЗначениеЗаполнено(Источник.Ответственный) Тогда
            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        КонецЕсли
    КонецЕсли
КонецПроцедуры    

Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента)
    Возврат НЕ (МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецФункции (58)
61 Wobland
 
24.01.14
08:28
(60) 5я строка
62 kotokent
 
24.01.14
08:29
(61) это я ее так добавил, ради интереса, ее можно не смотреть
63 Wobland
 
24.01.14
08:29
(62) выплюнь её совсем и смотри в этот текст:
если документ содержит реквизит ответственный и текущий пользователь отличается от пользователя, выбранного в качестве ответственного тогда система не должна позволять отменить проведение документа. А если реквизит не заполнен тогда заполнить его текущим пользователем.
64 kotokent
 
24.01.14
08:30
(63)


Процедура ОтменаПроведенияОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если Источник.Ответственный = Истина и ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда
        Источник.Провести = Ложь
    Иначе
        Если Источник.Ответственный = "" Тогда
            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        КонецЕсли
    КонецЕсли    
КонецПроцедуры
65 kotokent
 
24.01.14
08:31
(63) То что я первоначально пытался по этому тексту фигануть
66 Wobland
 
24.01.14
08:35
ты не находишь, что формулировка (0) и код в (60) - одно и то же?
67 kotokent
 
24.01.14
08:37
(66) Я это понимаю, вот и ничего не работает, но логика то, я думаю, правильная
68 Wobland
 
24.01.14
08:45
(67) отладчик. тебя спасёт отладчик. он покажет тебе все фокусы с твоим кодом с полным разоблачением
69 kotokent
 
24.01.14
08:48
(68) ну я только через отладчик увижу что в ячейках, а так как его еще использовать?
70 Wobland
 
24.01.14
08:49
(69) открой для себя меню отладка, ужаснись, закрой, сходи перекури и открой снова
71 kotokent
 
24.01.14
08:50
(70) отладчик как будто не видит вообще что я ему написал, просто не останавливается там где надо
72 Wobland
 
24.01.14
08:52
(71) в серверном режиме сервер надо заставлять
73 kotokent
 
24.01.14
08:54
(72) у меня обычный
74 catena
 
24.01.14
09:18
(60)Тебе было сказано не процедуры местами поменять, а условия ЕСЛИ. И зря ты их опять в одно ЕСЛИ запихал, у тебя все сдохнет, если у документа вообще не реквизита Ответственный.
75 catena
 
24.01.14
09:20
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента)
    Возврат НЕ (МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецФункции // ЕстьРеквизитДокумента()


Процедура ОтменаПроведенияОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если ЕстьРеквизитДокумента("Ответственный", Источник.Метаданные())  Тогда//если нет реквизита Ответственный, мы ваще не можем ни сравнивать его, ни писать туда что-либо
        Если не ЗначениеЗаполнено(Источник.Ответственный) Тогда //Выяснили, что реквизит есть, теперь проверим, не пустой ли.
            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        ИначеЕсли ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда//он есть и он не пустой, теперь сравним.
            Отказ = Истина
        КонецЕсли
    КонецЕсли    
КонецПроцедуры
76 kotokent
 
27.01.14
06:45
Скажите, этот код должен работать? или его надо еще дорабатывать?
77 Wobland
 
27.01.14
06:47
я бы комментарии изменил
78 Wobland
 
27.01.14
06:56
проверим, пропускает ли матофильтр слова олух и остолоп
79 kotokent
 
27.01.14
06:59
(78) ты о чем?
Можешь помочь или нет?
80 Wobland
 
27.01.14
07:01
смотря чем. чем помочь?
81 kotokent
 
27.01.14
07:05
или код подправить или помочь его заново написать?!
82 Wobland
 
27.01.14
07:06
(81) а что с ним не так?
83 kotokent
 
27.01.14
07:08
не записывает в обще Ответственный, даже если его нет или он есть не меняет или ошибку выдает... короче код вообще не работет
84 Wobland
 
27.01.14
07:08
ошибка есть? это очень хорошо. в ней обычно содержится масса полезной информации
85 kotokent
 
27.01.14
07:10
При проведении, когда есть Ответственный, он не дает провести документ...
86 Wobland
 
27.01.14
07:11
(85) как-то аргументирует? и откуда опять проведение взялось?
87 kotokent
 
27.01.14
07:14
(86) нет... просто не удалось провести документ такой-то... когда провожу или не провожу он все выполняет и все...если без записи
88 kotokent
 
27.01.14
07:17
(86) мне кажется что код вообще не правильный, помоги написать процедуру заново, пожалуйста?!?!
89 Wobland
 
27.01.14
07:21
>не удалось провести документ такой-то
это ты словил Отказ=Истина где-то внутри обработки проведения

а вообще, catena - умная девушка, править (75) незачем. непонятно, правда, когда это исполняется, и при чём тут проведение
90 kotokent
 
27.01.14
07:37
(89) От при отмене проведения делается, но код не записывает текущего пользователя когда нет записи в Ответственный
91 kotokent
 
27.01.14
07:37
(75) помоги
92 Wobland
 
27.01.14
07:42
(90) а отладчик приходит на строку присвоения?
93 Мимохожий Однако
 
27.01.14
07:43
Если ЕстьРеквизитДокумента("Ответственный", Источник.Метаданные())  Тогда//если нет реквизита Ответственный, мы ваще не можем ни сравнивать его, ни писать туда что-либо

        Если не ЗначениеЗаполнено(Источник.Ответственный) Тогда //Выяснили, что реквизит есть, теперь проверим, не пустой ли.

            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        Если ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда//он есть и он не пустой, теперь сравним.

            Отказ = Истина
        КонецЕсли
КонецЕсли
    КонецЕсли
94 Wobland
 
27.01.14
07:46
(93) ни разу ж в отказ не придёт
95 kotokent
 
27.01.14
07:48
(93) Не записывает и проводит
96 Wobland
 
27.01.14
07:49
спрошу-ка я ещё раз. откуда взялось проведение?
97 Мимохожий Однако
 
27.01.14
07:50
Попытка следующая...
Если ЕстьРеквизитДокумента("Ответственный", Источник.Метаданные())  Тогда//если нет реквизита Ответственный, мы ваще не можем ни сравнивать его, ни писать туда что-либо


        Если ЗначениеЗаполнено(Источник.Ответственный) И ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда


            Отказ = Истина
        КонецЕсли

    КонецЕсли
98 kotokent
 
27.01.14
07:51
(96) Ну так я документ сначала отменю проведение, а потом его провожу что бы посмотреть... если его проводить без Ответственный, то должен туда записываться текущий пользователь
99 Wobland
 
27.01.14
07:51
(97)  неудача ;)
А если реквизит не заполнен тогда заполнить его текущим пользователем.
100 kotokent
 
27.01.14
07:52
(97) этот кусок куда вставлять
101 kotokent
 
27.01.14
07:52
(99) да
102 Wobland
 
27.01.14
07:53
>если его проводить без Ответственный, то должен туда записываться текущий пользователь
несколько не согласуется с (0)
103 Мимохожий Однако
 
27.01.14
07:54
Если ЗначениеЗаполнено(Источник.Ответственный) И ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда


            Отказ = Истина
Иначе
Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь;
        КонецЕсли
...
Сама идея неверная.
104 Wobland
 
27.01.14
07:54
проведение отменяется хорошо?
105 kotokent
 
27.01.14
07:54
(102) ошибся, при отмене проведения если реквизит не заполнен, то ... текущий пользователь
106 kotokent
 
27.01.14
07:55
(104) да
107 Wobland
 
27.01.14
07:56
(106) работа сделана?
108 kotokent
 
27.01.14
07:57
(107) он мне не записывает текущего пользователя если нет там реквизита
109 Wobland
 
27.01.14
07:58
(108) отладчик в нужное место попадает?
110 kotokent
 
27.01.14
08:01
(109) только при проведении... при отмене - просто как будто процедуры не видит
111 Wobland
 
27.01.14
08:02
(110) наверное, это из-за подписки
112 kotokent
 
27.01.14
08:04
(111) как сюда кинуть картинку?
113 kotokent
 
27.01.14
08:07
file:///C:/Users/pa.PPCONS/Pictures/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.png
114 kotokent
 
27.01.14
08:07
:)
115 Wobland
 
27.01.14
08:09
(113) Веб-страница не найдена
116 kotokent
 
27.01.14
08:10
(115) как картинку кинуть
117 kotokent
 
27.01.14
08:10
C:\Users\pa.PPCONS\Pictures\Безымянн6ый.gif
118 kotokent
 
27.01.14
08:11
(115) открылась?
119 Wobland
 
27.01.14
08:12
120 kotokent
 
27.01.14
08:13
121 Wobland
 
27.01.14
08:14
а ты правда думаешь, что событие ОбработкаПроведения выполняется при отмене проведения?
122 Мимохожий Однако
 
27.01.14
08:15
В одной из конфигураций я добавил в подписку на событие при записи документа следующую процедуру:

Процедура ПроверитьОтветственногоПередЗаписьюДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    Перем  Ответственный;
    Ответственный = ОбщегоНазначения.ПолучитьРеквизитШапки("Ответственный", Источник, Источник.Метаданные());
    Если (НЕ Ответственный = НЕОПРЕДЕЛЕНО) И (НЕ РольДоступна("ПолныеПрава")) Тогда
        //Если НЕ РольДоступна("ПолныеПрава") Тогда
        //Если НЕ Источник.Ответственный=Источник.Ссылка.Ответственный Тогда
        //    Сообщить("Нельзя менять ответственного!");
        //    Отказ = Истина;
        //КонецЕсли;
        Если Источник.Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда
            Сообщить("Этот документ создал "+Источник.Ответственный+", а не Вы ,"+ПараметрыСеанса.ТекущийПользователь+"). Редактирование запрещено");
            Отказ = Истина;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
123 kotokent
 
27.01.14
08:18
(122) работает или нет у вас?
124 kotokent
 
27.01.14
08:21
(122) у меня с этим кодом 1с вылетает
125 Мимохожий Однако
 
27.01.14
08:21
(123)Работает года два. Любой пользователь при попытки изменить состояние документа должен поменять ответственного, если не он создавал.
126 Мимохожий Однако
 
27.01.14
08:22
(124)Куда вылетает? )) Отсюда не видно
127 kotokent
 
27.01.14
08:23
128 Мимохожий Однако
 
27.01.14
08:24
См (122)"я добавил в подписку на событие при записи документа ". Ты пихаешь мой код в другую подписку.
129 Wobland
 
27.01.14
08:28
подписка ОтменаПроведения на событие ОбработкаПроведения - это прекрасно
130 kotokent
 
27.01.14
08:29
131 Wobland
 
27.01.14
08:32
(127) найди метод обработчика события...
132 kotokent
 
27.01.14
08:38
(131) ни хера не получается... я в шоке, вроде код тот, а от мозги ебет
133 Мимохожий Однако
 
27.01.14
08:40
(132)Надо использовать ДРУГУЮ подписку на событие "ПриЗаписиДокумента". см (122) еще раз, потом еще раз, потом еще раз...А свой код временно закоммментируй.
134 Wobland
 
27.01.14
08:44
бесполезно..
135 Мимохожий Однако
 
27.01.14
08:45
Надежда умирает последней ))
136 kotokent
 
27.01.14
08:46
(122) код не  работает, все проводит и отменяте и не меняет и записывает без изменений
137 kotokent
 
27.01.14
08:47
(135) попробуй у себя такую задачку проделать!?!?
138 Wobland
 
27.01.14
08:47
вот была бы такая штука, которая показывала пошагово исполнение кода с возможностью просмотра значений переменных...
139 Мимохожий Однако
 
27.01.14
08:47
Значить у пользователя Полные права. Убери у пользователя Полные права
140 kotokent
 
27.01.14
08:48
(138) обработчик не помогает мне поять что не так
141 kotokent
 
27.01.14
08:48
(139) ща попробуем
142 Мимохожий Однако
 
27.01.14
08:49
(137)я уже сказал. У моих клиентов работает уже 2 года.
143 kotokent
 
27.01.14
08:58
(142) нифига
144 Wobland
 
27.01.14
09:02
обидно, да?
145 kotokent
 
27.01.14
09:03
(142) попробуй у себя такую задачку реализовать,

(144) не то слово
146 Мимохожий Однако
 
27.01.14
09:16
(145)Не тупи. У меня реализовано. Я тебе сочувствую,если что.
147 Loyt
 
27.01.14
09:18
(130) Плин, а с фига ли ты Ответственного вообще на НЕОПРЕДЕЛЕНО проверяешь? Он 99% типа справочник.
Ну и режим записи где проверяется, тебе же при отмене проведения только нужно менять?
И куда присвоение реквизита пропало?
И в твоей задаче проверка на полные права разве вообще нужна?
148 kotokent
 
27.01.14
09:19
(146) почему я создал пользователя без полный прав, а он мне говорит что нет в списке пользователей
149 kotokent
 
27.01.14
09:20
(147) ну ты все правильно понял, только  как это сделать
150 Jonny_Khomich
 
27.01.14
09:20
есть пользователь ИБ и пользователь в справочнике
151 Loyt
 
27.01.14
09:28
(149)
Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда

Ответственный = ОбщегоНазначения.ПолучитьРеквизитШапки("Ответственный", Источник, Источник.Метаданные());

Если ЗначениеЗаполнено(Ответственный) Тогда
Если Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда
Отказ = Истина;
Сообщить("чужой документ");
КонецЕсли;
Иначе
Попытка
Источник.ответственный = Ответственный;
Исключение
КонецПопытки;
КонецЕсли;
КонецЕсли;

Что-то типа того.
152 Loyt
 
27.01.14
09:30
Пля, Источник.ответственный = ПараметрыСеанса.ТекущийПользователь;
153 kotokent
 
27.01.14
11:05
(152) ща попробуем
154 Wobland
 
27.01.14
11:06
ставлю кружку Гиннесса на то, что не взлетит ;)
155 kotokent
 
27.01.14
11:14
(154) и ты прав... может ты что скажешь путнего
156 kotokent
 
27.01.14
11:15
(152) режим проведения - не оперативный показывает обработчик
157 kotokent
 
27.01.14
11:15
(152) и он сразу идет в конец если
158 Wobland
 
27.01.14
11:16
(155) спасёт только хирургическое вмешательство с каким-нибудь тим-вьюером. раньше вечера точно никак, позже или равно вечера - не уверен
159 Мимохожий Однако
 
27.01.14
11:17
(154) Ты прав. Надежда умерла.
160 kotokent
 
27.01.14
11:20
(158) http://s019.radikal.ru/i619/1401/3b/06ede025f6e1.png

я нажимаю да и он по коду в конец цикла уходит
161 NcSteel
 
27.01.14
11:20
(158) Ты не 1Сник.
162 NcSteel
 
27.01.14
11:21
(160) И че?
163 kotokent
 
27.01.14
11:22
(162) это я хотел у вас спросить, получается надо делать оперативный режим проведения или что
164 NcSteel
 
27.01.14
11:23
(163) Чем отличается оперативный от неоперативного режима проведения и как режим проведения связан с твоей задачей?
165 kotokent
 
27.01.14
11:25
(164) незнаю, я его и так и так попробовал, но он нафига не работает, не меняет ответственного и не выдает ошибкиесли ответственный и текущий пользователь отличаются
166 Wobland
 
27.01.14
11:25
(161) 1Сник. только не настоящий, не жадный. исключение, так сказать ;)
167 NcSteel
 
27.01.14
11:27
(165) Ну вот, у тебя уже есть первая задача - "Узнать чем отличается оперативное проведение от неоперативного".

Например гугл мне выдал:
http://blog.ut10.ru/2012/02/16/op_ne_op/
168 NcSteel
 
27.01.14
11:28
169 kotokent
 
27.01.14
11:28
(167) не... я это уже понял... ща покажу что он мне по отладчику делает
170 NcSteel
 
27.01.14
11:28
(166) С делаешь за него - не научится ни чему.
171 catena
 
27.01.14
11:28
(167) Он свою-то задачу сформулировать не может, а вы его еще лишними теминами грузите.
172 NcSteel
 
27.01.14
11:29
(169) Если понял, то как связана твоя задача с режимом проведения?
173 NcSteel
 
27.01.14
11:29
(171) Человек хочет на готовенькое... такое надо искоренять сразу.... Иначе дубиной и помрет.
174 Wobland
 
27.01.14
11:30
(170) иногда я вопросами задалбываю. иногда помогает. но здесь ТС уже достал ;)
175 catena
 
27.01.14
11:30
(173)Этого человека пока еще надо носом в ЖКК тыкать, в самые первые страницы.
176 kotokent
 
27.01.14
11:31
177 NcSteel
 
27.01.14
11:32
(176) Вопросы заданы - ждем ответа )
178 Wobland
 
27.01.14
11:32
(176) что, условие про режим проведения дало ложь?
179 catena
 
27.01.14
11:32
(176)И какой у тебя при этом режим проведения?
180 Wobland
 
27.01.14
11:33
а есть ли переменная РежимПроведения?
181 Wobland
 
27.01.14
11:33
(180) вижу
182 kotokent
 
27.01.14
11:33
(175) (173)
я учусь, и не надо на меня орать;)
(179)Оперативный, да и это не важно как то
183 Wobland
 
27.01.14
11:34
(182) угу. главное, что не отмена. тогда заход в ветку не происходит
184 catena
 
27.01.14
11:34
(182)Все еще удивляет поведение отладчика?
185 kotokent
 
27.01.14
11:34
я вот не пойму как режим проведения и режим записи документа могут совпасть
186 kotokent
 
27.01.14
11:35
(184) нет, но мне он сильно не помогает
187 kotokent
 
27.01.14
11:35
(184) может режим проведения поменять на режим записи
188 Wobland
 
27.01.14
11:36
(185) правильный вопрос: как может совпасть режим проведения с системным перечислением про отмену проведения?
189 catena
 
27.01.14
11:36
(186)Тебя таблом уже учили пользоваться?
190 kotokent
 
27.01.14
11:36
(189) нет, но я видел это чудо
191 catena
 
27.01.14
11:37
(190)Ну так смотри в таблу и переписывай оттуда те значения, которые тебе нужны для реакции. Что ж ты тупо код копируешь, ты даже задачу толком не озвучил, тебе тут понапишут...
192 NcSteel
 
27.01.14
11:39
(185) Правилньый вопрос - и ответ ни как. Поэтмоу условие и не отрабатывает.
193 kotokent
 
27.01.14
11:40
задача тут(0), как у меня на листочке написанно
194 NcSteel
 
27.01.14
11:40
(187) Я тебе советую с начала сделать аоритм на одном документе . Описать его в модуле документа без подписок... А потом уже переносить в подписку.
195 kotokent
 
27.01.14
11:42
(194) вот он первое ЕСЛИ видит, но при проведении, а потом сразу в конец перескакивает
196 Wobland
 
27.01.14
11:43
(195) если работает так. проверяется логическое условие, при истинном результате идёт заход внутрь, при ложном - в конецЕсли. внезапно, правда?
197 Wobland
 
27.01.14
11:44
найди Colobot - прекрасная игрунька
198 NcSteel
 
27.01.14
11:44
(195) Показывайте код который у Вас получился для одного документа.
199 kotokent
 
27.01.14
11:44
(196) нет, я про то что не так в первом если то... я уже его поменял немного

Если РежимЗаписиДокумента.ОтменаПроведения = Истина Тогда


так сделал
200 Wobland
 
27.01.14
11:45
твести!
201 Wobland
 
27.01.14
11:45
(199) всегда будет ложь
202 Wobland
 
27.01.14
11:45
(201) всегда будет фигня какая-то, не?
203 NcSteel
 
27.01.14
11:45
(199) Зачем гадать? Не легче ли написать нормальный алгоритм?
204 kotokent
 
27.01.14
11:47
(203) я сам пытался но не выходило (0)
205 NcSteel
 
27.01.14
11:50
(203) Давай по порядку... При каком событии документа должен отрабатывать твой код?
206 catena
 
27.01.14
11:51
(193)В (0) у тя только про отмену проведения написано, а тестируешь на проведении почему-то И удивляешься, что предоставленный код не работает. Удивительно, правда?
207 kotokent
 
27.01.14
11:51
(205) При отмене проведения любого документа
208 kotokent
 
27.01.14
11:52
(206) так он просто отменяе проведение и все, я его обрано провожу, чтобы потом еще раз отменить
209 NcSteel
 
27.01.14
11:52
(207) такого события у документа нет.

Какие события документов вы знаете?
210 kotokent
 
27.01.14
11:53
(209) записать
211 kotokent
 
27.01.14
11:54
(209) при записи, перед записью и т.д.
212 NcSteel
 
27.01.14
11:54
(210) И такого нет.

Советую зайти в синтаксис помощник и перейти по:
Прикладные объекты - документы - документ объект - События
213 NcSteel
 
27.01.14
11:55
(211) Именно.

так вот у некоторых событий есть параметры. И через эти параметры можно понять что сделал пользователь (отменил проведение или провел).

параметр именуется "РежимЗаписи"....
214 NcSteel
 
27.01.14
11:57
(213)  + Какое событие нам может подойти?
215 kotokent
 
27.01.14
11:57
(213) так при проведении документа срабатывает событие при записи, а при отмене проведения срабатывает ?
216 Wobland
 
27.01.14
11:57
(215) срабатывает, также происходит запись
217 NcSteel
 
27.01.14
11:58
(215) Отменяя проведение мы меняем объект - а это и есть запись. Поэтому естественно срабатывает.
218 kotokent
 
27.01.14
11:58
(214) (216) ну тогда надо передзаписью (217) событие назначить
219 Wobland
 
27.01.14
12:00
(218) а почему бы не заюзать удаление проведения?
220 NcSteel
 
27.01.14
12:01
(218) Отлично.

для проверки алгоритма, я бы в документе где есть Ответственный добавил бы событие "ПередЗаписью" в модуле документа (если он там не описан конечно)

И описал бы алгоритм.

Останется в условии проверить соответствие ответственного и заполненность его.
221 NcSteel
 
27.01.14
12:01
(219) Вот и я ступил - точно... то что надо )
222 NcSteel
 
27.01.14
12:02
(220) В свете (219) Событие другое , но суть не меняется )
223 kotokent
 
27.01.14
12:04
(222) так событие передзаписью добавить или "ступил" :)?
224 Wobland
 
27.01.14
12:06
(223) включить мозг и постараться ответить на свой вопрос самостоятельно
225 kotokent
 
27.01.14
12:07
(222) вооот... теперь он мне где не было пользователя написал "Текущего" и не дал отменить провести с другим ответственным
226 NcSteel
 
27.01.14
12:09
(225) У события есть параметры, каким параметром события можно отказаться от его выполнения?
227 Wobland
 
27.01.14
12:09
это хорошо или плохо?
228 kotokent
 
27.01.14
12:11
(226) отказ
229 kotokent
 
27.01.14
12:11
(227) это хорошо, очень хорошо, но что то нет чувства что задание выплнено
230 Loyt
 
27.01.14
12:13
(156) А при чём тут вообще режим проведения?
231 NcSteel
 
27.01.14
12:13
(228) То есть сделав что то с этим параметром, можно отказаться от выпонления действия пользователя...
232 kotokent
 
27.01.14
12:13
(226) (227) Спасибо большое, вроде работает как по заданию написано, без вас я бы и не додумался
233 kotokent
 
27.01.14
12:14
(231) не, тогда РежимПроведения
234 kotokent
 
27.01.14
12:15
(231) отказ это не то
235 kotokent
 
27.01.14
12:16
(231) хотя и отказ можно так поставить что просто не дост сделать действий с документом
236 Loyt
 
27.01.14
12:16
(218) Про "ПередЗаписью" тебе давно уже написали, ты что, и после этого другое событие использовал?
237 kotokent
 
27.01.14
12:18
(236) там тело процедуры не правильное было
238 NcSteel
 
27.01.14
12:18
(234) отказ как раз это то...

Возводя его в Истину пользователь не сможет отменить проведение дкоумента.
239 Loyt
 
27.01.14
12:18
(233) На режимПроведения тебе вообще положить должно быть.
240 Loyt
 
27.01.14
12:19
(235) Он и должен запрещать отмену проведения, если ответственный заполнен и не совпал.
241 kotokent
 
27.01.14
12:20
(238) Да, я прочитал уже, до этого не посмотрел:)

(239) ну я то думал это то что мне надо
242 catena
 
27.01.14
12:20
Я вот думаю, при приеме решения тестового задания от кандидатов, имеет смысл так же просить ссылку на ветку с обсуждением.
243 Loyt
 
27.01.14
12:21
(237) Да ну? И ты, разумеется, не знаешь, что было неправильно?
244 kotokent
 
27.01.14
12:22
(242) ну если бы я это знал, то и не спрашивал, то что описано в книгах и на сайте я сразу разобрал и сам написал метод Гаусса, а здесь запарился
245 Loyt
 
27.01.14
12:22
(242) По-моему, такие мелкие задания при очной ставке задают, не?
246 kotokent
 
27.01.14
12:22
(243) теперь то знаю
247 Loyt
 
27.01.14
12:23
(246) Поделись, пожалуйста.
248 kotokent
 
27.01.14
12:23
(245) ну вам то виднее, я то еще не работаю, а учусь
249 kotokent
 
27.01.14
12:26
(247)
Процедура ПроверитьОтветственногоПередЗаписьюДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    Перем  Ответственный;
    Ответственный = ОбщегоНазначения.ПолучитьРеквизитШапки("Ответственный", Источник, Источник.Метаданные());
    Если (НЕ Ответственный = НЕОПРЕДЕЛЕНО) И (НЕ РольДоступна("ПолныеПрава")) Тогда
        //Если НЕ РольДоступна("ПолныеПрава") Тогда

        //Если НЕ Источник.Ответственный=Источник.Ссылка.Ответственный Тогда

        //    Сообщить("Нельзя менять ответственного!");

        //    Отказ = Истина;

        //КонецЕсли;

        Если Источник.Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда
            Сообщить("Этот документ создал "+Источник.Ответственный+", а не Вы ,"+ПараметрыСеанса.ТекущийПользователь+"). Редактирование запрещено");
            Отказ = Истина;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

не было записи текущего пользователя если поле пустое
250 kotokent
 
27.01.14
12:28
(247) во как
251 catena
 
27.01.14
12:31
(245)Иногда мелкие задачи просят решить заранее и придти с решением. Чтобы время не терять уже.
252 kotokent
 
27.01.14
12:32
(251) мне и дали написать конфигурацию небольшую, чтобы посмотреть что я могу
253 catena
 
27.01.14
12:34
(252)А где учишься? И на кого?
254 kotokent
 
27.01.14
12:35
(253) 5 курс информационные системы в управлений: прикладная информатика в экономике... а это задание мне на моей работе-практике дали, чтобыпройти сертификацию
255 catena
 
27.01.14
12:41
Был у меня один студент на собеседовании. Чистый лист, но схватывал на лету. Через полчаса общения запросы писал с любыми соединениями, параметры виртуальных таблиц усвоил, временные таблицы пощупал... Жаль не разрешили взять, некогда было обучать тогда.
256 NcSteel
 
27.01.14
12:43
(255) Такие обучаются сами.... достаточно пару пинков к нужным книгам
257 catena
 
27.01.14
12:46
(256)У меня тогда каждая штатная единица на счету была. Но мысля держать единицу на студента засела.
258 Loyt
 
27.01.14
12:52
(249) Это не мой код. Мой - в (151).
Независимо от того, куда вы едете — это в гору и против ветра!