Шаблоны для применения cтандартов и методик разработки конфигураций 1С

25.09.23

Разработка - Рефакторинг и качество кода

Готовые шаблоны текста для применения cтандартов и методик разработки конфигураций 1С, инструментарий. Версия платформы 8.3.22.1851.

Скачать файлы

Наименование Файл Версия Размер
Шаблоны для применения cтандартов и методик разработки конфигураций 1С.:
.rar 43,63Kb
34
.rar 1.1.2 43,63Kb 34 Скачать
Шаблоны для применения cтандартов и методик разработки конфигураций 1С:
.rar 44,58Kb
14
.rar 1.1.3 44,58Kb 14 Скачать

Коллеги, добрый день, в продолжение темы Применение cтандартов и методик разработки конфигураций на практике предлагаю вашему вниманию уже готовые шаблоны текста для применения cтандартов и методик разработки конфигураций 1С, работают на версии платформы 8.3.22.1851. В шаблонах содержится код с примерами, в некоторых случаях краткое пояснение (комментарии), как следует писать, а как будет неверно, текстовка взята с офиц. сайта 1С. Некоторые короткие можно сразу применять в коде, некоторые с пояснениями можно формировать отдельно и брать необходимую часть и адаптировать в рабочий код. Основная цель шаблонов - ускорить и облегчить применение стандартов сразу в коде или использовать как справочник - помощник для корректировки кода и т.д.

Часть шаблонов сгруппированы для быстрого поиска, например: 

Ст_Запрос(ы)<ДетальнаяРасшифровка>, Ст_Локализация<ДетальнаяРасшифровка>, Ст_Блокировки(а)<ДетальнаяРасшифровка> и т.д. скрины ниже:

 

 

Можно использовать как справочник-помощник:

 

 

Список шаблонов:

 

Добавлены шаблоны:

Ст_ОткрытиеФормыСОповещением

Ст_ИменаРолей

Ст_СообщениеИнформацияОбОшибке

Ст_СообщениеКлиентИнформацияОбОшибке

Ст_ЛокализацияНСтр

Ст_ЗакомментированныйКод

Ст_ЗапросИспользованиеСсылки

Ст_ИнициализацияПарамВложенныхМетодов

Ст_ПоказатьВыборИзСпискаСОповещением

Ст_ПоказатьВыборИзМенюСОповещением

Ст_ПоказатьПредупреждениеСОповещением

Ст_ПоказатьВопрос

Ст_УстановитьПривилегированныйРежим

Ст_ЗапросИспКомментарияДляПомещенияВоВремТаб

Ст_УдалениеЭлементаКоллекции

Ст_ТекущаяДатаСеанса

Ст_ОбменДаннымиЗагрузка

Ст_ТранзакцияЯвнаяЗаписьВЖурналРегистрации

Ст_ТранзакцияЯвнаяВызватьИсключение

Ст_ЗаписьВЖурналРегистрацииБСП

Ст_ЗаписьВЖурналРегистрацииБезБСП

 

Обновления.

Версия 1.1.3 описание изменений:

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

    2. Добавлено окончание Описание в конец названия шаблона для описательных шаблонов с пояснением. Если шаблон  сразу применим в коде то он идет без окончания Описание.

Добавлены шаблоны:

Ст_ЗначенияРеквизитовОдногоОбъекта

Ст_ЗначениеОдногоРеквизитаОдногоОбъекта

Ст_ЗначенияНесколькихРеквизитовЭлементовОдногоТипа

Ст_ЗначениеОдногоРеквизитаЭлементовОдногоТипа

Ст_ЗапросРазыменованиеРегистрНакопления

Ст_ЗапросРазыменованиеРегистрСведений

Ст_ЗапросРазыменованиеРегистрБухгалтерии

Ст_ЗапросРазыменованиеРегистрРасчета

Ст_БлокировкаСправочникаУправляемая

Ст_БлокировкаДокументаУправляемая

Ст_СсылкаСуществует

Ст_ПоказатьПредупреждение

Ст_ЗагрузкаMXL_в_ТаблЗначений

 

Примеры шаблонов:  

 
 Ст_ЗапросыРазыменованиеПолей

 

Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|	ВЫБОР
|		КОГДА Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
|			ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Номер
|		КОГДА Продажи.Регистратор ССЫЛКА Документ.ЗаказКлиента
|			ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.ЗаказКлиента).Номер
|	КОНЕЦ КАК Номер,
|	ВЫБОР
|		КОГДА Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
|			ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата
|		КОГДА Продажи.Регистратор ССЫЛКА Документ.ЗаказКлиента
|			ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.ЗаказКлиента).Дата
|	КОНЕЦ КАК Дата,
|	Продажи.ВРезерве КАК ВРезерве,
|	Продажи.КОтгрузке КАК КОтгрузке
|ИЗ
|	РегистрНакопления.ТоварыКОтгрузке КАК Продажи
|ГДЕ
|	(Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
|			ИЛИ Продажи.Регистратор ССЫЛКА Документ.ЗаказКлиента)";

 

 

 
 Ст_БезопасностьПОВызывЧерезОткрытыеИнтерфейсы

 

// В частности, перед программным открытием документов Microsoft Word и Microsoft Excel 
// через COM следует запрещать исполнение макросов. 
// Иначе это может привести к выполнению вредоносных макросов (вирусов),
// если таковые присутствуют в документе.
// НЕПРАВИЛЬНО открывать документ Microsoft Word по умолчанию:
ОбъектWord = Новый COMОбъект("Word.Application");
Документ = ОбъектWord.Documents.Open(ИмяФайла);
// ПРАВИЛЬНО открывать документ Microsoft Word с отключением макросов:
ОбъектWord = Новый COMОбъект("Word.Application");
ОбъектWord.WordBasic.DisableAutoMacros(1);
Документ = ОбъектWord.Documents.Open(ИмяФайла);
// ПРАВИЛЬНО открывать документ Microsoft Excel с отключением макросов:
ОбъектExcel = Новый COMОбъект("Excel.Application");
ОбъектExcel.AutomationSecurity = 3; // msoAutomationSecurityForceDisable = 3
Документ = ОбъектExcel.Workbooks.Open(ИмяФайла);
// Проверку наличия подписи макросов в документах Microsoft Word можно реализовать так:
ОбъектWord = Новый COMОбъект("Word.Application");
ОбъектWord.WordBasic.DisableAutoMacros(1); // Отключить автозапуск
Документ = ОбъектWord.Documents.Open(ФайлДокумента);
Если Документ.VBASigned Тогда
	ОбъектWord.WordBasic.DisableAutoMacros(0); // Включить автозапуск
	Документ.RunAutoMacro(2); // wdAutoOpen = 2
Иначе
	Документ.Close();
	ВызватьИсключение НСтр(" ru = 'Документ не подписан. Открытие отменено.'");
КонецЕсли;
// Проверку наличия подписи макросов в документах Microsoft Excel можно реализовать так:
ОбъектExcel = Новый COMОбъект("Excel.Application");
ИсходныйУровеньБезопасности = ОбъектExcel.AutomationSecurity;
ОбъектExcel.AutomationSecurity = 3; // msoAutomationSecurityForceDisable = 3
Документ = ОбъектExcel.Workbooks.Open(ФайлДокумента);
ОбъектExcel.AutomationSecurity = ИсходныйУровеньБезопасности;
Если Документ.VBASigned Тогда
	Документ.Close();
	Документ = ОбъектExcel.Workbooks.Open(ФайлДокумента);
Иначе
	Документ.Close();
	ВызватьИсключение НСтр(" ru = 'Документ не подписан. Открытие отменено.'");
КонецЕсли;

 

 
 
 Ст_БлокировкаОтветственноеЧтение

 

