8.х Вывод компоновкиДанных в Результат будто не завершился....

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем alexiy281, 30 сен 2016.

  1. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Помогите плиз - научился выводить Результат компоновки данных програмно из СКД по коду и при выводе в ТабличныйДокумент - Результат в конце выдаёт какую-то ошибку.... что сие есть такое, тут мелочь кака-то, что делать?

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

    Выполняется сие на Сервере (пробовал по разному - результат тот же)

    upload_2016-9-30_12-31-34.png
  2. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.025
    Симпатии:
    51
    Баллы:
    54
  3. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.642
    Симпатии:
    948
    Баллы:
    204
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ДокументРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ДокументРезультат.Показать();
  4. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    вообще-то у меня тот же самый код приведён, если что по нему и выходит шкняга.
    --- Объединение сообщений, 30 сен 2016 ---
    СПАСИБО БОЛЬШОЕ! ОНО!
    --- Объединение сообщений, 30 сен 2016 ---
    Вопрос теперь только - этот процесс завершён? или просто ОТОБРАЖЕНИЕ СОСТОЯНИЯ - отключено?
    может быть такое что процесс ошибки просто скрылся с глаз?)
    Последнее редактирование: 30 сен 2016
  5. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Следующий вопрос, ПЛИЗЗЗЗ.
    в ТабличныйДокумент - Результат добавил процедуру для расшифровки. Беда прямо в том что при двойном щелчке по Результату ничего не происходит - программма просто не заходит в процедуру! кактак?

    &НаКлиенте
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    Сообщить("оно");
    КонецПроцедуры
  6. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Прочёл кучу литературы на форумах о том как действовать с ДаннымиРасшифровки на форме и прочее.... так ничего и не получилось - надо создать структуру - передать её данным расшифровки,... а потом???
  7. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.025
    Симпатии:
    51
    Баллы:
    54
    Вы же обрабатываете вывод программно.
    Как минимум должно быть
    Код:
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Это если они еще не определены к этому моменту, как например в процедуре "ПриКомпоновкеРезультата"
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
    ДанныеРасшифровки);
  8. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Всё это имеется. Просто при таком подходе к созданию Расшифровки, оная потом не выводится в Процедуре РезультатОбработкиРасшифровки() - в эту процедуру просто не заходит
  9. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    325
    Симпатии:
    53
    Баллы:
    54
    Дабл-клик это ж ОбработкаВыбора().
    PS: Пардон, а потом то идёт обработка расшифровки, ха :)
  10. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Простите, ну не в курсе я)
    Пользуюсь Стандартными конфами как пособием в помощь - там Нет процедуры Выбора на Результате
    Есть - АктивизацияСтроки и РезультатОбработкаВыбора, в этих стандартных конфах ведь именно при двойном щелчке происходит заход вглубь отчёта и срабатывает расшифровка

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      512,9 КБ
      Просмотров:
      1
  11. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.775
    Симпатии:
    509
    Баллы:
    204
    Вроде как Стандартную обработку нужно еще отменять.
  12. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    325
    Симпатии:
    53
    Баллы:
    54
    Вот 100% рабочий вариант, только что проверил.
    Код:
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
     
        СтандартнаяОбработка = ложь;
     
        ДокументРезультат.Очистить();
     
        НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
     
        ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки, , Тип("ГенераторМакетаКомпоновкиДанных"));
     
        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
     
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
     
        ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
        ПроцессорВывода.Вывести(ПроцессорКомпоновки);
     
    КонецПроцедуры
    
    --- Объединение сообщений, 4 окт 2016 ---
    Сам отчет.

    PS: данные расшифровки необходимо инициализировать и передавать как в процессор компоновки, так и в компоновщик макета.
    PSS: Если вывод отчета происходит не в модуле объекта, а в форме, то необходимо использовать реквизит формы "ДанныеРасшифровки"

    Вложения:

    Последнее редактирование: 4 окт 2016
    alexiy281 нравится это.
  13. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Вы на какой версии пишите? на 8.2 ?
  14. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    325
    Симпатии:
    53
    Баллы:
    54
    8.3. Судя по скриншоту у вас управляемые формы. Отчет должен "робить".
  15. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Понимаете всё что вы прислали для меня не в новинку, всё это я уже делал. Я изначально отчёт сформировал мастером СКД (так естественно всё работает) .
    Потом на форме созданной с Использованием СКД я удалил Стандартную кнопку, прикрутил свою и назначил ей процедуру Сформировать( ) от которой уже запускаю на Сервере процедуру
    (делается это для того чтобы более гибко использовать возможности - использовать разные макеты и прочие возможности) - всё это и работало до тех пор пока не задался вопросом использования в таких отчётах РАСШИФРОВКИ)))

    &НаСервере
    Процедура СформироватьОтчетНаСервере()

    СхемаКомпоновкиДанных = Отчеты.Отчет1.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

    //ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных ,Настройки, ДанныеРасшифровки);
    МакетКомпоновки.ЗначенияПараметров.Организация.Значение = Организация;

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);

    Результат.Очистить();
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

    КонецПроцедуры

    //ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    Заремлено потому что уже по разному пробовал - и использовать новые и использовать параметр который на форме отчёта справа вверху.
    --- Объединение сообщений, 4 окт 2016 ---
    использую 8.3 управляемые формы
  16. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    325
    Симпатии:
    53
    Баллы:
    54
    Код:
    &НаКлиенте
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
       
        СтандартнаяОбработка = Ложь;
        Контрагент = ПолучитьРасшифровкуНаСервере(Расшифровка);
        Если Контрагент <> Неопределено Тогда
            ПоказатьЗначение(, Контрагент);
        КонецЕсли;
       
    КонецПроцедуры
    
    &НаСервере
    Процедура СформироватьНаСервере()
           
        Результат.Очистить();
       
        СхемаКомпоновки = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
        НастройкиКомпоновки = СхемаКомпоновки.НастройкиПоУмолчанию;
       
        ДанныеРасшифровкиОбъект = Неопределено;
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки, НастройкиКомпоновки, ДанныеРасшифровкиОбъект);
       
        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровкиОбъект);
       
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
       
        ПроцессорВывода.УстановитьДокумент(Результат);
        ПроцессорВывода.Вывести(ПроцессорКомпоновки);
       
        // После окончания процессором вывода отчета, поместим расшифровку во временное хранилище.
        ДанныеДляРасшифровки = Новый Структура("ДанныеРасшифровки", ДанныеРасшифровкиОбъект);
        ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеДляРасшифровки, ДанныеРасшифровки);
       
    КонецПроцедуры
    
    &НаКлиенте
    Процедура Сформировать(Команда)
        СформироватьНаСервере();
    КонецПроцедуры
    
    &НаСервере
    Функция ПолучитьРасшифровкуНаСервере(Расшифровка)
       
        Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);   
        Поля = Данные.ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
        Ссылка = Поля.Найти("Ссылка");
       
        Возврат ?(Ссылка = Неопределено, Неопределено, Ссылка.Значение);
               
    КонецФункции
    
    --- Объединение сообщений, 4 окт 2016 ---
    Сам отчет

    Вложения:

    alexiy281 нравится это.
  17. TopicStarter Overlay
    alexiy281
    Offline

    alexiy281 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Тока сегодня осовободился. Глянул, Огромное спасибо за пример. Теперь всё понятно и доступно. Просто слов нет! Огромное спасибо!

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