Имя: Пароль:
1C
1С v8
Как лучше всего передать колонку ТЧ с клиента на сервер
0 bahtik
 
28.05.15
09:47
Здравствуйте!
Простой, наверное вопрос, но не могу правильно его решить. Задача следующая. Управляемая форма, на ней ТЧ с колонкой "Услуга". У услуг в справочнике есть реквизит "ВремяВыполнения". Вот мне нужно подсчитать общее время выполнения услуг, входящих в ТЧ. Для этого создаю процедуру, выполняемую на сервере без контекста, которая должна пройтись по списку услуг и просуммировать их время выполнения. Но возник вопрос, каким образом передать список услуг в эту процедуру? Метод ПереченьУслуг.Выгрузить(,"Услуга") на клиенте не работает. Можно, конечно, самому пройтись в цикле по строкам таблицы и сформировать список значений, но может быть есть более корректный путь?
1 Heckfy
 
28.05.15
09:56
Дык обращайся с сервера напрямую к ТЧ...
2 Cube
 
28.05.15
09:57
(0) "процедуру, выполняемую на сервере без контекста"
Сделай с контекстом и не надо лохматить бабушку.
3 Heckfy
 
28.05.15
10:02
А еще можно добавить в ТЧ подвал и просуммировать по колонке...
4 bahtik
 
28.05.15
10:03
(1) (2) Так в том-то и дело, что не хочется лишний раз делать функцию на сервере с контекстом. Уж лучше я полохмачу бабушку и создам список вручную, как я описал.
5 bahtik
 
28.05.15
10:04
(3) Нельзя. На клиенте нет доступа к нужному реквизиту. Нужно обращаться на сервер.
6 Господин ПЖ
 
28.05.15
10:04
создать скрытую колонку и писать туда - не предлагать?
7 Heckfy
 
28.05.15
10:05
(5) Да ладно??..
8 bahtik
 
28.05.15
10:05
(6) Я спрашивал про более корректный путь, а не более извращенный ))) Так что не, не предлагать ;)
9 bahtik
 
28.05.15
10:06
(7) Ну да.
10 Господин ПЖ
 
28.05.15
10:06
извращение - это считать в документе то чего в нем нет и оно в добавок подвержено изменением...
11 bahtik
 
28.05.15
10:07
(10) ??? Ты это о чем?
12 Cube
 
28.05.15
10:07
(4) А что так? Религия запрещает?
13 Господин ПЖ
 
28.05.15
10:08
(11) о том... время выполнения имеет свойство меняться скорее всего
14 Cube
 
28.05.15
10:09
(6) Туда даже писать не надо, просто указать в качестве источника - Услуга.ВремяВыполнения.
15 bahtik
 
28.05.15
10:10
(12) Ну типа вопрос оптимизации. По возможности нужно избегать обращения к функциям с директивой компиляции "На сервере", т.к. обращение идет гораздо медленнее, чем к функциям с директивой "НаСервереБезКонтекста".
16 Zhuravlik
 
28.05.15
10:10
На клиенте - массив в цикле - и передавать этот массив на сервер. Это если нужно учитывать время услуг, которые вбили в форму, но объект еще не записан. А если записан, то можно просто ссылку передавать в неконтекстную процедуру, а там уже запрос по ТЧ.
17 bahtik
 
28.05.15
10:11
(13) У кого-то может, и "скорее всего", а у меня четкая задача. При окончании редактирования строки ТЧ (или после удаления строки ТЧ) нужно подсчитать номинальное время выполнения услуг. Оно задано в справочнике для каждой услуги.
18 18_plus
 
28.05.15
10:13
(15) "По возможности нужно избегать обращения к функциям с директивой компиляции "На сервере"
не на спичках-ли экономия? замеры что показывают?
19 bahtik
 
28.05.15
10:13
(16) Ну я пока так и сделал (массив в цикле). А с запросом к ТЧ по ссылке это опять-таки еще более извращенно (т.е. к оптимизации не ведет)
20 bahtik
 
28.05.15
10:14
(18) Дело не в этом конкретном случае, а вообще в стиле кодирования. У меня же в конфигурации не одна процедура.
21 18_plus
 
28.05.15
10:16
(20) прелесть какая.
22 hhhh
 
28.05.15
10:19
(20) быдлокодер новой формации?
23 Desna
 
28.05.15
10:19
(14) ну да ну да, а в это время нормировщица Степанида провела перерасчет Услуга.ВремяВыполнения.
24 Zhuravlik
 
28.05.15
10:21
(19) при небольших объемах базе пофик на запрашиваемые данные: главное чтобы они за один запрос получались. Как - с условием ли на ссылку, или по вхождению в массив - значимой разницы в скорости нет.
-
Другое дело, что в этом конкретном случае - это не нужно.
25 Господин ПЖ
 
28.05.15
10:22
>У кого-то может, и "скорее всего", а у меня четкая задача.

она мудацкая...
26 Господин ПЖ
 
28.05.15
10:22
и в нормальной постановке просто не возникает
27 bahtik
 
28.05.15
10:22
(22) Быдлокодер - это ведь тот, кто пишет как попало, лишь бы работало, и кладет болт на все принципы и правила? ))) 18_plus может на тебя обидеться ))
28 bahtik
 
28.05.15
10:25
(26) Если тебе нормальные вещи кажутся мудацкими, поменяй ник на "Господин Мудацкий". Все встанет на свои места.
29 Drac0
 
28.05.15
10:25
Мда, а потом спрашивают, почему 1С тормозит. Человек спрашивает ,как сделать оптимально ,а ему кричат: "Делай контекстный вызов и не ипи мозг!".
30 Drac0
 
28.05.15
10:26
(0) А итог лучше хранить реквизитом в шапке и перед записью в модуле объекта пересчитывать.
31 Heckfy
 
28.05.15
10:27
Так почему Подвал с Итогом не подходит то???? (0)
32 Drac0
 
28.05.15
10:27
(0) Стоп. Время выполения не фиксится в документе, а берется из справочника? Хм, тогда пофиг, как делать, но лучше без контекста. Обходом массив заполняй, что еще придумаешь...
33 18_plus
 
28.05.15
10:27
(27) это сарказм был. приносить в жертву функционал в угоду каким-то принципам это гамнокод.
34 Господин ПЖ
 
28.05.15
10:28
(31) хз...
35 Drac0
 
28.05.15
10:28
(31) Нету у него данных для подвала.
36 Господин ПЖ
 
28.05.15
10:28
>Время выполения не фиксится в документе, а берется из справочника? Хм, тогда пофиг, как делать, но лучше без контекста. Обходом массив заполняй, что еще придумаешь...

для это есть колонка и подвал

и некуй лохматить бабушку
37 Drac0
 
28.05.15
10:30
(36) Ага, но нет динамического обновления этих данных. Юзер откроет документ вчера, на печать отправит завтра, а там данные уже давно совсем не те. Еще забавнее будет работа со старыми документами :)
38 Господин ПЖ
 
28.05.15
10:31
но ветка себя исчерпала, а автор пусть запросом ковыряет что желает - дуракам закон не писан...
39 bahtik
 
28.05.15
10:31
(31) Потому что я спрашиваю с точки зрения оптимальности, а не потому, что не знаю, как сделать. А подвал с Итогом - это вообще не оптимально.
40 Господин ПЖ
 
28.05.15
10:31
(37) я на это прозрачно намекал, но быдлокодеру в (0) виднее
41 Господин ПЖ
 
28.05.15
10:32
>А подвал с Итогом - это вообще не оптимально.

гы...
42 bahtik
 
28.05.15
10:32
(38) Ты просто феерический дзебил )) Ты так и не понял, в чем суть вопроса ))
43 Господин ПЖ
 
28.05.15
10:32
(39) перечитай (25) и (26)
44 bahtik
 
28.05.15
10:33
(43) Перечитай все книги по программированию.
45 bahtik
 
28.05.15
10:33
Может, научишься хоть чему-нибудь.
46 Господин ПЖ
 
28.05.15
10:33
(44) эта мысль оттуда и взята, дубина...
47 bahtik
 
28.05.15
10:34
"Оттуда" - это из твоей задницы? )) Оно и видно.
48 bahtik
 
28.05.15
10:35
(46) И не называй всякую хрень мыслью )
49 Господин ПЖ
 
28.05.15
10:35
а я то думал... укропское хамло - все встает на свои места...
50 bahtik
 
28.05.15
10:36
(49) ))) Не, ты не феерический. Ты просто идиот ))
51 bahtik
 
28.05.15
10:39
(29) Ну 1С-ники... Чего еще от них ждать?
52 Timon1405
 
28.05.15
10:43
Может быть проще написать Знач в вызове процедуры?
Использование Знач в процедурах и функциях
ТС, предлагаю, сделайте замер
-обход на клиенте с формированием списка
-контекстный вызов с Знач
-обычный контекстный вызов
и отпишитесь нам о результатах, тогда будет конструктивно)
53 Cube
 
28.05.15
10:44
У, пошла жара)))

bahtik Если ты не теоретик, проведи замеры производительности варианта с контекстной серверной процедурой и своим вариантом... Результаты вываливай сюда, посмотрим, выиграешь ты в производительности или нет.
54 Heckfy
 
28.05.15
10:46
(39) Ааа, ну да, ну да. Жираф большой - ему видней.
55 Cube
 
28.05.15
10:46
(52) Ах ты... :)
56 Desna
 
28.05.15
10:49
(0) я еще раз спрошу... содержимое списка услуг на клиенте меняеца?
57 bahtik
 
28.05.15
10:50
(53) Еще раз для тебя поясню. Дело не в моем конкретном примере, и я не собираюсь его замерять, т.к. ежу понятно, что дадут замеры. Меня интересует сам подход к решению подобного рода задачи. Все. Если есть более правильный метод - напиши. Если нет - не надо предлагать что попало.
58 bahtik
 
28.05.15
10:51
(56) Ну естественно, это же табличная часть документа. Строки добавляются, корректируются, удаляются...
59 Любопытная
 
28.05.15
10:51
А можно для тех, кто в танке - почему неоптимально подвал с итогом?
60 Heckfy
 
28.05.15
10:52
(59) См. (39) :)
61 Любопытная
 
28.05.15
10:52
(60) Там просто написано - вообще Неоптимально. А я спрашиваю - почему?
62 Heckfy
 
28.05.15
10:53
(61) Я думаю ответ будет :Патамушта. :)
63 Любопытная
 
28.05.15
10:54
Имхо - неоптимально при каждом изменении ТЧ шарахаться с клиента на сервер просто для того, чтобы посчитать одну сумму. Можно делать это один раз. Ну или по кнопке там... Набили ТЧ, нажали кнопку - посчитали.
64 bahtik
 
28.05.15
10:54
Для тех, кто в танке. Подвалу с итогом нужна колонка. Значит нужно добавлять еще одну колонку. Дальше пояснять, или уже все понятно?
65 Любопытная
 
28.05.15
10:55
(64) непонятно. Колонка чем мешает?
66 Любопытная
 
28.05.15
10:55
Ее ж можно даже на форму не выводить по-моему...
67 Desna
 
28.05.15
10:55
(64) ну так а что еще выдумывать, если это время услуг раз в полгода меняется или вообще только при создании
68 Любопытная
 
28.05.15
10:56
(64) Вы не подумайте, я не для розжига, я из чистого любопытства.
69 bahtik
 
28.05.15
10:56
(65) Ну давай поразмышляем... Колонку куда добавлять?
70 Любопытная
 
28.05.15
10:57
(69) Ну давай... Щас экспериментальную конфу запилю, посмотрим :)
71 bahtik
 
28.05.15
10:57
Я так надеюсь, ты же не имеешь в виду, что в документ, а просто как реквизит формы? )
72 Любопытная
 
28.05.15
10:59
(71) мы с Вами на брудершафт не пили, чтобы Вы могли со мной в подобном тоне разговаривать, молодой человек.
73 Drac0
 
28.05.15
11:00
(69) В ТЧ на форме, не в реквизиты ТЧ. Каккие проблемы?
74 Heckfy
 
28.05.15
11:01
Что то уже прям желание возникает, что бы ветку закрыли, автора забанили....
75 bahtik
 
28.05.15
11:03
Ну давай тогда сначала на брудершафт )) И еще вопрос, в случаях если реквизит, который нужно обрабатывать, не числовой, такой метод точно не будет работать?
76 bahtik
 
28.05.15
11:03
(74) Так иди работай, в чем проблема то?
77 bahtik
 
28.05.15
11:03
(74) Не мучай себя.
78 Господин ПЖ
 
28.05.15
11:05
сейчас еще окажется что длительность вносится не в секундах,а текстом типа "два с половиной дня"...

ловите наркомана
79 Господин ПЖ
 
28.05.15
11:06
>Что то уже прям желание возникает, что бы ветку закрыли, автора забанили....

шоу маст гоу он
80 Heckfy
 
28.05.15
11:07
(79) Ну раз должно, то пошел за чипсами :)
81 bahtik
 
28.05.15
11:08
(78) Ты продолжаешь тупить. Я не про длительность. И не про этот конкретный пример. А в принципе. Теоретически. См (53).
82 18_plus
 
28.05.15
11:09
(81) ты хамло. и тебя нужно забанить. в принципе.
83 bahtik
 
28.05.15
11:10
(82) Забань. Из принципа.
84 Любопытная
 
28.05.15
11:11
(75) Нет, не давай. Практически, да и теоретически не числовые данные суммироваться не будут, и ты и сам это прекрасно знаешь.
85 Господин ПЖ
 
28.05.15
11:11
>Я не про длительность. И не про этот конкретный пример.

повторю еще раз - в нормальной постановке задачи подобных проблем не возникает... если необходимо лепить подобные "костыли" на пустом месте - значит явные проблемы в архитектуре
86 Drac0
 
28.05.15
11:12
(81) Вот и задавай вопрос более отстраненно. А то выглядит как "Я люблю съесть своего гов*еца перед сном, но утром сильно пахнет изо рта. Какую зубную пасту от сильного запаха изо рта вы посоветуете?" И ты серьезно думаешь, что в такой теме действительно будут обсуждать зубную пасту? :)
87 18_plus
 
28.05.15
11:14
(86) какие яркие метафоры :) писатель?
88 bahtik
 
28.05.15
11:16
(85) Т.е. придерживаться принципов оптимальности кода - это ненормальная постановка задачи? Тебе не кажется, что у тебя немного искаженное понятие о гамнокоде? ))
89 Господин ПЖ
 
28.05.15
11:19
(88) ты путаешь причины и следствие

в нормальной постановке это сделает платформа колонка/итог или будет адекватный доступ к данным в нужном контексте работы клиент/сервер
90 Любопытная
 
28.05.15
11:20
(89) Он не хочет колонку в ТЧ документа выводить, а без этого платформа итог по колонке не посчитает.
Но хамства это не оправдывает
91 Господин ПЖ
 
28.05.15
11:21
>Он не хочет колонку в ТЧ документа выводить

флаг в руки...

но причем тут трепетные пляски вокруг зашвыривания контекста формы на сервер? Проблема то "не в бабине"
92 Любопытная
 
28.05.15
11:24
(91) Проф разработка) Правда там написано - если можешь ходить без контекста - иди без контекста. Но нам всем известна поговорка про молитвы и разбитый лоб)
93 Господин ПЖ
 
28.05.15
11:26
попадание на сервер вместе с формой по сути ничего не решает

те же яйцы...

ибо изначально решаемая задача "хорошего решения" просто не имеет - в силу изначальной кривизны
94 bahtik
 
28.05.15
11:39
(93) Твоим извилинам немного кривизны бы не помешало. Куда ты собрался на сервер вместе с формой? Сиди лучше на месте и никуда не ходи. )
95 Heckfy
 
28.05.15
11:42
(94) Ты чё??? А куда еще с формой? Или ты думаешь, что форма на клиенте отрабатывается?? Форма - это первая составляющая серверной части.
96 bahtik
 
28.05.15
11:44
(95) Ты че??? ))) А что значит директива "НаСервереБезКонтекста", не догадываешься? ))
97 hhhh
 
28.05.15
11:48
(96) ну уж явно она не для твоей задачи. Ты вручную при помощи 100 команд через задницу пытаешься затащить контекст на сервер. Вместо того, чтобы написать одну строчку &НаСервере.
98 Heckfy
 
28.05.15
11:52
(96) Блин, форма образуется на сервере. А на клиент только картинка передается.
99 Любопытная
 
28.05.15
11:57
(98) Вы говорите о разных вещах. Спор ни о чем. ТС считает, что собирать массив значений колонки тч циклом эффективнее, чем просто сходить на сервер с контекстом. Это его право.
Оптимизация должна быть умеренной, об этом говорилось не раз. Мы вырвали маленькую задачку из контекста общей конфигурации и пытаемся на ее основе оценить что-то теоретическое...
Бессмысленная трата времени.
100 Cube
 
28.05.15
11:58
Сотка
101 bahtik
 
28.05.15
12:00
(97) (98) Вы белины объелись, что ли? Какая к чертям форма? Я с самого начала о том и говорю, что она мне на фиг не нужна. (97) Какие 100 команд? Вот тебе мой код:

....

СписокУслуг = Новый Массив;
                Для каждого СтрокаПеречняУслуг Из Объект.ПереченьУслугМойки Цикл
                    СписокУслуг.Добавить(СтрокаПеречняУслуг.Услуга);
                КонецЦикла;
                
                ВремяВыполненияМойки = СерверРассчитатьВремяВыполненияРаботПоКаждойУслуге(СписокУслуг);

....


&НаСервереБезКонтекста
Функция СерверРассчитатьВремяВыполненияРаботПоКаждойУслуге(СписокУслуг)
    
    ОбщееВремяВыполненияУслуг = 0;
    
    Для каждого Услуга Из СписокУслуг Цикл
        ОбщееВремяВыполненияУслуг = ОбщееВремяВыполненияУслуг + Услуга.ВремяВыполнения;
    КонецЦикла;
    
    Возврат ОбщееВремяВыполненияУслуг;
    
КонецФункции

Он работает. Без контекста формы. Почему "она явно не для твоей задачи"?
102 18_plus
 
28.05.15
12:04
(101) "Он работает"
сюда ты зачем пришёл?
и начни оптимизацию с этого кода
Для каждого СтрокаПеречняУслуг Из Объект.ПереченьУслугМойки Цикл
                    СписокУслуг.Добавить(СтрокаПеречняУслуг.Услуга);
                КонецЦикла;

и прежде чем учить других, почитай книжки.
103 hhhh
 
28.05.15
12:04
(101) ну вот это

    Для каждого Услуга Из СписокУслуг Цикл
        ОбщееВремяВыполненияУслуг = ОбщееВремяВыполненияУслуг + Услуга.ВремяВыполнения;
    КонецЦикла;

это запрос в цикле Услуга.ВремяВыполнения

быдлокод. Он съест времени в 10 раз больше, чем твоя передача контекста.
104 Timon1405
 
28.05.15
12:06
(102) Если вы про "Объект.ПереченьУслугМойки", то его закэширует платформа
105 18_plus
 
28.05.15
12:07
(104) я вообще-то про выгрузку колонки в массив.
106 Heckfy
 
28.05.15
12:08
(101) Форма образуется в ПриСозданииНаСервере
107 Любопытная
 
28.05.15
12:09
Слушайте, это все лирика. Мне другое интересно - вытащила я в ТЧ реквизит Услуга.ВремяВыполнения. Но я ж до него не могу никак на клиенте дотянуться? Получается, что он исключительно информативный?
108 Бубка Гоп
 
28.05.15
12:13
(107) почему не можешь то?
109 Любопытная
 
28.05.15
12:13
(108) Не получается) Научите?
110 Любопытная
 
28.05.15
12:14
(108) Учитывая то, что это просто колонка на форме, а не реквизит таб части документа
111 Бубка Гоп
 
28.05.15
12:16
(109) сейчас сам попробую, интересно какая там может быть проблема
112 bahtik
 
28.05.15
12:16
(103) Чушь
113 Timon1405
 
28.05.15
12:17
(105) Так там ващета не ТЗ а данныеформыколлекция, а метод выгрузить доступен только на сервере
114 bahtik
 
28.05.15
12:18
(104) Ничего кэшироваться не будет - все и так на клиенте. Объект - это же реквизит формы.
115 Любопытная
 
28.05.15
12:19
(111) нету ее) ни через Элементы, ни тем более через Объект. На форме колонка есть, а достать ее нельзя
116 Drac0
 
28.05.15
12:19
(110) Ну, сделайте эту колонку реквизитом формы, а не документа.
117 bahtik
 
28.05.15
12:19
(100) До второй дойдет?
118 Господин ПЖ
 
28.05.15
12:20
(112) гы
119 Drac0
 
28.05.15
12:21
(112) Чо? Он самый и есть.
120 Любопытная
 
28.05.15
12:22
(116) Ну так я о том и говорю - сделала реквизит формы, он прекрасно выводится, но я до него дотянуться не могу, чтобы, к примеру, по нему что-то посчитать. А так можно было бы прям тут, на клиенте, посчитать общую сумму и прекратить весь этот базар-вокзал
121 Господин ПЖ
 
28.05.15
12:22
бегать у ужасе от накладных расходов от передачи на сервер и тут же беззастенчиво лупить по базе запросом в цикле ради одного реквизита...
122 Бубка Гоп
 
28.05.15
12:23
(110) ну как то так

&НаСервере
Процедура ЗаполнитьКолонкуСервер()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 100
        |    Номенклатура.Наименование КАК Колонка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура";
    Результат = Запрос.Выполнить();
    Таблица.Загрузить(Результат.Выгрузить());
    
    
КонецПроцедуры    

&НаКлиенте
Процедура ВыполнениеНаКлиенте(Команда)
    Для Каждого Стр Из Таблица Цикл
        Сообщить(Стр.Колонка);
    КонецЦикла;    
КонецПроцедуры
123 Господин ПЖ
 
28.05.15
12:23
причем если память не изменяет читая весь объект...
124 Drac0
 
28.05.15
12:23
(120) Нет, вы сделали Элемент формы, а надо реквизит :)
125 Господин ПЖ
 
28.05.15
12:24
а как всё гордо начиналось - тупые 1с-ники не читали книг о программировании
126 Drac0
 
28.05.15
12:24
(123) Ага,  с табличными частями. Лепота там вообще.
127 Любопытная
 
28.05.15
12:24
(124) Ок, допустим реквизит будет. Как мы в него засунем значение?
128 Любопытная
 
28.05.15
12:25
(122) Ничего не поняла) Таблица это ху?
129 Бубка Гоп
 
28.05.15
12:25
(128) реквизит формы
130 Drac0
 
28.05.15
12:29
(127) ПриЧтенииНаСервере.
131 Бубка Гоп
 
28.05.15
12:33
(128) теперь получилось дотянуться или все еще нет? :)
132 bahtik
 
28.05.15
12:37
(121) Во-первых, это временный вариант кода, в котором запрос не использовался чисто по причине чтоб по быстрому написать и проверить. Потом, естественно, я бы заменил на запрос. Но не смотря на это, к твоему сведению то, что ты называешь "беззастенчивым луплением по базе", в данном случае вызовет ЗАМЕТНО меньше тех самых накладных расходов, т.к. и объект не такой большой и количество итераций небольшое. Но это уже так, к слову.
133 bahtik
 
28.05.15
12:38
(126) Там обращение к элементу справочника "Услуги", у которого всего то четыре реквизита. Так что никаких ТЧ. Ну и см (132).
134 bahtik
 
28.05.15
12:42
(127) О, вот наконец настает понимание проблемы подвала с  итогом. Колонка есть, реквизит есть, а как мы засунем в него значение? Засовывать, понятное дело, нужно с сервера (т.к. необходимые данные у нас на сервере). Но проблема то в том, что на сервере этой колонки нет! ))) Так что надо либо извращаться и возвращать данные каким-то параметром, или что-то еще, но в любом случае выигрыша по сравнению с тем кодом, что я написал - ноль целых ноль десятых. Вернее, даже хуже. Теперь понятно?
135 bahtik
 
28.05.15
12:43
(125) На вот, почитай, умник: http://its.1c.ua/db/metod81u#content:8020500:hdoc
136 Drac0
 
28.05.15
12:43
(133) Дадада. А потом, через годик, когда этот справочник повесят чуть больше атрибутов и пару ТЧ и проведут документ на пару сотен строк, посмотрят на это чудо 5-10 минут и скажут: "Ваша 1С г*вно!".
137 Господин ПЖ
 
28.05.15
12:44
(132, 133) ты ж.пой то не виляй... в начале усердно рассуждал не о конкретном примере, а о сферическом коне в вакууме
138 Господин ПЖ
 
28.05.15
12:46
а у "сферического коня" в таком справочнике может быть 50 ТЧ

у упоротых хохлов так принято писать - я гарантирую
139 Drac0
 
28.05.15
12:46
(134) Как нет этой колонки на сервере? Кто украл?! У меня все есть.
140 Бубка Гоп
 
28.05.15
12:46
(136) и тут он, не слезая с белого коня, перепишет код на нормальный
141 bahtik
 
28.05.15
12:47
(137) А если о сферическом коне в вакууме, то почитай еще про кэширование, и ты поймешь, что в реальности без запроса обращения к базе вообще может не быть, т.е. работать это самое "лупление по базе" будет еще быстрее, чем запрос.
142 Господин ПЖ
 
28.05.15
12:47
>Как нет этой колонки на сервере? Кто украл?! У меня все есть.

+100500
143 Drac0
 
28.05.15
12:48
(140) Ага, "Я этот кусок кода потом перепишу оптимально" будет, пожалуй, даже покруче, чем "Я с понедельника начну бегать по утрам" :)
144 bahtik
 
28.05.15
12:49
(143) см (141), если тебе не нравится переписывание.
145 Господин ПЖ
 
28.05.15
12:50
>то почитай еще про кэширование, и ты поймешь, что в реальности без запроса обращения к базе вообще может не быть

для того чтобы кэширование появилось значение надо сначала получить... и потом - кэш протухает через 20 мин
146 Drac0
 
28.05.15
12:50
(141) Ты думаешь 1С кэширует всю базу данных? ))))))))))))))))))

ТЫ когда профайлер скульный в последний раз открывал?
147 Бубка Гоп
 
28.05.15
12:50
(141) на кэш надейся, но и сам не плошай ;)
148 bahtik
 
28.05.15
12:51
(138) Вообще-то я не хохол и не украинец, и вообще из другой страны. А вот ты своими высказываниями уже дал знать, какая ты гнидная безмозглая натура )))
149 Господин ПЖ
 
28.05.15
12:52
дурак-казах в стране 404... это вообще адская смесь
150 bahtik
 
28.05.15
12:52
(145) А как ты думаешь, если мы добавляем в ТЧ строки, будет кэширование элемента, который входит в эту строку?
151 Господин ПЖ
 
28.05.15
12:54
(150) формально нам от него кроме guid и полей формирующих представление ссылки ничего не надо
152 bahtik
 
28.05.15
12:54
(149) И даже не казах, не мучай свой бестолковый мозг.
153 bahtik
 
28.05.15
12:55
(146) см (150)
154 Господин ПЖ
 
28.05.15
12:55
(152) да мне пофиг... тут ключевое слово - дурак
155 Drac0
 
28.05.15
12:55
(150) Нет :)
156 Одинесю
 
28.05.15
12:55
Хрум-хрум...
157 bahtik
 
28.05.15
12:56
Ну то, что ты дурак, это с самого начала было видно, зачем еще раз всем об этом сообщать? Это уже в кэше есть.
158 Господин ПЖ
 
28.05.15
12:56
(155) не разрывай шаблон дятлу
159 bahtik
 
28.05.15
12:56
(155) А на самом деле да.
160 Любопытная
 
28.05.15
12:57
(134) Мне уже давно все понятно, я вообще не с вами разговариваю, если вы не заметили
161 Drac0
 
28.05.15
12:57
(159) А на самом деле нет. Из БД подтягивает только ГУИД и поля, по которым сервер 1С генерит представление.
162 Господин ПЖ
 
28.05.15
12:57
(159) выдыхай уже...
163 Бубка Гоп
 
28.05.15
12:58
(160) с таблицей то получилось? ато я прям переживаю теперь
164 Любопытная
 
28.05.15
12:59
(163) Ну как бы... я ушла коммерческое писать, мне не до таблицы было)) Сейчас попытаюсь разобраться, что у меня не получается и как с этим бороться)
165 bahtik
 
28.05.15
13:00
(161) А ты не поленись, сделай тестовую конфу и посмотри в отладчике вызовы сервера. А потом рассказывай.
166 ЧеловекДуши
 
28.05.15
13:04
(4) В модуле формы пишешь "&НаСервере" и там уже можешь обращаться к реквизитам формы
167 Бубка Гоп
 
28.05.15
13:05
(166) ТС не приемлет контекстные вызовы, как я понял
168 Любопытная
 
28.05.15
13:05
(163) событие ПриЧтенииНаСервере в какой момент возникает?
Вот конкретная задача - есть реквизит формы, точнее - колонка реквизита формы. Она к объекту не имеет никакого отношения, она только у формы есть. При добавлении строки я хочу в эту колонку записать значение реквизита одного из полей добавляемой строки. В каком событии я могу это сделать?
169 Drac0
 
28.05.15
13:07
(165) А при чем тут вызовы сервера? 0_о Когда ты УЖЕ на сервере.
170 Drac0
 
28.05.15
13:09
(168) ПриЧтенииНаСервере возникает при чтении объекта из БД. При создании новых, естественно, не возникает. Нам так и нужно для решения подобной задачи.
171 Бубка Гоп
 
28.05.15
13:10
(168) во, уже проблема другая. Ну, если прям никакого не имеет, то ПриИзменении таблицы объекта, например, полностью загружать колонку формы. хотя это как то не красиво, проще там же считать сумму и не лохматить бабушку
172 Любопытная
 
28.05.15
13:11
(170) Там же это где?
173 bahtik
 
28.05.15
13:12
(170) ПриЧтенииНаСервере вообще-то это событие формы и возникает либо при открытии формы, либо повторном ее считывании (например, по команде "Перечитать"). Так что тут это вообще ни к месту.
174 Бубка Гоп
 
28.05.15
13:12
(172) в ПриИзменении, само собой. если в конечном счете интересует сумма, зачем отдельная таблица?
175 Drac0
 
28.05.15
13:14
(172) Я не дочитал про добавление строки :) Если колонка зависит от одного из полей строки, то стоит повесить заполнение этого поля на ПриИзменении этого поля.
176 Drac0
 
28.05.15
13:15
(173) Ты на (169) ответь, уникум.
177 Любопытная
 
28.05.15
13:15
(171) Это изначальная проблема ТС, с которой он справился тем способом, которым справился. Я бы не стала заморачиваться и ковыряться с контекстом, но и пересчитывать этот самый итог либо при записи, либо по отдельной команде.
(174) ПриИзменении на клиенте нет доступа к реквизитам ссылки, это значит хождение на сервер, пусть и без контекста, при каждом изменении каждой строки. Если эта сумма - единственное, что при этом надо получить, то (имхо конечно) структура данных некорректна и стоит что-то поменять в монастыре)
178 Drac0
 
28.05.15
13:15
(174) Сумма может быть интересна в разных разрезах :)
179 bahtik
 
28.05.15
13:18
(169) Да, тут я не то написал, ошибся. Подразумевал обращение к БД.
180 Любопытная
 
28.05.15
13:18
(178) если она так интересна, может добавить колонку в ТЧ документа и не парить мозги окружающим?
181 bahtik
 
28.05.15
13:18
(180) Гениально!!! Я даже не сомневался, что до этого дойдет )))
182 Drac0
 
28.05.15
13:18
(177) Про сумму я уже говорил, что ее проще положить в шапке. А если логика работы формы строится на этих данных которые не надо фиксировать в объекте, а не только на их сумме, то заполнять эту строку безконтекстным вызовом - единственный вариант. Кстати, совсем не страшный :)
183 Drac0
 
28.05.15
13:19
(179) Я смотрел. А ты?
184 Любопытная
 
28.05.15
13:19
(181) Я не с вами общаюсь, если вы не заметили. Свои восторги оставьте при себе
185 Drac0
 
28.05.15
13:21
(180) Вообще, я изначально был за это :) Но тут могут быть нюансы в зависимости от логики. Например, нужны текущие данные, а не те, что были на момент заполнения документа.
186 fakeyou
 
28.05.15
13:21
&НаСервере
Процедура СчитаемУслуги()
Если НеЗначениеЗаполнено(ВремяВыполненияУслуг) Тогда

Для Каждого СТР из Объект.Услуги Цикл
ВремяВыполненияУслуг = Стр.ВремяВыполнения+ВремяВыполненияУслуг
КонецЦикла

Объект.ВсегоВремяУслуг = ВремяВыполненияУслуг;
конецесли
КонецПроцедуры
187 Любопытная
 
28.05.15
13:21
(182) Да нестрашный конечно, не спорю.  Просто я из библии вынесла для себя мысль о том, что желательно максимально сократить количество хождений туда-сюда. Это мой личный бзик :)
188 Drac0
 
28.05.15
13:23
+(185) Но это уже немного из области фантастики :)
189 Drac0
 
28.05.15
13:24
(187) Сократить, но не убрать же совсем :)
190 bahtik
 
28.05.15
13:25
(184) Так и я не с тобой общаюсь. На хрен ты мне сдалась то? Отстань же от меня уже наконец, ну ёлы-палы!
191 Любопытная
 
28.05.15
13:25
(189) Вы правы)
192 Господин ПЖ
 
28.05.15
13:26
еще немного до 200
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой