О важности отладки

Написал небольшую защиту перед записью чека, потому что в УНФ появились чеки, где отсутствовали строки в табличной части серий. Я это обнаружил, потому что текст серий был красным.

Первоначальный код защиты:

&Перед("ПередЗаписью")
Процедура дппс_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	//Перед записью, иначе отказа не будет, после использовать нельзя
	//Сообщить("Контроль ПС");
	Для Каждого Строка ИЗ ЭтотОбъект.БезналичнаяОплата Цикл
		//Сообщить("ПС: " + Строка.ПодарочныйСертификат + " номер: " + Строка.НомерСертификата);
		Если ЗначениеЗаполнено(Строка.ПодарочныйСертификат) И не ЗначениеЗаполнено(Строка.НомерСертификата) Тогда
			Отказ = истина;
			Сообщить("Не указан номер подарочного сертификата, проверьте что у серии сертификта стоит галочка ПРОДАН!", СтатусСообщения.Важное);
		КонецЕсли;
	КонецЦикла;                           

	Для Каждого Строка ИЗ ЭтотОбъект.Запасы Цикл
		Если ЗначениеЗаполнено(Строка.СокрЛП(Строка.СерииНоменклатуры)) Тогда
			ИскСтроки = ЭтотОбъект.Серии.НайтиСтроки(Новый Структура("КлючСвязи", Строка.КлючСвязи));
			Если ИскСтроки.Количество() = 0 Тогда
				Отказ = истина;
				Сообщить("В таблице серий отсутствует серия " + Строка.СерииНоменклатуры + ", которая выбрана для товара: " + Строка.Номенклатура, СтатусСообщения.Важное);
			Иначе
				
				Сообщить("ОК В таблице серий серия " + Строка.СерииНоменклатуры + ", которая выбрана для товара: " + Строка.Номенклатура, СтатусСообщения.Важное);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

Но опыт подсказал потестировать и да, реальная запись чека выявила две проблемы, в итоге получился рабочий код, выкладываю только исправленную часть контроля по сериям:

	Для Каждого Строка ИЗ ЭтотОбъект.Запасы Цикл
		Если ЗначениеЗаполнено(СокрЛП(Строка.СерииНоменклатуры)) Тогда
			ИскСтроки = ЭтотОбъект.СерииНоменклатуры.НайтиСтроки(Новый Структура("КлючСвязи", Строка.КлючСвязи));
			Если ИскСтроки.Количество() = 0 Тогда
				Отказ = истина;
				Сообщить("В таблице серий отсутствует серия " + Строка.СерииНоменклатуры + ", которая выбрана для товара: " + Строка.Номенклатура, СтатусСообщения.Важное);
			Иначе
				Сообщить("ОК В таблице серий серия " + Строка.СерииНоменклатуры + ", которая выбрана для товара: " + Строка.Номенклатура, СтатусСообщения.Важное);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

Ошибки предлагаю Вам найти самим.

Еще раз убеждаюсь в важности тестов. Глазами мне казалось, что все правильно.

Среда: УНФ 3.0.13.374

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *