Имя: Пароль:
1C
 
Изменение измерения регистра сведений в модуле набора записей.
0 unknown181538
 
09.10.17
18:53
Стоит задача сделать штрихкод в УТ 11 неуникальным - т.е. один штрихкод для разной номенклатуры. Добавил измерение, для "альтернативной уникальности".
Пытаюсь в обработчике "ПередЗаписью" модуля набора записей его заполнять

    Для Каждого ТекЗапись Из ЭтотОбъект Цикл
        Если ЗначениеЗаполнено(ТекЗапись.НомерШтрихкода) Тогда
            Продолжить;
        КонецЕсли;
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ШтрихкодыНоменклатуры.НомерШтрихкода КАК НомерШтрихкода
        |ИЗ
        |    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        |ГДЕ
        |    ШтрихкодыНоменклатуры.Штрихкод = &Штрихкод
        |    И ШтрихкодыНоменклатуры.Номенклатура <> &Номенклатура
        |
        |УПОРЯДОЧИТЬ ПО
        |    НомерШтрихкода УБЫВ";
        
        Запрос.УстановитьПараметр("Номенклатура", ТекЗапись.Номенклатура);
        Запрос.УстановитьПараметр("Штрихкод",ТекЗапись.Штрихкод);
        
        РезультатЗапроса = Запрос.Выполнить();
        
        Выборка = РезультатЗапроса.Выбрать();
        
        Если выборка.Следующий() Тогда
             ТекЗапись.НомерШтрихкода = Выборка.НомерШтрихкода + 1;
        КонецЕсли;
    КонецЦикла;
Выдает ошибку "Значение поля не соответствует установленному отбору".
В отладчике
ЭтотОбъект.Отбор.НомерШтрихкода = 0;
Т.е. запись делается с указанным отбором. Самое странное, что находил в инте такой же работающий пример.
Как правильно изменять измерение перед записью?
1 Филиал-msk
 
09.10.17
18:58
(0) > находил в инте
Простите, а что вы делаете с этим безумным количеством времени, освободившемся при написании этих букв?

Кроме значений можно изменять и текущий отбор. Помня про то, что в обработку при щаписи управлние будет передано дважды.
2 unknown181538
 
09.10.17
20:33
(1) Опечатался))
Да, работает. Меня смущали от этого мысли о гипотетическом случае, когда в наборе может быть несколько записей... Но Это можно решать уже в том коде, который создаст ситуацию.
Спасибо