|
Как програмно удалить документ (если в модуле объекта есть контроли) | ☑ | ||
---|---|---|---|---|
0
vova1122
06.02.19
✎
18:58
|
В модуле объекта документа у меня есть контроль запрещающий удаление документов
Процедура ПередЗаписью(....) Если Проведен тогда ЕСли (Ссылка.ПометкаУдаления = Ложь) и (ПометкаУдаления = Истина) тогда //это пометка на удаление Если Дата=ТекущаяДата() тогда Отказ=Истина; Возврат; КонецЕсли; КонецЕсли; На самом деле там больше всяких проверок. А как программно удалить этот документ (обойдя все эти проверки)? |
|||
1
unregistered
06.02.19
✎
19:00
|
И в начале нет ничего типа.
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; |
|||
2
vova1122
06.02.19
✎
19:03
|
нет такого. я только учусь писать на 8. в семерке таких проблем нет
|
|||
3
Джинн
06.02.19
✎
19:05
|
(2) Сами добавили - сами и обойдите.
|
|||
4
unregistered
06.02.19
✎
19:08
|
(2) А что за конфигурация?
Во всех типовых такой кусок кода с проверкой на параметры обмена данными в обязательном порядке стоит во всех обработчиках ПередЗаписью и им подобным. При необходимости записать объект, игнорируя бизнес-логику, включают режим обмена данными. А по сути Джинн прав. Если это самописка, то придумывайте сами - как вам лучше обходить свои собственные заборы. |
|||
5
vova1122
06.02.19
✎
19:16
|
да, конфигурация самописная. Пока моло опыта чтобы придумать. Может подскажите?
|
|||
6
vova1122
06.02.19
✎
19:19
|
Пока придумал только завести СуперПуперПользователя и для него не делать эти проверки. Но это тупо?
|
|||
7
unregistered
06.02.19
✎
19:35
|
(6) Это бред.
|
|||
8
ДенисЧ
06.02.19
✎
19:36
|
(6) Как в (1) сделать религия не позволяет?
|
|||
9
Garykom
гуру
06.02.19
✎
19:37
|
Бред это делать запреты чтобы потом героически их преодолевать
|
|||
10
unregistered
06.02.19
✎
19:38
|
В самом начале обработчика ПередЗаписью добавляешь код.
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Затем в твоей обработке, где ты пытаешься программно удалить документ пишешь что-то типа. УдаляемыйМноюДокументОбъект.ОбменДанными.Загрузка = Истина; УдаляемыйМноюДокументОбъект.УстановитьПометкуУдаления(Истина); |
|||
11
unregistered
06.02.19
✎
19:40
|
(9) Почему же? Запреты и разного рода проверки - это обычная практика, применяемая повсеместно. Есть определенная бизнес-логика приложения, которая должна соблюдаться, чтобы приложение работало корректно. Не понимаю чего в этом странного?
|
|||
12
vova1122
06.02.19
✎
19:47
|
это в журнале документов
Процедура УдалитьНажатие(Элемент) ТД=ЭтаФорма.ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока; ТДД=ТД.ПолучитьОбъект(); ТДД.ОбменДанными.Загрузка = Истина; ТДД.УстановитьПометкуУдаления(Истина); КонецПроцедуры 1С-ка ругается: Действие не может выполняться в режиме загрузки данных. (не может установить пометку удаления) |
|||
13
Garykom
гуру
06.02.19
✎
19:49
|
(12)
ТДД.ПометкаУдаления = Истина; ТДД.Записать(РежимЗаписиДокумента.Запись); |
|||
14
vova1122
06.02.19
✎
19:56
|
(13) не помогло. с этим кодом никаких действий не возникает.
А если пробовать удалить непроведенный документ по удаляет |
|||
15
Garykom
гуру
06.02.19
✎
20:02
|
(14) РежимЗаписиДокумента.ОтменаПроведения ?
|
|||
16
vova1122
06.02.19
✎
20:06
|
(15) теперь ругается как же само на эту строку. (Действие не может выполняться в режиме загрузки данных.)
|
|||
17
hhhh
06.02.19
✎
20:14
|
(16) а если просто удалить, какую ошибку выдает?
дело в том, что ЕСли (Ссылка.ПометкаУдаления = Ложь) и (ПометкаУдаления = Истина) тогда //это пометка на удаление Если Дата=ТекущаяДата() тогда Отказ=Истина; Возврат; КонецЕсли; не запрещает пометку Удаления. Какие-то балбесы его писали. Должно спокойно пометить. |
|||
18
vova1122
06.02.19
✎
20:18
|
(17) Так смотри ниже проверяется дата (Правильно у меня так (Если Дата<=ТекущаяДата() тогда )) . И если дата меньше то отказ
|
|||
19
vova1122
06.02.19
✎
20:21
|
+(18) Єтот балбес - єто я. Нашеп такой пример как проверить что дукументу устанавливают признак удаления. вот и применил.
|
|||
20
vova1122
06.02.19
✎
20:23
|
Вот что выдала Миста: При ОбменДанными.Загрузка=Истина проведение запрещено (первый ответ Действие не может выполняться в режиме загрузки данных, почему?)
|
|||
21
vova1122
06.02.19
✎
20:28
|
вот так заработало
Если ОбменДанными.Загрузка Тогда ОбменДанными.Загрузка=Ложь; Возврат; КонецЕсли; |
|||
22
timurhv
06.02.19
✎
20:36
|
(21) По-любому, код из (0) - ваш!
|
|||
23
vova1122
06.02.19
✎
20:46
|
(22) Эта строка из интернета
ЕСли (Ссылка.ПометкаУдаления = Ложь) и (ПометкаУдаления = Истина) тогда |
|||
24
GANR
06.02.19
✎
20:49
|
(23) А какой мудила без ОбменДанными.Загрузка сделал обработчик? Найдете - проучите обязательно, чтоб он в других местах такого не наделал. Отсутствие этого заклинания приведет к "неожиданному" падению любой конвертации, загрузки данных, удаления и других массовых операций над объектами, при которых необходимо выключать бизнес-логику.
|
|||
25
vova1122
06.02.19
✎
20:54
|
(24) повторюсь. Этот мудила я. Так как мыслю стандартами 7.7. И только начал знакомится с 8.3 и первое задание переписать нетленку из 7.7 на 8.3
|
|||
26
Мимохожий Однако
06.02.19
✎
23:26
|
(25) Я тебя зауважал )
|
|||
27
palsergeich
06.02.19
✎
23:27
|
(25) Мужик!
|
|||
28
catena
07.02.19
✎
05:56
|
(21)Давно я не пополняла свои анналы, спасибо)))
|
|||
29
Конструктор1С
07.02.19
✎
08:47
|
Обязательно изучи вот этот стандарт:
https://its.1c.ru/db/v8std |
|||
30
Мыш
07.02.19
✎
09:14
|
(25) > переписать нетленку из 7.7 на 8.3
Безумству храбрых поём мы песню ) |
|||
31
Конструктор1С
07.02.19
✎
09:20
|
(25) "первое задание переписать нетленку из 7.7 на 8.3"
Под восьмерку нужно не тупо переписывать с семерки, а перепроектировать всё заново. Когда семерошную нетленку пытаются превратить в восмерочную нетленку, обычно жуткая костылина получается. |
|||
32
Мыш
07.02.19
✎
09:21
|
(31) Но сколько опыта! Не догонит, зато согреется )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |