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