Шаг 355 - 1C и ошибки – опасно как никогда

Язык 1С очень устойчив к ошибкам. Настолько, что ее и заметить не так легко. Если Вы имеете опыт программирования на Pascal или С++ вы будете надеяться, что среда разработки проконтролирует многие ошибки. В данном случае это не так. Посмотрите шаг "Шаг 354 - Получаем счет". В нем ошибка. Вместо

Ит.ПолучитьСчет(СчетПоКоду("100"));

Нужно написать:

Ит.ПолучитьСчет(,СчетПоКоду("100"));

Так как первый параметр это номер, а второй счет. Несмотря на это мы получаем правдоподобные результаты. И даже, если будем пытаться обработать ошибку при неправильном написании мы будем получать правильный результат. Смотрите ошибка есть, но она не фиксируется.

Перем ОшибкаВПрограмме;

Процедура ПолучитьСчетИзИтога(Итог,СчетДляПолучения) 
	Если (Итог.ПолучитьСчет(СчетДляПолучения)=0) Тогда
		ОшибкаВПрограмме=1;
	КонецЕсли;
КонецПроцедуры

Процедура Сформировать() 
	Перем счет100;
	Перем счет200;  
	ОшибкаВПрограмме=0;
	Т = СоздатьОбъект("Таблица");
     
	Ит = СоздатьОбъект("БухгалтерскиеИтоги"); 
	Ит.ВыполнитьЗапрос(ДатаНач, ДатаКон, "200,100");   
	вместе=Ит.СКД();
	Ит.ВыбратьСчета();
	ПолучитьСчетИзИтога(Ит,"100");
	счет100=Ит.СКД();  
	ПолучитьСчетИзИтога(Ит,"300");
	счет200=Ит.СКД();   
          
	Если ОшибкаВПрограмме=1 Тогда
		Предупреждение("Ошибка счета, Программиста к начальнику");
		Возврат;
	КонецЕсли;            

	Т.ВывестиСекцию("Секция_1");       
	Т.ТолькоПросмотр(1);
	Т.Показать()

КонецПроцедуры

Самое прикольное, что результат правильный. И все хорошо, но только стоит запросить еще один счет и Вы получите ошибку.

.........
ПолучитьСчетИзИтога(Ит,"100");
счет100=Ит.СКД();  
ПолучитьСчетИзИтога(Ит,"300");
счет200=Ит.СКД();   
ПолучитьСчетИзИтога(Ит,"200");
.........

355_1.gif (6171 b)

Конечно, это легко исправляется.

Ит.ПолучитьСчет(,СчетПоКоду("100"));

Волнует меня только одно. Не слишком ли это. Ведь мы с Вами бухгалтерию ведем. Отчетность всякую делаем и сдаем в налоговую, а при более серьезном использовании и бизнес как таковой завязан на . Так не слишком ли мало контроля? Ведь есть же в C++ сообщения об ошибках. Что мешает сделать в 1C тоже самое. Уважаемые господа из 1С, может я и заблуждаюсь, но такая среда разработки очень и очень опасна, если организации вкатают штраф в пару лимонов за вот такой казус это уже другой разговор.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 25.11.2002