Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:59

Помогите с внешним отчетом.

Автор mila1231, 23 июн 2015, 10:54

0 Пользователей и 1 гость просматривают эту тему.

Sandi

Цитата: mila1231 от 24 июн 2015, 10:29
спасибо!!))
Добавлено: 24 июн 2015, 10:41


Ребят, не хочу сорить темами, подскажите незнающему вот текст запроса
   Запрос.Текст = "ВЫБРАТЬ
                     |   Свидетельство.Номер_в_гос_реестре,
                     |   Свидетельство.Тип_прибора.Наименование,
                     |   Свидетельство.Марка.Наименование,
                     |   Свидетельство.Заводской_Номер,
                     |   Свидетельство.Год_выпуска_прибора,
                     |   Свидетельство.Дата_от,
                     |   Свидетельство.Действителен_до,
                     |   Свидетельство.Номер,
                     |   Свидетельство.Контрагент.Полное_наименование,
                     |   Свидетельство.Контрагент.ИНН
                     |ИЗ
                     |   Документ.Свидетельство КАК Свидетельство";

дальше при присваивании ругается на строку

ОбластьДанные.Параметры.Номер_прибора = ВыборкаДанные.Заводской_номер; ,
единственное я поняла, что программа не понимает к чему обращаться... подскажите как правильно нужно, пожалуйста... или где глянуть отправьте....

Покажите, пожалуйста, как Вы с выборкой работаете.
Тогда понятнее будет, куда копать

Выборка = Запрос.Выполнить().Выбрать();

а дальше что делаете?
в цикле обходите?

mila1231

Цитата: vitasw от 24 июн 2015, 11:00
|ИЗ
|   Документ.Свидетельство КАК Свидетельство
|ГДЕ Документ.Свидетельство.Ссылка=&ТекущийДокумент";

Запрос.УстановитьПараметр("ТекущийДокумент",Ссылка);

+
Из приведенного текста не видно что такое "ОбластьДанные"

вот сам текст
ТабДок = ЭлементыФормы.ТабДок; 
ТабДок =новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьДанные=  Макет.ПолучитьОбласть("Данные");
ЭлементыФормы.ТабДок.Очистить();
      
      
   Запрос = новый Запрос;
   


Запрос = новый Запрос;
   
   Запрос.Текст = "ВЫБРАТЬ
                     |   Свидетельство.Номер_в_гос_реестре,
                     |   Свидетельство.Тип_прибора.Наименование,
                     |   Свидетельство.Марка.Наименование,
                     |   Свидетельство.Заводской_Номер,
                     |   Свидетельство.Год_выпуска_прибора,
                     |   Свидетельство.Дата_от,
                     |   Свидетельство.Действителен_до,
                     |   Свидетельство.Номер,
                     |   Свидетельство.Контрагент.Полное_наименование,
                     |   Свидетельство.Контрагент.ИНН
                     |ИЗ
                     |   Документ.Свидетельство КАК Свидетельство";
               
                
                 
   ВыборкаДанные = Запрос.Выполнить().Выбрать();

             
    // вывод даных в форму
   
   Пока ВыборкаДанные.Следующий() Цикл
   
   
       //перечисляем все столбцы, которые в макете
      
        ОбластьДанные.Параметры.рег_номер = ВыборкаДанные.Номер_в_гос_реестре;
      ОбластьДанные.Параметры.тип_прибора = ВыборкаДанные.Тип_прибора;
                ОбластьДанные.Параметры.марка= выборкаДанные.Марка.Наименование ;
      ОбластьДанные.Параметры.Номер_прибора = ВыборкаДанные.Заводской_номер;
      ОбластьДанные.Параметры.Год_выпуска = ВыборкаДанные.Год_выпуска_прибора;
               ОбластьДанные.Параметры.количество_СИ = "1";
      ОбластьДанные.Параметры.Дата_от = Формат(ВыборкаДанные.Дата_от,"ДФ=""дд.ММ.гггг""");
      ОбластьДанные.Параметры.Дата_до = Формат(ВыборкаДанные.Действителен_до,"ДФ=""дд.ММ.гггг"""); 

      ОбластьДанные.Параметры.Номер_свид = ВыборкаДанные.Номер;
                ОбластьДанные.Параметры.Свед_СИ = "хз";
      ОбластьДанные.Параметры.Контрагент = ВыборкаДанные.Контрагент.Полное_наименование;
      ОбластьДанные.Параметры.ИНН = ВыборкаДанные.Контрагент.ИНН;

      ОбластьДанные.Параметры.Пригодность = "1";
      ОбластьДанные.Параметры.Дата_выгрузки = "хз";
      ОбластьДанные.Параметры.Признак_конрагента = "хз";


   
      ЭлементыФормы.ТабДок.Вывести(ОбластьДанные);

   КонецЦикла;
   то что красным там ошибку показывает, т.к не понимает к чему обращается.. как я поняла...

