Добрый день!
Друзья, прошу помощь в решении вот такой проблемы. Собственно сабж:
Есть регистр сведений "Анализ инвентаризаций". Есть обработка (см. картинку) При нажании на кнопку Начать пересчет, в регистр автоматически попадают выделенные позиции, при нажатии завершить устанавливается то кол-во которые указали при пересчете.
Ситуация может быть такова, что некоторые позиции может потребоваться пересчитать ещё раз, но как только в отборе я ставлю номенклатуру, то ошибка у меня всплывает отбора. Вот код отбора:
текДата = ТекущаяДата();
НЗ = РегистрыСведений.АнализИнвентаризаций.СоздатьНаборЗаписей();
НЗ.Отбор.Док.Установить(ВыбДок);
НЗ.Отбор.Пользователь.Установить(ПараметрыСеанса.ТекущийПользователь);
НЗ.Отбор.ДатаНач.Установить(текДата);
НЗ.Прочитать();
Для каждого текНоменклатура из МН цикл
СтруктураДляПоиска = Новый Структура("Номенклатура",текНоменклатура);
МассивПустыхСтрок = Док.Товары.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
Запись = НЗ.Добавить();
Запись.Док = ВыбДок;
Запись.Пользователь = ПараметрыСеанса.ТекущийПользователь;
Запись.ДатаНач = текДата;
Запись.Адрес = Строка.Адрес;
Запись.СерияНоменклатуры = Строка.СерияНоменклатуры;
Запись.Номенклатура = Строка.Номенклатура;
Запись.Количество = Строка.Количество;
КонецЦикла;
Запрос = новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
| АнализИнвентаризаций.Номенклатура
|ИЗ
| РегистрСведений.АнализИнвентаризаций КАК АнализИнвентаризаций
|ГДЕ
| АнализИнвентаризаций.Док = &Док
| И АнализИнвентаризаций.Номенклатура В(&МН)");
Запрос.УстановитьПараметр("Док" ,ВыбДок);
Запрос.УстановитьПараметр("МН" ,ТВН.ВыгрузитьКолонку("Номенклатура"));
втАН = Запрос.Выполнить().Выгрузить();
втАН.Индексы.Добавить("Номенклатура");
МН = новый Массив;
МН = новый Массив;
Для каждого Строка из твН цикл
Если втАН.Найти(Строка.Номенклатура,"Номенклатура") = неопределено тогда
МН.Добавить(Строка.Номенклатура);
КонецЕсли;
КонецЦикла;
Если МН.Количество() = 0 тогда
Если втАН.Количество() = 0 тогда
Предупреждение("Не выбрана номенклатура для подсчета");
иначе
Предупреждение("Выбранная номенклатура уже пересчитывается");
КонецЕсли;
Возврат;
КонецЕсли;
! | http://pro1c.org.ua/index.php?act=announce&id=2: 8 |
Работайте не с набором записей, а с менеджером. Тогда Вы сможете изменять конкретную запись регистра.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua