Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Начало и конец области в коде

Начало и конец области в коде
Я
   vsg-work
 
11.03.21 - 09:09
Здравствуйте, уважаемые коллеги.

Хочу узнать ваше профессиональное мнение по поводу размещения областей на 8.3.

Насколько правильно будет, если размещать области внутри процедуры или функции? Или это некорректно, и области нужно создавать только для группировки функций и процедур?
У меня следующий код, и правильно ли это?


&НаСервере
Процедура ВыгрузитьДанныеВЛюбимыйДомНаСервере()
// Справочники
ДокПриемник.Организация = Открытие.Справочники.Организации.FindByCode("00-000001");
ДокПриемник.СостояниеЗаказа = Открытие.Справочники.СостоянияЗаказовПокупателей.FindByDescription("Завершен");
ДокПриемник.СтруктурнаяЕдиницаПродажи = Открытие.Справочники.СтруктурныеЕдиницы.FindByDescription("Подразделение");
ДокПриемник.СтруктурнаяЕдиницаРезерв = Открытие.Справочники.СтруктурныеЕдиницы.FindByDescription("Основной - Русский Лес");
ДокПриемник.Источник = Открытие.Справочники.ИсточникРекламы.FindByDescription("Русский Лес");
        
        
#Область СозданиеКонтрагента
// Контрагент
Контрагент = Открытие.Справочники.Контрагенты.FindByCode(Объект.Контрагент.Код);
Если Контрагент.Пустая() Тогда
КонтрагентПриемник = Открытие.Справочники.Контрагенты.CreateItem();
Иначе
КонтрагентПриемник = Контрагент.GetObject();
КонецЕсли;
#КонецОбласти
КонецПроцедуры
   Волшебник
 
1 - 11.03.21 - 09:11
области есть, лесенки нет
   mikecool
 
2 - 11.03.21 - 09:11
код должен соответствовать политике разработки
все остальное от лукавого
   Kassern
 
3 - 11.03.21 - 09:18
(0) А можно объяснить why писать code то русскими letters, то английскими (Справочники.Организации.FindByCode("00-000001"))? Какой в этом сакральный смысл?
   vsg-work
 
4 - 11.03.21 - 09:21
(3) Работаю с COMConnector, не поддерживает функции на кириллице
   Hans
 
5 - 11.03.21 - 09:30
Создание областей внутри процедуры я не приветствую. Только для группировки процедур и функций.
   Галахад
 
6 - 11.03.21 - 09:31
(0) Есть мнение, что процедуры/функции желательно делать не очень крупными. Значит и области там не особо нужны.
   Hans
 
7 - 11.03.21 - 09:33
>> #Область СозданиеКонтрагента


Ты это должен вывнести в отдельную функцию "НайтиСоздатьКонтрагента".
   Dmitrii
 
8 - 11.03.21 - 09:39
(0) Редкостный *авнокод.
ИМХО, гораздо важнее содержание и смысл кода, чем то как именно он структурирован.
Потому что, если код грамотно написан, то его правильная структура приходит сама собой.

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

Аргументы из (4) звучат как-то не очень убедительно.
И вообще что касается работы через COM, то, ИМХО, использовать его можно только в двух случаях. Когда другого выхода нет (от безысходности) или когда надо написать какую-то одноразовую(!) простую обработку с подключением к другой базе и заморачиваться с нормальными механизмами нет времени и необходимости (потому что одноразовая история). Но для одноразовых разработок никто не заморачивается с оформлением и структурированием кода.

Про *авнометоды типа "НайтиПоКоду" и "НайтиПоНаименованию" я вообще молчу. За это публично расстреливать надо.
   Kassern
 
9 - 11.03.21 - 09:47
(4) Попробуй использовать вебсервисы для обмена данными, создай структуру для заполнения данными отдельной функцией и заполняй ее из какой нить таблицы, которую пользователь заполнил. Сегодня тебе нужна организация с кодом 00-000001 а завтра совсем другая, будешь каждый раз код перелопачивать? Лучше дать людям инструмент настройки чем каждый раз самому править. В таком написании как в (0) я бы еще понял, если на 1 раз обработка, но тогда и области не нужны, согласен с (8)
   VladZ
 
10 - 11.03.21 - 09:54
(0) На "Область" всем наср*ть.
А вот за Организации.FindByCode("00-000001") могут и морду набить.
   Волшебник
 
11 - 11.03.21 - 09:56
(10) По коду ещё можно, а вот за FindByDescription("Основной - Русский Лес") могут и морду набить
   Hans
 
12 - 11.03.21 - 09:57
>> ИМХО, гораздо важнее содержание и смысл кода, чем то как именно он структурирован.

Хороший код как раз таки хорошо структурирован. Смысл кода может быть один и тот же, но в одном случае все будет в одной процедуре, в другом случае будет все разнесено по смыслу в разные процедуры.
   vsg-work
 
13 - 11.03.21 - 10:12
(8) (12) (11) (10) (9) (7)
Всем спасибо за ответы.

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

Вопрос был задан по интересу и правильности. Можно ли так использовать или нет. И то что можно код вынести в отдельную процедуру, по-моему каждый начинающий прогер знает.
   fisher
 
14 - 11.03.21 - 10:13
Как по мне, полезность областей весьма относительна.
Но если уж их юзать - то в соответствии c системой стандартов 1С. Т.е. никак не для группировки внутри функций.
Да и вообще при хорошем структурировании кода необходимость даже в комментариях возникает редко.
   Кир Пластелинин
 
15 - 11.03.21 - 10:13
кажется попадалось в стандартах разработки от 1с, что использование #Областей правильно только в рамках самого модуля, но не в рамках процедур/функций. но это не точно)
   Вафель
 
16 - 11.03.21 - 10:15
лучше отдельные процедуры
   Волшебник
 
17 - 11.03.21 - 10:15
(14) Согласен. Названия функций и переменных сами по себе являются комментариями
   ManyakRus
 
18 - 11.03.21 - 10:16
Надо делать отдельную функцию создание контрагента а не область
   vsg-work
 
19 - 11.03.21 - 10:16
(9) Спасибо за совет Вам. НА досуге попробую)
   fisher
 
20 - 11.03.21 - 10:22
Цитата из системы стандартов 1С: "объемные разделы модулей рекомендуется разбивать на подразделы по функциональному признаку. Разделы и подразделы оформляются в виде областей"
Плюс ряд разделов и даже их порядок тоже стандартизирован. Ну, в любой современной типовой это легко наблюдать.
   Тихий омут
 
21 - 11.03.21 - 10:47
(8) типовая буха, глобальный поиск НайтиПоКоду(" - 60 вхождений :)))
   ДенисЧ
 
22 - 11.03.21 - 10:50
(21) А что там ищут по коду - ты не смотрел?
   Aleksey
 
23 - 11.03.21 - 10:51
(22) обычно валюту
   ДенисЧ
 
24 - 11.03.21 - 10:51
В основном - классификаторы всякие. Со строгими кодами.
   Kesim
 
25 - 11.03.21 - 11:57
недавно разгребал найтиПоНаименованию/коду более 180 точек в самописной конфе. 4-5 элементов поменяли наименование и не отрабатывали. помимо этого уход от этих методов ускорил открытие некоторых форм на 0,15 секунд.
так что согласен с тем что на области можно не обращать внимание, если есть найтиПоНаименованию/коду
   vsg-work
 
26 - 11.03.21 - 19:27
(25) А чем заменяете "НайтиПоНаименованию" или "НайтиПоКоду"? Запросом?
   Волшебник
 
27 - 11.03.21 - 19:41
(26) Предопределённые элементы справочника, константы, таблицы настройки, параметры обработки, ключи
   fisher
 
28 - 12.03.21 - 11:10
С тех пор как связку предопределенных с пользовательскими сделали нестрогой, вообще красота стала.
Теперь в самописке, как только возникает необходимость в НайтиПоКоду - сразу создаю предопределенный элемент и навешиваю его на нужный элемент справочника. Ну, это если нельзя решить более гибко - через ввод дополнительных признаков.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.