ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.
Cross Tab отчет, Различные проблемы, возникающие при работе с Cross Tab отчетами
 
Вообще-то объектный кросстаб в фиксированных колонках многоуровневые заголовки не поддерживает (это можно делать при использовании секционного кросстаба), но можно попробовать в объекте заголовка колонок ColumnHeaderMemoCrossXXX (который непонятно почему у Вас удлинился) написать примерно так:
if (cross267.numcol() = 1) and (crossvariable = '') then begin
crossvariable:='Организации';
end;
Тогда слово 'Организации' будет печататься во второй колонке, а она шире первой, и должно уместиться без переноса.
Чтобы сказать что-то более конкретное нужно смотреть полностью шаблон отчета.
Выражение для фильтра в Оборотной ведомости "Товары"
 
Выражение фильтра передается в источник, который написан на Visual FoxPro, поэтому и синтаксис там должен быть FoxPro-шный. Замените в Вашем выражении функцию LEFTCOPY (такой в FoxPro нет) на функцию LEFT.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Спасибо! То что надо!

Счет-фактура по накладной (№ 1137 от 26.12.2011)
Как в отчете убрать безболезнено стр1 (Карточка запроса адресов) и стр.2 (С/ф ландшафт)
Простое удаление страниц без каких-либо соответствующих корректировок приводит к ошибке:
Индекс списка вышел за границы (3)
Убрать совсем - это довольно непростая задача. Придется во всех скриптах по всему отчету удалять или изменять (смотря по логике) все операторы, которые ссылаются на объекты на удаляемых страницах, или на сами эти страницы для того, чтобы не осталось ссылок на удалённые объекты. И надо ещё учесть в скриптах, что после такого удаления Page4 станет Page2.
Проще сделать, чтобы эти страницы никогда не отображались.
В скрипте на кнопке "Выполнить" (Стр.1) оператор
if (nAddr1=1) or (nAddr2=1) or (nAddr3=1) or (nAddr4=1) or (nGruzOtp=1) then page2.Visible:=True;
надо закомментировать.
А следующий оператор:
if cbFormat.itemIndex = 0 then page4.visible := true else page3.visible := true;
заменить на
page4.visible := true;
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Поясните, пожалуйста смысл команд:

1.Addr3.Params['вн_код_партнера'] := [DialogForm.CAP."ВН_КОД_ПАРТНЕРА"];

Ведь Addr3 и CAP - это Источники данных с одинаковыми справочниками bdf.form_sclad.form_sclad_partner в DSName
Что чему присваивается - поля одноименные, источники одинаковые...?
И это команда так сказать необходимая для какой-то связки , т.е. она всегда будет с этими полями 'вн_код_партнера', только с источниками надо разобраться. Правильно я понимаю?

2. А вот эти команды

Addr3.Params['тип_адреса'] :=2; //юридический
....
Addr3.Params['тип_адреса'] :=0;

как я понимаю не общие, издесь для конкретного случая коль выводятся адреса и в них своя особенность их два и тд и тп
Т.е в других случаях этих команд не будет.
Так?

Т.е. обязательно должны быть аналоги вот этих команд:

Addr3.Params['вн_код_партнера'] := [DialogForm.CAP."ВН_КОД_ПАРТНЕРА"];
Addr3.Params['тип_адреса'] :=2; //юридический
Addr3.Open;
if length(trim([DialogForm.Addr3."АДРЕС"]))>0 then Adress3:=[DialogForm.Addr3."АДРЕС"];
Addr3.Close;
Addr3.Params['вн_код_партнера'] := [DialogForm.CAP."ВН_КОД_ПАРТНЕРА"];
Addr3.Params['тип_адреса'] :=0;
Addr3.Open;

Так? Нет?


Правда я в свой отчет вышеописанный влепил их

Partner1.Params[''вн_код_партнера''] := [DialogForm.Partner."ВН_КОД_ПАРТНЕРА"];
Partner1.Open;
if length(trim([DialogForm.partner1." СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ "]))>0 then Partner1:=[DialogForm.partner1." СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ "];

Partner1.Close;
Partner1.Params[''вн_код_партнера''] := [DialogForm.Partner."ВН_КОД_ПАРТНЕРА"];
Partner1.Open;
,
но ничего не изменилось...
1. Источник bdf.form_sclad.form_sclad_partner в обоих случаях один, а параметры разные. Соответственно и работает по-разному. CAP возвращает данные по самому партнёру, а Addr3 - адреса партнёра. Эта команда передеает в источник для адресов идентификатор партнёра из ранее открытого источника.
2. У партнёра могут быть разные типы адресов: юридичечкий, фактический и т.д. Исчточник данных для получения адресов позволяет задать конкретный тип адреса или получить все адреса данного партнёра:
Addr3.Params['тип_адреса'] :=2; //получаем юридический адрес
Addr3.Params['тип_адреса'] :=0; //получаем все адреса, введенные для данного партнёра в справочнике партнеров.
У каждого источника свои параметры и своя логика работы. Поэтому обязательность тех или иных действий может рассматриваться только применительно
к конкретному источнику и для конкретной цели. Действия, выполняемые с источником bdf.form_sclad.form_sclad_partner переносить на исочник bdf.sprav.sprav_partner в общем случае нельзя. Оператором
Partner1.Params[''вн_код_партнера''] := [DialogForm.Partner."ВН_КОД_ПАРТНЕРА"];
Вы передаете идентификатор собственного предприятия и источник Partner1, а это НЕ тот код контрагента, который нужен.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

Мне нужно модифицировать отчет Акт на работы (услуги), а именно вставить в поле Представитель заказчика нужную фамилию. Эта фамилия занесена в одно из свободных полей Справочника ПАРТНЕРЫ ПРЕДПРИЯТИЯ . Для упрощения примера возьмем поле СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ.
Я беру существующий шаблон отчета Акт на работы (услуги) и модифицирую его по следующей схеме.

1. Как мы говорили раньше Справочник партнеров это bdf.sprav.sprav_partner
В данном отчете такого источника нет.
Поэтому я ввожу дополнительный Источник БЭСТ в Карточке запроса стр.2., в котором устанавливаю:

DSName = bdf.sprav.sprav_partner
Name = partner1.
Params = [DialogForm.Shapka." СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ "]

2. В Карточке запроса на стр.2 во втором окне запроса Представитель «Заказчика» меняю элемент управления в Edit на DBList (для выбора значения из таблицы-справочника) и устанавливаю его свойства:

ListSource = partner1
ListField = СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ
GridFieldLists - в перечне полей пометил галочкой СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ
KeyField = СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ
Name = PrZak

3. В скрипте OnActivate пишу в конце алгоритма примерно так:

PrZak.SaveUserParam := false;
PrZak.Text:= [DialogForm.partner1" СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ "]


4. На стр.1 в шаблоне в поле Представитель Заказчика ставлю переменную mmm и в скрипте пишу


mmm:=[PrZak.TEXT];
if mmm='' then mmm :=[DialogForm. partner1" СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ "]

ВСЕ.

При выполнении такого отчета в Карточке запроса в окне Представитель заказчика
будет стоять значение из первой записи справочника ПАРТНЕРЫ ПРЕДПРИЯТИЯ (т.е.первого партнера). И для выбора будут представлены значения этого поля всех партнеров.

Мне же хотелось бы, что бы в окне Представитель заказчика
стояло значение из той записи справочника ПАРТНЕРЫ ПРЕДПРИЯТИЯ , отчет которого я формирую. И для выбора больше ничего не представлялось (ну или, на худой конец, значения этого поля всех партнеров).

Далее, я либо оставляю то значение, что стоит в окне, либо набираю с клавиатуры нужное мне (либо выбираю, если есть выбор)

Всё.


PS. Да, что интересно. Если я вместо поля " СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ " в этом
примере буду использовать поле " ПОЛНОЕ_НАИМЕНОВАНИЕ ", то
в окне Представитель заказчика для выбора будут представлены не значения этого поля всех партнеров. а текст {MEMO}
См файл.
Если использую другое поле, такого не происходит.
Ваша основная ошибка заключается в том, что пытаетесь на событии OnActivate использовать значения полей источника Shapka (для задания параметров источника partner1), а источник Shapka открывается только при нажатии кнопки "Выполнить". Перенесите часть скрипта, касающуюся источника Shapka из кнопки "Выполнить" на событие OnActivate формы. В данном случае это можно сделать потому что для задания параметров источника Shapka поля из карточки запроса не используются.
И ещё в список полей источника Shapka добавте поля "ПАРТНЕР_КОД" и "ПАРТНЕР_НАИМЕНОВАНИЕ" (или совсем очистите этот список).
Скрипт OnActivate должен выглядеть примерно так:
cTypeBase:=[FIRM('lbl_type')];
{передача параметров в шапку документа}
Shapka.Close;
Shapka.Params['Код_Арма']:=[DialogForm.task."Код арма"];
Shapka.Params[' Направление _Движения']:=[DialogForm.task." Направление движения"];
Shapka.Params['Вид_Движения']:=[DialogForm.task."Вид движения"];
Shapka.Params['Склад']:=[DialogForm.task."Склад"];
Shapka.Params['Код_Документа']:=[DialogForm.task."Код документа"];
Shapka.Params['Номер_Документа']:=[DialogForm.task."Номер документа"];
Shapka.Params['Шапка']:=1;
Shapka.Params['Тип_базы']:=cTypeBase;
Shapka.Params['Код_реестра']:=[DialogForm.task."Код реестра"];
Shapka.Params['Дата_документа']:=[DialogForm.task."Дата документа"];
Shapka.Open;

Partner1.Close;
Partner1.Params['Код_партнера'] := [DialogForm.SHAPKA."КОД_КОНТРАГЕНТА"];
Partner1.Open;
PrZak.SaveUserParam := false;
PrZak.Text := [DialogForm.Partner1."СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ"];
// или можно писать напрямую без источника Partner1
PrZak.Text := [DialogForm.SHAPKA."ПАРТНЕР_НАИМЕНОВАНИЕ"];

Поля длиной более 254 символов (такие как "ПОЛНОЕ_НАИМЕНОВАНИЕ") не предназначены для использования в справочниках. Они настолько длинные, что при полностью текст из этих полей не будет виден. Используйте "СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ".
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

Если взять за пример отчет Счет-фактура по накладной.
Там во втором окне запроса вводятся адреса Покупателя и Грузополучателя.
Эти адреса соответвуют истинным, т.е. в Карточке запроса данные взяты с нужной записи источника.
Там как это сделано? Тоже перебором? Что-то я там не обнаружил подобного.

У этих окон Карточки запроса указаны Источники данных Addr3 и Addr4 , среди полей которых нет нужного мне, что бы можно было сделать подстановку и посмотреть

Кстати, в этом шаблоне не найду где опредляется значение переменной Text6a .
Поиск указывает на стр1 Выполнить. Но там есть только начальная установка значения Text6a:=' '.
Явно где-то в другом месте. Только где ???



Источники данных, которые используются для получения адресов могут принимать параметры кода партнёра и типа адреса. Задание этих параметров делается в скрипте на кнопке "Выполнить" стр.1 (перебор здесь не нужен):
Addr3.Params['вн_код_партнера'] := [DialogForm.CAP."ВН_КОД_ПАРТНЕРА"];
Addr3.Params['тип_адреса'] :=2; //юридический
Addr3.Open;
if length(trim([DialogForm.Addr3."АДРЕС"]))>0 then Adress3:=[DialogForm.Addr3."АДРЕС"];
Addr3.Close;
Addr3.Params['вн_код_партнера'] := [DialogForm.CAP."ВН_КОД_ПАРТНЕРА"];
Addr3.Params['тип_адреса'] :=0;
Addr3.Open;
Какое поле Вам нужно и куда хотите его подставлять?
Значение переменной Text6a задается в событии OnBeforePrint самого отчета:
If (nAddr3 > 0) and ([LENGTH(DialogForm.Addr3."АДРЕС")]>0) Then Text6a := list_adress3.text;
Пытаюсь освоить Дизайнер отчетов
 
Цитата


Новосибирск ОАО "Электропромпроект" пишет:
ТАк как мне стать в окне запроса на нужного партнера, а не на первого в справочнике?





Цитата


Сергей Введенский пишет:
GOT_kont. close ; GOT_kont.params['код_партнера'] :=
[DialogForm.Shapka."КОД_ГРУЗООТПРАВИТЕЛЬ"]; GOT_kont. open ;
- эти три
оператора переоткрывают источник GOT_kont с новым значением параметра
'код_партнера'. Для того, чтобы открытый
источник данных отработал с новым
значением параметра, этот источник надо сначала закрыть, потом передать туда
параметр,
а потом снова открыть.



Как я понимаю, это и есть то,что мне нужно?
Какие праметры надо передавать чтобы попасть на нужную запись источника? Как определить?

В Счет-фактуре по накладной есть такой фрагмент
GOTPR.CLOSE;
GOTPR.params['Код_арма']:=[DialogForm.task."Код_арма"];
GOTPR.Params['Тип _базы ']:=cTypeBase;
GOTPR. OPEN;

Сделал по аналогии - не получилось.






В каком шаблоне отчета и в каком конкретно источнике Вам требуется попасть на нужную запись источника ? И чем (каким значением какого поля) эта нужная запись определяется? Далеко не у каждого источника есть параметры, позволяющие выбрать конкретную запись. Возможно придётся перебирать все записи источника в цикле, чтобы найти подходящую:
Istochnik.Open; // или Istochnik.First; - если он уже открыт
while not Istochnik.Eof do begin
if <условие_отбора_записи> then begin
...Действия_с_отобранной_записью...
Break;
end;
Istochnik.Next;
end;
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Почему во второй Карточке запроса Счет-фактуры по накладной :
1) в окне Продавец. Адрес для выбора предоставляются два адреса (похоже это фактический адрес)? Как задается что два адреса и какие адреса и где заданы какие именно адреса?
2) в окне Грузоотправитель. Адрес для выбора предоставляются так же два адреса (похоже это фактический адрес)? Как задается что два адреса и какие адреса?
3) в окне Покупатель. Адрес для выбора предоставляются так же два адреса (но похоже это юридический и фактический адрес - у одного из партнеров они разные потому и обратил Внимание )? Как задается что два адреса и какие адреса и как они задаются?
Адресов для выбора предлагается столько столько их введено в справочнике партнеров для данного партнера. Источник данных, который используется для показа справочника адресов выбирает все адреса по данному партнеру.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
В этой же типовой "Транспортная
накладная (прил.4)" в шаблоне в поле Грузоотправитель есть такой скрипт, самое его начало:
if lFlagGOTSelf = true then cGOTFIO := dbPeople1.text else cGOTFIO := pGOT_FIO.text;
cGOTFIO:= cGOTFIO+if(LENGTH(TRIM([pGOT_tel.text]))>0,', '+[pGOT_tel.text],'');
lFlagGOTSelf - что за переменная? Значение которой устанвливается в OnActivate стр1

И что там за команда dPeople1. open ? Она встречается как одиночная, только open.

А вот встречается в паре:

GOT_kont. close ; GOT_kont.params['код_партнера'] := [DialogForm.Shapka."КОД_ГРУЗООТПРАВИТЕЛЬ"]; GOT_kont. open ;

и почему-то вперед close , а потом open?


Что в командах:

Label_Adress1.Enabled := (nAddr1=2)

List_Adress1.Enabled := (nAddr1=2)

означает парметр nAddr1=2 и какие он еще может принимать значения?
В OnActivate на стр.1 есть комментарии перед оператором установки lFlagGOTSelf := true;
//Установить для ответственного лица справочник сотрудников, если поставщик и грузоотправитель одинаковы
if [DialogForm.Shapka."КОД_СОБСТВЕННОГО_ПРЕДПРИЯТИЯ"]=[DialogForm.Shapka."КОД_ГРУЗООТПРАВИТЕЛЯ"] then begin
dPeople1.open;
dbPeople1.visible := true;
pGOT_FIO.visible := false;
lFlagGOTSelf := true;
end;
Фактически lFlagGOTSelf - это признак того из какого справочника берется грузоотправитель: из сотрудников или из партнеров.
dPeople1.open - это команда открытия источника данных dPeople1
GOT_kont. close ; GOT_kont.params['код_партнера'] := [DialogForm.Shapka."КОД_ГРУЗООТПРАВИТЕЛЬ"]; GOT_kont. open ;
- эти три оператора переоткрывают источник GOT_kont с новым значением параметра 'код_партнера'. Для того, чтобы открытый
источник данных отработал с новым значением параметра, этот источник надо сначала закрыть, потом передать туда параметр,
а потом снова открыть.
Label_Adress1.Enabled := (nAddr1=2) - это видимо уже из другого отчета "Товарная накладная ТОРГ-12". Переменные nAddr1, nAddr2 и т.д. в этом шаблоне определены в скрипте у кнопки "Выполнить" на стр.1
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Анализирую как создан отчет Счет-фактура по накладной (портрет).
В шаблоне документа (стр. 3 Дизайнера Отчетов), - определены такие переменные, определяющие адреса участников, как
Text2a, Text3a, Text6a , а также переменные
Все переменные определены вроде как на стр.1 по кнопке «Выполнить»
Но там среди перечисленных переменных определена только
// грузоотправитель
….
text3a:=[DialogForm.Addr2."АДРЕС"];

Остальные переменные встречаются только в начальных установках как
Text2a:=''; и аналогично все остальные переменные

Где определяются конкретные значения упоминаемым переменным, которые затем печатаются в отчете?
Чувствую, что, возможно, это связано с тем, что эти переменные определяются в окне запроса., но все же значения выбранные в окне запроса должны же потом присвоиться соответствующим переменным Text2a, Text6a, Text2b, Text3b ? Или как это делается здесь?

Для поиска того места, где определяется или используется какая-то переменная удобно использовать кнопочку "Поиск в скриптах" на панели инструментов (на кнопочке нарисована лупа). Нажмите на эту кнопку, в появившемся окне введите имя переменной и нажав кнопку "Поиск" получите список всех скриптов, где есть введенный текст. Переменным Text2a и Text6a присваиваются значения ещё в скрипте OnBeforePrint самого шаблона отчета (Стр.3)
Переменной Text3b присваивается значение в событии OnClick объекта list_Got (на стр.2)
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:



Цитата


Сергей Введенский пишет:
Переменные Text2, Text2a и т.д определяются в скрипте на кнопке "Выполнить".

Переменные postav_text, postav_tel, postav_fax определены в событии
OnActivate на Стр.1 шаблона отчета.
Итак, переменные могут быть определены в скрипатах
- карточки запроса в событии OnActivate ;
- карточки запроса на кнопке "Выполнить".
- самой переменной в шаблоне (давжды левой кнопкой мыши);
- ???

1) Чем определяется , от чего зависит, в каком из перечисленных мест (а может и еще где?) определена та или иная переменная ?
Почему, к примеру, не в скрипте самой переменной, а в карточке запроса в событии OnActivate или на кнопке "Выполнить"?
2) если несколько окон запроса, то опять же, в каком из окон запроса?


Есть объекты на форме карточки запроса или на самом шаблоне отчета, а есть просто переменные, которые используются для хранения и обработки каких-то значений. Ваше выражение "в событии самой переменной в шаблоне..." в этом смысле является неправильным. У переменных нет никаких свойств и событий, они есть только у объектов на карточке запроса или шаблоне отчета. В данном случае Вы видимо имели ввиду скрипт объекта "Прямоугольник с текстом".
Переменные могут быть определены в любом скрипте любого объекта. Здесь надо понимать во-первых для чего Вам нужна та или иная переменная и в какой момент работы шаблона какие скрипты выполняются. Исходя из этого определять (или рассчитывать) переменные в нужном месте.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

В примере с "Транспортная накладная (прил.4)". я продлелал следующее

ListSource = PLT - это источник bdf.sprav.sprav_partner т.е. по контрагентам;
ListField = ВИД_ДЕЯТЕЛЬНОСТИ_ИМЯ - это поле где хранится нужная мне информация
GridFieldLists - в перечне полей пометил галочкой поле ВИД_ДЕЯТЕЛЬНОСТИ_ИМЯ

Да, ещё установил (Вы не упоминали)
Key = ВИД_ДЕЯТЕЛЬНОСТИ_ИМЯ по аналогии с существующим отчетом

В шаблоне исправил в скрипте вычисление переменной
cPart:= [DialogForm.PLT."ВИД_ДЕЯТЕЛЬНОСТИ_ИМЯ"]
В результате в форму вывелось нужное значение, а вот в окне запроса , для чего всё задумывалось, было пусто?
....

Хотя еще ничего не получил, но чувсвую что мне надо чуть-чуть не так. В рассмариваемых отчетах-аналогах везде в окне запроса предоставляются данные для выбора. И свой текст не введешь.
А мне хотелось бы что бы из предоставленных из Справочника данных я мог при необходимосссти исправить на произвольное и оно из Окна запроса попало в Отчет.
Т.е. Из Справочника в Окно запроса , в Окне запроса вводится новое значение или остается старое , из Окна запроса в Отчет.

Я уже писал ранее, что инициализация полей карточки запроса обычно выполняется на событии OnActivate. Если у Вашего объекта DBList имя скажем DBList1, то в скрипте OnActivate надо написать примерно так:
DBList1.Text := 'Значение инициализации';
Для того, чтобы в поле ввода можно было вводить произвольный текст, а не только тот, который есть в справочнике, установите у объекта DBList в инспекторе объектов свойство Validation в значение False.
Пытаюсь освоить Дизайнер отчетов
 
е
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

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

"Справочник" - это что?
По смыслу ListField поле, которое и должно быть отображено в GridFieldLists.
Если так, то зачем дважды указываем одно и тоже поле ?

Однако по факту в названном примере

ListField = ФИО_ПОЛН
в GridFieldLists это поле (ФИО_ПОЛН) есть, но непомеченное галочкой

Справочник это то, что появляется на экране, когда у объекта DBList нажимаете справа кнопочку с тремя точками ("...")
Свойство GridFieldLists задает (помечаются галочками) список полей (колонок), которые будут отображаться в этом справочнике.
Свойство ListField - это имя поля, значение из которого при нажатии в справочнике кнопки "Выбрать" будет перенесено в поле ввода объекта DBList. В общем случае поле ListField может быть НЕ отмечено галочкой в списке GridFieldLists.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Рассматриваю Счет-фактуру по накладной . В самом шаблоне в полях определено содержимое как [Text2], [Text2a], [Text2b]… [Text6], [Text6b] и др.
А где определены эти метки не нахожу.
Какие-то алгоритмы расписаны в свойстве On Activate, но и там нет.

Аналогично в Спецификации ф. ТОРГ-10.
Поля в шаблоне определены как [postav_text] [postav_tel] [postav_fax]
А где они описаны ?
Переменные Text2, Text2a и т.д определяются в скрипте на кнопке "Выполнить".
Переменные postav_text, postav_tel, postav_fax определены в событии OnActivate на Стр.1 шаблона отчета.
Для поиска того места, где определяется или используется какая-то переменная удобно использовать кнопочку "Поиск в скриптах" на панели инструментов (на кнопочке нарисована лупа).
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

Еще странная ситуация.
Значит вставил я в существующий Акт выполненных работ дополнительные поля по контрагенту из Cправочника пратнеров, для чего задаЛ еще один ИсточнИк данных Бэст.
Все отлично.
А теперь захотел, чтобы в окно запроса Акта выполненных работ , где я ввожу данные о контрагенте, выводилось одно из значений по контрагенту , чтобы это значение и его мог править в случае необходимости.
Т.е. подставляю в окне запроса (в Редакторе текста [DialogForm.ppp."ДОП_ИНФОРМАЦИЯ"]) , а в результате получаю, что все вставленные поля по этому контрагенту в Акте исчезают. Т.е. все поля от нового Источника данных Бэст исчезли.
Что такое? Так нельзя? Куда делись значения полей?
Как в окне запроса задать вводимому значению первоначальное значение из БД БЭСТ?
...
Кружусь вокруг элемента управления DBList...
Но как задать исходные данные не нахожу...
Не все свойства описанные в документации есть в свойствах Инспектора - Text? Capation? DropDownWidth
Но этот элемент к тому же ( если и установливается как-то исходное значени) не дает возможности править исходное значение
Трудно сказать, не видя Вашего отчета, в чем у Вас ошибка, но первоначальная инициализация полей карточки запроса обычно выполняется на событии OnActivate. Вот оператор инициализации из шаблона счета-фактуры:
nSF.Text:=[DialogForm.Shapka."НОМЕР_СЧЕТАФАКТУРЫ"];
Пример инициализации объекта DBList можно посмотреть в отчете "Транспортная накладная (прил.4)". Там этот объект используется для выбора уполномоченного лица грузоотправителя. Для этого объекта в свойстве ListSource надо указать источник данных, который будет использоваться для отображения справочника, в свойстве GridFieldLists задать поля, которые будут отображаться при вызове справочника, в свойстве ListField указать поле, которое при выборе значения будет переносится из справочника в текстовое поле.
Краткое Наименование Покупателя, Как выбрать в Счет фактуре Краткое Наименование Покупателя?
 
Если правильно понял, имеется ввиду форма счета-фактуры, которая печатается из этого меню:
Логистика -> Книга покупок-продаж -> Счета фактуры на продажу.
В источнике такого поля действительно нет. Возможны два варианта решения этой проблемы:
1. На основе БЭСТовского источника создать свой и добавить туда поле с кратким наименованием партнёра. Но для этого надо уметь писать источники на FoxPro.
2. Этот способ будет работать медленнее, но реализовать его можно без создания новых источников. Надо в шаблоне отчета на форму диалога рядом с источником Shapka добавить ещё один объект "источник данных БЭСТ". Установить у него свойство DSName = bdf.sprav.sprav_partner,
свойство Name можно задать любое (например - DS_Partner). В свойстве MasterSource выбрать источник shapka. В свойстве MasterFields указать связку: Вн_код_партнера -> ID_покупателя. После этого на форме отчета в нужном месте вставляете поле с кратким наименованием партнера:
[DialogForm.DS_Partner."СОКРАЩЕННОЕ_НАИМЕНОВАНИЕ"]
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

-В некотрых Исnочниках Params не настроены никак, а в других - настроены? Это что?
-В некоторых источниках первое свойстов Active=False (Это по-моему исходное состояние),
а в других - Active=Trueю Это что значит?


Параметры источников могут задаваться через свойство Params в инспекторе объектов, а могут быть заданы в скриптах отчета (обычно на кнопке "Выполнить"). Если в параметры передаются значения полей из карточки запроса, то это всегда делается в скрипте.
Например: Data.Params['lOsnPay'] := pPay.Checked;
Можно некоторые или даже все параметры совсем не задавать. Тогда они будут принимать значения "по-умолчанию", которые задаются программистом в исходных кодах источника.
Active:=True обычно ставится у тех источников, которые используются для вызова справочников на карточке запроса. Или в этом случае
можно писать Active:=True; в скрипте на событие OnActivate карточки запроса. Для источников, которые используются непосредственно для
формирования строк(полей) отчета исходное состояние должно быть Active=False, иначе они будут открываться до отображения карточки запроса, а это может занять довольно много времени.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Кстати, вот обнаружилась ситуация когда проявляется ошибка о которой я спрашивал вчера.
Беру, к примеру, Валютную накладную=> Итсочник Shapka => Params=> флаг Значение =>fx => Вставка Поля БД => и ОШИБКА!!!


Спасибо. Постараемся исправить.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

Да, похоже так. Этот самый мой первый отчет, который я формировал здесь на форуме.
Но интересно, что эта ошибка возникает не всегда.
Она возникает когда я сравниваю два отчета, чтобы сделать по аналогии (о чем писал в Вопросе #111 23.01.2013 13:12:28)

Я открываю две базы режиме ("по текущему разделу" и "бегаю" по окнам от одного отчета к другому.
И вот на какой-то раз такой "беготни" возникает ошибка.

Закономерности не уловил, в какой именно момент, после каких действий это возникает.
Что понимаете под исходными кодами источника
и таблицей ( идет обращение к несуществующей таблице )?


Да, в таких "экстремальных" условиях наши отчеты конечно не отлаживались. Возможно там и есть какая-то ошибка, но выловить её (особенно без закономерности) крайне сложно.
Исходные коды источника это фактически программа, написанная на Visual FoxPro, которая выбирает данные из таблиц базы данных БЭСТа и передает их в отчет. Именно эта программа при выборке данных обращается к разным таблицам БЭСТа по именам. Если таблицы почему-то нет в базе (случайно удалили), то может возникать такая ошибка. Но в Вашем случае причина ошибки скорее всего в чем-то другом.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:

Извините, где-то что-то не догоняю.
Вот, к примеру, передо мною форма некоего отчета. Смотрю на него и вижу ..., что мне надо такой-то и такой источники, источник Task мне не надо ( а может и надо?)
Как я должен это определить???

Как я понимаю, я должен знать все Источники данных БЭСТ, знать какие данные/поля в каком источнике, да еще нет ли "передача параметров в "основной" источник прямо из полей источника Task", и, наверное еще кое-что.
Так?
А в противном случае, только по аналогии - вылавливая что смогу из существующих отчетов?

И скажите, пожалуйста, что такое Visual FoxPro ?


В общем случае путь подбора готовых источников для создания нового отчета является НЕПРАВИЛЬНЫМ.
Такой подход оправдан только в тех случаях, когда нужно немного модернизировать уже существующий отчет, или
может быть создать новый отчет, правила формирования(расчета) полей в котором, в точности соответствуют тому,
как формируются поля в готовом источнике. Тут действительно можно действовать "по аналогии".
Но для создания нового "произвольного" отчета надо уметь писать свои собственные источники данных. Все же источники БЭСТа знать совершенно не нужно. Под каждый конкретный отчет в общем случае пишется свой источник (один или более в зависимости от сложности отчета).
Про Visual FoxPro я уже писал выше, что это система управления базами данных от компании Microsoft, на которой написаны исходные тексты источников данных. Про создание этих источников можно почитать в документации "5_2_создание_источников.doc"
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Почему во втором случае с Отчетом2 в Источнике данных Shapka другие поля, чем в первом и третьем случае?
Смотрел как настроен Источник Shapka, коль через него идёт передкача праметров в основной Источник.
Еще интереснее ситуация : в первом и втором отчетах все одинаково, однако со вторым проблема.
В третьем отчете Источнике данных Shapka несколько иначе настроен, однако как и в первом отчете все получается
...
Перебрал почти все отчеты в Приложении во всех получается, кроме как в отчете Акт на работы (Услуги). Значит дело в особенности самого документа???


Дело в особенности задания списка полей для источника Shapka. В первом и третьем случае когда Вы открываете список полей источника, то он пустой. Для просмотра всех доступных полей в окне списка надо нажать кнопку "Добавить поля..."
Во втором случае список доступных полей уже задан в отчете. Вы его видите, открыв список полей, и действительно там нет поля КОД_КОНТРАГЕНТА. В этом списке те поля, которые решил туда включить разработчик отчета. Но если нажмёте здесь кнопку "Добавить поля...", то увидите поля, не включенные в список. Среди них есть и поле КОД_КОНТРАГЕНТА. Можете его добавить.
Или ещё один вариант - полностью очистить заданный список полей (удалить из него все поля). Тогда станут доступны не те поля, которые перечислены в списке, а все существующие поля данного источника.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
При прсмотре как заданы источники, настроены праметры и т.п. на готовых отчетах, выдает ошибку:


Судя по всему этот отчет Вы делали сами. Ошибка, которая на картинке может возникать в том случае, если в исходных
кодах источника идет обращение к несуществующей таблице. Тут чтобы разобраться, нужен сам шаблон отчета, описание из какого пункта меню БЭСТа и в каком режиме ("по текущему разделу" или "по всему приложению") запускается дизайнер. И в крайнем случае может потребоваться Ваша база данных.
Пытаюсь освоить Дизайнер отчетов
 
Цитата
Новосибирск ОАО "Электропромпроект" пишет:
Если не затруднит, попробуйте ответить на общие Вопросы:

1.Что значит, если у двух Источников данных БЭСТ DSName один тот же bdf.sprav.sprav_partner
а Name - разные. И у них Params задаются по разному
Для чего такое? В каком случае?

2.В некотоорых источниках настройка Params идёт через другой источник.
Например, Источник Shapka , у него DSName = bdf.form.sclad.form_sclad_nakl_real
А в настройке Params значение через поле БД как DialogForm.Task"Код_Арма" .
Где Task это также источник и у него свой DSName = bdа.task
В чем сущность такой организации настройки?

3.Иногда настройка Params осуществляется через значение (поле БД, выражение, переменная)
а иногда определено как Назначить из мастер источника
Что есть мастер источника ?

4. "Источник bda.task есть как правило на любой печатной форме" (с)
Что опредляет сей источник, что он должен быть всегда?
И вообще как или чем опредляется количество источников на конкретной печатной форме?

Как я понял, что используемые сейчас источники это уже готовые (созданы разработчиками). Если недостаточно, то требуется создание нового источника. Так?
Какого-то списка созданных источников нет? Только из примеров черпать?
А как и где опредлены поля за каждым из созданных источников? Можно это где-то увидеть?


1. Судя по названию источника (bdf.sprav.sprav_partner) можно предположить, что два разных объекта на форме используются для получения данных по разным партнёрам (потому и параметры разные). Видимо делать это используя
один объект было либо неудобно, либо невозможно. Чтобы ответить точно - надо смотреть отчет.

2. Источник Task (DSName = bdа.task) используется для получения отчетом данных из БЭСТа. Эти данные передаются в полях источника. Например через него в отчет может передаваться уникальный идентификатор того документа, который надо распечатать.
Источнику же, который непосредственно готовит данные для отчета, часто бывают нужны именно те значения, которые
приходят в отчет из Task-а. Поэтому и делается передача параметров в "основной" источник прямо из полей источника Task.

3. Если в значении параметра указано "Назначить из мастер источника", то это фактически означает, что данное значение не задаётся. Оно может быть назначено из Master-источника, если этот источник определён в свойстве MasterSource объекта. Это свойтво используется для связывания двух таблиц отношением master-detail. Об этом
можно почитать в документации "5_1_дизайнер_отчетов.doc" в разделе "4.2.6 Источник данных БЭСТ".

4. О назначении источника Task написал в п.2. Как правило он есть в отчете, но если никакие данные, передаваемые
через этот источник Вашему отчету не нужны, то можете источник Task не "бросать" в шаблон отчета. Количество источников определяется "потребностями" самого отчета (и его карточки запроса). Сколько надо - столько и делайте.
Если готовых, подходящих для Вас источников, нету - то надо писать свои собственные. Список всех источников, их
параметры и выводимые поля можно исследовать по поставляемым исходным текстам этих источников на Visual FoxPro в каталоге Client\FoxDataSource. Об этом я кажется уже писал раньше.
Пытаюсь освоить Дизайнер отчетов
 
Все эти действия делаются в событии OnActivate самой карточки запроса.
Чтобы номер счета-фактуры проставлялся из поля "Номер регистр." в конце скрипта на событии OnActivate добавте оператор:
nSF.Text := [DialogForm.Shapka."НОМЕР_ДОКУМЕНТА"];
В объекте для ввода даты в режиме разработки (то есть в дизайнере) всегда показывается текущая дата. Это так работает сам объект. А запись в него даты формирования документа опять происходит в событии OnActivate. Посмотрите, там есть такой код:
if [DialogForm.Shapka."ДАТА_СЧЕТАФАКТУРЫ"]=Null then
dSF.Date:=[DialogForm.Shapka."ДАТА_ВЫПИСКИ"]
else begin
dSF.Date:=[DialogForm.Shapka."ДАТА_СЧЕТАФАКТУРЫ"];
nSF.Text:=[DialogForm.Shapka."НОМЕР_СЧЕТАФАКТУРЫ"];
end;
Первый день месяца можно проставить так:
dSF.Date := ENCODEDATE(2013, 2, 1) // 1 февраля 2013 года
или
dDate := DATE()
dSF.Date := ENCODEDATE(YEAROF(dDate), MONTHOF(dDate), 1) // 1 день текущего месяца текущего года
Функции для определения первого рабочего дня месяца в дизайнере отчетов не существует.
Из Бест4+ в Бест5, Функция IF
 
Попробовал сделать тоже самое у себя. В БЭСТ-5 этот код нормально отработал и поля заполнились.
Только в операторе
if [DialogForm.SHAPKA."Код_контрагента"]= 000024 then
000024 лучше писать в кавычках:
if [DialogForm.SHAPKA."Код_контрагента"]= '000024' then

У Вас возможно не работает потому что отчет запускаете "не в первый раз", и
присвоенные в скрипте значения "перебиваются" теми, которые были запомнены после предыдущего запуска отчета.
Чтобы отменить восстановление значений полей карточки запроса от предыдущего запуска, перед Вашим кодом напишите так:
NUMBER.SaveUserParam := False;
DATA.SaveUserParam := False;
KTOVYD.SaveUserParam := False;
DOLG.SaveUserParam := False;
FIO.SaveUserParam := False;
Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.