8.х Не вытягивается значение реквизита документа

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

  1. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    Если честно, то на контекст я не обратил внимания. До сейчас был уверен, что без указания контекста - выполняется по-умолчанию на клиенте...

    Вложения:

  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а ничего что СсылкаНаобъект в вашей обработке тип строка?
    --- Объединение сообщений, 10 дек 2014 ---
    и вообще странная обработина...
  3. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    СсылкаНаОбъект у меня вроде реквизит впф
  4. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ага, с типом строка.... а вы езе и реквизиты у него хотите брать... тип у этого реквизита должен быть ссылкой на какой то объект конфигурации видимо
  5. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    ума не приложу (хотя он вроде есть)... я же когда в реквизитах обработки создал реквизит "СсылкаНаОбъект", там же задал тип "ДокументСсылка.РеализацияТоваровУслуг". В тексте модуля я нигде тип не меняю... Как же он у меня стал строковым?
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Т.к. выполнение кода происодит в модуле объекта, то нет необходимости придумывать разные конструкции.
    Организацию из СсылкиНаОбъект можно получить напрямую, т.е. СсылкаНаОбъект.Организация.

    upload_2014-12-10_10-24-26.png
  7. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    nomad_irk, а при печати впф, у вас параметр ОбластьМакета.Параметры.Получил = Организация; заполняется в области "подписи" названием организации текущего документа?
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Так точно:
    upload_2014-12-10_11-8-14.png
    bajiepka нравится это.
  9. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    т. е. вы ничего в коде не меняли/дописывали и у вас всё работает?

    Понимаете, у меня через отладку тоже всё видно... И через конструктор запросов для 8.3 тоже всё видно, а при печати нет. Может я не верно изъяснился, но из предприятия - продажа - реализаци товаров услуг - документ - печать - заказ-наряд в сформированном табличном документе значения этих параметров не подхватываются...

    Вложения:

    Последнее редактирование: 10 дек 2014
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Да, абсолютно ничего не делал кроме того, что закомментировал пару строк вашего кода(на скриншоте они видны) и сделал присвоение параметру области макета значения переменной "Организация".
    Обработку запустил в БУХ 3.0.
  11. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    Так и не смог сделать серверной функцией... Получилось через редактирование запроса, печально, но работает...
  12. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Все дело в том, что при вызове ВПФ реквизит "СсылкаНаОбъект" не заполняется - типовой метод инициализации ВПФ про этот реквизит ничего не знает.
    То, что все решилось через запрос - это решение напрашивалось с самого начала, т.к. все данные собираются в переменной "Шапка".
  13. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    Иногда так хочется, чтобы тонкий клиент в УФ был чуть толще... o_O
  14. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    nomad_irk, подскажите, всё таки как быть в такой ситуации:

    Мне нужно получить дополнительные сведения из документа реализации. Это делается в той же ВПФ. Создаю серверную функцию для запроса:

    Код:
    &НаСервере
    Функция ПолучитьТекстЗапросаХарактеристик()
        ЗапросЮ = Новый Запрос();
        ЗапросЮ.Текст = "ВЫБРАТЬ
                |    ДокРеализация.Ссылка КАК Документ,
                |    ДопСведения.Свойство КАК Свойство,
                |    ДопСведения.Значение КАК Значение
                |ИЗ
                |    Документ.РеализацияТоваровУслуг КАК ДокРеализация
                |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДопСведения
                |ПО
                |    ДокРеализация.Ссылка = ДопСведения.Объект
                |ГДЕ
                |    НЕ ДопСведения.Свойство ЕСТЬ NULL
                |УПОРЯДОЧИТЬ ПО
                |    ДопСведения.Свойство";
              
        Обход = ЗапросЮ.Выполнить().Выбрать();
        Возврат Обход;
      
    КонецФункции
    
    Потом из функции печати я её вызываю и записываю все значения в список значений (это альтернативный вариант восьми левым соединениям). Далее я по очереди (я то знаю их очередность) выбираю их в соответствующих параметрах.

    Код:
    ОбластьМакета = Макет.ПолучитьОбласть("ТаблицаХарактеристикАвто");
           
                Ю_Шапка_ДопСв = ПолучитьТекстЗапросаХарактеристик();
                СписокДопСвойств = Новый СписокЗначений;
               
                Пока Ю_Шапка_ДопСв.Следующий() Цикл
                  
                    Если Ю_Шапка_ДопСв.Документ = СсылкаНаОбъект Тогда
                  
                    СписокДопСвойств.Добавить(Ю_Шапка_ДопСв.Значение);
                                  
                    КонецЕсли;
              
                КонецЦикла;
                      
            ОбластьМакета.Параметры.Марка = СписокДопСвойств[0];
                     
            ТабличныйДокумент.Вывести(ОбластьМакета);
    Опять такая же ситуевина:
    Код:
    {ВнешняяОбработка.ЗаказНаряд.МодульОбъекта(488)}: Индекс находится за границами массива
            ОбластьМакета.Параметры.Марка = СписокДопСвойств[0];
    Хотя в отладчике я прекрасно вижу, что СписокДопСвойств[0] и ОбластьМакета.Параметры.Марка имеют то значение, которое нужно, оно всё равно теряется при формировании печатной формы.
    Контексты (&НаСервене) я везде где нужно задал, вызов запроса отдельной серверной функцией сделал. Кроме того, В запросе не используется СсылкаНаОбъект, но всё равно ничего не подхватывается. Подскажите может не в СсылкаНаОбъект дело? На всякий случай прикрепляю опять файл ВПФ...
    Очень прошу помощи, никак не разберусь в этой клиент-серверной чехарде...

    Вложения:

  15. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    у вас вроде как 1 документ используется? если так, то зачем в запросе связка по документу, выбирайте сразу из регистра с отбором по конкретному доку, без связок с самим доком
    --- Объединение сообщений, 15 дек 2014 ---
    если список пустой, то выдаст ошибку как у вас... Данные запрос возвращает?
    bajiepka нравится это.
  16. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Вам необходимо понять, как работает типовой метод инициализации ВПФ, как в нем задается ссылка на документ, для которого она вызвана в данный момент.
    Отладка через форму и указание конкретного документа на ней в реквизит "СсылкаНаОбъект" - это полумера, вы не отладите таким образом ничего.
  17. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    Да, запрос всё возвращает
  18. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в том виде, который у вас - может и возвращает, но у вас все документы перебираются - во-первых это не логично с точки зрения затрат ресурсов, а во-вторых по конкретному доку может и не быть данных, тогда именно ваша ошибка...
  19. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    nomad_irk, я понимаю, что где-то я упускаю (не соблюдаю) логику УФ и поэтому не получаю на печати того, что надо. Проблема в том, что я не знаю с чего искать... Более менее похожего примера я на форуме не нашел, к тому же большая часть ссылок по УФ битая - выбрасывают в корень форума. Я не прошу, чтобы вы или кто-то другой с форума писали за меня код, т. к. сам хочу понять принцип... Хотя бы киньте ссылкой на соответствующую тему, в каком направлении копать? По "инициализации ВПФ" ничего не могу найти...

    Tiger86, прикрепил скриншоты снизу. Вроед ничего нигде не теряю, но результата нет...

    Вложения:

  20. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Необходимо найти место в коде, которое обрабатывает нажатие на кнопку "Печать" на мордочке документа. По коду необходимо найти место, где формируется ВПФ в виде внешней обработки и посмотреть какие параметры в нее передаются и каким образом.
    На основании этих данных можно будет уже в модуле ВПФ использовать ссылку на ТекДок.
    bajiepka нравится это.

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