Что то на Мисте слабы алгоритмисты ...

  1. 10 г. назад

    Попробуем тут ...
    Собственно есть справочник в котором наименования представлены следующим образом:
    Иванов Иван магазин Свет
    Иванов Иван магазин Тьма
    Иванов Иван магазин Х
    Пушкин Ив магазин Белый
    Пушкин И магазин Черный
    Пушкин А Магазин красный
    Собственно нужно выделить
    Иванов Иван
    Пушкин Ив (Пушкин И)
    Пушкин А
    и их магазины. Есть какие мысли? Справочник более 10 тыс.
    ЗЫ: РазложитьСтрокуВМассивПодстрок() - совет был

    Ответы: (22) (40)
  2. Ну или меня не любят ))

  3. тут напрашивается регэксп

  4. регулярные выражения:)

  5. 29.04.2014 18:16:17 отредактировано Stim

    а проще всего в запросе сортировать по наименованию, а при переборе - смотреть, есть ли в текущей выборке фамилия из предыдущей. если есть - смотрим имя/инициалы. если совпадает - объединяем. если нет - новый элемент

    Ответы: (7) (11)
  6. в помощь: http://infostart.ru/public/183084/

  7. я б сделал тупо -
    1) подстроки и их встречаемость.
    2)колировать всреченные подстроки (ключ)
    3)по ключу - расстояния между строками. если рассстояние мало - значит, строки частично совпадают, .

    Ответы: (36)
  8. (4) ну только не имя и инициалы, а выделяем Фамилию и инициал из Таб1, сравниваем с некой переменной где сохранен предыдущий результат такого преобразования. Выделяем фамилиё и имя, в зависимости от результата сравнения либо дописываем в конец последней строки Таб2, либо создаем новую строку в Таб2.

    Ответы: (10)
  9. есть функции в типовой ФИО, да и 1с регистронезависима.

  10. А что Гук два магазина открыл ?

  11. 29.04.2014 18:30:04 отредактировано Дядя Васька

    (7)+ дописываем либо в скобках, если в Таб2 последний символ не скобка, или перед скобкой через запятую, если скобка.

  12. (4) а если "иванов петр" и "петр иванов", что по сути одно и то же? :-)

    Ответы: (12)
  13. (11) Кстати такое тоже есть ) Но самое страшное что есть
    Иванов Петр
    Иванов П.
    П. Иванов
    Петр Иванов

    Ответы: (18)
  14. Если в 1C - тогда вводи код, сортируй, и говори операторшам, что бы правили дабы код совпадал если ввели несколько раз.
    Или в группу справочника пусть вносят - как удобно пусть так и [...].

    Ничего алгоритмизировать не надо.

    Ответы: (15)
  15. ЗЫ:
    Пойти что ли на работу устроиться... Так-то я люблю решения находить. А операторы - это периферия на стандартном вводе.
    Еще зарплату вспомнить осталось, как налоги сдавать...

  16. (13) Да в том то и дело нет там операторов ... Я один перетягиваю все данные и организую готовую базу для нового предприятия ... Старое закрывается и всех увольняют - торговых, буха и дира ... База бухия 7.7

    Ответы: (16) (17)
  17. (15) По остаткам и бери. Чего мудить-то?
    Да хоть всех, пофиг.

  18. (15) круто. когда из предприятия остался один программист...
    "капитан тонущего корабля"

    Ответы: (19)
  19. (12) моим методом четыре сведутся в два однозначно, а между двумя полученными будет обнаружена относительно сильная связь

  20. (17) Ничего крутого. Твой коллега считай, мой даже если учитывать 7.7. А его разводят. Что это, работа программиста?

    Ответы: (20)
  21. (19) Ну, я и сам предприятие закрывал. Почти таким же образом :-)
    правда, я при этом был главбухом.

    Ответы: (21)
  22. (20) Тут вопрос-то ерундовый, вообще непонятно как он с контрагентами соотносится. Есть же у них ИНН? Какие буквы последние - те и попали в новую базу. Или я чего-то недогоняю...

  23. (0) Ты четче опиши задачу: например, есть справа. Контрагенты. Нужно перенести в новую БД. Ну, и далее...

    Ответы: (23)
  24. (22) Это упрбаза тут нет ИНН и не по чем синхронизировать кроме наименования. А с наименованиями беда ... Называли как хотели ... Причем контрагентов создавали торговые ... Теперь бизнес за копейки куплен моими хорошими знакомыми и они готовы заплатить хорошие деньги за нормализацию информации ... И если с номенклатурой все ок ... С контрагентами реально беда для донецкой области это куча ларьков причем в разных городах один предприниматель ... Вероятнее всего после сборки поработаю бабороботом, как назвали на Мисте и буду нормализировать вручную остаточное ...
    ЗЫ: Дистрибьюция пива и напитков ...

    Ответы: (24) (30)
  25. 30.04.2014 02:22:31 отредактировано Дядя Васька

    (23) А нафейхуа они вообще в новой базе-то? Для начальных остатков не нужны, а по ходу закупок/продаж заведут нормально. Имеет смысл их переносить, если по ним забиты прочие какие данные: тот же ИНН, адреса, прочее. Если все что по ним есть, это наименование. Там что руками новых завести, что переносить - шило на мыло. Тем более ИП. Да там 3/4 позакрывались уже, ненужный мусор для базы, не более.

    Ответы: (27)
  26. 30.04.2014 03:40:06 отредактировано БухиТог

    http://j008.ru/ps/051_1C_javascript_split_RegExp

    1С8. Пример работы с javascript. Функция split() и регулярные выражения.

    К сожалению, в 1С нет функции работы со строками split() и нет регулярных выражений. Зато эта функция есть в JavaScript. Она делит строку по строке-разделителю или регулярному выражению и возвращаем массив подстрок. Задействуем мощь JavaScript и регулярных выражений. Пример показывает как можно вызвать функцию JavaScript split() из кода 1С.
    // строкаСоединения: "Srvr="serv3";Ref="zup";
    Функция ПолучитьЗначения(строкаСоединения)

    ScrptCtrl = новый COMОбъект("MSScriptControl.ScriptControl");
    ScrptCtrl.Language="JScript"; // альтернатива: "vbscript";

    // строка-фрагмент кода на JavaScript
    strJsCode="
    |function GetValues(str,strKey){
    | var arr=str.split(/;/i);
    | return arr;
    |}";
    ScrptCtrl.AddCode(strJsCode);

    //выполнить вызов функции на JavaScript из фрагмента
    strExecute="GetValues('" + строкаСоединения + "');";

    сообщить("strExecute:" + strExecute);

    comArr = ScrptCtrl.Eval(strExecute);

    для каждого параметр из comArr цикл
    Сообщить("параметр:" + параметр);
    КонецЦикла;

    Возврат comArr;
    КонецФункции

    Функция ПараметрыСоединения()

    // получим строку соединения с базой 1С
    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();

    //пример: строкаСоединения: "Srvr="serv3"¶Ref="zup"¶"
    //("¶" - это Символ перевода строки (ПС))
    // Заменим его на ";"
    строкаСоединения=СтрЗаменить(строкаСоединения,Символы.ПС,";");

    arr = ПолучитьЗначения(СтрокаСоединения);

    Возврат arr;
    КонецФункции

    ПараметрыСоединения();

    http://j008.ru/ps/051_1C_javascript_split_RegExp

    Ответы: (26) (29)
  27. (25) возможно тебе пригодится третий параметр функции split. Третьим параметром можно указать размер возвращаемогг массива. Т.е. только фамилию и имя в твоем случае.

    Ответы: (27)
  28. (26) Разделить на подстроки - невелика хитрость.
    вот найти наибоее похожие по совпадению подстрок - уже хитрее
    (24) На ИНН могли и плевать с высокой колокольни. Правда, в приличных базах ИНН делают обязательным, и с проверкой на дублировние, но все-таки... И еще отдельные кадры любят заводить по дублю контры на покупателя, поставщика, и какие-нибудь услуги. а "особо выдающиеся" - видел и таких - заводят на каждую "сделку" по контрагенту

  29. Как-то синхронизировал сотрудников в двух базах, причем все сотрудники были китайцы. У пары сотен человек имена состояли из слов типа "чан", "ван", "хунь", "сунь" в различных сочетаниях. Весело было...

  30. (25) Скажу одно - ужас на

  31. (23) "Магазин" в наименовании присутствует всегда?

    Ответы: (31)
  32. (30) Нет может быть М или м. или маг и т.п. Полный бардак.
    Почему новая база? Новое предприятие лучше с 0 и на 1С 8 + агент плюс ) дилер я или как )

    Ответы: (33)
  33. (31)

    Fynjy Почему новая база? Новое предприятие лучше с 0 и на 1С 8 + агент плюс ) дилер я или как )

    нифига не понял

  34. (31) Задача довольно тривиальна (вычистить бардак), но красивого и элегантного решения - нет.

    Ответы: (34)
  35. (33) Хотелось бы что бы "впахивали роботы, а не человек" )

    Ответы: (35) (36) (37)
  36. (34) В данном случае, пока ты объяснишь машине, что и как делать.... Быстрее - руками выправить. Кстати, пока руками будешь выправлять - мысли могут прийти (может все-таки есть какая-то закономерность) [smile=:D]

  37. (34)Я ж тебе сказал в (6)...

  38. +(34) До сих пор ни разу не видела реализованный механизм склонения ФИО. У тебя задача чуток попроще. [smile=^_^]

    Ответы: (44)
  39. Очевидно что нужно искать именно магазин, итерационно, вначале ищешь по "магазин", потом смотришь что осталось - "маг.", "м." и т. д.

    Передайте донецкому

    Ответы: (39)
  40. (38) Иванов М маг Рога и копыта - "М" это "магазин"? [smile=^_^]

    Сложно.

    Ответы: (41)
  41. (0) справочник целиком - переносить не нужно, преносятся только имеющие "остатки" по взаиморасчетам, дебиторы и кредиторы. После этого (а, по опыту, перенесется едва больше одной восьмой) делается "сворачивание" и делается вручную, с учетом обзвонов и уточнения состояния взаиморасчетов. Никакая логика, без дополнительных данных, не позволит "свернуть" Петра Иванова, если этих Петров - несколько и они - реально разные люди (ИП).

    Ответы: (45)
  42. (39) если есть "маг" то М - однозначно имя, и перебирать можно справа - если заменить пробел переводом строки то это несложно

    Ответы: (43)
  43. маг Мага И.

  44. (41) Уговорил. Но вариантов - масса...
    Когда разгребала номенклатуру (примерно также, как у автора: кабель соединительный = соединительный кабель = соед. USB-кабель и т. п.), все на что меня хватило (по коду): папка "Разгрести" -> "Кабели" и туда запихнуть всё, где встречается слово "кабель", и т. д. А потом ручками - приводить в соответствие.
    Убить придурков (которые это все нафигачили) хотелось безумно [smile=>_<]

  45. (37) Ты много чего не видела.

    Ответы: (46)
  46. (40) Нужно это торговые точки, которые должен объехать торговый и отчитаться почему не берут или сколько заказали.

  47. (44) Алгоритм я принял во внимание. Буду реализовывать.

или зарегистрируйтесь чтобы ответить!