![]() |
|
v8: Почему в типовых делается запрос к документу из его же модуля | ☑ | ||
---|---|---|---|---|
0
крутойкодер
30.09.09
✎
11:12
|
Что бы вывести на печатную форму реквизиты из "шапки" документа
делается запрос к доку из модуля документа.. хотя все реквизиты дока в модуле доступны... я вот тоже так всегда делаю. а ща сищу туплю не пойму пачему.. для чего и т.д. |
|||
1
ДенисЧ
30.09.09
✎
11:12
|
выдыхай...
|
|||
2
крутойкодер
30.09.09
✎
11:12
|
v 8
|
|||
3
крутойкодер
30.09.09
✎
11:13
|
(1)фуууууууу
выдахнул |
|||
4
крутойкодер
30.09.09
✎
11:13
|
(1) а по сабжу
|
|||
5
Rie
30.09.09
✎
11:13
|
(0) Наверное, чтобы печатать именно записанный документ.
|
|||
6
Defender aka LINN
30.09.09
✎
11:14
|
Потому что этот код может быть и не в модуле документа. А, например, во внешней форме.
|
|||
7
крутойкодер
30.09.09
✎
11:15
|
(6)я про модуль дока
если выносить во внешнюю по понятно, но один х тогда передается параментр ссылка на док в эту внешнюю печ форму и можно опятьже взять этот реквизит через ссылко.номер ... например |
|||
8
zbv
30.09.09
✎
11:17
|
(7) чтобы распечатать документ из внешнего источника (групповая обработка справочников документов) не надо было создавать форму документа.
|
|||
9
Михей
30.09.09
✎
11:17
|
(0) так как
ЭтотОбъект[Реквизит ]не всегда равно Ссылка[Реквизит] |
|||
10
mikecool
30.09.09
✎
11:18
|
(8) нда...
|
|||
11
Defender aka LINN
30.09.09
✎
11:18
|
(7) За такое - пожизненный эцих с гвоздями.
|
|||
12
крутойкодер
30.09.09
✎
11:19
|
(11) обоснуй
|
|||
13
Defender aka LINN
30.09.09
✎
11:21
|
(12) При обращении через точку считываются все реквизиты объекта. Пора бы знать.
|
|||
14
H A D G E H O G s
30.09.09
✎
11:22
|
Судя по темам аутора. он занимается восьмеркой с октября 2006.
Минимум. ППЦ, однозначен. Автор, ты из Москвы? |
|||
15
Дарлок
30.09.09
✎
11:24
|
...ггг ...
славный старый баянчег .. обычно заинтересовывает в первые 2-3 месяца изучения 8ки (14) +1 |
|||
16
Дарлок
30.09.09
✎
11:25
|
(6) кстати неверное объяснение.
|
|||
17
mikecool
30.09.09
✎
11:26
|
(14) а при чем тут местоположение автора? розжиг?
|
|||
18
Defender aka LINN
30.09.09
✎
11:28
|
(16) Да ну? Я в чем-то соврал? :)
|
|||
19
крутойкодер
30.09.09
✎
11:29
|
(14) ты распиши по сабжу.
потом я тебе все расскажу даже уровень своей зп и общий суммарный доход. опишу свою недвижимость и авто ;) тебя же это еще интересует ... давай |
|||
20
H A D G E H O G s
30.09.09
✎
11:29
|
(17) С чего бы розжиг?
Если он из МСК, да в хорошей конторе - почему бы мне не найти новую работку? :-) |
|||
21
крутойкодер
30.09.09
✎
11:30
|
(20) ыыыыыы
ну ну |
|||
22
mikecool
30.09.09
✎
11:30
|
(20) а, вон ты к чему :)))
|
|||
23
крутойкодер
30.09.09
✎
11:30
|
(20) 19 пост актуален
|
|||
24
Дарлок
30.09.09
✎
11:31
|
(18) сбор данных для печати появилось в первых конфигурациях .. в то время как механизм внешних подключаемых печатных форм, только в 2006-2007 году.
|
|||
25
Defender aka LINN
30.09.09
✎
11:33
|
(24) И чо? ©
|
|||
27
H A D G E H O G s
30.09.09
✎
11:38
|
(23) Примитивненько.
Документ реализация - набил товара, не сохранил, ЭтотОбъект.Товары поменялась, ЭтотОбъект.Ссылка.Товары - осталась та же (старая). Распечатал измененные данные. Нажал "Закрыть", на вопрос - "Сохранить документ, господин" - сказал - "Нет" |
|||
28
Aprobator
30.09.09
✎
11:39
|
+(27) кроме того чтобы вывести в печатную форму те требуется представление реквизита. Запросом это как то веселее получить.
|
|||
29
H A D G E H O G s
30.09.09
✎
11:40
|
(27) Примитивненько.
Открыл документ, пошел отлить. В это время другой юзер с другого компа поменял Товары. Вернулся ты, распечатал старую накладную. Это как вариант, я такого - не пробовал. |
|||
30
Wehrmacht
30.09.09
✎
11:40
|
Вообще то, насколько я в курсе, обращение к каждому реквизиту по ссылке с получением его представления -- это отдельный запрос. А тут как бы все одним махом получается, не более того.
|
|||
31
H A D G E H O G s
30.09.09
✎
11:41
|
(28) Представление() ты и сам можешь состряпать.
|
|||
32
zbv
30.09.09
✎
11:43
|
(10) да... чет я не много не о том... :(
|
|||
33
H A D G E H O G s
30.09.09
✎
11:43
|
(30) Плохо.
Плохо постановку задачи читаете. Это если ко вложенным полям реквизитов документа обращаться надо, тогда да. А так - оптимальнее реквизиты ДокументОбъект брать. Они уже прочитаны и закэшированны. |
|||
34
H A D G E H O G s
30.09.09
✎
11:43
|
(0) Пост (19) актуален?
|
|||
35
JustBeFree
30.09.09
✎
11:44
|
(30) Объяснение ежа вполне логично - печатаем то, что записано.
|
|||
36
Wehrmacht
30.09.09
✎
11:44
|
(33) Ну а тоже самое "Наименование" -- это как бы не вложенное поле реквизита документа?
|
|||
37
asp
30.09.09
✎
11:45
|
не зря в типовых установлен запрет печати измененных, но не записанных документов
|
|||
38
крутойкодер
30.09.09
✎
11:45
|
(29)черезчур примитивненько
а как же Если Документ.Модифицированность() Тогда Проведен = ?(Документ.Проведен, " и провести",""); Ответ = Вопрос("Документ изменен. Для печати его необходимо записать "+ Проведен +". |Записать" + Проведен + "?", РежимДиалогаВопрос.ОКОтмена, , КодВозвратаДиалога.Отмена, "Документ изменен"); |
|||
39
ShoGUN
30.09.09
✎
11:45
|
(26) Маленько неправ. Годятся все объяснения. Вопрос конечно, что основное, что побочное. Основное конечно - актуальность данных.
(36) Да. |
|||
40
ShoGUN
30.09.09
✎
11:46
|
(38) Это интерактивно, а программно грабли всё же могут возникнуть.
|
|||
41
BoBaBo
30.09.09
✎
11:46
|
внимание! (29) не ходил отливать!
|
|||
42
Wehrmacht
30.09.09
✎
11:47
|
(35) Но при этом перед печатью документа, если мне не изменяет склероз, его в принудительно-добровольном порядке предлагают записать, разве нет? Т.е. реквизиты ЭтотОбъект = реквизитам Ссылка, хотя и искусственно.
(40) Приведите пример такой ситуации |
|||
43
Wehrmacht
30.09.09
✎
11:47
|
(39) Да -- вложенное или да -- не вложенное?)
|
|||
44
H A D G E H O G s
30.09.09
✎
11:47
|
(38) см (29)
|
|||
45
H A D G E H O G s
30.09.09
✎
11:48
|
(43) Вложенное.
В документе - только ссылка (в норм. документе). |
|||
46
IamAlexy
30.09.09
✎
11:48
|
а как на счет того что запросом данные выдергиваются разово..
а при обращении к реквизитам между обращениями может реквизит поменяться ? |
|||
47
ShoGUN
30.09.09
✎
11:49
|
(43) Да - не вложенное.
Документ.Контрагент - лежит в объекте документа. Документ.Контрагент.Наименование - нет. |
|||
48
H A D G E H O G s
30.09.09
✎
11:50
|
(46) И какова вероятность?
|
|||
49
IamAlexy
30.09.09
✎
11:50
|
(48) ну если работает один пользователь в базовой версии - то вероятность не очень большая по видимому...
:) |
|||
50
крутойкодер
30.09.09
✎
11:51
|
(48)епть ну вероятность из 29 тоже галимая
какая нах разница распечатал я до того как пошел отливать или после если какой то хрыч док поменял |
|||
51
Wehrmacht
30.09.09
✎
11:52
|
(45) Ну так если оно вложенное, как его тогда брать из ЭтогоОбъекта без доп. затрат?! Толи вы сами себе противоречите, то ли я чего то не понимаю. Или вы в документе ГУИДы печатаете, а не наименования?)))
(47) А вы вообще противоречите себе в своем же посте)) |
|||
52
H A D G E H O G s
30.09.09
✎
11:53
|
(50) Культурнее попрошу, культурнее.
<<какая нах разница распечатал я до того как пошел отливать или после если какой то хрыч док поменял>> Это только я один в этой фразе неземную логику чувствую??? |
|||
53
H A D G E H O G s
30.09.09
✎
11:54
|
(47) (51) Вы в терминологии запутались.
Разберитесь, что во что вложено.. |
|||
54
ShoGUN
30.09.09
✎
11:54
|
(51) Тьфу :) Я вопрос в (36) Не так понял :)))
Короче - в объекте кэшируется только то, что через одну точку(свояства самого объекта). Никакого рекурсивного кэширования свойств не делается, пока это явно не указано. |
|||
55
agant
30.09.09
✎
11:55
|
а может это сделано в том числе для более быстрой адаптации конфигураций к 8.2. Ведь в 8.2 нельзя получить реквизиты через Ссылка. или ЭтотОбъект.
|
|||
56
Wehrmacht
30.09.09
✎
11:55
|
(55) Стопудово! Они еще со времен 8.0 уже строили свои коварные 8.2 планы.
|
|||
57
H A D G E H O G s
30.09.09
✎
11:56
|
(55) Ага.
3 года назад менеджеры сходили к гадалке и узнали об будущей архитектуре 8.2 |
|||
58
BoBaBo
30.09.09
✎
11:56
|
(52)
напечатал ушел хрыч поменял результат1 не напечатал (без учета наличия ограничителя-сабжа) хрыч поменял результат2 Итог: рез1 = рез2 |
|||
59
Wehrmacht
30.09.09
✎
11:58
|
(54) Про это не знал. Пруфлинк?
А вообще, в общем случае это же могут быть реквизиты любой вложенности. Так не лучше ли написать унифицированный алгоритм, а не ломать голову над каждым документом? |
|||
60
H A D G E H O G s
30.09.09
✎
12:01
|
(58) смотрим (29) внимательно.
В общем случае - ты видишь (и печатаешь) то, чего на самом деле нет в базе. |
|||
61
Wehrmacht
30.09.09
✎
12:02
|
(60) Печатаешь ты как раз то, что в базе, разве нет?
|
|||
62
H A D G E H O G s
30.09.09
✎
12:16
|
(61) Нет
В (29) ты печатает то, что ты прочитал из базы, до того, как данные были изменены другим юзером. Ты печатаешь неактуальные данные. |
|||
63
H A D G E H O G s
30.09.09
✎
12:16
|
Пост (19) актуален?
|
|||
64
H A D G E H O G s
30.09.09
✎
12:18
|
(62) Хотя я МОГУ ошибаться.
Просто это теория, на практике я такого не делал. Хотите - проверьте. Вдруг в момент ОбластьТабДок.Параметры.Код=ЭтотОбъект.Код; он предложит перечитать объект в принудительном порядке? Но теория - стройна. |
|||
65
BoBaBo
30.09.09
✎
12:20
|
(60) ну после изменеий старая распечатка тоже отражает то, чего в базе больше нет
|
|||
66
Wehrmacht
30.09.09
✎
12:24
|
(62) Я не очень понял, (27)(29) -- это пример чего вообще?)
|
|||
67
крутойкодер
30.09.09
✎
12:26
|
(63)тебе в аську, на почту или в общий доступ???
|
|||
68
H A D G E H O G s
30.09.09
✎
12:28
|
(67) Да мне пофиг.
Насчет новой работки - это шутка была. Нас и здесь неплохо кормят. Тебе респект, от слов своих не отказываешься, не то, что некоторые Завсомы... |
|||
69
John83
30.09.09
✎
12:29
|
(67) прямо тут :)
может сразу пойду работу другую искать :) |
|||
70
крутойкодер
30.09.09
✎
12:33
|
(68)зп 70
доход в месяц 120 я еще сайты пишу и прокачиваю у меня дом в подмосковье два года назад достроил ситроен с5 годовалый... еще кредит выплачиваю как то так |
|||
71
BoBaBo
30.09.09
✎
12:34
|
забыл саблю , барабан и лошадку!
|
|||
72
Дарлок
30.09.09
✎
12:51
|
+(71) и жениться....
я тут смотрю холивар устроили |
|||
73
Дарлок
30.09.09
✎
12:51
|
трудно найти смысл там где его нет
|
|||
74
крутойкодер
30.09.09
✎
13:07
|
(72)женат, дочь
ждем вторую ;)) |
|||
75
крутойкодер
30.09.09
✎
13:08
|
(71) ничем из перечисленного не располагаю ;)
|
|||
76
5 Элемент
30.09.09
✎
13:24
|
(74) да ты не крутой кодер, а крутой самец :)
|
|||
77
крутойкодер
30.09.09
✎
16:53
|
(76) ну это наверно преувеличение
но все равно спасибо |
|||
78
Гений 1С
гуру
30.09.09
✎
17:40
|
я кстати, тоже не догоняю, зачем это нужно. При таком подходе нельзя печатать незаписанные документы, что не эсть гут...
а если печатать из другого места, а не из модуля, пожно польчить ДокументОбъект через с-цылку, проблем не вижу. |
|||
79
Serg_1960
30.09.09
✎
18:01
|
Еще никто не вспомнил что запросы не используют кэшированные данные, а всегда обращаются к базе данных?
|
|||
80
acsent
30.09.09
✎
18:14
|
H A D G E H O G s ты не прав. В типовой нельзя распечатать документ у которого есть измененные реквизиты.
|
|||
81
Один С
30.09.09
✎
18:19
|
(80) это на уровне платформы зашито?
|
|||
82
acsent
30.09.09
✎
18:22
|
(81) Нет. Так сделано в ТИПОВЫХ конфах.
|
|||
83
Один С
30.09.09
✎
18:32
|
(82) а если самописка? надо эту проверку самому дописывать?
|
|||
84
Один С
30.09.09
✎
18:37
|
А с запросом можно, типа, не проверять - изменили не изменили один хер - распечатается только то что записано.
|
|||
85
acsent
30.09.09
✎
18:55
|
(84) Это еще хуже. Видишь одно, печатаешь другое
|
|||
86
asady
30.09.09
✎
19:19
|
(85) а трахать за что будут знаешь?
|
|||
87
BabySG
30.09.09
✎
19:52
|
(0) Сделано так, что бы не читать еще раз объект в память на сервере, ибо большинство процедур именно там выполняется. Это на клиенте у тебя объект в памяти, а не севвере и никакого кэша еще нет.
Именно поэтому заполняют СтруктуруШапкиДокумента, которую дальше везде используют, а не обращаются по имени, доступному через контекст. Вроде, кстати, это на ИТС описано. На курсах точно про это говорят. В качестве примера - ОбработкаПроведения. Там не обращаются напрямую, например, к Контрагент, а берут его из СтруктуруШапкиДокумента. Если мы обратимся напрямую, произойдет неявно чтение объекта в памятт на сервере. |
|||
88
Один С
30.09.09
✎
20:01
|
почему то вспомнились Mem.exe, HIMEM.SYS и т.д...
|
|||
89
Maniac
30.09.09
✎
20:03
|
аааа паржал. сразу 50 человек можно уволить.
|
|||
90
Maniac
30.09.09
✎
20:07
|
(0) в 1С делается это затем чтобы данные обрабатывались на сервере а не на клиенте. чтобы на клиента шли данные чисто по запрашиваемым реквизитам а не весь объект. если ты няпрамую обращаешся к ссылке то ссылка на объект полностью передается на клиента.
|
|||
91
Maniac
30.09.09
✎
20:09
|
к тому же каждое обращение к реквизиту объекта вызывает запрос к базе и передачу объекта полностью на клиента. запрос по реквизитам объекта в типовых передает на клиента чисто нужные данные один раз в виде временной таблицы.
|
|||
92
Ненавижу 1С
гуру
30.09.09
✎
20:09
|
(90) правда что ли? вот так вся ССЫЛКА и передается? и что же там передается?
|
|||
93
Maniac
30.09.09
✎
20:12
|
(92) да в общем то ничего не передается. просто при каждом обращении к реквизиту ссылки идет запрос к базе данных.
|
|||
94
Maniac
30.09.09
✎
20:14
|
и запрос этот делается на клиенте. а не на серваке.
|
|||
95
Aleksey_3
30.09.09
✎
20:14
|
А как такой вариант. Чтобы отвязаться в печатной форме от реквизитов в документе. Т.е. у тебя в печатной форме есть переменная "Контрагент",но в одном документе у тебя реквизит назван МойСамыйЛюбимыйКлиент, В другом ПростоКлиент. Вот запросом они и приводят к одному виду Контрагент
|
|||
96
Maniac
30.09.09
✎
20:17
|
(95) чо за бред.
Пойдите все курсы пройдите по 1С базовым объектам и хватит фигню моросить. там про это все толково рассказывают. что и зачем в 1С нужны исключительно запросы. |
|||
97
BabySG
30.09.09
✎
20:23
|
+ (96) Ответ был в (87) и (90), а нафлудили на 100 постов почти :)
|
|||
98
Ненавижу 1С
гуру
30.09.09
✎
20:27
|
(93) клиент вообще не взаимодействует с БД в клиент-серверном варианте и обращение Ссылка.МойРеквизит эквивалентно запросу
Выбор МойРеквизит Из ТаблицаСсылки Где Ссылка=&Ссылка Насчет того, что лучше запросом потому, что он один а по ссылке каждый раз запрос, не спорю, верно |
|||
99
ОбычныйЧеловек
30.09.09
✎
21:02
|
Может все таки кто-то ответить почему делается именно запрос а не используется "ЭтотОбъект" ? речь как я понял идет именно о типовых конфигурациях а там как уже было сказано стоит проверка на "не записанный" документ.
|
|||
100
ОбычныйЧеловек
30.09.09
✎
21:06
|
вопрос снимается..уже вижу что "H A D G E H O G s" написал
|
|||
101
Один С
30.09.09
✎
21:16
|
ну хорошо:
"обрабатывались на сервере", "полностью передается на клиента"... это все понятно. вопрос такой: ктонибудь замерял на сколько велика эта знаменитая "нагрузка на сервер"? ну, чтобы не голословно утверждать, что "оченно сеть грузиццо", а конкретно, с фактами на руках. Хотя бы порядок цифр? каков объем бедствия, так сказать? если этот метод грузит систему на 20-50% то это одно, а если на 0,001% то это совсем другое. или это все теоретическая теория? как с теми обезьянками и бананом? |
|||
102
Snovy
30.09.09
✎
21:25
|
В июне 2004, когда существовала первая (самая первая) версия УТ, вышла бета УПП (где кроме планирования и УТ ничего не было) и не было еще БП, насчет ЗУП не помню, на курсах разработчиков по УПП (ИТРП тогда) было доложено однозначно - только ради соответствия печатной формы данным в БД,иных мыслей у разработчиков не было.
|
|||
104
Serg_1960
01.10.09
✎
00:53
|
(89) "аааа паржал. сразу 50 человек можно уволить". Maniac, ты - 51-ый. Твои объяснения - в (90) полуправда, в (91) - полуложь. Ты всё перепутал :(
PS: Эта тема на форуме муссируется каждый год по несколько раз :( Пора бы поиском находить ответы :) Но всякий раз, вместо фактов - домыслы и суеверия. Как будто нет в природе информации и инструментов, способных внести ясность :( |
|||
105
ale654062
01.10.09
✎
00:53
|
да код не причем 100%
но если просишь.............. Функция Импорт_Файла_ДБФ(Параметр) ФайлБД = СоздатьОбъект("XBase"); Попытка ФайлБД.ОткрытьФайл(Путь,,1); Исключение Предупреждение(Путь + РазделительСтрок + "Ошибка открытия файла!"); Возврат 0; КонецПопытки; Если ФайлБД.Открыта() = 0 Тогда Предупреждение(Путь + РазделительСтрок + "Ошибка открытия файла!" + РазделительСтрок + "Возможно, файл используется другим приложением."); Возврат 0; КонецЕсли; ФайлБД.КодоваяСтраница(2-Кодировка); ФайлБД.Первая(); Пока (ФайлБД.вКонце() = 0) Цикл Если ФайлБД.ЗаписьУдалена() = 1 Тогда ФайлБД.Следующая(); Продолжить; КонецЕсли; Состояние("Обрабатывается строка №" + ФайлБД.НомерЗаписи()); ДатаОплаты = СокрЛП(ФайлБД.DATA); ДатаОплаты = Дата(Число(Сред(ДатаОплаты,7,4)),Число(Сред(ДатаОплаты,4,2)),Число(Сред(ДатаОплаты,1,2))); Если (ДатаОплаты <> Параметр.Получить("ДатаДок")) или (СокрЛП(ФайлБД.KL_CHK) <> РСчет) или (Цел(ФайлБД.CUR_ID) <> 980) Тогда ФайлБД.Следующая(); Продолжить; КонецЕсли; Если ФайлБД.DK = 1 Тогда // расход Сп = СоздатьОбъект("СписокЗначений"); Сп.Установить("Расход", ФайлБД.S); Сп.Установить("Приход", 0); ИначеЕсли ФайлБД.DK = 0 Тогда // приход Сп = СоздатьОбъект("СписокЗначений"); Сп.Установить("Расход", 0); Сп.Установить("Приход", ФайлБД.S); Иначе ФайлБД.Следующая(); Продолжить; КонецЕсли; Сп.Установить("Контрагент", ЗаменитьСимволыНазад((СокрЛП(ФайлБД.KL_NM_K)))); Сп.Установить("РСчет", ФайлБД.KL_CHK_K); Сп.Установить("ОКПО", СокрЛП(Цел(ФайлБД.KL_OKP_K))); Сп.Установить("МФО",СокрЛП(Цел(ФайлБД.MFO_K))); Сп.Установить("Содержание",ЗаменитьСимволыНазад(СокрЛП(ФайлБД.TEXT1))); Сп.Установить("НомерПП",СокрЛП(ФайлБД.ND)); Параметр.ДобавитьЗначение(Сп); ФайлБД.Следующая(); КонецЦикла; ФайлБД.ЗакрытьФайл(); Возврат 1; К |
|||
106
Wehrmacht
01.10.09
✎
16:48
|
(93) А я в (30) чо сказал? И не при каждом обращении -- после первого данные кешируются.
(94) Запрос на клиенте? К чему, интересно, он делается? ИМХО, увольняйся ка ты сам) |
|||
107
zbv
01.10.09
✎
16:57
|
не забывайте, что (0) спрашивает про печатные формы, а они в типовых сделаны в блоке:
#Если Клиент Тогда #КонецЕсли |
|||
108
Aprobator
02.10.09
✎
12:25
|
(107) дык, а где еще делать печатные формы? На сервере недоступен целый ряд методов табличного документа. Например ПроверитьВывод(), Показать().
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |