Выбираю нужные мне документы и загоняю их в список значений
и когда в цикле пытаюсь изменить их дату
Для Н = 1 по ВсеДокументы.РазмерСписка() Цикл
ДокС = ВсеДокументы.ПолучитьЗначение(Н);
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
КонецЦикла;
выдет ошибку
ДокС.Записать();
{C:\DOCUMENTS AND SETTINGS\ARUDAVIN\РАБОЧИЙ СТОЛ\РУДАВИН\ОБРАБОТКИВМЕДЛЮКСЕ\УСТАНОВКАДАТЫПП.ERT(45)}: Не выбран документ!
почему ?
и когда в цикле пытаюсь изменить их дату
Для Н = 1 по ВсеДокументы.РазмерСписка() Цикл
ДокС = ВсеДокументы.ПолучитьЗначение(Н);
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
КонецЦикла;
выдет ошибку
ДокС.Записать();
{C:\DOCUMENTS AND SETTINGS\ARUDAVIN\РАБОЧИЙ СТОЛ\РУДАВИН\ОБРАБОТКИВМЕДЛЮКСЕ\УСТАНОВКАДАТЫПП.ERT(45)}: Не выбран документ!
почему ?
По теме из базы знаний
- Обработка выборки документов и выборочное перепроведение по видам движений для 1С-Предприятие-7.7
- Выгрузка из БГУ 7.7. бланков строгой отчетности - остатков счета 03 (формирование документов "Поступление БСО" по остаткам счета 03)
- Загрузка документов из Excel в 1С: УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Ввод документа "Отчет производства за смену" на основании документа или нескольких документов "Реализация (акты, накладные)" для БП 3.0
- Перенумерация (смена даты и времени) справочников и документов (обычные и управляемые формы)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ошибку выдает, потому что список у тебя небось не документов.
Правильно делать так:
Док=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(ДатаНач,ДатаКон);
Пока (Док.ПолучитьДокумент()=1) Цикл
Док.ДатаДок=НоваяДата;
Док.Записать();
КонецЦикла
Только я бы еще проверку на состояние документа делал. (Проведен, ПометкаУдаления), а то косячки полезут.
Правильно делать так:
Док=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(ДатаНач,ДатаКон);
Пока (Док.ПолучитьДокумент()=1) Цикл
Док.ДатаДок=НоваяДата;
Док.Записать();
КонецЦикла
Только я бы еще проверку на состояние документа делал. (Проведен, ПометкаУдаления), а то косячки полезут.
Это решение
Док=СоздатьОбъект("Документ");
Для Н = 1 по ВсеДокументы.РазмерСписка() Цикл
ДокС = ВсеДокументы.ПолучитьЗначение(Н);
Док.НайтиДокумент(ДокС);
ДокС=Док.ТекущийДокумент();
Если ДокС.Проведен()=1 Тогда
ДокС.СделатьНеПроведенным();
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
ДокС.Провести();
Иначе
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
КонецЕсли;
КонецЦикла;
Для Н = 1 по ВсеДокументы.РазмерСписка() Цикл
ДокС = ВсеДокументы.ПолучитьЗначение(Н);
Док.НайтиДокумент(ДокС);
ДокС=Док.ТекущийДокумент();
Если ДокС.Проведен()=1 Тогда
ДокС.СделатьНеПроведенным();
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
ДокС.Провести();
Иначе
ДокС.ДатаДок = ДатаП;
ДокС.Записать();
КонецЕсли;
КонецЦикла;
Это решение
Я тоже встречал такой же косяк, только мне нужно было увеличить дату ровно на год, и так как написал Reskator, обработка не работает, т.к. получается глюк, после того как мы изменяем дату документа и записываем - мы выпрыгиваем из выборки документов, поэтому я сделал вот так, чуть медленне но главное работает:
Док=СоздатьОбъект("Документ");
СЗ=СоздатьОбъект("СписокЗначений");
Если Док.ВыбратьДокументы(НачДата,КонДата)=1 тогда
Пока Док.ПолучитьДокумент()=1 цикл
СЗ.ДобавитьЗначение(Док.ТекущийДокумент());
КонецЦикла;
Для Ном=1 по СЗ.РазмерСписка() цикл
Док.НайтиДокумент(СЗ.ПолучитьЗначение(Ном));
Если Док.ПометкаУдаления()=0 тогда
Док.ДатаДок=ДобавитьМесяц(Док.ДатаДок,12);
Док.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Док=СоздатьОбъект("Документ");
СЗ=СоздатьОбъект("СписокЗначений");
Если Док.ВыбратьДокументы(НачДата,КонДата)=1 тогда
Пока Док.ПолучитьДокумент()=1 цикл
СЗ.ДобавитьЗначение(Док.ТекущийДокумент());
КонецЦикла;
Для Ном=1 по СЗ.РазмерСписка() цикл
Док.НайтиДокумент(СЗ.ПолучитьЗначение(Ном));
Если Док.ПометкаУдаления()=0 тогда
Док.ДатаДок=ДобавитьМесяц(Док.ДатаДок,12);
Док.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Это решение
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот