8.х Как перебрать все элементы и записать

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем -=ak=-, 10 окт 2006.

  1. TopicStarter Overlay
    -=ak=-
    Offline

    -=ak=- Опытный в 1С

    Регистрация:
    13 фев 2006
    Сообщения:
    107
    Симпатии:
    0
    Баллы:
    26
    Как перебрать все элементы (не группы) справочника прочитать наименования и автоматически заполнить реквизит2 (КопияНаименования) в этом справочнике.

    Всем огромное спасибо, я только учусь.
  2. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
  3. TAHk
    Offline

    TAHk Опытный в 1С

    Регистрация:
    31 авг 2006
    Сообщения:
    100
    Симпатии:
    0
    Баллы:
    26
    Взято из стандартного Help-а с небольшими исправлениями: :unsure:
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Номенклатура = Справочники.Номенклатура;
    Выборка = Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Объект.КопияНаименования = Объект.Наименование;
    Попытка
    Объект.Записать();
    Исключение
    Предупреждение("Не удалось записать объект """ + Объект + """
    |" + ОписаниеОшибки(),60);
    КонецПопытки;
    КонецЦикла;
    КонецПроцедуры
    
    
  4. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    проверки на группу нет.. смысл?
  5. zbv
    Offline

    zbv

    Регистрация:
    10 окт 2006
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Запросом надо:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Контрагенты.Ссылка
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    Контрагенты.ЭтоГруппа = ложь";
    
    Результат = Запрос.Выполнить();
    ВыборкаРез = Результат.Выбрать();
    Пока ВыборкаРез.Следующий() цикл
    Контр = ВыборкаРез.Ссылка.ПолучитьОбъект();
    Контр.КопияНаименования = Контр.Наименование;
    Контр.Записать();
    КонецЦикла;
    
  6. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    конечно запросом лучше...
  7. Immortal
    Offline

    Immortal Опытный в 1С

    Регистрация:
    2 июл 2006
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    окуеть..это чем же в данном случае лучше..
  8. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    в любом случае, по архитектуре 1с.. без куения...
  9. Immortal
    Offline

    Immortal Опытный в 1С

    Регистрация:
    2 июл 2006
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    в любом случае, по архитектуре 1с.. без куения...

    замер производительности сделай..на 100 тысюпозиций. выборкой и запросом. вот и посмотришь.
  10. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    придется сделать... завтра посмотрим
  11. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    что и следовало показать
    кстати, конечно если выбрать *, то разница составляет в 0.6 в пользу запроса

    Вложения:

    • pict.jpg
      pict.jpg
      Размер файла:
      55 КБ
      Просмотров:
      130
  12. Immortal
    Offline

    Immortal Опытный в 1С

    Регистрация:
    2 июл 2006
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    признаю, неправ.
  13. zbv
    Offline

    zbv

    Регистрация:
    10 окт 2006
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Рано сдаешься :unsure:

    Количество элементов = 1 105
    Количество групп = 51
    Всего = 1 156
    ------------------
    Количество проходов = 10
    Запрос.Выбрать. Сред. время выполнения = 3,2 сек.
    Запрос.Выгрузить. Сред. время выполнения = 3,3 сек.
    Справочники.выбрать. Сред. время выполнения = 1,2 сек.


    Запрос как я писал, выборка как 1010011010 + отсеивание групп

    добавь в проверку ПолучитьОбъект() - результат думаю измениться.

    ЗЫ:
    Режим: Файловый.
  14. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    8 гиг оперативы, два проца ксеон, серверный

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