8.х Переопределение переменной ссылочного типа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Максим, 25 май 2010.

  1. TopicStarter Overlay
    Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    684
    Симпатии:
    7
    Баллы:
    29
    Добрый день!
    1С:Предприятие 8.1 (8.1.15.14).
    У меня есть функция в нее передается параметр ссылочного типа (параметр -пЭлементРеестраДокументов).
    Я проверяю если ссылка пустая - то мне нужно создать новый элемент (2).
    По выполнении строки (3) тип у пЭлементРеестраДокументов все равно ссылка, а не объект, почему переменная не переопределяется, т.е. не становится СправочникОбъект.РеестрДокументов?


    Код:
    Функция ЗаполнитьЭл(пЭлементРеестраДокументов,...)  //(1)
    
    Если пЭлементРеестраДокументов.Пустая()   тогда      //создаем новый элемент справочника//(2)
    пЭлементРеестраДокументов = Справочники.РеестрДокументов.СоздатьЭлемент();    //(3)
    пЭлементРеестраДокументов.ВидДокумента = пВидДокумента;         //(4)
    
    
  2. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Должно работать, как проверяли? Скриншот из отладчика с вычисленным выражением пЭлементРеестраДокументов после выполнения строки 3 можете показать?
  3. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Скорее всего потому что вы Переменной с типом ссылка пытаетесть Присвоить тип Объект. попробуйте так

    Код:
    Функция ЗаполнитьЭл(пЭлементРеестраДокументов,...)  //(1)        
    Если пЭлементРеестраДокументов.Пустая()   тогда      //создаем новый элемент справочника//(2) 
    оЭлементРеестраДокументов = Справочники.РеестрДокументов.СоздатьЭлемент();    //(3)   
    оЭлементРеестраДокументов.ВидДокумента = пВидДокумента;         //(4)
    оЭлементРеестраДокументов.Записать();
    Возврат оЭлементРеестраДокументов.ПолучитьСсылку();
    Иначе
    Возврат пЭлементРеестраДокументов;
    конецЕсли;
    конецФункции;
    
    
    Т.е. если не надо создавать новый объект то создаем его вновой переменной
  4. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Ерунда. Переменные переопределять можно. Нельзя переопределить тип реквизита, но автор пишет именно о переменных.
  5. TopicStarter Overlay
    Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    684
    Симпатии:
    7
    Баллы:
    29
    Спасибо конечно, но метод решения проблемы мне известен, просто меня удивил сам факт невозможности переопределния переменной.
    А вот и запрашиваемый скрин

    Вложения:

    • Док.JPG
      Док.JPG
      Размер файла:
      45,1 КБ
      Просмотров:
      24
  6. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Определение переменной перед вызовом функции покажите.
  7. TopicStarter Overlay
    Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    684
    Симпатии:
    7
    Баллы:
    29
    Ссылка берется из самого документа. Это реквизит документа

    Код:
    Док.ЭлементРеестраДокументов = ЗаполнитьЭл(Док.ЭлементРеестраДокументов, ...
    
    
    Ну конечно!!! Реквизит документа вот почему не получается. Всем спасибо за участие.
    Я уж хотел было на 1с-ку грешить

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