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


Работа с шаблоном ODT


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

#1 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 12 Февраль 2014 - 13:48

Доброго времени суток!)
При работе с шаблоном ODT обнаружилось, что оказывается документация не дописана и нужно какое-то вычисление, дабы пустые поля отображались пустым местом, как и предумотрено в других шаблонах..а на данный момент выглядит все вот так
http://take.ms/Pu8Nq
Кто сталкивался, у кого-то получилось решить эту проблему?)

#2 CbCoder

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

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

Отправлено 12 Февраль 2014 - 14:16

Добавляете переменную, выводящую пробел в случае, если значение пусто.

#3 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 12 Февраль 2014 - 14:22

В смысле? Идет ссылка на таблицу контрагентов, на многие поля. Можете пояснить более конкретно?Как именно?

#4 CbCoder

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

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

Отправлено 12 Февраль 2014 - 14:28

Забыл уточнить: добавляете вычисляемую переменную, в настройках шаблона. Затем вставляете эту переменную непосредственно в документ вместо переменной поля.

#5 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 12 Февраль 2014 - 14:31

Скажите, а можно ли примером как-то пояснить?
Мне итак непонятно почему это не прописано в документации (ибо наверняка ведь не только у меня поля пустые могут это,а это нормально),
так я еще и по такому описанию совсем не могу понять что требуется сделать.

#6 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 12 Февраль 2014 - 14:32

Сюда нужно добавить,так понимаю. Что именно? http://take.ms/IqlCM

#7 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 12 Февраль 2014 - 14:32

И почему в документ? В первом скрине видно,что у меня несколько полей не заполнились,так как в системе они пустые. как проставить и куда?к каждому полю?

#8 CbCoder

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

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

Отправлено 12 Февраль 2014 - 16:34

Сюда нужно добавить,так понимаю http://take.ms/IqlCM

Да, разумеется.

Что именно?

Я же пояснил: выводите пробел, в случае если значение поля равно пустой строке. Все остальное стандартно для вычисляемой переменной.

к каждому полю?

Да, вместо каждого поля, где значение может быть равно пустой строке. На данный момент проблема решается только так.

#9 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 12 Февраль 2014 - 18:16

На данный момент видела в документации только примерно такого формата
$cur_rec = data_table("Договор","id={ID}"); return num2str($cur_rec['Сумма'],"none","none",0);
КАк в данном случае прописать?
То есть добавляю сюда,называю
http://take.ms/85HNm
А что прописать в вычисляемой?
МОжно ли дать корректный ответ?в документации ни слова,я не представляю как сделать даже!
Тем более для каждого поля..КАк в odt то прописать? Получается вставляю поле из списка и как указать пробел?
Если бы поняла сразу-я бы не спрашивала 100 раз..разъясните пожалуйста с примером для одной переменной.

Сообщение отредактировал Dinara: 12 Февраль 2014 - 18:16


#10 CbCoder

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

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

Отправлено 13 Февраль 2014 - 08:55

КАк в данном случае прописать?

$cur_rec = data_table("Договор","id={ID}"); // стандартная часть - получаем текущую строку
if ($cur_rec['Поле']=="") return " "; else return $cur_rec['Поле']; // если поле равно пустой строке - выводим пробел, иначе выводим содержимое поля


КАк в odt то прописать? Получается вставляю поле из списка?

Да, после добавления всех необходимых переменных скачиваете документ из шаблона, переменные должны появиться в списке для вставки внутри документа.


МОжно ли дать корректный ответ?в документации ни слова,я не представляю как сделать даже!

В документации не могут быть примеры на все случаи жизни, там описан общий принцип создания переменных для шаблонов, остальное пишется исходя из логики конкретной ситуации. Я ведь описал вам алгоритм сразу же, в первом сообщении.

#11 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Февраль 2014 - 10:22

$cur_rec = data_table("Пробные договора","id={ID}"); // стандартная часть - получаем текущую строку
if ($cur_rec['Компания']['Руководитель (В родительном падеже!)']=="") return " "; else return $cur_rec['Компания']['Руководитель (В родительном падеже!)']; // если поле равно пустой строке - выводим пробел, иначе выводим содержимое поля
Прописала, в контрагенте поле http://take.ms/NSL06
А получаем в переменной http://take.ms/Cfq2u в тексте цифра 4.. Не пойму куда ссылается?
Пробовала также в просто "Договора" поставить эту переменную-все равно цифра 4 октуда-то берется(

Сообщение отредактировал Dinara: 13 Февраль 2014 - 11:28


#12 CbCoder

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

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

Отправлено 13 Февраль 2014 - 13:07

Данный код корректно работает только для текстовых полей, у вас же поле с типом "связь". Массив $cur_rec, полученный из data_table, одномерный, в нем нет второго уровня, не путайте с $line. Второй уровень нужно подтягивать отдельно:

$cur_rec = data_table("Пробные договора","id={ID}"); // стандартная часть - получаем текущую строку
$client = data_table("Контрагенты","id=".$cur_rec['Компания']); // получаем данные компании
if ($client['Руководитель (В родительном падеже!)']=="") return " "; else return $client['Руководитель (В родительном падеже!)']; // если поле равно пустой строке - выводим пробел, иначе выводим содержимое поля

Если у Вас возникают подобные принципиальные сложности с написанием простых вычислений, рекомендую подождать выхода ревизии с системным исправлением этой проблемы, а не пытаться решать ее самостоятельно данным обходным маневром. Например, для полей с типом пользователь код будет тоже иным. Тем не менее обычно даже для начинающего программиста, работающего с КБ, подобное сложностей не представляет.

#13 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Февраль 2014 - 13:28

Спасибо!помогло! Пользователей пока что не нужно,того что есть-хватит для работы с системой до обновления.
Я рада,что начинающий программист может работать сразу в КБ и без сложностей, я же не программист, но пытаюсь также ковыряться в вашей программе, дабы не поддаваться разговорам руководства "а может сменить систему", ибо ваша мне нравится и менять бы не хотелось.





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

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