|
Как изменить дату документа. | ☑ | ||
---|---|---|---|---|
0
leva_90
28.09.16
✎
11:09
|
Всем здравствуйте. Дали мне задание - написать обработку изменяющую дату документа на 2 года назад.
Вроде все сделал, через отладку проверил. По коду все работает, ошибок обработка не выдает, только вот даты так и не меняются... В чем может быть проблема? вот код обработки: Процедура ИзменениеДатыОбъекта(НачДат,КонДат) Экспорт ДокОбразец = Неопределено; ДокВыборка = Документы.НастраиваемыйОтчет.Выбрать(НачДат,КонДат); Пока ДокВыборка.Следующий() Цикл ДокОбразец = ДокВыборка.ПолучитьОбъект(); ДатаДокумента = ДокОбразец.Дата; ДокОбразец.Дата = ДобавитьМесяц(ДатаДокумента,-24); КонецЦикла; КонецПроцедуры |
|||
1
RomanYS
28.09.16
✎
11:11
|
ДокОбразец.Записать() ?
Только выборка возможно сломается, а движения документа останутся на старых датах. |
|||
2
impulse9
28.09.16
✎
11:16
|
Получи список документов запросом, в цикле меняй дату и проводи
|
|||
3
leva_90
28.09.16
✎
11:17
|
RomanYS, да им это не важно). А записывать внутри цикла?
|
|||
4
leva_90
28.09.16
✎
11:18
|
(2) их проводить не нужно, некоторые из них вообще помечены на удаление.
|
|||
5
anatoly
28.09.16
✎
11:22
|
(3) если каждый - внутри.
если только последний - снаружи )) |
|||
6
leva_90
28.09.16
✎
11:26
|
(5) Понял, только че то ошибку выдаёт...
{Обработка.ИзменениеДатыОтчетов.МодульОбъекта(11)}: Ошибка при вызове метода контекста (Записать) ДокОбразец.Записать(); по причине: Не удалось записать "Экземпляр отчета 00006900 от 22.10.2014 10:56:42"! |
|||
7
IlyaSR
28.09.16
✎
11:29
|
а если период закрыт, то твоя схема не прокатит
|
|||
8
leva_90
28.09.16
✎
11:30
|
(7) Вручную у них пркатывает. Может у меня прав не хватает?
Документ "Экземпляр отчета 00006900 от 22.10.2012 10:56:42" не может быть записан: - по сценарию "Факт (отчет)" период "2014.09.Сентябрь" установлен запрет на изменение! |
|||
9
Serg_1960
28.09.16
✎
11:37
|
(4) "их проводить не нужно, некоторые из них вообще помечены на удаление." - а если всё-таки были проведены?
Если ДокументОбъект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить И ДокументОбъект.Проведен Тогда ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); Иначе ДокументОбъект.Записать(); КонецЕсли; |
|||
10
leva_90
28.09.16
✎
11:40
|
(9) Спасибо, буду пробовать
|
|||
11
Serg_1960
28.09.16
✎
11:41
|
(8) "...установлен запрет на изменение!" - попробуй вставить (конфигурация не озвучена):
Процедура ИзменениеДатыОбъекта(НачДат,КонДат) Экспорт СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить(); ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Неопределено, Новый СжатиеДанных(0)); ... ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(СоответствиеГраницЗапрета, Новый СжатиеДанных(0)); КонецПроцедуры |
|||
12
IlyaSR
28.09.16
✎
11:41
|
Процедура ИзменениеДатыОбъекта(НачДат,КонДат) Экспорт
ДокОбразец = Неопределено; ДокВыборка = Документы.НастраиваемыйОтчет.Выбрать(НачДат,КонДат); УстановитьПривилегированныйРежим(Истина); Пока ДокВыборка.Следующий() Цикл ДокОбразец = ДокВыборка.ПолучитьОбъект(); ДокОбразец .ОбменДанными.Загрузка = Истина; ДатаДокумента = ДокОбразец.Дата; ДокОбразец.Дата = ДобавитьМесяц(ДатаДокумента,-24); Попытка ДокОбразец.Записать(РежимЗаписиДокумента.Запись); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки КонецЦикла; УстановитьПривилегированныйРежим(Ложь); КонецПроцедуры |
|||
13
Serg_1960
28.09.16
✎
11:45
|
*(12) Может не прокатить, если в конфигурации программно проверяется дата запрета редактирования и она распространяется на полные права.
|
|||
14
Serg_1960
28.09.16
✎
11:48
|
Эээ... отставить замечание :) Алгоритм записывает при "...Загрузка = Истина" и не предполагает проведение документа.
|
|||
15
leva_90
28.09.16
✎
11:48
|
(12) (13) , всем спасибо, все получилось по (11) коду)
|
|||
16
leva_90
28.09.16
✎
11:49
|
пардон, (12) коду))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |