Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Отчет в Рарус:Автотранспорт ред.5.506

v7: Отчет в Рарус:Автотранспорт ред.5.506
Я
   Nik_Home
 
31.07.19 - 14:43
Ситуация: В Рарус:Автотранспорт ред 5.506 есть отчет по форме 8 (Меню-Транспорт-Отчеты-Диспетчерская-Реестр путевых листов). Там несколько печатных форм, одна, форма ТМФ 8 выбирается для печати и извлекается из Общих таблиц конфигуратора.
Пользователям понадобилось в секции "строка" формы ТМФ 8 в свободной колонке (например, Примечание) отображать наименование Контрагента (Закзчика). Контрагент записывается в поле ("В распоряжение") по  по данному путевому листу (формы ОбщихТаблиц ТМФ 4-С, ТМФ 4-П) и должен извлекаться оттуда в форму ТМФ 8 Отчета.
Отчет строится и выводится с помощью Запросов языка 1С.
Я бьюсь и не могу привязать в строку формы ТМФ 8 Контрагента (Заказчика) из табличной части данного путевого листа.
Прошу помощи гуру в данной сфере.
 
 
   Nik_Home
 
1 - 31.07.19 - 15:03
//ПечатьФормы8()

// Параметры:
// Возвращаемое значение: 

// Описание: печать журнала учета движения путевых листов
Процедура ПечатьФормы8()
    Перем тблТаб;
    Перем докПЛ;
    Перем Контрагент;
    Перем спрВодитель, спрАвтомобиль;//спрКонтрагент;//

    Перем стрТабельный, стрФИО, стрГаражный;//стрКонтрагент;//

    Перем стрВОбласть;
    
    тблТаб = СоздатьОбъект("Таблица");
    тблТаб.ИсходнаяТаблица("ТМФ 8");
       тблТаб.Опции(0,0,0,0,"ОпцииПечатиТМФ8","ОкноТМФ8");
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать1)

    |Период с (пвДатаНач) по (пвДатаКон);
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ПЛ = Документ.аПЛ_Повременный.ТекущийДокумент, Документ.аПЛ_Сдельный.ТекущийДокумент, Документ.аПЛ_Легковой.ТекущийДокумент, Документ.аПЛ_Специальный.ТекущийДокумент, Документ.аПЛ_Строительный.ТекущийДокумент, Документ.аПЛ_Междугородный.ТекущийДокумент;
    |ВидДок = Документ.аПЛ_Повременный.ВидДокумента, Документ.аПЛ_Сдельный.ВидДокумента, Документ.аПЛ_Легковой.ВидДокумента, Документ.аПЛ_Специальный.ВидДокумента, Документ.аПЛ_Строительный.ВидДокумента, Документ.аПЛ_Междугородный.ВидДокумента;
    |ТипАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.ТипТС, Документ.аПЛ_Сдельный.Автомобиль.ТипТС, Документ.аПЛ_Легковой.Автомобиль.ТипТС, Документ.аПЛ_Специальный.Автомобиль.ТипТС, Документ.аПЛ_Строительный.Автомобиль.ТипТС, Документ.аПЛ_Междугородный.Автомобиль.ТипТС;
    |ВидАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Сдельный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Легковой.Автомобиль.Модель.ВидТС, Документ.аПЛ_Специальный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Строительный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Междугородный.Автомобиль.Модель.ВидТС;
    |Автомобиль = Документ.аПЛ_Повременный.Автомобиль, Документ.аПЛ_Сдельный.Автомобиль, Документ.аПЛ_Легковой.Автомобиль, Документ.аПЛ_Специальный.Автомобиль, Документ.аПЛ_Строительный.Автомобиль, Документ.аПЛ_Междугородный.Автомобиль;
    |Водитель = Документ.аПЛ_Повременный.Водитель, Документ.аПЛ_Сдельный.Водитель, Документ.аПЛ_Легковой.Водитель, Документ.аПЛ_Специальный.Водитель, Документ.аПЛ_Строительный.Водитель, Документ.аПЛ_Междугородный.Водитель;
    |Контрагент = Документ.аПЛ_Повременный.Контрагент, Документ.аПЛ_Сдельный.Контрагент;
    |Группировка ПЛ упорядочить по ПЛ.ДатаДок, ПЛ.ВремяДок;
    |"//}}ЗАПРОС

    ;
//Добавлял Контрагента в Запрос формы ТМФ 8//
   Nik_Home
 
