8.х Перенос элемента справочника в группу

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

  1. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Пишу такой код:
    Код:
    Услуга = Справочники.Номенклатура.НайтиПоНаименованию("Услуга");
    Выборка=Справочники.Номенклатура.Выбрать();  
    Пока Выборка.Следующий()=1 Цикл
    Если Услуга=Истина Тогда
    Справочники.Номенклатура.Родитель =Услуга;
    Справочники.Номенклатура.Записать();
    

    Например, я ставлю галку "Услуга" в любом элементе справочника, и этот элемент должен переместиться в папку "Услуги". Ошибку не выдает, но и не переносит. Что я не так делаю?
  2. eviloid
    Offline

    eviloid Опытный в 1С

    Регистрация:
    15 май 2008
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Если Услуга=Истина Тогда - проблема тут

    Наверное надо так:
    Если Выборка.Услуга = Истина Тогда
    ...
    :unsure:
  3. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Ой, точно. Исправила. Теперь ошибку выдает:
    Поле объекта не обнаружено (Родитель): Справочники.Номенклатура.Родитель=Услуга;
  4. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Выборка.Родитель

    Но вообще, что у вас за задача, ибо такой перебор, мягко говоря, е оптимальный
  5. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Да незнай, что за задача такая. Издеваются над стажером. :unsure:

    Если так писать:
    Код:
    Услуга = Справочники.Номенклатура.НайтиПоНаименованию("Услуга");
    Выборка=Справочники.Номенклатура.Выбрать();  
    Пока Выборка.Следующий()=1 Цикл
    Если Выборка.Услуга=Истина Тогда
    Выборка.Родитель=Выборка.Услуга;
    Справочники.Номенклатура.Записать();
    
    То вот: Поле объекта недоступно для записи (Родитель)

    А какой перебор более оптимален?

    [warn=Использование тэга CODE]При использовании тега необходимо указать начало [ CODE] и окончании действия тега - [ /CODE] (Без пробелов в скобках)[/warn]
  6. andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    А не проще сразу элементу спраовчника назначить родителя?
  7. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    В смысле сразу? Не проверяя, является ли услугой или что?
  8. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    В смысле при установке галочки сразу элемент переносить
  9. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Если я правильно поняла, то не нужно внешнюю обработку создавать (как я сейчас это делаю), а в процедуре УслугаПриИзменении? Попробовала, выдает ошибку Поле объекта недоступно для записи (Родитель)
    Подскажите, пожалуйста, я еще только изучаю программирование. :unsure:
  10. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура УслугаПриИзменении(Элемент)
    Если Услуга Тогда
    //Если галочка установлена, то переместим элемент в группу "Услуга"
    ЭтотОбъект.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Услуга");
    Иначе
    //Если галочка снята, то переместим элемент в корень
    ЭтотОбъект.Родитель = Справочники.Номенклатура.ПустаяСсылка();
    КонецЕсли;
    //Запишем изменения сразу, если, конечно, это нужно
    ЭтотОбъект.Записать();
    КонецПроцедуры
    
    
  11. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    В общем, вот как работает ваша процедура: если я ставлю галку Услуга элементу из другой группы, то этот элемент перемещается в корень. Если ставлю галку элементу из корня, то ничего не меняется. Папка Услуга остается пустой. :unsure:
  12. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Вот я дундук! :unsure: Папка-то называется Услуги, а не Услуга!
    Всё получилось! Спасибо Вам огроменное!
  13. andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    И еще, при поиске по наименованию лучше искать по полному совпадению, а то естьвариант услуги, услуги1, услугии и пр...

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