О вложенных попытках, исключениях и о представлении ошибок

Публикация № 1513676 07.11.21

Разработка - Механизмы платформы 1С

Попытка Исключение ВызватьИсключение ОписаниеОшибки ИнформацияОбОшибке КраткоеПредставлениеОшибки ПодробноеПредставлениеОшибки ОбщегоНазначения ОбщегоНазначенияКлиентСервер СообщитьПользователю

В данной статье, на небольшом примере, мне бы хотелось показать, как себя ведут вложенные "Попытка-Исключение". А также о том, чем отличаются методы ОписаниеОшибки() и ИнформацияОбОшибке().

Вопрос знатокам: какое сообщение будет выведено пользователю после выполнения данного кода?

&НаКлиенте
Процедура ВызватьОшибкуБезВызоваИсключения(Команда)
	
	Попытка
		ВызватьОшибкуБезВызоваИсключенияНаСервере();
	Исключение
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
	КонецПопытки;
	
КонецПроцедуры

&НаСервере
Процедура ВызватьОшибкуБезВызоваИсключенияНаСервере()
	
	Попытка
		А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
	Исключение
	КонецПопытки;
	
КонецПроцедуры

Логично предположить, что это будет что-то вроде "Недостаточно фактических параметров". Но на самом деле сообщение вообще не будет выведено.

Дело вот в чем. В данном примере исключение не передается наверх по стеку вызовов, поэтому в первой попытке обработка исключения не срабатывает вообще.

Как исправить? Достаточно просто: нужно лишь добавить оператор ВызватьИсключение во вложенную попытку, например, вот так:

&НаСервере
Процедура ВызватьОшибкуБезВызоваИсключенияНаСервере()
	
	Попытка
		А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
	Исключение
		ВызватьИсключение;
	КонецПопытки;
	
КонецПроцедуры

Теперь давайте разберемся в том, какие описания ошибок будут возникать. В следующем примере, в комментарии после каждой переменной, привожу содержимое этой переменной:

&НаКлиенте
Процедура ВызватьОшибку(Команда)
	
	Попытка
		ВызватьОшибкуНаСервере();
	Исключение
		Описание = ОписаниеОшибки();
		// {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(20)}: Не удалось получить значение реквизита по причине: {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(6)}: Недостаточно фактических параметров
		
		Информация = ИнформацияОбОшибке();
		
		КраткоеПредставление = КраткоеПредставлениеОшибки(Информация);
		// Не удалось получить значение реквизита по причине: {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(6)}: Недостаточно фактических параметров
		
		ПодробноеПредставление = ПодробноеПредставлениеОшибки(Информация);
		// Не удалось получить значение реквизита по причине: {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(6)}: Недостаточно фактических параметров
		// {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(20)}:		ВызватьИсключение "Не удалось получить значение реквизита по причине: " + Описание;
		// {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(29)}:		ВызватьОшибкуНаСервере();
		
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставление);
		// Не удалось получить значение реквизита по причине: {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(30)}: Недостаточно фактических параметров
	КонецПопытки;
	
КонецПроцедуры

&НаСервере
Процедура ВызватьОшибкуНаСервере()
	
	Попытка
		А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
	Исключение
		Описание = ОписаниеОшибки();
		// {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(6)}: Недостаточно фактических параметров
		
		Информация = ИнформацияОбОшибке();
		// Информация.ИмяМодуля = "ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма"
		// Информация.ИсходнаяСтрока = "		А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();"
		// Информация.НомерСтроки = 30
		// Информация.Описание = "Недостаточно фактических параметров"
		// Информация.Причина = Неопределено
		
		КраткоеПредставлениеОшибки(Информация);
		// Недостаточно фактических параметров
		
		ПодробноеПредставлениеОшибки(Информация);
		// Недостаточно фактических параметров
		// {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(6)}:		А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
		
		ВызватьИсключение "Не удалось получить значение реквизита по причине: " + Описание;
	КонецПопытки;
	
КонецПроцедуры

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. sapervodichka 6234 08.11.21 16:27 Сейчас в теме
+1 за публикацию. Я не ради маркетинга тут ссылку запилю, только ради интереса к теме. Вот пример как вешал условие-костыль на стек вызова в попытке исключении https://infostart.ru/1c/articles/1263068/
2. Nicholas 872 08.11.21 16:34 Сейчас в теме
(1) Интересный прием. Спасибо.
sapervodichka; +1 Ответить
3. Serg O. 205 09.11.21 08:58 Сейчас в теме
вложенные попытка в попытке работают... https://forum.infostart.ru/forum9/topic4264/
но не везде
в транзакциях, например, попытка в попытке не работает
в попытке в процедуре ПриЗаписи (которая идёт в транзакции записи 1 документа)
- попытка записать другой документ - не сработает, наверное
должно выкинуть на исключение первой попытки.
подробнее на ИТС https://its.1c.ru/db/v8std/content/499/hdoc
Nicholas; +1 Ответить
4. kuzyara 1521 09.11.21 12:46 Сейчас в теме
наболело)
очень часты случаи когда в попытку запихивают вообще всё подряд
вот пример из последнего код-ревью
// где-то в конце процедуры
				Попытка
				
					МЗ = РегистрыСведений.СтратегииВизитовПоМенеджерам.СоздатьМенеджерЗаписи();
					МЗ.Менеджер = Выборка.Менеджер;
					МЗ.Стратегия = Выборка.Стратегия;
					
					Если Результат.Успех Тогда
						
						МЗ.Обработано = Истина;
						МЗ.ОписаниеОшибки = "";
						
					Иначе
						
						МЗ.Обработано = Ложь;
						МЗ.ОписаниеОшибки = Результат.ОписаниеОшибки;
						
					КонецЕсли;

					МЗ.Записать();
					
				Исключение
					ЗаписьЖурналаРегистрации("РаспределениеГрафикаВизитов", УровеньЖурналаРегистрации.Ошибка, , , "Не удалось записать стратегию визитов по менеджеру. " + ОписаниеОшибки());
				КонецПопытки;
Показать

Спрашиваю: какая здесь возникает ошибка? мб попытка здесь лишняя?
ответ: ну вдруг блокировка или ошибка записи

или условно вот такой кейс
Попытка
	ВыполнитьАлгоритмРасчета();
Исключение
	ЗаписьЖурналаРегистрации("Ошибка <ИмяАлгоритма>", УровеньЖурналаРегистрации.Ошибка, , , "Не удалось выполнить <ОписаниеОсобоВажнойПроцедуры> " + ОписаниеОшибки());
КонецПопытки;

прячем под ковёр потенциальные ошибки... типа в основном всё работает, но иногда может и нет?

В чем прикол таких попыток? На "всякий случай"?

Объясните...
DrAku1a; Dnki; artbear; +3 Ответить
6. artbear 1428 09.11.21 14:01 Сейчас в теме
(4) сразу же скажу, что так в ЖР писать нельзя
Исключение
    ЗаписьЖурналаРегистрации("Ошибка <ИмяАлгоритма>", УровеньЖурналаРегистрации.Ошибка, , , "Не удалось выполнить <ОписаниеОсобоВажнойПроцедуры> " + ОписаниеОшибки());
КонецПопытки;


нельзя передавать ОписаниеОшибки() или КраткоеПредставлениеОшибки

теряется стек вызовов, нужно обязательно передавать ПодробноеПредставлениеОшибки

в стандарте 1С https://its.1c.ru/db/v8std/content/499/hdoc об этом написано.

Есть правило стат.анализа в БСЛ ЛС\плагине для СонарКуб, которое отлавливает эту проблему.
Nicholas; +1 Ответить
7. artbear 1428 09.11.21 14:11 Сейчас в теме
(4) На самом деле в приведенном коде ошибки не совсем прячутся, конечно.
Особенно, если запись в ЖР выполнена верно, как я написал в (6)

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

ИМХО в подобных блоках попыток есть минус, если указанный код выполняется пользователем или тем же администратором\разработчиком.
в этом случае пользователь не увидит сообщения об ошибке.

например, создается некая утилита в виде внешней обработки, которая выполняет какие административные действия и запускается админом.
И разработчики сохраняют ошибки в ЖР, но забывают, что человеку становится сложно\непонятно, были ли ошибки, какие ошибки были, какие проблемы виноваты и т.п.
9. TMV 14 10.11.21 09:15 Сейчас в теме
(4)Что, если прав не хватает на регистр?
16. glek 112 16.12.21 08:13 Сейчас в теме
(4) Объясняю: есть работающая база, которая обновляется строго по расписанию. Динамически обновлять нельзя. Расширения использовать нельзя, по причине низкой совместимости. Поднять совместимость до приемлемого уровня нельзя по причине древности базы.
И что делать в таком случае? Только обрамлять в попытку.
17. Nicholas 872 16.12.21 08:18 Сейчас в теме
(16) Согласен. Есть ситуации, когда без "попытки" не обойтись.
5. artbear 1428 09.11.21 13:57 Сейчас в теме
(0) Отличная расшифровка. Спасибо.

Я уточню только один момент!

Опасно использовать конструкцию
ВызватьИсключение КакойТоТекст;

Причины:
- можно полностью или частично потерять стек вызовов
- полная потеря, если в строку не передать данные о возникшей ошибке
- частичная потеря, если к строке добавить ОписаниеОшибки(), как у тебя, или КраткоеПредставлениеОшибки
-
ВызватьИсключение "Не удалось получить значение реквизита по причине: " + ОписаниеОшибки();


привожу твой же текст - ПодробноеПредставление
// Не удалось получить значение реквизита по причине: {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(6)}: Недостаточно фактических параметров
// {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(20)}:		ВызватьИсключение "Не удалось получить значение реквизита по причине: " + Описание;
// {ВнешняяОбработка.ОписаниеОшибки.Форма.Форма.Форма(29)}:		ВызватьОшибкуНаСервере();


фактически не видно, на каком же выражении возникла реальная ошибка, видна только строка, где возникло исключение Форма(6)
я про строку
А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();


а ведь код может измениться к моменту анализа ошибки, и придется дополнительно исследовать, где же именно возникла ошибка.

а вот если использовать простое "ВызватьИсключение;", то получим правильный и полезный вариант, в котором сразу видно выражение, в котором возникла ошибка!

Недостаточно фактических параметров
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(82)}:     А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(53)}:     ВызватьОшибкуНаСервере();
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(7)}:  ВызватьОшибку(Команда);


в итоге совет - без очень веских причин никогда не используйте ВызватьИсключение Текст, а используйте простейшее ВызватьИсключение без параметра
fancy; tormozit; JohnyDeath; dabu-dabu; Drivingblind; TMV; Nicholas; +7 Ответить
8. Nicholas 872 10.11.21 05:13 Сейчас в теме
(5) Спасибо за отличный совет!
12. kuzyara 1521 10.11.21 10:40 Сейчас в теме
(5)
а вот если использовать простое "ВызватьИсключение;", то получим правильный и полезный вариант
Недостаточно фактических параметров
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(82)}:     А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(53)}:     ВызватьОшибкуНаСервере();	// 8.3.15+
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(7)}:  ВызватьОшибку(Команда);	// 8.3.15+
Стек только в 8.3.15 появился
При возникновении сообщений об ошибке, подробная информация об ошибке не содержала стек вызовов, который привел к строке с ошибкой (кроме случаев вложенных исключений). (с) V8Update :: 1С:Предприятие 8.3.15. Документация

То же и про ВызватьИсключение ;
&НаКлиенте
Процедура Команда1(Команда)
	Попытка
		ВызватьОшибку(Команда);
	Исключение
		ПодробноеПредставление = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
		// для 8.3.15+
		//Недостаточно фактических параметров
		//{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(30)}:     А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
		//{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(20)}:     ВызватьОшибкуНаСервере();
		//{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(4)}:      ВызватьОшибку(Команда);
		
		// для 8.3.14 и ниже выведет:
		//{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(30)}: Недостаточно фактических параметров
		//А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();	
		
	КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ВызватьОшибку(Команда)
	
	Попытка
		ВызватьОшибкуНаСервере();
	Исключение
		ВызватьИсключение;
	КонецПопытки;
	
КонецПроцедуры

&НаСервере
Процедура ВызватьОшибкуНаСервере()
	Попытка
		А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
	Исключение
		ВызватьИсключение;
	КонецПопытки;
КонецПроцедуры
Показать
crismar24; Nicholas; +2 Ответить
13. Nicholas 872 10.11.21 10:42 Сейчас в теме
(12) Не зря тему поднял. Много интересного узнаю)
14. artbear 1428 10.11.21 11:30 Сейчас в теме
(12) ты точно проверял?
я на 8.3.10 получаю стек вызовов в исключениях Ванесса-АДД, что я делаю не так?
15. kuzyara 1521 10.11.21 12:48 Сейчас в теме
(14) примерно так проверял
C:\Users\Nikolay.Kuznecov>"c:\Program Files (x86)\1cv8\8.3.10.2772\bin\1cv8.exe" ENTERPRISE /Execute C:\Users\Nikolay.Kuznecov\Desktop\ВнешняяОбработка1.epf

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(37)}: Деление на 0
й=1/0;//А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();

C:\Users\Nikolay.Kuznecov>"c:\Program Files (x86)\1cv8\8.3.15.1830\bin\1cv8.exe" ENTERPRISE /Execute C:\Users\Nikolay.Kuznecov\Desktop\ВнешняяОбработка1.epf

Деление на 0
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(37)}: й=1/0;//А = ОбщегоНазначения.ЗначениеРеквизитаОбъекта();
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(27)}: ВызватьОшибкуНаСервере();
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(4)}: ВызватьОшибку();
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(45)}: Команда1(Неопределено);
Прикрепленные файлы:
ВнешняяОбработка1.epf
10. TMV 14 10.11.21 09:18 Сейчас в теме
Логично предположить, что это будет что-то вроде "Недостаточно фактических параметров".
Вот тут вывод мне не показался логичным.
11. Nicholas 872 10.11.21 09:20 Сейчас в теме
(10) Да, для примера нужно было использовать что-типа:
А = 1 / 0;
18. MaCCapAkIII 10.11.22 16:15 Сейчас в теме
И еще есть вопрос. Если мне нужно подменить отображаемый у пользователя текст ошибки на свой текст, а, собственно, информацию об ошибке записать в ЖР и дальше анализировать самостоятельно - это возможно без глобального описания в МодулеПриложения обработчика ошибок? Пользователя смущает длинная простыня кода на форме с сообщением об ошибке. Исключение вызывается программно через ВызватьИсключение в неудачной Попытке.
Попытка
 Какойтокод;
Исключение
 ЕщеКод;
 ВызватьИсключение КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;

Вот такая конструкция все равно выдает пользователю огромную простыню с с текстом кода, где только в самом начале одной строчкой говорится о недостатке прав. Хочу оставить только эту строчку (или написать свою), все остальное пользователю не показывать. Не могу найти как это сделать, кроме использования ОбработкиОтображенияОшибок в модуле приложения, но описывать этот блок работы с конфигурацией (ранее им никто не пользовался) будет дополнительно затратна по времени.
19. Nicholas 872 11.11.22 08:15 Сейчас в теме
(18) Боюсь, в данном случае, поможет только общий модуль.
20. MaCCapAkIII 11.11.22 09:15 Сейчас в теме
(19) Вы про контекст ошибки? То есть строить свою конструкцию по обработке каждой конкретной ошибки?
21. Nicholas 872 11.11.22 09:19 Сейчас в теме
(20) Тут уже от ваших возможностей и фантазии зависит. Можно, например, отправлять на почту сообщения об определенных ошибках, или даже создавать задачу в системе учета заявок по видам ошибок.
22. MaCCapAkIII 11.11.22 09:24 Сейчас в теме
(21) Это понятно. Меня пока интересует масштабы задачи по обработке конкретной ошибки. Странно, что в 1С нет рабочего механизма по управлению интерфейсными оповещениями пользователя об ошибках. А механизм настраиваемых шаблонов по критериям ошибок из Функций для разработчика - это тоже слишком общий алгоритм, обрабатывающий все ошибки по конкретному критерию.
Оставьте свое сообщение

См. также

Версионирование объектов VS История данных

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Давайте разберемся в механизме «История данных» и поэкспериментируем для наглядности. Сравним «Версионирование объектов» и «Историю данных».

06.03.2023    3673    dsdred    34    

108

Оператор GOTO в 1С - табу или волшебная палочка?

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В ежедневной практике программирования на платформе 1С оператор Goto (Перейти) практически не встречается. Не удивительно, что половина специалистов даже не подозревает о существовании данного оператора. Ну, а знающим он внушает ужас, и его стараются избегать. Так что же это за редкий оператор, и для чего он нужен?

19.02.2023    5022    Dementor    72    

43

Идентификатор объекта в запросе. Вы этого хотели?

Запросы Механизмы платформы 1С Платформа 1С v8.3 Запросы Бесплатно (free)

В платформе 8.3.22 появилась возможность получать идентификатор в запросе. Лично я ждал этого давно, но по итогу ждал большего. Что не так?

12.01.2023    8329    dsdred    13    

63

Маленькие хитрости большой платформы (часть 1)

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

