Имя: Пароль:
1C
1C 7.7
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) Получилось. Всем спасибо. :)