v7: Программное перепроведение документов с изменением даты
☑
0
МаксимБел
07.05.14
✎
00:59
Собственно, как это сделать?
Т.е. надо выбрать документы за определенный день и поменять им дату.
Вот так пробовал - не получается.
Выборка = СоздатьОбъект("Документ.Расходная");
Выборка.ВыбратьДокументы(ДатаДок,ДатаДок);
ЭтотОбъект = ТекущийДокумент();
Пока Выборка.ПолучитьДокумент() > 0 Цикл
ТекДок = Выборка;
Если (ТекДок.ПометкаУдаления() = 1) ИЛИ (ТекДок.ТекущийДокумент() = ЭтотОбъект) Тогда
Продолжить;
КонецЕсли;
Если ТекДок.Проведен() = 1 Тогда
Попытка
ТекДок.СделатьНеПроведенным();
ТекДок.УстановитьАтрибут("ДатаДок",НоваяДата);
ТекДок.Записать();
ТекДок.Провести();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Иначе
ТекДок.УстановитьАтрибут("ДатаДок",НоваяДата);
Попытка
ТекДок.Записать();
Сообщить("Документ: " + Строка(ТекДок) + " реквизиты установлены.");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Выборка.ВыбратьДокументы(ДатаДок,ДатаДок);
КонецЦикла;
Сорри за формат, не знаю как тут цитаты для кода делать.
1
МаксимБел
07.05.14
✎
01:01
О, я смотрю движок сайта сам код подсветил )
2
МаксимБел
07.05.14
✎
01:12
Пояснение: данный код меняет дату, записывает документы, но не проводит те, которые были проведены. Пишет: Документ не выбран.
3
Попытка1С
07.05.14
✎
01:19
1) Выбрать документы
2) Запихнуть документы в ТЗ
3) Перебрать ТЗ, с позиционирование на документ через НайтиДокумент
4) Сделать не проведенным, присвоить дату, провести.
4
trad
07.05.14
✎
01:25
Или так:
1. В самом начале
ТекДок = СоздатьОбъект("Документ.Расходная");
2. В цикле, вместо
ТекДок = Выборка;
написать
ТекДок.НайтиДокумент(Выборка.ТекущийДокумент());
5
trad
07.05.14
✎
01:26
+ возможно после этого, в конце тела цикла, не понадобится ВыбратьДокументы
6
МаксимБел
07.05.14
✎
01:27
(3)(4) Спасибо. Сейчас попробую.
7
МаксимБел
07.05.14
✎
01:37
(4) Получилось. Всем спасибо. :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший