Имя: Пароль:
1C
1С v8
Как изменить дату документа.
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) коду))
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс