|
Отмена проведения и удаление документа | ☑ | ||
---|---|---|---|---|
0
UDav5
03.08.20
✎
13:38
|
Подскажите пожалуйста хочу удалить программно документ у которого необходимо предварительно отменить проведение
Делаю так. Док = Выборка.ПолучитьОбъект(); Док.Записать(РежимЗаписиДокумента.ОтменаПроведения); Дальше пытаюсь удалить документ Док.Удалить(); Выскакивает сообщение об ошибке : Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)! |
|||
1
Mankubus
03.08.20
✎
13:40
|
Док = Выборка.ПолучитьОбъект();
Док.Записать(РежимЗаписиДокумента.ОтменаПроведения); Док = Выборка.ПолучитьОбъект(); Док.Удалить(); |
|||
2
spiller26
03.08.20
✎
13:42
|
(0) Вы его получается получили-изменили состояние, а второй раз пытаетесь удалить, но он помнит состояния до изменения, т.е. переполучить нужно.
|
|||
3
John83
03.08.20
✎
13:44
|
(1) (2) а я неоднократно делал, как (0) и проблем таких не было
|
|||
4
UDav5
03.08.20
✎
13:53
|
Сделал только что вариант (1) . Почему то получилось только с если я запомнил в переменную номер потом его нашел по номеру и удалил. Либо второй вариант
Док.Ссылка.ПолучитьОбъект().Удалить(); Только вот не совсем понял почему получилось только с ссылкой ???? Не судите строго. Только начал осваивать 1С. |
|||
5
Kigo_Kigo
03.08.20
✎
13:59
|
Ну вообще то, для того чтобы удалить док, его не обязательно сначала распроводить, можно сразу удалять
|
|||
6
UDav5
03.08.20
✎
14:09
|
Kigo_Kigo. Спасибо за ответ. Так тоже делал. Но в ДЗ к обучалке было задание, с начало снять с проведения чтобы ушло движение в регистре сведений, а потом удалить. Вот и пошел по длинному пути. Наткнулся на грабли из-за незнания вопроса в полном объеме.
|
|||
7
RomanYS
03.08.20
✎
14:11
|
(5) Только не в режиме ОбменДанными.Загрузка = Истина. В этом режиме останутся битые ссылки: в подчиненных РС и движения останутся. Про остальные ссылки при удалении без проверки вообще не говорю
|
|||
8
Ns33
03.08.20
✎
14:21
|
Код из (0) должен нормально работать. Тут где-то ещё в процессе проведения с этим доком делается ПолучитьОбъект() и Записать().
|
|||
9
RomanYS
03.08.20
✎
14:26
|
(8) +1
Может отложенная запись какая регламентным заданием. |
|||
10
UDav5
03.08.20
✎
14:32
|
(8) и (9) Конфигурация полностью самописаная. Провожу я этот документ в ручную , а потом запускаю обработку которая проходит по документам в цикле и проверяет, если документ проведенный то снимает проведение и удаляет. Ни каких заданий нет.
|
|||
11
RomanYS
03.08.20
✎
14:34
|
(10) весь код покажи
|
|||
12
UDav5
03.08.20
✎
14:36
|
&НаСервереБезКонтекста
Процедура УдалитьНаСервере() СозданиеВалютыДаНет = ПолучитьЗначениеКонстанты(); Если СозданиеВалютыДаНет = Истина Тогда Выборка = Документы.УстановкаКурсаВалют.Выбрать(); Пока Выборка.Следующий() Цикл ФлагУдаленияДокумента = Ложь; Для каждого ТекСтрока Из Выборка.Курсы Цикл Если ТекСтрока.Валюта.Предопределенный = Ложь Тогда ФлагУдаленияДокумента = Истина; Прервать; КонецЕсли; КонецЦикла; Если ФлагУдаленияДокумента = Истина Тогда Если Выборка.Проведен = Истина Тогда Док = Выборка.ПолучитьОбъект(); Док.Записать(РежимЗаписиДокумента.ОтменаПроведения); Док.Удалить(); //Док.Ссылка.ПолучитьОбъект().Удалить(); //НомерДокумента = Док.Номер; //ДокУдаления = Документы.УстановкаКурсаВалют.НайтиПоНомеру(НомерДокумента); //ДокУдаления.ПолучитьОбъект().Удалить(); //Выборка.ПолучитьОбъект().Удалить(); Иначе Выборка.ПолучитьОбъект().Удалить(); КонецЕсли; КонецЕсли; КонецЦикла; СпрВал = Справочники.Валюты.Выбрать(); Пока СпрВал.Следующий() Цикл Если СпрВал.Предопределенный = Ложь Тогда СпрВал.ПолучитьОбъект().Удалить(); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
13
Ns33
03.08.20
✎
14:55
|
Поставь точку останова в ПередЗаписью() документа, и посмотри сколько раз она зайдет туда. Должно 2 раза - один раз твой, второй - тот что вызывает изменение извне.
|
|||
14
UDav5
03.08.20
✎
15:46
|
Спасибо большое всем !!! Разобрался !!! (13) В процедуру ПередЗаписью() заходит один раз.
|
|||
15
RomanYS
03.08.20
✎
16:37
|
(14) Ну расскажи. Отмена проведения перезаписывала документ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |