Оператор Продолжить или как пропустить ошибку...
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Всем добрый вечер!!!
Ситуация такая - есть таблица значений. В ней список номенклатуры, и иногда позиции повторяются. Так как позиций много и файл будет загружаться с изменениями каждый день, нужно не ручное решение.
При прохождении цикла, пока записи уникальны - все отлично. Как только запись повторяется, срабатывает исключительная ситуация (так как в регистр не запишутся две одинаковые записи) и оператор Продолжить отправляет действие в начало цикла. Так вот где крендель, вместо того, чтоб пропустить дублирующуюся запись и дальше делать все как надо, он перебирает все последующие записи, НО переходит к ИСКЛЮЧЕНИЮ и не записывает в регистр, хотя записи уникальны. Меняла в документе порядок записей - как только находит дубль - все, миру конец. Помогите, пожалуйста, - мне кажется, что тут какая-то мелочная недоработка, но уже голова пухнет((
Привожу код цикла:
Ситуация такая - есть таблица значений. В ней список номенклатуры, и иногда позиции повторяются. Так как позиций много и файл будет загружаться с изменениями каждый день, нужно не ручное решение.
При прохождении цикла, пока записи уникальны - все отлично. Как только запись повторяется, срабатывает исключительная ситуация (так как в регистр не запишутся две одинаковые записи) и оператор Продолжить отправляет действие в начало цикла. Так вот где крендель, вместо того, чтоб пропустить дублирующуюся запись и дальше делать все как надо, он перебирает все последующие записи, НО переходит к ИСКЛЮЧЕНИЮ и не записывает в регистр, хотя записи уникальны. Меняла в документе порядок записей - как только находит дубль - все, миру конец. Помогите, пожалуйста, - мне кажется, что тут какая-то мелочная недоработка, но уже голова пухнет((
Привожу код цикла:
Для Каждого стр из ТЗ Цикл
Состояние("Загрузка данных... артикул " + Стр.Артикул);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ЭтаФорма.Период;
НоваяЗапись.Поставщик = Справочники.Контрагенты.НайтиПоКоду("015531");
НоваяЗапись.Номенклатура = Стр.Номенклатура;
НоваяЗапись.КоличествоСкладСпб = Стр.ОстСПБ;
НоваяЗапись.КоличествоСкладМск = Стр.ОстМск;
НоваяЗапись.КоличествоСкладВыездной = Стр.ОстВыездной;
НоваяЗапись.КоличествоОжидается = Стр.Ожидается;
НоваяЗапись.ЦенаРозничная = Стр.ЦенаРозничная;
НоваяЗапись.ЦенаЗакупочная = Стр.ЦенаДляАтомик;
НоваяЗапись.ВалютаЦен = Справочники.Валюты.НайтиПоКоду("643");
НоваяЗапись.Дата = ЭтаФорма.Период;
Попытка
НаборЗаписей.Записать();
Сообщить(НоваяЗапись.Номенклатура);
Исключение
Сообщить("Не получилось " + НоваяЗапись.Номенклатура);
Продолжить;
КонецПопытки;
КонецЦикла;
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для наглядности проблемы напишу результат сего деяния:
Есть товары: яблоки, груши, персик, персик, дыня, арбуз, тыква.
Сообщения:
яблоки
груши
персик
не получилось персик
не получилось дыня
не получилось арбуз
не получилось тыква
Есть товары: яблоки, груши, персик, персик, дыня, арбуз, тыква.
Сообщения:
яблоки
груши
персик
не получилось персик
не получилось дыня
не получилось арбуз
не получилось тыква
Предложенный вариант работает, но это сильно затягивает процесс - после 2000-го наименования, проверка занимает много времени и выполнение операции растягивается на часы, так что не подходит.
Нет идей что не так с оператором Продолжить?
Нет идей что не так с оператором Продолжить?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот