• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Ділимось корисними скріптами

Автор sDes, Жовтень 05, 2011, 15:33:01

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

sDes



Пропоную тут викладати свої корисні скріпти для роботи з УкрСкладом та допомагати іншим в їх написанні.


Наприклад, як за допомогою SQL-коду дописати до назви кожного товару конкретної групи слово чи словосполучення?

TheOK

#1
Сразу скажу, что
манипуляции с SQL запросами могут быть очень опасны для ваших данных. Они безвозвратно могут удалить необходимую вам информацию или изменить ее (например удалить весь товар).
Я надеюсь это тема поднялась не для обучения написанию SQL запросов (для этого есть книги и интернет), а в связи с наличием конкретных нужд... Не хотелось бы тратить время на то, что никто не будет использовать.
Вот вам запрос, помещайте его в отчет (отчет не выводит никаких данных, смотрите, не запустите его несколько раз, а то придется потом писать еще один запрос))), чтобы можно было по человечески выбрать группу товара, товар которой будет переименовываться (вложенных групп не коснется).
Запрос на добавление текста (впереди названия товара), помещенного в поле Произвольный текст в отчете для выбранной группы.
UPDATE
  tovar_name
SET
  tovar_name.name = '#текст_1#' || Tovar_name.name
WHERE
  Tovar_name.tip=#товар_группа_№#

P.S.Не советую оставлять данный отчетик для общего пользования...
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

admin

И еще добавлю перед выполнением любых операций (ну кроме выборки SELECT) в SQL менеджере делайте резерв базы данных.

sDes

Дякую!
А як прочитати поле "Мітка" в товарі? Де взяти всі назви полів до яких я можу звертатись в запитах?

TheOK

Для этого вам лучше будет освоить некоторые программы, которые позволяют работать "напрямую" с файлами базы данных.
Информацию какая программа и как подключаться вы можете найти в уже освещенных вопросах.
http://www.softbalance.com.ua/forum/index.php?topic=869.msg7064#msg7064
http://www.softbalance.com.ua/forum/index.php?topic=1285.msg7250#msg7250
Только хочу отметить, что я никаких дополнительных копирований файлов не осуществлял, возможно потому, что у меня ранее уже был установлен Firebird сервер.
P.S. Хочу еще раз отметить, что необходимо быть очень осторожным при работе "напрямую" с файлом базы данных. Более того, данный программный продукт (я об УкрСклад), не предназначен для модификаций со стороны пользователя ИМХО
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

TheOK

#5
Решил выложить список полей приблизительно 71 (из 75) таблицы (некоторые удалил).
Файл можно открыть Excel.
Отношения между таблицами не проставлял, т.к. многих отношений еще сам не понял, некоторые отношения неявные, сам хотел бы получить список отношений между ключевыми/неключевыми полями, но, к сожалению, генерировать его не умею.
Но из тех, которые пригодятся:

  • Счет фактура (соотносятся по полям schet.num-schet_.pid): 

         
    • schet - таблица данных о счете
    • schet_  - таблица товара в счете
  • Производство (соотносятся по полям vyrnakl.num-vyrnakl_.pid): 

         
    • vyrnakl - таблица данных о документе
    • vyrnakl_  - таблица товара в документе
  • Расходная накладная (соотносятся по полям vnakl.num-vnakl_.pid): 

         
    • vnakl - таблица данных о счете
    • vnakl_  - таблица товара в счете

Могу ошибаться, пишу по памяти.
Если хотите связать свой запрос с метками, то вам нужен приблизительно такой запрос:
select
*
FROM
params,schet_ left join schet on pid=num
where
params.name like  ( '%'||'\_0\_' || cast(schet.doc_mark_type as varchar(10)) ||'%') escape '\'
order by schet.num


Если вам нужно проделать такое же с производством/расходной накладной, то необходимо вместо выделенного жирным шрифтом числа 0 использовать число 20 для производства и 1 для расходной накладной.
- могу ошибаться т.к. запрос не тестил.
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]