|
v7: Отмена проведения в модуле документа | ☑ | ||
---|---|---|---|---|
0
Масянька
14.04.17
✎
14:57
|
День добрый!
Если проведенный документ изменить (заведомо с ошибкой), то вываливается сообщение об ошибке + сообщение, что док-т не проводится, НО сам док-т остается проведенным. Почему? ТиС (в данном случае - стандарт). Спасибо. |
|||
1
АЛьФ
14.04.17
✎
14:59
|
Транзакция?
|
|||
2
Ёпрст
14.04.17
✎
14:59
|
(0) А что не устраивает ?
|
|||
3
Ёпрст
14.04.17
✎
15:00
|
Документ просто при ошибке НЕ меняет своего исходного состояния
|
|||
4
Ёпрст
14.04.17
✎
15:00
|
так и должно быть
|
|||
5
Масянька
14.04.17
✎
15:01
|
(1) Да, нет там тран... короче.
(2) Логично, что должно отмениться проведение. Не? |
|||
6
Масянька
14.04.17
✎
15:02
|
(3) При проведении проведенного: отмена проведения, новое проведение. Не?
|
|||
7
АЛьФ
14.04.17
✎
15:02
|
2(5) А куда же делась транзакция?
|
|||
8
АЛьФ
14.04.17
✎
15:03
|
2(6) Не.
|
|||
9
Ёпрст
14.04.17
✎
15:03
|
(6) Проведение - это всегда одна транзакция, которая не завершилась, что там унутри - фиолетово
|
|||
10
Масянька
14.04.17
✎
15:05
|
(7) Откуда я знаю.
Процедура ОбработкаПроведения(ВидыДвижений) // Проверка заполненности обязательных реквизитов. Если глВсеРеквизитыДокументаЗаполнены(Контекст, "Фирма,Склад,Валюта,Контрагент,Договор")=0 Тогда Возврат; КонецЕсли; Если (Склад.РозничныйСклад = 1) Тогда глНеПроводить(Контекст,"Документ """+ глНазваниеДокументаВЖурнале(Контекст)+""" можно |оформлять только с оптового склада!"); Возврат; КонецЕсли; // Проведение по регистрам оперативного учета. Если (ПустоеЗначение(ВидыДвижений) = 1) ИЛИ (Найти(ВидыДвижений, "Регистр") <> 0) Тогда ПроведениеПоРегистрам(); |
|||
11
Масянька
14.04.17
✎
15:07
|
Ладно...
В модуле док-та - как отменить проведение? |
|||
12
АЛьФ
14.04.17
✎
15:08
|
2(10) Так 1С сама транзакция открывает перед вызовом обработки проведения.
2(11) При проведении? Никак. |
|||
13
Злопчинский
14.04.17
✎
15:09
|
(12) не, извернутьяс можно, но это некузявый вариант
|
|||
14
АЛьФ
14.04.17
✎
15:10
|
2(13) Не надо. Только еще больше ее запутаем.
|
|||
15
Злопчинский
14.04.17
✎
15:12
|
(11) какое проведение?
если нужно отменить текущее проведение - то или ошибкой или СтатусВозврата(0) если отменить ранее выполненное проведение - это тогда "извне" еще есть (но я никогда не использовал) НеПроводитьДокумент(); Синтаксис: НеПроводитьДокумент() Назначение: Отмена проведения документа. Замечание: Метод доступен только в Модуле документа в предопределенной процедуре ОбработкаПроведения. Подробнее см. в документации, глава 'Работа с Документами' |
|||
16
Злопчинский
14.04.17
✎
15:13
|
(11) в модуле проведения генеришь формексом асинхронное событие (?). Оно отрабатывает после окончания транзакции проведения (т.е. тпа как подписка на событие, у меня таких прилично). То есть когда сработает событие - ты уже будешь ВНЕ документа и можешь его распровести.
|
|||
17
Масянька
14.04.17
✎
15:15
|
(15) Еще раз: док-т проведен, открыли, изменили, ошибка, но док-т остается проведенным.
НеПроводить.. - не арбайтен. |
|||
18
Масянька
14.04.17
✎
15:16
|
+ (17) А хочу, чтобы стал не проведенным. Вот.
|
|||
19
Злопчинский
14.04.17
✎
15:16
|
(17) ошибка - не зафиксировалась. документ был проведенным норм? был! остался норм.проведенным - да!
|
|||
20
Злопчинский
14.04.17
✎
15:16
|
(18) а я хочу мороженку лизнуть и еще кое что.. но - Пост...
|
|||
21
Злопчинский
14.04.17
✎
15:19
|
(18) По кнопке проведения - хватай ссылку на документ. документ закрывай программно. по ссылке - проводи.
Если мойМажорныйДокумент.Провести()=0 Тогда Если мойМажорныйДокумент.Проведен()=1 Тогда мойМажорныйДокумент.СделатьНепроведенным(); ОткрытьФорму(мойМажорныйДокумент); КонецЕсли; КонецВсемЕсли; |
|||
22
Ёпрст
14.04.17
✎
15:40
|
Это какой-то неправильный мёд
Масяня, прекращай есть всякую гадость |
|||
23
Масянька
14.04.17
✎
15:43
|
(22) Я мёд не люблю.
А гадость едят - пользователи. Причем, на мой взгляд, гадость абсолютно логичная. |
|||
24
Злопчинский
14.04.17
✎
15:45
|
(23) Обоснуй насчет "логичная"
|
|||
25
Это_mike
14.04.17
✎
15:46
|
(22) может, она использует "ту" ложку? :-)
|
|||
26
Злопчинский
14.04.17
✎
15:47
|
(23) на основании текущего правильного документа вводи "корректировочны" - проводи его - если не провелся - (__.__)
проведение дока по сложившимся соглашениям - отражение свершившегося факта хоз.жизни. то есть кто-то "мухлюет" отражая то чего не было а потом ой.. либо у вас очень специфический колумбийский м.б. конопляный мед. |
|||
27
Irbis
14.04.17
✎
15:51
|
Логика автора реализуется путём насильной отмены проведения и повторным проведением. Нелогично давать править проведённый документ. Сначала отмена проведения, а потом редактирование.
|
|||
28
Масянька
14.04.17
✎
15:52
|
(24) А чего обосновывать?
(26) В таком случае - изначально нужно было запрещать проведение проведенного. От слов "совсем никак". А насчет мухлевки - не надо мерять по себе. |
|||
29
Это_mike
14.04.17
✎
15:52
|
(27) причем отмена не ПКМ-"отменить проведение", а бизнес-процессом, с аудиторским следом и всеми остальными причиндалами.
|
|||
30
Это_mike
14.04.17
✎
15:53
|
(28) вся рота идет не в ногу?
|
|||
31
Злопчинский
14.04.17
✎
15:54
|
(29) угу, так я про это и говорю когда про "корректировку"...
|
|||
32
Злопчинский
14.04.17
✎
15:55
|
(28) это у вас там мухлюют. а у мну отмена проведенного документа = форсмажор и голова по таким поводам не болит.
и чем (21) не устраивает? |
|||
33
Злопчинский
14.04.17
✎
15:56
|
(30) у них там полуразвалившийся мост... поэтому все лазят как хотят наверное ;-)
|
|||
34
Масянька
14.04.17
✎
15:57
|
(30) (31) Забавно...
А когда расчетчик не правильно начислит ЗП (в меньшую сторону) - будете ждать следующей выплаты? |
|||
35
АЛьФ
14.04.17
✎
15:57
|
2(28) Так и что же тебе мешает запретить проведение проведенного?
|
|||
36
Это_mike
14.04.17
✎
16:00
|
(34) почему? отмена. через соответсвующую процедуру. если ошибки редкие - то ничего страшного. а если частые - нужно что-то поправлять в консерватории
|
|||
37
Злопчинский
14.04.17
✎
16:11
|
(34) подожду. с возмещением задержки. и кучей гемора для конторы и расчетчика. ибо нехрен.
|
|||
38
Злопчинский
14.04.17
✎
16:12
|
(34) так в итоге - (21) - чем не подходит?
|
|||
39
Масянька
14.04.17
✎
16:13
|
(38) Костылем.
|
|||
40
Злопчинский
14.04.17
✎
16:19
|
(39) ну извините, если система у вас переломана - то тут только костылями.. или в больничку на излечение...
|
|||
41
Злопчинский
14.04.17
✎
16:19
|
ладно, скучно тут с нами, кремонами невменяемыми, борите дальше, я в спортзал мозги проветрить
|
|||
42
Смотрящий
14.04.17
✎
16:20
|
(0)Праvами заруби корректироvку проvеденного документа.
|
|||
43
АЛьФ
14.04.17
✎
16:20
|
А вот мне все же интересно что мешает запретить редактирование проведенного документа и требовать отмену проведения перед редактированием?
|
|||
44
Irbis
14.04.17
✎
16:25
|
(43)Религия
|
|||
45
Масянька
14.04.17
✎
16:28
|
(42) Зачем? Человеческий фактор никто (пока) не отменял.
(43) При открытии док-та спрашивать: "Просто посмотреть или будете ломать?" :) |
|||
46
Irbis
14.04.17
✎
16:30
|
(45) Нет. Проведённые документы открываются только на просмотр.
|
|||
47
Смотрящий
14.04.17
✎
16:55
|
(45) Глюпая. Так ответственность на тебе, что порождает ветки типа этой (и юзера будут включать дурака); а сяк - юзер распровел док, вся ответственность на нем. Вон у Злопа ваще форсмажор.
|
|||
48
Масянька
14.04.17
✎
17:07
|
(47) В данном случае: с юзерами полное взаимопонимание (сама поражаюсь :) ).
И мне вот все же интересно - что мешает при перепроведении сделать отмена проведения и провести по новой? Как я понимаю - вопрос риторический :) А по поводу форс-мажоров - опять-таки, в данном случае не возникают (сама поражаюсь :) ). |
|||
49
NSSerg
14.04.17
✎
17:08
|
Как всё запущено.
СтатусВОзврата(0); пропущен. Процедура ОбработкаПроведения(ВидыДвижений) // Проверка заполненности обязательных реквизитов. Если глВсеРеквизитыДокументаЗаполнены(Контекст, "Фирма,Склад,Валюта,Контрагент,Договор")=0 Тогда // NS // Тут либо глНеПроводить() по аналогии с кодом ниже // А в глНеПроводить написано Статусвозврата(0); // Либо прямо написать Статусвозврата(0); Возврат; // Но естественно если документ был проведен, то просто // будет отменена транзакция, а документ останется проведенным КонецЕсли; Если (Склад.РозничныйСклад = 1) Тогда глНеПроводить(Контекст,"Документ """+ глНазваниеДокументаВЖурнале(Контекст)+""" можно |оформлять только с оптового склада!"); Возврат; КонецЕсли; |
|||
50
Это_mike
14.04.17
✎
17:10
|
(40) думаешь, это излечимо?
|
|||
51
NSSerg
14.04.17
✎
17:11
|
Виноват, скорей всего в глВсеРеквизитыЗаполнены() есть глНеПроводить()
Так что всё нормально, ветку можно закрывать. (48) Кому мешает? |
|||
52
Масянька
14.04.17
✎
17:14
|
(51)
Процедура глНеПроводить(Конт,Сообщение) Экспорт СтатусВозврата(0); глСообщениеПроведения(Сообщение, Конт.ТекущийДокумент(), 1,,1); глСообщениеПроведения("Документ не проводится!", Конт.ТекущийДокумент(), 1,,1); глПоказатьТрассировку(глСообщенияТрассировки); глСообщенияТрассировки = 0; КонецПроцедуры // глНеПроводить() Функция глВсеРеквизитыДокументаЗаполнены(Конт,СписокРеквизитов) Экспорт Если Константа.РазрешитьПроводитьБудущейДатой = 0 Тогда Если Конт.ДатаДок>РабочаяДата() Тогда глНеПроводить(Конт,"Нельзя проводить документ будущей датой!"); Возврат (0); КонецЕсли; КонецЕсли; Пока СтрДлина(СписокРеквизитов)>0 Цикл ПозЗапятой = Найти (СписокРеквизитов,","); Если ПозЗапятой = 0 Тогда ИдентРеквизита = СписокРеквизитов; СписокРеквизитов = ""; Иначе ИдентРеквизита = Сред(СписокРеквизитов,1,ПозЗапятой-1); СписокРеквизитов = Сред(СписокРеквизитов,ПозЗапятой+1); КонецЕсли; Если ПустоеЗначение(Конт.ПолучитьАтрибут(ИдентРеквизита))=1 Тогда ВидДок = Конт.Вид(); Если Метаданные.Документ(ВидДок).РеквизитШапки(ИдентРеквизита).Выбран()=1 Тогда Объект = Метаданные.Документ(ВидДок).РеквизитШапки(ИдентРеквизита); ИначеЕсли Метаданные.ОбщийРеквизитДокумента(ИдентРеквизита).Выбран()=1 Тогда Объект = Метаданные.ОбщийРеквизитДокумента(ИдентРеквизита); ИначеЕсли Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти(ИдентРеквизита).Выбран()=1 Тогда Объект = Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти(ИдентРеквизита); Иначе глНеПроводить(Конт,"ВсеРеквизитыДокументаЗаполнены(): Неверный реквизит:"+ИдентРеквизита); Возврат (0); КонецЕсли; ПредставлениеРеквизита = ?(ПустоеЗначение(Объект.Синоним)=0,Объект.Синоним,Объект.Идентификатор); глНеПроводить(Конт,"Не заполнен реквизит """+ПредставлениеРеквизита+""""); Возврат (0); КонецЕсли; КонецЦикла; Возврат (1); КонецФункции // глВсеРеквизитыДокументаЗаполнены() Ткни - где отмена проведения? |
|||
53
NSSerg
14.04.17
✎
17:17
|
(52) Тыкаю - статусвозврата(0) видишь?
И про какую отмену проведения идет речь? Ты хочешь чтоб при перепроведении документа с ошибкой он становился непроведенным? Это уже не ко мне. |
|||
54
Масянька
14.04.17
✎
17:18
|
(53) А зачем пришел?
|
|||
55
NSSerg
14.04.17
✎
17:22
|
(54) Ну если уж заставляешь ответить - ИМХО за тем же за чем и остальные пришли. Посмотреть на очередную клоунаду.
Если у тебя при перепроведении документа с ошибками он будет становиться непроведенным - то ты потом концов не сыщешь. |
|||
56
Масянька
14.04.17
✎
17:26
|
(55) То есть - если отменить проведение - с концами всё норм будет?
|
|||
57
Смотрящий
14.04.17
✎
17:33
|
С концами и так все норм
|
|||
58
АЛьФ
14.04.17
✎
17:38
|
2(56) Есть три осмысленных действия с документом:
- проведение - отмена проведения - перепроведение Это абсолютно разные действия. Ты хочешь, чтобы одно из действий вело себя, как составное из двух других. Так возьми и реализуй четвертое действие, которое будет состоять из двух транзакций: сначала отмена проведения, а потом проведение. |
|||
59
Масянька
14.04.17
✎
17:39
|
(58) Расскажи, что происходит при перепроведении.
|
|||
60
X Leshiy
14.04.17
✎
17:42
|
(59) При перепроведении отмена и проведение в одной транзакции. Естественно, что при ошибке откатывает назад.
|
|||
61
Масянька
14.04.17
✎
17:44
|
(60) То бишь все-таки - оно составное?
|
|||
62
X Leshiy
14.04.17
✎
17:46
|
Да без разницы.
Хоть пятисоставное, хоть десяти. Начинается транзакция, происходит всякое, если ошибка на любом этапе, откатывает назад. |
|||
63
АЛьФ
14.04.17
✎
17:49
|
2(59) При перепроведении происходит перепроведение. Это единый процесс.
|
|||
64
АЛьФ
14.04.17
✎
17:51
|
2(61) Единое.
|
|||
65
NSSerg
14.04.17
✎
21:39
|
(56) да, если отмена проведения будет происходить при отмене проведения - с концами будет всё ок.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |