8.х Помогите написать обр-ку по зачистке одного реквизита во всех элементах номенклатуры

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

  1. TopicStarter Overlay
    Lily_1C
    Offline

    Lily_1C Опытный в 1С

    Регистрация:
    25 окт 2010
    Сообщения:
    152
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте!
    Мне срочно нужно написать обработку,которая проходит по всем элементам Номенклатуры и удаляет значение одного реквизита,делает его пустым. Обработки я только начинаю писать,поэтому прошу помощи. задачка то ведь не сложная и,к сожалению, срочная(
    Как с самого начала обр-ки обратиться поэлементно к спр-ку Номенклатура и к нужному реквизиту(НоменлаторИТС)? Набросайте пож-та примерный код. Пожалуйста! Очень благодарна буду!
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Какая конфигурация?
  3. 1cUserAndrew
    Offline

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

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    А "Групповой обработкой справочников и документов" пробовали? Если таковая имеется в Вашей конфигурации.
  4. TopicStarter Overlay
    Lily_1C
    Offline

    Lily_1C Опытный в 1С

    Регистрация:
    25 окт 2010
    Сообщения:
    152
    Симпатии:
    0
    Баллы:
    26
    УПП 1.2.39,дописанная.Тот элемент,значения которого нужно удалить,вписывали сами.Теперь его нужно очистить
  5. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Ну да, можно воспользоваться обработкой, которую посоветовал 1cUserAndrew
  6. 1cUserAndrew
    Offline

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

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Не пробовал, конечно, изменять этой обработкой дописанные реквизиты, но наверное можно :) По кнопке "настройка" просто установить флаг "Разрешить изменение реквизитов объектов".
  7. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    Из "Простых примеров разработки":

    Как перебрать элементы справочника?

    Для того чтобы перебрать элементы справочника, необходимо сформировать выборку элементов с нужными параметрами и затем обойти ее в цикле.
    Например, для перебора всех элементов справочника Номенклатура в иерархическом порядке можно использовать следующий код (листинг 3.10):
    Листинг 3.10. Перебор элементов справочника в порядке иерархии

    Код:
    Выборка = Справочники.Номенклатура.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
    Наименование = Выборка.Наименование;
    // Обращение к другим данным справочника.
    
    //        ...
    
    КонецЦикла;                
    
    


    Аналогичного результата можно добиться, используя запрос (листинг 3.11):
    Листинг 3.11. Перебор элементов справочника запросом

    Код:
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |        Ссылка,
    |        Наименование
    |ИЗ
    |        Справочник.Номенклатура 
    |АВТОУПОРЯДОЧИВАНИЕ");
    
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
    Наименование = Результат.Наименование;
    
    //        ...
    КонецЦикла;
    

    Благодаря использованию запроса можно формировать выборку элементов справочника более «гибко», поскольку запрос позволяет задать произвольные условия на выбираемые данные.
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    И для того чтобы что-то менять, нужно что-то получать :), в данном контексте нужно получать объект метаданных, потом менять, и потом только записывать.
    Lily_1C, у вас справочник случаем не подчиненный ?
  9. 1cUserAndrew
    Offline

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

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Дополню ответ Diego, и мысль alexburnа :), если уж решите писать обработку.))
    Изменить реквизит можно так:
    Код:
    Пока Результат.Следующий() Цикл
    Объект = Результат.Ссылка.ПолучитьОбъект();
    Объект.ОчищаемыйРеквизит = "";//Если реквизит строковый
    //Если реквизит ссылочный (СправочникСсылка, например), тогда:
    //Объект.ОчищаемыйРеквизит = Справочники.НужныйСправочник.ПустяСсылка();
    Объект.Записать();
    КонецЦикла;
    
  10. TopicStarter Overlay
    Lily_1C
    Offline

    Lily_1C Опытный в 1С

    Регистрация:
    25 окт 2010
    Сообщения:
    152
    Симпатии:
    0
    Баллы:
    26
    Нет,не подчиненный.

    Вот проописала такой код:
    Код:
    	
    Выборка = Справочники.Номенклатура.Выбрать();
    
    Пока Выборка.Следующий() Цикл
    Об = Выборка.Ссылка.ПолучитьОбъект();
    Об.итсНоменклатор = Справочники.итсНоменклатор.ПустаяСсылка();
    Об.Записать();
    КонецЦикла;
    
    
    
    Ругается,выдает след.ошибку(в скриншоте).В чем дело?

    Вложения:

    • 111.JPG
      111.JPG
      Размер файла:
      41,7 КБ
      Просмотров:
      37
  11. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    А реквизит итсНоменклатор какого типа?
    Попробуйте так:
    Код:
    Об.итсНоменклатор.Ссылка = Справочники.итсНоменклатор.ПустаяСсылка();
    
  12. 1cUserAndrew
    Offline

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

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Код:
    Пока Выборка.Следующий() Цикл 
    Если НЕ Выборка.ЭтоГруппа Тогда 
    Об = Выборка.ПолучитьОбъект(); 
    Об.итсНоменклатор = Справочники.итсНоменклатор.ПустаяСсылка(); 
    Об.Записать(); 
    КонецЕсли; 
    КонецЦикла;
    
  13. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    А, ну да:), мы же еще и группы цепляем в выборке:).
    Тогда еще проверку на удаленного элемента можно сделать.
  14. TopicStarter Overlay
    Lily_1C
    Offline

    Lily_1C Опытный в 1С

    Регистрация:
    25 окт 2010
    Сообщения:
    152
    Симпатии:
    0
    Баллы:
    26
    Ваш код сработал! :angry:
    Но вышла другая ошибка(скриншот),сейчас хочу пробежаться по элементам.видимо есть неправльно записанные эл-ты номенлатуры.

    Вложения:

    • 222.JPG
      222.JPG
      Размер файла:
      20,4 КБ
      Просмотров:
      31
  15. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    УниверсальныйПодборИОбработкаОбъектов с диска ИТС.
  16. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Запись лучше сделайте в Попытке. В исключении сделайте вывод ошибки и номенклатуры, и станет все сразу ясно :)
  17. TopicStarter Overlay
    Lily_1C
    Offline

    Lily_1C Опытный в 1С

    Регистрация:
    25 окт 2010
    Сообщения:
    152
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое! Все подчистила! Все получилось! :angry:

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