перенос функции

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

перенос функции

Сообщение Espada »

Всем привет. У меня такая проблемка: когда выбираем в каталоге "организации и банки" какую либо организацию и нажимаем печать(CTRL+P), выбираем из списка нужный отчет и он автоматом рассчитывает сальдо и добавляет его в отчёт. проблема состоит в том что мне необходимо сделать так чтобы такой же расчет происходил по определенной организации( с которой связан документ выбранный на форме "основание на продажу" в Сбыте).
Вот код в который необходимо "запихнуть" данную функцию

Код: Выделить всё

#component "L_BaseDoc"
const
	cmbut1=143213;
end;
 alter interface VSCHET;
 create view var kkk1:longint condition org  as basedoc.cdogovor=coGetTune('MYORG');
 window wvschet;
handleevent 

	cmPrintdoc :
			{
			  ...функция вычисления...
			}

	cmInit:
            {
			if(Inherited::HandleEvent(cmInit) = heOk)
              {
			}
		   ...настройки кнопки...
		  }
	cmbut1:
		{
			...расчеты выполняемы этой кнопкой...
		}
end;
end;
end.
при необходимости могу сбросить код отчёта в котором эта функция используется. кто сталкивался с похожей проблемой или кто может направить в нужное русло помогите плиз)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: перенос функции

Сообщение Алексей »

т.е. вы печатаете ДО на продажу и... так может проще доработать саму форму бизнес-текста, вместо докомпиляции интерфейса? печатные формы тоже подлежат доработке, изменению, вплоть до разработки новых на основании существующих прототипов.
в конфигураторе установите параметр forms.fcenv=on, получив отчет переключите закладку на "настройка отчетов" и стоя на форме нажмите ф4.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: перенос функции

Сообщение RAJAH »

Алексей
Тоже заметил такую тенденцию: почему-то новички сразу начинают с докомпиляций, хотя редактировать формы (или даже создавать свои) проще, и, наверное, дерзать программировать в "Галактике" нужно с этого.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: перенос функции

Сообщение Espada »

Алексей писал(а):т.е. вы печатаете ДО на продажу и... так может проще доработать саму форму бизнес-текста, вместо докомпиляции интерфейса? печатные формы тоже подлежат доработке, изменению, вплоть до разработки новых на основании существующих прототипов.
в конфигураторе установите параметр forms.fcenv=on, получив отчет переключите закладку на "настройка отчетов" и стоя на форме нажмите ф4.
я наверное немного не правильно выразился. отчет(который печатаю) находится в каталоге организаций, его редактировать ненужно. в нём есть функция расчета сальдо по выбранным организациям, и эту функцию нужно привязать к форме ДО(т.е при выборе документа из списка нужно пересчитывать сальдо поконтрагенту). как-то так.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: перенос функции

Сообщение edward_K »

Вы наверное неправильно поняли.... Почитайте vipprogr.chm что такое форма прототип и что такое присоединенная форма. А заодно что такое автономная(или ard). Последнюю можно вызвать из любой другой формы.
.AutoForm ShowErrorED(lTabN:longint;w:string)
.table blank
...

RunForm(ShowErrorED,gTabN,wstr1)
Вызвать присоединенную форму из другой нельзя!. В некоторых случаях можно вызвать фейс, который формирует поток для присоединенки - если он сам будет независимым. Лучше сделать объектный интерфейс(или просто интерфейс с параметрами) и вызывать уже его из ваших форм. Для ДО вам понадобится либо отдельная форма, либо докомпиляция с перехватом события cmPrintDoc. Вообще формы бизнес-текста(FCOM) считаются устаревшими.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: перенос функции

Сообщение Espada »

edward_K писал(а):Вы наверное неправильно поняли.... Почитайте vipprogr.chm что такое форма прототип и что такое присоединенная форма. А заодно что такое автономная(или ard). Последнюю можно вызвать из любой другой формы.
.AutoForm ShowErrorED(lTabN:longint;w:string)
.table blank
...

RunForm(ShowErrorED,gTabN,wstr1)
Вызвать присоединенную форму из другой нельзя!. В некоторых случаях можно вызвать фейс, который формирует поток для присоединенки - если он сам будет независимым. Лучше сделать объектный интерфейс(или просто интерфейс с параметрами) и вызывать уже его из ваших форм. Для ДО вам понадобится либо отдельная форма, либо докомпиляция с перехватом события cmPrintDoc. Вообще формы бизнес-текста(FCOM) считаются устаревшими.
я просто хотел узнать, можно-ли "Вырвать" функцию из кода отчёта, и вставить его в виповский фай(*.vip) и откомпилировать( т.е. синтаксис кода будет таким же или переделывать) чтобы эта функция выполнялась перед загрузкой формы. новых отчетов создавать не нужно.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: перенос функции

Сообщение edward_K »

Вырвать можно. Объем переделки зависит от кода - от незначительных - заменить ., begin, end. на пусто, {, } до более маштабных, в данном случае наверняка надо переносить логическую таблицу из формы. Лучше переделать на отдельный фейс, который запускать как runInterface(...., nrec_организации) - в этом случае переделок будет меньше, да и в целях обеспечения унификации действий будет полезно.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: перенос функции

Сообщение Espada »

edward_K писал(а):Вырвать можно. Объем переделки зависит от кода - от незначительных - заменить ., begin, end. на пусто, {, } до более маштабных, в данном случае наверняка надо переносить логическую таблицу из формы. Лучше переделать на отдельный фейс, который запускать как runInterface(...., nrec_организации) - в этом случае переделок будет меньше, да и в целях обеспечения унификации действий будет полезно.
спасибо за идею. пробую
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: перенос функции

Сообщение Espada »

Ещё раз Здравствуйте. уже 4 день вожусь с переносом функции. всё компиляция проходит, переделал логические таблицы отредактировал сам код, реакции 0! попробовал привязать к кнопке тоже самое :cry:
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: перенос функции

Сообщение RAJAH »

Espada писал(а):Ещё раз Здравствуйте. уже 4 день вожусь с переносом функции. всё компиляция проходит, переделал логические таблицы отредактировал сам код, реакции 0! попробовал привязать к кнопке тоже самое :cry:
По-моему, слишком всё усложняете. Для расчёта сальдо есть же стандартные функции: 'GetKontrBalance' (баланс расчётов) или 'Calc_NewSaldo' (бухгалтерское сальдо).
Последний раз редактировалось RAJAH 27 май 2013, 16:35, всего редактировалось 1 раз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: перенос функции

Сообщение edward_K »

Письмо на деревню дедушке
....
Чтобы понять, что вы делаете неправильно сделайте простенький тестовый примерчик, типа вызвать сообщение, что то там изменить и код в студию.
Экстрасенсов тут нет, а просматривать километры кода, где кто то отжег нет ни у кого ни времени ни желания. Так что делайте фейс строк на 50, не больше и вместе с вызовом по кнопке сюда. Если чего не понятно где вы там бегаете используйте message или logstrtofile (а еще лучше сразу по переменной предусмотреть отключение такой отладки). Если фейс независимый, то можно юзать и отладку из сапорта. Из галки тоже можно, но вам нужно прочитать страниц 50 доки (vip.pdf кажется).
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: перенос функции

Сообщение Espada »

RAJAH писал(а):
Espada писал(а):Ещё раз Здравствуйте. уже 4 день вожусь с переносом функции. всё компиляция проходит, переделал логические таблицы отредактировал сам код, реакции 0! попробовал привязать к кнопке тоже самое :cry:
По-моему, слишком всё усложняете. Для расчёта сальдо есть же стандартные функции: 'GetBalans' (баланс расчётов) или 'Calc_NewSaldo' (бухгалтерское сальдо).
Да дело в том что есть уже все вычисления, всё хорошо работает: когда формируешь определённый отчёт по организации(выбрав в каталоге организаций) он всё пересчитывает нормально, задача заключается в том чтобы эти же вычисления происходили при выборе документа в модуле "Управление сбытом=>Счета, ДО на продажу", соответственно по контрагенту связанному с этим документом.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: перенос функции

Сообщение Espada »

edward_K писал(а): Экстрасенсов тут нет, а просматривать километры кода, где кто то отжег нет ни у кого ни времени ни желания. Так что делайте фейс строк на 50, не больше и вместе с вызовом по кнопке сюда. Если чего не понятно где вы там бегаете используйте message или logstrtofile (а еще лучше сразу по переменной предусмотреть отключение такой отладки).
код я просмотрел вроде всё нормально однако меня терзают смутные сомненья по поводу этой части:

Код: Выделить всё

#component "L_BaseDoc"
const
	cmbut1=143213;
end;
alter interface VSCHET;
var
  weight_tek:Double
  ...
create view  condition org  as basedoc.cdogovor=coGetTune('MYORG');
Create view massa 
...
...
window wvschet;
handleevent 

	 cmInit:{...}
         cmbut1:{...}

Код: Выделить всё

create view  condition org  as basedoc.cdogovor=coGetTune('MYORG');
весь код компилируется, проверял с помощью message. Вроде нормально, однако изменений по организации (в каталоге организаций) никаких не происходит, будто эти вычисления вообще не привязаны к организации.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: перенос функции

Сообщение RAJAH »

Espada писал(а):

Код: Выделить всё

create view  condition org  as basedoc.cdogovor=coGetTune('MYORG');
Вы ж про ДО на продажу говорили? А ограничение-то на контрагента указывает на собственную организацию (coGetTune('MYORG')), и, вообще, ссылка на каталог договоров (basedoc.cdogovor)!
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: перенос функции

Сообщение Espada »

Вы ж про ДО на продажу говорили? А ограничение-то на контрагента указывает на собственную организацию (coGetTune('MYORG')), и, вообще, ссылка на каталог договоров (basedoc.cdogovor)!
я просто делал по другому примеру) я немного не андестенд что сюда писать)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Ответить