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

Ошибка в выводе данных.

Автор AnDr2024, 10 дек 2024, 12:24

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

AnDr2024

Добрый день! Мой уровень в программировании очень низкий, я новичок в это теме... Пытаюсь найти ответы на вопросы из разных источников, в том числе и интернет. чего то познал, чего то понять не могу.. Подсказать не кому от слова совсем.
      Обращаюсь на форум.
Нужно вывести в Таблицу данные, дошел до того что создал Таблицу по выводу данных и часть этих данных уже получаю, но застрял в одном месте - НЕ выходят данные... "ПричинаДефекта" и "НомерДока"
Ниже сбрасываю КОД, подскажите пожалуйста где ошибка.. Заранее блогодарен!!!


Процедура КнопкаСформироватьНажатие(Кнопка)
   
   Если НЕ ЗначениеЗаполнено(ЭлементыФормы.НачалоПериода.Значение)
      тогда Предупреждение ("Не заполнено поле Начало периода!!!");
     ИначеЕсли НЕ ЗначениеЗаполнено(ЭлементыФормы.КонецПериода.Значение)
      тогда Предупреждение ("Не заполнено поле Конец периода!!!");
     ИначеЕсли НЕ ЗначениеЗаполнено(ЭлементыФормы.Организация.Значение)
      тогда Предупреждение ("Не заполнено поле Организация!!!");
             
   КонецЕсли;         
   
   
         ЭлементыФормы.ПолеТабличногоДокумента.Очистить();     
              Макет = Отчеты.АнализПричинПоПретензиямОтПотребителя.ПолучитьМакет("Макет");
           
 // ОБЛАСТЬ ШАПКА
          ОбластьШапка = Макет.ПолучитьОбласть("ОбластьШапка");
           ОбластьШапка.Параметры.Год = Формат(КонецПериода, "ДФ=yyyy");
           ОбластьШапка.Параметры.НачалоПериода = Формат(НачалоПериода, "ДФ=dd.MM.yyyy");
           ОбластьШапка.Параметры.КонецПериода = Формат(КонецПериода, "ДФ=dd.MM.yyyy");
            ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ОбластьШапка);
         
 // ОБЛАСТЬ СТРОКА   
          Счетчик = Число("1");

           Запрос = Новый Запрос;       
         Запрос.УстановитьПараметр("НачалоПериода",   ЭлементыФормы.НачалоПериода.Значение);
         Запрос.УстановитьПараметр("КонецПериода",    ЭлементыФормы.КонецПериода.Значение);

     Запрос.Текст = "ВЫБРАТЬ
    |   РекламацииОтПотребителя.Дата,
    |   РекламацииОтПотребителя.Номер,
    |   Мероприятия_8D.НомерДока,
    |  Мероприятия_8D.ПричинаДефекта
    |ИЗ
    |   Документ.Мероприятия_8D КАК Мероприятия_8D
    |      ПОЛНОЕ СОЕДИНЕНИЕ Документ.РекламацииОтПотребителя КАК РекламацииОтПотребителя
    |      ПО Мероприятия_8D.Рекламация = РекламацииОтПотребителя.Ссылка
    |ГДЕ
    |   РекламацииОтПотребителя.Дата >= &НачалоПериода
    |   И РекламацииОтПотребителя.Дата <= &КонецПериода";
   

           Выборка = Запрос.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
               Рекламация = Документы.РекламацииОтПотребителя.НайтиПоНомеру(Выборка.Номер, Выборка.Дата);
                Мероприятия = Документы.Мероприятия_8D.НайтиПоНомеру(Выборка.НомерДока, Выборка.Дата);
            Для каждого Стр из Рекламация.СписокНоменклатуры Цикл
                     Номенклатура = Стр.Номенклатура;
                     Проблема     = Стр.ВидДефекта;
            КонецЦикла;   

           
         ОбластьСтрока                      = Макет.ПолучитьОбласть("ОбластьСтрока");
         ОбластьСтрока.Параметры.Номер         = Счетчик;     
         ОбластьСтрока.Параметры.Рекламация      = "Рекламация №" + Рекламация.Номер + " от " + Формат(Рекламация.Дата, "ДФ=dd.MM.yyyy") + "г." + Рекламация.Потребитель;
         ОбластьСтрока.Параметры.Номенклатура    = Строка(Номенклатура.Артикул) + Строка(" ") + Строка(Номенклатура.Наименование);
         ОбластьСтрока.Параметры.Проблема      = Проблема;
         ОбластьСтрока.Параметры.Статус_1      = Рекламация.Решение_2;   
         ОбластьСтрока.Параметры.Статус_2      = Рекламация.Решение_3;

//   ДАЛЬШЕ НЕ РАБОТАЕТ   
                                       
         ОбластьСтрока.Параметры.Причина         = "Дефект" + Мероприятия.ПричинаДефекта;
         ОбластьСтрока.Параметры.Номер8Д         = "№" + Мероприятия.НомерДока + " от ";
         
           ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ОбластьСтрока);   
         Счетчик = Счетчик + Число("1");
           
            КонецЦикла;     
                       
 // ОБЛАСТЬ ПОДВАЛ           
         ОбластьПодвал = Макет.ПолучитьОбласть("ОбластьПодвал");
         ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ОбластьПодвал);   
         
                 
КонецПроцедуры

antoneus

Значит, не находит такое мероприятие с номером и датой. И не надо искать по номеру-дате, прямо в запросе вытаскивайте ссылки на оба документа и обращайтесь к ним в цикле по выборке.

AnDr2024

  antoneus, я сделал подобный запрос через "консоль запросов" -- все получилось, документы находит и номер выходит. а коде что то не так -- не находит.

  А можете подсказать как сделать запрос: "прямо в запросе вытаскивайте ссылки на оба документа и обращайтесь к ним в цикле по выборке." ??

antoneus

Ну да, а потом вы ищете документ Мероприятие по его номеру, но по дате документа Рекламация. Сто пудов даты у них разные. А в списке товаров рекламации всегда только одна строка?

AnDr2024

   Даты у Мероприятия и у Рекламации разные... Связаны эти документы ссылкой: "из Рекламации создается документ Мероприятие".. Поэтому и пытаюсь по запросу от даты Рекламации - по ссылке вытащить, созданное Мероприятие от этой Рекламации..
  "Рекламации" - это отдельный список, товары указаны в теле самой Рекламации.


AnDr2024


antoneus

Запрос.Текст = "ВЫБРАТЬ
    |   РекламацииОтПотребителя.Дата,
    |   РекламацииОтПотребителя.Номер,
    |   РекламацииОтПотребителя.Ссылка КАК Рекламация,
    |   РекламацииОтПотребителя.Потребитель,
    |   РекламацииОтПотребителя.Решение_2,
    |   РекламацииОтПотребителя.Решение_3,
    |   Мероприятия_8D.НомерДока,
    |   Мероприятия_8D.ПричинаДефекта   
    |ИЗ
    |   Документ.РекламацииОтПотребителя КАК РекламацииОтПотребителя
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |    Документ.Мероприятия_8D КАК Мероприятия_8D
    |ПО
    |    РекламацииОтПотребителя.Ссылка = Мероприятия_8D.Рекламация
    |ГДЕ
    |   РекламацииОтПотребителя.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
   

    Выборка = Запрос.Выполнить().Выбрать();
    ОбластьСтрока                      = Макет.ПолучитьОбласть("ОбластьСтрока");
    Пока Выборка.Следующий() Цикл
        Рекламация = Выборка.Рекламация;
        ОбластьСтрока.Параметры.Номер         = Счетчик;     
        ОбластьСтрока.Параметры.Рекламация = "Рекламация №" + Выборка.Номер + " от " + Формат(Выборка.Дата, "ДФ=dd.MM.yyyy") + "г." + Выборка.Потребитель;
        ОбластьСтрока.Параметры.Статус_1      = Выборка.Решение_2;   
        ОбластьСтрока.Параметры.Статус_2      = Выборка.Решение_3;
        ОбластьСтрока.Параметры.Причина         = "Дефект" + Выборка.ПричинаДефекта;
        ОбластьСтрока.Параметры.Номер8Д         = "№" + Выборка.НомерДока + " от ";

       Для каждого Стр из Рекламация.СписокНоменклатуры Цикл//это тоже можно в запрос запихать, но потом уж как-нибудь, не всё сразу
           Номенклатура = Стр.Номенклатура;
           ОбластьСтрока.Параметры.Номенклатура    = Строка(Номенклатура.Артикул) + Строка(" ") + Строка(Номенклатура.Наименование);
           ОбластьСтрока.Параметры.Проблема      = Стр.ВидДефекта;         
           ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ОбластьСтрока);   
         Счетчик = Счетчик + Число("1");
           
       КонецЦикла;
    КонецЦикла;
    ОбластьПодвал = Макет.ПолучитьОбласть("ОбластьПодвал");
    ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ОбластьПодвал);   

AnDr2024

{Отчет.АнализПричинПоПретензиямОтПотребителя.Форма.ФормаОтчета.Форма(129,62)}: Переменная не определена (Мероприятия)
        ОбластьСтрока.Параметры.Причина         = "Дефект" + <<?>>Мероприятия.ПричинаДефекта; (Проверка: Толстый клиент (обычное приложение))
{Отчет.АнализПричинПоПретензиямОтПотребителя.Форма.ФормаОтчета.Форма(130,57)}: Переменная не определена (Мероприятия)
        ОбластьСтрока.Параметры.Номер8Д         = "№" + <<?>>Мероприятия.НомерДока + " от "; (Проверка: Толстый клиент (обычное приложение))




Ошибка вышла..

antoneus

Да, увлекся) Отредактировал коммент.

AnDr2024

ПОЛУЧИЛОСЬ !!!  :zebzdr:
СПАСИБО БОЛЬШОЕ !!! Буду анализировать и изучат дальше!  :ooifh:

Теги:

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

Рейтинг@Mail.ru

Поиск