Имя: Пароль:
1C
1С v8
Можно ли разбить этот код на более понятные части?
,
0 Sergei1982
 
24.09.12
12:03
Участок = РегистрыСведений.РаботникиОрганизаций.СрезПоследних(КонецДня(РезЗапроса.Заявка.ДатаРегистрации),Новый Структура("Сотрудник",?(ЗначениеЗаполнено(РезЗапроса.НачальникУчастка),РезЗапроса.НачальникУчастка,РезЗапроса.Мастер)));
1 iamnub
 
24.09.12
12:04
А чо тут непонятного?
2 Oleg_Kag
 
24.09.12
12:05
Ээээ а что не понятного?
3 pumbaEO
 
24.09.12
12:05
А что тут непонятного?
Дата = КонецДня(РезЗапроса.Заявка.ДатаРегистрации)
Сотрудник = ?(ЗначениеЗаполнено(РезЗапроса.НачальникУчастка),РезЗапроса.НачальникУчастка,РезЗапроса.Мастер);
Участок = РегистрыСведений.РаботникиОрганизаций.СрезПоследних(Дата, Новый Струкутра("Сотрудник", Сотрудник));
4 Sergei1982
 
24.09.12
12:09
ну так это все в в одних скобках и в одной строчке. Коллега оставил додумываться.
5 Jaap Vduul
 
24.09.12
12:12
Я обычно такой код заставляю переписывать - чтобы все необходимые данные получались одним запросом.
6 Sergei1982
 
24.09.12
12:13
это как?
7 Sergei1982
 
24.09.12
12:13
как наверху коллеги написали, также?
8 Sergei1982
 
24.09.12
12:15
просто я мире программирования 1 с только пять месяцев, опыта не хватает, мягко говоря ))
9 Maxus43
 
24.09.12
12:16
(8) yну в (3) то что непонятно?
10 Aleks73
 
24.09.12
12:19
(0)Сохрани в ворд и там разбей на части и читай.
11 Sergei1982
 
24.09.12
12:19
Спасибо!!
12 ilpar
 
24.09.12
12:20
не нравится мне код в (0)

Такое пишу запросами. Любой прочитает код
13 Kashemir
 
24.09.12
12:23
СтруктураОтбора = Новый Структура;
Если ЗначениеЗаполнено(РезЗапроса.НачальникУчастка) Тогда
СтруктураОтбора.Вставить("Сотрудник", РезЗапроса.НачальникУчастка);
Иначе
СтруктураОтбора.Вставить("Сотрудник", РезЗапроса.Мастер);
Конец;
ДатаСреза = КонецДня(РезЗапроса.Заявка.ДатаРегистрации);
Участок = РегистрыСведений.РаботникиОрганизаций.СрезПоследних(ДатаСреза ,Новый Структура("Сотрудник",СтруктураОтбора);
14 Kashemir
 
24.09.12
12:24
+(13) Вроде такого
СтруктураОтбора = Новый Структура;
Если ЗначениеЗаполнено(РезЗапроса.НачальникУчастка) Тогда
СтруктураОтбора.Вставить("Сотрудник", РезЗапроса.НачальникУчастка);
Иначе
СтруктураОтбора.Вставить("Сотрудник", РезЗапроса.Мастер);
КонецЕсли;
ДатаСреза = КонецДня(РезЗапроса.Заявка.ДатаРегистрации);
Участок = РегистрыСведений.РаботникиОрганизаций.СрезПоследних(ДатаСреза ,СтруктураОтбора);
15 ilpar
 
24.09.12
12:27
Код из (0) не соответствует стандартам разработки 1С

Намекни напарнику
16 Sergei1982
 
24.09.12
12:27
Спасибо, уважаемый Kashemir, так лично мне новичку гораздо понятнее!!! И по-моему действительно код красивее стал даже!
17 pumbaEO
 
24.09.12
12:27
ну еще бы "РезЗапроса.Заявка.ДатаРегистрации" в запросе сразу вычислить, хотя если это типовой запрос и надо маленькую вставку сделать, то лучше чем (0) и не придумаешь, при объединении маленькая вероятность что расползется, в отличии от Если ЗначениеЗаполненно
18 Sergei1982
 
24.09.12
12:29
ДА, что плохо в 1С , так это то, что всегда приходится сталкиваться с непонятным синтаксисом и разбираться как можешь в нем ))
19 rs_trade
 
24.09.12
12:30
(0) встречал идиотов которые думали что такой код выполняется быстрее чем многострочный.
20 Reset
 
24.09.12
12:32
// я бы ограничился так
Участок=РегистрыСведений.РаботникиОрганизаций.СрезПоследних(
           КонецДня(РезЗапроса.Заявка.ДатаРегистрации),
           Новый Структура("Сотрудник",?(ЗначениеЗаполнено(РезЗапроса.НачальникУчастка),
                                           РезЗапроса.НачальникУчастка,
                                           РезЗапроса.Мастер)));
21 Reset
 
24.09.12
12:33
(19) А это, типа, не так?
22 Reset
 
24.09.12
12:33
Разница небольшая (из-за создания переменных), но она есть
23 pumbaEO
 
24.09.12
12:34
(15) в чем несоотвует, если 1С сама использует то соответствует, или имеется ввиду конструкции через 2 точки? http://screencast.com/t/vvRftuEO
24 rs_trade
 
24.09.12
12:38
(21) в режиме отладки это может иметь какое то значение, а без отладки нет. компилируется же все.
25 Reset
 
24.09.12
12:43
(24) Не ожидал от тебя такой фразы.
26 Reset
 
24.09.12
12:45
Вроде ж букварные истины как про компиляцию, так и про создание переменных
27 rs_trade
 
24.09.12
12:49
(26) пруфы в студию, что есть сколько нибудь ощутимая разница в производительности.
28 Alex375
 
24.09.12
12:56
Выиграша по производительности конечно совсем немного, но вот как насчет чистки памяти от созданных переменных? А если сборщик мусора еще и косячит, так остается "занятая" память, что совсем не есть хорошо.
Спорить тут смысла нет, так как сомневаюсь, что кто-то досканально знает как устроен компилятор 1С, сборщик мусора и прочие внутренности 1С-ки :)
29 Reset
 
24.09.12
12:57
(27) Разница между чем чем и чем?
30 Reset
 
24.09.12
12:58
Я уже сказал(22) что разница минимальна. Просто задело слово "идиотов". Формально действительно код в одну строку и не использующий временных переменных - быстрее.
31 rs_trade
 
24.09.12
13:04
(30) Какой смысл считать миллисекунды? Я говорил про людей которые думали что у тебя программа реально быстрее будет работать.
32 vmv
 
24.09.12
13:06
использование оператора "?" и неявное определение состава структры приветсствую при соблюдении простых условий

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

2.
А) В значениях инициализации структуры не должны фигурировать коллекционные данные или данные запроса, исключая метод Количество()
Б) Количество ключей не более 2-х, если им сопоставлены значения
В) Количество ключей не более 5, если им НЕ сопоставлено ни одного значения.
33 Reset
 
24.09.12
13:09
(31) Считать их или нет - это совсем другой вопрос. Но они есть, и называть нехорошо людей, которые знают про это - нехорошо. Ладно, замяли.
34 Sergei1982
 
24.09.12
14:42
Уважаемый VMV, а где про то, что Вы говорите можно почитать, может ссылка какая есть или из собственного опыта?