Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Моя первая сложная задача в 1С
Контекст: развёртывание 1С УПП для сети магазинов
Это было в 2013 году, когда я только начинал работать 1С разработчиком. Компания владела сетью из 8 розничных магазинов и решила внедрить 1С:Управление производством и персоналом (УПП) вместо традиционной системы учёта на основе Excel.
Суть проблемы
Исходное состояние:
- В каждом магазине свой Excel с данными о товарах, остатках и продажах
- Базы данных несогласованы: один товар может быть с разными артикулами в разных магазинах
- Нет единой системы учёта, постоянны расхождения
- Руководство требовало консолидированное видение остатков и продаж по всей сети в реальном времени
Мне поставили задачу:
- Развернуть 1С:УПП на сервере
- Мигрировать исторические данные из 8 Excel-файлов
- Синхронизировать номенклатуру (привести 8 разных справочников товаров в единый)
- Обеспечить обмен данными между центром и магазинами (выгрузка ТТН со склада, загрузка продаж из кассы)
- Создать отчёты для руководства по выполнению плана продаж
Что было непростым
Проблема 1: Хаос в номенклатуре
В файле магазина №1:
- Товар "Молоко Домик" с артикулом 001, цена 80 руб
- В файле магазина №2: "Молоко ДОМИК" артикул DOmik_001, цена 85 руб
- В файле магазина №3: "МОЛОКО" артикул МЛК-ЧМ, цена 80 руб
Это один и тот же товар, но представлен трёхкратно с разными реквизитами. Ручная стандартизация была невозможна — товаров 5000+.
Проблема 2: Исторические остатки
Было непонятно, какой остаток был точным на дату начала работы системы. Excel-файлы содержали:
- Текущие остатки (точно неизвестно, на какую дату)
- Списание товара (просто удалены строки, истории нет)
- Учёт в натуральных единицах ("2 коробки" вместо "24 штуки")
Проблема 3: Обмен данных между филиалами
Магазины должны были:
- Получать приказы на отпуск со склада
- Передавать документы учёта (кассу, инвентаризацию)
- Работать в режиме "онлайн" или "оффлайн" с последующей синхронизацией
А в 2013 году VPN и облака были дорогим удовольствием.
Мой подход к решению
Этап 1: Нормализация номенклатуры
Я создал обработку на 1С, которая:
// Загружает все 8 файлов
// Проверяет каждый товар по трём критериям:
// 1. Наименование (с игнорированием регистра и пробелов)
// 2. Примерное совпадение (Левенштейна расстояние < 3)
// 3. Цена (если цены совпадают, вероятно один товар)
// Результат: список вероятных дубликатов
// Пользователь вручную проверял и подтверждал объединение
// Система создавала единый справочник Товаров
Эта обработка сэкономила месяцы ручной работы. Хотя пришлось проверять вручную, компьютер указал на 90% дубликатов.
Этап 2: Установка начальных остатков
Я создал документ-обработку "Инвентаризация на начало периода":
// Для каждого товара в каждом магазине
// Создавал строку движения в регистр "ТоварыНаСкладах"
// С датой 01.01.2013 и регистратором = инвентаризация
Движение.Период = "2013-01-01";
Движение.Склад = Склад;
Движение.Номенклатура = Товар;
Движение.Количество = КоличествоИзExcel;
// Это позволило в любой момент узнать, какие были остатки на эту дату
Этап 3: Реплика-схема обмена данными
Для синхронизации между магазинами я реализовал простой, но эффективный обмен:
// На сервере центра: таблица "РегистрДокументовНаОтправку"
// где хранятся все созданные в центре приказы и рассчеты
// У магазина: таблица входящих документов
// 1. Каждый вечер магазин скачивает новые документы со склада
// 2. Загружает их в свою БД
// 3. Загружает свои кассовые чеки и инвентаризации на сервер
// При наличии интернета — в реальном времени
// Без интернета — синхронизация по расписанию
Я использовал встроенные возможности 1С — обмен через XML-файлы и регламентные задания.
Этап 4: Отчёты для руководства
Создал три ключевых отчёта:
// 1. Остатки товаров по магазинам (в реальном времени)
// - показывает низкие остатки (красным)
// - позволяет видеть дисбаланс между магазинами
// 2. Выполнение плана продаж
// - сравнивает плановые цифры с фактическими
// - показывает тренд по дням и неделям
// 3. Аналитика: какие товары продаются лучше всего
// - помогает принимать решения о переброске товара между магазинами
Чему я научился
Из технического:
- Обработка и нормализация грязных данных — это половина успеха проекта
- История данных критична — нужно всегда знать, когда и что изменилось
- Синхронизация между несколькими БД — одна из сложнейших задач в 1С
- Тестирование на реальных данных — никогда не верь, что «в боевой системе это не произойдёт»
Из организационного:
- Вовлечение пользователей на каждом этапе — их мнение о том, какой товар это всё же один товар, было решающим
- Пилотный запуск — сначала мы запустили один магазин, нашли все ошибки, потом масштабировали
- Документирование процесса — чтобы другие мог поддерживать систему после моего отъезда
Результат
Через 4 месяца интенсивной работы система заработала. Руководство получило:
- Единую номенклатуру по сети
- Реальное видение остатков
- Возможность быстро находить товары в разных магазинах
- Данные для анализа продаж
Эта задача научила меня думать системно — не просто кодить, а понимать, как инструмент решает бизнес-проблему.