Имя: Пароль:
1C
1С v8
зачем используют шапку документа?
0 hatsher
 
16.03.12
11:44
Любая типовая процедура печати документа:

   ЗапросШапка = Новый Запрос;
   ЗапросШапка.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
   ЗапросШапка.Текст =
   "ВЫБРАТЬ
   |    Номер,
   |    Дата,
   |    ДоговорКонтрагента,
   |    ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
   |    Контрагент КАК Получатель,
   |    Организация КАК Поставщик,
   |    Организация,
   |    СуммаДокумента,
   |    ВалютаДокумента,
   |    УчитыватьНДС,
   |    СуммаВключаетНДС
   |ИЗ
   |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
   |
   |ГДЕ
   |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
   Шапка = ЗапросШапка.Выполнить().Выбрать();
   Шапка.Следующий();


А потом далее по тексту подставляется шапка.Получатель, шапка.Дата и пр. Зачем нужно так делать, почему не использовать просто организация, дата и пр ? ведь значения реквизитов Ссылка и Объект в этих процедурах всегда совпадают(незаписанный док нельзя вывести на печать)? Зачем нужно получать шапку, состоящую из значений реквизитов документа?
1 Господин ПЖ
 
16.03.12
11:45
это меьше напрягает базу и сводит к 0 шанс получить рассогласованные данные
2 hatsher
 
16.03.12
11:49
(1) забавно. если бы можно было печатать модифицированные документы, то рассогласование данных было бы как раз в этом случае. А новые документы не печатались бы вообще. А напрягать базу - не думаю, что будет хоть какая-нибудь разница в проиводительности
3 Ненавижу 1С
 
гуру
16.03.12
11:50
(0) это кажется что совпадают, другой юзер смело может уже что-то изменить, пока вы чай пили с открытым документом
4 France
 
16.03.12
11:52
(2) и зря не думаешь. в случае запроса одно обращение к базе.. если использовать реквизиты прямо - обращения равны количеству реквизитов.. глянь в скл версии в профайлер..
5 Ненавижу 1С
 
гуру
16.03.12
11:54
(4) даже к реквизитам объекта? ))
6 Kashemir
 
16.03.12
11:55
(5) С объектом то все понятно, очевидно (4) имел ввиду обращение по ссылке.
7 НЕА123
 
16.03.12
12:38
(0)
при создании объекта нет данных. (кроме ссылки).
если надо при создании объекта существующего его печатать, то только запросом к базе.
непонятно, когда это нужно по-жизни...
перестраховка, скорее, но нормально..
8 okmail
 
16.03.12
12:52
Немного не так. При обращении напрямую к реквизитам объекта в кэш читается весь объект целиком, вместе со всеми табличными частями.
При выборке данных запросом такой проблемы нет.
Все дело в производительности и попытке ускорить проведение документа, чтобы избежать длительных блокировок данных (проведение осуществляется в транзакции и на время проведения блокируются нужные данные).
9 okmail
 
16.03.12
12:53
(5) Если к реквизитам объекта то да, идет обращение к базе. Если к реквизитам формы, то обращения к базе не будет.
10 Господин ПЖ
 
16.03.12
15:42
печатать с реквизитов формы - такое кодируют по накурке обычно...
2 + 2 = 3.9999999999999999999999999999999...