29.12.2022    3826    zeltyr    25    

39

Практическая шпаргалка по новым возможностям языка запросов 1С

Механизмы платформы 1С Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

В предлагаемой статье решил привести примеры применения новых возможностей языка запросов 1С, начиная с версии платформы 8.3.20.

21.11.2022    15002    quazare    34    

109

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

Асинхронное нечто, или так, как раньше!

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все же знают, что раньше было лучше! Возврат к истокам и погружение в детали...

23.10.2022    4372    starik-2005    38    

38

О цикле обратном замолвите слово...

Механизмы платформы 1С Языки и среды Платформа 1С v8.3 Платформа 1C v8.2 Бесплатно (free)

Однажды, написав статью, расписывающую достоинства 1С, я упомянул среди недостатков - мне не хватает "обратного цикла". При этом, столкнулся с непониманием - "а зачем тебе обратный цикл". Сегодня я отвечу на этот вопрос.

08.09.2022    5359    DrAku1a    69    

30

1С и Unicode

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Разбираемся, как 1С работает с текстом и отдельными символами в контексте Unicode.

05.09.2022    3739    Irwin    30    

80

Шпаргалка по функциям АСИНХ

Механизмы платформы 1С Платформа 1С v8.3 Россия Бесплатно (free)

При знакомстве с новой механикой работы с асинхронностью (обещание, ждать и асинх) делал пометки, которыми и хочу поделиться. Ничего сверхъестественного в них нет, просто небольшие примеры и некоторые всплывшие нюансы использования.

29.07.2022    13032    zeltyr    17    

137

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Экспертный кейс. История расследования одного небыстрого закрытия месяца в 1C:ERP. Пример неочевидных путей расследования в виде детективной истории

HighLoad оптимизация Механизмы платформы 1С Запросы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

В данной статье хотим рассказать об одном нашем непростом расследовании, в котором удалось собрать сразу несколько проблем на разных уровнях инфраструктуры заказчика и изначальной методологии ведения учета. Само расследование в какой-то момент стало напоминать детективную историю, с роялями в кустах, ошибками платформы, странным поведением пользователей и магическим поведением хорошо знакомых механизмов. Но мы реалисты, поэтому все проблемы были выявлены и устранены ;)

11.07.2022    5373    it-expertise    27    

56

Состав индексов с дополнительным упорядочиванием на уровне СУБД (MS SQL) при индексации реквизитов

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В момент обсуждения с коллегами работы индексов в 1С был затронут один из вопросов, который касался темы - каким образом происходит построение индексов при индексации реквизитов у объектов 1С (конкретнее, когда свойство реквизита "Индексировать" устанавливается в "Индексировать с доп. упорядочиванием"). Ранее я всегда опирался на знания, полученные в процессе чтения официальной документации от компании 1С, опубликованной на ITS. Наши мнения в этом вопросе разошлись и, как оказалось позже, мои знания не были актуальными, в итоге было проведено некоторое исследование по данному вопросу, чтобы выяснить истину.

15.06.2022    2715    sinichenko_alex    9    

33

Динамическое обновление - это зло?

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Копнем глубже в тему "Что же такое динамическое обновление" и почему оно может привести к проблемам. И может ли?

09.05.2022    16478    Infostart    77    

227

Об одной неочевидной проблеме перехода на версию платформы 8.3.20

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

При переходе на платформу 8.3.20 мы столкнулись с ошибкой "Повторяющийся псевдоним "Ссылка" Ссылка AS Ссылка,Presentation AS Presentation,Ссылка AS Ссылка" в ряде типовых конфигураций. Причём, эта проблема оказались неизвестна ни Яндексу, ни Гуглу. Путём мучительных экспериментов нам удалось найти решение. Пока я ещё не уверен, действительно это решение или обходной костыль, а настоящая проблема -- в чём-то другом, но это решение работает в ситуации, когда всё сломалось, а проблему надо решать срочно. Предположительная причина: платформа 8.3.20 более строго относится к типизации данных в запросах, чем предыдущие версии, вываливая в случае несоблюдения новшеств малопонятные ошибки.

08.04.2022    6255    Kernelbug    26    

34

Отборы динамического списка

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Динамический список предоставляет несколько объектов "Отбор". В статье разбирается, какой для чего нужен и как их использовать на форме. Рассматриваются только возможности платформы (без БСП).

28.03.2022    22852    Gladkov_Anton    5    