2 - 31.07.19 - 15:09
//Продолжение текста модуля для формы ТМФ 8//

    Если (флТолькоИспользуемые = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Условие(Автомобиль.Собственное <> 3);"; 
    КонецЕсли;
    
    Если (флТолькоИспользуемые = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Условие(Автомобиль.Собственное <> 3);"; 
    КонецЕсли;
    
    Если пвТипПЛ.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Тип путевого листа: " + пвТипПЛ + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ВидДок = пвТипПЛ);";
    КонецЕсли;
    Если пвТипАвтомобиля.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Тип автотранспорта: " + пвТипАвтомобиля.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ТипАвтомобиля В пвТипАвтомобиля);";
    КонецЕсли;
    Если пвВидАвтомобиля.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Вид автотранспорта: " + пвВидАвтомобиля + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ВидАвтомобиля = пвВидАвтомобиля);";
    КонецЕсли;
    Если пвАвтомобиль.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Автомобиль: " + пвАвтомобиль.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(Автомобиль В пвАвтомобиль);";
    КонецЕсли;
    Если пвВодитель.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Водитель: " + пвВодитель.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(Водитель В пвВодитель);";
    КонецЕсли;
    //***********************вставка КН****************************************

    //Если Контрагент.Выбран(докПЛ.Контрагент) = 1 Тогда

        //СтрокаВывода = СтрокаВывода + "Контрагент: " + докПЛ.Контрагент.Наименование + " ";

        //ТекстЗапроса = ТекстЗапроса + "Условие(докПЛ.Контрагент);";

    //КонецЕсли;    

    //**************************************************************

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Сообщить("Запрос не выполнен.");
        Возврат;
    КонецЕсли;
    
    тблТаб.ВывестиСекцию("Обложка");
    стрВОбласть = СокрЛП(Константа.НазваниеОрганизации) + ", " + СокрЛП(Константа.АдресОрганизации) + ", " + СокрЛП(Константа.ТелефоныОрганизации);
    тблТаб.Область("Организация").Текст = стрВОбласть;
    тблТаб.Область("Период").Текст = "ЗА ПЕРИОД С " + пвДатаНач + " ПО " + пвДатаКон;
    тблТаб.НоваяСтраница();
    тблТаб.ВывестиСекцию("Шапка");
    
    Пока Запрос.Группировка(1) = 1 Цикл
        стрТабельный = ""; стрФИО = ""; стрГаражный = ""; стрКонтрагент = "";
        докПЛ = Запрос.ПЛ;
        спрВодитель = докПЛ.Водитель;
        спрАвтомобиль = докПЛ.Автомобиль;
        спрКонтрагент = докПЛ.Контрагент;
        Если ПустоеЗначение(докПЛ.Водитель) = 0 Тогда
            стрТабельный = спрВодитель.Код;
            стрФИО = спрВодитель.Наименование; 
        КонецЕсли;
        Если ПустоеЗначение(спрАвтомобиль) = 0 Тогда
            стрГаражный = спрАвтомобиль.Код;    
        КонецЕсли;
        //****************************Вставка КН************

        Если ПустоеЗначение(спрКонтрагент) = 0 Тогда
            стрКонтрагент = спрКонтрагент.Код;
        КонецЕсли;    
        //*************************************************    

        тблТаб.ВывестиСекцию("Строка");    
    КонецЦикла;
    
    тблТаб.ПараметрыСтраницы(2,1,0,20,10,10,10,1,1);
    тблТаб.ТолькоПросмотр(1);
    тблТаб.Показать("Форма №8");
    
КонецПроцедуры//ПечатьФормы8    

//
   Ёпрст
 
3 - 31.07.19 - 15:40
(0) И ?
в макете в нужной ячейке напиши стрКонтрагент  и поставь тип ячейки - выражение усё.
   Ёпрст
 
4 - 31.07.19 - 15:40
и вот эти вещи :

  докПЛ = Запрос.ПЛ;
        спрВодитель = докПЛ.Водитель;
        спрАвтомобиль = докПЛ.Автомобиль;
        спрКонтрагент = докПЛ.Контрагент;

лучше из запроса выгребать сразу..
   Kigo_Kigo
 
5 - 31.07.19 - 17:22
(3) Я так понимаю, что этот макет используется и другими метаданными, раз он находится в общих таблицах, по этому для них он поломается, автор скопируй эту таблицу и используй новую
   Ёпрст
 
6 - 31.07.19 - 17:51
(5) зачем ?

Тогда можно так, например: вывел секцию, посмотрел ВысотуТаблицы, далее через Область установил нужный текст  уже сформированной таблице. Это ежели макет не править.
   Kigo_Kigo
 
7 - 31.07.19 - 18:13
(6) ты думаешь автор понял что ты ему сейчас написал, если он в тс такие вопросы задает?
   Nik_Home
 
8 - 31.07.19 - 19:25
Спасибо за отклик, уважаемые.
Вот макет формы 8:
        Водитель                    Подпись                                
Номер путевого листа    Дата выдачи путевого листа    фамилия, имя, отчество        табельный номер        Гаражный номер    водителя в получении путевого листа            диспетчера и дата приемки путевого листа и документов от водителя        бухгалтера и дата приемки путевого листа    Заказчик        Примечание
1    2    3        4        5    6            7        8    9        10
докПЛ.НомерДок    докПЛ.ДатаПЛ    стрФИО        стрТабельный        стрГаражный                            докПЛ.Контрагент

До колонки "Заказчик" (моя переделка формы 8 из Общих таблиц) все работает, а выражение "докПЛ.Контрагент" не подходит.
   Nik_Home
 
9 - 31.07.19 - 19:47
Сейчас я не работе (там ключ защиты). Пользовался компонентой 7.7 "Бухгалтерия". Поэтому форма макета как-то скучилась, т.е. макет в формате .ert на внешней компоненте (скопировал туда отчет "Реестр ПЛ") правильно не перенесся. И диалог формы не копируется. Завтра на работе попробую ваши предложения и еще отправлю. Тут у меня стоит Win7, а на работе "хрюша" (индексы разные). Я не сильно заумно?
   Ёпрст
 
10 - 31.07.19 - 21:14
(8) если не править макет, то так:

  тблТаб.ВывестиСекцию("Строка");   
  Область = тблТаб.Область(тблТаб.ВысотаТаблицы(),10,Таб.ВысотаТаблицы(),10)// номер колонки подставишь нужный

  Область.Текст = "Вася"// подставишь че надо



   Kigo_Kigo
 
11 - 31.07.19 - 22:56
(10) ты мне скажи в чем сокраментальный смысл городить все это , когда можно добавить таблицу и вместо строки
Таб.ИспользоватьТаблицу("Таблица");
Вставить
Таб.ИспользоватьТаблицу("ТаблицаНовая");
???
а завтра надо будет еще что то добавть и переправить, опять джунгли городить? не понимаю..
   Ёпрст
 
12 - 31.07.19 - 23:00
(11) можно и так. У нас так-то на 7.7 все печ формы были внешними всегда. Общие макеты, разве что для хранения вк использовались и служебных данных.
   Nik_Home
 
13 - 01.08.19 - 09:18
Учел ваши рекомендации, уважаемые, пока не все.
Приобрел перечень синтаксических ошибок:
//***************************************

Это уже ошибка при печати формы из программы.
//************************************************

докПЛ = Запрос.ПЛ;
{Отчет.аРеестрПутевыхЛистов.Форма.Модуль(115)}: Поле агрегатного объекта не 

обнаружено (ПЛ)
В цикле "Запрос.Группировка(1)"данный оператор есть
//*******************************************************

В теле Процедуры ПечатьФормы8() ошибки
Перем спрВодитель, спрАвтомобиль; спрКонтрагент<<?>>;
{Отчет.аРеестрПутевыхЛистов.Форма.Модуль(91)}: Переменная не определена 

(спрКонтрагент)
<<?>>Перем стрТабельный, стрФИО, стрГаражный; стрКонтрагент;
{Отчет.аРеестрПутевыхЛистов.Форма.Модуль(92)}: Объявления переменных должны быть 

расположены в начале модуля, процедуры или функции
Перем стрТабельный, стрФИО, стрГаражный; стрКонтрагент<<?>>;
{Отчет.аРеестрПутевыхЛистов.Форма.Модуль(92)}: Переменная не определена 

(стрКонтрагент)
<<?>>Перем стрВОбласть;
{Отчет.аРеестрПутевыхЛистов.Форма.Модуль(93)}: Объявления переменных должны быть 

расположены в начале модуля, процедуры или функции
При проверке модуля обнаружены синтаксические ошибки!
//**********************************************************

Закоментировал перем "спрКонтрагент" и "стрКонтрагент", ошибки пропали.
//*********************************************************
   Nik_Home
 
14 - 01.08.19 - 09:23
Сейсас мотуль стал такой:
//******************************************************************************

//кнИнтнервалДат()
// Параметры:

// Возвращаемое значение: 
// Описание: вызывается при нажатии кнопки с одноименным идентификатором

Процедура кнИнтервалДат()
    Перем чИнтервал;// разница в датах


    пвДатаНач = глИнтервалДат(пвДатаНач, пвДатаКон,Контекст);
    чИнтервал = глРазницаВДатах(пвДатаНач, пвДатаКон);
    пвДатаКон = пвДатаНач + чИнтервал;    
КонецПроцедуры//кнИнтервалДат


Процедура кнСформировать()
    Таб = СоздатьОбъект("Таблица");
    НПП=0;
    СтрокаВывода = "";
    ДатаНач = пвДатаНач;
    ДатаКон = пвДатаКон;
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)

    |Период с (ДатаНач) по (ДатаКон);
    |Обрабатывать НеПомеченныеНаУдаление;
    |ПЛ = Документ.аПЛ_Повременный.ТекущийДокумент, Документ.аПЛ_Сдельный.ТекущийДокумент, Документ.аПЛ_Легковой.ТекущийДокумент, Документ.аПЛ_Специальный.ТекущийДокумент, Документ.аПЛ_Строительный.ТекущийДокумент, Документ.аПЛ_Междугородный.ТекущийДокумент;
    |ВидДок = Документ.аПЛ_Повременный.ВидДокумента, Документ.аПЛ_Сдельный.ВидДокумента, Документ.аПЛ_Легковой.ВидДокумента, Документ.аПЛ_Специальный.ВидДокумента, Документ.аПЛ_Строительный.ВидДокумента, Документ.аПЛ_Междугородный.ВидДокумента;
    |ТипАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.ТипТС, Документ.аПЛ_Сдельный.Автомобиль.ТипТС, Документ.аПЛ_Легковой.Автомобиль.ТипТС, Документ.аПЛ_Специальный.Автомобиль.ТипТС, Документ.аПЛ_Строительный.Автомобиль.ТипТС, Документ.аПЛ_Междугородный.Автомобиль.ТипТС;
    |ВидАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Сдельный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Легковой.Автомобиль.Модель.ВидТС, Документ.аПЛ_Специальный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Строительный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Междугородный.Автомобиль.Модель.ВидТС;
    |Автомобиль = Документ.аПЛ_Повременный.Автомобиль, Документ.аПЛ_Сдельный.Автомобиль, Документ.аПЛ_Легковой.Автомобиль, Документ.аПЛ_Специальный.Автомобиль, Документ.аПЛ_Строительный.Автомобиль, Документ.аПЛ_Междугородный.Автомобиль;
    |Водитель = Документ.аПЛ_Повременный.Водитель, Документ.аПЛ_Сдельный.Водитель, Документ.аПЛ_Легковой.Водитель, Документ.аПЛ_Специальный.Водитель, Документ.аПЛ_Строительный.Водитель, Документ.аПЛ_Междугородный.Водитель;
    |Контрагент = Документ.аПЛ_Повременный.Контрагент.Наименование, Документ.аПЛ_Сдельный.Контрагент.Наименование;
    |Группировка ПЛ упорядочить по ПЛ.ДатаДок, ПЛ.ВремяДок;
    |"//}}ЗАПРОС

    ;
    
    Если (флТолькоИспользуемые = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Условие(Автомобиль.Собственное = 1);"; 
        СтрокаВывода = СтрокаВывода + " Только собственные а/м";
    КонецЕсли;
    
    Если пвТипПЛ.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + " Тип путевого листа: " + пвТипПЛ + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ВидДок = пвТипПЛ);";
    КонецЕсли;
    Если пвТипАвтомобиля.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + " Тип автотранспорта: " + пвТипАвтомобиля.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ТипАвтомобиля В пвТипАвтомобиля);";
    КонецЕсли;
    Если пвВидАвтомобиля.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + " Вид автотранспорта: " + пвВидАвтомобиля + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ВидАвтомобиля = пвВидАвтомобиля);";
    КонецЕсли;
    Если пвАвтомобиль.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + " Автомобиль: " + пвАвтомобиль.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(Автомобиль В пвАвтомобиль);";
    КонецЕсли;
    Если пвВодитель.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + " Водитель: " + пвВодитель.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(Водитель В пвВодитель);";
    КонецЕсли;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Сообщить("Запрос не выполнен.");
        Возврат;
    КонецЕсли;
    Таб.ВывестиСекцию("Заголовок");
    Таб.ВывестиСекцию("Шапка");
    Пока Запрос.Группировка(1) = 1 Цикл
        НПП = НПП + 1;
        ПЛ = Запрос.ПЛ;
        Таб.ВывестиСекцию("Строка");    
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,5,0,"опцРеестрПЛ","окнРеестрПЛ");
    Таб.ПараметрыСтраницы(2,,,20,10,20,20,10,10,1,);
    Таб.Показать("Реестр путевых листов","");      
КонецПроцедуры//кнСформировать


//***************************обновлКН***************************************************

//ПечатьФормы8()
// Параметры:

// Возвращаемое значение: 
// Описание: печать журнала учета движения путевых листов



Процедура ПечатьФормы8()
    Перем тблТаб;
    Перем ПЛ;//вставка КН ПЛ - Путевой лист****//

    Перем докПЛ;
    Перем Контрагент;
    Перем спрВодитель, спрАвтомобиль;//спрКонтрагент;//

    Перем стрТабельный, стрФИО, стрГаражный;//стрКонтрагент;//

    Перем стрВОбласть;
    
    тблТаб = СоздатьОбъект("Таблица");
    тблТаб.ИсходнаяТаблица("ТМФ 8");
       тблТаб.Опции(0,0,0,0,"ОпцииПечатиТМФ8","ОкноТМФ8");
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать1)

    |Период с (пвДатаНач) по (пвДатаКон);
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ПЛ = Документ.аПЛ_Повременный.ТекущийДокумент, Документ.аПЛ_Сдельный.ТекущийДокумент, Документ.аПЛ_Легковой.ТекущийДокумент, Документ.аПЛ_Специальный.ТекущийДокумент, Документ.аПЛ_Строительный.ТекущийДокумент, Документ.аПЛ_Междугородный.ТекущийДокумент;
    |ВидДок = Документ.аПЛ_Повременный.ВидДокумента, Документ.аПЛ_Сдельный.ВидДокумента, Документ.аПЛ_Легковой.ВидДокумента, Документ.аПЛ_Специальный.ВидДокумента, Документ.аПЛ_Строительный.ВидДокумента, Документ.аПЛ_Междугородный.ВидДокумента;
    |ТипАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.ТипТС, Документ.аПЛ_Сдельный.Автомобиль.ТипТС, Документ.аПЛ_Легковой.Автомобиль.ТипТС, Документ.аПЛ_Специальный.Автомобиль.ТипТС, Документ.аПЛ_Строительный.Автомобиль.ТипТС, Документ.аПЛ_Междугородный.Автомобиль.ТипТС;
    |ВидАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Сдельный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Легковой.Автомобиль.Модель.ВидТС, Документ.аПЛ_Специальный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Строительный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Междугородный.Автомобиль.Модель.ВидТС;
    |Автомобиль = Документ.аПЛ_Повременный.Автомобиль, Документ.аПЛ_Сдельный.Автомобиль, Документ.аПЛ_Легковой.Автомобиль, Документ.аПЛ_Специальный.Автомобиль, Документ.аПЛ_Строительный.Автомобиль, Документ.аПЛ_Междугородный.Автомобиль;
    |Водитель = Документ.аПЛ_Повременный.Водитель, Документ.аПЛ_Сдельный.Водитель, Документ.аПЛ_Легковой.Водитель, Документ.аПЛ_Специальный.Водитель, Документ.аПЛ_Строительный.Водитель, Документ.аПЛ_Междугородный.Водитель;
    |Контрагент = Документ.аПЛ_Повременный.Контрагент, Документ.аПЛ_Сдельный.Контрагент;
    |Группировка ПЛ упорядочить по ПЛ.ДатаДок, ПЛ.ВремяДок;
    |"//}}ЗАПРОС

    ;
    //****************Вставка КН****************************

     докПЛ = Запрос.ПЛ;
       спрВодитель = докПЛ.Водитель;
       спрАвтомобиль = докПЛ.Автомобиль;
       спрКонтрагент = докПЛ.Контрагент;
    //******************************************************

    
    Если (флТолькоИспользуемые = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Условие(Автомобиль.Собственное <> 3);"; 
    КонецЕсли;
    
    Если (флТолькоИспользуемые = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Условие(Автомобиль.Собственное <> 3);"; 
    КонецЕсли;
    
    Если пвТипПЛ.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Тип путевого листа: " + пвТипПЛ + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ВидДок = пвТипПЛ);";
    КонецЕсли;
    Если пвТипАвтомобиля.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Тип автотранспорта: " + пвТипАвтомобиля.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ТипАвтомобиля В пвТипАвтомобиля);";
    КонецЕсли;
    Если пвВидАвтомобиля.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Вид автотранспорта: " + пвВидАвтомобиля + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(ВидАвтомобиля = пвВидАвтомобиля);";
    КонецЕсли;
    Если пвАвтомобиль.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Автомобиль: " + пвАвтомобиль.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(Автомобиль В пвАвтомобиль);";
    КонецЕсли;
    Если пвВодитель.Выбран() = 1 Тогда
        СтрокаВывода = СтрокаВывода + "Водитель: " + пвВодитель.Наименование + " ";
        ТекстЗапроса = ТекстЗапроса + "Условие(Водитель В пвВодитель);";
    КонецЕсли;
    //***********************вставка КН****************************************

    //Если Контрагент.Выбран(докПЛ.Контрагент) = 1 Тогда

        //СтрокаВывода = СтрокаВывода + "Контрагент: " + докПЛ.Контрагент.Наименование + " ";

        //ТекстЗапроса = ТекстЗапроса + "Условие(докПЛ.Контрагент);";

    //КонецЕсли;    

    //**************************************************************

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Сообщить("Запрос не выполнен.");
        Возврат;
    КонецЕсли;
    
    тблТаб.ВывестиСекцию("Обложка");
    стрВОбласть = СокрЛП(Константа.НазваниеОрганизации) + ", " + СокрЛП(Константа.АдресОрганизации) + ", " + СокрЛП(Константа.ТелефоныОрганизации);
    тблТаб.Область("Организация").Текст = стрВОбласть;
    тблТаб.Область("Период").Текст = "ЗА ПЕРИОД С " + пвДатаНач + " ПО " + пвДатаКон;
    тблТаб.НоваяСтраница();
    тблТаб.ВывестиСекцию("Шапка");
    
    Пока Запрос.Группировка(1) = 1 Цикл
        стрТабельный = ""; стрФИО = ""; стрГаражный = ""; стрКонтрагент = "";
        докПЛ = Запрос.ПЛ;
        спрВодитель = докПЛ.Водитель;
        спрАвтомобиль = докПЛ.Автомобиль;
        спрКонтрагент = докПЛ.Контрагент;
        Если ПустоеЗначение(докПЛ.Водитель) = 0 Тогда
            стрТабельный = спрВодитель.Код;
            стрФИО = спрВодитель.Наименование; 
        КонецЕсли;
        Если ПустоеЗначение(спрАвтомобиль) = 0 Тогда
            стрГаражный = спрАвтомобиль.Код;    
        КонецЕсли;
        //****************************Вставка КН************

        Если ПустоеЗначение(спрКонтрагент) = 0 Тогда
            стрКонтрагент = спрКонтрагент.Код;
        КонецЕсли;    
        //*************************************************    

        тблТаб.ВывестиСекцию("Строка");    
    КонецЦикла;
    
    тблТаб.ПараметрыСтраницы(2,1,0,20,10,10,10,1,1);
    тблТаб.ТолькоПросмотр(1);
    тблТаб.Показать("Форма №8");
    
КонецПроцедуры//ПечатьФормы8    


//******************************************************************************

//ПечатьФормыЭСМ6()
// Параметры:

// Возвращаемое значение: 
// Описание:

Процедура ПечатьФормыЭСМ6(чПечать)
    Перем ч[31];
    Перем докПЛ;
    Перем спрВодитель, спрАвтомобиль;
    Перем стрТабельный, стрФИО, стрГаражный;
    Перем стрВОбласть;
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("ТСМ ЭСМ-6");
    Если чПечать = 3 Тогда// печать обложки

        Таб.ВывестиСекцию("Обложка|Начало");
        стрВОбласть = СокрЛП(Константа.НазваниеОрганизации) + ", " + СокрЛП(Константа.АдресОрганизации) + ", " + СокрЛП(Константа.ТелефоныОрганизации);
        Таб.Область("Организация").Текст = стрВОбласть;
        Таб.Область("ОрганизацияОКПО").Текст =СокрЛП(Константа.КодОКПО);
        Таб.Область("Год").Текст = "ЗА " + ДатаГод(пвДатаНач) + " ГОД.";
    Иначе
        
        НПП=0;
        СтрокаВывода = "";
        ДатаНач = пвДатаНач;
        ДатаКон = пвДатаКон;
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса = 
        "//{{ЗАПРОС(Сформировать2)

        |Период с (ДатаНач) по (ДатаКон);
        |Обрабатывать НеПомеченныеНаУдаление;
        |ВидДок = Документ.аПЛ_Строительный.ВидДокумента;
        |ТипАвтомобиля = Документ.аПЛ_Строительный.Автомобиль.ТипТС;
        |ВидАвтомобиля = Документ.аПЛ_Строительный.Автомобиль.Модель.ВидТС;
        |Автомобиль = Документ.аПЛ_Строительный.Автомобиль;
        |Объект = Документ.аПЛ_Строительный.Адрес;
        |Водитель = Документ.аПЛ_Строительный.Водитель;
        |Отработано = Документ.аПЛ_Строительный.Отработано;
        |Функция ОтработаноСумма = Сумма(Отработано);
        |Группировка Месяц;
        |Группировка Автомобиль;
        |Группировка Объект упорядочить по Объект.Наименование;//все вошедшиевзапрос;

        |Группировка День;
        |"//}}ЗАПРОС

        ;
        
        Если (флТолькоИспользуемые = 1) Тогда
            ТекстЗапроса = ТекстЗапроса + "
            |Условие(Автомобиль.Собственное <> 3);"; 
        КонецЕсли;
        
        Если пвТипПЛ.Выбран() = 1 Тогда
            СтрокаВывода = СтрокаВывода + "Тип путевого листа: " + пвТипПЛ + " ";
            ТекстЗапроса = ТекстЗапроса + "Условие(ВидДок = пвТипПЛ);";
        КонецЕсли;
        Если пвТипАвтомобиля.Выбран() = 1 Тогда
            СтрокаВывода = СтрокаВывода + "Тип автотранспорта: " + пвТипАвтомобиля.Наименование + " ";
            ТекстЗапроса = ТекстЗапроса + "Условие(ТипАвтомобиля В пвТипАвтомобиля);";
        КонецЕсли;
        Если пвВидАвтомобиля.Выбран() = 1 Тогда
            СтрокаВывода = СтрокаВывода + "Вид автотранспорта: " + пвВидАвтомобиля + " ";
            ТекстЗапроса = ТекстЗапроса + "Условие(ВидАвтомобиля = пвВидАвтомобиля);";
        КонецЕсли;
        Если пвАвтомобиль.Выбран() = 1 Тогда
            СтрокаВывода = СтрокаВывода + "Автомобиль: " + пвАвтомобиль.Наименование + " ";
            ТекстЗапроса = ТекстЗапроса + "Условие(Автомобиль В пвАвтомобиль);";
        КонецЕсли;
        Если пвВодитель.Выбран() = 1 Тогда
            СтрокаВывода = СтрокаВывода + "Водитель: " + пвВодитель.Наименование + " ";
            ТекстЗапроса = ТекстЗапроса + "Условие(Водитель В пвВодитель);";
        КонецЕсли;
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Сообщить("Запрос не выполнен.");
            Возврат;
        КонецЕсли;
        
        Пока Запрос.Группировка(1) = 1 Цикл//месяц

            Месяц = СокрЛП(Запрос.Месяц);
            Если чПечать = 1 Тогда
                Таб.ВывестиСекцию("Шапка|Начало");
            ИначеЕсли чПечать = 2 Тогда
                Таб.ВывестиСекцию("Шапка|Окончание");
            КонецЕсли;
            НПП = 0;
            Пока Запрос.Группировка(2) = 1 Цикл//автомобиль

                спрАвтомобиль = Запрос.Автомобиль;
                стрНаименование = спрАвтомобиль.Наименование;
                стрМарка =     глПредставлениеМоделиАвто(спрАвтомобиль);
                стрИнвНомер = спрАвтомобиль.Код;
                стрГодВыпуска = спрАвтомобиль.ГодВыпуска;
                Если стрГодВыпуска = 0 Тогда
                    стрГодВыпуска = "";
                КонецЕсли;
                Пока Запрос.Группировка(3) = 1 Цикл//объект

                    НПП = НПП + 1;
                    Попытка
                        стрОбъект = Запрос.Объект.Наименование;
                    Исключение
                        стрОбъект = "";
                    КонецПопытки;
                    Для чСч = 1 По 31 Цикл
                        ч[чСч] = 0;
                    КонецЦикла;
                    чЧасы = 0; чДни = 0;
                    Пока Запрос.Группировка(4) = 1 Цикл//день

                        чСч = ДатаЧисло(Запрос.День);
                        ч[чСч] = Запрос.Отработано;
                        чЧасы = чЧасы + ч[чСч];
                        чДни = чДни + 1;
                    КонецЦикла;
                    Если чПечать = 1 Тогда
                        Таб.ВывестиСекцию("Строка|Начало");
                    ИначеЕсли чПечать = 2 Тогда
                        Таб.ВывестиСекцию("Строка|Окончание");
                    КонецЕсли;
                КонецЦикла;
            КонецЦикла;
            Таб.НоваяСтраница();
        КонецЦикла;
    КонецЕсли;
    Таб.Опции(0,0,0,0,"опцЭСМ6","окнЭСМ6");
    Таб.ПараметрыСтраницы(2,,,10,10,10,10);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Форма ЭСМ-6","");        
КонецПроцедуры//ПечатьФормыЭСМ6    


//******************************************************************************

//кнВниз()
// Параметры:

// Возвращаемое значение: 
// Описание: вызывается при нажатии кнопки с одноименным идентификатором

Процедура кнВниз()
    Перем Меню, ПунткМеню, стрПункта;
    ПунктМеню = 0;
    Меню = СоздатьОбъект("СписокЗначений");
    Меню.ДобавитьЗначение("Сформировать реестр");
    Меню.ДобавитьЗначение("Сформировать и закрыть");
    Меню.ДобавитьЗначение("Форма №8");
    Меню.ДобавитьЗначение("Форма ЭСМ-6, четные");
    Меню.ДобавитьЗначение("Форма ЭСМ-6, нечетные");
    Меню.ДобавитьЗначение("Форма ЭСМ-6, титульный");
    Меню.ВыбратьЗначение(стрПункта,,ПунктМеню,,1);
    Если ПунктМеню = 1 Тогда
        кнСформировать();
    ИначеЕсли ПунктМеню = 2 Тогда
        кнСформировать();
        Форма.Закрыть();
    ИначеЕсли ПунктМеню = 3 Тогда
        ПечатьФормы8();
    ИначеЕсли ПунктМеню = 4 Тогда
        ПечатьФормыЭСМ6(1);
    ИначеЕсли ПунктМеню = 5 Тогда
        ПечатьФормыЭСМ6(2);
    ИначеЕсли ПунктМеню = 6 Тогда
        ПечатьФормыЭСМ6(3);
    КонецЕсли;
КонецПроцедуры//кнВниз


//******************************************************************************

// Тело модуля
//******************************************************************************


Если (ПустоеЗначение(пвДатаНач) = 1) Тогда
    пвДатаНач = Константа.ОсновнаяДатаНачалаОтчета;
КонецЕсли;

Если (ПустоеЗначение(пвДатаКон) = 1) Тогда
    пвДатаКон = ТекущаяДата();
КонецЕсли;
//**************************************************************

Ошибок нет.
   Nik_Home
 
15 - 01.08.19 - 09:54
При формировании формы 8 в программе опять выскочила ошибка.
Это из рекомендованной подстановки операторов. Закоментирую.
В теле модуля этот оператор записан.
//************************************************************

докПЛ = Запрос.ПЛ;
{Отчет.аРеестрПутевыхЛистов.Форма.Модуль(116)}: Поле агрегатного объекта не 

обнаружено (ПЛ)
//************************************************************

Строка с выражениями для печати формы 8:
"1"-  докПЛ.НомерДок, "2"-докПЛ.ДатаПЛ, "3"- стрФИО, "4"-стрТабельный, "5"- стрГаражный    

, "9"- стр.Контрагент//моя подстанока и моя засада//

С 1 по 5 строки работают нормально
В диалоге форм реестра нет поля ввода Контрагента, он должен выделяться из данного ПЛ.
Думаю дальше.
   Nik_Home
 
16 - 01.08.19 - 10:20
Похоже, эту процедуру дописывали в глобальный модуль разработчики Раруса.
Вопрос: Можно ли как-то Контрагента вставить в отчет (форма 8) с помощью этой процедуры глобального модуля?
Там оператор (ДокОсн="")
Только в формах ПЛ Контрагент находится в реквизитах табличной части путевых листов, а не в реквизитах шапки.
//*************************************************************

//////////////////////////////////////////////////////////////////////////

//
Процедура глПриВыбореКонтрагента(Контрагент, Договор, ДокОсн="") Экспорт
    Если (ПустоеЗначение(Договор) = 1) и (ПустоеЗначение(ДокОсн) = 1) Тогда
        Договор = Контрагент.ОсновнойДоговор;
    Иначе
        Если Договор.Владелец <> Контрагент Тогда
            Договор = Контрагент.ОсновнойДоговор;
        КонецЕсли;
    КонецЕсли;
    Если ПустоеЗначение(ДокОсн) = 0 Тогда
        Если 

Метаданные.Документ(ДокОсн.Вид()).РеквизитШапки("Контрагент").Выбран() = 1 Тогда
               Если ДокОсн.Контрагент <> Контрагент Тогда
                ДокОсн = "";
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры  //глПриВыбореКонтрагента

//****************************************************************
   Kigo_Kigo
 
17 - 01.08.19 - 11:30
(16) ход ваших мыслей не понятен от слова совсем
если так хочется из Процедура глПриВыбореКонтрагента(Контрагент, Договор, ДокОсн="") Экспорт
то в глобальние
Перем КонтрагентДляФормы8 Экспорт;
глПриВыбореКонтрагента(Контрагент, Договор, ДокОсн="")

КонтрагентДляФормы8  = Контрагент;

Дальше (3) но вместо стрКонтрагент  - КонтрагентДляФормы8
   Nik_Home
 
18 - 01.08.19 - 13:54
Уважаемый, Kigo_Kigo!
В глобальный модуль я залез потому, что в модулях формы ПЛ увидел строки:
********************************************************
// СПЕЦИАЛЬНЫЕ ФУНКЦИИ МОДУЛЯ ФОРМЫ ДОКУМЕНТА
*************************************
Функция ПриВыбореЗначения(Об="")
    // Рекурсивная Функция обработки всех экранных объектов.

    Если Об="" Тогда Об=Форма.АктивныйЭлемент(); КонецЕсли;
.............................................
    ИначеЕсли Об="Контрагент" Тогда
        КонтекстДокумента = глВзятьКонтекст(Контекст);
        глУстановитьАдресКонтрагентаПоУмолчанию(КонтекстДокумента, 

Контрагент, 1, Адрес);    // подача

..............................................
    Если (Значение = "Лицевая сторона") или (Значение = "Все") Тогда
            Таб.ВывестиСекцию("Лицевая");
            ВыбратьСтроки();
            Для чНомер = 1 По 2 Цикл
                Если ПолучитьСтроку() = 1 Тогда
                    стрОбласть = "ВРаспоряжение" + 

Строка(чНомер);
                    Таб.Область(стрОбласть).Текст = 

Контрагент.Наименование + ", " + Адрес.Наименование;
.................................................................
    ИначеЕсли ИдентЭлемДиалога = "Адрес" Тогда
        КонтекстДокумента = глВзятьКонтекст(Контекст);
        глУстановитьАдресКонтрагента(КонтекстДокумента,Контрагент, Адрес);
        ФлагСтандОбр = 0;
    КонецЕсли;
КонецПроцедуры//ПриНачалеВыбораЗначения
................................................................

Если написать в нужной ячейке строки формы ТМФ8 выражение:
докПЛ.НомерДок (расшифровка: докПЛ.ТекущийДокумент())
тогда отображается номер путевого листа, т.е. с ячейкой все в порядке.
А как из данного номера ПЛ вытащить Контагента (ID Контрагент, тип Справочник.Контрагенты) догнать пока не могу.
Установленный в запросе Контрагент не выполняется.
Поэтому я очень вам благодарен за сочувствие моей беде и прошу помощи.
   Kigo_Kigo
 
19 - 01.08.19 - 15:08
докПЛ.Контрагент не работает?
   Nik_Home
 
20 - 01.08.19 - 23:08
К сожалению, нет Вынужден отложить эту проблему на 30 дней. Ушел в отпуск. А вам спасибо!
Повспоминаю правила языка, потом опять напомню о себе, если вы не против.
   Kigo_Kigo
 
21 - 02.08.19 - 12:30
(20) можете на почту мне написать, поправим вашу форму


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.