Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отбор списком в регистре сведений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
lensky
Добрый день!

Друзья, прошу помощь в решении вот такой проблемы. Собственно сабж:
Есть регистр сведений "Анализ инвентаризаций". Есть обработка (см. картинку) При нажании на кнопку Начать пересчет, в регистр автоматически попадают выделенные позиции, при нажатии завершить устанавливается то кол-во которые указали при пересчете.
Ситуация может быть такова, что некоторые позиции может потребоваться пересчитать ещё раз, но как только в отборе я ставлю номенклатуру, то ошибка у меня всплывает отбора. Вот код отбора:

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


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

МН        = новый Массив;
    
    Для каждого Строка из твН цикл
        Если втАН.Найти(Строка.Номенклатура,"Номенклатура") = неопределено тогда
            МН.Добавить(Строка.Номенклатура);    
        КонецЕсли;                                                                        
    КонецЦикла;
    
    Если МН.Количество() = 0 тогда
        Если втАН.Количество() = 0 тогда
            Предупреждение("Не выбрана номенклатура для подсчета");              
        иначе                 
            Предупреждение("Выбранная номенклатура уже пересчитывается");            
        КонецЕсли;
        
        Возврат;
    КонецЕсли;


твН просто переменная

Как сделать что бы при повторном пересчете, уже имеющияся запись в регистре перезаписывалась, а новая просто записывалась.

Заранее спасибо.


 ! 

необходимо зарегистрироваться для просмотра ссылки: 8
 
pablo
Работайте не с набором записей, а с менеджером. Тогда Вы сможете изменять конкретную запись регистра.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.