Перейти к содержимому


Дата в шаблоне docx

шаблоны дата

Сообщений в теме: 8

#1 Илья

    Активный участник

  • Пользователи
  • PipPipPip
  • 173 сообщений

Отправлено 24 Февраль 2012 - 14:48

Здравствуйте!

Версия Базы 1.9.5 web, ревизия 3298 от 2012-01-24.

Хочу сделать чтоб в шаблон DOCX вставлялись разные части даты в разные места. Т.е по раздельности в одну ячейку - число, во вторую - месяц, в третью год.
В редактировании шаблона, в вычисляемой переменной пишу код:

$data = data_table("Командировочные удостоверения","id={ID}");
$result = $data["Начало командировки"];
return date('d',strtotime($result));

И вроде бы всё хорошо, всё срабатывает, но при повторном входе в редактирование шаблона получаю ошибку:

Цитата

Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in /var/www/cb/forms.php on line 532
и при этом всё работает.

Пожалуйста, подскажите, в чем дело, и как подправить код?

И еще один у меня вопрос-можно ли как-либо писать месяц прописью в шаблоне DOCX?

Спасибо!

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Февраль 2012 - 10:06

Цитата

И вроде бы всё хорошо, всё срабатывает, но при повторном входе в редактирование шаблона получаю ошибку
Обновите ревизию до последней. Возможно ошибка исчезнет, возможно что нет, но в любом случае необходим свежий текст ошибки.

Цитата

И еще один у меня вопрос-можно ли как-либо писать месяц прописью в шаблоне DOCX?

$data = data_table("Командировочные удостоверения","id={ID}");
$result = $data["Начало командировки"];
return data2str(strtotime($result),'F');


#3 Rapman

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 13 Декабрь 2016 - 03:11

Просмотр сообщенияCbCoder (27 Февраль 2012 - 10:06) писал:

Обновите ревизию до последней. Возможно ошибка исчезнет, возможно что нет, но в любом случае необходим свежий текст ошибки.



$data = data_table("Командировочные удостоверения","id={ID}");
$result = $data["Начало командировки"];
return data2str(strtotime($result),'F');

Подскажите пожалуйста, а как сделать, чтобы выводило в формате: " "12" декабря 2016 " ?
И еще. Такой код:
$data = data_table("Карточки клиентов","id={ID}");
$result = $data["Дата договора"];
return data2str(strtotime($result));
Выдает результат:
'30 ноября -0001'
Причем всегда эта дата(в таблице такой нет). Пробовал добавлять форматы 'd F Y', 'j' и тп- все выдает производные этой даты.
Нагуглил решение проблемы, но самостоятельно суть решения не осилил. Там что-то о несоответствии системного формата даты-времени с пользовательским(которым оперирует пользователь в процессе вычисления переменных в своем коде). Вот:
public function formatDateBack($dtm)
{	  
    if(is_null($dtm) || $dtm == '0000-00-00') return 'whatEverYouLike';
    $datum = new DateTime($dtm);
    return $datum->format('d.m.Y');
}


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Декабрь 2016 - 09:57

Просмотр сообщенияRapman (13 Декабрь 2016 - 03:11) писал:

И еще. Такой код:
$data = data_table("Карточки клиентов","id={ID}");
$result = $data["Дата договора"];
return data2str(strtotime($result));
Выдает результат:
'30 ноября -0001'

А в $data["Дата договора"] какое значение лежит, в данном случае? И тип у поля "дата" или "текст"?

#5 Rapman

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 14 Декабрь 2016 - 17:54

Просмотр сообщенияCbCoder (13 Декабрь 2016 - 09:57) писал:

А в $data["Дата договора"] какое значение лежит, в данном случае? И тип у поля "дата" или "текст"?
Лежит получается "0000-00-00", хотя должно подтягивать 20.12.2015. Тип поля...в таблице "Карточки клиентов"- datetime. Но шаблоны печатаю из таблицы "Договор", в которой это поле типа "связь" с тем же полем таблицы "Карточки клиентов". Стандартные значения он нормально подтягивает в docx. Например, DOCVARIABLE Дата_договора.Дата_договора. Видимо, проблема не только в ошибке преобразования даты. Оно еще и дату не может взять из таблицы. Пробовал сменить в коде таблицу на "Договор"- то же самое. В docx выводит в лучшем случае 1 января 1970.
Прикрепил скрин?зображение

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Декабрь 2016 - 09:28

У вас запрос к таблице неверный. Условие "id={ID}" используется для доступа к текущей записи текущей таблицы, а у вас как я понял текущая таблица в шаблоне не "Карточки клиентов", а "Договор", с которой "Карточки клиентов" связана через поле связи. Соответственно, код должен быть другим:

$cur_rec = data_table("Договор", "id={ID}"); // получаем текущую запись текущей таблицы
$data = data_table("Карточки клиентов", "id=".$cur_rec["Дата договора"]); // получаем запись из карточки клиентов через поле связи
$result = $data["Дата договора"];
return data2str(strtotime($result));


P/S: Из вашего текста я понял, что имя поля связи в Договорах с Карточкой клиента - тоже "Дата договора". Если это не так, необходимо поменять его в $cur_rec["Дата договора"]. Если же так, значит код рабочий, но вообще так поля связи не делают.

#7 Rapman

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 15 Декабрь 2016 - 15:49

Просмотр сообщенияCbCoder (15 Декабрь 2016 - 09:28) писал:

код
Шикарно, благодарю.
И еще вопрос- как сделать, чтобы число выводилось в кавычках? Например, "25" декабря 2015.


Просмотр сообщенияCbCoder (15 Декабрь 2016 - 09:28) писал:

так поля связи не делают
Да, мне еще много предстоит узнать...

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Декабрь 2016 - 16:58

Цитата

как сделать, чтобы число выводилось в кавычках? Например, "25" декабря 2015

return data2str(strtotime($result),'"d" F Y');

При этом "d" выведет "01" первого числа. Если нужно "1" без нуля, то замените на "j".

#9 Rapman

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 22 Декабрь 2016 - 22:22

Спасибо, работает





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных