====== Създаване на източник на данни ====== ===== Служебни параметри на скриптове ===== Ако източника на данни е IBESCRIPT* той може да получи някои специални входни параметри, с които да си осигури достъп до информация идваща от другаде. //Забележка: някои от входните параметри се поддържат и от execute block// Типичен пример за това е скрипт (2), който се извиква от друг скрипт (1) - скрипт (2) може да има достъп до данните или дори входните параметри на скрипт (1). Друг типичен пример е скрипт, който се извиква от документ - скрипта може да получи данните от документа (и дори да върне променени такива). Списък със служебните параметри и тяхното значение: ==== __dbFilters и __dbFilterValues ==== Първия параметър съдържа път до XML файл, в който се намира списъка с входните филтри на извикващия скрипт (стига да има такъв). Втория съдържа стойностите. Двата параметъра се използва в комбинация. Пример има в [[kak_da:spravki_scriptove|как да секцията]], виж **Изтегляне на информация от филтрите на справка чрез последващ скрипт**. ==== __dbResult ==== Съдържа път до XML файл, в който се намират данните на извикващата справка (стига да има такава). Пример има в [[kak_da:spravki_scriptove|как да секцията]], виж **Изтегляне на информация от данните на справка чрез последващ скрипт**. ==== MASTER_DATASOURCE_FILE ==== Файл в който се връща резултата. В тази променлива се подава път до файла, като тя се генерира автоматично. ==== __DATABASE ==== Подава текущата връзка към базата server:database ==== __USERNAME ==== Текущ системен потребител - с който влизаме в Селматик ЕРП ==== __PASSWORD ==== Паролата на текущия системен потребител - с който влизаме в Селматик ЕРП ==== __CURRENT_ROLE_ID ==== ID на ролята на потребителя, който стартира текущият скрипт ==== __CURRENT_ROLE_NAME ==== Име на ролята на потребителя, който стартира текущият скрипт ==== __CURRENT_USER_ID ==== ID на потребителя, който стартира текущият скрипт ==== __CURRENT_USER_NAME ==== Име на потребителя, който стартира текущият скрипт ==== __DATASOURCE_ID ==== Подаване на номера на източника //Забележка: Този параметър се поддържа и от Execute Block. Виж секцията Пример има в [[kak_da:spravki_scriptove|как да секцията]], виж **Изтегляне на преводи на полета от източника**// ==== __VIEW_ID ==== подаване на номера на изгледа ==== __CLIPBOARD_AS_TEXT ==== Генерираме файл във временната директория, като в него поставяме каквото има в клипборда, като текст. ==== TMP_FILE ==== Генерира име на файл във временната директория ==== Параметри - особености ==== При зареждане на параметрите на скриптовете: - __RQ - Ако се съдържа ще постави автоматично параметъра за задължителен - __CHK - Прави параметъра от тип "Да/Не" - __PSW - Правим параметъра да е тип Парола (Ако е текстов тип ще покаже поле тип парола) ===== Специални имена на полета управляващи поведението и външния вид ===== Ако в резултатния източник на данни има полета с имената описани по-долу, то те управляват поведението на програмата. Например наличието на поле с име ACT$FONT_COLOR сменя цвета на шрифта на реда. Дали полето се вижда в грида или не няма значение, важното е в резултантния източник на данни да има такова поле. Обичайна практика е тези специални колони да се крият от потребителя (в секция "Специални полета" да се постави "Скрито"), с което те въобще не са видими като колони в грида. Списък на специалните имена на полета: ==== ACT$DOC_ID ==== ID на елемента, който ще се извиква, примерно номер на търговски документ. Използва се съвместно с ACT$DOC_CLASS_NAME. ==== ACT$DOC_CLASS_NAME ==== Присъствието на поле с това име кара системата при двоен клик на реда да отвори прозорец от вида указан в стойността на това поле. \\ По друг начин казано, това дава възможност да се отвори примерно търговски документ с номер взет от ред от справката. \\ Какво да се отвори (примерно търговски документ) се указва в **ACT$DOC_CLASS_NAME**, а кой по-точно (номера му) се указва в **ACT$DOC_ID**. Актуален списък с възможните имена на класове може да се види чрез създаване на елемент в главното меню с цел "Регистрирани в програмата класове". Списъка може да се види и [[spravki_new:registered_classes|ето тук]]. Има възможност справките да обработват освен **ACT$DOC_ID** и **ACT$DOC_CLASS_NAME** и още **5 нови комплекта от параметри**. \\ Тези 5 комплекта дават възможност за до 5 отделни действия, в зависимост от колоната/колоните, върху които e дабълкликнато: \\ * **ACT$DOC_ID1, ACT$DOC_ID2... ACT$DOCID5** - в тези пет полета се държи кое ИД да се отвори * **ACT$DOC_CLASS_NAME1 ... ACT$DOC_CLASS_NAME5** - указва се кой клас да се отвори * **ACT$DOC_COLS1... ACT$DOC_COLS5** - в тези полета се държи името на колоната или колоните, за които е действието. Имената на колоните се разделят със точка и запетая ( ; ). При дабъл клик върху ред от справка първо се проверява дали колоната, в която се клика не е изредена в ACT$DOC_COLS1 или ACT$DOC_COLS2 или .. и т.н. в ACT$DOC_COLS5. \\ Ако се намери в някоя от тези колони - в първата, в която се намери, например в **ACT$DOC_COLS2** - се отваря **клас ACT$DOC_CLASS_NAME2**, с **ИД - ACT$DOC_ID2**. \\ Ако не се намери нищо и има дефинирани съществуващите параметри ACT$DOC_ID и ACT$DOC_CLASS_NAME се отваря по стандартния начин. ==== ACT$BACKGROUND_COLOR ==== Цвят на фона, в RGB, шестнайсетично, примерно #FF0000 (чисто червено), ==== ACT$BACKGROUND_COLOR_XOR ==== Алтернативен цвят на фона (редува се през ред с цвета на фона), в RGB, шестнайсетично, примерно #FF0000 (чисто червено), ==== ACT$BACKGROUND_COLOR_COLUMNS ==== Цвят на фона, но с възможност да се каже за конкретна колона, вместо за целия ред. Виж //Относно цвят/размер/шрифт/стил на отделните колони// по-долу. ==== ACT$FONT_COLOR ==== Цвят на шрифта, в RGB, шестнайсетично, примерно #FF0000(чисто червено), ==== ACT$FONT_COLOR_XOR ==== Алтернативен цвят на шрифта (редува се през ред с цвета на шрифта), в RGB, шестнайсетично, примерно #FF0000 (чисто червено), ==== ACT$FONT_COLOR_COLUMNS ==== Цвят на шрифта, но с възможност да се каже за конкретна колона, вместо за целия ред. Виж //Относно цвят/размер/шрифт/стил на отделните колони// по-долу. ==== ACT$FONT_STYLE ==== Стил на шрифта - Bold, Italic, Underline, StrikeOut Подава се като стринг, примерно __**BI - bold и underline**__, S - Strikeout (зачеркнато), __//**BIUS - всички едновременно**//__ ==== ACT$FONT_STYLE_COLUMNS ==== Стил на шрифта, но с възможност да се каже за конкретна колона, вместо за целия ред. Виж //Относно цвят/размер/шрифт/стил на отделните колони// по-долу. ==== ACT$FONT_SIZE ==== Размер на шрифта, в пиксели ==== ACT$FONT_SIZE_COLUMNS ==== Размер на шрифта, но с възможност да се каже за конкретна колона, вместо за целия ред. Виж //Относно цвят/размер/шрифт/стил на отделните колони// по-долу. ==== Кодове на цветовете ==== Удобен начин да се избере код на цвят: чрез http://www.colorpicker.com/ ==== Относно цвят/размер/шрифт/стил на отделните колони ==== При задаване например на стил чрез ACT$FONT_STYLE, този стил важи по подразбиране за ВСИЧКИ КОЛОНИ, освен ако няма зададени и ACT$FONT_STYLE_COLUMNS. Тогава стила важи само за изброените в ACT$FONT_STYLE_COLUMNS, **освен ако** в изброяването не е зададено изключение. Примери: ^ ACT$FONT_STYLE ^ ACT$FONT_STYLE_COLUMNS^Резултат^ | B | Column1;Column2 | В колона 1 и 2 текста ще е BOLD, в останалите - не | | B | | Във ВСИЧКИ колони текста ще е BOLD| | B | Column1=I | В колона 1 текста ще е Italic. Обърнете внимание: bold-а се игнорира | | B | Column1=I;Column2 | В колона 1 текста ще е Italic. В колона 2 ще е bold| Логиката за останалите Font_Color / Font_Color_Columns, Font_Size/Font_Size_Columns е същата. //Забележка: Изглежда, че ACT$FONT_COLOR_COLUMNS няма никакъв ефект, ако в нея има само изключения (например Column1=#112233) И не съществува колона ACT$FONT_COLOR.// ===== Справка, която поставя стойности в дадени редове на документ или създава нови редове в документ ===== 1. За да може **справка да редактира редове на документ**, в справката трябва да са дефинирани поне 2 вида полета: **"търсещи"** и **"резултатни"**. Търсещите полета определят върху кои редове в документа ще се приложат стойностите на резултатните полета. Търсещите полета трябва да имат име от вида **LOCATE_<име_на_поле>**, където <име_на_поле> е името на поле от документа. Не е задължително да има търсещи полета - ако няма такива, то резултатните полета ще поставят стойностите си във всички редове на документа. Позволено е да съществуват няколко търсещи полета, като в този случай стойностите на резултатните полета се прилагат върху редовете, които отговарят на стойностите на **всички** търсещи полета. Резултатните полета не трябва да имат някакво специално име, всички полета, които не са търсещи, се приемат за резултатни. За всяко резултатно поле - ако в документа съществува поле със същото име, тогава неговата стойност се прилага върху редовете в документа, отговарящи на търсещите полета. Например, за да запишем дадено количество в редовете с даден номер на позиция, трябва справката да има търсещо поле с име LOCATE_ITEM_REF, което съдържа като стойност номера на дадената позиция и резултатно поле с име QTY1, което да съдържа като стойност даденото количество. 2. За да може **справка да добавя редове в документ**, трябва в нея да е дефинирано поле с име **NEW_ROW**. Всеки ред от справката, който съдържа стойност за това поле, различна от нула, ще бъде използван за добавяне на нов ред в документа, като стойностите за всяко поле на новия ред се взимат от съответните полета в справката (полетата с еднакви имена). Например, за да добавим нов ред в документ с даден номер на позиция и дадено количество, справката трябва да съдържа: \\ - поле NEW_ROW със стойност 1 \\ - поле ITEM_REF със стойност номера на дадената позиция \\ - поле QTY1 със стойност даденото количество \\ 3. За да може дадена справка да редактира или добавя редове в документ, трябва връзката към нея в настройките на типа документ да има следните настройки: \\ - Показвай модално - да \\ - Връщай резултат - да \\ - Използвай резултата в - Заглавна част или Детайлна част (избира се къде трябва да се приложи резултата на справката) Попълване на количество (избрано от потребителя) и цена без ДДС = 10 в текущо избрания ред на документа: \\ ''select \\ cast(:"dbDetail.ID" as DM_REF) LOCATE_ID, \\ cast(:ENTER_QTY1 as DM_FLOAT) R_QTY1, \\ cast(10 as DM_FLOAT) PRICE_WO_VAT_BFR_DISCNT \\ from RDB$DATABASE''