Поступило задание, вести путевые листы для транспортного участка предприятия. Но документ в стандартной конфигурации не отвечает требованиям и имеет ряд недочетов.
Пример стандартного бланка:
Далее был утвержден бланк путевого листа с необходимыми реквизитами согласно законодательства РФ.
Вот что получилось:
Добавили необходимые реквизиты и максимально упростили оформление документа проставив стандартные реквизиты диспетчера, мед. работника и т.д.
Чтобы не «ломать» стандартную форму 1с, добавили свои, это потребовало исправить модуль менеджера и добавить две формы:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#Область Печать
// Заполняет список команд печати.
//
// Параметры:
// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Путевой лист, упрощенная форма
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПутевойЛист";
КомандаПечати.Представление = НСтр("ru = 'Путевой лист'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.Порядок = 1;
// Путевой лист, типовая форма №3 Легковой транспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПутевойЛист_ТиповаяФорма_Легковой";
КомандаПечати.Представление = НСтр("ru = 'Путевой лист (№3)'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.Порядок = 2;
// Авансовый отчет
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПутевойЛист_АвансовыйОтчет";
КомандаПечати.Представление = НСтр("ru = 'Авансовый отчет (АО-1)'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.Порядок = 3;
// Путевой лист, типовая форма №3 Легковой транспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПутевойЛист_ТиповаяФорма_Легковой1";
КомандаПечати.Представление = НСтр("ru = 'Путевой лист ООО ЛА'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.Порядок = 4;
// Путевой лист, типовая форма №3 Легковой транспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПутевойЛист_ТиповаяФорма_Легковой2";
КомандаПечати.Представление = НСтр("ru = 'Путевой лист ООО ГА'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.Порядок = 5;
// Реестр документов
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Реестр";
КомандаПечати.Представление = НСтр("ru = 'Реестр документов'");
КомандаПечати.ЗаголовокФормы= НСтр("ru = 'Реестр документов ""Путевые листы""'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечатиРеестраДокументов";
КомандаПечати.СписокФорм = "ФормаСписка";
КомандаПечати.Порядок = 130;
КонецПроцедуры
// Формирует печатные формы.
//
// Параметры:
// МассивОбъектов - Массив - ссылки на объекты, которые нужно распечатать;
// ПараметрыПечати - Структура - дополнительные настройки печати;
// КоллекцияПечатныхФорм - ТаблицаЗначений - сформированные табличные документы (выходной параметр),
// см. УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм.
// ОбъектыПечати - СписокЗначений - значение - ссылка на объект;
// представление - имя области в которой был выведен объект (выходной
// параметр);
// ПараметрыВывода - Структура - дополнительные параметры сформированных табличных документов (выходной
// параметр).
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПутевойЛист") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ПутевойЛист", НСтр("ru = 'Путевой лист'"),
ПечатьУпрощенныйПутевойЛист(МассивОбъектов, ОбъектыПечати),,
"Документ.ПутевойЛист.ПФ_MXL_ПутевойЛист");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПутевойЛист_ТиповаяФорма_Легковой") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ПутевойЛист_ТиповаяФорма_Легковой", НСтр("ru = 'Путевой лист'"),
ПечатьПутевойЛистФорма3(МассивОбъектов, ОбъектыПечати),,
"Документ.ПутевойЛист.ПФ_MXL_ПутевойЛистФорма3");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПутевойЛист_АвансовыйОтчет") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ПутевойЛист_АвансовыйОтчет", НСтр("ru = 'Авансовый отчет'"),
ПечатьПутевойЛистАвансовыйОтчет(МассивОбъектов, ОбъектыПечати),,
"Документ.АвансовыйОтчет.ПФ_MXL_АвансовыйОтчет");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПутевойЛист_ТиповаяФорма_Легковой1") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ПутевойЛист_ТиповаяФорма_Легковой1", НСтр("ru = 'Путевой лист'"),
ПечатьПутевойЛистФорма4(МассивОбъектов, ОбъектыПечати),,
"Документ.ПутевойЛист.ПФ_MXL_ПутевойЛистФорма4");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПутевойЛист_ТиповаяФорма_Легковой2") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ПутевойЛист_ТиповаяФорма_Легковой2", НСтр("ru = 'Путевой лист'"),
ПечатьПутевойЛистФорма5(МассивОбъектов, ОбъектыПечати),,
"Документ.ПутевойЛист.ПФ_MXL_ПутевойЛистФорма5");
КонецЕсли;
ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(
МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
#Область ПечатьУпрощенныйПутевойЛист
Функция ПечатьУпрощенныйПутевойЛист(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПутевойЛист_Упрощенный";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПутевойЛист.ПФ_MXL_ПутевойЛист");
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст = ТекстЗапросаПечатьПутевойЛист();
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат ТабличныйДокумент;
КонецЕсли;
ВыборкаДокумент = РезультатЗапроса.Выбрать();
ПервыйДокумент = Истина;
Пока ВыборкаДокумент.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ДанныеСтроки = СтруктураДанныхДляПечатиУпрощеннаяФорма(ВыборкаДокумент);
ОбластьЗаголовок = Макет.ПолучитьОбласть(ДанныеСтроки.ИмяМакетаЗаголовка);
ОбластьЗаголовок.Параметры.Заполнить(ДанныеСтроки);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Заполнить(ДанныеСтроки);
ДанныеОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
ДанныеСтроки.Организация, ДанныеСтроки.Период);
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, ДанныеОрганизации);
ТабличныйДокумент.Вывести(ОбластьШапка);
// Выведем строки таблицы
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОстатокТоплива = Справочники.ТранспортныеСредства.ОстатокТопливаВБаке(
ДанныеСтроки.Организация, ДанныеСтроки.ТранспортноеСредство, ДанныеСтроки.Период);
ТаблицаМаршрут = КупленноеТопливоПоМаршрутам(
ВыборкаДокумент.КупленноеТопливо.Выгрузить(),
ВыборкаДокумент.Маршрут.Выбрать());
Для Каждого ТекущаяСтрока Из ТаблицаМаршрут Цикл
ОбластьСтрока.Параметры.Заполнить(СтруктураДанныхСтрокиТаблицыУпрощеннаяФорма(ТекущаяСтрока, ОстатокТоплива));
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
// Выведем подвал
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Заполнить(ДанныеСтроки);
ТабличныйДокумент.Вывести(ОбластьПодвал);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, ДанныеСтроки.Ссылка);
КонецЦикла;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Возврат ТабличныйДокумент;
КонецФункции
// Распределение купленного топлива по датам входящего документа.
// Количество всегда распределяется на первый маршрут с подходящими датами рейса.
// Если дата входящего документа для купленного топлива не попадает ни в один рейс,
// тогда купленное топливо указывается в первом маршруте путевого листа.
//
// Параметры:
// КупленноеТопливо - ТаблицаЗначений
// ВыборкаМаршрут - ВыборкаИзРезультатаЗапроса
//
// Возвращаемое значение:
// ТаблицаЗначений
//
Функция КупленноеТопливоПоМаршрутам(КупленноеТопливо, ВыборкаМаршрут)
МетаданныеДокумента = Метаданные.Документы.ПутевойЛист;
ТаблицаМаршрут = Новый ТаблицаЗначений;
Для Каждого ТекущаяКолонка Из МетаданныеДокумента.ТабличныеЧасти.Маршрут.Реквизиты Цикл
ТаблицаМаршрут.Колонки.Добавить(ТекущаяКолонка.Имя, ТекущаяКолонка.Тип);
КонецЦикла;
ТаблицаМаршрут.Колонки.Добавить("НомерСтроки",
МетаданныеДокумента.ТабличныеЧасти.Маршрут.СтандартныеРеквизиты.НомерСтроки.Тип);
ТаблицаМаршрут.Колонки.Добавить("Куплено", МетаданныеДокумента.ТабличныеЧасти.Топливо.Реквизиты.Количество.Тип);
Пока ВыборкаМаршрут.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ТаблицаМаршрут.Добавить(), ВыборкаМаршрут);
КонецЦикла;
КупленноеТопливо.Свернуть("ДатаВходящегоДокумента", "Количество");
Распределить = КупленноеТопливо.Итог("Количество");
Для Каждого ТекущаяСтрока Из КупленноеТопливо Цикл
Для Каждого ТекущийМаршрут Из ТаблицаМаршрут Цикл
Если НачалоДня(ТекущийМаршрут.ДатаОтправления) <= ТекущаяСтрока.ДатаВходящегоДокумента
И КонецДня(ТекущийМаршрут.ДатаВозвращения) >= ТекущаяСтрока.ДатаВходящегоДокумента Тогда
ТекущийМаршрут.Куплено = ТекущийМаршрут.Куплено + ТекущаяСтрока.Количество;
Распределить = Распределить - ТекущаяСтрока.Количество;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если Распределить > 0 И ЗначениеЗаполнено(ТаблицаМаршрут) Тогда
ТаблицаМаршрут[0].Куплено = ТаблицаМаршрут[0].Куплено + Распределить;
КонецЕсли;
Возврат ТаблицаМаршрут;
КонецФункции
Функция ПредставлениеДатыУпрощеннаяФорма(Дата)
ПредставлениеДаты = "";
Если Не ЗначениеЗаполнено(Дата) Тогда
ПредставлениеДаты = "";
ИначеЕсли Не ЗначениеЗаполнено(НачалоДня(Дата)) Тогда
ПредставлениеДаты = Формат(Дата, НСтр("ru='ДФ=ЧЧ:мм'"));
ИначеЕсли Минута(Дата) = 0 И Час(Дата) = 0 Тогда
ПредставлениеДаты = Формат(Дата, "ДЛФ=D");
Иначе
ПредставлениеДаты = Формат(Дата, НСтр("ru='ДФ=""дд.ММ.гггг'', ''ЧЧ:мм""'"));
КонецЕсли;
Возврат ПредставлениеДаты;
КонецФункции
Функция СтруктураДанныхДляПечатиУпрощеннаяФорма(ВыборкаДокумент)
ДанныеСтроки = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ВыборкаДокумент);
ДанныеСтроки.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДокумент.Номер, Истина, Ложь));
ДанныеСтроки.Вставить("Период", ДанныеСтроки.Дата);
ЗаполнитьПараметрыВодителя(ДанныеСтроки, Истина);
ЗаполнитьОтветственныхЛиц(ДанныеСтроки);
РассчитатьПредельныеЗначенияМашрута(ДанныеСтроки);
ДатаНачала = НачалоДня(ДанныеСтроки.ДатаОтправления);
ДатаОкончания = НачалоДня(ДанныеСтроки.ДатаВозвращения);
Если ДатаНачала = ДатаОкончания Или Не ЗначениеЗаполнено(ДатаНачала) Или Не ЗначениеЗаполнено(ДатаОкончания) Тогда
ДанныеСтроки.Вставить("ИмяМакетаЗаголовка", "ЗаголовокОдинДень");
ДанныеСтроки.Вставить("ДатаСтрокой", Формат(ДанныеСтроки.Дата, "ДЛФ=D"));
Иначе
ДанныеСтроки.Вставить("ИмяМакетаЗаголовка", "ЗаголовокПериод");
ДанныеСтроки.Вставить("ДатаОтправления", Формат(ДанныеСтроки.ДатаОтправления, "ДЛФ=D"));
ДанныеСтроки.Вставить("ДатаВозвращения", Формат(ДанныеСтроки.ДатаВозвращения, "ДЛФ=D"));
КонецЕсли;
Возврат ДанныеСтроки;
КонецФункции
Функция СтруктураДанныхСтрокиТаблицыУпрощеннаяФорма(ТекущаяСтрока, ОстатокТоплива)
ДанныеСтроки = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ТекущаяСтрока);
ДанныеСтроки.Вставить("ОстатокНаНачало", ОстатокТоплива);
ОстатокТоплива = ОстатокТоплива + ТекущаяСтрока.Куплено - ТекущаяСтрока.Расход;
ДанныеСтроки.Вставить("ОстатокНаКонец", ОстатокТоплива);
ДанныеСтроки.Вставить("ДатаОтправления", ПредставлениеДатыУпрощеннаяФорма(ТекущаяСтрока.ДатаОтправления));
ДанныеСтроки.Вставить("ДатаВозвращения", ПредставлениеДатыУпрощеннаяФорма(ТекущаяСтрока.ДатаВозвращения));
Возврат ДанныеСтроки;
КонецФункции
#КонецОбласти
#Область ПечатьТиповаяФормаЛегковойТС
Функция ПечатьПутевойЛистФорма3(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПутевойЛист_Форма3";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПутевойЛист.ПФ_MXL_ПутевойЛистФорма3");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст = ТекстЗапросаПечатьПутевойЛист();
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат ТабличныйДокумент;
КонецЕсли;
ВыборкаДокумент = РезультатЗапроса.Выбрать();
ПервыйДокумент = Истина;
Пока ВыборкаДокумент.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// Выведем титульный лист
ОбластьШапка = Макет.ПолучитьОбласть("ТитульныйЛист");
ДанныеСтроки = СтруктураДанныхДляПечатиТиповаяФорма(ВыборкаДокумент);
ОбластьШапка.Параметры.Заполнить(ДанныеСтроки);
ДанныеОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
ВыборкаДокумент.Организация, ВыборкаДокумент.Дата);
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, ДанныеОрганизации);
// Месяц путевого листа выводим в отдельной ячейке в родительном падеже
ОбластьШапка.Параметры.ДатаМесяц = Сред(Формат(ВыборкаДокумент.Дата, НСтр("ru='ДФ=dd.MMMM'")), 4);
ТабличныйДокумент.Вывести(ОбластьШапка);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
// Выведем строки таблицы
ОбластьШапка = Макет.ПолучитьОбласть("Оборотная_Шапка");
ТабличныйДокумент.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Оборотная_Строка");
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ДанныеОрганизации);
ВыборкаМаршрут = ВыборкаДокумент.Маршрут.Выбрать();
Пока ВыборкаМаршрут.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(ВыборкаМаршрут);
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
// Выведем подвал
ОбластьПодвал = Макет.ПолучитьОбласть("Оборотная_Подвал");
ОбластьПодвал.Параметры.Заполнить(ДанныеСтроки);
ТабличныйДокумент.Вывести(ОбластьПодвал);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокумент.Ссылка);
КонецЦикла;
// Для удобства печати необходимо масштабировать типовую форму для формата А-4
ТабличныйДокумент.МасштабПечати = МасштабПечатиТиповойФормыПутевогоЛиста();
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Возврат ТабличныйДокумент;
КонецФункции
Функция ПечатьПутевойЛистФорма4(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПутевойЛист_Форма4";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПутевойЛист.ПФ_MXL_ПутевойЛистФорма4");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст = ТекстЗапросаПечатьПутевойЛист();
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат ТабличныйДокумент;
КонецЕсли;
ВыборкаДокумент = РезультатЗапроса.Выбрать();
ПервыйДокумент = Истина;
Пока ВыборкаДокумент.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// Выведем титульный лист
ОбластьШапка = Макет.ПолучитьОбласть("ТитульныйЛист");
ДанныеСтроки = СтруктураДанныхДляПечатиТиповаяФорма(ВыборкаДокумент);
ОбластьШапка.Параметры.Заполнить(ДанныеСтроки);
ДанныеОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
ВыборкаДокумент.Организация, ВыборкаДокумент.Дата);
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, ДанныеОрганизации);
// Месяц путевого листа выводим в отдельной ячейке в родительном падеже
ОбластьШапка.Параметры.ДатаМесяц = Сред(Формат(ВыборкаДокумент.Дата, НСтр("ru='ДФ=dd.MMMM'")), 4);
ТабличныйДокумент.Вывести(ОбластьШапка);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
// Выведем строки таблицы
ОбластьШапка = Макет.ПолучитьОбласть("Оборотная_Шапка");
ТабличныйДокумент.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Оборотная_Строка");
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ДанныеОрганизации); // Добавляем реквизиты организации на оборотную сторону
ВыборкаМаршрут = ВыборкаДокумент.Маршрут.Выбрать();
Пока ВыборкаМаршрут.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(ВыборкаМаршрут);
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
// Выведем подвал
ОбластьПодвал = Макет.ПолучитьОбласть("Оборотная_Подвал");
ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, ДанныеОрганизации); // Добавляем реквизиты организации на оборотную сторону
ОбластьПодвал.Параметры.Заполнить(ДанныеСтроки);
ТабличныйДокумент.Вывести(ОбластьПодвал);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокумент.Ссылка);
КонецЦикла;
// Для удобства печати необходимо масштабировать типовую форму для формата А-4
ТабличныйДокумент.МасштабПечати = МасштабПечатиТиповойФормыПутевогоЛиста();
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Возврат ТабличныйДокумент;
КонецФункции
Функция ПечатьПутевойЛистФорма5(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПутевойЛист_Форма5";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПутевойЛист.ПФ_MXL_ПутевойЛистФорма5");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст = ТекстЗапросаПечатьПутевойЛист();
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат ТабличныйДокумент;
КонецЕсли;
ВыборкаДокумент = РезультатЗапроса.Выбрать();
ПервыйДокумент = Истина;
Пока ВыборкаДокумент.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// Выведем титульный лист
ОбластьШапка = Макет.ПолучитьОбласть("ТитульныйЛист");
ДанныеСтроки = СтруктураДанныхДляПечатиТиповаяФорма(ВыборкаДокумент);
ОбластьШапка.Параметры.Заполнить(ДанныеСтроки);
ДанныеОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
ВыборкаДокумент.Организация, ВыборкаДокумент.Дата);
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, ДанныеОрганизации);
// Месяц путевого листа выводим в отдельной ячейке в родительном падеже
ОбластьШапка.Параметры.ДатаМесяц = Сред(Формат(ВыборкаДокумент.Дата, НСтр("ru='ДФ=dd.MMMM'")), 4);
ТабличныйДокумент.Вывести(ОбластьШапка);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
// Выведем строки таблицы
ОбластьШапка = Макет.ПолучитьОбласть("Оборотная_Шапка");
ТабличныйДокумент.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Оборотная_Строка");
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ДанныеОрганизации);// Добавляем реквизиты организации на оборотную сторону
ВыборкаМаршрут = ВыборкаДокумент.Маршрут.Выбрать();
Пока ВыборкаМаршрут.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(ВыборкаМаршрут);
ТабличныйДокумент.Вывести(ОбластьСтрока);
ОбластьСтрока.Параметры.Заполнить(ДанныеСтроки);
КонецЦикла;
// Выведем подвал
ОбластьПодвал = Макет.ПолучитьОбласть("Оборотная_Подвал");
ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, ДанныеОрганизации); // Добавляем реквизиты организации на оборотную сторону
ОбластьПодвал.Параметры.Заполнить(ДанныеСтроки);
ТабличныйДокумент.Вывести(ОбластьПодвал);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокумент.Ссылка);
КонецЦикла;
// Для удобства печати необходимо масштабировать типовую форму для формата А-4
ТабличныйДокумент.МасштабПечати = МасштабПечатиТиповойФормыПутевогоЛиста();
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Возврат ТабличныйДокумент;
КонецФункции
Функция СтруктураДанныхДляПечатиТиповаяФорма(ВыборкаДокумент)
ДанныеСтроки = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ВыборкаДокумент);
ДанныеСтроки.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДокумент.Номер, Истина, Ложь));
ЗаполнитьПараметрыВодителя(ДанныеСтроки, Истина);
ЗаполнитьОтветственныхЛиц(ДанныеСтроки);
КупленноеТопливо = ВыборкаДокумент.КупленноеТопливо.Выгрузить();
ДанныеСтроки.Вставить("Куплено", КупленноеТопливо.Итог("Количество"));
РассчитатьПредельныеЗначенияМашрута(ДанныеСтроки);
ОстатокНаНачало = Справочники.ТранспортныеСредства.ОстатокТопливаВБаке(
ВыборкаДокумент.Организация, ВыборкаДокумент.ТранспортноеСредство, ВыборкаДокумент.Дата);
ОстатокНаКонец = ОстатокНаНачало + ДанныеСтроки.Куплено - ДанныеСтроки.Расход;
ДанныеСтроки.Вставить("РасходФактический", ДанныеСтроки.Расход);
ДанныеСтроки.Вставить("ОстатокНаНачало", ОстатокНаНачало);
ДанныеСтроки.Вставить("ОстатокНаКонец", ОстатокНаКонец);
РасходРазница = ДанныеСтроки.РасходПоНорме - ДанныеСтроки.Расход;
Если РасходРазница > 0 Тогда
ДанныеСтроки.Вставить("Экономия", РасходРазница);
ИначеЕсли РасходРазница < ДанныеСтроки.Расход Тогда
ДанныеСтроки.Вставить("Перерасход", - РасходРазница);
Иначе
ДанныеСтроки.Вставить("Экономия", 0);
ДанныеСтроки.Вставить("Перерасход", 0);
КонецЕсли;
Возврат ДанныеСтроки;
КонецФункции
#КонецОбласти
#Область ПечатьАвансовыйОтчет
Функция ПечатьПутевойЛистАвансовыйОтчет(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПутевойЛист_АвансовыйОтчет";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.АвансовыйОтчет.ПФ_MXL_АвансовыйОтчет");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст = ТекстЗапросаПечатьПутевойЛистАвансовыйОтчет();
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат ТабличныйДокумент;
КонецЕсли;
ПервыйДокумент = Истина;
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// ТИТУЛЬНЫЙ ЛИСТ
ДанныеСтроки = СтруктураДанныхДляПечатиАвансовыйОтчет(ВыборкаДокументов);
// Выводим титульный лист авансового отчета
ОбластьМакета = Макет.ПолучитьОбласть("Титул");
ОбластьМакета.Параметры.Заполнить(ДанныеСтроки);
ТабличныйДокумент.Вывести(ОбластьМакета);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
// ОБОРОТНАЯ СТОРОНА
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ТабличныйДокумент.Вывести(ОбластьМакета);
// Выводим табличные части
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ВыборкаПоТоварам = ВыборкаДокументов.Топливо.Выбрать();
Пока ВыборкаПоТоварам.Следующий() Цикл
ОбластьМакета.Параметры.Заполнить(ДанныеСтроки);
ОбластьМакета.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
// Выводим подвал авансового отчета
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.Заполнить(ДанныеСтроки);
ТабличныйДокумент.Вывести(ОбластьМакета);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументов.Ссылка);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
// Формирует и возвращает текст запроса для выборки данных,
// необходимых для формирования печатной формы
Функция ТекстЗапросаПечатьПутевойЛистАвансовыйОтчет()
ТекстЗапроса =
"ВЫБРАТЬ
| ПутевойЛист.Ссылка КАК Ссылка,
| ПутевойЛист.МоментВремени КАК МоментВремени,
| ПутевойЛист.Номер КАК Номер,
| ПутевойЛист.Дата КАК ДатаДокумента,
| ПутевойЛист.ФизЛицо КАК ПодотчетноеЛицо,
| ПутевойЛист.Организация КАК Руководители,
| ПутевойЛист.Организация КАК Организация,
| ПутевойЛист.ПодразделениеОрганизации КАК Подразделение,
| ВЫБОР
| КОГДА ПутевойЛист.ПодразделениеОрганизации.НаименованиеПолное ПОДОБНО """"
| ТОГДА ПутевойЛист.ПодразделениеОрганизации.Наименование
| ИНАЧЕ ПутевойЛист.ПодразделениеОрганизации.НаименованиеПолное
| КОНЕЦ КАК ПредставлениеПодразделения,
| ПутевойЛист.ПодразделениеОрганизации.Код КАК КодПодразделения,
| ПутевойЛист.ПодразделениеЗатрат КАК ПодразделениеЗатрат,
| ПутевойЛист.Топливо.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| ВидВходящегоДокумента КАК НаименованиеРасхода,
| ДатаВходящегоДокумента КАК ДокументДата,
| НомерВходящегоДокумента КАК ДокументНомер,
| Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма,
| Сумма КАК ПоОтчету,
| Сумма КАК ПоУчету
| ) КАК Топливо
|ИЗ
| Документ.ПутевойЛист КАК ПутевойЛист
|ГДЕ
| ПутевойЛист.Ссылка В(&МассивОбъектов)
| И ПутевойЛист.Топливо.ВидВходящегоДокумента = ЗНАЧЕНИЕ(Перечисление.ВидыДокументовПриобретенияГСМ.КассовыйЧек)
|
|УПОРЯДОЧИТЬ ПО
| ДатаДокумента,
| Ссылка";
Возврат ТекстЗапроса;
КонецФункции
Функция СтруктураДанныхДляПечатиАвансовыйОтчет(ВыборкаДокумент)
СчетУчетаТопливо = ПланыСчетов.Хозрасчетный.ТопливоВБаке;
СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
СчетаПодотчетныеЛица = БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами);
ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
ДанныеСтроки = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ВыборкаДокумент);
СтруктураАванса = Документы.АвансовыйОтчет.НовыеПараметрыРасчетаОстаткаАванса();
ЗаполнитьЗначенияСвойств(СтруктураАванса, ВыборкаДокумент);
СтруктураАванса.Вставить("Субсчета71", СчетаПодотчетныеЛица);
СуммаДоДокумента = Документы.АвансовыйОтчет.ПредыдущийАвансПодотчетногоЛица(СтруктураАванса);
Если СуммаДоДокумента >= 0 Тогда
ДанныеСтроки.Вставить("НачальныйОстаток", СуммаДоДокумента);
Иначе
ДанныеСтроки.Вставить("НачальныйПерерасход", - СуммаДоДокумента);
КонецЕсли;
Израсходовано = ВыборкаДокумент.Топливо.Выгрузить().Итог("Сумма");
ДанныеСтроки.Вставить("Израсходовано", Израсходовано);
ОстатокНаКонец = СуммаДоДокумента - Израсходовано;
Если ОстатокНаКонец >= 0 Тогда
ДанныеСтроки.Вставить("КонечныйОстаток", ОстатокНаКонец);
Иначе
ДанныеСтроки.Вставить("КонечныйПерерасход", -ОстатокНаКонец);
КонецЕсли;
СтруктураПараметры = Документы.АвансовыйОтчет.НовыеПараметрыЗаполненияПечатнойФормыАвансовогоОтчета();
ЗаполнитьЗначенияСвойств(СтруктураПараметры, ДанныеСтроки);
СтруктураПараметры.Вставить("СуммаДокумента", Израсходовано);
ОбщиеПараметры = Документы.АвансовыйОтчет.ПараметрыЗаполненияПечатнойФормыАвансовыйОтчет(СтруктураПараметры);
Для Каждого ТекущийПараметр Из ОбщиеПараметры Цикл
ДанныеСтроки.Вставить(ТекущийПараметр.Ключ, ТекущийПараметр.Значение);
КонецЦикла;
// Параметры раздела "Бухгалтерская запись"
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Хозрасчетный.СчетДт КАК СчетДт,
| Хозрасчетный.СчетКт КАК СчетКт,
| СУММА(Хозрасчетный.Сумма) КАК Сумма,
| Хозрасчетный.Регистратор КАК Регистратор
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Регистратор = &Регистратор
| И Хозрасчетный.СчетДт = &СчетДт
| И Хозрасчетный.СчетКт В(&СчетКт)
|
|СГРУППИРОВАТЬ ПО
| Хозрасчетный.СчетДт,
| Хозрасчетный.СчетКт,
| Хозрасчетный.Регистратор
|
|УПОРЯДОЧИТЬ ПО
| СчетДт,
| СчетКт");
Запрос.УстановитьПараметр("Регистратор", ВыборкаДокумент.Ссылка);
Запрос.УстановитьПараметр("СчетДт", СчетУчетаТопливо);
Запрос.УстановитьПараметр("СчетКт", СчетаПодотчетныеЛица);
Проводки = Документы.АвансовыйОтчет.ПараметрыБухгалтерскойЗаписиПриПечатиАвансовогоОтчета(
Запрос.Выполнить().Выбрать(), ВыборкаДокумент.Ссылка);
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ДанныеСтроки, Проводки, Истина);
ДанныеСтроки.Вставить("ДебетСубСчета", СчетУчетаТопливо);
ДанныеСтроки.Вставить("ИтогоПоОтчету", Израсходовано);
Возврат ДанныеСтроки;
КонецФункции
#КонецОбласти
// Формирует и возвращает текст запроса для выборки данных,
// необходимых для формирования печатной упрощенной и типовой формы 21.12.20 добавлено: | ПутевойЛист.Комментарий КАК Комментарий,
Функция ТекстЗапросаПечатьПутевойЛист()
ТекстЗапроса =
"ВЫБРАТЬ
| ПутевойЛист.Ссылка КАК Ссылка,
| ПутевойЛист.Комментарий КАК Комментарий,
| ПутевойЛист.Дата КАК Дата,
| ПутевойЛист.Номер КАК Номер,
| ПутевойЛист.Организация КАК Организация,
| ПутевойЛист.ТранспортноеСредство КАК ТранспортноеСредство,
| ЕСТЬNULL(ПРЕДСТАВЛЕНИЕ(ТранспортныеСредства.Топливо.ЕдиницаИзмерения), """") КАК ЕдиницаИзмерения,
| ЕСТЬNULL(ТранспортныеСредства.Топливо.КодОКПД2, """") КАК КодОКПД2,
| ЕСТЬNULL(ТранспортныеСредства.Топливо.Код, """") КАК Код,
| ТранспортныеСредства.Марка КАК Марка,
| ТранспортныеСредства.Топливо КАК Топливо,
| ТранспортныеСредства.РегистрационныйЗнак КАК РегистрационныйЗнак,
| ПутевойЛист.ФизЛицо КАК ФизЛицо,
| ПутевойЛист.НормаРасхода КАК НормаРасхода,
| ПутевойЛист.Топливо.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| ВидВходящегоДокумента КАК ВидВходящегоДокумента,
| НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма
| ) КАК КупленноеТопливо,
| ПутевойЛист.Маршрут.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| ПунктОтправления КАК ПунктОтправления,
| ПунктНазначения КАК ПунктНазначения,
| ДатаОтправления КАК ДатаОтправления,
| ДатаВозвращения КАК ДатаВозвращения,
| РАЗНОСТЬДАТ(ПутевойЛист.Маршрут.ДатаОтправления, ПутевойЛист.Маршрут.ДатаВозвращения, ЧАС) КАК ВсегоЧасов,
| ПоказаниеОдометраДо КАК ПоказаниеОдометраДо,
| ПоказаниеОдометраПосле КАК ПоказаниеОдометраПосле,
| Расстояние КАК ПробегАвтомобиля,
| ПутевойЛист.Маршрут.Расстояние * ПутевойЛист.НормаРасхода / 100 КАК РасходПоНорме,
| Расход КАК Расход
| ) КАК Маршрут
|ИЗ
| Документ.ПутевойЛист КАК ПутевойЛист
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ТранспортныеСредства КАК ТранспортныеСредства
| ПО ПутевойЛист.ТранспортноеСредство = ТранспортныеСредства.Ссылка
|ГДЕ
| ПутевойЛист.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Ссылка";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьПараметрыВодителя(ДанныеСтроки, ТиповаяФорма = Ложь)
ДанныеВодителя = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(
ДанныеСтроки.Организация, ДанныеСтроки.ФизЛицо, ДанныеСтроки.Дата);
// Подпункт 1 Пункта 7 Раздела II. Обязательные реквизиты путевого листа Приказа Минтранса России от 18.09.2008 N 152
// ФИО водителя указывается польностью
ДанныеСтроки.Вставить("ФИО", СокрЛП(СтрШаблон(Нстр("ru = '%1 %2 %3'"),
ДанныеВодителя.Фамилия, ДанныеВодителя.Имя, ДанныеВодителя.Отчество)));
ВодительскоеУдостоверение = ВодительскоеУдостоверениеФизлица(ДанныеСтроки.ФизЛицо, ДанныеСтроки.Дата);
Если ТиповаяФорма Тогда
ДанныеСтроки.Вставить("ФИОСокращенное", ДанныеВодителя.Представление);
ДанныеСтроки.Вставить("ТабельныйНомер", ДанныеВодителя.ТабельныйНомер);
КонецЕсли;
Если ЗначениеЗаполнено(ВодительскоеУдостоверение) Тогда
ДанныеСтроки.Вставить("СерияВодительскогоУдостоверения", ВодительскоеУдостоверение.Серия);
ДанныеСтроки.Вставить("НомерВодительскогоУдостоверения", ВодительскоеУдостоверение.Номер);
ИначеЕсли Не ТиповаяФорма Тогда
ДанныеСтроки.Вставить("СерияВодительскогоУдостоверения", "___________");
ДанныеСтроки.Вставить("НомерВодительскогоУдостоверения", "___________");
Иначе
ДанныеСтроки.Вставить("СерияВодительскогоУдостоверения", "");
ДанныеСтроки.Вставить("НомерВодительскогоУдостоверения", "");
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьОтветственныхЛиц(ДанныеСтроки)
ОтветственныеЛица = ОтветственныеЛицаБП.ОтветственныеЛица(ДанныеСтроки.Организация, ДанныеСтроки.Дата);
ДанныеСтроки.Вставить("Ответственный", ОтветственныеЛица.РуководительПредставление);
ДанныеСтроки.Вставить("ДолжностьОтветственного", ОтветственныеЛица.РуководительДолжностьПредставление);
Если ПустаяСтрока(ОтветственныеЛица.РуководительДолжностьПредставление) Тогда
ДанныеСтроки.Вставить("ДолжностьОтветственного", СтрШаблон(Нстр("ru = 'Генеральный директор'")));
КонецЕсли;
КонецПроцедуры
Процедура РассчитатьПредельныеЗначенияМашрута(ДанныеДокумента)
Маршрут = ДанныеДокумента.Маршрут.Выгрузить();
ДанныеДокумента.Вставить("РасходПоНорме", Маршрут.Итог("РасходПоНорме"));
ДанныеДокумента.Вставить("Расход", Маршрут.Итог("Расход"));
ДанныеДокумента.Вставить("ВсегоЧасов", Маршрут.Итог("ВсегоЧасов"));
Если ЗначениеЗаполнено(Маршрут) Тогда
ПоказаниеОдометраДо = Маршрут[0].ПоказаниеОдометраДо;
ПоказаниеОдометраПосле = Маршрут[0].ПоказаниеОдометраПосле;
ДатаОтправления = Маршрут[0].ДатаОтправления;
ДатаВозвращения = Маршрут[0].ДатаВозвращения;
АдресПодачи = Маршрут[0].ПунктОтправления;
ПунктНазначения = Маршрут[0].ПунктНазначения; //15.01.20 добавляем поля
Для НомерСтроки = 1 По Маршрут.Количество() - 1 Цикл
ПоказаниеОдометраДо = Мин(ПоказаниеОдометраДо, Маршрут[НомерСтроки].ПоказаниеОдометраДо);
ПоказаниеОдометраПосле = Макс(ПоказаниеОдометраПосле, Маршрут[НомерСтроки].ПоказаниеОдометраПосле);
ДатаОтправления = Мин(ДатаОтправления, Маршрут[НомерСтроки].ДатаОтправления);
ДатаВозвращения = Макс(ДатаВозвращения, Маршрут[НомерСтроки].ДатаВозвращения);
КонецЦикла;
Иначе
ПоказаниеОдометраДо = 0;
ПоказаниеОдометраПосле = 0;
ДатаОтправления = '00010101';
ДатаВозвращения = '00010101';
АдресПодачи = "";
ПунктНазначения = ""; //15.01.20 добавляем поля
КонецЕсли;
ДанныеДокумента.Вставить("ПоказаниеОдометраДо", ПоказаниеОдометраДо);
ДанныеДокумента.Вставить("ПоказаниеОдометраПосле", ПоказаниеОдометраПосле);
ДанныеДокумента.Вставить("ДатаОтправления", ДатаОтправления);
ДанныеДокумента.Вставить("ДатаВозвращения", ДатаВозвращения);
ДанныеДокумента.Вставить("АдресПодачи", АдресПодачи);
ДанныеДокумента.Вставить("ПунктНазначения", ПунктНазначения); //15.01.20 добавляем поля
ДанныеДокумента.Вставить("ПробегАвтомобиля", Маршрут.Итог("ПробегАвтомобиля"));
ДанныеДокумента.Вставить("Расход", Маршрут.Итог("Расход"));
КонецПроцедуры
#КонецОбласти
#Область СчетаУчета
Процедура УстановитьПравилаЗаполненияСчетовУчета(Правила) Экспорт
// Шапка
СчетаУчетаВДокументах.ДобавитьПравилоЗаполнения(Правила, "", "СчетЗатрат", "СодержаниеСлужебногоТранспорта");
СчетаУчетаВДокументах.ДобавитьПодчиненноеПравилоЗаполнения(Правила, "Субконто1", "СубконтоЗатрат1");
СчетаУчетаВДокументах.ДобавитьПодчиненноеПравилоЗаполнения(Правила, "Субконто2", "СубконтоЗатрат2");
СчетаУчетаВДокументах.ДобавитьПодчиненноеПравилоЗаполнения(Правила, "Субконто3", "СубконтоЗатрат3");
СчетаУчетаВДокументах.ДобавитьПодчиненноеПравилоЗаполнения(Правила, "ПодразделениеЗатрат", "ПодразделениеЗатрат");
СчетаУчетаВДокументах.ДобавитьВПравилоОписаниеРеквизитаДокумента(Правила, "Организация");
СчетаУчетаВДокументах.ДобавитьВПравилоОписаниеРеквизитаДокумента(Правила, "Подразделение", "ПодразделениеОрганизации");
КонецПроцедуры
Функция РеквизитыЗаСсылками() Экспорт
РеквизитыЗаСсылками = Новый Соответствие;
АналитикаУчета = Новый Массив;
АналитикаУчета.Добавить("СчетЗатрат");
АналитикаУчета.Добавить("ПодразделениеЗатрат");
АналитикаУчета.Добавить("Субконто1");
АналитикаУчета.Добавить("Субконто2");
АналитикаУчета.Добавить("Субконто3");
АналитикаУчета.Добавить("ОтражениеВУСН");
Для Каждого ИмяРеквизита Из АналитикаУчета Цикл
РеквизитыЗаСсылками.Вставить(ИмяРеквизита, "ПорядокУчетаЗатрат");
КонецЦикла;
Возврат РеквизитыЗаСсылками;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ПодготовкаПараметровПроведенияДокумента
Функция ПодготовитьПараметрыПроведения(ДокументСсылка, Отказ) Экспорт
ПараметрыПроведения = Новый Структура;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.УстановитьПараметр("ЭтоОтложенноеПроведение", Ложь);
Запрос.УстановитьПараметр("СчетУчета", ПланыСчетов.Хозрасчетный.ТопливоВБаке);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = ТекстЗапросаРеквизитыДокумента();
ТаблицаРеквизиты = Запрос.Выполнить().Выгрузить();
Реквизиты = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ТаблицаРеквизиты[0]);
ПараметрыПроведения.Вставить("Реквизиты", ТаблицаРеквизиты);
Если Не УчетнаяПолитика.Существует(Реквизиты.Организация, Реквизиты.Период, Истина, ДокументСсылка) Тогда
Отказ = Истина;
Возврат ПараметрыПроведения;
КонецЕсли;
ПрименяетсяУСНДоходыМинусРасходы = УчетнаяПолитика.ПрименяетсяУСНДоходыМинусРасходы(
Реквизиты.Организация, Реквизиты.Период);
ПлательщикНДФЛ = УчетнаяПолитика.ПлательщикНДФЛ(Реквизиты.Организация, Реквизиты.Период);
ВалютаРеглУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
ОсновнаяНоменклатурнаяГруппа = УчетнаяПолитика.ОсновнаяНоменклатурнаяГруппа(
Реквизиты.Организация, Реквизиты.Период);
ВестиУчетПоВидамДеятельностиИП = УчетнаяПолитика.ВестиУчетПоВидамДеятельностиИП(
Реквизиты.Организация, Реквизиты.Период);
Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ВалютаРеглУчета);
Запрос.УстановитьПараметр("СинонимПрочее", НСтр("ru = 'Прочее'"));
Запрос.УстановитьПараметр("ВестиУчетПоВидамДеятельностиИП", ВестиУчетПоВидамДеятельностиИП);
Запрос.УстановитьПараметр("ОсновнаяНоменклатурнаяГруппа", ОсновнаяНоменклатурнаяГруппа);
Реквизиты.Вставить("ПлательщикНДФЛ", ПлательщикНДФЛ);
Реквизиты.Вставить("ВалютаРеглУчета", ВалютаРеглУчета);
НомераТаблиц = Новый Структура;
Запросы = Новый Массив;
Запросы.Добавить(ТекстЗапросаПоступлениеРасходовБУ(НомераТаблиц));
ТекстЗапросаУСН = ТекстЗапросаПоступлениеРасходовУСН(
НомераТаблиц, ПараметрыПроведения, ПрименяетсяУСНДоходыМинусРасходы);
ТекстЗапросаИП = ТекстЗапросаПоступлениеРасходовИП(НомераТаблиц, ПараметрыПроведения, Реквизиты);
Если Не ПустаяСтрока(ТекстЗапросаУСН) Тогда
Запросы.Добавить(ТекстЗапросаУСН);
КонецЕсли;
Если Не ПустаяСтрока(ТекстЗапросаИП) Тогда
Запросы.Добавить(ТекстЗапросаИП);
КонецЕсли;
Запрос.Текст = СтрСоединить(Запросы, ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета());
Результат = Запрос.ВыполнитьПакет();
Для Каждого НомерТаблицы Из НомераТаблиц Цикл
ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить());
КонецЦикла;
Возврат ПараметрыПроведения;
КонецФункции
#КонецОбласти
#Область ТекстыЗапросовПодготовкаПараметровПроведенияДокумента
Функция ТекстЗапросаРеквизитыДокумента()
ТекстЗапроса =
"ВЫБРАТЬ
| Реквизиты.Ссылка КАК Ссылка,
| Реквизиты.Номер КАК Номер,
| Реквизиты.Дата КАК Период,
| Реквизиты.Организация КАК Организация,
| Реквизиты.ПодразделениеОрганизации КАК Подразделение,
| Реквизиты.ТранспортноеСредство КАК ТранспортноеСредство,
| Реквизиты.ФизЛицо КАК ФизЛицо,
| Реквизиты.НормаРасхода КАК НормаРасхода,
| Реквизиты.СчетЗатрат КАК СчетЗатрат,
| Реквизиты.ПодразделениеЗатрат КАК ПодразделениеЗатрат,
| Реквизиты.Субконто1 КАК Субконто1,
| Реквизиты.Субконто2 КАК Субконто2,
| Реквизиты.Субконто3 КАК Субконто3,
| Реквизиты.ТранспортноеСредство.Топливо КАК Номенклатура,
| Реквизиты.ОтражениеВУСН КАК ОтражениеВУСН,
| Реквизиты.МоментВремени КАК МоментВремени
|ПОМЕСТИТЬ Реквизиты
|ИЗ
| Документ.ПутевойЛист КАК Реквизиты
|ГДЕ
| Реквизиты.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Реквизиты.Ссылка КАК Ссылка,
| Реквизиты.Номер КАК Номер,
| Реквизиты.Период КАК Период,
| Реквизиты.Организация КАК Организация,
| Реквизиты.Подразделение КАК Подразделение,
| Реквизиты.ТранспортноеСредство КАК ТранспортноеСредство,
| Реквизиты.ФизЛицо КАК ФизЛицо,
| Реквизиты.НормаРасхода КАК НормаРасхода,
| Реквизиты.СчетЗатрат КАК СчетЗатрат,
| Реквизиты.ПодразделениеЗатрат КАК ПодразделениеЗатрат,
| Реквизиты.Субконто1 КАК Субконто1,
| Реквизиты.Субконто2 КАК Субконто2,
| Реквизиты.Субконто3 КАК Субконто3,
| Реквизиты.Номенклатура КАК Номенклатура,
| СУММА(ПутевойЛистМаршрут.Расход) КАК КоличествоРасход,
| Реквизиты.ОтражениеВУСН КАК ОтражениеВУСН,
| ЛОЖЬ КАК УчетАгентскогоНДС,
| Реквизиты.Ссылка КАК Регистратор,
| НЕОПРЕДЕЛЕНО КАК ВидОперации,
| ""ПоступлениеТоваровУслуг"" КАК ТипПоступления,
| НЕОПРЕДЕЛЕНО КАК ТипСклада,
| ЛОЖЬ КАК НДСВключенВСтоимость,
| Реквизиты.МоментВремени КАК МоментВремени
|ИЗ
| Реквизиты КАК Реквизиты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПутевойЛист.Маршрут КАК ПутевойЛистМаршрут
| ПО (ПутевойЛистМаршрут.Ссылка = Реквизиты.Ссылка)
|
|СГРУППИРОВАТЬ ПО
| Реквизиты.Ссылка,
| Реквизиты.Номер,
| Реквизиты.Период,
| Реквизиты.Организация,
| Реквизиты.ТранспортноеСредство,
| Реквизиты.ФизЛицо,
| Реквизиты.НормаРасхода,
| Реквизиты.СчетЗатрат,
| Реквизиты.ПодразделениеЗатрат,
| Реквизиты.Субконто1,
| Реквизиты.Субконто2,
| Реквизиты.Субконто3,
| Реквизиты.Номенклатура,
| Реквизиты.ОтражениеВУСН,
| Реквизиты.МоментВремени,
| Реквизиты.Ссылка,
| Реквизиты.Подразделение";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаПоступлениеРасходовБУ(НомераТаблиц)
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаКуплено.Ссылка КАК Ссылка,
| ТаблицаКуплено.НомерСтроки КАК НомерСтроки,
| ТаблицаКуплено.Количество КАК Количество,
| ТаблицаКуплено.Сумма КАК Сумма,
| ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| ТаблицаКуплено.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ТаблицаКуплено.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ТаблицаКуплено.ВидВходящегоДокумента КАК ВидВходящегоДокумента
|ИЗ
| Реквизиты КАК Реквизиты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПутевойЛист.Топливо КАК ТаблицаКуплено
| ПО (ТаблицаКуплено.Ссылка = Реквизиты.Ссылка)";
НомераТаблиц.Вставить("ТаблицаТопливо", НомераТаблиц.Количество());
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаПоступлениеРасходовУСН(НомераТаблиц, ПараметрыПроведения, ПрименяетсяУСН)
ТекстЗапроса = "";
Если Не ПрименяетсяУСН Тогда
ПараметрыПроведения.Вставить("ПоступлениеРасходовУСНРеквизиты", Неопределено);
ПараметрыПроведения.Вставить("ПоступлениеРасходовУСНТаблицаРасходов", Неопределено);
Возврат "";
КонецЕсли;
ТекстЗапросаУСНРеквизиты =
"ВЫБРАТЬ
| Реквизиты.Ссылка КАК Регистратор,
| Реквизиты.Период КАК Период,
| Реквизиты.Организация КАК Организация,
| Реквизиты.ФизЛицо КАК ДоговорКонтрагента,
| &ВалютаРегламентированногоУчета КАК Валюта,
| ЛОЖЬ КАК УчетАгентскогоНДС,
| ЛОЖЬ КАК ЭтоВозврат,
| ЛОЖЬ КАК РасходыПредпринимателя
|ИЗ
| Реквизиты КАК Реквизиты";
НомераТаблиц.Вставить("ПоступлениеРасходовУСНРеквизиты", НомераТаблиц.Количество());
ТекстЗапросаУСНТаблицаРасходов =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(Перечисление.ВидыРасходовУСН.Номенклатура) КАК ВидРасхода,
| ЗНАЧЕНИЕ(Перечисление.СтатусыПартийУСН.Купленные) КАК СтатусыПартийУСН,
| ЗНАЧЕНИЕ(Перечисление.СтатусыРасходовУСН.НеОплачено) КАК СтатусыОплатыРасходовУСН,
| РеквизитыДокумента.Номенклатура КАК ЭлементРасхода,
| ЛОЖЬ КАК ЭтоТовар,
| ИСТИНА КАК ЭтоМатериал,
| &СчетУчета КАК СчетУчета,
| РеквизитыДокумента.Ссылка КАК Партия,
| ПутевойЛистТопливо.Количество КАК Количество,
| ПутевойЛистТопливо.Сумма КАК Сумма,
| 0 КАК НДС,
| РеквизитыДокумента.ОтражениеВУСН КАК ОтражениеВУСН
|ИЗ
| Реквизиты КАК РеквизитыДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПутевойЛист.Топливо КАК ПутевойЛистТопливо
| ПО РеквизитыДокумента.Ссылка = ПутевойЛистТопливо.Ссылка
|ГДЕ
| ПутевойЛистТопливо.ВидВходящегоДокумента = ЗНАЧЕНИЕ(Перечисление.ВидыДокументовПриобретенияГСМ.КассовыйЧек)";
НомераТаблиц.Вставить("ПоступлениеРасходовУСНТаблицаРасходов", НомераТаблиц.Количество());
Запросы = Новый Массив;
Запросы.Добавить(ТекстЗапросаУСНРеквизиты);
Запросы.Добавить(ТекстЗапросаУСНТаблицаРасходов);
Возврат СтрСоединить(Запросы, ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета());
КонецФункции
Функция ТекстЗапросаПоступлениеРасходовИП(НомераТаблиц, ПараметрыПроведения, Реквизиты)
ТекстЗапроса = "";
Если Не Реквизиты.ПлательщикНДФЛ Тогда
ПараметрыПроведения.Вставить("ИПТаблицаТоваров", Неопределено);
ПараметрыПроведения.Вставить("ИПТаблицаВзаиморасчетов", Неопределено);
ПараметрыПроведения.Вставить("ИПТаблицаОплаченноеТопливо", Неопределено);
Возврат ТекстЗапроса;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ПутевойЛистТопливо.Ссылка КАК Ссылка,
| Реквизиты.Период КАК Период,
| ПутевойЛистТопливо.НомерСтроки КАК НомерСтроки,
| Реквизиты.Номенклатура КАК Номенклатура,
| ПутевойЛистТопливо.Количество КАК Количество,
| ПутевойЛистТопливо.Сумма КАК Сумма,
| Реквизиты.СчетЗатрат КАК СчетЗатрат,
| Реквизиты.Субконто1 КАК Субконто1,
| Реквизиты.Субконто2 КАК Субконто2,
| Реквизиты.Субконто3 КАК Субконто3
|ПОМЕСТИТЬ ТаблицаПрочее
|ИЗ
| Документ.ПутевойЛист.Топливо КАК ПутевойЛистТопливо
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Реквизиты КАК Реквизиты
| ПО (Реквизиты.Ссылка = ПутевойЛистТопливо.Ссылка)
|ГДЕ
| ПутевойЛистТопливо.ВидВходящегоДокумента = ЗНАЧЕНИЕ(Перечисление.ВидыДокументовПриобретенияГСМ.КассовыйЧек)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ""Топливо"" КАК ИмяСписка,
| &СинонимПрочее КАК СинонимСписка,
| ТаблицаПрочее.НомерСтроки КАК НомерСтроки,
| ТаблицаПрочее.Номенклатура КАК Номенклатура,
| ТаблицаПрочее.Сумма КАК Сумма,
| 0 КАК НДС,
| 0 КАК Количество,
| &СчетУчета КАК СчетУчета,
| ВЫБОР
| КОГДА НЕ &ВестиУчетПоВидамДеятельностиИП
| ТОГДА &ОсновнаяНоменклатурнаяГруппа
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаПрочее.Номенклатура КАК Справочник.Номенклатура).НоменклатурнаяГруппа
| КОНЕЦ КАК НоменклатурнаяГруппа,
| ВЫБОР
| КОГДА ТаблицаПрочее.Субконто1 ССЫЛКА Справочник.СтатьиЗатрат
| ИЛИ ТаблицаПрочее.Субконто1 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ИЛИ ТаблицаПрочее.Субконто1 ССЫЛКА Справочник.РасходыБудущихПериодов
| ТОГДА ТаблицаПрочее.Субконто1
| КОГДА ТаблицаПрочее.Субконто2 ССЫЛКА Справочник.СтатьиЗатрат
| ИЛИ ТаблицаПрочее.Субконто2 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ИЛИ ТаблицаПрочее.Субконто2 ССЫЛКА Справочник.РасходыБудущихПериодов
| ТОГДА ТаблицаПрочее.Субконто2
| КОГДА ТаблицаПрочее.Субконто3 ССЫЛКА Справочник.СтатьиЗатрат
| ИЛИ ТаблицаПрочее.Субконто3 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ИЛИ ТаблицаПрочее.Субконто3 ССЫЛКА Справочник.РасходыБудущихПериодов
| ТОГДА ТаблицаПрочее.Субконто3
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК СтатьяЗатрат,
| ВЫБОР
| КОГДА ТаблицаПрочее.Субконто1 ССЫЛКА Справочник.СтатьиЗатрат
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто1 КАК Справочник.СтатьиЗатрат).ВидРасходовНУ
| КОГДА ТаблицаПрочее.Субконто2 ССЫЛКА Справочник.СтатьиЗатрат
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто2 КАК Справочник.СтатьиЗатрат).ВидРасходовНУ
| КОГДА ТаблицаПрочее.Субконто3 ССЫЛКА Справочник.СтатьиЗатрат
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто3 КАК Справочник.СтатьиЗатрат).ВидРасходовНУ
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ВидРасходовНУ,
| ВЫБОР
| КОГДА ТаблицаПрочее.Субконто1 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто1 КАК Справочник.ПрочиеДоходыИРасходы).ПринятиеКНалоговомуУчету
| КОГДА ТаблицаПрочее.Субконто2 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто2 КАК Справочник.ПрочиеДоходыИРасходы).ПринятиеКНалоговомуУчету
| КОГДА ТаблицаПрочее.Субконто3 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто3 КАК Справочник.ПрочиеДоходыИРасходы).ПринятиеКНалоговомуУчету
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ПринятиеКНалоговомуУчету,
| ВЫБОР
| КОГДА ТаблицаПрочее.Субконто1 ССЫЛКА Справочник.СтатьиЗатрат
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто1 КАК Справочник.СтатьиЗатрат).ВидДеятельностиДляНалоговогоУчетаЗатрат
| КОГДА ТаблицаПрочее.Субконто1 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто1 КАК Справочник.ПрочиеДоходыИРасходы).ВидДеятельностиДляНалоговогоУчетаЗатрат
| КОГДА ТаблицаПрочее.Субконто2 ССЫЛКА Справочник.СтатьиЗатрат
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто2 КАК Справочник.СтатьиЗатрат).ВидДеятельностиДляНалоговогоУчетаЗатрат
| КОГДА ТаблицаПрочее.Субконто2 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто2 КАК Справочник.ПрочиеДоходыИРасходы).ВидДеятельностиДляНалоговогоУчетаЗатрат
| КОГДА ТаблицаПрочее.Субконто3 ССЫЛКА Справочник.СтатьиЗатрат
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто3 КАК Справочник.СтатьиЗатрат).ВидДеятельностиДляНалоговогоУчетаЗатрат
| КОГДА ТаблицаПрочее.Субконто3 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
| ТОГДА ВЫРАЗИТЬ(ТаблицаПрочее.Субконто3 КАК Справочник.ПрочиеДоходыИРасходы).ВидДеятельностиДляНалоговогоУчетаЗатрат
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ВидДеятельностиДляНалоговогоУчетаЗатрат,
| НЕОПРЕДЕЛЕНО КАК Партия
|ИЗ
| ТаблицаПрочее КАК ТаблицаПрочее
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаПрочее.Ссылка КАК ДокументРасчетов,
| ТаблицаПрочее.Период КАК ДатаДокументаРасчетов,
| ТаблицаПрочее.Сумма КАК СуммаРуб
|ИЗ
| ТаблицаПрочее КАК ТаблицаПрочее";
НомераТаблиц.Вставить("ВременнаяИПТаблицаПрочее", НомераТаблиц.Количество());
НомераТаблиц.Вставить("ИПТаблицаОплаченноеТопливо", НомераТаблиц.Количество());
НомераТаблиц.Вставить("ИПТаблицаВзаиморасчетов", НомераТаблиц.Количество());
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
// Возвращает реквизиты водительского удостоверения физического лица.
//
// Параметры:
// ФизЛицо - СправочникСсылка.ФизическиеЛица
// Период - Дата
//
// Возвращаемое значение:
// Неопределено, Структура
// * Серия - строка
// * Номер - строка
//
Функция ВодительскоеУдостоверениеФизлица(ФизЛицо, Период) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДокументыФизическихЛицСрезПоследних.Серия КАК Серия,
| ДокументыФизическихЛицСрезПоследних.Номер КАК Номер
|ИЗ
| РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(
| &Период,
| Физлицо = &Физлицо
| И ВидДокумента = ЗНАЧЕНИЕ(Справочник.ВидыДокументовФизическихЛиц.ВодительскоеУдостоверение)) КАК ДокументыФизическихЛицСрезПоследних
|ГДЕ
| ДокументыФизическихЛицСрезПоследних.Серия <> """"
| И ДокументыФизическихЛицСрезПоследних.Номер <> """"");
Запрос.УстановитьПараметр("Физлицо", ФизЛицо);
Запрос.УстановитьПараметр("Период", Период);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий()
И Не ПустаяСтрока(Выборка.Серия)
И Не ПустаяСтрока(Выборка.Номер) Тогда
СтруктураРезультат = Новый Структура("Серия, Номер");
ЗаполнитьЗначенияСвойств(СтруктураРезультат, Выборка);
Иначе
СтруктураРезультат = Неопределено;
КонецЕсли;
Возврат СтруктураРезультат;
КонецФункции
// Мастаб печати для печатной формы "Путевой лист (форма №3)"
Функция МасштабПечатиТиповойФормыПутевогоЛиста()
Возврат 140;
КонецФункции
#КонецОбласти
#КонецЕсли