8.х ВыбратьИерархически()

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

  1. TopicStarter Overlay
    Бухгалтерский чайник
    Offline

    Бухгалтерский чайник

    Регистрация:
    23 дек 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Необходимо выбрать все позиции входящие в Справочник.Номенклатура в раздел "Метериалы"
    Код:
    Справочники.номенклатура.ВыбратьИерархически(???)
    
    
    Вот как дать ему ссылку на "Материалы"
    А необходимо это для присваение всей входящей грппе "Номенклатурной группы"
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    А Синтаксис-Помощник на что?

  3. TopicStarter Overlay
    Бухгалтерский чайник
    Offline

    Бухгалтерский чайник

    Регистрация:
    23 дек 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Это-то я читал. Вот как это оформить правильно? Я писал
    Код:
    ВыбратьИерархически("Материалы")
    
    И он меня послал.
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    И правильно сделал.
    Читал не внимательно, либо не понимаешь прочитанного.

    Читать до полного просветления:
    Какой тип значения "родителя" у тебя? А какой нужно?
  5. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    НУ образно так.

    Код:
    Выборка=Справочники.номенклатура.ВыбратьИерархически(Справочники.номенклатура.НайтиПоНАименованию("Маетриалы"));
    
    Купите хотя бы книгу Радченко для начала, что бы азы изучить
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    ну вот, всю рыбу распугал :)
    Так чел долго будет учится.........
  7. TopicStarter Overlay
    Бухгалтерский чайник
    Offline

    Бухгалтерский чайник

    Регистрация:
    23 дек 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Господа любезнейшие, моя понимать, что моя глупый "госторбайтора", но я как-то в панике.
    Код:
    	
    Пока выбор.Следующий() Цикл  		
    СпраОб=Выбор.ПолучитьОбъект();  		               СпраОб.НоменклатурнаяГруппа=Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ц00000020"); СпраОб.Записать();  	
    КонецЦикла;  
    
    выдаёт ошибку
    Как бы это понять? И я не против что бы меня помучал nomad_irk. :unsure:
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    я так понимаю, что нужно проверять выбор на принадлежность к группе и к элементу и менять значение только у элемента, а группы пропускать
  9. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Сделайте эту операцию Групвой обработкой справочникв и документов. Зачем так замарачиваться.

    А там перед тем как присваивать проверяйе

    Код:
    Если Не СпраОб.ЭтоГруппа() Тогда
    //присваиваем ном группу
    КонецЕсли;
    
  10. TopicStarter Overlay
    Бухгалтерский чайник
    Offline

    Бухгалтерский чайник

    Регистрация:
    23 дек 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Делаю в "Групвой обработкой справочникв и документов" но не могу справиться с отбором. Мне необходима, что бы отбор произашел только по тем элементам которые находятся в группе "Материалы". Помимо этого в самой "Материалы" есть ещё куча груп. Вот получилось отобрать все. А именно группу "Материалы " не выходит.
  11. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Какой отбор ставите?

    ставьте

    ссылка в Группе Материал
  12. TopicStarter Overlay
    Бухгалтерский чайник
    Offline

    Бухгалтерский чайник

    Регистрация:
    23 дек 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    оу :unsure: Я в общем как-то до этого не додумался, и доделал ту бешаную программу. Получилось довольно не плохо. Вот хотел посоветоваться, как можно её оптимизировать.
    Код:
        
    Выборка=Справочники.Номенклатура.ВыбратьИерархически(Справочники.Номенклатура.НайтиПоКоду("00000000013"));      
    Пока Выборка.Следующий() Цикл          
    СпраОБ=Выборка.ПолучитьОбъект();          
    Если Не СпраОБ.ЭтоГруппа Тогда              
    try                  
    СпраОБ.НоменклатурнаяГруппа =Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ц00000020");                  
    СпраОб.СтатьяЗатрат=Справочники.СтатьиЗатрат.НайтиПоКоду("000000011");                  СпраОб.Записать();                      
    
    except                  
    СпраОб.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");                  
    СпраОб.Записать();              
    endtry;                  
    Сообщить(Выборка.Код+""+Выборка.Наименование+"изменён");          
    КонецЕсли;          
    КонецЦикла;
    
    
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Как минимум:
    Код:
    Ном1 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ц00000020");
    Сз1 = Справочники.СтатьиЗатрат.НайтиПоКоду("000000011");
    ед1 = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
    Выборка=Справочники.Номенклатура.ВыбратьИерархически(Справочники.Номенклатура.НайтиПоКоду("00000000013"));      
    Пока Выборка.Следующий() Цикл          
    СпраОБ=Выборка.ПолучитьОбъект();          
    Если Не СпраОБ.ЭтоГруппа Тогда              
    try                  
    СпраОБ.НоменклатурнаяГруппа =Ном1;                  
    СпраОб.СтатьяЗатрат= Сз1;
    СпраОб.Записать();                      
    
    except                  
    СпраОб.БазоваяЕдиницаИзмерения = ед1;                  
    СпраОб.Записать();              
    endtry;                  
    Сообщить(Выборка.Код+""+Выборка.Наименование+"изменён");          
    КонецЕсли;          
    КонецЦикла;
    
    А вообще:

    1. Всегда бью по рукам за НайтиПоКоду и НайтиПоНаименованию (Только если это не разовое)
    2. Использование русского и английского языка одновременно - моветон
  14. TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    расскажите подробней... что в этом плохого?
  15. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Самое основное: привязка к не константному значению.
    Т.е. "материалы" могут переименовать в "ТМЦ" и все пойдет прахом.

    Ну и поиск по текстовому значению не есть гуд.
  16. Maxsl
    Offline

    Maxsl

    Регистрация:
    21 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Да и не должно быть конктретики в программе - это одно из основных правил программирования, эти твои
    ("Ц00000020"); ("000000011"); ("796"); ("00000000013") - что это... завтра тебе необходимо будет искать другие коды, и что? - Полезешь программу менять! А можно с помощью параметров все сделать и вводить нужные коды. В общем, учись

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