Изменение времени проведения старых документов
10.10.2004
12:59
#1
"Процедура ИзменитьВремя()
Докум=СоздатьОбъект("Документ."+ТекущийДокумент.Вид());
Докум.ВыбратьДокументы();
Если Докум.НайтиДокумент(ТекущийДокумент)=1 Тогда
Часы=""""; Минуты=""""; Секунды = """";
Докум.ПолучитьВремя(Часы,Минуты,Секунды);
Докум.СделатьНеПроведенным();
//Можно ли здесь вызвать меню запроса времени документа: начало-конец дня? Вручную подбивать минутки давольно тяжко, а АвтоВремяНачалоДня() и АвтоВремяКонецДня() работает только для вновь созданых документов.
Докум.УстановитьВремя(Часы,Минуты,Секунды);
Докум.Провести();
КонецЕсли;
КонецПроцедуры
"
Докум=СоздатьОбъект("Документ."+ТекущийДокумент.Вид());
Докум.ВыбратьДокументы();
Если Докум.НайтиДокумент(ТекущийДокумент)=1 Тогда
Часы=""""; Минуты=""""; Секунды = """";
Докум.ПолучитьВремя(Часы,Минуты,Секунды);
Докум.СделатьНеПроведенным();
//Можно ли здесь вызвать меню запроса времени документа: начало-конец дня? Вручную подбивать минутки давольно тяжко, а АвтоВремяНачалоДня() и АвтоВремяКонецДня() работает только для вновь созданых документов.
Докум.УстановитьВремя(Часы,Минуты,Секунды);
Докум.Провести();
КонецЕсли;
КонецПроцедуры
"
11.10.2004
12:31
#2
"Вот такую процедурку в журнале документов использую (вызов под кнопку в журнале)
Процедура ИзменитьВремяДокумента()
ТекДок=ТекущийДокумент;
Если ТекДок.Выбран()=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 Тогда
Док.Провести();
КонецЕсли;
ЗафиксироватьТранзакцию();
КонецПроцедуры
//-------------------------------------
"
Процедура ИзменитьВремяДокумента()
ТекДок=ТекущийДокумент;
Если ТекДок.Выбран()=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)