powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / убей двойника
83 сообщений из 83, показаны все 4 страниц
убей двойника
    #32040955
Почемучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа разработчики и АБД
У меня к вам следующий вопрос возник. Наверное каждому из вас в той или иной степени приходится бороться с двойными записями в ваших БД (будь то БД по клиентам, посетителям больницы и т.п.), ведь человеческий фактор еще никто не отменял.
Так вот и возник вопрос как бы написать такой запросище, чтобы это дело присекать.
Хотелось бы услышать ваше мнение по этому вопросу.

вот несколько соображений по этой теме.
Двойники могут появляться
1 если какой нибудь ПЕТЯ начнет вводить клиента "Солнечный путь", а яжык переключит только после 2 буквы и тогда мы получим, что чистое сравнение на Name=Name пропустит, это хотя визуально их разве что БГ и отличит
2 тот же ПЕТЯ поставит лишний " " (пробел) или "."(точка) в фирме "ЗАО ХЕ регистр"
Как кто решает такие проблемы

извиняюсь если не сильно внятно объяснил, но надеюсь вы поняли в чем суть проблемы
...
Рейтинг: 0 / 0
убей двойника
    #32040958
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, это надо лечить на клиенте
...
Рейтинг: 0 / 0
убей двойника
    #32040961
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, это надо лечить на клиенте

Это не на клиенте надо лечить, это тому Васе, который БД проектировал ручки поотрывать и выбросить нафиг.
...
Рейтинг: 0 / 0
убей двойника
    #32040963
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что кроме имен у них нет других более нормальных аттрибутов,которые являлись бы уникальными(или набора аттрибутов),ведь "Солнечный путей" может быть сотня,но очень врядли что-бы у них был один р\с,или адресс,телефон или все вместе.
Вот при добавке и проверяй все ето,у меня ето все зашито в ХП которая отвечает за insert.
...
Рейтинг: 0 / 0
убей двойника
    #32040965
Почемучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как ?
За спиной у каждого сотрудника, который может ввесли клиента стоять и долбить "А вы точно уверены что никто из 500 человек до вас не мог ввести этого клиента в БД под немного другим наименованием!!!" ???

нет тут на клиенте не побороть
есть конечно несколько способ решения данной проблемы
1(и самый верный наверное) из них это растрел на месте того, кто нечаянно ввел клиента который уже был.
Но мы ведь не месняки, правильно ;) хотя иногда руки к автомату тянутся.

2 метод это наверное всё таки поставить какие либо проверки в административных рассылках и капать этим товарищам переодически на лысину серной кислотой.
Это наш метод ..., но как такую процу написать.

несколько идей
составление функции выдающей степень похожести одной строки на другую.
так несколько правил которыми мы люди руководствуемся
А (B & C) == A(B&C) == A (B&C) == и т.д.

но это моё мнение (и я его конечно реализую)
мне также интересно как другие смотрят на эту проблему
...
Рейтинг: 0 / 0
убей двойника
    #32040968
Почемучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что кроме имен у них нет других более нормальных аттрибутов,которые являлись бы уникальными(или набора аттрибутов),ведь "Солнечный путей" может быть сотня,но очень врядли что-бы у них был один р\с,или адресс,телефон или все вместе.
Вот при добавке и проверяй все ето,у меня ето все зашито в ХП которая отвечает за insert.


Мне бы может тоже хотелось это вшить в ХП но в этом то проблема и есть сначала вводят имя клиента, которое конечно же уникально, а уже потом указывают(возможно гораздо позднее) его р/с и прочие по настоящему уникальные атрибуты. Но первый человек ввел "солнечный путь" с первой английской буквы и поэтомы второй ПЕТЯ не задумываясь вводит и у нас совершенно благополучно существуют 2 клиента (2 баланса по ним).
Т.е. вопрос не о том какие мы уродские разработчики, а о том как мы умеем решать поставленные проблемы.
Проблема поставлена, как же вы её решаете ???
...
Рейтинг: 0 / 0
убей двойника
    #32040969
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тю блин ,а чем проблемма? Написать две ХП и прилепить на форму пару другую контролов + какой нибудь мсгбокс?
И что месаж лень вывести "Вы уверенны в том что делаете".
...
Рейтинг: 0 / 0
убей двойника
    #32040970
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почемучка, Вам Maxx уже объяснил суть Вашей проблемы.
Ведь в жизни Вы как то отличаете соседа Петю и сослуживца Петю, у которых одинаковое имя но тем не менее это не один и тот же человек. И даже если они одинакового роста и по необъяснимой прихоти природы похожи друг на друга как близнецы их все равно можно отличить например по номеру паспорта.
Дубли в таблицы могут быть только в двух случаях, точнее даже все равно в одном, в случае неправильного проектирования, когда нет возможности выделить РК.
И даже если совершенно по независящим от Вас причинам у Вас нет полной информации о сущьности, все равно нужно предусмотреть какой то искусственный механизм для их различия. Ну например, каждому клиенту вручать идентификационную карточку, номер которой уникален и по которому можно будет различать записи о клиентах.
...
Рейтинг: 0 / 0
убей двойника
    #32040973
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все таки конкретно это проблему я считаю нужно решать на клиенте....
реализаций может быть несколько... включая поиск вхождений похожих названий до добовления новой записи + диалог с пользователем...
ЗЫ предусмотреть все глупые ошибки пользователя невозможно... но свести к минимуму / ;) муму /
нужно стараться... потому и существует практика бэттатестирования....
...
Рейтинг: 0 / 0
убей двойника
    #32040975
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И всеже либо у Вас 2 Солнечных пути с одинаковыми атрибутами или один пустой(Одно название в мешанной кодировке),или извените - полное безобразие:)))
...
Рейтинг: 0 / 0
убей двойника
    #32040980
Почемучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiCe
Я конечно же соглсен, что на клиенте это делать вещь замечательная. Либо в ХП занимающейся insert в БД клиентов.
Так вот каким же собственно методом можно определить что любимому ПЕТЕ №2 нужно сообщить мол есть уже такая хрень, т.е. проца должна определить это и выдать что такой есть и юзай его.

Не уж то у вас у всех БД с числовыми значениями и клиентов ваши работники различают по р/с и IdKlient :)))

Какие проверки вы делаете перед тем как ввести новую запись.

то Мaxx
хуже у меня у обоих всё заполнено и по обоим куча документов выписано уже
...
Рейтинг: 0 / 0
убей двойника
    #32040984
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ну фиг там(простите),при заполнении проверяеш в ХП все аттрибуты,если двойник сохраняеш в темповую таблу,возвращаеш клиенту данные с просьбой потвердить или чего еще сделать.....ждеш пока клиент думает,дождавшись ответа если да - инсертиш,если нет -делит.
...
Рейтинг: 0 / 0
убей двойника
    #32040985
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у нас схожая ситуация...
может поя вится сначала клиент, а уж потом дополнительная инфа ....
а при создании нового клиента как я уже говорил поиск на вхождения таких же названий...
предупреждения если слово смешанное(смесь кирилицы и латиницы)... обязательное выделение фрмы собственности в отделное поле... абревиатуру ( типа ТД, ПФГ, ...) расшифровывать и выносить так же в отдельное поле(таблицу)...
оч много вариантов....
...
Рейтинг: 0 / 0
убей двойника
    #32040987
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот такой вопрос, как клиенту можно выписать счет, документы и т.п., если эти параметры еще не известны?

вообще задача совершенно не тривиальная. я бы предложил как вариант на момент ввода некого уникального значения (например, ИНН, р/с, номер паспорта, что угодно)... вываливать пользователю список возможных конфликтов/совпадений.
в этом случае можно заставить пользователя выбрать клиента из уже существующих или добавить нового...
Если это уникальное значение не вводится, тогда забить на проверку вообще до тех пор, пока оно не будет введено.

кроме того, как не крути, придется писать тулзы для объединения уже существующих под разными именами клиентов в одного... Например пЕтЮ_ и пЕТЮ в Петю.
Ну и постоянно проверять БД, постепенно избавляюсь от глюков... старых и новых...
...
Рейтинг: 0 / 0
убей двойника
    #32040989
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
согласен...
тулз на объединение обязательно нужен...
переодический скан(в конце дня,в конце недели...)..
...
Рейтинг: 0 / 0
убей двойника
    #32040993
Guest_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A voobsche-to u kazhdogo predpriyaiya est` registratzionniy nomer, a u kazhdogo cheloveka - nomer pasporta - dostatochno dlya unikal`nosti, po-moemu.
...
Рейтинг: 0 / 0
убей двойника
    #32040995
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не всегда есть возможность сразу узнать....
приходится исползовать некий докуммент до того как появятся детальная информация...
просто таких нужно специально выделять....
...
Рейтинг: 0 / 0
убей двойника
    #32040996
AlexB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это надо решать административными методами. Прежде чем завести клиента в БД надо получить от него исчерпывающую информацию. Кто он, что он и откуда. И самое главное определится с атрибутом который бы однозначно определял клиента. В случае фирмы это ИНН, в случае больницы - № паспорта или медицинского полиса. И проверку вешать на этот атрибут. Название фирмы, как бы точно ты его не ввел, может повторяться: какое-нибудь ООО "Надежда" из Москвы и ООО "Надежда" из Ставрополя вполне может быть. И Ивановых Иван Ивановичей тоже полно.
И добавлять его в базу должен не первый попавшийся оператор, а специально выделенный человек. Если же на вводе сидят несколько человек, то в при добавлении надо автоматом записывать информацию кто ввел клиента и когда. В случае дублирования всегда найдется тот, кто это сделал.
Я в одной фирме сделал подобную вещь, а директор издал приказ - в случае обнаружения дублей с виновника - 2% от зарплаты. Через неделю проблема была снята.
...
Рейтинг: 0 / 0
убей двойника
    #32041005
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу....
ИМХО КЛИНТ ВСЕГДА ПРАВ.....
...
Рейтинг: 0 / 0
убей двойника
    #32041027
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд, стопроцентного решения этой проблемы не существует, хотя все посланные ответы помогают решить ее частично. Даже лишение 50% зарплаты может не помочь в случае увольняющегося завтра оператора.

Возможны ведь и другие ситуации. Например, какая-то фирма становится правопремницей другой. Пациент меняет фамилию, имя, отчество, пол, адрес, паспорт, а ИНН у него сроду не было, так как это противоречит его религиозным убеждениям.

Ко всем данным решениям я бы посоветовал поставить на форме справочника ма-а-ленкую кнопочку - "Слияние". Если кто-то, неважно, сервер ли, по совпадающему ИНН, юзер ли, по знакомой морде посетителя, обнаружил двойников, то нажимается эта кнопочка, выбираются оба двойника и во всех таблицах ID "Второго" заменяется на ID "Первого".
...
Рейтинг: 0 / 0
убей двойника
    #32041051
salog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно как угодно и сколь угодно помогать оператору не вводить инфу второй раз - вплоть до вывода списка похожих названий на основе аглоритма определения похожести звучания названий. И это есть правильно!
Еще круче вариант (гы-гы-гы) - отличать их по ИНН, т.к. как я понимаю речь идет о юридических лицах.
Вот и сделайте превое поле для ввода - ИНН. И все.
Но вообще, если такая проблема уж существует и вдойников навводили - необходимо делать механизм слияния двойников для слияния из в ведомости.
...
Рейтинг: 0 / 0
убей двойника
    #32041062
~Bazul~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж, проблемка животрепетная. И своего опыта: определите правила написания организации-например имеем два имени предприятия - краткое(для поиска, отображения) и полное (для отчетов, документов). Краткое пишется без кавычек и правовая форма в конце, например ООО "Ромашка" будет выглядеть как Ромашка ООО. Хорошо помогает избежать ввода двойников на первом этапе - "посмотри, нет ли уже такого в базе", особенно когда инфу заносит несколько операторов. Всегда отслеживайте и показывайте кто и когда завел запись, последним ее редактировал. Очень знаете дисциплинирует пользователя.
К сожалению ИНН и номер паспорта (осообенно во времена смены таковых) не являются естественными ключами, да и информация на начальном уровне может быть неполная. К примеру для выписки счета достаточно наименование фирмы, а для счета фактуры данные уже нужны в большем объеме.
Еще есть процедура проверки данных, запускается по желанию администратором или пользователем и возвращает сведения о подозрительных данных, неполных сведениях, каких-либо несоответствиях и т.д., вообщем чего бизнес-логика базы данных навеет.
...
Рейтинг: 0 / 0
убей двойника
    #32041068
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to: Cat2
Зря Вы так !
на самом деле лишение 50% зарплаты помогает всегда ! Просто надо точно указать кого лишать ... но ето тоже не лучший выход ! Например можно подумать о следующем :
Предположим, что речь идет о названии компании ...
1. Запретите вводить название в разных раскладках.
2. Ввод назввания производите в разных формах ввода, например ОАО вводить в водном поле а в другом "Солнечный ..." .
3. Запретите использовать заглавные и строчные буквы.
Все ! Это решит проблему ....
А как же с названиями, которые могут содержать и то и другое ... ?
Да просто :
Наделите одного человека правами создания таких названий и все ...
Удачи ...
...
Рейтинг: 0 / 0
убей двойника
    #32041073
Guest_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Polnostyu soglasen s AlexB. Nuzhno razrabotat` opredelonniy tehnologicheskiy protzess i utverdit` ego administrativno. Delal proekti v 3-h kontorah (po 200-300 rabotnikov kazhdaya) - vsyudu pomoglo reshit` bol`shinstvo problem.
...
Рейтинг: 0 / 0
убей двойника
    #32041091
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вертим круг без точила
...
Рейтинг: 0 / 0
убей двойника
    #32041104
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно проблема серьезная.
если нет идентификатора как для организаций ИНН приходится "мудрить".
написал на клиенте модуль определения "созвучности"
т.е ему пофигу пропущена ли буква или стоит другая..
преребирает названия и в случае совпадения буквосочетаний - запоминает степень "похожести" чем больше букв (от 3 до 19)- тем больше добавляемое число (число совпавших букв - определяют степень добавляемого числа)

потом сидел развлекался - брал различные слова и смотрел кто из клиентов на что смахивает )))
...
Рейтинг: 0 / 0
убей двойника
    #32041122
Denis_Ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi All!
Хочу поделиться соображениями по всем вышеозначенным способам решения данной проблемы:
1. уникальность названия (точки, запятые, пробелы, кавычки и прочие знаки препинания в названии) - такие знаки нужно искоренять нещадно, оставляем буквенно-циферную строку и назвав ее сигнатурой заносим в отдельное поле.
минус - лишняя инфа в БД
2. для поиска ошибок при вводе можно использовать ультрасуперпупермегалазеркульнейший алгоритм поиска по сигнатурам по частям с учетом индекса релевантности (круто сказал :) )
суть его в следующем: берем новое значение (его сигнатуру) и ищем его в БД (сигнатур опять же), то что нашли - во временную таблу с мах индексом,
потом режем с хвоста один символ - опять ищем - найденное - в таблу с индексом на единицу меньше и т.д. до середины выражения поиска. Затем процедуру повторяем, но режем с начала выражения. Ессно, что строки во временной таблице должны быть уникальны и упорядочены по убыванию индекса релевантности. Геморно, но зато действенно при совмещении с 1-м и 3-м способами!
минус - ежели надо срочно много инфы забить, то все положат на данный способ и потребуют его убрать
3. Назначить администратора справочника (1, мах - 2 человека), которому были бы дадены права на занесение и коррекцию инфы в нем. Остальные в него только смотрят.
минус - ежели затруднено общение администратора и пользователей справочников
4. Денежный способ по прежнему является одним из самых действенных во все времена :-)
минус - там, где зарплата нищенская могут послать и уволиться и ищите на такую зарплату еще кого-нито...
...
Рейтинг: 0 / 0
убей двойника
    #32041133
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 denis_ka
Хотелось бы взглянуть на листинг
свербыстродействующий процедуры основанной на ультрасуперпупермегалазеркульнейшем алгоритме поиска по сигнатурам по частям с учетом индекса релевантности

))
...
Рейтинг: 0 / 0
убей двойника
    #32041141
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я решаю проблему с двойниками так:
Обчыно новые организации появляются в момент выписки счета (человек позвонил, попросил выписать счет на "РОга и копыта" ему этот счет выписали.) Я делаю просто: для того, чтобы ТОЛЬКО выписать счет _НЕОБЯЗАТЕЛЬНО_ заводить нового клиента - достаточно указать в счете название, которое может хоть 100 раз повторяться в справочнике клиентов. А ссылка на клиента проставляется только после того, как пришли деньги по этому счету, или человек пришел с доверенностью получать товар, тоесть тогда, когда появились _достоверные_ данные, по которым можно отличить одного клиента от другого. Имея исходные данные доверенности или банковского платежа, а также сведения о том, что эти движения происходят по данному конкретному счету, sp по реквизитам ищет в справочнике клиента и если его нет, то заводит нового (просит доп данные) и в счете выставляет ссылку на нужную запись.
Название - не есть понятие уникальное! - ведь есть десятки организаций с разными реквизитами, но одинаковыми именами!
...
Рейтинг: 0 / 0
убей двойника
    #32041194
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы можете быть сильно удивлены, но я сталкивался (и в свою очередь сильно удивлялся) с ситуациями, когда у двух разных организаций одинаковый ИНН (филиал и центральная контора, названия разные, находятся территориально в разных местах). Далее еще интереснее. Есть фирмы (холдинги), у которых сразу несколько ИНН в разных их подразделениях.
А по сути, IMHO, с данной проблемой программными средствами бороться соверошенно бесполезно. Для этого имеются средства организационные. Никакие программные средства не смогут выяснить, что "Александр", "Саша" и "Шура" - один и тот же человек, а Дюма и Дюма (старший и младший) - разные. И даже если вы забацаете алгоритм, который Сашу и Шуру распознает как одно название, отличить Александра от Алексана (а вот догадайтесь, опечатка это или действительно такое имя?) все равно будет невозможно без дополнительных изысканий. Слишком много разнообразных критериев. Одним словом, задача эта не систематизируется. Качество ее выполнения напрямую связано с добросовестностью конкретных работников.
IMHO, для ее решения в системе должны быть средства тотальной регистрации. Если кто-то систематически нарушает установленный регламент, и не реагирует на устные, письменные замечания и лишения премий, от него избавляются. Вот и все.
...
Рейтинг: 0 / 0
убей двойника
    #32041208
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Разруха, она в головах!" (С)
Ввод данных это одна из функций бизнес процесса и если данные можно ввести различными способами, значит либо существуют дублирующие функции, либо кто то что то не учел. В любом случае разработчик БД должен был увидеть, что не может гарантировать уникальность записей, что противоречит реляционной теории, в отношении не может быть двух одинаковых кортежей.
Сразу после того, как разработчик увидел это, и понял, что сущность он определил правильно но не хватает информации для определения РК он обязан был задать вопросы для того чтобы эту информацию получить.
Проблема, как здесь уже говорили действительно серьезная, но это проблема не в данных, а в квалификации разработчиков.
...
Рейтинг: 0 / 0
убей двойника
    #32041307
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Genady. Секундочку-секундочку. Есть справочник предприятий. Вы - пользователь, которому нужно сослаться на организацию ОАО "НПП Рога&Копыта ЦАО ЧОП". Вы не знаете, есть ли уже подобная организация в справочнике. Если ее нет, ее нужно добавить, если есть - то использовать существующую запись. Всего в справочнике 50000 организаций. В приложении имеются встроенные средства поиска. Поиск по слову "Рога" находит 300 записей. По слову "копыта" - 250. По совокупности "Рога" и "копыта" находятся 4 записи. Среди них:
ОАО "НПП Рога и Копыта ЦАО ЧОП"
ОАО "Рога&Копыта"
НПП Рога&Копыта ЦАО
ОАО "НПП Рога&КопытЫ ЦАО ЧОП"
Внимание, вопрос... На какую из них следует (и следует ли?!) ссылаться? Либо следует добавить новую запись, просто потому, что буква-в-букву с заданным наименованием ни одно не сходится?
Может быть, вы будете сильно удивлены, но правильный ответ - это все разные организации, и ссылаться на них нельзя! А сослаться нужно было на другую запись:
ОАО "НПП Р&К ЦАО ЧОП", которая ВООБЩЕ НЕ БЫЛА ОБНАРУЖЕНА ПРИ ПОИСКЕ, потому что в логотипе документа, с которым работал вчера другой юзер эта организация была указана именно в таком сокращенном виде.
А теперь объясните, какие могут быть заложены алгоритмы в программу, которые поогут решить поставленную задачу правильно?
...
Рейтинг: 0 / 0
убей двойника
    #32041311
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Garya
А вот в етой ситуации проблемма должна решаться должностными инструкциями по предприятию по теме "Ввод новых предприятий в справочники" as for me.
Я понимаю что наша общая задача сделать прилижение как можно более дуракоустичивым,но никому еще не удавалось (помоему кроме Б.Страуструпа) сделать невозможное:)) Так что логика приложения - логикой ,а описанный Вами случай нужно решать по другому.Но и Почемучка (или его предшественики ) здорово лопухнулись,жижнь есть жижнь.
А нам вот старайся во благо человеческой расхлябоности:))
ЗЫ
Да если бы было все просто нам бы всем перестали платить зарплату:)))
...
Рейтинг: 0 / 0
убей двойника
    #32041342
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вообще для выписки счета и если тагого клиента в справочнике нет - то записать в отдельную табличку...
и по приходу денег актуализировать в основной справочник...
...
Рейтинг: 0 / 0
убей двойника
    #32041437
У нас следующая организация работы со справочником клиентов:
1. Двухуровневость. Клиент может быть "головным" и "подчиненным". Головной - это физическая организация с которой ведется работа. Подчиненный - множественное обличие головнго клиента(по документам он же "Пупкин", "Хрюпкин" и пр.). Это дает меньше путаницы и незаменимо при построении отчетов.

2. Уникальность названий. Запрещено вводить в каталог клиентов несколько одинаковых наименований. С одной стороны мы прекрасно понимаем, что названия могут дублироваться, с другой, если допустить одинаковые названия, возникнет путаница: счет выпишут на одну ООО "Ромашка", отгрузят другой, платеж забьют на третью.
В общем поплакали наши менеджеры, да что-то придумали и теперь не жужжат.

3. Информирование менеджера о существовании "похожих" клиентов в базе. При вводе новой организации вызывается функция определения степени похожести клиента(алгоритм Левинштайна). Она сравнивает нового клиента со всеми в БД. При этом, перед обработкой выкидываются все лишние символы(пробелы, кавычки, тире и пр.), похожие буквы русской и английской раскладки также приводятся к одной. Если находятся близкие по похожести клиенты выдается предупреждение со списком похожих организаций.

4. "Покапывание на лысину менеджеров серной кислотой". Тоже необходимо, разумеется.

Что касается одного ответственного, то в силу специфики бизнеса назначить одного ответственного для ведения справочника организаций не представляется возможным.
...
Рейтинг: 0 / 0
убей двойника
    #32041541
Почемучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А где бы посмотреть описание данного алгоритма Левинштайна ???
или другие алгоритмы которые могут быть полезны в этой ситуации

я пока пришел к тому, что строю некую хэш функцию (количество повторений каждого из символов в этой строке)
и значение ключа записываю в таблицу и позднее их сравниваю с тем чтобы определять степень схожести
...
Рейтинг: 0 / 0
убей двойника
    #32041546
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Garya

Что значит есть справочник предприятий?
Какой справочник? Кто его создавал? Почему там только наименования предприятий?
...
Рейтинг: 0 / 0
убей двойника
    #32041667
Кошкинсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне тоже неизвестно про алгоритм Левинштайна. Короче, если Вы публикуете исходники SOUNDEX() по-русски, я поощрю Вас майкой. Сейчас есть совершенно чумовая майка в защиту движения open source (1 экз.) XL, белая, хлопок, 100 г/м2, рисунок: пингвин сидит на льдине и над ним изогнулась в прыжке косатка такая хищная с логотипом Microsoft (тьфу!) на бочине. Надпись по-аглицки, типа защитим идеи свободного софта, ля-ля-ля... Из-под пингвина растекается желтая лужа.
...
Рейтинг: 0 / 0
убей двойника
    #32041669
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Genady. Потому что когда просят по телефону на организацию выписать счет, то даже название организации можно расслышать не гарантированно.
Что такое справочник предприятий? Это совокупность таблиц, которая позволяет упорядочить информацию в соответствии с (ну хотя бы) 3NF. Если по меньшей мере этого не сделать, то масштабы проблем выйдут далеко за края рассматриваемой лужи и превратятся в большое море.
Конечно, там не только наименования предприятий. Но на момент, когда необходимо сослаться на запись, кроме наименования может более ничего не известно. Я о том и говорю, что когда это станет известно, то юзверь должен найти свою запись и поинтересоваться, а правильно ли ранее он ее завел. А можно и не интересоваться. А можно попытаться найти ранее введенную запись, но при этом не особенно натужно ее искать. Если с первого захода не найдется, то просто добавить еще одну.

Я вам расскажу один случай из жизни моего знакомого. Жил-был программист (он самый). Сотворил он программу отслеживания движения товара на складе. И сделал он ну все по теории. Естественно, не может быть в номенклатурном справочнике двух записей, соотносящихся с одной и той же номенклатурой. Естественно, что со склада не может уйти товар, которого там просто нет и никогда не было. Ввел он это ограничение (ну чтобы заставить кладовщиков прилагать определенные усилия для сохранения логической целостности информации). И вот приезжает однажды на склад кавалькада грузовиков на погрузку. А кладовщики еще толком не разобрались, где верх/низ у клавиатуры. Ищут они, что нужно отгрузить по наименованию "ЭЦВ 8-18-68 АБВ 220/380"... и не находят. Ну вот же он, под ногами лежит в штабелях! Нету в компьютере, черт возьми! Все глаза проглядели! Пишут они руководству служебку, что, дескать, программа плохая и приводит к задержкам в отгрузке товара. Необходимо разрешить вводить остатки товара, которые внезапно на складе обнаружены (а в программе их почему-то нет) простым внесением (операция "приход товара из подпространства"). Программист пытается сопротивляться, а ему руки заламывают, да хлопают кулаком по начальственному столу с грозным возгласом "Что! Рядиться мне с тобою!". Ну, сделал он как просили...
Навводили кладовщики остатков по товарам, которые не обнаруживали... Через месячишко глядь - на складе пусто, а в компьютере всякой всячины в остатках числится видимо-невидимо. Ту номенклатуру, которую искали, оказывается раньше завели в компьютер как "8/18/68 ЭЦВ АБВ" потому и не нашли. И много чего не нашли из того, чего раньше вводили. Короче, остатки в программе совершенно перестали стыковаться с остатками на складе. И той программкой напрочь пользоваться перестали. А программист уволился в сердцах... Такая вот история.
Это я все к тому, что порядок должен быть не только в программе, но и вокружающем ее пространстве.
...
Рейтинг: 0 / 0
убей двойника
    #32041690
Genady_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист пытается сопротивляться, а ему руки заламывают, да хлопают кулаком по начальственному столу с грозным возгласом "Что! Рядиться мне с тобою!".
Бывает, согласен, только я когда попадал в такие ситуации увольнялся раньше чем мне руки начинали заламывать. Коли начальству лень кладовщиков дороже нормальной работы, нефиг мне на таком предприятии делать. Хотя возможно что и в Вашем примере что то недопроектировали, если есть возможность вводить товар и так и сяк.

Это я все к тому, что порядок должен быть не только в программе, но и вокружающем ее пространстве.

Соглашусь полностью, только если в окружающем пространстве порядка нет, то и нефиг в этом пространстве сидеть, иногда мозги начальству только рынок может вправить да и то скорее всего поздно будет.
...
Рейтинг: 0 / 0
убей двойника
    #32041698
Genady_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще добавлю.
Я о том и говорю, что когда это станет известно, то юзверь должен найти свою запись и поинтересоваться, а правильно ли ранее он ее завел

Юзверь ничем интересоваться не станет, юзверя надо заставлять интересоваться, а как его заставить это уже дело технологии, можно с помощью юзверевского интерфейса, можно адмнистративно, может еще как то можно но решать это нужна на этапе проектирования и решать так, что бы была уверенность, что дублей в базе не будет.
...
Рейтинг: 0 / 0
убей двойника
    #32041714
just4fun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вопрос по теме:
Какая собственно разница бухгалтерии Есть ли в базе "Солнечный путь" (запись один) и "Солнечный путь" (запись 2), если нет разницы Есть ли там ООО "Пупкин" и ООО "Ивкин".... т.е. если всё равно сколько организаций в базе, тогда большого значения "похожесть" названий и в целом реквизитов не имеет.
Главное на мой взгляд, если выставлен счет для "Солнечный путь" (запись один) то и отгрузку нужно производить и оформлять документы для "Солнечный путь" (запись один) ..... а обеспечить это можно очень многими путями....
1. можно находить клиента по выписанному счету
2. в книжном магазине ozone определяют клиента по сумме копеек указанной в счете... от которой нельзя отказаться при оплате...
и т.п.
...
Рейтинг: 0 / 0
убей двойника
    #32041725
just4fun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oops,.. не в ozone, а в allcd.ru ....
...
Рейтинг: 0 / 0
убей двойника
    #32041734
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полностью согласен с Genady_ .
Пока нет порядка в организации небудет порядка и в программе ! Как только пользователи поймут (заставят понять), что от их работы зависит их благополучие , то сразу станет все понятно и просто , а главное точно !
Кстати Дуракоустойчивость программы очень сильно зависит от степени заинтересованности конечного пользователя !
...
Рейтинг: 0 / 0
убей двойника
    #32041743
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насчет дуракоустойчивости: так, просто, где-то прочитал:
"программа, которой сможет пользоваться и дурак, только дураку и нужна." :-)
...
Рейтинг: 0 / 0
убей двойника
    #32041750
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впринципе Да , но есть некоторые программы , которые должны быть именно такими ! например текстовый редактор ну NOTEPAD например , ведь и для дурака она тоже доступна, хотя какой бы то нибул крутой программист наврядли будет использовать для создания текстового документа шеснадцатиричный редактор ...
ps.
просто к слову пришлось ... :)
...
Рейтинг: 0 / 0
убей двойника
    #32041757
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"программа, которой сможет пользоваться и дурак, только дураку и нужна."

Этот принцип придумали нерадивые разработчики.
Пользователь должен работать по своей специальности не задумываясь, что и как и куда там записывается.
...
Рейтинг: 0 / 0
убей двойника
    #32041771
Фотография XDefender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ очень простой: (даже два)
1) ставишь тригер на вставку, и при вставке проверяешь на присутствие в базе данных хранимой процедурой.
Также тригер ставишь при упдэйте, если изменилось поле - запускаешь хранимую процедуру. Если такое существует - сразу откат.

Теперь о хранимой процедуре:
1) в переди убераешь пробелы, в конце тоже
2) приводишь в нормальную форму типа, если ввели
ИВанов иВАНОВИЧ - > Иванов Иванович

PS: это можно с легкостью сделать на клиенте, что немного облегчит жизнь БД.
...
Рейтинг: 0 / 0
убей двойника
    #32041775
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема действительно серьезная и в различных задачах может решаться по разному.

безусловно для различных аспектов учета нужна таблица с уникальными идентификаторами ,

возможно ли выписать счет клиенту если его нет в таблице - какие проблемы выписывай, укажи для таблицы ид "Неизвестный клиент" и вперед,

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

Совершенно другой вопрос как сделать чтобы таблица была уникальна по названию клиента но в то же время поддерживала псевдонимы.

тут я вижу три решения :
1 разрешить повторы для ИД клиента и под одним идентификатором держать случайные повторы (в процессе выискивания двойников), истинное название можно пометить доп. атрибутом

2 в доп. поле двойнику указывать ИД настоящего, настоящему в этом поле null
в запросе будет его легко привязать через isnull(PSEVDO, ИД)

3. и конечно же дополнительная таблица с псевдонимами -привязанными или нет к главной


Но вопрос остается открытым :
Процедурку бы , которая на стадии ввода в уникальную таблицу (по названию) БЫСТРО находила все созвучные названия в порядке степени похожести
...
Рейтинг: 0 / 0
убей двойника
    #32041796
Почемучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже 2 дня парю пользователей по результатом этого запроса (запасы серной кислоты уже кончаются :))), начал с товаров, далее клиенты
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
set nocount on
drop table #Ch
create table #Ch(C char( 1 ) primary key, K int)
insert into #Ch
select '1' C, 0  K union all
select '2', 0  union all select '3', 0  union all select '4', 0  union all select '5', 0  union all
select '6', 0  union all select '7', 0  union all select '8', 0  union all select '9', 0  union all
select '0', 0  union all
select 'q', 0  union all select 'w', 0  union all select 'e', 0  union all select 'r', 0  union all
select 't', 0  union all select 'y', 0  union all select 'u', 0  union all select 'i', 0  union all
select 'o', 0  union all select 'p', 0  union all select 'l', 0  union all select 'k', 0  union all
select 'j', 0  union all select 'h', 0  union all select 'g', 0  union all select 'f', 0  union all
select 'd', 0  union all select 's', 0  union all select 'a', 0  union all select 'z', 0  union all
select 'x', 0  union all select 'c', 0  union all select 'v', 0  union all select 'b', 0  union all
select 'n', 0  union all select 'm', 0  union all 
select 'ё', 0  union all select 'й', 0  union all select 'ц', 0  union all select 'у', 0  union all
select 'к', 0  union all select 'е', 0  union all select 'н', 0  union all select 'г', 0  union all
select 'ш', 0  union all select 'щ', 0  union all select 'з', 0  union all select 'х', 0  union all
select 'ъ', 0  union all select 'э', 0  union all select 'ж', 0  union all select 'д', 0  union all
select 'л', 0  union all select 'о', 0  union all select 'р', 0  union all select 'п', 0  union all
select 'а', 0  union all select 'в', 0  union all select 'ы', 0  union all select 'ф', 0  union all
select 'я', 0  union all select 'ч', 0  union all select 'с', 0  union all select 'м', 0  union all
select 'и', 0  union all select 'т', 0  union all select 'ь', 0  union all select 'б', 0  union all
select 'ю', 0 
 -- В данной табле гранится временные данные
 
drop table #G
select rtrim(Name) name, rtrim(Name) name2, cast('' as varchar( 100 )) Sname, idGood into #G from good

declare Cur cursor LOCAL for select name from #G
OPEN Cur
 declare @i int, @CC char( 1 ), @N varchar( 255 ),
         @C char( 1 ), @K int,
 @N2 varchar( 255 ),  -- значение функции № 1
 
 @sN varchar( 100 )   -- значение функции № 2
 
 fetch next from Cur into @N
 while @@fetch_status= 0  begin
          update #Ch set K= 0 
            select @i=len(@N), @N2=@N
            while @i<> 0  begin
             set @CC=substring(@N,@i, 1 )
             update #ch set K=K+ 1  where C=@CC
             
 --   print str(@E)+str(@R)+str(@A)+char(@G)
 
             select @i=@i- 1 
             if @cc not in ('0','1','2','3','4','5','6','7','8','9') set @N2=replace(@N2,@cc,'_')
            end
          declare Cur2 cursor LOCAL for select C,K from #Ch where K<> 0  order by  1 
          OPEN Cur2
           select @sN=''
           fetch next from Cur2 into @C, @K
           while @@fetch_status= 0  begin
            set @sN=@sN+@c+char(@K+ 65 )
            fetch next from Cur2 into @C, @K
           end 
          close Cur2
          deallocate Cur2

  UPDATE #G SET sName=@sN, name2=@N2 WHERE CURRENT OF Cur
 -- проапдатели оба ключа
 
  fetch next from Cur into @N
 end 
close Cur
deallocate Cur

 -- Временная табла для ускорения процесса
 
select g1.*
into #H
from #G g1
 where exists(select * from #G g2 where g1.sname=g2.sname and g1.idGood<>g2.idgood)

 -- Подозрительные на двойников
 
 -- 1 отлов проблем с двойными пробелами, лишние тире, скобки и т.п. (тогда просто разная длина наименования)
 
 -- 2  тире вместо пробела, или точка вместо тире и т.п. 
 

select g1.name N1,g2.name N2, g1.idgood id1, g2.idgood id2
into #H2
 from #H g1, #H g2
where (g1.sname=g2.sname and g1.idGood>g2.idgood and len(g1.name)<>len(g2.name))
   or (g1.sname=g2.sname and g1.idGood>g2.idgood and len(g1.name)=len(g2.name) and g1.name2=g2.name2)
order by  1 
drop table #H

 -- Навешивание дополнительного условия
 
 -- в случае клиента это будет INN, р/с и т.д.
 
 -- в случае товара это производитель
 
select rtrim(b1.name)+' - '+rtrim(g1.name),
       rtrim(b2.name)+' - '+rtrim(g2.name),
       h.id1, h.id2
 from #h2 H
  inner join Good G1 on g1.idgood=id1
  inner join brand B1 on b1.idBrand=g1.idBrand

  inner join Good G2 on g2.idgood=id2
  inner join brand B2 on b2.idBrand=g2.idBrand

where b1.idBrand=b2.idBrand
 --drop table #H2
 
set nocount off
go
...
Рейтинг: 0 / 0
убей двойника
    #32041825
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ниже приведена функция на VB, которая сравнивает две строки и возвращает некий показатель их похожести.
Приведения одинаковых по начертанию букв, а также большие-малегнькие нет, но это уже сможет добавить каждый.
Под MSAccess если ее вставить в запрос, то на таблице в 15 тыс записей запрос отрабатывал 2-3 сек на Celeron500.
Под SQLServer пытался ее реалитзовать, но скорость работы была просто удручающей - на той-же таблице в 15 тыс записей она отрабатывала 5-6 минут :-((

P.S. Это не панацея конечно, но избежать очепяток помогает конкретно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Public Function StringCompare(ByRef sA As String, ByRef sB As String) As Single
  Dim i As Long
  Dim j As Long
  Dim k As Double
  Dim Q As Double
  Dim lnA As Long
  Dim lnB As Long
  Dim A As String
  Dim B As String
  
  lnA = Len(sA)
  lnB = Len(sB)
  If lnA < lnB Then
    A = sB
    B = sA
    i = lnA
    lnA = lnB
    lnB = i
  Else
    A = sA
    B = sB
  End If
  
  Q =  0 
  For i =  1  To lnA
    k =  0 
    For j =  1  To lnB
      If Mid$(A, j,  1 ) = Mid$(B, j,  1 ) Then
        k = k +  1 
      Else
        Q = Q + k * k
        k =  0 
      End If
    Next j
    Q = Q + k * k
    A = right$(A, lnA -  1 ) & left$(A,  1 )
  Next i
  StringCompare = Sqr(Q) / lnA
End Function
...
Рейтинг: 0 / 0
убей двойника
    #32041931
Simohin Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже давно доказано, что совершенно разные организации могут иметь совершенно одинаковые названия. Правил заведения организаций в БД могут быть десятки или даже сотни, но я предлагаю один из наиболее правильных, максимально исключающих ошибки.
1. Обязательное введение поля ОКПО.
2. Т.к. далеко не каждый согласится терять клиента только потому что он не знает ОКПО своей конторы, в объекте со ссылкой на клиент в отдельном поле просто вписывается название организации, а ссылка должна указаывать на фиктивного клиента вроде "Клиент без ОКПО".
3. С определенной периодичностью человек, ответственный за ведение справочника клиентов запускает процедурку, берет телефон, обзванивает клиентов, узнает коды ОКПО, передает процедурке, которая в свою очередь доводит объекты с фиктивной ссылкой до ума.

И ещё есть рад хороших методов.
Не учитесь на своих ошибках - многое придумано за вас! :)

Я не дочитал ветку до конца, может кто предлагал подобный подход. Если чего, приношу свои извинения.
...
Рейтинг: 0 / 0
убей двойника
    #32041983
Denis_Ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2АлексейК
текста процедурки к сожалению привести не могу, а вот о времени ее работы - пжалста:
в справочнике городов с 2 тысячами записей (ну вот так мало их пока) проводился поиск города "Нижний Новгород" - (я там живу, там мой дом...-почти цитата).
Дык вот, а всего "Нижних Новгородов" там было 4, а именно:
1. Н.Новгород
2. Н.-Новгород
3. Ниж.Новгород
4. Нижний Новгород
Кроме этого, было пару городов нашей, Нижегородской, области, записанных в виде "г. Павлово Нижегородской обл.", еще Нижний Тагил, Новгород (который Великий) и т.д.
В результате 2-х (ДВУХ) секундного поиска было выбраны все Нижние Новгороды (правильный и 3 неправильных), все Новгороды и Нижний Тагил, причем Нижний Новгород стоял ессно на первом месте в списке найденных. Затем я решил поискать неправильно набранные Нижние Новгороды, а так же ошибаясь преднамеренно при наборе выражения "Нижний Новгород" ближе к середине (НижнЫй НАвгород и т.д.).
Результат по времени такой же, а вот выборка получилась чуть больше...

По поводу порядка в головах, пример из собственной практики:
на предыдущем месте работы в частной конторе 3 оператора набили за 2 года не больше десятка похожих организаций (когда одна и та же, но записана по разному). А на текущем месте - в НИИ, за 2 месяца тоже 3 оператора таблицу убили так, что ее можно было чистить практически вдвое: максимум я обнаружил 11 (ОДИННАДЦАТЬ) версий одной и той же организации..., еще встречались по 9, 8, 6 и т.д....
я плакал, когда это видел....
причем угрозами и наказаниями не поможешь - уволилось 2 человека, взяли других - лучше не стало...., так что как говорится "кадры решают всё" (не помню кто сказал)...
И сейчас у меня политика такая - как можно меньше надо задавать юзеру вопросов (в проге в смысле)- он от них в ступор впадает и не скоро выходит! Как говориться, идеальный вариант - нажал батон - и все само работает...
Ладно, чё-то у меня уже словесная диарея началась, пойду домой ....
...
Рейтинг: 0 / 0
убей двойника
    #32042001
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Garya с его историей про склад.
Очень грустная история. Наверное, это был молодой и не опытный по жизни программист. Наверняка теперь он, защищая свой правильный подход, доходит до самого верхнего начальства.
Но можно было выкрутится и в описываемом случае.
"Хорошо, то, что вы не можете найти в базе, но точно знаете, что оно есть, выписывайте "от руки", но потом, все же найдите и проведите через компьютер".

Можно несколько облегчит поиск изделий.
Во-первых, можно использовать систему номенклатурных номеров. То есть родственные позиции должны получать номер, начинающийся с определенной комбинации символов.
Во-вторых, можно сразу разбит позиции на группы и организовать клиента таким образом, что бы юзер работал с позициями после захода в группу. Намного легче найти кабеля в группе "Кабели", чем в полном списке.

Да вот еще. Список остатков должен всегда отображаться на экране! Простой скроллинг может оказаться эффективнее любых, самых изощренных хеш-функций.

Большое спасибо Почемучке, который открыл эту очень важную тему.
...
Рейтинг: 0 / 0
убей двойника
    #32042038
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как-то в базе насчитал 12 способов написания улицы Красноярский рабочий. я уж не говорю об улице 665-летия октября :))))
...
Рейтинг: 0 / 0
убей двойника
    #32042072
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу порядка в головах, пример из собственной практики:
на предыдущем месте работы в частной конторе 3 оператора набили за 2 года не больше десятка похожих организаций (когда одна и та же, но записана по разному). А на текущем месте - в НИИ, за 2 месяца тоже 3 оператора таблицу убили так, что ее можно было чистить практически вдвое: максимум я обнаружил 11 (ОДИННАДЦАТЬ) версий одной и той же организации..., еще встречались по 9, 8, 6 и т.д....


Вот блин, сколько раз я здесь уже выступил и ни разу меня не поняли. Оператор здесь не причем, разработчик обязан разрабатывать систему так, что бы не давать оператору ошибаться.
...
Рейтинг: 0 / 0
убей двойника
    #32042093
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что самым действенным способом решения этой задачи ... при введении наименований предоставление оператору списка похожих... естественно должен быть программерский ультра-алгоритм отбора этих похожих наименований и вслед за этим все это должен проверять еще один оператор (этот метод называется послед-контроль).

А ваще проблема в том, что мы сравнивает мало информации ... а если бы мы сравнивали и имя и инн и адрес и дату ... то все было бы легче ... я думаю что при сравнении этих четырех можно принимать решение автоматически БЕЗ ЧЕЛОВЕКА !
...
Рейтинг: 0 / 0
убей двойника
    #32042103
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без человека нельзя....
на ком тогда ответсвенность?...
я, лично, на себя таку ответственность не хочу брать....
обсоблемо когда несколько милионов тугриков пойдет не туда.... ;))
...
Рейтинг: 0 / 0
убей двойника
    #32042107
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to MiCe

ТОЧНО!!!! :)

как же нам без Зингельшухера(я не про евреев)....
Случись что ... а у нас ни одного Зингельшухера
...
Рейтинг: 0 / 0
убей двойника
    #32042115
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оператор за то и деньги получает - что правильно выписывает...
а вот облегчить ему принятие решения - это другое дело...
предаставить ему дополнительную информацию(схожие наменования, текущие остатки, и тд.)...
...
Рейтинг: 0 / 0
убей двойника
    #32042118
Почемучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to MarchCat
А ваще проблема в том, что мы сравнивает мало информации ... а если бы мы сравнивали и имя и инн и адрес и дату ... то все было бы легче ... я думаю что при сравнении этих четырех можно принимать решение автоматически БЕЗ ЧЕЛОВЕКА !
При такой постановке задачи, еще сложнее принять решение, так как вероятность описки в 4 полях несколько побольше, а если еще есть и адрес, который операторы могли просто напросто не расслышать или записать Нижн. Новгород, вместо Нижний Новгород, другими словами с полями типа автор, ответственное (контактное) лицо и т.п. связываться вообще не стоит даже.
Хотя это всего лишь моё мнение.


Вот жаль что Denis_Ka не может поделиться с нами своим супер-пупер алгоритмом распознования Новгородов.

to Genady
Вот блин, сколько раз я здесь уже выступил и ни разу меня не поняли. Оператор здесь не причем, разработчик обязан разрабатывать систему так, что бы не давать оператору ошибаться.

Разработчик все учесть не может по определению, так изощренные юзеры иной раз такое выдумают, что и в страшном сне не приснится, а ссориться с начальством об зарубании очердной прихоти пользователей тоже бесконечно не будешь. вот и появляются разные условности, для чего и нужны методы борьбы в сложившейся ситуацией.
...
Рейтинг: 0 / 0
убей двойника
    #32042120
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ту Почемучка

ну да .... при 50% совпадении 10 полей мне легче принять решение, чем при 99% совпадении 1-го :)

Наверное ...

я не претендую на аксиому
...
Рейтинг: 0 / 0
убей двойника
    #32042132
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разработчик все учесть не может по определению
Разработчик должен учесть все возможные и невозможные ошибки юзера и пресечь их на этапе разработки для этого существуют соответствующие технологии.
Впрочем я устал говорить об очевидных вещах.
...
Рейтинг: 0 / 0
убей двойника
    #32042153
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Genady

Вы были бы абсолютно правы, если бы речь шла о некой идеальной программе.

Чтобы было понятнее о чем речь, до некоторой степени эту задачу можно сравнить с задачей о нормализации базы данных.

Все знают, что есть 5 уровней нормализации базы данных, однако, в большинстве задач почему не только останавливаются на 3 нормальной форме, но зачастую нарушают вообще все принципы нормализации. Это вовсе не говорит о том, что задачи писали дилетанты ничего не смыслящие в принципах построения базы данных. На это нарушение идут вполне осознано. И причин тому великое множество.

То же самое можно сказать о работе со справочниками.

Да, можно заставить пользователей вводить ВСЕ (или хотя бы несколько ключевых) полей справочника, но это приведет лишь к тому, что вы получите мусор иного рода.

Например, пользователь не знает ИНН организации, так он введет первые попавшиеся циферки, лишь бы программа его пропустила. А искать в последствии записи с неверным ИНН вряд ли кто будет.

Лично я думаю, что совсем исключить повторы в справочниках вряд ли удасться. Программно можно лишь несколько уменьшить вероятность их появления. Слишком много тут зависит от конкретных пользователей программы и организации работ (не постановки задачи, а именно стиля работы в организации).

А с другой стороны, если в справочнике появились дубли. Соответсвенно, справки и отчеты будут давать неверные результаты. И если пользователи программы не замечают этих расхождений - какие претензии могут быть к программисту?
...
Рейтинг: 0 / 0
убей двойника
    #32042159
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не с программером проблем не будет ... неee .....
просто выведут за забор в чистое поле ………………...

и будут думать что вот какие плохие программы , программисты и больше ни когда не обратятся к SQL.

Утрирую конечно … но сплошь и рядом ...
...
Рейтинг: 0 / 0
убей двойника
    #32042162
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MarchCat

Риск есть всегда :)

Например, в нашей организации довольно долго ко мне приставали с вопросами типа "программа неправильно считает". Т.е. она выдает не то, что они ожидали увидеть. Приходилось садится рядом с ними с калькулятором и показывать, что вот как раз программа-то считает правильно.

А вы говорите "справочники" .... :))))
...
Рейтинг: 0 / 0
убей двойника
    #32042197
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Genady_. Я очень рад, что на Земле еще есть такие люди как ты. Нет, кроме шуток. Оптимизм - это здорово! К сожалению, с возрастом проходит. Была когда-то плоскою планета, но появился Коперник, Джордано Бруно e t.c., которые-таки скомкали ее в шарик и заставили крутиться. А то! Как бы космические корабли вокруг трех китов-то летали?
Честно, нет у меня желания тебя переубеждать. Может быть ты вправду наклепаешь программу, которая при обнаружении двух одинаковых наименований предприятий будет автоматом заставлять перезванивать и задавать дополнительные вопросы (когда пришла заявка по факсу). А если юзер этого не сделает, то будет бить током через электростул-манипулятор. Если же юзер окажется в отпуске, то будет обращаться в телефонную базу, где зафиксировался номер, определенный АОНом по прошлому звонку, автоматом определять его номер с номером на факсе и желать вывод, две это разные организации из разных городов, или из одного и того же. Ежели окажется, что город один и тот же, но телефонные номера разные, то понадобится также автоматом через инет залезть в базу данных ФСБ, сравнить образец голоса, зафиксированный по звонку, выяснить конкретно, что за человек звонил, качнуть послужной список, автоматом залезть в БД организации, в которой (которых, если их несколько) он числится, и перебрать записи приказов на командировки - а вдруг он звонил не из своего города или не из своей организации?
И вообще, чего там человеку-то делать? Программа сама задаст все вопросы, все как надо зафиксирует. Где есть сомнения - проверит. Следующий этап - написать программу, которая сама проводит обследование предприятия, составляет пилотный проект и т.д. и т.п. и в конце концов пишет программу автоматизации. А человеки - они в это время нежатся на пляжах с бутылками пива, обрастают жирком и пишут стихи и прозу.
Genady_, я тебя люблю! Воплощай в жизнь!
...
Рейтинг: 0 / 0
убей двойника
    #32042201
Подожди лет 15-20, всё так и будет
...
Рейтинг: 0 / 0
убей двойника
    #32042280
Genady_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Garya & ВладимирМ

Насколько я понял, у вас сложилось обо мне мнение как о некоем юноше, который осознал как оно бывает круто если все делать правильно. Отчасти это верно, однако я понимаю прозу жизни, вот сейчас мне приходится возиться с очередным шедевром гениального проектировщика, который не просто создал ненормализованные таблицы а распихал атрибуты одних сушностей по другим.
Проблема с которой столкнулся Почемучка, это комплексная проблема, связанная с нехваткой квалифицированных специалистов, таких как бизнес-аналитики, системные аналитики и архитекторы баз данных.
Поверьте мне, совсем недавно я так же несерьезно относился к проектированию БД и сталкивался с такими же проблемами, я просто призываю не придумывать супер пупер алгоритмы выявления каких то ошибок в проектах, а для начала изучить существующие технолгии проектирования информационных систем.
...
Рейтинг: 0 / 0
убей двойника
    #32042308
Dimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги!!! Вы о разном говорите!!!!

Геннадий вам о том, как надо РАЗРАБАТЫВАТЬ системы, а вы ему - о том что они ничего не понимает....
А ведь он прав - если система чего-то делает не так, значит НА ЭТАПЕ АНАЛИЗА И ДИЗАЙНА чего-то не предусмотрели, где-то не задали вопрос, где-то что-то предположили, а это оказалось неверным.
Ошибка, не пойманная на этапе анализа, выливается в 10-кратно более серъезную ошибка на этапе дизайна, в 100-кратно более серъезную ошибку на этапе писания кода и вообще черт знает во что на этапе эксплуатации.

Второй вопрос - как исправить то, что уже сделано.
На эту тему тут и без меня надавали кучу дельных советов.
...
Рейтинг: 0 / 0
убей двойника
    #32042310
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поделюсь своим опытом решения подобных проблем %)

Жизнь большого софта связана с четырьмя группами
1.Программистами
2.Постановщиками
3.Пользователями
4.Начальством (имеется в виду начальство программистов, пользователей, постановщиков)

так вот: если уж случилось за двоение данных, которое приведет к потере прибыли предприятия или к любой другой серьезной проблеме…
то устранение такой проблемы должно приниматься коллегиально!!!
Если решение принято, то все извещаются о том, что будет делаться при исправлении, выверке и сведении данных…а как же о возможных косяках.

Если у вас это все прошло то в дальнейшем можете делать все что хотите, на и лучше в выходной день.

Специфичность ошибки задвоения данных в том что исправлять ее нужно только программисту а проверять только пользователю(лям). Толку от остальных групп будет мало.

И еще … не по теме … подумайте сначала, а потом делайте. Обычно данные страдают не от первоначальной проблемы, а от того что их не думая, исправили. При дальнейшем рассмотрении проблемы первоначальная проблема кажется ерундой по сравнению с тем, что наделали не думая.

Алгоритм не привожу, потому что у всех своя специфика …
...
Рейтинг: 0 / 0
убей двойника
    #32042360
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Были тут у меня выходные и залез я в инет ... просто так посмотреть на форум и осинило меня !
Народ !
Мы говорим о вещах РАЗНЫХ !
Дело в том, что у каждого проекта свой бюджет и свое количество времени отведенное на разработку этого проекта !
короче, я имею ввиду что для проекта, за который платят $1000000 можно придумать алгаритм и реализовать в таком виде , в котором предложил Garya пять сообщений назад , если же за проект говорят только спасибо , то и то что поставщики вообще сохраняются радоваться надо !
Это я к тому, что ненадо придумывать супер бупер авторизацию для текстового редактора, ну и конечно не следует на сейф вешать замочек китайского производства ...
(а теперь к теме)
Наверно надо оценить, а следует ли вообще что то делать !
алгаритм алгаритмом, а дело делом. У каждого есть свои условия, в которых каждый человек (и программа) работает, в некоторых случаях имеет смысл сделать крутой алгаритм, в некоторых дать по шапке сотрудникам ...
При этом отношение должно быть (на мой взгляд)
чем больше платят операторам и программистам, тем более гибкой (и умной) должна быть программа, чем меньше , тем проще ... и от этого никуда не деться ....
...
Рейтинг: 0 / 0
убей двойника
    #32042371
just4fun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема зашла слишком далеко...
если рассматривать детально, где могут помешать двойники, она решается э л е м е н т а р н о .
-бухгалтерия
Проблема 1. Выпишут счет на одну организацию (в базе данных), а отрузят другой?
Ответ.- у вас есть идентификатор счета, вот и дерзайте. Зачем нам точное название организации??
Проблема 2. В справочник предприятий добавлено 500 новых записей, а отгружено по 3 новым адресам. Сколько у нас новых клиентов?
Ответ. 3!
Таким образом к справочнику предприятий нужно относиться как к функции автозаполнения адресов в Интернет эксплорере...
А вот если Ваша функция подскажет, что товар по счету 3395 для ООО Пупкина ИНН:1111111111, отрузить за счет средств переведённых по счету 8893 от ООО Пупкина ИНН:1111111111, тогда Вам и по голове...
ВЫВОД: Проблема довольно интересная с точки зрения головоломки или задачки по программированию, но в реальной жизни имеет свою область жизни, и чаще всего простое решение. Потомуто бухгалтера разбераются с этим без всякиз консилиумов.
...
Рейтинг: 0 / 0
убей двойника
    #32042372
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У кого есть мысли ... начните тему по новый.

PS не катит выкачивать 70 сообщений
...
Рейтинг: 0 / 0
убей двойника
    #32042414
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До чего же все просто! А теперь представьте ситуацию. ВЫ (ну то есть конкретно ВЫ ) выписываете счет по телефону на сетевую карточку. А у вас начинают спрашивать ИНН, ОКОНХ, номер паспорта и год вступления в ВЛКСМ. Товарисчи! Поднимите указатель мыши те, которые на память помнят свой ИНН (я, кстати, помню, но считаю себя исключением из общего правила) и кого подобные вопросы не поставят в тупик.
Есть простые-элементарные законы рынка. Счета выписывают там, где сделать это проще без лишней (ДЛЯ КЛИЕНТА лишней) головной боли.
Итог - вы выписали счет НЕ в той фирме, которая задает лишние вопросы, а в той, которая их не задает. И идете в бухгалтерию с этим счетом. А вот есть ли деньги на расчетном счете - это уже не ваша головная боль. А их-то как раз и нету. Зато есть огромные суммы задолженностей ваших контрагентов. Бухгалтерия самостоятельно связывавется с менеджером, который контролирует конкретную задолженность, и просит написать письмо, чтобы наш должник оплатил наш счет вместо нас - и менеджер отправляет такое письмо вместе с копией счета.
Дальше еще интереснее. У нашего должника тоже нет денег на счету, но много своих должников. Он переадресовывает счет уже своему должнику. Оплатит этот счет должник должника должника должника нашего должника :))).
А теперь переносимся в компьютерную фирму, которая выставила счет на оплату. Получает она платежку с некоторой суммой, в назначении платежа которой нет ссылки на номер счета (ну нет, и все тут), зато есть ссылка на три номера письма о взаимозачете между фирмами "Ропыта и копыта", "Рога и кога" и "Рожки да ножки". А счет выписывался на фирму "АЗОТ".
А теперь вопрос для Genady. Что конкретно должна сделать программа, чтобы она догадалась привязать пришедший платеж к выставленному счету на фирму "АЗОТ"?

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

Тфу-тьфу-тьфу! Все-таки скатился на переубеждение! Прямо-таки инквизитор (святой - ха-ха-ха).
...
Рейтинг: 0 / 0
убей двойника
    #32042423
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот кто еще из вас работал с оптовой фирмой, имеющей сеть реализаторов (магазинов, с которыми заключены партнерские соглашения)?
Продукция/товар отгружается реализатору на основе договора, в котором указано, что отгруженные ТМЦ должны быть либо реализованы, либо возвернуты в течение такого-то срока. Отгрузили раз, вдва, пять, десять. Все одно и то же, да по разным ценам. А реализатор периодически делает платежи, причем получаемые суммы из сумм отгруженного ранее ну никак не складываются. Ну прикинули они, что должны нам что-то около 50 тыс.рублей, а в наличии есть только 20 тыс. рублей. Сделали платежку скопом на 20 тыс.рублей...
А ты - бухгалтер, которому этот платеж пришел (даю установку, Кашпировски копирайт). Внимание! Нужно определить, что из отгруженного КОНКРЕТНО оплачено, а что нет. Причем так, чтобы реализатор потом не возникал, что ему штрафные санкции начислены, и чтобы от 20 тыс.рублей не осталось копеек, подвисших в воздухе. Распределили? Молодец! А теперь получите акт о возврате товара, который реализатор в срок не смог реализовать и который числится у вас проданным.
Нет, ну как же! Конечно же реализатор обязан в срок подавать отчет комиссионера, акт, спецификацию или что-то подобное. Но некогда ему. У него лишних бумагомарак нет и не предвидится. И дает он эти акты с опозданием в несколько месяцев и после назойливого жужжания в ухо. А ведь реализатор - это не собственное подразделение. Его на подоконнике не построишь и зарплаты не лишишь. Можно, конечно, вообще отказаться от его услуг (как мы и стали делать, и в итоге перестали работать с реализаторами вообще).

Рынок, братцы мои, под реляционную теорию, далеко не всегда подстраивается.
...
Рейтинг: 0 / 0
убей двойника
    #32042431
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что конкретно должна сделать программа, чтобы она догадалась привязать пришедший платеж к выставленному счету на фирму "АЗОТ"?

Любая автоматизация подразумевает реорганизацию бизнес процесса, задача бизнес аналитика убедить руководство, что текущее положение дел ему не выгодно.
В общем я здесь дальше появляюсь только в режиме read only. Так как либо я плохо доношу свою мысль, либо меня не слушают, впрочем не все.
Спасибо за внимание. :-)
...
Рейтинг: 0 / 0
убей двойника
    #32042443
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Genady, ты на меня не сердись. Я очень и очень долго думал так же как ты. Только жизнь вносит свои коррективы. Начальство - люди весьма и весьма занятые. И очень оне не любят, когда им задают вопросы, которых штук этак примерно 5000, в которых нужно разобраться и четко описать (или хотя бы устно кому-то высказать), что и в каких ситуациях должен делать конкретный человек. Ситуаций-то море! Самый дружелюбный ответ - отстань, такие ситуации бывают редко. Да, редко. Но бывают! Достаточно только одной этой самой редкой ситуации, с которой программа не сможет справится, чтобы тебя закидали тухлыми помидорами.
И еще. Любая автоматизация - не самоцель. Это средство облегчить труд людей. Если же процесс автоматизации совпадает с процессом наведения порядка в бизнес-процессах как таковых, то труд некоторых людей может стать не только не легче, но и гораздо труднее чем до атвоматизации.
Конкретный пример:
Отгружали раньше со склада сложное техническое оборудование гуртом. Заводские номера не записывали. Наступила эра автоматизации - навели порядок. Теперь перед тем, как загрузить (или разгрузить) три железнодорожных вагона с железными бревнами (каждое килограмм 300), кладовщик обязан перевернуть такое бревно, найти на нем шильдик и списать с него данные. Кроме того, должен взять отвертку, открутить N болтов на крышке, извлечь из-под нее техпаспорт (если он есть :) ) и сверить, а сходится ли заводской номер на шильдике с указанным в техпаспорте (должен сразу сказать, что не всегда сходится, и не всегда техпаспорт есть). Результат автоматизации - грузчики, ворочая железные бревна, постепенно увольняются или накачиваются как Шварценегеры. Вагоны грузятся/разгружаются в 10 раз медленнее, чем раньше. Суммы за простой вагонов, штрафы на просроченную отгрузку и т.п. раз в 100 превышают прежние убытки от возвратов по гарантии "не своего" оборудования.
Так стОит ли игра свеч?
Выходит, что не всегда наведение порядка экономически оправдано.

Genady, в споре рождается истина. Ничего личного. А твой оптимизм мне даже очень симпатичен.
...
Рейтинг: 0 / 0
убей двойника
    #32042452
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, фиг с ним напишу все таки. :-)
Genady, ты на меня не сердись

Я могу сердиться только на явные наезды, таковых от тебя не поступало. :-)

Выходит, что не всегда наведение порядка экономически оправдано.
Это смотря как наводить, про пример с бревнами мне нечего сказать, т.к. не знаком со спецификой, но думаю что навести порядок там можно было, но скорее всего в другом месте а не на разгрузке.

А твой оптимизм мне даже очень симпатичен.
Не оптимизм это, просто мне чаще всего достается наследство, вот и хотелось бы что бы люди разрабатывающие свои системы больше думали, тогда и у них и у меня геморроя будеть меньше.
...
Рейтинг: 0 / 0
убей двойника
    #32042454
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТО judge
пора делать страницы на топики...:)
P.S.
Как здесь
...
Рейтинг: 0 / 0
убей двойника
    #32042502
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема разраслась уже до неприличия. Видимо, задела за живое...

Genady
Ваш подход к проблеме лично я считаю абсолютно правильным. Только, как мне кажется, Вы кое-что воспринимаете как само-собой разумеющееся и не требующее пояснений.

Как Вы совершенно правильно написали, начинать написание программы надо с разработки бизнес-логики. Т.е. строго говоря, это даже еще не программирование, а элементарное наведение порядка в организации.

При этом, Вы исходите из предположения, что:

1. Заказчик заинтересован в наведении порядка
2. Вы независимы от заказчика. Т.е. в любой момент можете повернуться и уйти.

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

Как правило, заказчик ставит вопрос так:

Автоматизируй, то что сейчас есть, а некоторые случаи, вообще автоматизировать не надо.

Подводя краткий итог, можно сказать, что поставленная задача сотоит из 2 частей:

1. Организационная
2. Программная

При этом, организационная часть более важна чем программная. Поскольку, правильной организацией работы можно свести к минимуму повторы даже при полном отсутсвии контроля со стороны программы. Но если заказчик не заинтересован в наведении у себя порядка, то никакая программа ему не поможет.
...
Рейтинг: 0 / 0
убей двойника
    #32042504
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это точно. Как говорил мой первый шеф, автоматизированный бардак - бардак вдвойне.
...
Рейтинг: 0 / 0
убей двойника
    #32042507
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абсолютная истина !\r
Пожалуйста продолжайте тут\r
\r
Если нет порядка в организации , то небудет его и впрограмме !\r
PS \r
Ну не реально грузить таки большие страницы !
...
Рейтинг: 0 / 0
83 сообщений из 83, показаны все 4 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / убей двойника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]