Имя: Пароль:
1C
1С v8
Представление документа в СКД
,
0 MistaEr
 
14.09.18
17:03
Всем доброго времени!
Отчет СКД. Выводятся много документов. Представление документов строится в общем модуле, "Мой документ " + Документ.Организация + Документ.Подразделение + Документ.Номер + Документ.Дата.
Документ.Дата нужно получить без времени. Ну ладно, я согласился что в запросе невозможно привести дату в нужный мне формат и представление документа собрал вручную в общем модуле. В консоле запросов ПредставлениеСсылки(Документ) тоже красиво все выводит, но проходит через процедуру много раз, это не оптимально.
В СКД строю отчет, отчет выполняется в фоне, представление берется так же из процедуры события. Это же тоже не оптимально?
1 Пуля
 
14.09.18
17:07
Отрежь последние 8 символов
2 MistaEr
 
14.09.18
17:10
(0) Собрал бы я представление документа не показывая ссылку, снова даты лезут с временем. Формат не работает и в вычисляемых выражениях и в пользовательских полях тоже
3 MistaEr
 
14.09.18
17:11
(1) Дату не получится со строкой сложить
4 Cool_Profi
 
14.09.18
17:13
Сделай общий модуль с повторно используемыми значениями.
Будет быстрей.
5 MistaEr
 
14.09.18
17:14
(4) Входящие параметры будут разные документы. Смысл?
6 Пуля
 
14.09.18
17:22
(3) Получится
7 dmt
 
14.09.18
17:26
(2) давно ли это Формат не работает?
8 MistaEr
 
14.09.18
17:33
(7) Как я понял там язык запросов только
9 MistaEr
 
14.09.18
17:33
(6) Подскажи
10 dmt
 
14.09.18
17:38
(8) в вычисляемых выражениях? нет, смело пиши Формат(, "ДФ=dd.MM.yy")
11 MistaEr
 
14.09.18
18:20
Спасибо поробую
12 echo77
 
15.09.18
12:19
(0)
Вот так писал:

// Функция возвращает представление документа в виде Документ.Синоним <Номер> от <Год>г.
//
// Параметры:
//  Документ     - ДокументСсылка/ДокументОбъект
//    Дата        - Дата и время документа. Это для того чтобы исключить обращение к БД
//
// Возвращаемое значение:
//   Строка   - Строка вида Заказ на производство 00000043750 от 2016 г.
//
Функция ПолучитьКраткоеПредставлениеДокумента(Документ, Дата = Неопределено) Экспорт
    
    Если Не ЗначениеЗаполнено(Документ) Тогда
        Возврат Документ
    КонецЕсли;
    
    Попытка
        ДатаДокумента = ?(Дата <> Неопределено, Дата, Документ.Дата);
        
        ДокументПредставление = Строка(Документ);
        
        ДокументПредставление = СтрЗаменить(Документ, ДатаДокумента, "");
        ДокументПредставление = ДокументПредставление + Формат(ДатаДокумента, "ДФ='yyyy ""г.""'");
        
        Возврат ДокументПредставление
    Исключение
        // Если что-то пошло не так - возвращаем то что получили
        Возврат Документ
    КонецПопытки;
    
КонецФункции

Чтобы не ходить каждый раз в базу данных делаем так: создаем функцию, которая на входе получает параметры примитивных типов(Строка, число, дата), минимум ссылок - чтобы не ходит в БД.
А в СКД, при вызове этой функции передаем ей параметры так Строка(Документ.Организация), Строка(Документ.Подразделение),  Документ.Номер, Документ.Дата

в итоге СКД на этапе запроса получит представления этих данных
13 EvgeniuXP
 
16.09.18
15:56
Или запиши представление сразу в базу и вытягивай от туда.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший