Имя: Пароль:
1C
1С v8
При отмене проведения документа
, ,
0 kotokent
 
23.01.14
13:59
Создается общий модуль и привязка к подписки на событие, задача следующая:
При отмене проведения документа проверять, если документ содержит реквизит ответственный и текущий пользователь отличается от пользователя, выбранного в качестве ответственного тогда система не должна позволять отменить проведение документа. А если реквизит не заполнен тогда заполнить его текущим пользователем.
Процедура ОтменаПроведенияОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если Источник.Ответственный = Истина и ПараметрыСеанса.ТекущийПользователь <> Источник.Ответственный Тогда
        Источник.Провести = Ложь
    Иначе
        Если Источник.Ответственный = "" Тогда
            Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
        КонецЕсли
    КонецЕсли    
КонецПроцедуры
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).
2 + 2 = 3.9999999999999999999999999999999...