Имя: Пароль:
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, а где про то, что Вы говорите можно почитать, может ссылка какая есть или из собственного опыта?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn