Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Прочитал большую ветку про остатки товара. Да простят меня модераторы, надо было сразу сюда, а я вначале в форум Oracle. Похожий аспект проблемы: Система учета авиабилетов (БСО – бланки строгой отчетности). В общий чертах кассиры - получают от кого-то бланки, реализовывают их, передают другому (кассиру, кладовщику). Операций в общем случае две – расход (расходный ордер), приход (приходный ордер) (в принципе, может быть операция – отказ от приема бланков по причинам несоответствия реально переданных бланков расходному ордеру, но на это пока не стоит обращать внимание). Каждый бланк характеризуется типом, например, ”555”, серией (“420”), номером (“1234567”). Совокупность этих параметров уникальна. Ордер описывает: кто передает (получает), кому, дата операции, № ордера и записи следующего содержания - тип, серия и диапазон номеров (передаются пачками без дыр в нумерации) начальный - конечный. Имеем как бы таблицы операций – ордера и пачки бланков в них. Если кассир просто реализовал бланк (продал билет, испортил бланк) то оформляется расходный ордер на самого себя. Задач несколько: 1. Знать сколько бланков было у кассира на утро определенного дня 2. Знать сколько бланков у него сейчас 3. Если кассир (или кладовщики) передал другому бланки, то до той поры, пока другой не отметится о их получении они числятся «в пути» (но при этом считаем, что на остатках первого кассира они уже не числятся). Учет бланков в пути. 4. И соответственно знать, сколько бланков было во всем агентстве (филиалах) на определенное число и на настоящий момент. У меня есть некоторые идеи по общей организации БД, но пока не хочу их навязывать. Если тема вызовет интерес – обменюсь идеями. С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 04:21 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Интересно, бланки в пути - кто за них отвечает? По аналогии с перевозками может следует ввести конкретных транспортных агентов, (курьеров, доставщиков). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 09:11 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Кассир, кладовщик формирует расходный ордер на передаваемые бланки и все это отправляет адресату по почте, курьерской службой (заказными письмами,...). Способы доставки роли не играют. Главное один передал ( с остатков у него они ушли), другой через некоторое время получил их, оформив приходный ордер на себя. Как только оформил ордер, бланки уходят с пути и становятся ему в подотчет (на остатки). В случае физического несоответствия бланков расходному ордеру - есть варианты. Думаю пока на них не надо заострять внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 09:30 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Занимался как-то такой задачей, когда оаботал в а/к Сибирь. Существующие программы вам не подходят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 10:12 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
andsmЗанимался как-то такой задачей, когда оаботал в а/к Сибирь. Существующие программы вам не подходят? совсем недавно дискутировали эту тему - ищите по слову "бланки" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 10:42 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
>andsm В системе авиаперевозок нет единого стандарта, очень много разработчиков всяких систем. По-этому приходится изобретать велосипед. Тем более, что это только часть системы и если у тебя есть система билетопечати с хранением распечатываемой информации на сервере, система ввода отчетов кассиров то совсем необязательно приобретать только движение БСО. Есть у меня желание обменяться идеями, нет ли у Вас подобного? Вкратце суть нашего предполагаемого подхода: 1. 2 таблицы операций : Первая - заголовок ордера - iddoc, Дата,номер,тип (приход,расход),от кого, кому. Вторая - сами пачки бланков - idblank,iddoc,тип бланка, серия, начальный номер, конечный. 2. Таблица оперативного учета (по каждому бланку): id,тип бланка, серия, номер, текущий владелец, статус и ряд служебных полей (дата создания записи, кто создал, дата последней модификации, кто модифицировал) статус - пусто, значит есть у владельца - 1 реализован - 2 в пути (можно наверно завести поле кому отправлен) На один бланк только одна запись, отражается только последнее состояние. Если статус 2 - то он будет гореть до тех пор, пока новый владелец не получит бланк и поле текущий владелец станет равным новому, а поле статус станет пустым. Подобная конструкция позволяет вести оперативный учет и ароеде есть возможность получить остатки на любой день, прогон таблицы операции с начала или с конца. Операций много, перемещения бланков идут постоянно, поэтому думаю о промежуточных итогах - остатках. Заводим таблицу остатки и время от времени сохраняем остатки на какое-либо число с большим гандикапом (например формируем остатки на 1 января только в феврале), думаю хватит или 1 раз в год или 2 раза в год. Гандикап нуден, чтобы больше никогда предыдущие данные не изменять, если ну очень хочется провести проводки сегодняшним числом. Бланки передаются так часто, контроль их наличия постоянен, поэтому, думаю, возможная ошибка выявится в течение месяца. Народ - оцените пожалуйста. > tertertertertertert Спасибо, сейчас поищу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 16:29 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
У каждого бланка должно быть 2 даты: когда он был принят на учет ( вообще появился в ситеме NOT NULL) и когда он перестал существовать (испортили/потеряли/израсходовали, возможен NULL). И все операции с бланком должны осуществляться только в этот период. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 16:37 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Я немного неправильно написал в разделе 2. Таблица оперативного учета (по каждому бланку): id,тип бланка, серия, номер, текущий владелец, статус и ряд служебных полей (дата создания записи, кто создал, дата последней модификации, кто модифицировал) Дата создания записи - это и есть дата постановки на учет (она не меняется) Дата последней модификации - по смыслу. Если реализовали, значит ничего больше изменяться по этому бланку не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 17:15 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
>tertertertertertert Нашел ветку, инициированную sp. До логического конца не доведенное обсуждение, о расчете остатков на конкретное число там речи нет. Строится история перемещений бланка от начала до реализации (одному бланку соответствует много записей). Нет состояния "в пути", но можно и добавить. Получается, чтобы получить информацию о наличии бланков на конкретное число надо найти последнюю дату по каждому бланку до указанного числа, голова совсем не варит, не подскажете вариант запроса? Желательно для Oracle. Кроме того, перемещения идут постоянно, от 1000 до 10000 в день, за год будет миллиона 3 записей. Немного наверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 17:29 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
И еще. Проблема - исправление задним числом. Хорошо, если ошибка была в рамках одного кассира, открыли отчет за такое-то число, исправили расходный-приходный ордер и все тит-топ. А если бланки перешли к другому, он их принял и только потом обнаружил ошибку. Никакого автоматического пересчета, имхо, делать нельзя. Первый должен исправить, затем второй. Кто как думает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 17:54 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Тихо сам с собою... замкнуло, запрос на получение последней даты по каждому бланку select id,max(data) from t1 group by id where data<'16.01.2004' Кто работал с подобной организацией данных, не подскажете, как долго будет считаться на 10 млн. записей. Нужен будет индекс по id или по id +data? Количество повторяющихся id будет очень большим, где-то до 100. Есть неявное условие - желательно, чтобы бланк должен быть реализован за два месяца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 18:16 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Andrey1963>tertertertertertert Нашел ветку, инициированную sp. До логического конца не доведенное обсуждение, о расчете остатков на конкретное число там речи нет. Строится история перемещений бланка от начала до реализации (одному бланку соответствует много записей). Нет состояния "в пути", но можно и добавить. Получается, чтобы получить информацию о наличии бланков на конкретное число надо найти последнюю дату по каждому бланку до указанного числа, голова совсем не варит, не подскажете вариант запроса? Желательно для Oracle. Кроме того, перемещения идут постоянно, от 1000 до 10000 в день, за год будет миллиона 3 записей. Немного наверно. просто там подразумевалось это делать триггером BlankID DateStart default(getdate()) DateFinish default('01/01/3000') при вставке новой записи - последней "активной" записи вместо '01/01/3000' - пишется текущая дата. а зпрос такой - показать по BlankID где Дата>=DateStart и Дата<DateFinish ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 18:21 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
>>sp >просто там подразумевалось это делать триггером >BlankID >DateStart default(getdate()) >DateFinish default('01/01/3000') >при вставке новой записи - последней "активной" записи >вместо '01/01/3000' - пишется текущая дата. >а зпрос такой - показать по BlankID где Дата>=DateStart и Дата<DateFinish Поясните, пожалуйста. Кроме таблицы перемещений бланка завести указанную таблицу, где на каждый бланк одна запись? datestart вводится один раз (при первичном попадании бланка в базу), datefinish - когда бланк снимается с учета (реализован,аннулирован,списан,...)? Я правильно понял? Если да, то как получить остатки по конкретному кассиру на определенное число. Что-то не получается. Тогда либо в таблице перемещений две даты (начальная и конечная) и при новом перемещении в предыдущей пишем datefinish=getdate()-1 (или getdate()), а в новой datestart=getdate(),datefinish='01/01/3000'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 03:49 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Создал для пробы таблицу перемещений (с диапазоном дат) create table blank (iddoc number(38),idblank number(38),num char(14),ind number(4), status char(1),dbegin date,dend date,constraint pk_blank primary key (idblank) iddoc-Ссылка на расходный/приходный ордер. Дополнительно create sequence sq_blank Планируется работа следующим образом Бланк ххх поступил кассиру 123 insert into blank values (111,sq_bank.nextval,'xxx',123,' ',sysdate,to_date('01.01.3000', 'dd.mm.yyyy'))]) (dbegin - sysdate или дата которой кассир заходит в систему) Если бланк реализован - статус '1' Если бланк передан кассиру 321, update blank set dend=sysdate для этого бланка и добавляется запись со статусом '2' insert into blank values (222,sq_bank.nextval,'xxx',123,'2' ,sysdate,to_date('01.01.3000', 'dd.mm.yyyy'))]) Когда прийдет подтверждение, то во второй записи номер кассира изменится на 321 и status=' ' Здесь, к сожалению не видно кому отправлен бланк, но информация об этом есть в расходном ордере. и второе - (расчет остатков на конкретную дату) - насколько оптимален поиск по диапазону дат, может все-же завести одну дату и искать ближайшую дату до искомой? У кого есть какие мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 07:37 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Andrey1963 Не морочь голову людям. Чтобы получить остатки по кассирам - Все делается очень просто. Просто не надо забывать, что кроме сущности "Бланки" существует сущность "Места хранения (кассиры)". Каждый бланк входит в пачку (при передаче). Пачка в акт приемки-передачи. В акте можно узнать кол-во каждого вида бланков. И, далее делаем бухгалтерскую проводку - один сдал (минус) другой принял (плюс). И, далее - проводки,обороты - остатки. Все тривиально но тока потрахаться чуть -чуть надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 10:21 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Хорошо, не буду морочить людям голову, но и остатки хранить тоже не хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 11:26 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Мысль.... Разделить Бланк на Бланк (id->...) и СтатусБланка (id,date->...). Объединить СтатусБланка и ОперациюБланка (id, doc-> ...) т.к. статус всегда изменяется операцией и операция всегда задается документом, так что doc --> date. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 12:26 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
2 ModelR Не понимаю, вы о таблице переходов состояний думаете? тапа конечного автомата? Мне, например, видится что такая фича как статус бланка вообще в этой системе - лишняя. Я правда пока что не уверен. Давайте попробуйте убедить меня в обратном. Я полагаю что статус бланка определяется местом где он находится.Утерянные - к утерянным, испорченные - к испорченным и т.д. А вот дата последней операции с бланком - другое дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 12:47 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Нет, статус - это различимое состояние, объкет не может находится в двух состояниях сразу. Поскольку полбланка не движуться, то состояние и операция его создавшая связаны 1:1. Бланк ('xxx') Статус ('xxx', дата1, где=123, на основании =док1, годен=да,..., датаокончания=дата2) Статус ('xxx', дата2, где=в пути, на основании =док2, годен=да,..., датаокончания=) Документ Док2 перевел бланк из одного состояния в другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 14:36 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Ну да... Бланк не может находиться в двух местах сразу. Он всегда в конкретном месте. По идее кассир должен иметь у себя несколько счетов для кажного типа бланков - нормальные, утерянные, испорченные. И естественно перекладывать эти бумажки между этими счетами. Ну и естественно счет определяет состояние)... И, честно говоря такое понятие как "в пути" .. тут были правы - они у курьера а не в пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 14:49 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
>>ModelR Спасибо за ответ. >>Бланк ('xxx') ??Статус ('xxx', дата1, где=123, на основании =док1, годен=да,..., >>датаокончания=дата2) >>Статус ('xxx', дата2, где=в пути, на основании =док2, годен=да,..., >>датаокончания=) >>Документ Док2 перевел бланк из одного состояния в другое. Заводить в справочнике кассиров квази-кассира "в пути"? Только необходимо знать, кому именно отправили бланк ххх. Поэтому я предполагаю во второй записи писать где=321 (кому), а в специальном поле статус - признак трансфера, по умолчанию там будет пусто (т.е. бланк числится у агента). а в первой записи поставить прзнак отправлен. Т.е. бланк в этот момент времени ни за кем не числится. Когда кассир 321 примет его статус станет пустым, dbegin=sysdate() т.е. бланк годен и находится у втрого кассира (трансфер завершен). Можно было бы использовать для подобного учета таблицу документов (ордеров), но так мне кажется будет быстрее вычислить и историю любого бланка и остатки по любому кассиру на любую дату. Если зря писал, прошу простить. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 15:44 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Интересно, Андрей, а как собственно акт приемки -передачи у вас будет выглядеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 16:05 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Andrey1963Т.е. бланк в этот момент времени ни за кем не числится. Рука шефа безопасности рефлекторно тянется к пистолету...:) В предложенной схеме предполагается, что первично о том, кто, что, кому и как передаетнаписано в документе . В момент проводки документа (а документ в свою очередь может иметь несколько состояний, переход между которыми порождает проводки) обновляется Статус - закрывается предшествующее состояние (датаокончания) и создается запись для нового с открытой датой окончания. Т.е. чтобы выяснить про бланк в пути, а куда собственно он держит путь, нужно посмотреть в документ. Теоретически, по факту он может прибыть совсем в другое место, и именно про это место появится новая запись в Статусе. Про плановое место вообще в Статусе записей не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 16:16 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Немного еще топлива в топку. Смотря на акт приемки передачи я вижу что там должно быть по крайней мере 2 записи - кто сдал и кто принял. Т.е. Первый чел должен сначала сформировать все то, что он передает и указать - кому. А второй чел должен всю эту байду принять. Т.е. сама передача должна проходить как-бы в два этапа. Иначе челу как насуют... что ему мало не покажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 16:40 |
|
||
|
Учет остатков бланков строгой отчетности
|
|||
|---|---|---|---|
|
#18+
Люблю, когда по делу вопросы задают :)) Передача проводится в два этапа - в таблицу ордеров заводится расходный ордер, в котром сказано от кого, кому передана пачка бланков. Проверяется наличие данных бланков в таблице бланки (где они поштучно, со статусом пусто,т.е. принадлежеат данному агенту) (точнее их количестов count(*) where status=' ' and kassa=123). Если эти бланки есть, то им всем меняется статус в отправленr и для каждого бланка создается новая запись, где указана касса, которой отправляется (321) и статус - transfer и даты. Когда второй кассе прийдет оповещение о передаче, она просмотрит отпарвдленные ей бланки и если все нормально - примет их, т.е. оформит приходный ордер - в таблице ордеров появится соответствующая запись, а в таблице бланки у первой кассы можно поменять статус на окончательно отправлен, а у второй статус станет=' ', т.е. принадлежащим данной кассе. Трансфер завершен, приянть бланки отправленные не ей она не может. Единственно только по таблице нельзя отследить кто ей отправлял, поэтому в ней есть ссылка на талицу ордеров (документов), следовательно мы видим полную картину перемещений. И передача проходит в два этапа расход-приход с подтверждением. Так пойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2005, 05:19 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33323507&tid=1545613]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
124ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 435ms |

| 0 / 0 |
