+7 499 990-10-21

Может сделать раздел, посвященный POSTGRESQL

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение Rafta » 21 май 2011, 12:27

Спасибо. Идея понятна.
Ubuntu 10.10 \ Дэнси-Касса 1.2.6.p.8\ 1С v7.7\ протокол обмена Атол\ Без ФР \ сканер Metrologic Orbit 7120
Аватара пользователя
Rafta
 
Постов: 263
Зарегистрирован: 29 апр 2011, 14:07

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение Rafta » 30 май 2011, 00:17

Попробовали ввести в psql примеры
Код: Выделить всё
LinCash=# CREATE OR REPLACE VIEW kassa_transactions AS
SELECT a.n_transaction, a.tr_type_id, a.name, a.value_1, a.value_2, a.gain, a.barcode, a.tr_date_time, a.n_pc, a.n_kkm, a.seller, a.n_session, a.n_check, a.n_doc, a.check_type, a.code, a.code_tax_group, a.code_tax_rate, a.payment_type, a.card_code, a.reduction_info, a.reduction_type, a.auto_scheme_id, a.protokol_type, a.round_sum
   FROM dblink('hostaddr=192.168.1.5 port=5432 dbname=Transaction user=kassir'::text, 'SELECT  FROM transaction_explain  '::text) a(n_transaction integer, tr_type_id integer, name text, value_1 numeric(19,3), value_2 numeric(19,3), gain text, barcode text, tr_date_time timestamp without time zone, n_pc integer, n_kkm integer, seller integer, n_session integer, n_check integer, n_doc integer, check_type integer, code text, code_tax_group integer, code_tax_rate integer, payment_type integer, card_code text, reduction_info text, reduction_type integer, auto_scheme_id integer, protokol_type integer, round_sum numeric(19,3));
ERROR:  function dblink(text, text) does not exist
СТРОКА 3:    FROM dblink('hostaddr=192.168.1.5 port=5432 dbname=Transa...
                  ^
ПОДСКАЗКА:  No function matches the given name and argument types. You might need to add explicit type casts.
LinCash=#
Ubuntu 10.10 \ Дэнси-Касса 1.2.6.p.8\ 1С v7.7\ протокол обмена Атол\ Без ФР \ сканер Metrologic Orbit 7120
Аватара пользователя
Rafta
 
Постов: 263
Зарегистрирован: 29 апр 2011, 14:07

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение Rafta » 30 май 2011, 01:19

Разобрались,
Доустанавливаем dblink:
Система -> Администрирование -> Менеджер пакетов Synaptic
вводим пароль
в поле быстрого поиска вводим dblink
отмечаем пакет postgresql-contrib-8.4
жмем кнопку Применить
Перезагружаем PostgreSQL-сервер:
sudo /etc/init.d/postgresql restart
В терминале набираем:
kassir@kassa1:~$ psql -U kassir -h 127.0.0.1 LinCash < /usr/share/postgresql/8.4/contrib/dblink.sql
После этого пример BigAndy проходит без ошибок
Ubuntu 10.10 \ Дэнси-Касса 1.2.6.p.8\ 1С v7.7\ протокол обмена Атол\ Без ФР \ сканер Metrologic Orbit 7120
Аватара пользователя
Rafta
 
Постов: 263
Зарегистрирован: 29 апр 2011, 14:07

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение Spike » 31 май 2011, 15:44

Вопрос к BigAndy.
На кассе подвязываем номенклатуру к штрих-коду. Как средствами postgreSQL отследить новые штрих-коды и выгрузить их в текстовый файл.
Изображение
Spike
 
Постов: 400
Зарегистрирован: 26 авг 2009, 15:33
Откуда: Курская обл. г.Льгов

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение BigAndy » 31 май 2011, 16:10

whatis "новые штрих-коды"
Каков критерий новизны? И как долго он должен сохраняться?
BigAndy
 
Постов: 461
Зарегистрирован: 29 ноя 2009, 17:11

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение Alexander » 31 май 2011, 21:39

Spike хотел спросить, как написать триггер на INSERT INTO ware_barcodes, чтобы только что введенный штрих-код (а точнее вся строка таблицы) сразу выгрузился в текстовый файл для последующей обработки в стороннем софте.
Alexander
 
Постов: 4959
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение BigAndy » 31 май 2011, 21:56

Э-э-м... НУ, во-первых не вижу смысла писать триггер на эту тему ибо достаточно сделать copy from select,где в этом select отобрать новые записи.
во вторых, если уж приспичит выполнять тяжёлые дисковые операции непосредственно по срабатыванию триггера, то надо использовать функции, написанные на чём-нть типа pl/perlu. К сожалению, в последнем я не силён. Функци на sql и pl/pgsql из соображений безопасности и ненужности такой возможности лишены.

Как вариант:
Создаем временную|постоянную таблицу ware_barcode_new и пишем в нее по триггеру on insert.
Более лёгкий вариант - добавить в ware_barcode поле типа byte default true, которое обновлять из внешнего скрипта после успешного copy from select....
BigAndy
 
Постов: 461
Зарегистрирован: 29 ноя 2009, 17:11

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение Alexander » 31 май 2011, 22:04

Вероятно, без триггера Spike-у все-таки не обойтись, т.к. работа с внешней товароучеткой накладывает свои ограничения - таблица штрих-кодов может быть перезаписана по данным товароучетки в произвольный момент времени - данные о введенных локально штрих-кодах потеряются. Вариант со скидыванием по триггеру во временную таблицу в принципе вполне рабочий.
Alexander
 
Постов: 4959
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение BigAndy » 31 май 2011, 22:15

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

А не пользоваться совсем скриптом загрузки из товароучётки или повесить запрещение на обновление по тому же триггеру, - такой вариант не подойдёт?
BigAndy
 
Постов: 461
Зарегистрирован: 29 ноя 2009, 17:11

Re: Может сделать раздел, посвященный POSTGRESQL

Сообщение turboatom » 01 июн 2011, 13:46

Код: Выделить всё
LinCash=# * from
sales_bydate_operaion order by salesdate desc limit 10;


Подскажите в чем проблема? Скрин во вложении
Вложения
123.JPG
123.JPG (59.05 КБ) Просмотров: 6101
turboatom
 
Постов: 60
Зарегистрирован: 06 май 2011, 02:24

Пред.След.

Вернуться в Ваши предложения

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


cron

Кто сейчас на конференции

Сейчас посетителей на конференции: 3, из них зарегистрированных: 0, скрытых: 0 и гостей: 3 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (170) здесь было 16 май 2020, 01:50

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3