Имя: Пароль:
1C
1С v8
Запись значения в реквизит (для дублей наименований)
0 mistamista
 
14.01.14
14:01
Добрый день! Помогите разобраться.
Задача найти все дубли наименований в справочнике, и записать код в специально, созданный для этого реквизит. Каждой группе уникальных наименований - свой код.
Кодом было принято решение сделать уникальный идентификатор первого элемента в группе наименований. Т.е. для всех Наименований1 будет записан Код1, Наименований2 - Код2 и т.д.
Форма обычная.
С выборкой первого элемента в группе проблем нет, вот код:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                | Армирование.Ссылка,
                | Армирование.Наименование КАК Наименование,
                | Армирование.Код
                |ИЗ
                | Справочник.Армирование КАК Армирование
                |ИТОГИ ПО
                | Наименование";
Результат = Запрос.Выполнить();
    ВыборкаНаименование = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

А как этот код(уникальный идентификатор) записать остальным элементам группы? Заранее благодарен за помощь =)
1 Franchiser
 
гуру
14.01.14
14:06
Сделать такой же вложенный запрос с агрегатной функцией Максимум и Соединить внутренним соединением.
2 Franchiser
 
гуру
14.01.14
14:06
Или же Пакет запросов с использованием временной таблицы.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший