Имя: Пароль:
1C
1C 7.7
v7: Отчет в Рарус:Автотранспорт ред.5.506
,
0 Nik_Home
 
31.07.19
14:43
Ситуация: В Рарус:Автотранспорт ред 5.506 есть отчет по форме 8 (Меню-Транспорт-Отчеты-Диспетчерская-Реестр путевых листов). Там несколько печатных форм, одна, форма ТМФ 8 выбирается для печати и извлекается из Общих таблиц конфигуратора.
Пользователям понадобилось в секции "строка" формы ТМФ 8 в свободной колонке (например, Примечание) отображать наименование Контрагента (Закзчика). Контрагент записывается в поле ("В распоряжение") по  по данному путевому листу (формы ОбщихТаблиц ТМФ 4-С, ТМФ 4-П) и должен извлекаться оттуда в форму ТМФ 8 Отчета.
Отчет строится и выводится с помощью Запросов языка 1С.
Я бьюсь и не могу привязать в строку формы ТМФ 8 Контрагента (Заказчика) из табличной части данного путевого листа.
Прошу помощи гуру в данной сфере.
1 Nik_Home
 
31.07.19
15:03
//ПечатьФормы8()
// Параметры:
// Возвращаемое значение:
// Описание: печать журнала учета движения путевых листов
Процедура ПечатьФормы8()
    Перем тблТаб;
    Перем докПЛ;
    Перем Контрагент;
    Перем спрВодитель, спрАвтомобиль; //спрКонтрагент;//
    Перем стрТабельный, стрФИО, стрГаражный; //стрКонтрагент;//
    Перем стрВОбласть;
    
    тблТаб = СоздатьОбъект("Таблица");
    тблТаб.ИсходнаяТаблица("ТМФ 8");
       тблТаб.Опции(0,0,0,0,"ОпцииПечатиТМФ8","ОкноТМФ8");
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать1)
    |Период с (пвДатаНач) по (пвДатаКон);
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ПЛ = Документ.аПЛ_Повременный.ТекущийДокумент, Документ.аПЛ_Сдельный.ТекущийДокумент, Документ.аПЛ_Легковой.ТекущийДокумент, Документ.аПЛ_Специальный.ТекущийДокумент, Документ.аПЛ_Строительный.ТекущийДокумент, Документ.аПЛ_Междугородный.ТекущийДокумент;
    |ВидДок = Документ.аПЛ_Повременный.ВидДокумента, Документ.аПЛ_Сдельный.ВидДокумента, Документ.аПЛ_Легковой.ВидДокумента, Документ.аПЛ_Специальный.ВидДокумента, Документ.аПЛ_Строительный.ВидДокумента, Документ.аПЛ_Междугородный.ВидДокумента;
    |ТипАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.ТипТС, Документ.аПЛ_Сдельный.Автомобиль.ТипТС, Документ.аПЛ_Легковой.Автомобиль.ТипТС, Документ.аПЛ_Специальный.Автомобиль.ТипТС, Документ.аПЛ_Строительный.Автомобиль.ТипТС, Документ.аПЛ_Междугородный.Автомобиль.ТипТС;
    |ВидАвтомобиля = Документ.аПЛ_Повременный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Сдельный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Легковой.Автомобиль.Модель.ВидТС, Документ.аПЛ_Специальный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Строительный.Автомобиль.Модель.ВидТС, Документ.аПЛ_Междугородный.Автомобиль.Модель.ВидТС;
    |Автомобиль = Документ.аПЛ_Повременный.Автомобиль, Документ.аПЛ_Сдельный.Автомобиль, Документ.аПЛ_Легковой.Автомобиль, Документ.аПЛ_Специальный.Автомобиль, Документ.аПЛ_Строительный.Автомобиль, Документ.аПЛ_Междугородный.Автомобиль;
    |Водитель = Документ.аПЛ_Повременный.Водитель, Документ.аПЛ_Сдельный.Водитель, Документ.аПЛ_Легковой.Водитель, Документ.аПЛ_Специальный.Водитель, Документ.аПЛ_Строительный.Водитель, Документ.аПЛ_Междугородный.Водитель;
    |Контрагент = Документ.аПЛ_Повременный.Контрагент, Документ.аПЛ_Сдельный.Контрагент;
    |Группировка ПЛ упорядочить по ПЛ.ДатаДок, ПЛ.ВремяДок;
    |"//}}ЗАПРОС
    ;
//Добавлял Контрагента в Запрос формы ТМФ 8//
2 Nik_Home
 
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
и вот эти вещи :

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

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

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

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


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

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

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

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

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

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

расположены в начале модуля, процедуры или функции
При проверке модуля обнаружены синтаксические ошибки!
//**********************************************************
Закоментировал перем "спрКонтрагент" и "стрКонтрагент", ошибки пропали.
//*********************************************************
14 Nik_Home
 
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) Тогда
    пвДатаКон = ТекущаяДата();
КонецЕсли;
//**************************************************************
Ошибок нет.
15 Nik_Home
 
01.08.19
09:54
При формировании формы 8 в программе опять выскочила ошибка.
Это из рекомендованной подстановки операторов. Закоментирую.
В теле модуля этот оператор записан.
//************************************************************
докПЛ = Запрос.ПЛ;
{Отчет.аРеестрПутевыхЛистов.Форма.Модуль(116)}: Поле агрегатного объекта не

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

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

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

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

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

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

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

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

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

Если написать в нужной ячейке строки формы ТМФ8 выражение:
докПЛ.НомерДок (расшифровка: докПЛ.ТекущийДокумент())
тогда отображается номер путевого листа, т.е. с ячейкой все в порядке.
А как из данного номера ПЛ вытащить Контагента (ID Контрагент, тип Справочник.Контрагенты) догнать пока не могу.
Установленный в запросе Контрагент не выполняется.
Поэтому я очень вам благодарен за сочувствие моей беде и прошу помощи.
19 Kigo_Kigo
 
01.08.19
15:08
докПЛ.Контрагент не работает?
20 Nik_Home
 
01.08.19
23:08
К сожалению, нет Вынужден отложить эту проблему на 30 дней. Ушел в отпуск. А вам спасибо!
Повспоминаю правила языка, потом опять напомню о себе, если вы не против.
21 Kigo_Kigo
 
02.08.19
12:30
(20) можете на почту мне написать, поправим вашу форму
22 Nik_Home
 
02.09.19
11:45
Уважаемый, Kigo_Kigo
Отправил вам в почту реестр и форму ТМФ 8.
Сам пока не догоняю.
23 Nik_Home
 
03.09.19
20:09
Уважаемый, Kigo_Kigo
Отправил вам в почту реестр и форму ТМФ 8. На адрес: [email protected] нет доставки
<[email protected]>: 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)
Сможете сказать куда выслать?
24 Nik_Home
 
06.11.19
13:13
Уважаемые, гуру (сравнительно со мной).
Вожусь очень долго, но так и не впихнул Контрагента из определенного путевого листа в строку в форме отчета "Реестр путевых листов" "Форма 8" Создал новый внешний отчет с макетом формы 8. Все работает, но "Контрагент" из ПЛ не могу подставить в строку формы. Как сделать так, чтобы типа "ДокументОснование.ПутевойЛист.Контрагент.Наименование" попал в строку отчета?
Кто-то сможет помочь?
25 Ёпрст
 
06.11.19
14:22
кидай свое изделие на файлопомойку и ссылку сюда
26 Nik_Home
 
07.11.19
09:44
Для Ёпрст.
Ссылка http://file.sampo.ru/4ndr63/
27 Ёпрст
 
07.11.19
10:31
(26)
для начала,

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


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

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




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

.............
    Пока Запрос.Группировка("ПЛ") = 1 Цикл
        стрТабельный = ""; стрФИО = ""; стрГаражный = ""; стрКонтрагент = "";
        докПЛ = Запрос.ПЛ;
        спрВодитель = докПЛ.Водитель;
        спрАвтомобиль = докПЛ.Автомобиль;
        спрКонтрагент="";
        Если Запрос.Группировка("Контрагент") = 1 Тогда // это если он один в таб части, если их несколько, нужен цикл обхода группировки
            спрКонтрагент = Запрос.Контрагент;
        КонецЕсли;
36 Nik_Home
 
07.11.19
11:47
Для Ёпрст:
Пробую.
37 Кодер
 
07.11.19
11:49
Ёпрст, а как ты умеешь творения с DLL отлаживать? Или не запуская читаешь и в уме прогоняешь код?
38 Nik_Home
 
07.11.19
12:36
Для Ёпрст:
Пробую.
http://file.sampo.ru/f8jfdw/
В нужной строке формы спрКонтрагент обозначился текстом как группа из Справочника Контрагенты и только по первой позиции строки отчета.
Но истинного Контрагент из данного ПЛ пока не получилось.
39 Nik_Home
 
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
И выкини упорядочить ПО.. По-умолчанию, эта группировка и так всегда упорядочена по дате и времени документа.
45 Nik_Home
 
07.11.19
13:48
Для Ёпрст6
"И это, у тебя их в табличной части сколько ? Несколько или один ? Если несколько , то какой нужен ? Все ?"
Если касается ПЛ_Сдельного, то туда можно записывать только 2 Контагента, но пока это не делается. Если касается отчета "реестр ПЛ",тогда Контрагент относительно путевых листов. В каждом ПЛ есть Контрагент-Заказчик транспорта.Операторы требуют в этом отчете прописать названия Контрагента, чтобы потом ручкой не дописывать.
А знакомый в вашей тусовке программер по этому Рарусу-Автотранспорт есть? В ПЛ прописывается Контрагент и отображается. Вот как его сунуть в отчет, пока загадка для меня.
46 Ёпрст
 
07.11.19
14:07
(45) Щас, чего не работает ?
47 Nik_Home
 
07.11.19
14:48
Для Ёпрст:
//Щас, чего не работает ?//
Работает, только неправильно. Контрагент из ПЛ не выбирается, а только его группа Контрагенты-Заказчики. Вышлю еще реестр.
http://file.sampo.ru/7tvst7/
48 Nik_Home
 
07.11.19
14:50
Для Ёпрст;
"И выкини упорядочить ПО.. По-умолчанию, эта группировка и так всегда упорядочена по дате и времени документа."
Без такой опции упорядочивания выдает ошибку.
49 Ёпрст
 
07.11.19
18:39
(47) см. (40)
(48) какую ошибку ?
50 Ёпрст
 
07.11.19
18:39
Что где-то в макете задано Запрос.ЗначениеУпорядочивания ? Выкини это из макета.
Вообще, упорядочивание зло
51 Nik_Home
 
07.11.19
21:10
Для Ёпрст;
"(47) см. (40)
(48) какую ошибку ?
Что где-то в макете задано Запрос.ЗначениеУпорядочивания ? Выкини это из макета.
Вообще, упорядочивание зло"
К сожалению, вынужден прерваться до понедельника.
Упорядочивание - это ПЛ в реестре выводится по датам и по времени. Когда я упорядочивание отключил, выскочила ошибка, какая, сейчас не скажу, не помню. На работе посмотрю.
52 Злопчинский
 
08.11.19
01:20
(44) а если упорядочивнеи не нужно - то написать Без упорядочивания.
на больших запросах это дает экономию.
53 Nik_Home
 
11.11.19
07:58
Злопчинскому:
"(44) а если упорядочивнеи не нужно - то написать Без упорядочивания.на больших запросах это дает экономию."
Операторы требуют упорядочивание. Экономия не важна.
Речь идет о Контрагенте (заказчике транспорта), который должен извлекаться из данного путевого листа и отображаться в строке отчета по форме 8.
54 Nik_Home
 
11.11.19
11:00
Для Ёпрст:
А в путевых листах Контрагент вставлен в реквизит табличной части!
Код такой:
Функция ПриВыбореЗначения(Об="")
    // Рекурсивная Функция обработки всех экранных объектов.
    
    Если Об="" Тогда Об=Форма.АктивныйЭлемент();
    КонецЕсли;
    
// CASE По реквизитам формы
    
ИначеЕсли Об="Контрагент" Тогда
        КонтекстДокумента = глВзятьКонтекст(Контекст);
        глУстановитьАдресКонтрагентаПоУмолчанию(КонтекстДокумента, Контрагент, 1, Адрес);    // подача
    
        КонецЕсли;
    Возврат 1;
КонецФункции    // ПриВыбореЗначения
А в гл модуле Контрагент выбирается из реквизитов шапки.
Код такой:
Процедура глПриВыбореКонтрагента(Контрагент, Договор, ДокОсн="") Экспорт
    Если (ПустоеЗначение(Договор) = 1) и (ПустоеЗначение(ДокОсн) = 1) Тогда
        Договор = Контрагент.ОсновнойДоговор;
    Иначе
        Если Договор.Владелец <> Контрагент Тогда
            Договор = Контрагент.ОсновнойДоговор;
        КонецЕсли;
    КонецЕсли;
    Если ПустоеЗначение(ДокОсн) = 0 Тогда
        Если Метаданные.Документ(ДокОсн.Вид()).РеквизитШапки("Контрагент").Выбран() = 1 Тогда
               Если ДокОсн.Контрагент <> Контрагент Тогда
                ДокОсн = "";
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры  //глПриВыбореКонтрагента
//**************************************************
Как можно дописать чтобы Контрагент выбирался и из реквизита табличной части?
55 Nik_Home
 
11.11.19
11:04
Злочинскому:
Спасибо, что отозвались на мою беду.
Возможно проблема с выбором Контрагента в отчете Раруса здесь?
Функция ПриВыбореЗначения(Об="")
    // Рекурсивная Функция обработки всех экранных объектов.

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

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

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

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

//**************************************************
Как можно дописать чтобы Контрагент выбирался и из реквизита табличной части?
56 Nik_Home
 
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 Тогда// это если он один в таб части, если их несколько, нужен цикл обхода группировки

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



//Если ПустоеЗначение(докПЛ.Контрагент) = 0 Тогда
//            стрКонтрагент = докПЛ.Контрагент.Наименование;
//        КонецЕсли;    
66 Ёпрст
 
11.11.19
13:48
вот это выкинь из кода и убери из текста Упорядочить ПО.
Группировка и так уже упорядочена
67 Nik_Home
 
12.11.19
18:43
Для Ёпрст:
"вот это выкинь из кода и убери из текста Упорядочить ПО.
Группировка и так уже упорядочена"
Завтра, 131119, попробую.
68 Nik_Home
 
13.11.19
08:42
Для Ёпрст:
"вот это выкинь из кода и убери из текста Упорядочить ПО.
Группировка и так уже упорядочена"
Похоже, получилось!
Большое спасибо, Ёпрст! Вы настоящий ГУРУ!!!
Теперь попробую отсечь все лишнее и внедрить в боевую БД.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой