Путевой лист
28.07.2006
08:00
#1
"Нужна помощь скачал бесплатную версию "путевой лист для л/а" и она вобще не работает почему? Постаянно выдаёт то неработает оператор то ещё что нибудь.
модуль:
Перем ТаблицаПечФорм;
Перем НомерТекущейФормы;
Перем СтрБазоваяНорма,СтрСезоннаяНадбавка;
Перем НачальнаяДатаДокумента;
Перем Новый;
Перем СписокДействий;
Перем Стр;
Функция ПолучитьПериодВремени(Начало,Окончание,ДатаНачала,ДатаОкончания,Представление) НачалоЧ=Цел(Начало);
НачалоМ=(Начало-НачалоЧ)*100;
ВремяНачала=НачалоЧ+НачалоМ/60;
ОкончаниеЧ=Цел(Окончание);
ОкончаниеМ=(Окончание-ОкончаниеЧ)*100;
ВремяОкончания=ОкончаниеЧ+ОкончаниеМ/60;
Если ДатаНачала<ДатаОкончания Тогда ВремяОкончания=ВремяОкончания+24*(ДатаОкончания-ДатаНачала);
КонецЕсли;
ПериодЧ=Цел(ВремяОкончания-ВремяНачала);
ПериодМ=(ВремяОкончания-ВремяНачала-ПериодЧ)*60;
Если Представление=1 Тогда ПериодВремени= Окр(ПериодЧ+ПериодМ/100,2);
ИначеЕсли Представление=2 Тогда ПериодВремени= ВремяОкончания-ВремяНачала;
КонецЕсли;
Возврат ПериодВремени;
КонецФункции
Процедура Пересчет(Подбор=0)
Если (Форма.ТекущаяКолонка()="Маршрут") или (Подбор=1) Тогда Протяженность=Маршрут.Протяженность;
Поправка1=Маршрут.Поправка1;
Поправка2=Маршрут.Поправка2;
Поправка3=Маршрут.Поправка3;
КонецЕсли;
ДопПоправки=0;
Для Сч=1 по 3 Цикл Поправка=ПолучитьАтрибут("Поправка"+Сч);
Если ПустоеЗначение(Поправка)=0 Тогда ДопПоправки=ДопПоправки+Поправка.Значение;
КонецЕсли;
КонецЦикла;
РасходПоНорме=Окр(0.01*Протяженность*БазоваяНорма*(1+0.01*(СезоннаяНадбавка+ ПрочиеПоправки+ДопПоправки)),2);
КонецПроцедуры
Процедура ПересчетТаблицы() ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл Пересчет();
КонецЦикла;
КонецПроцедуры
Процедура Проверка (Реквизит)
Если ТипЗначенияСтр(Реквизит)="Дата"
Тогда Если (ПустоеЗначение(ДатаВозвр)+ПустоеЗначение(ДатаВыезда)=0) И (ДатаВозвр<ДатаВыезда)
Тогда Предупреждение ("Дата прибытия не должна быть меньше даты выезда !");
КонецЕсли;
ИначеЕсли Цел(Реквизит)>23 Тогда Предупреждение ("Введите число часов от 0 до 23 !");
Реквизит=0;
ИначеЕсли Реквизит-Цел(Реквизит)>0.59 Тогда Предупреждение ("Введите число минут от 0 до 59 !");
Реквизит=0;
КонецЕсли;
КонецПроцедуры
Функция СтрокаИтога() Стр="""";
Если Итог("Протяженность")>0
Тогда Стр="Всего пробег за день- "+СокрЛП(Формат(Итог("Протяженность"),"Ч8.1.,"))+ " км. с нормой расхода "+ СокрЛП(Формат( Итог("РасходПоНорме"),"Ч7.2.,"))+" л.";
Расхождение=Итог("Протяженность")-СпидометрВозврата+СпидометрВыезда;
Если Расхождение<>0 Тогда Стр=Стр+" .Расхождение "+СокрЛП(Формат(Расхождение,"Ч7.2.,"))+" км";
Форма.СтрокаИтога.Цвет(255,0,0);
Иначе Форма.СтрокаИтога.Цвет(-1);
КонецЕсли;
КонецЕсли;
Возврат Стр;
КонецФункции Функция Про() Рез=1;А=10;
Док=СоздатьОбъект("Документ.ПутевойЛист");
Если Док.ВыбратьДокументы()=1 Тогда Док.ПолучитьДокумент();
Д1=Док.ДатаДок;
В=А*3;
Док.ОбратныйПорядок(1);
Док.ВыбратьДокументы();
Док.ПолучитьДокумент();
Д2=Док.ДатаДок;
Если (РабочаяДата()-Д1>В) ИЛИ (Д2-Д1>В)
Тогда Рез=0;
Предупреждение(Стр,20);
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции
Процедура ПриВыбореСчета() Для А = 1 По 3 Цикл НазначитьТип("Субконто"+А,СчетЗатрат.ВидСубконто(А));
КонецЦикла;
Форма.ПрямыеРасходы.Видимость(?(Строка(СчетЗатрат)="20",1,0));
КонецПроцедуры
Процедура ПриВыбореАвтомобиля()
//БуИт=СоздатьОбъект("БухгалтерскиеИтоги");
//БуИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Автомобиль.МестоХраненияТоплива,2);
//БуИт.ВыполнитьЗапрос(ДатаДок,"10.3",,,1,,"К");
//БуИт.ПолучитьСубконто(1);
Если Новый=1 Тогда ОстатокТопливаНаНачалоДня//=БуИт.СКД("К");
//СпидометрВыезда=Автомобиль.Пробег.Получить(ДатаДок);
//КонецЕсли;
//Водитель=Автомобиль.Водитель;
//ЗакупленоТопливаЗаДень=БуИт.ДО ("К")+БуИт.СНД("К")-ОстатокТопливаНаНачалоДня;
//ОстатокТопливаНаКонецДня=ОстатокТопливаНаНачалоДня+Зак упленоТопливаЗаДень- РасходТоплива;
БазоваяНорма=Автомобиль.БазоваяНорма;
СезоннаяНадбавка=Константа.СезоннаяНадбавка.Получить(ДатаДок);
ПрочиеПоправки=Автомобиль.ПрочиеПоправки.Получить(ДатаДок);
СтрБазоваяНорма=Формат(БазоваяНорма,"Ч4.1,.");
СтрСезоннаяНадбавка=Формат(СезоннаяНадбавка,"Ч4.1,.");
СчетЗатрат=Автомобиль.СчетЗатрат; ПриВыбореСчета();
Субконто1=Автомобиль.Субконто1;
Субконто2=Автомобиль.Субконто2;
Субконто3=Автомобиль.Субконто3;
ПрямыеРасходы=Автомобиль.ПрямыеРасходы;
КонецЕсли
КонецПроцедуры
Процедура ПриЗаписиПрочихПоправок()
Если ПрочиеПоправки<>Автомобиль.ПрочиеПоправки.Получить(ДатаДок) Тогда
Если Вопрос("Введенное значение отличается от значения в справочнике автомобилей."+ РазделительСтрок+"Установить новое значение на дату документа?",1)=1
Тогда Спр=СоздатьОбъект("Справочник.Автомобили");
Спр.ИспользоватьВладельца(Автомобиль.Владелец);
Спр.НайтиЭлемент(Автомобиль);
Спр.ПрочиеПоправки.Установить(ДатаДок,ПрочиеПоправки);
Спр.Записать();
ПересчетТаблицы();
Иначе ПрочиеПоправки=Автомобиль.ПрочиеПоправки.Получить(ДатаДок);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриНачалеВыбораЗначения(Ид,Флаг) Если Ид="Автомобиль" Тогда
Спр=СоздатьОбъект("Справочник.Автомобили");
Спр.ИспользоватьВладельца("""");
Если Спр.Выбрать ("Выберите автомобиль","Основная")=1 Тогда Автомобиль=Спр.ТекущийЭлемент();
Флаг=0;
Иначе Флаг=1;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ВводНового(Копирование,Объект)
Новый=1;
Если Про()=0 Тогда СтатусВозврата(0);
Возврат;
КонецЕсли;
Если Копирование = 1 Тогда СпидометрВыезда=Автомобиль.Пробег.Получить(ДатаДок);
Возврат;
Иначе СЗ=СоздатьОбъект("СписокЗначений");
ВидПрочихРасходов=ВосстановитьЗначение("СписокНастроекПутевогоЛиста");
КонецЕсли;
//СезоннаяНадбавка=Константа.СезоннаяНадбавка.Получить(РабочаяДата());
//РасходСверхНормы=1;
//Однодневный=1;
КонецПроцедуры
Процедура ПриОткрытии() ПриЗаписиПерепроводить(1);
глПроверкаРазрешенияРедактирования(Контекст); Если Форма.ТолькоПросмотр() = 1 Тогда
Форма.КнопкаОК.Доступность(0);
Форма.КнОчистить.Доступность(0);
Форма.КнПодбор.Доступность(0);
Форма.КнОтчета.Доступность(0);
Форма.КНРасчетаВремени.Доступность(0);
Форма.ВсегоВНаряде.Доступность(0);
Форма.ВсегоВработе.Доступность(0);
КонецЕсли;
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1,"Основной");
Форма.Закладки.ДобавитьЗначение(2,"Настройка");
Форма.ИспользоватьСлой("Основной,Общий",2);
НачальнаяДатаДокумента=ДатаДок;
НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм);
ПриВыбореАвтомобиля();
КонецПроцедуры
Процедура ПриЗаписи() Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда СтатусВозврата(0);
Возврат;
ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента) = 1 Тогда СтатусВозврата(0);
Возврат;
ИначеЕсли Новый=1 Тогда
Если Про()=0 Тогда СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Операция.Содержание = "Списание топлива по путевому листу";
СохранитьЗначение("СписокНастроекПутевогоЛиста",ВидПрочихРасходов);
КонецПроцедуры
//Процедура ПриОткрытии() глОткрытьЖурнал(Контекст. Новый);
//КонецПроцедуры
//Процедура ПриЗакрытии() глОткрытьЖурнал(Контекст, Новый);
//КонецПроцедуры
Процедура Подбор() ОткрытьПодбор("Справочник.МаршрутыПоездок");
КонецПроцедуры
Процедура ОбработкаПодбора(Элемент,Конт) Перем ВыбЧисло; НоваяСтрока();
Маршрут=Элемент;
Для Сч=1 по 2 Цикл Пока 1=1 Цикл Если ВвестиЧисло (ВыбЧисло,"Введите время "+?(Сч=1,"выезда","прибытия")+", час-мин",5,2)=1 Тогда
Если (ВыбЧисло<0) ИЛИ (Цел(ВыбЧисло)>23) Тогда Предупреждение ("Введите число часов от 0 до 23 !");
ИначеЕсли ВыбЧисло-Цел(ВыбЧисло)>0.59
Тогда Предупреждение ("Введите число минут от 0 до 59 !");
Иначе Если Сч=1 Тогда Выезд=ВыбЧисло;
Иначе Возвр=ВыбЧисло;
КонецЕсли;
Прервать;
КонецЕсли;
Иначе Прервать;
КонецЕсли;
КонецЦикла;
Если Однодневный=1 Тогда ДатаВыезда=ДатаДок;
ДатаВозвр=ДатаДок;
Иначе ВыбДата=ДатаДок;
Пока 1=1 Цикл Если ВвестиДату (ВыбДата,"Введите дату "+?(Сч=1,"выезда","прибытия"))=1
Тогда Если (Сч=2) и (ВыбДата<ДатаВыезда) Тогда
Предупреждение ("Дата прибытия не может быть меньше даты выезда!");
Иначе Если Сч=1 Тогда ДатаВыезда=ВыбДата;
Иначе ДатаВозвр=ВыбДата;
КонецЕсли;
Прервать;
КонецЕсли;
Иначе Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
АктивизироватьСтроку();
Пересчет(1);
КонецПроцедуры
Процедура ПриВыбореЗакладки(ном,Значение)
Если Значение=1 Тогда Форма.ИспользоватьСлой("Основной,Общий",2);
ИначеЕсли Значение=2 Тогда Форма.ИспользоватьСлой("Настройка,Общий",2);
Форма.ПрямыеРасходы.Видимость(?(Строка(СчетЗатрат)="20",1,0));
КонецЕсли;
КонецПроцедуры
Процедура ПриУстановкеФлага() Если РасходСверхНормы=1 Тогда Форма.ВидПрочихРасходов.Видимость(1);
Иначе Форма.ВидПрочихРасходов.Видимость(0);
КонецЕсли;
КонецПроцедуры
Процедура Печать() Если (СпидометрВозврата>0) И (Итог("Протяженность")<>(СпидометрВозврата-СпидометрВыезда)) Тогда
Предупреждение ("Общий пробег по спидометру не равен длине маршрутов по таблице");
Возврат;
КонецЕсли;
Удостоверение="""";
Класс="""";
Спр=СоздатьОбъект("Справочник.Водители");
Спр.ИспользоватьВладельца(Водитель);
Спр.ВыбратьЭлементы();
Если Спр.ПолучитьЭлемент()=1 Тогда
Удостоверение=Спр.Удостоверение;
Класс=Спр.Класс.Получить(ДатаДок);
КонецЕсли;
Поз=1;
Таб=СоздатьОбъект("Таблица");
Если ПустоеЗначение("Контрагент")=0 Тогда СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение("Путевой лист легкового а/м");
СЗ.ВыбратьЗначение(,,Поз,,1);
Таб.Вывести(); Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0,"ОпцииПечатиПутевогоЛистаЛегкового а/м");
КонецЕсли;
//КонецЕсли;
Если Поз=1 Тогда Таб.ИсходнаяТаблица("Таблица");
Авто=Автомобиль;
Если КоличествоСтрок()=0 Тогда
ВыездИзГаража="""";
ВозвращениеВГараж="""";
Иначе ПолучитьСтрокуПоНомеру(1);
ВыездЧ=Цел(Выезд);ВыездМ=(Выезд-ВыездЧ)*100;
ВыездИзГаража=Формат(ВыездЧ,"Ч(0)2.0")+"-"+Формат(ВыездМ,"Ч(0)2.0");
ПолучитьСтрокуПоНомеру(КоличествоСтрок());
ВозврЧ=Цел(Возвр); ВозврМ=(Возвр-ВозврЧ)*100;
ВозвращениеВГараж=Формат(ВозврЧ,"Ч(0)2.0")+"-"+Формат(ВозврМ,"Ч(0)2.0");
ВнарядеЧ=Цел(ВсегоВнаряде);
ВнарядеМ=(ВсегоВнаряде-ВнарядеЧ)*100;
ВремяВНаряде=Формат(ВнарядеЧ,"Ч(0)2.0")+"-"+Формат(ВнарядеМ,"Ч(0)2.0");
КонецЕсли;
Таб.ВывестиСекцию("шапка");
Таб.НоваяСтраница();
Таб.ВывестиСекцию("ШапкаОборота");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл ВыездЧ=Цел(Выезд);
ВыездМ=(Выезд-ВыездЧ)*100;
ВозврЧ=Цел(Возвр);
ВозврМ=(Возвр-ВозврЧ)*100;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Если КоличествоСтрок()<18 Тогда Для А=1 по 18-КоличествоСтрок() Цикл
Таб.ВывестиСекцию ("ПустаяСтрока");
КонецЦикла;
КонецЕсли;
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0,"ОпцииПечатиПутевогоЛиста");
Таб.Показать("Печать путевого листа");
КонецЕсли;
КонецПроцедуры
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
Если ПустоеЗначение(НомерТекущейФормы) = 1 Тогда НомерТекущейФормы = 1;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
КонецЕсли;
Если НомерТекущейФормы = 1 Тогда Печать();
Иначе Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Контекст, "Контекст");
Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");
Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");
ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
КонецЕсли;
КонецПроцедуры
Процедура ПоКнопкеВыборПечатнойФормы() ВыбНомер = глВыборПечатнойФормы("Документ." + Вид(),
ТаблицаПечФорм);
Если ВыбНомер > 0 Тогда НомерТекущейФормы = ВыбНомер;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
ПоКнопкеПечать();
КонецЕсли;
КонецПроцедуры
Процедура ВвестиАвансовыйОтчет() Док=СоздатьОбъект("Документ.АвансовыйОтчет");
Док.Новый();
Док.ДатаДок=ДатаДок;
Док.Сотрудник=Водитель;
Док.НаименованиеАванса="Расходы на покупку ГСМ";
Док.НоваяСтрока();
Док.ПорядковыйНомерДокумента=1;
Док.ДатаС=ДатаДок;
Док.КомуЗаЧто="за гсм по чекам АЗС";
Док.КоррСчет=СчетПоКоду("10.3");
Док.НазначитьТип("Субконто1","Справочник.Материалы");
Док.НазначитьТип("Субконто2","Справочник.МестаХранения");
Док.Субконто1=Автомобиль.ТипГорючего;
Док.Субконто2=Автомобиль.МестоХраненияТоплива;
Попытка Док.Записать();
Исключение Док.УстановитьНовыйНомер("""");
Док.Записать();
КонецПопытки;
ОткрытьФорму(Док.ТекущийДокумент(),,0);
КонецПроцедуры
Процедура Перемещение() Док=СоздатьОбъект("Документ.ТребованиеНакладная");
Док.Новый();
Док.ДатаДок=ДатаДок;
Док.ВидПеремещения=1;
Док.МестоХранения=Константа.СкладМоторногоТоплива;
Док.МестоХраненияПриемник=Автомобиль.МестоХраненияТоплива;
НазначитьВид(Док.Материал,"Материалы");
Док.НоваяСтрока();
Док.Материал=Автомобиль.ТипГорючего;
Док.КоличествоЗатребовано=ЗакупленоТопливаЗаДень;
Док.КоличествоОтпущено=ЗакупленоТопливаЗаДень;
Попытка Док.Записать();
Исключение Док.УстановитьНовыйНомер("""");
Док.Записать();
КонецПопытки;
ОткрытьФорму(Док.ТекущийДокумент(),,0);
КонецПроцедуры
Процедура Поступление() Док=СоздатьОбъект("Документ.ПоступлениеМатериалов");
Док.Новый();
Док.ДатаДок=ДатаДок;
Док.Контрагент=Константа.ПоставщикМоторногоТоплива;
Док.МестоХранения=Автомобиль.МестоХраненияТоплива;
Док.ЗачитыватьАванс = 0;
Док.ВариантРасчетаНалогов = Константа.ОсновнойВариантРасчетаНалогов;
Если Константа.ОрганизацияЯвляетсяПлательщикомНДС = Нет Тогда
Док.НДСвключатьВСтоимость = 1;
КонецЕсли;
Док.ВерсияОбъекта = Константа.НомерРелиза;
Док.НоваяСтрока();
Док.Материал=Автомобиль.ТипГорючего;
Док.Количество=ЗакупленоТопливаЗаДень;
Док.Цена=Док.Материал.Цена;
Док.Сумма=Док.Цена*Док.Количество;
Док.НДС=Окр(Док.Сумма*Константа.ОсновнаяСтавкаНДС.Ставка,2);
Док.Всего=Док.Сумма+Док.НДС;
Попытка Док.Записать();
Исключение Док.УстановитьНовыйНомер("""");
Док.Записать();
КонецПопытки;
ОткрытьФорму(Док.ТекущийДокумент(),,0);
КонецПроцедуры
Процедура Заправка() Перем Выбор;
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение("Перемещение");
СЗ.ДобавитьЗначение("Поступление");
Если СЗ.ВыбратьЗначение(Выбор,,,,1)=1 Тогда Если Выбор="Перемещение" Тогда Перемещение();
Иначе Поступление();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура РассчитатьОбщееВремя() ВсегоВРаботе=0;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ВсегоВРаботе=ВсегоВРаботе+ПолучитьПериодВремени(Выезд,Возвр,ДатаВыезда,ДатаВозвр,2);
КонецЦикла;
ВсегоВработеЧ=Цел(ВсегоВРаботе);
ВсегоВРаботеМ=(ВсегоВработе-ВсегоВработеЧ)*60;
ВсегоВработе=Окр(ВсегоВРаботеЧ+ВсегоВработеМ/100,2);
ПолучитьСтрокуПоНомеру(1);
ВыездИзГаража=Выезд;
ДатаВыездаИзГаража=Датавыезда;
ПолучитьСтрокуПоНомеру(КоличествоСтрок());
ВозвращениеВГараж=Возвр;ДатаВозвращенияВГараж=ДатаВозвр;
ВсегоВнаряде=ПолучитьПериодВремени(ВыездИзГаража,ВозвращениеВГараж,ДатаВыездаИзГаража,ДатаВозвращенияВГараж,1);
КонецПроцедуры
СтрБазоваяНорма="""";
СтрСезоннаяНадбавка="""";
Новый = 0;
ТаблицаПечФорм = СоздатьОбъект("ТаблицаЗначений");
ТаблицаПечФорм.НоваяКолонка("Название","Строка",,,,30);
ТаблицаПечФорм.НоваяКолонка("Файл","Строка",,,"Файл",10);
ТаблицаПечФорм.НоваяКолонка("Кнопка","Строка",,,,10);
ТаблицаПечФорм.НоваяКолонка("ФайлОписания","Строка");
ТаблицаПечФорм.НоваяСтрока();
ТаблицаПечФорм.Название = "Путевой лист";
ТаблицаПечФорм.Кнопка = "Печать";
СписокДействий = СоздатьОбъект("СписокЗначений");
СписокДействий.ДобавитьЗначение("Отчет о движениях документа");
СписокДействий.ДобавитьЗначение("Структура подчиненности");
СписокДействий.ДобавитьЗначение("Ввести на основании");
СписокДействий.ДобавитьЗначение("Перейти в журнал");
пробывал сам исправлять не получилось хоть посматреть как бедет работать.
"
модуль:
Перем ТаблицаПечФорм;
Перем НомерТекущейФормы;
Перем СтрБазоваяНорма,СтрСезоннаяНадбавка;
Перем НачальнаяДатаДокумента;
Перем Новый;
Перем СписокДействий;
Перем Стр;
Функция ПолучитьПериодВремени(Начало,Окончание,ДатаНачала,ДатаОкончания,Представление) НачалоЧ=Цел(Начало);
НачалоМ=(Начало-НачалоЧ)*100;
ВремяНачала=НачалоЧ+НачалоМ/60;
ОкончаниеЧ=Цел(Окончание);
ОкончаниеМ=(Окончание-ОкончаниеЧ)*100;
ВремяОкончания=ОкончаниеЧ+ОкончаниеМ/60;
Если ДатаНачала<ДатаОкончания Тогда ВремяОкончания=ВремяОкончания+24*(ДатаОкончания-ДатаНачала);
КонецЕсли;
ПериодЧ=Цел(ВремяОкончания-ВремяНачала);
ПериодМ=(ВремяОкончания-ВремяНачала-ПериодЧ)*60;
Если Представление=1 Тогда ПериодВремени= Окр(ПериодЧ+ПериодМ/100,2);
ИначеЕсли Представление=2 Тогда ПериодВремени= ВремяОкончания-ВремяНачала;
КонецЕсли;
Возврат ПериодВремени;
КонецФункции
Процедура Пересчет(Подбор=0)
Если (Форма.ТекущаяКолонка()="Маршрут") или (Подбор=1) Тогда Протяженность=Маршрут.Протяженность;
Поправка1=Маршрут.Поправка1;
Поправка2=Маршрут.Поправка2;
Поправка3=Маршрут.Поправка3;
КонецЕсли;
ДопПоправки=0;
Для Сч=1 по 3 Цикл Поправка=ПолучитьАтрибут("Поправка"+Сч);
Если ПустоеЗначение(Поправка)=0 Тогда ДопПоправки=ДопПоправки+Поправка.Значение;
КонецЕсли;
КонецЦикла;
РасходПоНорме=Окр(0.01*Протяженность*БазоваяНорма*(1+0.01*(СезоннаяНадбавка+ ПрочиеПоправки+ДопПоправки)),2);
КонецПроцедуры
Процедура ПересчетТаблицы() ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл Пересчет();
КонецЦикла;
КонецПроцедуры
Процедура Проверка (Реквизит)
Если ТипЗначенияСтр(Реквизит)="Дата"
Тогда Если (ПустоеЗначение(ДатаВозвр)+ПустоеЗначение(ДатаВыезда)=0) И (ДатаВозвр<ДатаВыезда)
Тогда Предупреждение ("Дата прибытия не должна быть меньше даты выезда !");
КонецЕсли;
ИначеЕсли Цел(Реквизит)>23 Тогда Предупреждение ("Введите число часов от 0 до 23 !");
Реквизит=0;
ИначеЕсли Реквизит-Цел(Реквизит)>0.59 Тогда Предупреждение ("Введите число минут от 0 до 59 !");
Реквизит=0;
КонецЕсли;
КонецПроцедуры
Функция СтрокаИтога() Стр="""";
Если Итог("Протяженность")>0
Тогда Стр="Всего пробег за день- "+СокрЛП(Формат(Итог("Протяженность"),"Ч8.1.,"))+ " км. с нормой расхода "+ СокрЛП(Формат( Итог("РасходПоНорме"),"Ч7.2.,"))+" л.";
Расхождение=Итог("Протяженность")-СпидометрВозврата+СпидометрВыезда;
Если Расхождение<>0 Тогда Стр=Стр+" .Расхождение "+СокрЛП(Формат(Расхождение,"Ч7.2.,"))+" км";
Форма.СтрокаИтога.Цвет(255,0,0);
Иначе Форма.СтрокаИтога.Цвет(-1);
КонецЕсли;
КонецЕсли;
Возврат Стр;
КонецФункции Функция Про() Рез=1;А=10;
Док=СоздатьОбъект("Документ.ПутевойЛист");
Если Док.ВыбратьДокументы()=1 Тогда Док.ПолучитьДокумент();
Д1=Док.ДатаДок;
В=А*3;
Док.ОбратныйПорядок(1);
Док.ВыбратьДокументы();
Док.ПолучитьДокумент();
Д2=Док.ДатаДок;
Если (РабочаяДата()-Д1>В) ИЛИ (Д2-Д1>В)
Тогда Рез=0;
Предупреждение(Стр,20);
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции
Процедура ПриВыбореСчета() Для А = 1 По 3 Цикл НазначитьТип("Субконто"+А,СчетЗатрат.ВидСубконто(А));
КонецЦикла;
Форма.ПрямыеРасходы.Видимость(?(Строка(СчетЗатрат)="20",1,0));
КонецПроцедуры
Процедура ПриВыбореАвтомобиля()
//БуИт=СоздатьОбъект("БухгалтерскиеИтоги");
//БуИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Автомобиль.МестоХраненияТоплива,2);
//БуИт.ВыполнитьЗапрос(ДатаДок,"10.3",,,1,,"К");
//БуИт.ПолучитьСубконто(1);
Если Новый=1 Тогда ОстатокТопливаНаНачалоДня//=БуИт.СКД("К");
//СпидометрВыезда=Автомобиль.Пробег.Получить(ДатаДок);
//КонецЕсли;
//Водитель=Автомобиль.Водитель;
//ЗакупленоТопливаЗаДень=БуИт.ДО ("К")+БуИт.СНД("К")-ОстатокТопливаНаНачалоДня;
//ОстатокТопливаНаКонецДня=ОстатокТопливаНаНачалоДня+Зак
БазоваяНорма=Автомобиль.БазоваяНорма;
СезоннаяНадбавка=Константа.СезоннаяНадбавка.Получить(ДатаДок);
ПрочиеПоправки=Автомобиль.ПрочиеПоправки.Получить(ДатаДок);
СтрБазоваяНорма=Формат(БазоваяНорма,"Ч4.1,.");
СтрСезоннаяНадбавка=Формат(СезоннаяНадбавка,"Ч4.1,.");
СчетЗатрат=Автомобиль.СчетЗатрат; ПриВыбореСчета();
Субконто1=Автомобиль.Субконто1;
Субконто2=Автомобиль.Субконто2;
Субконто3=Автомобиль.Субконто3;
ПрямыеРасходы=Автомобиль.ПрямыеРасходы;
КонецЕсли
КонецПроцедуры
Процедура ПриЗаписиПрочихПоправок()
Если ПрочиеПоправки<>Автомобиль.ПрочиеПоправки.Получить(ДатаДок) Тогда
Если Вопрос("Введенное значение отличается от значения в справочнике автомобилей."+ РазделительСтрок+"Установить новое значение на дату документа?",1)=1
Тогда Спр=СоздатьОбъект("Справочник.Автомобили");
Спр.ИспользоватьВладельца(Автомобиль.Владелец);
Спр.НайтиЭлемент(Автомобиль);
Спр.ПрочиеПоправки.Установить(ДатаДок,ПрочиеПоправки);
Спр.Записать();
ПересчетТаблицы();
Иначе ПрочиеПоправки=Автомобиль.ПрочиеПоправки.Получить(ДатаДок);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриНачалеВыбораЗначения(Ид,Флаг) Если Ид="Автомобиль" Тогда
Спр=СоздатьОбъект("Справочник.Автомобили");
Спр.ИспользоватьВладельца("""");
Если Спр.Выбрать ("Выберите автомобиль","Основная")=1 Тогда Автомобиль=Спр.ТекущийЭлемент();
Флаг=0;
Иначе Флаг=1;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ВводНового(Копирование,Объект)
Новый=1;
Если Про()=0 Тогда СтатусВозврата(0);
Возврат;
КонецЕсли;
Если Копирование = 1 Тогда СпидометрВыезда=Автомобиль.Пробег.Получить(ДатаДок);
Возврат;
Иначе СЗ=СоздатьОбъект("СписокЗначений");
ВидПрочихРасходов=ВосстановитьЗначение("СписокНастроекПутевогоЛиста");
КонецЕсли;
//СезоннаяНадбавка=Константа.СезоннаяНадбавка.Получить(РабочаяДата());
//РасходСверхНормы=1;
//Однодневный=1;
КонецПроцедуры
Процедура ПриОткрытии() ПриЗаписиПерепроводить(1);
глПроверкаРазрешенияРедактирования(Контекст); Если Форма.ТолькоПросмотр() = 1 Тогда
Форма.КнопкаОК.Доступность(0);
Форма.КнОчистить.Доступность(0);
Форма.КнПодбор.Доступность(0);
Форма.КнОтчета.Доступность(0);
Форма.КНРасчетаВремени.Доступность(0);
Форма.ВсегоВНаряде.Доступность(0);
Форма.ВсегоВработе.Доступность(0);
КонецЕсли;
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1,"Основной");
Форма.Закладки.ДобавитьЗначение(2,"Настройка");
Форма.ИспользоватьСлой("Основной,Общий",2);
НачальнаяДатаДокумента=ДатаДок;
НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм);
ПриВыбореАвтомобиля();
КонецПроцедуры
Процедура ПриЗаписи() Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда СтатусВозврата(0);
Возврат;
ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента) = 1 Тогда СтатусВозврата(0);
Возврат;
ИначеЕсли Новый=1 Тогда
Если Про()=0 Тогда СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Операция.Содержание = "Списание топлива по путевому листу";
СохранитьЗначение("СписокНастроекПутевогоЛиста",ВидПрочихРасходов);
КонецПроцедуры
//Процедура ПриОткрытии() глОткрытьЖурнал(Контекст. Новый);
//КонецПроцедуры
//Процедура ПриЗакрытии() глОткрытьЖурнал(Контекст, Новый);
//КонецПроцедуры
Процедура Подбор() ОткрытьПодбор("Справочник.МаршрутыПоездок");
КонецПроцедуры
Процедура ОбработкаПодбора(Элемент,Конт) Перем ВыбЧисло; НоваяСтрока();
Маршрут=Элемент;
Для Сч=1 по 2 Цикл Пока 1=1 Цикл Если ВвестиЧисло (ВыбЧисло,"Введите время "+?(Сч=1,"выезда","прибытия")+", час-мин",5,2)=1 Тогда
Если (ВыбЧисло<0) ИЛИ (Цел(ВыбЧисло)>23) Тогда Предупреждение ("Введите число часов от 0 до 23 !");
ИначеЕсли ВыбЧисло-Цел(ВыбЧисло)>0.59
Тогда Предупреждение ("Введите число минут от 0 до 59 !");
Иначе Если Сч=1 Тогда Выезд=ВыбЧисло;
Иначе Возвр=ВыбЧисло;
КонецЕсли;
Прервать;
КонецЕсли;
Иначе Прервать;
КонецЕсли;
КонецЦикла;
Если Однодневный=1 Тогда ДатаВыезда=ДатаДок;
ДатаВозвр=ДатаДок;
Иначе ВыбДата=ДатаДок;
Пока 1=1 Цикл Если ВвестиДату (ВыбДата,"Введите дату "+?(Сч=1,"выезда","прибытия"))=1
Тогда Если (Сч=2) и (ВыбДата<ДатаВыезда) Тогда
Предупреждение ("Дата прибытия не может быть меньше даты выезда!");
Иначе Если Сч=1 Тогда ДатаВыезда=ВыбДата;
Иначе ДатаВозвр=ВыбДата;
КонецЕсли;
Прервать;
КонецЕсли;
Иначе Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
АктивизироватьСтроку();
Пересчет(1);
КонецПроцедуры
Процедура ПриВыбореЗакладки(ном,Значение)
Если Значение=1 Тогда Форма.ИспользоватьСлой("Основной,Общий",2);
ИначеЕсли Значение=2 Тогда Форма.ИспользоватьСлой("Настройка,Общий",2);
Форма.ПрямыеРасходы.Видимость(?(Строка(СчетЗатрат)="20",1,0));
КонецЕсли;
КонецПроцедуры
Процедура ПриУстановкеФлага() Если РасходСверхНормы=1 Тогда Форма.ВидПрочихРасходов.Видимость(1);
Иначе Форма.ВидПрочихРасходов.Видимость(0);
КонецЕсли;
КонецПроцедуры
Процедура Печать() Если (СпидометрВозврата>0) И (Итог("Протяженность")<>(СпидометрВозврата-СпидометрВыезда)) Тогда
Предупреждение ("Общий пробег по спидометру не равен длине маршрутов по таблице");
Возврат;
КонецЕсли;
Удостоверение="""";
Класс="""";
Спр=СоздатьОбъект("Справочник.Водители");
Спр.ИспользоватьВладельца(Водитель);
Спр.ВыбратьЭлементы();
Если Спр.ПолучитьЭлемент()=1 Тогда
Удостоверение=Спр.Удостоверение;
Класс=Спр.Класс.Получить(ДатаДок);
КонецЕсли;
Поз=1;
Таб=СоздатьОбъект("Таблица");
Если ПустоеЗначение("Контрагент")=0 Тогда СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение("Путевой лист легкового а/м");
СЗ.ВыбратьЗначение(,,Поз,,1);
Таб.Вывести(); Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0,"ОпцииПечатиПутевогоЛистаЛегкового а/м");
КонецЕсли;
//КонецЕсли;
Если Поз=1 Тогда Таб.ИсходнаяТаблица("Таблица");
Авто=Автомобиль;
Если КоличествоСтрок()=0 Тогда
ВыездИзГаража="""";
ВозвращениеВГараж="""";
Иначе ПолучитьСтрокуПоНомеру(1);
ВыездЧ=Цел(Выезд);ВыездМ=(Выезд-ВыездЧ)*100;
ВыездИзГаража=Формат(ВыездЧ,"Ч(0)2.0")+"-"+Формат(ВыездМ,"Ч(0)2.0");
ПолучитьСтрокуПоНомеру(КоличествоСтрок());
ВозврЧ=Цел(Возвр); ВозврМ=(Возвр-ВозврЧ)*100;
ВозвращениеВГараж=Формат(ВозврЧ,"Ч(0)2.0")+"-"+Формат(ВозврМ,"Ч(0)2.0");
ВнарядеЧ=Цел(ВсегоВнаряде);
ВнарядеМ=(ВсегоВнаряде-ВнарядеЧ)*100;
ВремяВНаряде=Формат(ВнарядеЧ,"Ч(0)2.0")+"-"+Формат(ВнарядеМ,"Ч(0)2.0");
КонецЕсли;
Таб.ВывестиСекцию("шапка");
Таб.НоваяСтраница();
Таб.ВывестиСекцию("ШапкаОборота");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл ВыездЧ=Цел(Выезд);
ВыездМ=(Выезд-ВыездЧ)*100;
ВозврЧ=Цел(Возвр);
ВозврМ=(Возвр-ВозврЧ)*100;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Если КоличествоСтрок()<18 Тогда Для А=1 по 18-КоличествоСтрок() Цикл
Таб.ВывестиСекцию ("ПустаяСтрока");
КонецЦикла;
КонецЕсли;
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0,"ОпцииПечатиПутевогоЛиста");
Таб.Показать("Печать путевого листа");
КонецЕсли;
КонецПроцедуры
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
Если ПустоеЗначение(НомерТекущейФормы) = 1 Тогда НомерТекущейФормы = 1;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
КонецЕсли;
Если НомерТекущейФормы = 1 Тогда Печать();
Иначе Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Контекст, "Контекст");
Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");
Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");
ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
КонецЕсли;
КонецПроцедуры
Процедура ПоКнопкеВыборПечатнойФормы() ВыбНомер = глВыборПечатнойФормы("Документ." + Вид(),
ТаблицаПечФорм);
Если ВыбНомер > 0 Тогда НомерТекущейФормы = ВыбНомер;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
ПоКнопкеПечать();
КонецЕсли;
КонецПроцедуры
Процедура ВвестиАвансовыйОтчет() Док=СоздатьОбъект("Документ.АвансовыйОтчет");
Док.Новый();
Док.ДатаДок=ДатаДок;
Док.Сотрудник=Водитель;
Док.НаименованиеАванса="Расходы на покупку ГСМ";
Док.НоваяСтрока();
Док.ПорядковыйНомерДокумента=1;
Док.ДатаС=ДатаДок;
Док.КомуЗаЧто="за гсм по чекам АЗС";
Док.КоррСчет=СчетПоКоду("10.3");
Док.НазначитьТип("Субконто1","Справочник.Материалы");
Док.НазначитьТип("Субконто2","Справочник.МестаХранения");
Док.Субконто1=Автомобиль.ТипГорючего;
Док.Субконто2=Автомобиль.МестоХраненияТоплива;
Попытка Док.Записать();
Исключение Док.УстановитьНовыйНомер("""");
Док.Записать();
КонецПопытки;
ОткрытьФорму(Док.ТекущийДокумент(),,0);
КонецПроцедуры
Процедура Перемещение() Док=СоздатьОбъект("Документ.ТребованиеНакладная");
Док.Новый();
Док.ДатаДок=ДатаДок;
Док.ВидПеремещения=1;
Док.МестоХранения=Константа.СкладМоторногоТоплива;
Док.МестоХраненияПриемник=Автомобиль.МестоХраненияТоплива;
НазначитьВид(Док.Материал,"Материалы");
Док.НоваяСтрока();
Док.Материал=Автомобиль.ТипГорючего;
Док.КоличествоЗатребовано=ЗакупленоТопливаЗаДень;
Док.КоличествоОтпущено=ЗакупленоТопливаЗаДень;
Попытка Док.Записать();
Исключение Док.УстановитьНовыйНомер("""");
Док.Записать();
КонецПопытки;
ОткрытьФорму(Док.ТекущийДокумент(),,0);
КонецПроцедуры
Процедура Поступление() Док=СоздатьОбъект("Документ.ПоступлениеМатериалов");
Док.Новый();
Док.ДатаДок=ДатаДок;
Док.Контрагент=Константа.ПоставщикМоторногоТоплива;
Док.МестоХранения=Автомобиль.МестоХраненияТоплива;
Док.ЗачитыватьАванс = 0;
Док.ВариантРасчетаНалогов = Константа.ОсновнойВариантРасчетаНалогов;
Если Константа.ОрганизацияЯвляетсяПлательщикомНДС = Нет Тогда
Док.НДСвключатьВСтоимость = 1;
КонецЕсли;
Док.ВерсияОбъекта = Константа.НомерРелиза;
Док.НоваяСтрока();
Док.Материал=Автомобиль.ТипГорючего;
Док.Количество=ЗакупленоТопливаЗаДень;
Док.Цена=Док.Материал.Цена;
Док.Сумма=Док.Цена*Док.Количество;
Док.НДС=Окр(Док.Сумма*Константа.ОсновнаяСтавкаНДС.Ставка,2);
Док.Всего=Док.Сумма+Док.НДС;
Попытка Док.Записать();
Исключение Док.УстановитьНовыйНомер("""");
Док.Записать();
КонецПопытки;
ОткрытьФорму(Док.ТекущийДокумент(),,0);
КонецПроцедуры
Процедура Заправка() Перем Выбор;
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение("Перемещение");
СЗ.ДобавитьЗначение("Поступление");
Если СЗ.ВыбратьЗначение(Выбор,,,,1)=1 Тогда Если Выбор="Перемещение" Тогда Перемещение();
Иначе Поступление();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура РассчитатьОбщееВремя() ВсегоВРаботе=0;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ВсегоВРаботе=ВсегоВРаботе+ПолучитьПериодВремени(Выезд,Возвр,ДатаВыезда,ДатаВозвр,2);
КонецЦикла;
ВсегоВработеЧ=Цел(ВсегоВРаботе);
ВсегоВРаботеМ=(ВсегоВработе-ВсегоВработеЧ)*60;
ВсегоВработе=Окр(ВсегоВРаботеЧ+ВсегоВработеМ/100,2);
ПолучитьСтрокуПоНомеру(1);
ВыездИзГаража=Выезд;
ДатаВыездаИзГаража=Датавыезда;
ПолучитьСтрокуПоНомеру(КоличествоСтрок());
ВозвращениеВГараж=Возвр;ДатаВозвращенияВГараж=ДатаВозвр;
ВсегоВнаряде=ПолучитьПериодВремени(ВыездИзГаража,ВозвращениеВГараж,ДатаВыездаИзГаража,ДатаВозвращенияВГараж,1);
КонецПроцедуры
СтрБазоваяНорма="""";
СтрСезоннаяНадбавка="""";
Новый = 0;
ТаблицаПечФорм = СоздатьОбъект("ТаблицаЗначений");
ТаблицаПечФорм.НоваяКолонка("Название","Строка",,,,30);
ТаблицаПечФорм.НоваяКолонка("Файл","Строка",,,"Файл",10);
ТаблицаПечФорм.НоваяКолонка("Кнопка","Строка",,,,10);
ТаблицаПечФорм.НоваяКолонка("ФайлОписания","Строка");
ТаблицаПечФорм.НоваяСтрока();
ТаблицаПечФорм.Название = "Путевой лист";
ТаблицаПечФорм.Кнопка = "Печать";
СписокДействий = СоздатьОбъект("СписокЗначений");
СписокДействий.ДобавитьЗначение("Отчет о движениях документа");
СписокДействий.ДобавитьЗначение("Структура подчиненности");
СписокДействий.ДобавитьЗначение("Ввести на основании");
СписокДействий.ДобавитьЗначение("Перейти в журнал");
пробывал сам исправлять не получилось хоть посматреть как бедет работать.
"
Читают тему
(гостей: 1)