Вопрос по обработке выборки данных для табличного документа

1. Алексей Колычев (akolychev) 05.01.17 22:08 Сейчас в теме
Заранее извиняюсь, если вопрос слишком глупый, но сам новичок, не могу понять как с этим справиться. Есть внешняя печатная форма трудового договора, выводящая табличный документ. Делаю запрос, помещаю все в табличный документ, но форматы дат отражаются не так как нужно, то есть с часами, минутами и секундами. Задать параметр через, например:
Макет.Параметры.ДатаРожденияРаботника = Формат(Выборка.ДатаРожденияРаботника,"ДЛФ=DD")) не очень хороший вариант в моем случае - документ имеет 2 макета, и какой то параметр одного может отсутствовать в другом, и тогда получаем "Поле объекта не обнаружено". Задать параметр в самом макете тоже не подходит - параметр может находится не в отдельной ячейке, и иметь тип Шаблон. Вопрос - можно ли какой то процедурой обработать данные выборки (те же форматы дат), до заполнения макета данными из выборки, и как?
Ответы
2. _ Дмитрий _ (Healer) 06.01.17 00:37 Сейчас в теме
Формат следует установить в свойствах ячейки с параметром "ДатаРожденияРаботника". Ну или проверить наличие параметра в табличном документе и если есть то вот так:
Макет.Параметры.ДатаРожденияРаботника = Формат(Выборка.ДатаРожденияРаботника,"ДЛФ=Д"));
3. Алексей Колычев (akolychev) 07.01.17 11:38 Сейчас в теме
(2) Параметр не в ячейке, он внутри текста. Так (Макет.Параметры.ДатаРожденияРаботника = Формат(Выборка.ДатаРожденияРаботника,"ДЛФ=Д")) я тоже пробовал, работает. Но вопрос, можно ли установить обработку форматов какой либо процедурой, чтоб наличие или отсутствие параметра в макете игнорировалось.
4. Регина Калеева (KRV_it) 09.01.17 05:24 Сейчас в теме
(3) А если попробовать установку параметра в попытке? Просто для каждого макета свою попытку, тогда в ошибку вылетать не будет, и при нахождении этого параметра изменит формат.
5. Николай Ткаченко (areavel) 09.01.17 09:14 Сейчас в теме
Можно через переменную, а туда записывать тип строка.
6. Алексей Колычев (akolychev) 09.01.17 09:28 Сейчас в теме
(4) Пробовал, но есть свои минусы. Хотя пока именно на этом варианте я и остановился.
7. Алексей Колычев (akolychev) 09.01.17 09:29 Сейчас в теме
Напишите ваше сообщение
(5) Поясните пожалуйста
8. Николай Ткаченко (areavel) 09.01.17 09:37 Сейчас в теме
НовПеременная = Формат(Выборка.ДатаРожденияРаботника,"ДЛФ=Д"));
Если ЗначениеЗаполнено(НовПеременная) Тогда
Макет.Параметры.ДатаРожденияРаботника = НовПеременная;
КонецЕсли;
9. Николай Ткаченко (areavel) 09.01.17 09:46 Сейчас в теме
у вас от чего зависит какой из макетов будет использоваться? от данных в документе?
10. _ Дмитрий _ (Healer) 09.01.17 12:29 Сейчас в теме
В запросе, из которого выполняется заполнение параметров шаблона, дату можно преобразовать в строку вида "30.01.2017" следующим образом:

ВЫБРАТЬ 
    ПОДСТРОКА("0123456789", МЕСЯЦ(СправочникФЛ.ДатаРождения) / 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(СправочникФЛ.ДатаРождения))) / 6 + 1, 1) 
    + "." 
    + ПОДСТРОКА("0123456789", ДЕНЬ(СправочникФЛ.ДатаРождения) / 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(СправочникФЛ.ДатаРождения))) / 6 + 1, 1)
    + "." 
   + ПОДСТРОКА("0123456789", ГОД(СправочникФЛ.ДатаРождения) / 1000 + 1, 1) 
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(СправочникФЛ.ДатаРождения) * 0.06)) / 6 + 1, 1) 
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(СправочникФЛ.ДатаРождения) * 0.6)) / 6 + 1, 1) 
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(СправочникФЛ.ДатаРождения) * 6)) / 6 + 1, 1) КАК ДатаРожденияРаботника
...Показать Скрыть
Оставьте свое сообщение