8.х Внешняя обработка Элемент или Объект?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Фархад, 30 июн 2016.

  1. TopicStarter Overlay
    Фархад
    Offline

    Фархад

    Регистрация:
    30 июн 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Всем привет! Я начинающий программист на платформе 1С, но со стажем delphi и c++, т.е основы программирования имею )) Пишу для себя внешнюю обработку для конфигурации Управление торговлей 11.2. В ней есть документ РеализацияТоваровУслуг и я хочу для этого документа создать внешний собственный отчет.
    Вот что сделал:
    1) Создал реквизит "ДокРеализТоваров" с типом "ДокументСсылка.РеализацияТоваровУслуг"
    2) Создал Макет печатной формы
    3) Создал форму.
    На форму кинул элемент с названием "НомерДокумента" (Путь к данным:Объект.ДокРеализТоваров)
    Затем кинул табличную часть с названием "Реквизит1Товары" (Путь к данным: Объект.ДокРеализТоваров.Товары).
    Запустил, проверил - обработка дает возможность выбрать существующий документ из РеализацииТоваровУслуг и в табличной части отображает перечень товаров с его данными (цена, скидка, сумма, и т.д.) На первый взгляд все красиво.
    Кидаю кнопку "Печать" и тут начинаются танцы ))
    Для кнопки:
    Код:
    &НаКлиенте
    Процедура Команда1(Команда)
        // Вставить содержимое обработчика.
        ТабличныйДокумент = Новый ТабличныйДокумент;
        ТабличныйДокумент = ПечатьНаСервере(ТабличныйДокумент);
        ТабличныйДокумент.Показать("Заголовок окна");
      
    КонецПроцедуры
    
    &НаСервере
    Функция ПечатьНаСервере(ТабличныйДокумент)
       
      Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("ПФ_MXL_РеализацияТоваров");
    
      // Заголовок
      ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
      ОбластьЗаголовок.Параметры.ТекстЗаголовка = "Товарный чек от "+Объект.ДокРеализТоваров.Дата;
      ТабличныйДокумент.Вывести(ОбластьЗаголовок);
    
      ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик");
      ОбластьПоставщик.Параметры.ПредставлениеПоставщика = объект.ДокРеализТоваров.Организация.Наименование;
       ТабличныйДокумент.Вывести(ОбластьПоставщик);
       
       ОбластьПокупатель = Макет.ПолучитьОбласть("Покупатель");
      ОбластьПокупатель.Параметры.ПредставлениеПолучателя = объект.ДокРеализТоваров.Контрагент.Наименование;
       ТабличныйДокумент.Вывести(ОбластьПокупатель);
       
       ОбластьШапка = Макет.ПолучитьОбласть("ШапкаТаблицыСоСкидкой");
       ОбластьШапка.Параметры.ИмяКолонкиКодов="Артикул";
       ОбластьШапка.Параметры.СуммаБезСкидки="Розничная цена";
       ОбластьШапка.Параметры.Скидка="Скидка %";
       ТабличныйДокумент.Вывести(ОбластьШапка);
       
       ОбластьТовар = Макет.ПолучитьОбласть("СтрокаТаблицыСоСкидкой");
    
      // !!! Вот здесь не могу сообразить как перебрать строки табличной части чтобы передать их в макет...  
    
       ОбластьТовар.Параметры.НомерСтроки=элементы.Реквизит1ТоварыНоменклатура;   
       ТабличныйДокумент.Вывести(ОбластьТовар);  
    
      ТабличныйДокумент.АвтоМасштаб=истина; // уместить на одну страницу
      ТабличныйДокумент.ТолькоПросмотр=истина;
      ТабличныйДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
      ТабличныйДокумент.ОтображатьСетку=Ложь;
      ТабличныйДокумент.ОтображатьЗаголовки=Ложь;
      //Выведем полученный документ
       Возврат ТабличныйДокумент;
      
    
    КонецФункции
    
    Я уже как только не пробовал - и элемент и объект табличной части подобрать, не получается... нет данных или куча ошибок )) Пробовал через цикл для каждого.. не выходит, даж первую строку не могу получить без цикла...
    Что в тупик меня завело дак это - в переменные Поставщик, Организация все передается отлично, а как дело до табличной части так загвоздка....Мысль уже пришла создать объект ТабличнаяЧасть со своим набором полей и в нее записать данные из объекта ДокументРеализацияТоваровУслуг,а потом по ней топать и выбирать записи... Прошу направить меня на путь верный )) Материал, пример, что угодно... учиться я люблю)
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Как формировали цикл? Для каждого.....что и откуда?
  3. TopicStarter Overlay
    Фархад
    Offline

    Фархад

    Регистрация:
    30 июн 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Для Каждого ТекущаяСтрока Из элементы.Реквизит1Товары цикл
    сообщить(ТекущаяСтрока.НомерСтроки);
    конеццикла;
    Получаю ошибку
    {ВнешняяОбработка.НашаОбработкаПечатьТовЧек.Форма.Форма.Форма(39)}: Итератор для значения не определен
    Для Каждого ТекущаяСтрока Из элементы.Реквизит1Товары цикл

    --- Объединение сообщений, 30 июн 2016 ---
    Вот моя обработка, чтобы наглядней было

    Вложения:

    Последнее редактирование: 30 июн 2016
  4. Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Не смотрел обработку. Я так, наскоком у компа. Но по моему реквизиты формы сначала на сервер передать нужно.
    А вообще печатную форму лучше формировать получив данные документа запросом.
    Фархад нравится это.
  5. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Для каждого текстр из объект.докРеализТоваров.Товары Цикл
    .....
    КонецЦикла;
    Фархад нравится это.
  6. TopicStarter Overlay
    Фархад
    Offline

    Фархад

    Регистрация:
    30 июн 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Супер! Заработало )) Кстати уместно замечание про запрос - в мыслях это крутится, но реализацию еще не пробовал )))

Поделиться этой страницей