65

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Фишки платформы 1С 8.3 для начинающего разработчика

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В данной заметке рассмотрены вспомогательные инструменты платформы, которыми часто пренебрегают начинающие программисты 1С.

11.03.2022    10616    Dimbayyyy    98    

61

Экспертный кейс. Расследование деградации производительности системы. Проведение документа “Поступление товаров и услуг” (1С:ERP 2)

Механизмы платформы 1С Запросы HighLoad оптимизация Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

В ходе проведения нагрузочного тестирования одним из наших клиентов была выявлена сильная деградация производительности системы в целом и, в частности, выполнения ключевой операции “Проведение документа поступление товаров и услуг” в течение выполнения теста. Согласно данным подсистемы БСП “Оценка производительности”, время выполнения ключевой операции “Проведение документа поступление товаров и услуг” возрастало в процессе тестирования с 15-20 секунд в начале тестирования до 150-200 секунд в его финале.

02.03.2022    4018    it-expertise    48    

30

Модульная архитектура или пара слов о расширениях. Часть I (мысли, рассуждения)

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Статья-размышление о том, какое может быть применение технологии расширений 1С и зачем нам, разработчикам/программистам на 1С, знать общепринятые паттерны проектирования приложений. Итак, а что если я вам скажу, что технология расширений 1С - это одно из прекрасных новшеств компании 1С? Пусть эта статья будет хвалебной одой расширениям 1С.

14.02.2022    6471    amon_ra    67    

25

Синхронный и асинхронный вызов в новых версиях платформы

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Начиная с платформы 8.3.18.1128 переработана технология работы с асинхронными вызовами. В данной статье хочу описать новые асинхронные вызовы и сравнить их с предыдущими на примере функции - Вопрос на клиенте.

31.01.2022    6593    Shining_ninja    17    

35

Несколько простых приемов для удобной работы в конфигураторе

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Простая и удобная среда разработки 1С:Предприятия позволяет практически любому человеку начать работать под капотом 1С - в конфигураторе. Время идет, новички становятся программистами, специалистами, а об удобных приемах работы узнают годами, по ходу своего карьерного пути. А здорово было бы, если бы все знали удобные приемы в начале своего пути? Эти несколько приемов будут полезны новичкам, так как они затрагивают ту область работы, с которой приходится сталкиваться в начале карьеры.

12.11.2021    12095    acces969    95    

138

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Как спроектировать структуру регистра сведений

Механизмы платформы 1С Платформа 1С v8.3 Запросы Бесплатно (free)

«Что может быть проще?» — это первое, что приходит в голову. Но что, если это не так? В этой статье мы попробуем затронуть некоторые вопросы, которые могут возникнуть при проектировании больших регистров.

08.11.2021    8617    Neti    60    

108

Обработчик ожидания. Нюансы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

ПодключитьОбработчикОжидания: некоторые подробности и особенности работы

24.08.2021    24248    Yashazz    25    

62

Прогресс-бар в поле динамического списка

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Изображаем прогресс-бары в колонке динамического списка

23.08.2021    4461    Yashazz    13    

39

ПриПолученииДанныхНаСервере + Контекст формы. Лайфхак

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Передать свои произвольные данные в событие, которое "без контекста"? Легко!

13.08.2021    7089    Yashazz    16    

43

Новичок новичку: как добавить программно кнопку на форму путем расширения

Механизмы платформы 1С Платформа 1С v8.3 Россия Бесплатно (free)

Рассказываю очень простым языком, как добавить программно кнопку в типовую конфигурацию. Сам новичок в этом деле и рассказываю на "новичковом" языке.

13.05.2021    39402    user1312100    28    

69

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Программное создание расширения

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Создание нового расширения "на лету", только штатными средствами 1С.

06.04.2021    6931    Yashazz    16    

77

Советы из Желтой тетради 📒 #1

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В этой публикации я собрал в одном месте часть советов и лайфхаков, которые открыл для себя в последнее время. Регулярно я публикую их в своём телеграм-блоге "Жёлтая тетрадь 📒 Блог программиста 1С", здесь же - дайджест этих публикаций.

15.03.2021    6392    builin    120    

52

Расширенный автоподбор при вводе по строке в поле ввода в управляемых формах

Механизмы платформы 1С Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Началось все с того, что штатный автоподбор при вводе по строке в поле ввода для некоторых больших справочников устраивать перестал. Вообще, для способа поиска строки "Любая часть" он работает на первый взгляд очень хорошо: работает как полнотекстовый (т.е. по нескольким словам) даже без активации полнотекстового поиска, красиво подсвечивает слова поиска в результатах. Казалось бы, все отлично. Но есть неприятное ограничение - всего лишь 10 значений в результирующем списке (у вас может быть несколько больше, так как платформа неявно добавляет результаты поиска по истории ввода). Для небольших справочников или справочников с разнородным ассортиментом все хорошо. Но не в моей ситуации. А простых путей увеличить количество выдаваемых строк на момент написания статьи мне обнаружить не удалось. Пришлось полностью переопределять автоподбор. Ниже речь пойдет именно об этом. И, к слову, в типовых конфигурациях для некоторых справочников используются похожие приемы для увеличения количества строк результата автоподбора.

21.01.2021    10233    herfis    9    

48

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.

О формах 1С замолвите слово... Необычное использование знакомого всем объекта

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Неочевидно, но форму 1С можно использовать как универсальный объект, который доступен на клиенте и имеет уникальный набор свойств, методов, событий и конструктор, принимающий параметры. При этом у формы может не быть интерфейса, и ее можно даже не открывать. О реальных примерах применения такого подхода пойдет рассказ.

13.01.2021    10544    CyberCerber    46    

101

Наследование свойств элементов, или Как пользователь может сломать вашу форму

Механизмы платформы 1С Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Бесплатно (free)

В 1С можно установить свойства ТолькоПросмотр, Доступность и Видимость не только на элементы формы, но и на группы элементов. Но стоит ли так делать? Оказывается, пользователь может обойти запреты, которые установлены на папку. Об этом подробнее в видео.

12.01.2021    6412    SeiOkami    27    

111

Ускоряем медленный/долгий и тормозной стандартный поиск по динамическому списку, настраиваем его под себя

Механизмы платформы 1С Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Пользователи привыкли искать на форме списка, но, вбивая в поиск некорректные данные, могут завесить всю систему, а если еще искать нужно по НЕ полям списка, то решение только в своём поиске - все это решим в публикации с открытым кодом.

14.12.2020    39701    SizovE    2    

40

Передача параметров по значению в языке 1С

Механизмы платформы 1С Платформа 1С v8.3 ИТ-компания Бесплатно (free)

Все мы знаем, что в 1С можно написать такое: Процедура ОбработатьОбъект(Знач Объект) КонецПроцедуры Т.е. тем самым мы передаем в процедуру параметр по значению Далее в статье будут рассмотрены некоторые особенности передачи по значению объектов НЕпримитивных типов.

26.11.2020    6124    direktorSan    9    

29

Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий "НачалоВыбора", "Автоподбор")

Механизмы платформы 1С Платформа 1С v8.3 Управляемые формы Бесплатно (free)

Зачастую возникает необходимость ограничить вывод элементов какого-нибудь справочника или перечисления при редактировании поля ввода (отфильтровать доступные для выбора элементы) эта публикация показывает простой и эффективный способ реализации этого.

15.11.2020    16521    Eugen-S    11    

69

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Групповое изменение реквизитов объектов расширений

Механизмы платформы 1С Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бесплатно (free)

Доработка встроенной обработки "Групповое изменение реквизитов" для возможности изменения ссылочных реквизитов с ссылками на объекты расширения. Работает в Комплексной конфигурации 2.4.

07.11.2020    3221    Alfn    14    

23

Лайфхаки для разработчиков 1С. Часть 1

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Россия Бесплатно (free)

Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое. В этой статье публикуем первую часть.

30.09.2020    9393    Neti    47    

68

Контекст любого объекта конструкцией #Если Фамилия Тогда

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Делаем инициализацию переменной в "своей" инструкции препроцессора, для получения контекстной подсказки объекта через точку. В дальнейшем в компилированном коде сама инициализация игнорируется, т.к. "своя" инструкция препроцессора НИКОГДА не выполняется.

17.08.2020    3527    sapervodichka    36    

25

Новое отображение ошибок в 1С

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим развитие механизма отображения ошибок в 1С (начиная с 8.3.17)

10.08.2020    37690    SeiOkami    45    

145

Динамический список, ключи записей. Нюансы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Заметки об особенностях динамических списков с произвольным запросом и видом ключа, отличным от "Авто"

07.08.2020    11159    Yashazz    6    

23