Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Сделать действия после отмены проведения

Сделать действия после отмены проведения
Я
   IvanGorbunov
 
23.03.19 - 12:02
Нужно после отмены проведения документа программно выполнить некие действия. В обработчике "ОбработкаУдаленияПроведения" документ все еще числится проведенным, поэтому не подходит. Думаю делать в ПриЗаписи(), так как при отмене проведения, там он уже не проведен, но как там понять, что это не запись, а именно отмена проведения?
 
 
   Фрэнки
 
1 - 23.03.19 - 12:03
Объект.Проведен = Ложь
   IvanGorbunov
 
2 - 23.03.19 - 12:06
(1) это в ОбработкаУдаленияПроведения самому написать?
   Фрэнки
 
3 - 23.03.19 - 12:23
Нет, это ты спрашиваешь, как в процедуре по подписке узнать о состоянии объекта, который снят с проведения.
   RomanYS
 
4 - 23.03.19 - 12:42
(1) Документ мог никогда не быть проведенным
   RomanYS
 
5 - 23.03.19 - 12:44
(0) Какие "некие действия" нужно делать?
   Фрэнки
 
6 - 23.03.19 - 12:54
хм...

Если бы задача была поставлена мне, то я бы сразу подумал, что ранее проведенный документ от такого, который еще не был никогда проведен, отличается наличием ссылок на себя в неких записях, в неких наборах записей и т.д.

Если же таких ссылок найти нет возможности, т.е. некие процедуры проводились/действовали не оставляя ссылок на объект проведения... Ну что тут еще придумаешь? Ничего.
   RomanYS
 
7 - 23.03.19 - 12:58
(6) Узнать режим записи не проблема:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
    ЭтоОтменаПроведения = (ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения);
КонецПроцедуры

Вопрос в том какие действия собирается делать ТС, не факт, что это можно делать при записи.
   Cyberhawk
 
8 - 23.03.19 - 13:23
Еще интересный момент, подходит ли под задачи автора случай, когда происходит просто запись документа в режиме "Запись" и флаг "Проведен" и с флагом "Проведен" = Ложь, а по ссылке этот флаг еще Истина
   IvanGorbunov
 
9 - 23.03.19 - 13:26
(7) спасибо за идею. дело в том, что в момент проведение кое-что в кое-каком другом документе должно записываться. При отмене проведения откатываться.
   IvanGorbunov
 
10 - 23.03.19 - 13:26
(9) но таким образом, что этот документ уже должен быть не проведен
   IvanGorbunov
 
11 - 23.03.19 - 13:27
(10) короче причина почему именно так глубока и запутанная)
   palsergeich
 
12 - 23.03.19 - 13:36
(9) Изменение состояния одного документа не должно вызывать изменение состояние другого явно.
Это основы архитектуры.
В данной постановке - грабли которые уже положены на землю, рано или поздно вы на них все таки наступите.
   palsergeich
 
13 - 23.03.19 - 13:36
Тем более интерактивное, документ прилетает с обменом и в базе начинается каша.
   Фрэнки
 
14 - 23.03.19 - 13:38
(9) (11) но должна же быть какая-то связь, ссылка на источник записей, хоть в другом документе, хоть наборах записей регистров с другими регистраторами, но если связь устанавливать нет возможности, то и действия предпринимать практически бесполезно.

Допустим, что при проведении одного документа была установлена некая запись для другого, с другим регистратором или даже вовсе без регистратора - как вы потом это узнаете, если источник записи нигде не будет указан?
   palsergeich
 
15 - 23.03.19 - 13:40
(14) Это не отменяет коллизий при обмене. Весь текущий функционал завязан на интерактивные действие.
   Фрэнки
 
16 - 23.03.19 - 13:41
(12) ну-ну... посмотри на фокусы в последних типовых, где теперь наплодили кучи независимых регистров сведений
То что в архитектуре решения этот подход будет чреват фокусами, то все понимают, но в типовых даже косячат именно таким же самым способом.
   Фрэнки
 
17 - 23.03.19 - 13:42
(15) да какие там коллизии, о чем ты? Какие там обмены?
И так все понимают, что обмен непроведенными документами не всякому разработчику в голову придет.
   palsergeich
 
18 - 23.03.19 - 13:45
(16) переход на РС был ожидаем, я аналогичные вещи делал еще года 4 назад, другое дело что надо аккуратно, сдуру много что сломать можно.
Мой посыл в том, что если есть возможность по человечьи - лучше сделать.
Завязываться на интерактивный функционал и менять состояния других объектов - должно быть крайне осмысленное решение.
(17) Это случается чаще чем кажется) Если бы я не видел как наступают на эти грабли - прошел бы мимо.
   palsergeich
 
19 - 23.03.19 - 13:47
А чорт это модуль объекта, а не форма, что то меня сглючило, сорри.
   palsergeich
 
20 - 23.03.19 - 13:48
Тогда слова про интерактивный функционал забираю обратно)
   Cyberhawk
 
21 - 23.03.19 - 13:50
(12) В БП 3 счет-фактура обновляется при обновлении ПТУ. В линейке ЕРП пока такое не сделали, там обошлись сердито - интерактивная заглушка с предложением ввести корректировочную СФ ))
   palsergeich
 
22 - 23.03.19 - 13:51
(21) Да знаю я)
Я просто предупреждаю о том что у такого решения могут быть паоследствия.
   Cyberhawk
 
23 - 23.03.19 - 13:53
Да в 9 из 10 случаев любое сколько-нибудь "синхронное" изменение документов - это решение, от которого потом голова болит.
А уж если учесть, что обычно внедренцы делают такие решения через *опу, то вероятность боли возрастает еще больше.
   МимохожийОднако
 
24 - 23.03.19 - 16:00
Мне на ум приходит только взаимосвязь реализации и счета-фактуры выданной. Можно там подсмотреть.
   Garykom
 
25 - 23.03.19 - 16:23
(0) В отмене проведения пиши куда то "задание на обработку" (например в РС) со ссылкой на документ.
Затем фоновое задание проверяет список заданий, смотрит документа и если он не проведен то выполняет некие действия.

Предусмотреть варианта когда документа уже снова проведен или дважды отменен и уже два (или больше) задания в списке.
   Cyberhawk
 
26 - 23.03.19 - 18:29
(25) Угу, а еще предусмотреть вариант, когда фоновое задания по обработке документов из очереди (регистра) уже началось и приступило к очередному документу, и этот документ в этот же момент по обмену или интерактивно пользователем меняет свое состояние (проводится / разпроводится). Кстати, в ЕРП это одна из причин, когда у непроведенных документов остаются движения, сформированные фоновым заданием допроведения, бгг.
   Cyberhawk
 
27 - 23.03.19 - 18:30
Хотя казалось бы простейшая вещь - до начала обработки очередного документа считать его версию данных и после завершения обработки этого документа еще раз версию данных считать и сравнить. Если различаются - откатить результат обработки (допроведение по регистрам) и отложить документ для повторной обработки.
   Cyberhawk
 
28 - 23.03.19 - 18:31
Но нет, ребятки из 1С почему-то пошли по пути "дешево и сердито" ))
   Garykom
 
29 - 23.03.19 - 18:40
(26) ERP меня уже ничему не удивляет, там ситуация "у семи нянек".
Вместо того чтобы нанять мало дорогих-хороших сама 1С ищет/нанимает подешевле, ниже чем средняя на рынке, но зато много.
   palsergeich
 
30 - 23.03.19 - 19:22
(29) Вроде же в самой 1с рынок\выше рынка дают
 
 Рекламное место пустует
   Cyberhawk
 
31 - 23.03.19 - 21:15
(30) Если и выше рынка, то совсем чутка. А работа там далеко не сахар.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.