Добрый день!
Друзья, прошу помощь в решении вот такой проблемы. Собственно сабж:
Есть регистр сведений "Анализ инвентаризаций". Есть обработка (см. картинку) При нажании на кнопку Начать пересчет, в регистр автоматически попадают выделенные позиции, при нажатии завершить устанавливается то кол-во которые указали при пересчете.
Ситуация может быть такова, что некоторые позиции может потребоваться пересчитать ещё раз, но как только в отборе я ставлю номенклатуру, то ошибка у меня всплывает отбора. Вот код отбора:
текДата = ТекущаяДата();
НЗ = РегистрыСведений.АнализИнвентаризаций.СоздатьНаборЗаписей();
НЗ.Отбор.Док.Установить(ВыбДок);
НЗ.Отбор.Пользователь.Установить(ПараметрыСеанса.ТекущийПользователь);
НЗ.Отбор.ДатаНач.Установить(текДата);
НЗ.Прочитать();
Для каждого текНоменклатура из МН цикл
СтруктураДляПоиска = Новый Структура("Номенклатура",текНоменклатура);
МассивПустыхСтрок = Док.Товары.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
Запись = НЗ.Добавить();
Запись.Док = ВыбДок;
Запись.Пользователь = ПараметрыСеанса.ТекущийПользователь;
Запись.ДатаНач = текДата;
Запись.Адрес = Строка.Адрес;
Запись.СерияНоменклатуры = Строка.СерияНоменклатуры;
Запись.Номенклатура = Строка.Номенклатура;
Запись.Количество = Строка.Количество;
КонецЦикла;
Реквизит МН это Массив
Запрос = новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
| АнализИнвентаризаций.Номенклатура
|ИЗ
| РегистрСведений.АнализИнвентаризаций КАК АнализИнвентаризаций
|ГДЕ
| АнализИнвентаризаций.Док = &Док
| И АнализИнвентаризаций.Номенклатура В(&МН)");
Запрос.УстановитьПараметр("Док" ,ВыбДок);
Запрос.УстановитьПараметр("МН" ,ТВН.ВыгрузитьКолонку("Номенклатура"));
втАН = Запрос.Выполнить().Выгрузить();
втАН.Индексы.Добавить("Номенклатура");
МН = новый Массив;
МН = новый Массив;
Для каждого Строка из твН цикл
Если втАН.Найти(Строка.Номенклатура,"Номенклатура") = неопределено тогда
МН.Добавить(Строка.Номенклатура);
КонецЕсли;
КонецЦикла;
Если МН.Количество() = 0 тогда
Если втАН.Количество() = 0 тогда
Предупреждение("Не выбрана номенклатура для подсчета");
иначе
Предупреждение("Выбранная номенклатура уже пересчитывается");
КонецЕсли;
Возврат;
КонецЕсли;
твН просто переменная
Как сделать что бы при повторном пересчете, уже имеющияся запись в регистре перезаписывалась, а новая просто записывалась.
Заранее спасибо.
Сообщение отредактировал Vofka - 26.09.17, 10:36