Смена даты документа в обработке

1. 19.03.06 01:13 Сейчас в теме
Выбираю нужные мне документы и загоняю их в список значений
и когда в цикле пытаюсь изменить их дату
Для Н = 1 по ВсеДокументы.РазмерСписка() Цикл
ДокС = ВсеДокументы.ПолучитьЗначение(Н);
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
КонецЦикла;
выдет ошибку
ДокС.Записать();
{C:\DOCUMENTS AND SETTINGS\ARUDAVIN\РАБОЧИЙ СТОЛ\РУДАВИН\ОБРАБОТКИВМЕДЛЮКСЕ\УСТАНОВКАДАТЫПП.ERT(45)}: Не выбран документ!
почему ?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 19.03.06 01:13 Сейчас в теме
а я бы точно делал бы через
Д = СоздатьОбъект("Документ");
Д.НайтиДокумент( ВсеДокументы.ПолучитьЗначение(Н));
3. Reskator 20.04.06 13:22 Сейчас в теме
Ошибку выдает, потому что список у тебя небось не документов.

Правильно делать так:

Док=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(ДатаНач,ДатаКон);
Пока (Док.ПолучитьДокумент()=1) Цикл
Док.ДатаДок=НоваяДата;
Док.Записать();
КонецЦикла

Только я бы еще проверку на состояние документа делал. (Проведен, ПометкаУдаления), а то косячки полезут.
4. Yurij_zp 95 21.04.06 12:51 Сейчас в теме
Док=СоздатьОбъект("Документ");
Для Н = 1 по ВсеДокументы.РазмерСписка() Цикл
ДокС = ВсеДокументы.ПолучитьЗначение(Н);
Док.НайтиДокумент(ДокС);
ДокС=Док.ТекущийДокумент();
Если ДокС.Проведен()=1 Тогда
ДокС.СделатьНеПроведенным();
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
ДокС.Провести();
Иначе
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
КонецЕсли;
КонецЦикла;
5. pj7 13.05.06 12:30 Сейчас в теме
Я тоже встречал такой же косяк, только мне нужно было увеличить дату ровно на год, и так как написал Reskator, обработка не работает, т.к. получается глюк, после того как мы изменяем дату документа и записываем - мы выпрыгиваем из выборки документов, поэтому я сделал вот так, чуть медленне но главное работает:

Док=СоздатьОбъект("Документ");
СЗ=СоздатьОбъект("СписокЗначений");
Если Док.ВыбратьДокументы(НачДата,КонДата)=1 тогда
Пока Док.ПолучитьДокумент()=1 цикл
СЗ.ДобавитьЗначение(Док.ТекущийДокумент());
КонецЦикла;
Для Ном=1 по СЗ.РазмерСписка() цикл
Док.НайтиДокумент(СЗ.ПолучитьЗначение(Ном));
Если Док.ПометкаУдаления()=0 тогда
Док.ДатаДок=ДобавитьМесяц(Док.ДатаДок,12);
Док.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот