Изменение времени проведения старых документов

Новая тема
"Процедура ИзменитьВремя()

Докум=СоздатьОбъект("Документ."+ТекущийДокумент.Вид());

Докум.ВыбратьДокументы();

Если Докум.НайтиДокумент(ТекущийДокумент)=1 Тогда

Часы=""""; Минуты=""""; Секунды = """";

Докум.ПолучитьВремя(Часы,Минуты,Секунды);

Докум.СделатьНеПроведенным();



//Можно ли здесь вызвать меню запроса времени документа: начало-конец дня? Вручную подбивать минутки давольно тяжко, а АвтоВремяНачалоДня() и АвтоВремяКонецДня() работает только для вновь созданых документов.



Докум.УстановитьВремя(Часы,Минуты,Секунды);

Докум.Провести();

КонецЕсли;

КонецПроцедуры



"
"Вот такую процедурку в журнале документов использую (вызов под кнопку в журнале)

Процедура ИзменитьВремяДокумента()

ТекДок=ТекущийДокумент;

Если ТекДок.Выбран()=0 Тогда

Возврат;

КонецЕсли;



Меню=СоздатьОбъект("СписокЗначений");

Меню.ДобавитьЗначение("Назад","Переместить назад");

Меню.ДобавитьЗначение("Вперед","Переместить вперед");

Меню.ДобавитьЗначение("ВНачало","Переместить в начало дня");

Меню.ДобавитьЗначение("ВКонец","Переместить в конец дня");

Вариант="""";

Если Меню.ВыбратьЗначение(Вариант,,,,1)=0 Тогда

Возврат;

КонецЕсли;



Док=СоздатьОбъект("Документ");



НачатьТранзакцию();



Если Вариант="Назад" Тогда

Док.ОбратныйПорядок(1);

Док.ВыбратьДокументы(ТекДок.ДатаДок,СформироватьПозициюДокумента(ТекДок.ПолучитьПозицию(),-1));

Если Док.ПолучитьДокумент()=0 Тогда

Возврат;

КонецЕсли;

Время2=ПолучитьВремяДокументаЧислом(Док);

Если Док.ПолучитьДокумент()=1 Тогда

Время1=ПолучитьВремяДокументаЧислом(Док);

Иначе

Время1=0;

КонецЕсли;

Время=Время2-60;

Если Время<=Время1 Тогда

Время=Окр((Время2+Время1)/2);

КонецЕсли;

Если (Время<=Время1) или (Время>=Время2) Тогда

Предупреждение("Нет возможности переставить документ!");

Возврат;

КонецЕсли;

ИначеЕсли Вариант="Вперед" Тогда

Док.ОбратныйПорядок(0);

Док.ВыбратьДокументы(СформироватьПозициюДокумента(ТекДок.ПолучитьПозицию(),1),ТекДок.ДатаДок);

Если Док.ПолучитьДокумент()=0 Тогда

Возврат;

КонецЕсли;

Время1=ПолучитьВремяДокументаЧислом(Док);

Если Док.ПолучитьДокумент()=1 Тогда

Время2=ПолучитьВремяДокументаЧислом(Док);

Иначе

Время2=3600*23+60*59+59+1;

КонецЕсли;

Время=Время1+60;

Если Время>=Время2 Тогда

Время=Окр((Время2+Время1)/2);

КонецЕсли;

Если (Время<=Время1) или (Время>=Время2) Тогда

Предупреждение("Нет возможности переставить документ!");

Возврат;

КонецЕсли;

ИначеЕсли Вариант="ВНачало" Тогда

Док.ОбратныйПорядок(0);

Док.ВыбратьДокументы(ТекДок.ДатаДок,СформироватьПозициюДокумента(ТекДок.ПолучитьПозицию(),-1));

Если Док.ПолучитьДокумент()=0 Тогда

Возврат;

КонецЕсли;

Время2=ПолучитьВремяДокументаЧислом(Док);

Время1=0;

Время=Время2-60;

Если Время<=Время1 Тогда

Время=Окр((Время2+Время1)/2);

КонецЕсли;

Если (Время<=Время1) или (Время>=Время2) Тогда

Предупреждение("Нет возможности переставить документ!");

Возврат;

КонецЕсли;

ИначеЕсли Вариант="ВКонец" Тогда

Док.ОбратныйПорядок(1);

Док.ВыбратьДокументы(СформироватьПозициюДокумента(ТекДок.ПолучитьПозицию(),1),ТекДок.ДатаДок);

Если Док.ПолучитьДокумент()=0 Тогда

Возврат;

КонецЕсли;

Время1=ПолучитьВремяДокументаЧислом(Док);

Время2=3600*23+60*59+59+1;

Время=Время1+60;

Если Время>=Время2 Тогда

Время=Окр((Время2+Время1)/2);

КонецЕсли;

Если (Время<=Время1) или (Время>=Время2) Тогда

Предупреждение("Нет возможности переставить документ!");

Возврат;

КонецЕсли;

КонецЕсли;



Провести=0;

Док.НайтиДокумент(ТекДок);

Если Док.Проведен()=1 Тогда

Док.СделатьНеПроведенным();

Провести=1;

КонецЕсли;



УстановитьВремяДокументаЧислом(Док,Время);

Док.Записать();



Если Провести=1 Тогда

Док.Провести();

КонецЕсли;



ЗафиксироватьТранзакцию();

КонецПроцедуры

//-------------------------------------

"
Спасибо, но я думал можно сделать как-то проще.
Читают тему
(гостей: 1)

Быстрый переход