База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как провести код-ревью процедуры “ОбработкаПроведения”?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 недели, 5 дней назад сделано
Odin – Одинэсник.
- АвторСообщения
- 5 июня 2025 в 16:00 #32742
Odineski
Участниксделай, пожалуйста, код-ревью обработки проведения
Процедура ОбработкаПроведения(Отказ, Режим)// регистр СК_ИзделияВПереработке Приход
Движения.СК_ИзделияВПереработке.Очистить();
Для Каждого ТекСтрокаИзделия Из Изделия ЦиклДвижение = Движения.СК_ИзделияВПереработке.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Переработчик = Переработчик;
Движение.ТипПереработки = ТипПереработки;
Движение.Штрихкод = ТекСтрокаИзделия.Штрихкод;
Движение.Количество = ТекСтрокаИзделия.Количество;КонецЦикла;
Движения.СК_ИзделияВПереработке.Записывать = Истина;
Движения.Записать();
// Проверка на отрицательные остатки
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СК_ИзделияВПереработкеОстатки.Штрихкод КАК Штрихкод,
| -СК_ИзделияВПереработкеОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.СК_ИзделияВПереработке.Остатки(
| &МоментВремени,
| Переработчик = &Переработчик
| И ТипПереработки = &ТипПереработки
| И Штрихкод В (&МассивШтрихкодов)) КАК СК_ИзделияВПереработкеОстатки
|ГДЕ
| СК_ИзделияВПереработкеОстатки.КоличествоОстаток < 0";Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(), ВидГраницы.Включая));
Запрос.УстановитьПараметр("Переработчик", Переработчик);
Запрос.УстановитьПараметр("ТипПереработки", ТипПереработки);
Запрос.УстановитьПараметр("МассивШтрихкодов", Изделия.ВыгрузитьКолонку("Штрихкод"));
РезультатЗапроса = Запрос.Выполнить();Если НЕ РезультатЗапроса.Пустой() Тогда
Отказ = Истина;
ТЗ_ОтрицательныеОстатки = РезультатЗапроса.Выгрузить();
Для каждого Стр_ТЗ_ОтрицательныеОстатки Из ТЗ_ОтрицательныеОстатки Цикл Сообщить("По изделиям со штрихкодом " + Стр_ТЗ_ОтрицательныеОстатки.Штрихкод + " обнаружены отрицательные остатки. Количество возвращаемых изделий на " + Стр_ТЗ_ОтрицательныеОстатки.КоличествоОстаток + " шт. больше, чем передано в обработку") КонецЦикла;КонецЕсли;
КонецПроцедуры
- 5 июня 2025 в 16:00 #32743
Odin – Одинэсник
Участник1. **Очистка движений**:
– В начале процедуры происходит очистка движений. Это хорошая практика, так как она предотвращает накопление старых данных. Однако, стоит убедиться, что это действие действительно необходимо, и что оно не приведет к потере данных, если процедура будет вызвана несколько раз подряд.2. **Цикл по изделиям**:
– В цикле поИзделия
добавляются движения в регистр. Убедитесь, чтоИзделия
не пустой, чтобы избежать ненужного выполнения цикла. Можно добавить проверку перед циклом.3. **Запись движений**:
– После добавления движений в регистр, происходит запись. Это правильный подход, но стоит добавить обработку ошибок на случай, если запись не пройдет. Например, можно использовать конструкциюПопытка… Исключение
.4. **Проверка на отрицательные остатки**:
– Запрос на проверку отрицательных остатков выглядит корректно. Однако, стоит убедиться, что параметры, передаваемые в запрос, корректны и не могут привести к ошибкам выполнения.5. **Сообщение об отрицательных остатках**:
– В случае обнаружения отрицательных остатков, выводится сообщение для каждого штрихкода. Это может привести к большому количеству сообщений, если изделий много. Возможно, стоит собрать все сообщения в одну строку и вывести их одним сообщением, чтобы избежать излишнего количества окон сообщений.6. **Отказ**:
– УстановкаОтказ = Истина
в случае обнаружения отрицательных остатков — это правильный подход, так как это предотвращает дальнейшую обработку. Однако, стоит добавить комментарий, объясняющий, почему происходит отказ.7. **Код стиля**:
– Код написан в целом аккуратно, но стоит придерживаться единого стиля оформления (например, отступы, пробелы). Это улучшит читаемость кода.8. **Документация**:
– Рекомендуется добавить комментарии к коду, объясняющие логику работы, особенно в сложных местах, таких как запросы и обработка результатов.9. **Оптимизация запроса**:
– ЕслиИзделия
может содержать много записей, стоит рассмотреть возможность оптимизации запроса, чтобы избежать избыточной нагрузки на базу данных.10. **Проверка на пустые значения**:
– Важно проверять, что переменные, такие какПереработчик
иТипПереработки
, не равныНеопределено
, прежде чем использовать их в запросе.В целом, процедура выглядит хорошо, но требует небольших улучшений для повышения надежности и читаемости.
- АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.