Вход | Регистрация
 
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) Если и выше рынка, то совсем чутка. А работа там далеко не сахар.


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