Как выбрать подрядчика для 1С:Розница и УНФ за 7 шагов

Как выбрать подрядчика для 1С:Розница и УНФ за 7 шагов

Почему выбор подрядчика, критически важный этап внедрения

Внедрение 1С:Розница или 1С:Управление нашей фирмой (УНФ), это не просто установка программы. Это трансформация бизнес-процессов, которая напрямую влияет на выручку, лояльность клиентов и операционную эффективность. По данным независимых исследований, более 60% проектов автоматизации торговли заходят в тупик именно из-за неправильного выбора исполнителя: срыв сроков, раздутый бюджет, «сырой» продукт, который не решает реальные задачи бизнеса.

Малый и средний бизнес особенно уязвим: у него нет штатного ИТ-директора, который умеет читать технические спецификации и оценивать квалификацию разработчиков. В результате предприниматель либо переплачивает крупной фирме за избыточный функционал, либо нанимает фрилансера, который исчезает после аванса.

В этой статье мы разберём 7 последовательных шагов, которые позволят вам системно подойти к выбору подрядчика, от формирования технического задания до подписания соглашения об уровне сервиса (SLA). Каждый шаг сопровождается практическими инструментами: чек-листами, примерами кода и реальными критериями оценки.

Шаг 1. Сформулируйте требования до начала переговоров

Самая распространённая ошибка, приходить к потенциальному подрядчику с запросом «нам нужна 1С:Розница». Без чёткого понимания собственных требований вы не сможете сравнить предложения разных исполнителей и будете вынуждены принимать на веру то, что вам говорят.

Что должно войти в предварительное описание требований

  • Масштаб бизнеса: количество торговых точек, касс, складов, пользователей системы.
  • Текущий стек: какие программы используются сейчас (Excel, другая учётная система, интернет-магазин на Bitrix, маркетплейсы).
  • Ключевые боли: что конкретно не работает, пересортица на складе, ручной ввод заказов, отсутствие аналитики по прибыли в разрезе точек.
  • Интеграции: нужна ли связка с сайтом, службами доставки, банком, системой лояльности, электронным документооборотом.
  • Требования к маркировке: если вы торгуете товарами, подлежащими обязательной маркировке, убедитесь, что подрядчик имеет опыт в этой области, подробнее о специфике можно узнать на странице маркировка в 1С.
  • Бюджет и сроки: ваши реалистичные ожидания, а не «как можно дешевле и быстрее».

Этот документ не обязан быть полноценным ТЗ, достаточно 2, 3 страниц свободного текста. Его цель, дать подрядчику контекст и получить от него осмысленный ответ, а не шаблонное коммерческое предложение.

Правило: если подрядчик присылает КП, не задав ни одного уточняющего вопроса, это тревожный сигнал. Хороший специалист сначала разбирается в задаче, потом называет цену.

Шаг 2. Составьте техническое задание совместно с подрядчиком

Техническое задание (ТЗ), главный документ проекта. Именно на него вы будете ссылаться при приёмке работ и разрешении споров. Многие заказчики думают, что ТЗ должны написать они сами, и тратят недели на его подготовку без понимания технической стороны. Это неверный подход.

Как правильно организовать разработку ТЗ

Оптимальная модель, платный предпроектный анализ. Подрядчик проводит 2, 5 встреч с ключевыми сотрудниками заказчика, изучает текущие процессы, выявляет узкие места и формирует ТЗ. Стоимость такого анализа обычно составляет 10, 15% от бюджета проекта, но эти деньги окупаются многократно: вы получаете документ, который реально отражает вашу специфику.

Хорошее ТЗ для внедрения 1С:Розница или УНФ включает:

  1. Описание бизнес-процессов «как есть» (AS-IS) и «как должно быть» (TO-BE).
  2. Перечень объектов конфигурации, которые будут доработаны или созданы.
  3. Описание интеграций с указанием форматов обмена данными.
  4. Макеты печатных форм и отчётов.
  5. Требования к производительности (время отклика, количество одновременных пользователей).
  6. Критерии приёмки каждого блока работ.

Обратите внимание: УНФ и 1С:Розница, разные конфигурации с разной архитектурой. УНФ ориентирована на комплексный учёт малого бизнеса (продажи, производство, финансы, CRM), тогда как 1С:Розница заточена под розничную торговлю с кассовым узлом, дисконтными картами и управлением торговым залом. ТЗ должно учитывать эту специфику.

Шаг 3. Оцените техническую компетентность команды

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

Технические вопросы для проверки компетентности

Попросите разработчика объяснить или продемонстрировать следующее:

  • Как реализован механизм обмена данными между центральной базой и базами розничных точек (РИБ или обмен через веб-сервис)?
  • Как настраивается гибкая система скидок с приоритетами в 1С:Розница?
  • Как в УНФ организован учёт по нескольким организациям?
  • Каким образом реализуется интеграция с фискальным регистратором?

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


// Пример: получение остатков товаров по складу для розничной точки
// Используется в отчёте о товарных остатках на кассовом узле

Функция ПолучитьОстаткиТоваровНаСкладе(Склад, ДатаОстатков) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Остатки.Номенклатура КАК Номенклатура,
		|	Остатки.Номенклатура.Наименование КАК НаименованиеТовара,
		|	Остатки.КоличествоОстаток КАК КоличествоОстаток,
		|	Остатки.СтоимостьОстаток КАК СтоимостьОстаток
		|ИЗ
		|	РегистрНакопления.ТоварыНаСкладах.Остатки(
		|		&ДатаОстатков,
		|		Склад = &Склад
		|	) КАК Остатки
		|ГДЕ
		|	Остатки.КоличествоОстаток > 0
		|УПОРЯДОЧИТЬ ПО
		|	Остатки.Номенклатура.Наименование";

	Запрос.УстановитьПараметр("Склад", Склад);
	Запрос.УстановитьПараметр("ДатаОстатков", ДатаОстатков);

	Результат = Запрос.Выполнить();

	Возврат Результат.Выгрузить();

КонецФункции

Обратите внимание на стиль: отступы, комментарии, именование переменных в PascalCase, корректный синтаксис запроса на языке 1С. Если присланный вам код выглядит иначе, это повод задать вопросы о культуре разработки в компании.

Проверка сертификатов и партнёрского статуса

Уточните, является ли компания официальным партнёром фирмы «1С». Партнёрский статус (франчайзи) означает, что сотрудники регулярно проходят аттестацию и имеют доступ к актуальным обновлениям и технической поддержке. Это особенно важно для своевременного обновления 1С при изменении законодательства.

Шаг 4. Изучите портфолио и запросите живые референсы

Кейсы на сайте, это маркетинг. Живые референсы, это реальность. Разница между ними бывает колоссальной.

Как правильно проверять референсы

Попросите подрядчика предоставить контакты 2, 3 клиентов из похожих отраслей (розничная торговля, общепит, производство с розничными продажами). Свяжитесь с ними и задайте конкретные вопросы:

  • Были ли соблюдены сроки? Если нет, на сколько и по чьей вине?
  • Как подрядчик реагировал на критические баги после запуска?
  • Что бы вы сделали иначе при повторном выборе исполнителя?
  • Поддерживаете ли вы отношения с этим подрядчиком сейчас?

Если подрядчик отказывается давать контакты клиентов под предлогом конфиденциальности, это серьёзный красный флаг. Профессиональные компании гордятся своими клиентами и готовы их рекомендовать.

На что смотреть в кейсах

Обращайте внимание не на красивые цифры («автоматизировали 500 рабочих мест»), а на описание конкретных проблем и решений. Хороший кейс содержит: описание исходной ситуации, перечень реализованных доработок, измеримый результат (сократили время закрытия смены с 40 до 8 минут, снизили пересортицу на 73%).

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

Шаг 5. Проведите конкурентный отбор и сравните предложения

Никогда не принимайте решение на основании одного предложения. Соберите минимум 3, 5 коммерческих предложений и сравните их по единой системе критериев.

Структура сравнительной таблицы

Критерий Вес Подрядчик А Подрядчик Б Подрядчик В
Опыт внедрения 1С:Розница / УНФ (лет) 20% 7 3 5
Наличие живых референсов 15% Да Нет Да
Детализация ТЗ в КП 15% Высокая Низкая Средняя
Фиксированная цена или T&M 10% Fix T&M Fix
Наличие SLA после запуска 15% Да Нет Да
Стоимость проекта 15% 380 000 ₽ 210 000 ₽ 420 000 ₽
Срок внедрения 10% 3 месяца 6 недель 3,5 месяца

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

Фиксированная цена vs Time & Material

Для небольших проектов (до 500 000 ₽) предпочтительна фиксированная цена при наличии детального ТЗ. Для крупных и сложных внедрений с высокой неопределённостью, модель T&M с еженедельными отчётами о затраченных часах. В любом случае, договор должен содержать механизм управления изменениями: как фиксируются новые требования и как они влияют на бюджет и сроки.

Шаг 6. Структурируйте договор и защитите свои интересы

Договор, это не формальность. Это документ, который защищает вас в случае конфликта. Многие заказчики подписывают типовой договор подрядчика, не читая его, и потом удивляются, что не могут предъявить претензии.

Обязательные разделы договора на внедрение 1С

  1. Предмет договора: чёткая ссылка на утверждённое ТЗ как неотъемлемое приложение.
  2. Этапы и сроки: разбивка на конкретные этапы с датами и результатами каждого этапа.
  3. Порядок приёмки: как проводится тестирование, кто подписывает акт, что происходит при обнаружении несоответствий.
  4. Права на код: кому принадлежат доработки, заказчику или подрядчику? Этот пункт критичен: если права остаются у подрядчика, вы не сможете привлечь другого разработчика для доработки.
  5. Гарантийный период: минимум 3, 6 месяцев после запуска, в течение которых подрядчик устраняет баги бесплатно.
  6. Ответственность за срыв сроков: пени за каждый день просрочки (обычно 0,1, 0,5% от стоимости этапа).
  7. Порядок расторжения: что происходит с авансом, кодом и данными при досрочном прекращении сотрудничества.

Важный момент: передача исходного кода

Настаивайте на передаче всего исходного кода доработок в открытом виде (не скомпилированном). Это ваша страховка от «вендорного замка»: если подрядчик прекратит работу или поднимет цены, вы сможете передать проект другому специалисту. Найти квалифицированного разработчика можно через платформу, найти разработчика 1С на Кодерион.

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


// Процедура загрузки номенклатуры в кассовую базу розничной точки
// Вызывается по расписанию каждые 15 минут
// Параметр: УзелОбмена - узел плана обмена РозничнаяТорговля

Процедура ЗагрузитьНоменклатуруВКассу(УзелОбмена) Экспорт

	// Проверяем, что узел обмена указан и активен
	Если НЕ ЗначениеЗаполнено(УзелОбмена) Тогда
		Сообщить("Ошибка: узел обмена не указан");
		Возврат;
	КонецЕсли;

	// Формируем запрос на получение изменённой номенклатуры
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Номенклатура.Ссылка КАК Ссылка,
		|	Номенклатура.Наименование КАК Наименование,
		|	Номенклатура.Артикул КАК Артикул,
		|	Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
		|	Цены.Цена КАК РозничнаяЦена
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура
		|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
		|		,
		|		ВидЦены = &ВидЦены
		|	) КАК Цены
		|	ПО Номенклатура.Ссылка = Цены.Номенклатура
		|ГДЕ
		|	НЕ Номенклатура.ПометкаУдаления
		|	И Номенклатура.ЭтоГруппа = ЛОЖЬ";

	Запрос.УстановитьПараметр("ВидЦены", Перечисления.ВидыЦен.Розничная);

	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();

	// Счётчики для отчёта о загрузке
	КоличествоЗагружено = 0;
	КоличествоОшибок = 0;

	Пока Выборка.Следующий() Цикл

		Попытка
			// Регистрируем изменения для узла обмена
			ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Выборка.Ссылка);
			КоличествоЗагружено = КоличествоЗагружено + 1;

		Исключение
			КоличествоОшибок = КоличествоОшибок + 1;
			ЗаписьЖурналаРегистрации(
				"Обмен с кассой",
				УровеньЖурналаРегистрации.Ошибка,
				Выборка.Ссылка,
				ОписаниеОшибки()
			);
		КонецПопытки;

	КонецЦикла;

	// Выводим итоговую информацию
	Сообщить(СтрШаблон(
		"Обмен завершён. Загружено: %1, Ошибок: %2",
		КоличествоЗагружено,
		КоличествоОшибок
	));

КонецПроцедуры

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

Найдите специалиста для решения этой задачи на koderion.ru