|
1С 8.3 удаление движений документа | ☑ | ||
---|---|---|---|---|
0
Nesh
27.06.13
✎
17:47
|
Например есть документ Расход денег. В документе свойство "Удаление движений" установлено в "Автоматически".
Должен ли такой код удалить движения? РасходДенегОбъект.ОбменДанными.Загрузка = Истина; РасходДенегОбъект.Проведен = Ложь; РасходДенегОбъект.Записать(); |
|||
1
Bober
27.06.13
✎
17:48
|
(0) нет, не должен
|
|||
2
Nesh
27.06.13
✎
17:49
|
странно, почему же в типовой тогда ожидают, что он удалит
|
|||
3
Maxus43
27.06.13
✎
17:49
|
ОбменДанными.Загрузка убери
и Записать(режимЗаписиДокумента.ОтменаПроведения) |
|||
4
Bober
27.06.13
✎
17:49
|
(2) в какой типовой?
|
|||
5
Maxus43
27.06.13
✎
17:50
|
(2) в УПП не ожидают. везде "НЕ Удалять автоматически"
|
|||
6
Nesh
27.06.13
✎
17:52
|
(3) я это все понимаю, не пойму почему в типовой так сделали, может есть нюансы, о которых я не знал.
типова УНФ Мобильное приложение. вот кусок кода: Если Не Объект.Проведен Тогда Объект.Записать(); Иначе // отменяем проведение документа Объект.Проведен = Ложь; Объект.Записать(); КонецЕсли; |
|||
7
Nesh
27.06.13
✎
17:53
|
(5) так не только есть УПП типовая )
|
|||
8
hhhh
27.06.13
✎
17:59
|
(6) вроде нигде не написано в комментариях, что он удалит движения. С чего вы взяли?
|
|||
9
EugeniaK
27.06.13
✎
17:59
|
(6) И где там загрузка = истина?
|
|||
10
Nesh
27.06.13
✎
18:00
|
вот вся простыня:
// Процедура записывает документ в информацилнную базу. // Процедура ЗаписатьДокумент(УзелОбмена, Объект, ОбъектXDTO, НужноЗаписыватьОбъект, НомерИзменен, КоличествоЗаписанных, ДокументыДляОтложенногоПроведения) Если НужноЗаписыватьОбъект ИЛИ НомерИзменен Тогда Объект.ПометкаУдаления = ОбъектXDTO.DeletionMark; РежимЗаписи = РежимЗаписиДокумента.Проведение; Если Не ОбъектXDTO.Posted Тогда РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения; КонецЕсли; Если Объект.ПометкаУдаления И (РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда Объект.ПометкаУдаления = Ложь; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Номер) Тогда Объект.УстановитьНовыйНомер(); КонецЕсли; Объект.ОбменДанными.Загрузка = Истина; Если НужноЗаписыватьОбъект Тогда Объект.ИзЦентральнойБазы = Истина; КонецЕсли; Объект.ДополнительныеСвойства.Вставить("УзелОбмена", УзелОбмена); Попытка Объект.Записать(); Исключение ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; Если РежимЗаписи = РежимЗаписиДокумента.Проведение ИЛИ РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда Если ДокументыДляОтложенногоПроведения.Найти(Объект.Ссылка, "ДокументСсылка") = Неопределено Тогда СтрокаТаблицы = ДокументыДляОтложенногоПроведения.Добавить(); СтрокаТаблицы.ДокументСсылка = Объект.Ссылка; СтрокаТаблицы.РежимЗаписи = РежимЗаписи; КонецЕсли; КонецЕсли; КоличествоЗаписанных = КоличествоЗаписанных + 1; КонецЕсли; ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Объект); КонецПроцедуры // ЗаписатьДокумент() |
|||
11
Nesh
27.06.13
✎
18:04
|
(8) в данном случае смысла отменять проведение документа без отмены его движений нету. Так что я уверен, что рассчитывали на отмену движений.
|
|||
12
hhhh
27.06.13
✎
18:05
|
(10) так это же обмен. Что вы нам лапшу на уши вешаете? В обмене движения отдельно переносятся от документа. Надо бы уже знать элементарные вещи. Стаж 3г 7мес.
|
|||
13
Nesh
27.06.13
✎
18:05
|
(12) это измененная уже.
в оригинале все по другому |
|||
14
Nesh
27.06.13
✎
18:07
|
(12) вот оригинал
Процедура ЗаписатьДокумент(УзелОбмена, Объект, ОбъектXDTO, НужноЗаписыватьОбъект, НомерИзменен, КоличествоЗаписанных, ДокументыДляОтложенногоПроведения) Если НужноЗаписыватьОбъект ИЛИ НомерИзменен Тогда Объект.ПометкаУдаления = ОбъектXDTO.DeletionMark; РежимЗаписи = РежимЗаписиДокумента.Проведение; Если Не ОбъектXDTO.Posted Тогда РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения; КонецЕсли; Если Объект.ПометкаУдаления И (РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда Объект.ПометкаУдаления = Ложь; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Номер) Тогда Объект.УстановитьНовыйНомер(); КонецЕсли; Объект.ОбменДанными.Загрузка = Истина; Если НужноЗаписыватьОбъект Тогда Объект.ИзЦентральнойБазы = Истина; КонецЕсли; Объект.ДополнительныеСвойства.Вставить("УзелОбмена", УзелОбмена); Попытка Если Не Объект.Проведен Тогда Объект.Записать(); Иначе // отменяем проведение документа Объект.Проведен = Ложь; Объект.Записать(); КонецЕсли; Исключение ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; Если РежимЗаписи = РежимЗаписиДокумента.Проведение ИЛИ РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда Если ДокументыДляОтложенногоПроведения.Найти(Объект.Ссылка, "ДокументСсылка") = Неопределено Тогда СтрокаТаблицы = ДокументыДляОтложенногоПроведения.Добавить(); СтрокаТаблицы.ДокументСсылка = Объект.Ссылка; КонецЕсли; КоличествоЗаписанных = КоличествоЗаписанных + 1; КонецЕсли; ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Объект); КонецПроцедуры // ЗаписатьДокумент() и где тут отмена проведения? |
|||
15
Nesh
27.06.13
✎
18:09
|
(12) а вот сама процедура записи движений? и где тут отмена движений?
Процедура ВыполнитьОтложенноеПроведениеДокументов(УзелОбмена, ДокументыДляОтложенногоПроведения) Для каждого СтрокаТаблицы Из ДокументыДляОтложенногоПроведения Цикл Если СтрокаТаблицы.ДокументСсылка.Пустая() Тогда Продолжить; КонецЕсли; Объект = СтрокаТаблицы.ДокументСсылка.ПолучитьОбъект(); Если Объект = Неопределено Тогда Продолжить; КонецЕсли; Объект.ОбменДанными.Загрузка = Ложь; Попытка Объект.ПроверитьЗаполнение(); Объект.Записать(РежимЗаписиДокумента.Проведение); ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Объект); Исключение КонецПопытки; КонецЦикла; КонецПроцедуры // ВыполнитьОтложенноеПроведениеДокументов() |
|||
16
hhhh
27.06.13
✎
18:09
|
(14) ну какая разница? Ну
Процедура ЗаписатьДокумент(УзелОбмена только для узла обмена используется процедура. В обмене не нужно чистить движения. |
|||
17
hhhh
27.06.13
✎
18:10
|
(15) вот здесь отмена
Объект.Записать(РежимЗаписиДокумента.Проведение); |
|||
18
Nesh
27.06.13
✎
18:13
|
(17) если Вы по коду посмотрите выше, то если документ не был проведен в центральной базе, то сюда ( Объект.Записать(РежимЗаписиДокумента.Проведение) даже не дойдет.
когда менял на оригинал забыл еще забрать условие перед добавлением в таблицу отл. движений: это не нужено РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда |
|||
19
Nesh
27.06.13
✎
18:19
|
только что скачал релиз, вот оригинал без правок:
Процедура ЗаписатьДокумент(УзелОбмена, Объект, ОбъектXDTO, НужноЗаписыватьОбъект, НомерИзменен, КоличествоЗаписанных, ДокументыДляОтложенногоПроведения) Если НужноЗаписыватьОбъект ИЛИ НомерИзменен Тогда Объект.ПометкаУдаления = ОбъектXDTO.DeletionMark; РежимЗаписи = РежимЗаписиДокумента.Проведение; Если Не ОбъектXDTO.Posted Тогда РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения; КонецЕсли; Если Объект.ПометкаУдаления И (РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда Объект.ПометкаУдаления = Ложь; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Номер) Тогда Объект.УстановитьНовыйНомер(); КонецЕсли; Объект.ОбменДанными.Загрузка = Истина; Если НужноЗаписыватьОбъект Тогда Объект.ИзЦентральнойБазы = Истина; КонецЕсли; Объект.ДополнительныеСвойства.Вставить("УзелОбмена", УзелОбмена); Попытка Если Не Объект.Проведен Тогда Объект.Записать(); Иначе // отменяем проведение документа Объект.Проведен = Ложь; Объект.Записать(); КонецЕсли; Исключение ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда Если ДокументыДляОтложенногоПроведения.Найти(Объект.Ссылка, "ДокументСсылка") = Неопределено Тогда СтрокаТаблицы = ДокументыДляОтложенногоПроведения.Добавить(); СтрокаТаблицы.ДокументСсылка = Объект.Ссылка; КонецЕсли; КонецЕсли; КоличествоЗаписанных = КоличествоЗаписанных + 1; КонецЕсли; ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Объект); КонецПроцедуры // ЗаписатьДокумент() |
|||
20
hhhh
27.06.13
✎
20:13
|
(19) вы нам всё-таки обмен дваижениями скачайте. Как он происходит.
ОтложенноеПроведениеДокументов - это мягко говоря совсем из другой оперы. Даже рядом не валялось. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |