• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

вертикаль шаблон вставка строки

Автор dante47000, 12.12.14, 18:47:28

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dante47000

Здравствуйте уважаемые знатоки!!!

Суть проблемы - есть шаблон который может состоять из нескольких страниц, необходимо сделать так чтобы в самом конце
добавлялась строка с определенным текстом. При  чем нужно сделать так что б можно было выбирать ставить эту строку или нет.

я уже отчаялся... ни где ни чего путного не написано :(((
хоть подскажите в каком ключе двигаться в VB SCRIPTe

tur

Двигаться только вперед!

Задача задана некорректно!

1. Как вариант, создать новый класс Вертикали, в нём атрибут, потом вывести этот атрибут последней строкой если он "не пустой". Но этот вариант подразумевает под собой очень много действий по настройкам (кстати, нужно проверять будет работать или нет, в теории должен), в том числе: конфигуратор Вертикали (класс, атрибут, скрипт и т.д.), настройку формы технологии, настройку карты и т.д. А оно Вам надо?

2. Можно воспользоваться последним переходом на последней операции техпроцесса или последней операцией - так значительно проще и настраивать ничего не нужно!

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

P.S. Атрибут для существующего класса скорее всего не прокатит.

dante47000

Спасибо большое за советы.

я попробовал первый способ и все вроде бы чудно и славно если бы не одно но , мой класс почему то не хочет работать. я создал класс "ff", создал к нему атрибут  "name".
в тело класса прописал стандартно -

function showme( obj )
  ShowMe = obj.vrAttrByName("name").vrValue
end function

тип даных атрибута string

затем создал свой фильтр "filtr" и включил тудой свой класс

в редакторе шаблонов использовал свой фильтр, и прописал первым атрибут showme.
затем атрибуту задал функцию -


function FillAttr(start_x, start_y, clsAttr, obj)
  set FillAttr = rptBuilder.rDefaultHandlers.rFillAttr(start_x,start_y,clsAttr,obj)
  if (CBool(rptBuilder.rActiveBuild.rVariable("mask"))) then   
  FillAttr.rTextValue = "99999999999999999999999999999999999999999"
end if
end function

по идее тепрь при нажати галочки все должно вставляться, но чудо не произошло

после некоторых экспериментов я заметил что мое творение работает(как на скриншоте) только в том случае если я включаю в свой фильтр другие классы, такие как -


3d_model

user_folder

report

drawing

   пробовал также и некоторые другие классы включать но не все работают

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

например я скопировал 3d_model и вставил в Классы , появился 3d_model2 , все его связи идентичны оригиналу на схеме связей, но он не работает не понятно почему.
Вообщем хотелось бы понять почему не работает , что я делаю не так ? :|

tur

Карту шаблона и файл ТП выложите для начала, если не секрет конечно. Иначе долго гадать нужно, а лень.
Цитата: dante47000 от 25.12.14, 15:39:52
.......................

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


Копирование классов не есть правильно, потому что Вертикаль в некоторых функциях (прописано где-то внутри) проверяет ID и если они одинаковые, то может не работать или работать очень криво без объяснения причин.

P.S. К вопросу не относится, но выровняйте буквы в шаблоне по левому краю (левая колонка), а то они на цифры налазят и смотреть неприятно.

Вячеслав

Цитата: dante47000 от 12.12.14, 18:47:28
Здравствуйте уважаемые знатоки!!!

Суть проблемы - есть шаблон который может состоять из нескольких страниц, необходимо сделать так чтобы в самом конце
добавлялась строка с определенным текстом. При  чем нужно сделать так что б можно было выбирать ставить эту строку или нет.

я уже отчаялся... ни где ни чего путного не написано :(((
хоть подскажите в каком ключе двигаться в VB SCRIPTe


сделайте в наборе переменных какой-нибудь "флаг" (она же - "галочка"), при наличии его - печатать одно, при отсутствии - другое (или не печатать ничего вовсе). Например, там есть печать условного обозначения оснастки. По аналогии можно сделать.

dante47000

Цитата: Вячеслав от 25.12.14, 17:19:09
сделайте в наборе переменных какой-нибудь "флаг" (она же - "галочка"), при наличии его - печатать одно, при отсутствии - другое (или не печатать ничего вовсе). Например, там есть печать условного обозначения оснастки. По аналогии можно сделать.

ну собственно я так и сделал-

function FillAttr(start_x, start_y, clsAttr, obj)
  set FillAttr = rptBuilder.rDefaultHandlers.rFillAttr(start_x,start_y,clsAttr,obj)
  if (CBool(rptBuilder.rActiveBuild.rVariable("mask"))) then   
  FillAttr.rTextValue = "99999999999999999999999999999999999999999"
end if
end function


но проблема в том что в моем классе не хочет работать , просто ни чего не происходит, а если я это вставляю в класс tools или operation то он начинает печатать после каждой операции эту строку

dante47000

Цитата: tur от 25.12.14, 15:58:35
Карту шаблона и файл ТП выложите для начала, если не секрет конечно. Иначе долго гадать нужно, а лень.
Копирование классов не есть правильно, потому что Вертикаль в некоторых функциях (прописано где-то внутри) проверяет ID и если они одинаковые, то может не работать или работать очень криво без объяснения причин.

P.S. К вопросу не относится, но выровняйте буквы в шаблоне по левому краю (левая колонка), а то они на цифры налазят и смотреть неприятно.

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

tur

У тут как? (скриншот)

Все таки выложите файл ТП, просто создайте пустой файл, сохраните его и выложите сюда.

dante47000

Цитата: tur от 29.12.14, 09:05:27
У тут как? (скриншот)

Все таки выложите файл ТП, просто создайте пустой файл, сохраните его и выложите сюда.


tur

А вообще были случаи когда правильно выводилось?

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

Проверьте в настройках формы технологии/Формирователь карт - есть там на ДСЕ класс "ff"

dante47000

Цитата: tur от 30.12.14, 09:30:40
А вообще были случаи когда правильно выводилось?

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

Проверьте в настройках формы технологии/Формирователь карт - есть там на ДСЕ класс "ff"

правильно выводилось когда я в свой фильтр пихал drowning, 3d_model  ,  но как я понял выводилось это только тогда когда в файлах ТП есть 3D модель или чертеж , при удалении того и другого фильтр с использованием этих классов переставал работать) а при использовании класса report:Отчеты строка выводилась стоько раз сколько карт шаблона используется . К сожалению теперь я смогу это посмотреть после 12 января , раньше на работу не пустят(

tur

Цитата: dante47000 от 30.12.14, 11:38:11
правильно выводилось когда я в свой фильтр пихал drowning, 3d_model  ,  но как я понял выводилось это только тогда когда в файлах ТП есть 3D модель или чертеж , при удалении того и другого фильтр с использованием этих классов переставал работать) а при использовании класса report:Отчеты строка выводилась стоько раз сколько карт шаблона используется . К сожалению теперь я смогу это посмотреть после 12 января , раньше на работу не пустят(


А если в ваш фильтр добавить классы операция и переход?

dante47000

Цитата: tur от 05.01.15, 09:14:59
А если в ваш фильтр добавить классы операция и переход?

если вставить в мой фильтр классы операция и переход то они и будут работать , в отличие от моего класса. А все это будет выглядеть примерно как на скриншоте.(вставляет куда попало и сколько попало)

tur

В качестве временного решения могу предложить следующее:

1. Создать новый класс с одним атрибутом, к операции
2. В настройке форма технологии в дереве и отчетах поставить его последним.
3. Технолог на последнюю операцию будет добавлять новый класс.
4. Технолог должен в атрибуте класса или набирать или выбирать из списка нужный текст.


P.S. Поговорите со своими технологами, может они согласятся чтобы нужный вам текст выводился на первой странице в шапке, это решит вашу проблему. 

dante47000

Цитата: tur от 21.01.15, 09:52:13
В качестве временного решения могу предложить следующее:

1. Создать новый класс с одним атрибутом, к операции
2. В настройке форма технологии в дереве и отчетах поставить его последним.
3. Технолог на последнюю операцию будет добавлять новый класс.
4. Технолог должен в атрибуте класса или набирать или выбирать из списка нужный текст.


P.S. Поговорите со своими технологами, может они согласятся чтобы нужный вам текст выводился на первой странице в шапке, это решит вашу проблему. 



К сожалению такой вариант не возможен.
На сколько я понял класс можно создать но чтобы он работал он должен чем то подкрепляться, по этому все же решил использовать свой фильтр в который включил ОТЧЕТЫ (REPORTS), т.к. он присутствует в любом шаблоне, но у него есть минус: при  использовании этого кода

function FillAttr(start_x,start_y,clsAttr,obj)
set FillAttr = rptBuilder.rDefaultHandlers.rFillAttr(start_x,start_y,clsAttr,obj)

if (CBool(rptBuilder.rActiveBuild.rVariable("vstav"))) then
         FillAttr.rTextValue = "99999999999999999999999999999999999999999999999"
         else FillAttr.rTextValue = ""
         end if 
end function   

в функции атрибута выводится строка столько раз сколько подключено шаблонов .

а при использовании вот этого кода

function FillAttr(start_x,start_y,clsAttr,obj)
i=1
do while i=(rBuildDocCount-1)
if rBuildDocCount<>1 then 
i=i+1
end if
rBuildDocCount(i) = null
loop

set FillAttr = rptBuilder.rDefaultHandlers.rFillAttr(start_x,start_y,clsAttr,obj)

if (CBool(rptBuilder.rActiveBuild.rVariable("vstav"))) then
         FillAttr.rTextValue = "99999999999999999999999999999999999999999999999"
         else FillAttr.rTextValue = ""
         end if 
end function   

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

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