Разработки совместимы с 1С 8.3 УТ11 / УТ10 / УНФ / Розница / КА / ERP.
За две недели сделана большая работа в Мегапрайсе. Особенное внимание было уделено оптимизации (ускорению загрузки). Некоторые участки стали быстрее в 2-3 раза, а другие ускорились в сотни раз (то что делалось минуты, сейчас выполняются меньше секунды).Также был добавлен различный новый функционал.
- Новая автонастройка (обработка сама находит колонки). Понимает если шапка расположена в разных строках (бывает сдвинута). Добавлена опция "Контроль шапки" - если вы установите на определенных колонках галку и они не будут найдены, то загрузка остановится.
- Запись профиля. Если файл не был загружен и вы нажали записать профиль - настройки колонок больше не стираются. Ранее нажатие кнопки до загрузки файла приводило к очищению сохраненных настроек колонок.
- Отчет по прайсу. Формируется в ручном и автоматическом режиме (с отправкой на почту). Позволяет получить сравнение нового и предыдущего прайс-листа поставщика, а опции позволяют указать что именно должно попасть в отчет (изменение цен, позиций, остатков).
- Регистр История изменений. Позволяет включать для конкретных профилей запись изменений. С помощью истории можно изучить изменения за период. В анализаторе и помощнике закупок в расшифровку по прайс-листам добавлена информация по истории (какие были цены, какие изменения). Реализован общий большой отчет по истории по всем прайс-листам поставщиков. В некоторых расшифровках добавлена диаграмма изменения цен.
- Загрузка цен (отчет). Полностью переработана. Теперь выводится отчет по всем ценам загрузки (до 4 видов цен). В отчете данные нового прайс-листа и сравнение с текущими ценами (выводится и процент отклонения). Отчет можно получить интерактивно и автоматически (роботом). Отчет позволяет увидеть информацию об изменении или отличие цена прайс-листа (поставщика или конкурента) без записи в 1С (т.е. можете проанализировать любой прайс в самой загрузке без необходимости сначала записывать все в базу).
- Планируется расширение отчета - теперь сюда можно будет добавить множество данных. Например остатки, продажи по номенклатуре. Добавить сразу сравнение с другими поставщиками! и все это без записи загружаемого прайса в 1С. Например когда вы получили от кого то прайс и просто хотите сделать анализ по тем позициям, которые в нем.
- Варианты отчета по ценам - полный или только изменения. Вариант изменений - покажет в отчете по всем колонкам цен только изменения (уберет то что сходится). Так как цены колонками, то может быть ситуация Цена 1 совпала, цена 2 совпала, цена 3 - есть отличие.
- Дубли номенклатуры. Отчет автоматически проверяет наличие дублей! В случае если они обнаружены в отчете горят строки товаров с дублями, а также выводятся номера строк, в диапазоне которых дубли данной позиции. Из дублей выбирается позиция с максимальной ценой. При установке цен в 1С в документ гарантированно больше не попадут одинаковые позиции (проверяется комбинация номенклатура+характеристика). 1С запрещает нахождение дублей в документе и обычно выдает ошибку проведения.
- Запись цен в базу. Загрузка в базу теперь строится на основании полученного отчета. Если указан вариант отчета "только изменения" загрузка будет загружать только изменившиеся цены.
- Граница изменения цен. Сразу для двух вещей - загрузка цен, отчёт по изменениям, запись истории изменений. Для отчета по ценам - если новые цены изменились меньше чем на указанный процент - не считать это изменением. Не выводить в отчёт и не загружать в 1С. Для отчета по сравнению прайса с прошлым. Если цены изменились меньше чем указанный процент не записывать это как изменение прайс-листа.
- Данная опция будет полезна если цены поставщика или конкурента изменились или отличаются не значительно. Чтобы исключить регистрации изменений копеек, рублей и прочего. Иногда даже 1 процент многие не считают основанием для переоценки. Позволит уменьшить количество записей в базу. Ускорит загрузку. Уменьшит обработку данных анализатором.
- Загрузка множества остатков. Реализована возможность загружать сразу много колонок с остатками (разные склады) поставщика. В профилях добавлено указание трех виртуальных складов поставщика. Данная возможность позволяет убрать двойные и тройные загрузки одного прайса. Оптимизация на 200 и 300 процентов.
Оптимизация
- Настройка колонок. Удалены лишние поля, которых практически не бывает в прайс-листах или очень редкие. Ценовая группа, сегмент, сумма, категория товара, марка, срок годности, площадь, размер и прочие. Для того чтобы загружать такие поля теперь используются универсальные колонки - "произвольный реквизит 1, 2, 3, 4, 5". С помощью которых можно обозначить любые данные которые присутствуют в прайсе и с помощью механизма алгоритм загрузить в номенклатуру (или куда либо еще) все что угодно.
- Альтернативный вариант - новая вкладка настроек "Номенклатура", в который мы добавим некоторые поля без необходимости алгоритмов. Данная вкладка служит для указания полей, который служат исключительно при создании номенклатуры.
- Загрузка CSV-TXT. По статистике около 30 процентов прайсов в этом формате поступало на веб-сервис. Практически в этом формате самые большие прайс-листы 50-100-200 мегабайт и больще (есть пример прайс листа размером 1 гигабайт). На такие прайс-листы больше времени уходило на передачу на сервис.
- В тоже время это самый быстрый формат, который умеет читать 1С и без проблем. Огромные прайс-листы считываются за секунды.
- Ранее я бесплатно давал доп модуль для этого формата, но видимо люди все равно настраивали через сервис. Встроил чтение этого формата прям в обработку, и отключил передачу его на сервис. Таким образом мы ориентировочно разгрузили сервис (с учетом того что это огромные прайсы) на 50 процентов, тем самым ускорив загрузку и CSV-TXT, и тех кто передает на сервис чтение кривых форматов экселя и многостраничных прайсов, которые не умеет читать 1С. Бесплатный модуль тоже остается для специфических случаев.
- Тест нагрузки. В самом начале загрузки добавлена кнопка! Она имитирует загрузку прайс-листа и создает виртуальный прайс на 100 000 строк, который подгружает в обработку. Данная возможность служит для тестов и проверки загрузки на данных Планирую добавить указание количества строк, для себя я иногда ставлю загрузку 1 миллиона строк для тестов.
- Пользователи могут воспользоваться тестом для того чтобы проверить свой сервер или компьютер для того как быстро работает загрузка (так как полностью переписаны логи). Я планирую сделать обмен тестами (как это сделано в тесте Гилева), для того чтобы пользователи могли увидеть на каких серверах работают другие люди и какие результаты скорости работы 1С. Это поможет оценить и задуматься о необходимости поменять сервер, если 1С у вас не тянет.
- Тест Загрузка справочником. Кнопка сделает имитацию загрузки вашего справочника. Это все равно что если бы его выгрузили и загрузили. В имитацию прайса попадает ваша номенклатура и несколько выбранных цен. Также там артикул, наименование, полное наименование, группа.
- В чем прикол. Вы можете провести тест равный вашей номенклатуре!! Но... Имея функционал загрузки вы можете если хотите воспользоваться - поиском дублей, алгоритмами, которые позволят изменить (наименования, артикулы и прочее). Изменить цены. Загрузить изменения в базу. Это как марафет номенклатуры, но через загрузку. Короче весь функционал загрузки для работы с вашим справочником. Я уже столько заложил функционала в загрузку, что ей можно обрабатывать свою номенклатуру различным уникальными вещами.
- Новые логи. Добавлено множество новых логов записываемых в журнал по действиям загрузки. Ранее не было множества таких вещей - как работает автозамены, дубли, цены и прочее. Сейчас практически все действия которые делает загрузка попадает пошагово в логи. И мало того отображает количество обработанных строк (например количество найденных дублей). И главное - добавлена скорость работы каждого действия в секундах. С помощью новых логов была сделана огромная оптимизация многих участков.
- Супер скорость загрузки. C помощью теста нагрузки (генерации огромного прайса) и логов (которые стали детализированными и отображают скорость) были оптимизированы следующие участки. Тесты делали на прайс-листе в 100-500 тысяч строк.
- Автозамены. Которые раньше выполнялись несколько минут теперь работают меньше 1 секунды. Автозамены это спец функционал проверки расхождения между поставщиком и вашей базой названий производителей, видов номенклатуры, единиц измерений. Часто бывает необходимость установить свои названия производителей.
- Если у вас специфика работы Артикул+Производитель, то для такого поиска как правило нужно сразу проверить и обработать соответствия производителей перед тем как будет использована синхронизация. Теперь скорость такой проверки сведена к нулю (происходит мгновенно).
- Поиск дублей в прайсе. Был самый медленный участок. Полностью переработан. С работы во много минут, теперь выполняется 0-1-2 секунды. В тесте нагрузки я создал ситуацию чтобы каждый 5 товар был дублем. На прайсе листе в 100 000 товаров и 40 000 дублей, обработка поиска дублей показала 0 секунд (миллисекунды).
- Обычно дубли номенклатуры в прайс-листах связаны с ведением характеристик, когда номенклатура одна, а характеристики разные. Но когда мы загружаем новую номенклатуру, нам категорично нужно чтобы в дублировании строк - создалась одна и таже номенклатура. Так как загрузка характеристик идет после этого.
- Создание номенклатуры. 1С очень медленно записывает номенклатуру в базу, и мы тут ничего поделать не можем. Это самый тяжелый справочник в 1С (там куча реквизитов и много проверок всяких). Но здесь мы оптимизировали чтение таблицы загрузки, чтобы хотя бы это происходило очень быстро. А также оптимизация скорости поиска дублей в прайсе позволила до 0 сократить время этого поиска дублей, чтобы они не создались в базе.
- Загрузка картинок. Добавлено несколько вариантов скачивания картинок по ссылкам. Один из вариантов показал ускорение на 300 процентов (в три раза).
- Другие изменения - были оптимизированы участки чтения файлов, заполнения таблиц и прочее.
Итоги работы за две недели
- При наличии прайс-листа поставщика в формате CSV-TXT размером 100 000 строк, вы его можете полностью обновлять в своей базе раз в 30 секунд. При этом может быть комбинированный поиск Артикул + Производитель, включены автозамены и поиск дублей.
Для УНФ и УТ10 - это другие программы со своей структурой. Поэтому я переношу в них функционал точечно (изменяя конкретно участки) и после того как закончил генерировать что то новое в УТ11.
Это касается функционала. который сгенерировал я. Но если задачу сгенерировали вы, то приоритет разработки всегда на вашей версии конфигурации, а уже потом это переносится в УТ11.
И это еще не все новости. Я провел несколько новых экспериментов, которые позволят коснуться самой записи прайсов в 1С (ускорение записи и дальнейшего чтения). А также генерации виртуальных остатков в 1С при массовой загрузке прайс-листов настроенных на общее регламентное задание.
Извиняюсь перед пользователями, которые ловили несколько ошибок и вынуждены были несколько раз за день обновиться. Я постарался их оперативно исправить.
Огромная благодарность всем нашим пользователям в телеге, которые участвуют в голосованиях, которые мне помогают в разработке! Ставят лайки! Пишут отзывы!
Также меня радуют мои студенты. Два моих новых сотрудника делают большие успехи в поддержке наших пользователей.