// Неправильно:
// 1. Прочитать регистр сведений
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаметкиПоПредмету.КоличествоЗаметок КАК КоличествоЗаметок
|ИЗ
| РегистрСведений.ЗаметкиПоПредмету КАК ЗаметкиПоПредмету
|ГДЕ
| ЗаметкиПоПредмету.Предмет = &Предмет");
Запрос.УстановитьПараметр("Предмет", ПредметЗаметок);
Выборка = Запрос.Выполнить().Выбрать();
КоличествоЗаметок = 0;
Если Выборка.Следующий() Тогда
	КоличествоЗаметок = Выборка.КоличествоЗаметок;
КонецЕсли;
// 2. Записать в регистр сведений
НаборЗаписей = РегистрыСведений.ЗаметкиПоПредмету.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Предмет.Установить(ПредметЗаметок);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Предмет = ПредметЗаметок;
НоваяЗапись.КоличествоЗаметок = КоличествоЗаметок + 1;
НаборЗаписей.Записать();

// Правильно:
// 1. Начать транзакцию для пакета из двух операций чтения и записи регистра
НачатьТранзакцию();
Попытка
	// 2. Установить исключительную блокировку на интересующий диапазон записей регистра,
	// для того чтобы гарантировать, что в момент записи количество заметок не изменилось с момента чтения в каком-либо другом сеансе.
	БлокировкаДанных = Новый БлокировкаДанных;
	ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("РегистрСведений.ЗаметкиПоПредмету");
	ЭлементБлокировкиДанных.УстановитьЗначение("Предмет", ПредметЗаметок);
	ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
	БлокировкаДанных.Заблокировать();
	// 3. Прочитать регистр сведений
	Запрос = Новый Запрос(
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	| ЗаметкиПоПредмету.КоличествоЗаметок КАК КоличествоЗаметок
	|ИЗ
	| РегистрСведений.ЗаметкиПоПредмету КАК ЗаметкиПоПредмету
	|ГДЕ
	| ЗаметкиПоПредмету.Предмет = &Предмет");
	Запрос.УстановитьПараметр("Предмет", ПредметЗаметок);
	Выборка = Запрос.Выполнить().Выбрать();
	КоличествоЗаметок = 0;
	Если Выборка.Следующий() Тогда
		КоличествоЗаметок = Выборка.КоличествоЗаметок;
	КонецЕсли;
	// 4. Записать в регистр сведений
	НаборЗаписей = РегистрыСведений.ЗаметкиПоПредмету.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Предмет.Установить(ПредметЗаметок);
	НоваяЗапись = НаборЗаписей.Добавить();
	НоваяЗапись.Предмет = ПредметЗаметок;
	НоваяЗапись.КоличествоЗаметок = КоличествоЗаметок + 1;
	НаборЗаписей.Записать();
	ЗафиксироватьТранзакцию(); // Пишем всегда перед словом Исключение
Исключение
	// 5. Если при установке блокировки возникла исключительная ситуация из-за того, что регистр уже заблокирован в другом сеансе (или по другим причинам),
	// отменить транзакцию и записать сведения об ошибке в журнал регистрации.
	ОтменитьТранзакцию(); // Пишем сразу после слова Исключение
	ЗаписьЖурналаРегистрации(НСтр(" ru = 'Заметки'", ОбщегоНазначения.КодОсновногоЯзыка()),       // записывать в ЖР с ВызватьИсключение не нужно 
	    УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); // без ВызватьИсключение пишем в ЖР
	ВызватьИсключение; // есть внешняя транзакция
КонецПопытки;

 

 

 

Примечание.

В шаблоны не вошли некоторые стандарты, например, по проектированию интерфейсов.

 

Краткая инструкция по подключению шаблонов.    

Шаблоны тексты подключаются в конфигураторе через Сервис - Параметры, вкладка Модули - Контекстная подсказка, нужно включить флаг "Включить шаблоны в список подсказок", скрин:

 

   

Далее добавляем шаблоны из публикации. Копируем файл шаблонов в любое место вашего компьютера или сервера где они будут надежно храниться и прописываем путь к этим шаблонам из конфигуратора пункт меню Сервис - Шаблоны текста, далее как на скрине ниже:

 

 

 

Все готово к работе, вызываем в модуле, пишем префикс ст, ctrl + Пробел, в контекстном меню подбираем нужный шаблон.

Примечание.

Так же можно использовать шаблоны вместе со стандартными тогда флаг "Использовать стандартные шаблоны" снимать не нужно.

 

Также предлагаю решения вашему вниманию:

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3.

Правила обмена данными из конфигурации "1С:Управление производственным предприятием 1.3" в "1С:Бухгалтерия предприятия 3.0".

Правила обмена данными из Бухгалтерии предприятия ред. 3.0 в Управление производственным предприятием ред. 1.3 для выгрузки платежных документов и связанных объектов.

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

Универсальная выгрузка и загрузка зарегистрированных справочников и документов по узлу.

Обработка по заполнению данных об автомобилях с сайта gibdd.ru, для конфигурации "Альфа - Авто: Автосалон+Автосервис+Автозапчасти ПРОФ, редакция 5.1".

Загрузка данных из унифицированных форм УПД и ТОРГ-12.

Список документов и их количество в базе.

Система стандартов и методик разработки конфигураций соглашения при написании кода оформление модулей структура модуля шаблоны текста.

См. также

Реструктуризация - бесконечная история

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

При разработке программ требуемый функционал ставят на первое место, но есть еще и архитектура программы. На горизонте 5-10 лет она становится важнее функционала, который должен работать при масштабировании и росте данных. Реструктуризация 5 терабайтной базы 1С 8.2 в формат 1С 8.3, складывает весь пазл архитектурных просчетов, которые сделали ради функционала. Как это исправить? - для разработки правильной архитектуры, нужно всего лишь сместить фокус с функционала и подумать о «вечном».

29.09.2023    263    1CUnlimited    1    

2

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 2

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

27.09.2023    1756    Lemmonbri    66    

17

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 1

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

19.09.2023    2076    Lemmonbri    14    

20

5 подходов при доработке конфигурации 1С, чтобы в будущем не было мучительно больно её обновлять

Анализ и проектирование ИТ-систем Рефакторинг и качество кода Обновление 1С Платформа 1С v8.3 Бесплатно (free)

Нашей компании часто приходится сталкиваться с обновлением конфигураций разной степени переписанности. Какие-то из них обновляются легко, какие-то — не очень. Расскажем о некоторых принципах модификации программы, которые помогут сделать последующий процесс обновления легче. Или тяжелее, если стараться их не соблюдать.

10.08.2023    7508    1c-izhtc    36    

16

Задача на ошибки и неоптимальности при проведении приходной накладной

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Задачу эту дают на собеседованиях, видимо, те франчи, которые не в состоянии оценить человека по резюме и в ходе беседы. По идее задачи, подобные этой, должны давать начинающим студентам. Но дают всем подряд. Итак: мои 5 копеек. Критика приветствуется.

11.07.2023    1629    magic1s    31    

9

Тормозит на ровном месте, или на чем может споткнуться PostgreSQL

HighLoad оптимизация Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

Прилетела интересная задача с примером, когда одно и то же действие выполняется на MS SQL за 1 минуту и около часа на Postgre SQL 14. Вот и решил поделиться занимательным опытом расследования причин вышеупомянутой проблемы. Ну и посмотреть вскользь на модуль ERP "1С:Хлебобулочное и кондитерское производство".

30.06.2023    2250    zeltyr    14    

13

Нестандартные приемы безопасной разработки и эксплуатации ПО на платформе 1С, категория "18+"

HighLoad оптимизация Рефакторинг и качество кода Администрирование СУБД Бесплатно (free)

Готовы погрузиться в недетское программирование и шКОДИТЬ по-взрослому? О том, как повысить безопасность разработки и эксплуатации ПО через изощренные способы подключения к платформе 1С, на конференции Infostart Event 2022 Saint Petersburg рассказал Юрий Лазаренко.

19.06.2023    1915    TitanLuchs    6    

20

Ревьювер. Инструмент для проведения code review

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Если вы работаете в команде разработчиков, то, вероятно, знакомы с процессом код-ревью. Это необходимый шаг в разработке программного обеспечения, который помогает выявить ошибки и улучшить качество кода. Однако, процесс ревью может занимать много времени и быть довольно утомительным, особенно на ранних этапах разработки. Мы столкнулись с этими проблемами в команде и решили упростить процесс код-ревью с помощью внутреннего инструмента. Он значительно облегчил процесс ревью на определенном этапе работы и сократил время на рутинную работу. В результате, мы смогли значительно упростить процесс код-ревью в команде, что сэкономило время и улучшило качество кода.

16.05.2023    3624    leobrn    12    

51
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1438 05.06.23 14:37 Сейчас в теме
Поставил минус за мега-цену в 5 стартмани за скопипащенный файл шаблонов и дублирование 2х публикаций
корум; stas_ganiev; wild83; Lemmonbri; buganov; CSiER; Rafaraf; IntellXeon; CTAC1287; Andreeei; itoptimum; +11 6 Ответить
2. kser87 2390 05.06.23 15:05 Сейчас в теме
(1) просто интересно, каким образом у вас ценообразование работает?
improg; PowerBoy; +2 Ответить
3. improg 521 05.06.23 16:14 Сейчас в теме
(1) Не совсем скопипащенного, в шаблонах идет выжимка основного материала с примерами, разработчику остается набрать шаблон, прочитать краткое описание (там где оно есть), адаптировать и удалить комменты. По поводу цены соизмеряю трудозатраты + временные затраты, не считаю что это мега-цена, можно месяц посидеть поизучать самому (с учетом того что еще работу делать надо), законспектировать.
ivnik; Global__IT; Светлый ум; +3 Ответить
4. Lemmonbri 58 05.06.23 16:36 Сейчас в теме
(1) Ну тут вечные 2 противостояния: те, кто за развитие комьюнити, и те, кто пытается заработать на комьюнити. Кто за развитие и опен сорс проекты делает, и на гитхаб выкладывает, это куча народу. А кто пытается заработать, тот "соизмеряет трудозатраты". Как хорошо что в 1С первых больше.
mrChOP93; RayCon; artbear; KereberoS; Kesak; Sancho-R; sdaf; user1876070; itoptimum; +9 1 Ответить
7. kser87 2390 07.06.23 14:36 Сейчас в теме
(4) кто хочет развития, тот развивает. Кто хочет заработать, тот зарабатывает. Почему последние вызывают негатив?
Global__IT; biimmap; improg; +3 Ответить
8. Lemmonbri 58 07.06.23 14:37 Сейчас в теме
(7)
(7) У меня не вызывает негатива, просто классифицировал так людей, чтобы убрать негатив с 1 коммента.
9. Lemmonbri 58 07.06.23 14:40 Сейчас в теме
(8) Возможно вы подумали что моя фраза "Как хорошо что в 1С первых больше." означает негатив, но это не так. Если тех, кто хочет развиваться больше - то и развитие идет быстрее. А если все будут зарабатывать то развиваться будем по крупинке в год. Наоборот, этой фразой я подчеркиваю что в компьюнити сейчас хороший баланс. Не забывают о коммерции, но и развивают. Отлично же!
11. kser87 2390 07.06.23 15:51 Сейчас в теме
(9) так и подумал. Я лично вообще не вижу связи между зарабатыванием и развитием. Ничего не мешает коммерциализировать развитие.
12. biimmap 1393 08.06.23 12:11 Сейчас в теме
(4) Заходите в мой профиль))) Там бесплатно, но плюсы надо ставить!)

В целом можно так снегативить и в отношении раздела обучение. Целый отдел зарабатывает деньги на сообществе. Но это нормально!
improg; mrChOP93; +2 Ответить
6. artbear 1438 07.06.23 12:25 Сейчас в теме
(1) я написал комментарий, чтобы было понятно, за что и как я поставил минус.
без комментария минусовать неправильно.

минус - это моя личная субъективная оценка. ее причины я привел.
с моей оценкой не обязательно соглашаться )

указанные стартмани - это цена, которую выставляет автор\продавец товара
я как возможный потребитель товара с этой ценой не согласен и потому не куплю.
mrChOP93; Lemmonbri; +2 Ответить
13. biimmap 1393 08.06.23 12:20 Сейчас в теме
(1) Артур, никто ж не говорит про мега-цену для Infostart-toolkit? Вот мне непонятно почему он стоит дороже косаря...

Но т.к. я знаю сколько стоит час работы программиста я не задаю таких вопросов и не пишу нигде что цена завышена. Просто дорого лично для меня. Зачем это тиражировать на всех?

У меня эти 2 публикации вызывают смешанные чувства.
-- С одной стороны человек зашел в стандарты, крепенько их изучил, собрал инфу оттуда и перенес в шаблоны, чтоб можно было быстро использовать нужный шаблон.
-- С другой стороны непонятно зачем 2 публикации
-- С третьей брать деньги за материал с ИТС для меня странно. Понимаю, что автор берет деньги за потраченное время... Но ведь за статью же начислили $m за плюсы и объём? Меня это обычно удовлетворяет.

И немного название публикации второй не соответствует описанному. Ведь практика - это не инструкция как скопировать кусок кода, надо ж описать реальную задачу, которую решает этот кусок кода.
15. artbear 1438 08.06.23 13:40 Сейчас в теме
(13)
Артур, никто ж не говорит про мега-цену для Infostart-toolkit? Вот мне непонятно почему он стоит дороже косаря...

мое личное мнение как обычного покупателя - его цена также завышена )
хотя продукт очень хорош.
но ведь активно покупают, значит, мое мнение по цене не совсем верно.

Но т.к. я знаю сколько стоит час работы программиста я не задаю таких вопросов и не пишу нигде что цена завышена. Просто дорого лично для меня. Зачем это тиражировать на всех?

еще раз - я поставил минус и прокомментировал, почему я минусанул, т.к. минусовать без комментария считаю некорректным
14. biimmap 1393 08.06.23 12:24 Сейчас в теме
(1) И кстати, я вот 2 статьи по контактной информации опубликовал... Вообще бесплатно! И куча кода в придачу... Но ты даже не читал)
Это к тому, что раз ты ценишь адекватное соотношение цена-качество, то почему даже не смотришь?)
16. artbear 1438 08.06.23 13:41 Сейчас в теме
(14)
И кстати, я вот 2 статьи по контактной информации опубликовал... Вообще бесплатно! И куча кода в придачу... Но ты даже не читал)
Это к тому, что раз ты ценишь адекватное соотношение цена-качество, то почему даже не смотришь?)

а мне пока неинтересны знания по контактной информации, поэтому и не читаю )
17. biimmap 1393 08.06.23 13:56 Сейчас в теме
(16)
а мне пока неинтересны знания по контактной информации,


)))
5. improg 521 07.06.23 12:08 Сейчас в теме
Опубликуйте тогда шкалу оценки своих публикаций на ИС, как оценивать, какая публикация стоит 1 см, какая 2 см, а какая 10 см, оценил субъективно, модерацию прошла, публикацию создал по запросам предыдущей публикации.
10. Lemmonbri 58 07.06.23 14:43 Сейчас в теме
(5) У меня подход следующий: если я выкладываю для развития компьюнити, либо бесплатно, либо 1 см. Если хочу заработать, то по трудозатратам минус процент за тиражность (10-20%). Я полагаю что по трудозатратам у вас намного больше сумма вышла, чем 5 см. Но вы так же хотели и помочь комьюнити. Вы где то посерединке решили расположиться, как мне кажется) Для меня промежуточного состояния не существует. Но это опять же только мой субъективный подход.
18. improg 521 11.06.23 12:52 Сейчас в теме
Поясню что авторы минусов статьи не скачивали шаблоны. Я всегда их использую в работе, они реально помогают написать мне наиболее качественный и читабельный код.
19. biimmap 1393 11.06.23 19:34 Сейчас в теме
(18) По своему опыту могу сказать, что все кто ставит минусы не вникают в написанное и не скачивают файлы если они есть)))

Для того, чтоб их не расстраивать своим творчеством, я их заблокировал)))
"честного" минуса на моих публикациях пока что нет!
20. kuzyara 1766 16.06.23 06:33 Сейчас в теме
Исключение
	// 5. Если при установке блокировки возникла исключительная ситуация из-за того, что регистр уже заблокирован в другом сеансе (или по другим причинам),
	// отменить транзакцию и записать сведения об ошибке в журнал регистрации.
	ОтменитьТранзакцию();
	ЗаписьЖурналаРегистрации(НСтр("ru = 'Заметки'", ОбщегоНазначения.КодОсновногоЯзыка()), 
	    УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
	ВызватьИсключение;
КонецПопытки;
Нужна ли запись в ЖР при использовании метода ВызватьИсключение? Не вызовет ли это дублирование сообщения об ошибке?
21. improg 521 16.06.23 08:42 Сейчас в теме
(20) ВызватьИсключение рекомендуют писать если есть внешняя транзакция если ее нет данная строчка не нужна, напишу коммент в шаблонах. Запись в ЖР думаю нужна всегда прежде всего самому разработчику или поддержке для того чтобы понять причину.

при использовании вложенных транзакций (см. п. 1.4) в конце блока Исключение рекомендуется добавить оператор ВызватьИсключение. В противном случае исключение не будет передано выше по стеку вызовов, там не сработает обработка исключения, внешняя транзакция не будет явным образом отменена и платформа вызовет исключение «В данной транзакции происходила ошибка»
22. kuzyara 1766 16.06.23 09:42 Сейчас в теме
(21) Тогда почему в типовых при пробросе исключения после отмены транзакции запись в ЖР не делают?
В большинстве случаев используется:
Исключение
    ОтменитьТранзакцию();
    ВызватьИсключение;
КонецПопытки;
24. improg 521 16.06.23 11:11 Сейчас в теме
(22) Опять таки шаблон это некая заготовка которую разработчик может отредактировать, например если он убирает ВызватьИсключение, тогда запись в ЖР нужно оставить + вывести ИнформациюОбОшибке пользователю и наоборот.
23. improg 521 16.06.23 10:24 Сейчас в теме
(22) Согласен, видимо в последних версиях платформы пишется неявно в ЖР, тогда да запись в ЖР не обязательно писать с ВызватьИсключение, в частности версия платформы 8.3.22.1851. Возможно на более ранних релизах этого не было. Спасибо.
25. kuzyara 1766 19.06.23 08:52 Сейчас в теме
(23) причем тут версия платформы? неперехваченные ошибки всегда писались в ЖР
26. improg 521 19.06.23 09:04 Сейчас в теме
(25) Это я уже понял, вот только не пойму почему в документации пишут так:

Правильно записывать в журнал регистрации подробное представление исключения, а краткое представление добавлять в текст сообщения пользователю:

&НаСервере
Процедура ВыполнитьОперацию()
Попытка
// код, приводящий к вызову исключения
....
Исключение
// Запись события в журнал регистрации для системного администратора.
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
УровеньЖурналаРегистрации.Ошибка,,,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Показать


ссылка на источник Перехват исключений в коде.
27. kuzyara 1766 19.06.23 09:13 Сейчас в теме
(26) потому что на клиенте нет метода "ЗаписьЖурналаРегистрации",
&НаКлиенте
Попытка
    ВыполнитьОперацию();
Исключение
    ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
    ПоказатьПредупреждение(,НСтр("ru = 'Операция не может быть выполнена по причине:'") + Символы.ПС + ТекстСообщения);
КонецПопытки;
чтобы можно было записать полный текст ошибки, перед тем как подавим и изменим на текст на понятный пользователю.

Информация с этой страницы ИТС: Перехват исключений в коде содержит редкий кейс когда исключение перехватывается на клиенте - что вводит в заблуждение и только усугубляет неразбериху
28. improg 521 19.06.23 09:16 Сейчас в теме
(27) То что на клиенте нет записи ЖР это понятно, пишет то на сервере он ее. И у себя я тоже этот момент проверил на форме. Вообщем на практике я понял что если писать ВызватьИсключение то в ЖР дублировать запись не имеет смысла, если без ВызватьИсключение то тогда нужно производить запись в ЖР с подробным представлением об ошибке.

Вот еще источник Транзакции: правила использования
предпоследний пункт (рекомендуется в блоке Исключение делать запись в журнал регистрации;):

При использовании транзакций необходимо предусмотреть обработку исключений, придерживаясь следующих правил:

метод НачатьТранзакцию должен быть за пределами блока Попытка-Исключение непосредственно перед оператором Попытка;
все действия, выполняемые после вызова метода НачатьТранзакцию, должны находиться в одном блоке Попытка, в том числе чтение, блокировка и обработка данных;
метод ЗафиксироватьТранзакцию должен идти последним в блоке Попытка перед оператором Исключение, чтобы гарантировать, что после ЗафиксироватьТранзакцию не возникнет исключение;
необходимо предусмотреть обработку исключений – в блоке Исключение нужно сначала вызвать метод ОтменитьТранзакцию, а затем выполнять другие действия, если они требуются;
рекомендуется в блоке Исключение делать запись в журнал регистрации;
при использовании вложенных транзакций (см. п. 1.4) в конце блока Исключение рекомендуется добавить оператор ВызватьИсключение. В противном случае исключение не будет передано выше по стеку вызовов, там не сработает обработка исключения, внешняя транзакция не будет явным образом отменена и платформа вызовет исключение «В данной транзакции происходила ошибка»


и ниже кусок кода

Пример

НачатьТранзакцию();
Попытка
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Документ.ПриходнаяНакладная");
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", СсылкаДляОбработки);
ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
БлокировкаДанных.Заблокировать();

... // чтение или запись данных

ДокументОбъект.Записать();

ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();

ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
УровеньЖурналаРегистрации.Ошибка,
,
,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));

ВызватьИсключение; // есть внешняя транзакция

КонецПопытки;
Показать


и далее еще кусок кода:

Правильно

НачатьТранзакцию();
Попытка
РегистрыСведений.КурсыВалют.УстановитьИспользованиеИтогов(Ложь);

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ВалютаСсылка);
НаборЗаписей.Загрузить(ТаблицаКурсов);
НаборЗаписей.ОбменДанными.Загрузка = Истина;

НаборЗаписей.Записать();

РегистрыСведений.КурсыВалют.УстановитьИспользованиеИтогов(Истина);

ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;

РегистрыСведений.КурсыВалют.ПересчитатьИтоги();
Показать
32. improg 521 17.07.23 09:42 Сейчас в теме
(27) да это редкий случай и работает правильно т.к. описан в примере Перехват исключений в коде, хороший кейс нужно взять на вооружение.
29. untru 13 26.06.23 01:10 Сейчас в теме
есть 2 см а очень хочется, выложите вариант для не имущих))))))
30. improg 521 26.06.23 18:33 Сейчас в теме
(29) Таких нет, если только эту цену снизить, предлагаю середину 3 см?
31. untru 13 05.07.23 14:36 Сейчас в теме
(30) так нет 3х то))) есть только 2)
34. improg 521 18.07.23 09:58 Сейчас в теме
(31) Поставил 2 см.
33. improg 521 17.07.23 09:49 Сейчас в теме
(28) Тут при проверке не совсем как в примере проверил Перехват исключений в коде, не обернул в исключение на клиенте, если оборачивать на клиенте в попытку то в попытке на сервере нужно писать в ЖР.
Оставьте свое сообщение