Вход | Регистрация
 
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) можете на почту мне написать, поправим вашу форму
   Nik_Home
 
22 - 02.09.19 - 11:45
Уважаемый, Kigo_Kigo
Отправил вам в почту реестр и форму ТМФ 8.
Сам пока не догоняю.
   Nik_Home
 
23 - 03.09.19 - 20:09
Уважаемый, Kigo_Kigo
Отправил вам в почту реестр и форму ТМФ 8. На адрес: kigoryazan@gmail.com нет доставки
<kogoryazan@gmail.com>: host gmail-smtp-in.l.google.com[173.194.222.26] said:
    550-5.1.1 The email account that you tried to reach does not exist. Please
    try 550-5.1.1 double-checking the recipient's email address for typos or
    550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1
    https://support.google.com/mail/?p=NoSuchUser w20si4129606lfl.27 - gsmtp
    (in reply to RCPT TO command)
Сможете сказать куда выслать?
   Nik_Home
 
24 - 06.11.19 - 13:13
Уважаемые, гуру (сравнительно со мной).
Вожусь очень долго, но так и не впихнул Контрагента из определенного путевого листа в строку в форме отчета "Реестр путевых листов" "Форма 8" Создал новый внешний отчет с макетом формы 8. Все работает, но "Контрагент" из ПЛ не могу подставить в строку формы. Как сделать так, чтобы типа "ДокументОснование.ПутевойЛист.Контрагент.Наименование" попал в строку отчета?
Кто-то сможет помочь?
   Ёпрст
 
25 - 06.11.19 - 14:22
кидай свое изделие на файлопомойку и ссылку сюда
   Nik_Home
 
26 - 07.11.19 - 09:44
Для Ёпрст.
Ссылка http://file.sampo.ru/4ndr63/
   Ёпрст
 
27 - 07.11.19 - 10:31
(26)
для начала,
//|Контрагент = Документ.аПЛ_Повременный.Контрагент.ТекущийЭлемент, Документ.аПЛ_Сдельный.Контрагент.ТекущийЭлемент;

|Контрагент = Документ.аПЛ_Повременный.Контрагент, Документ.аПЛ_Сдельный.Контрагент;


Потом,
>>>ДокументОснование.ПутевойЛист.Контрагент.Наименование
Клиентоса нужно из ДокументОснование вытащиь ? А не из самого документа аПЛ_Повременный/аПЛ_Сдельный ?

И.. не видно, куда именно в макете нужно вывести этого контрагента. В какую область\секцию
   Nik_Home
 
28 - 07.11.19 - 10:40
Для Ёпрст.
"Потом,
>>>ДокументОснование.ПутевойЛист.Контрагент.Наименование
Клиентоса нужно из ДокументОснование вытащиь ? А не из самого документа аПЛ_Повременный/аПЛ_Сдельный ? "
Вот именно: Клиента нужно вытащить из Путевого листа (в данном случае Сдельного и Повременного) Остальные данные вытаскиваются и ставятся куда нужно. Контрагента в строке можно поместить куда угодно (его же можно переместить программно)
Я вышлю код записи Клиента в путевых листах. Похоже, они как-то ссылаются на глобальный модуль.
   Ёпрст
 
29 - 07.11.19 - 10:43
выложи мд от этой базы
   Nik_Home
 
30 - 07.11.19 - 10:58
Для Ёпрст:
Функция в модуле формы ПЛ, откуда вычисляется Контрагент
http://file.sampo.ru/gvqt6k/
МД через 5 мин залью.
 
 Рекламное место пустует
   Nik_Home
 
31 - 07.11.19 - 11:06
Для Ёпрст:
http://file.sampo.ru/ws6468/
Залил МД
   Ёпрст
 
32 - 07.11.19 - 11:20
(31) контрагент там есть только в табличной части в этих документа, его надо ? Или что ? И если да, то с какой строки ? Первого попавшегося ?
   Nik_Home
 
33 - 07.11.19 - 11:30
Для Ёпрст:
Вот этот Контрагент из табличной части Формы ПЛ и нужен и именно этого ПЛ. Остальные объекты берутся из шапки формы документа, а Контрагент прописан в табличной части данной формы.
Данные в отчете "реестр путевых листов форма 8" (или как угодно можно макет обозвать, у меня во внешней форме Контрагент) берутся из данных ПЛ. Если не выбирать, тогда из всех ПЛ за заданный период.
   Nik_Home
 
34 - 07.11.19 - 11:35
Для Ёпрст:
Контрагент - это Заказчик транспорта. В ПЛ он выбирается и записывается из общего справочника Контрагентов 1С77 (или подстановой из документа Заявки на транспорт (им не пользуются).
   Ёпрст
 
35 - 07.11.19 - 11:43
(33)



    |Контрагент = Документ.аПЛ_Повременный.Контрагент, Документ.аПЛ_Сдельный.Контрагент;
    |Группировка ПЛ;
    |Группировка Контрагент;

.............
    Пока Запрос.Группировка("ПЛ") = 1 Цикл
        стрТабельный = ""; стрФИО = ""; стрГаражный = ""; стрКонтрагент = "";
        докПЛ = Запрос.ПЛ;
        спрВодитель = докПЛ.Водитель;
        спрАвтомобиль = докПЛ.Автомобиль;
        спрКонтрагент="";
        Если Запрос.Группировка("Контрагент") = 1 Тогда// это если он один в таб части, если их несколько, нужен цикл обхода группировки

            спрКонтрагент = Запрос.Контрагент;
        КонецЕсли;

   Nik_Home
 
36 - 07.11.19 - 11:47
Для Ёпрст:
Пробую.
   Кодер
 
37 - 07.11.19 - 11:49
Ёпрст, а как ты умеешь творения с DLL отлаживать? Или не запуская читаешь и в уме прогоняешь код?
   Nik_Home
 
38 - 07.11.19 - 12:36
Для Ёпрст:
Пробую.
http://file.sampo.ru/f8jfdw/
В нужной строке формы спрКонтрагент обозначился текстом как группа из Справочника Контрагенты и только по первой позиции строки отчета.
Но истинного Контрагент из данного ПЛ пока не получилось.
   Nik_Home
 
39 - 07.11.19 - 12:50
Для Ёпрст:
http://file.sampo.ru/v5vzq7/
Это обновленный внешний модуль отчета "Реестр ПЛ"
   Ёпрст
 
40 - 07.11.19 - 13:08
(38) ага, поправь так:

|Группировка Контрагент Без Групп;
   Ёпрст
 
41 - 07.11.19 - 13:08
я ужо подзабыл клюшки
   Ёпрст
 
42 - 07.11.19 - 13:09
И это, у тебя их в табличной части сколько ? Несколько или один ? Если несколько , то какой нужен ? Все ?
   Злопчинский
 
43 - 07.11.19 - 13:25
(41) Печально.
на клюшках хоть был один добрый "д-р Айболит".
в 8-ке все как-то мутнее, спецов меньше...
или меньше конкретных вопросов.
а от неконтрентных вопросов до выяснения конкретики в 8-ке видимо путь гораздо дольше при обсуждении проблем
   Ёпрст
 
44 - 07.11.19 - 13:26
И выкини упорядочить ПО.. По-умолчанию, эта группировка и так всегда упорядочена по дате и времени документа.
   Nik_Home
 
45 - 07.11.19 - 13:48
Для Ёпрст6
"И это, у тебя их в табличной части сколько ? Несколько или один ? Если несколько , то какой нужен ? Все ?"
Если касается ПЛ_Сдельного, то туда можно записывать только 2 Контагента, но пока это не делается. Если касается отчета "реестр ПЛ",тогда Контрагент относительно путевых листов. В каждом ПЛ есть Контрагент-Заказчик транспорта.Операторы требуют в этом отчете прописать названия Контрагента, чтобы потом ручкой не дописывать.
А знакомый в вашей тусовке программер по этому Рарусу-Автотранспорт есть? В ПЛ прописывается Контрагент и отображается. Вот как его сунуть в отчет, пока загадка для меня.
   Ёпрст
 
46 - 07.11.19 - 14:07
(45) Щас, чего не работает ?
   Nik_Home
 
47 - 07.11.19 - 14:48
Для Ёпрст:
//Щас, чего не работает ?//
Работает, только неправильно. Контрагент из ПЛ не выбирается, а только его группа Контрагенты-Заказчики. Вышлю еще реестр.
http://file.sampo.ru/7tvst7/
   Nik_Home
 
48 - 07.11.19 - 14:50
Для Ёпрст;
"И выкини упорядочить ПО.. По-умолчанию, эта группировка и так всегда упорядочена по дате и времени документа."
Без такой опции упорядочивания выдает ошибку.
   Ёпрст
 
49 - 07.11.19 - 18:39
(47) см. (40)
(48) какую ошибку ?
   Ёпрст
 
50 - 07.11.19 - 18:39
Что где-то в макете задано Запрос.ЗначениеУпорядочивания ? Выкини это из макета.
Вообще, упорядочивание зло
   Nik_Home
 
51 - 07.11.19 - 21:10
Для Ёпрст;
"(47) см. (40)
(48) какую ошибку ?
Что где-то в макете задано Запрос.ЗначениеУпорядочивания ? Выкини это из макета.
Вообще, упорядочивание зло"
К сожалению, вынужден прерваться до понедельника.
Упорядочивание - это ПЛ в реестре выводится по датам и по времени. Когда я упорядочивание отключил, выскочила ошибка, какая, сейчас не скажу, не помню. На работе посмотрю.
   Злопчинский
 
52 - 08.11.19 - 01:20
(44) а если упорядочивнеи не нужно - то написать Без упорядочивания.
на больших запросах это дает экономию.
   Nik_Home
 
53 - 11.11.19 - 07:58
Злопчинскому:
"(44) а если упорядочивнеи не нужно - то написать Без упорядочивания.на больших запросах это дает экономию."
Операторы требуют упорядочивание. Экономия не важна.
Речь идет о Контрагенте (заказчике транспорта), который должен извлекаться из данного путевого листа и отображаться в строке отчета по форме 8.
   Nik_Home
 
54 - 11.11.19 - 11:00
Для Ёпрст:
А в путевых листах Контрагент вставлен в реквизит табличной части!
Код такой:
Функция ПриВыбореЗначения(Об="")
    // Рекурсивная Функция обработки всех экранных объектов.

    
    Если Об="" Тогда Об=Форма.АктивныйЭлемент(); 
    КонецЕсли;
    
// CASE По реквизитам формы

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

    
        КонецЕсли;
    Возврат 1;
КонецФункции    // ПриВыбореЗначения

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

//**************************************************
Как можно дописать чтобы Контрагент выбирался и из реквизита табличной части?
   Nik_Home
 
55 - 11.11.19 - 11:04
Злочинскому:
Спасибо, что отозвались на мою беду.
Возможно проблема с выбором Контрагента в отчете Раруса здесь?
Функция ПриВыбореЗначения(Об="")
    // Рекурсивная Функция обработки всех экранных объектов.


    
    Если Об="" Тогда Об=Форма.АктивныйЭлемент(); 
    КонецЕсли;
    
// CASE По реквизитам формы


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


    
        КонецЕсли;
    Возврат 1;
КонецФункции    // ПриВыбореЗначения


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


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

Как можно дописать чтобы Контрагент выбирался и из реквизита табличной части?
   Nik_Home
 
56 - 11.11.19 - 11:20
Для Ёпрст:
В дополнение о выборе Контрагента
http://file.sampo.ru/wz96gs/
   Ёпрст
 
57 - 11.11.19 - 11:24
(56) это вообще тут никоим боком.
   Ёпрст
 
58 - 11.11.19 - 11:25
Какая ошибка в (51) ?
   Ёпрст
 
59 - 11.11.19 - 11:26
вот так сделать и всё..
    |Контрагент = Документ.аПЛ_Повременный.Контрагент, Документ.аПЛ_Сдельный.Контрагент;
    |Группировка ПЛ;
    |Группировка Контрагент Без Групп;

.............
    Пока Запрос.Группировка("ПЛ") = 1 Цикл
        стрТабельный = ""; стрФИО = ""; стрГаражный = ""; стрКонтрагент = "";
        докПЛ = Запрос.ПЛ;
        спрВодитель = докПЛ.Водитель;
        спрАвтомобиль = докПЛ.Автомобиль;
        спрКонтрагент="";
        Если Запрос.Группировка("Контрагент") = 1 Тогд// это если он один в таб части, если их несколько, нужен цикл обхода группировки


            спрКонтрагент = Запрос.Контрагент;
        КонецЕсли;
   Nik_Home
 
60 - 11.11.19 - 11:31
Для ЁПРСТ:
Ошибок в моем учебном реестре нет. Только Контрагент не  выбирается. По гл.модулю он должен выбираться из реквизита шапки формы, а в макетах ПЛ Контрагент стоит в реквизите табличной части.
   Nik_Home
 
61 - 11.11.19 - 11:32
Пробую.
   Nik_Home
 
62 - 11.11.19 - 11:55
Для Ёпрст:
Получилось! Но как-то через раз. С циклом не поможете?
http://file.sampo.ru/s86trs/
   Nik_Home
 
63 - 11.11.19 - 12:01
Для Ёпрст:
Извиняюсь. Похоже, не то заслал. Исправляюсь.
http://file.sampo.ru/6jvt9n/
   Nik_Home
 
64 - 11.11.19 - 12:14
Для Ёпрст:
Вот так образовался обновленный реестр ПЛ Через строку Контрагент обозначается.
http://file.sampo.ru/9tzw6n/
   Ёпрст
 
65 - 11.11.19 - 13:47
(64)


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

//            стрКонтрагент = докПЛ.Контрагент.Наименование;
//        КонецЕсли;    

   Ёпрст
 
66 - 11.11.19 - 13:48
вот это выкинь из кода и убери из текста Упорядочить ПО.
Группировка и так уже упорядочена
 
 Рекламное место пустует
   Nik_Home
 
67 - 12.11.19 - 18:43
Для Ёпрст:
"вот это выкинь из кода и убери из текста Упорядочить ПО.
Группировка и так уже упорядочена"
Завтра, 131119, попробую.
   Nik_Home
 
68 - 13.11.19 - 08:42
Для Ёпрст:
"вот это выкинь из кода и убери из текста Упорядочить ПО. 
Группировка и так уже упорядочена"
Похоже, получилось!
Большое спасибо, Ёпрст! Вы настоящий ГУРУ!!!
Теперь попробую отсечь все лишнее и внедрить в боевую БД.


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