7.7 Назначить вид справочнику неопределённого вида

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем nero, 2 июн 2010.

  1. TopicStarter Overlay
    nero
    Offline

    nero

    Регистрация:
    26 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Добрый день!
    Возможно ли Объекту, справочнику неопределённого вида (Спр) созданного функцией Спр="СоздатьОбъект("Справочник") придавать разные виды справочников ("Материалы","Товары", и т.д.) в процессе обработки. Функцией НазначитьВид(Спр,"Материалы") не получается, сообщает "не задан вид".
  2. alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Можно.
    Если это реквизит на форме, то
    Код:
    форма.<ИмяРеквизита>НазначитьТип(<ИмяТипа>,<Длина>,<Точность>);
    
    
    Обязательно первоначальный тип должен быть "Неопределенный".

    Если это реквизит объекта, то Наберите в синтаке-помошнике НазначитьТип.
  3. TopicStarter Overlay
    nero
    Offline

    nero

    Регистрация:
    26 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Спасибо!
    Нет это не форма.
    Это загрузка документа "Поступление денежных средств (прочие)"
    При создании новой строки Субконто1 принимает определённое значение значение.
    Код:
    Док.Новый();
    Док.НоваяСтрока();
    Док.КоррСчет=СчетПоКоду(КоррСчет);
    Док.НазначитьТип("Субконто1",Док.КоррСчет.ВидСубконто(1));
    
    
    После этого Субконто1 может стать к примеру: Справочник.Контрагенты
    Вопрос: как найти в справочнике контрагенты по наименованию?
    Что бы потом Док.Субконто1=Спр.ТекущийЭлемент()
    Если присвоить выше Спр-Неопределённый то поиска по наименованию (или коду) не будет.
    А кокой будет вид Субконто я не знаю, принудительно создавать все объекты типа "Справочник.ВидСубконто" по меньшей мере глупо. :unsure:
  4. alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Не вижу проблемы , вы на каждой новой строке "Субконто1" назначаете его тип, так к примеру
    если вы назначите тип "Справочник.Контрагенты" то уже субконто1 будет иметь тип "Справочник.Контрагенты" ,а не Неопределенный.
  5. TopicStarter Overlay
    nero
    Offline

    nero

    Регистрация:
    26 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Согласен, Субконто1 стал тип "Справочник.Контрагенты". А как тогда в субконто1("Справочник.Контрагенты" ) найти по наименованию например: ООО "Фиалка", что бы его потом добавить в строку.
    Извиняюсь, что-то не врублюсь. :unsure:
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Если ТипЗначения(Спр.Субконто1)=11 Тогда //должно быть справочник, а не что-то другое
    Если Спр.Субконто1.Вид()="Контрагенты"  Тогда //вдруг другой справочник с тем же наименованием.
    Если Найти(Спр.Субконто1.Наименование,Поиск)<>0 Тогда //регистр не проверяется. Если надо добавьте
    Сообщить("НАШЛИ!");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    
    
    
  7. TopicStarter Overlay
    nero
    Offline

    nero

    Регистрация:
    26 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Код:
    Если ТипЗначения(Спр.Субконто1)=11 Тогда //должно быть справочник, а не что-то другое
    Если Спр.Субконто1.Вид()="Контрагенты"  Тогда //вдруг другой справочник с тем же наименованием.
    Если Найти(Спр.Субконто1.Наименование,Поиск)<>0 Тогда //регистр не проверяется. Если надо добавьте
    Сообщить("НАШЛИ!");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    
    Спасибо!
    А почему Спр? Я Объект "Справочник" не создавал - Субконто1 в новом документе. Может так?
    Код:
    Если ТипЗначения(Док.Субконто1)=11 Тогда //убедились что справочник
    Если Док.Субконто1.Вид()="Контрагенты" // так тут как раз и не известно, что будет, какой вид
    //Субконто1 установит СчетПоКоду() - такой и будет, а в нём и надо найти по наименованию.
    КонецЕсли;
    КонецЕсли;
    
    
    А если создавать Справочник, то как придавать ему меняющийся вид (субконто1)?
  8. alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если ТипЗначенияСтр(Субконто1) = "Справочник" Тогда
    Спр = СоздатьОБъект("Справочник."+Субконто1.Вид());// создаем Справочник который нам нужен.
    Спр.НайтиПоНаименованию(Поиск); // находим нужный элемент
    Субконто1 = Спр.ТекущийЭлемент(); //Подставляем значение в субконото1.
    КонецЕсли;
    
    
    
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если у вас реквизит справочник неопределенного вида (просто справочник) вид присваивать ему не нужно. Просто присваивайте ссылку на нужный справочник
  10. TopicStarter Overlay
    nero
    Offline

    nero

    Регистрация:
    26 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Спасибо!
    получилось. :unsure:

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