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