добавила строку  |ГДЕ Документ.Свидетельство.Ссылка=&ТекущийДокумент; в запрос и добавила
Запрос.УстановитьПараметр("ТекущийДокумент",Ссылка);..... ругается на ссылку я если чесно немного не поняла эту строку..если не трудно поясните.. если нет.. пойду искать...


Добавлено: 24 июн 2015, 11:28


Ребята извините неопытного человека.... подсказали мне куда капать, а именно смотреть псевдонимы в конструкторе запросов, там МаркаНаименование, заменила и всё заработало...эххх

Sandi

Вы пытаетесь обратиться к полям полей выборки. Очень мне кажется, что их не существует, а у выборки есть поля Наименование, Полное_Наименование, ИНН.
попробуйте так:

      ОбластьДанные.Параметры.марка= выборкаДанные.Наименование ;
      ОбластьДанные.Параметры.Контрагент = ВыборкаДанные.Полное_наименование;
      ОбластьДанные.Параметры.ИНН = ВыборкаДанные.ИНН;




Добавлено: 24 июн 2015, 11:49


ой, а вы уже и сами разобрались))

mila1231

Ребят опять нужна подсказка... Внешний Отчёт....
Так вот проблема там, где я её и не ждала.... осталось отчёт чтоб формировался по выбранному периоду, думала сделать цикл типа
Пока   НачалоПериода < ВыборкаДанные.Дата_от  Цикл

.....

конецЦикла;

при этом НачалоПериода- это реквизит отчёта тип у него Дата , Дата_от тоже имеет тип дата, но уже выбирается из документа,
собственно ругается, что несовместимые типа и сравнивать их нельзя.... возможно тут у меня просто неправильный ход мысли...

на просторах интернета.. нашла, что можно через запрос настроить привязку реквизита и дальше по нему выбирать, не как я поняла кнопка параметры виртуальной таблицы работает только для регистров, иначе нет... может я и не права, подскажите, как тут быть?? и как правильно....

Добавлено: 25 июн 2015, 05:36


и на всякий весь код...
Процедура КнопкаСформироватьНажатие(Кнопка)
   // Вставить содержимое обработчика.
      ТабДок = ЭлементыФормы.ТабДок; 
      ТабДок =новый ТабличныйДокумент;
      Макет = ПолучитьМакет("Макет");
      
      ОблатьКонстанты= Макет.ПолучитьОбласть("Константы");
           
      ОбластьДанные=  Макет.ПолучитьОбласть("Данные");
      ЭлементыФормы.ТабДок.Очистить();
      ЭлементыФормы.ТабДок.Вывести(ОблатьКонстанты);

      
   Запрос = новый Запрос;
   
   Запрос.Текст = "ВЫБРАТЬ
                     |   Свидетельство.Номер_в_гос_реестре,
                     |   Свидетельство.Тип_прибора.Наименование,
                     |   Свидетельство.Марка.Наименование,
                     |   Свидетельство.Заводской_Номер,
                     |   Свидетельство.Год_выпуска_прибора,
                     |   Свидетельство.Дата_от,
                     |   Свидетельство.Действителен_до,
                     |   Свидетельство.Номер,
                     |   Свидетельство.Контрагент.Полное_наименование,
                     |   Свидетельство.Контрагент.ИНН
                     |ИЗ
                     |   Документ.Свидетельство КАК Свидетельство ";
                                
                          
   ВыборкаДанные = Запрос.Выполнить().Выбрать();

             
    // вывод даных в форму
   
Пока  Дата(НачалоПериода) < Дата(ВыборкаДанные.Дата_от)  Цикл   // выбор периода попытка 1
   
    Пока ВыборкаДанные.Следующий() Цикл
   
            
       //перечисляем все столбцы, которые в макете
      
        ОбластьДанные.Параметры.рег_номер = ВыборкаДанные.Номер_в_гос_реестре;
      ОбластьДанные.Параметры.тип_прибора = ВыборкаДанные.Тип_прибораНаименование;
        ОбластьДанные.Параметры.марка= выборкаДанные.МаркаНаименование ;
      ОбластьДанные.Параметры.Номер_прибора = ВыборкаДанные.Заводской_номер;
      ОбластьДанные.Параметры.Год_выпуска = ВыборкаДанные.Год_выпуска_прибора;
        ОбластьДанные.Параметры.количество_СИ = "1";
      ОбластьДанные.Параметры.Дата_от = Формат(ВыборкаДанные.Дата_от,"ДФ=""дд.ММ.гггг""");
      ОбластьДанные.Параметры.Дата_до = Формат(ВыборкаДанные.Действителен_до,"ДФ=""дд.ММ.гггг"""); 

      ОбластьДанные.Параметры.Номер_свид = ВыборкаДанные.Номер;
        ОбластьДанные.Параметры.Свед_СИ = "хз";
      ОбластьДанные.Параметры.Контрагент = ВыборкаДанные.КонтрагентПолное_наименование;
      ОбластьДанные.Параметры.ИНН = ВыборкаДанные.КонтрагентИНН;
      ОбластьДанные.Параметры.Пригодность = "1";
      ОбластьДанные.Параметры.Дата_выгрузки = Формат (ТекущаяДата(),"ДФ=""дд.ММ.гггг""") ;
      
      // смотрим признак контрагента
      Если (СтрДлина(ВыборкаДанные.КонтрагентИНН)>1)  тогда   
         
      ОбластьДанные.Параметры.Признак_конрагента = "ЮЛ"
         
   иначе
      
      ОбластьДанные.Параметры.Признак_конрагента = "ФЛ";
      
      конецЕсли;

      
      

   
      ЭлементыФормы.ТабДок.Вывести(ОбластьДанные);

   КонецЦикла;
   КонецЦикла;  // конец цикла периода
      

Sandi

а почему не хотите сделать в запросе условие на дату_от?
   Запрос.Текст = "ВЫБРАТЬ
                     |   Свидетельство.Номер_в_гос_реестре,
                     |   Свидетельство.Тип_прибора.Наименование,
                     |   Свидетельство.Марка.Наименование,
                     |   Свидетельство.Заводской_Номер,
                     |   Свидетельство.Год_выпуска_прибора,
                     |   Свидетельство.Дата_от,
                     |   Свидетельство.Действителен_до,
                     |   Свидетельство.Номер,
                     |   Свидетельство.Контрагент.Полное_наименование,
                     |   Свидетельство.Контрагент.ИНН
                     |ИЗ
                     |   Документ.Свидетельство КАК Свидетельство
                     |ГДЕ
                     | Свидетельство.Дата_от > &ПериодОтчета";

                     Запрос.УстановитьПараметр("ПериодОтчета", ПериодОтчета);
Добавлено: 25 июн 2015, 08:27


К тому же, если вы делаете цикл
Пока НачалоПериода < Дата_от

то у Вас НачалоПериода - это счетчик цикла, который надо менять, а это неправильно

mila1231

спасибо пошла по вашей идее... сделала так.. работает))
|ГДЕ Свидетельство.Дата Между &ДатаНач И &ДатаКон ";

Запрос.УстановитьПараметр("ДатаНач", НачалоПериода);
Запрос.УстановитьПараметр("ДатаКон", КонецДня(КонецПериода));

Sandi

на здоровье)
кстати, для  спасибо есть специальная кнопочка :)

mila1231

ещё наверно до кучи, сначала не обратила внимание, а счас увидела, и вот вопрос как убрать ... у меня в отчёт значения выходят в <>, т.е как на макете получается параметр .... когда выводила данные в документ с таким не сталкивалась, а счас вроде все свойства посмотрела, а причину не могу найти..

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск