8.х Запрос к ТЧ документа

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

  1. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Добрый день.
    Пишу запрос к ТЧ документа, выбираю от туда 2 реквизита, смотрю результат, а там см. скриншот.
    Как я понимаю это уиды объектов.
    Кто знает как в запросе преобразовать уиды, или как можно строить запросы с такими данными?

    Вложения:

  2. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Запрос покажите.
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    УИДЫ - это ссылки. Если видны уиды, то по всей видимости - специально так сделано, но не совсем понятно для чего.

    УИД в ссылку преобразовывается очень просто, но сложность в том, что необходимо знать тип значения этого уида.

    СсылкНаОбъектБД = МенеджерПрикладногоОбъекта.ПолучитьСсылку(Новый УникальныйИдентификатор("УИД"));
    IceBeerG нравится это.
  4. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Запрос просто к реквизитам ТЧ документа:
    Код:
    ВЫБРАТЬ
        Док.ВидДокумента,
        Док.Значение
    ИЗ
        Документ.Док.ТЧ КАК Док
    ГДЕ
        Док.Ссылка = &Ссылка
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    А теперь найдите код по заполнению реквизита "ВидДокумента" ТЧ документа Док: это должно происходить либо при записи/проведения документа, либо при изменении документа в ТЧ Док на форме этого документа.
  6. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    При открытии формы вызывается процедура:
    Код:
    ПолучательНазвание        = ЕслиНеЗаполнено(ПолучательНазвание        , "Название");
        ПолучательИдентификатор    = ЕслиНеЗаполнено(ПолучательИдентификатор, "Идентификатор");
     
        ИсточникНазвание        = ЕслиНеЗаполнено(ИсточникНазвание        , ПолучательНазвание);
        ИсточникИдентификатор    = ЕслиНеЗаполнено(ИсточникИдентификатор    , ПолучательИдентификатор);
     
        Попытка
            Получатель.Колонки.Добавить(ПолучательНазвание);
        Исключение
        КонецПопытки;
     
        Попытка
            Получатель.Колонки.Добавить(ПолучательИдентификатор);
        Исключение
        КонецПопытки;
     
        Попытка
            Получатель.Колонки.Добавить("Предопределенная");
        Исключение
        КонецПопытки;
     
        Для Каждого Строка Из Источник Цикл
            НоваяСтрока = Получатель.Добавить();
            НоваяСтрока[ПолучательНазвание       ] = Строка[ИсточникНазвание       ];
            НоваяСтрока[ПолучательИдентификатор] = Строка[ИсточникИдентификатор];
            НоваяСтрока.Предопределенная = Истина;
    КонецЦикла
    Дело в том, что мне нужно сделать отчет на СКД, по этим данным, а как их получить в запросе не могу понять(
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    В запросе - никак, только в коде.
  8. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Ясно, спасибо, буду как-то выкручиваться.
  9. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Решил перезаполнить по человечески все данные, что бы можно было работать.
    Создал реквизиты, добавил на форму, теперь хочу обработкой их заполнить из данных ТЧ.
    Проблема заключается в том, что я не понимаю как идентифицировать поля которые нужно присваивать новым реквизитам.
    Если посмотреть на скриншот (первый пост), видно, что поле "значение" заполнено датой, а значение "вид документа" GUIDом, на форме вид документа - это строка 128 символов.
    Идеально было бы обойти циклом результат запроса, получить значение по GUID, сравнить его с другим строковым реквизитом и заполнить значением мой новый реквизит.
    Как получить значение GUIDа ссылочного объекта я знаю
    Код:
    СтрокаGUID = "a763cfbb-f94f-4c67-8e13-0e96a3a7f353";
    
    НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID);
    
    СсылкаТовар = Справочники.Номенклатура.ПолучитьСсылку(НовыйGUID);
    ,а если это строка как быть?
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Всмысле?
    Так же, как и в приведенном коде.
  11. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    спасибо за помощь, разобрался во всем.

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