Не обновляются цены из 1С на сайте: как найти причину и проверить результат
Если на сайте не обновляются цены из 1С, причина почти всегда лежит в одном из четырёх мест: цена не доходит до нужного инфоблока или типа цены, обмен завершается с ошибками по части позиций, новая цена записана, но не пересчитаны наценки, либо значение уже лежит в базе, а посетитель видит старую цифру из кеша. Ниже — порядок действий, который позволяет отделить эти случаи друг от друга, а не перебирать настройки наугад.
Что значит «не обновляются цены» и где границы задачи
Прежде чем что-то менять, симптом нужно описать точно. Формулировка «цены не обновляются» описывает слишком разные ситуации, и от неё зависит, куда смотреть в первую очередь.
Уточните у себя несколько вещей. Не обновляются цены у всех товаров или только у части? Затрагивает это один тип цены или все сразу? Расхождение видно в списке товаров, в карточке, в корзине или на всех страницах? Цена не меняется вообще или меняется с задержкой? Воспроизводится ли расхождение после ручного запуска обмена?
Ответы на эти вопросы делят задачу на разные ветки. Если не обновляется всё и сразу — скорее всего, сломан сам канал обмена или не совпадают типы цен. Если страдает часть позиций — дело в сопоставлении товаров, в идентификаторах или в том, что позиции попадают не в тот инфоблок. Если в административной части цена новая, а на витрине старая — вопрос уже не в обмене, а в отображении.
Границы задачи тоже стоит зафиксировать. Восстановление обновления цен — это работа с обменом, сопоставлением, правами и кешем. Сюда не входят пересмотр ценовой политики, налоги, округления по требованиям бухгалтерии и юридические вопросы ценообразования: их согласуют с профильными специалистами отдельно. Если в компании есть правила, по которым цена на сайте не может быть ниже или выше определённого уровня, это ограничение нужно знать заранее — иначе обмен будет формально работать, а результат всё равно забракуют.
Как устроен путь цены от 1С до карточки товара
Полезно держать в голове всю цепочку: она короткая, и сбой на любом шаге выглядит одинаково — «цена не обновилась».
Сначала 1С формирует файл обмена с товарами и предложениями. Затем сайт принимает этот файл и сопоставляет каждую позицию с уже существующим товаром по идентификатору. Дальше цена записывается в привязке к конкретному типу цены. После записи могут пересчитываться наценки, если типы цен связаны между собой. Затем обновляется индекс и сбрасывается кеш, и только после этого новая цифра появляется на витрине.
Разрыв на любом из этих шагов даёт один и тот же внешний симптом. Поэтому диагностика идёт не «сверху вниз по догадкам», а по контрольным точкам: сначала проверяем, что вообще пришло, потом — куда записалось, потом — что видит посетитель. Общая логика обмена товарами и заказами между сайтом и учётной системой разобрана в материале про обмен сайта на Битрикс с 1С; здесь мы останавливаемся именно на ценах.
Тип цены, валюта и права: что сверить до поиска ошибки
Это самая частая группа причин, и она проверяется быстрее всего.
Сопоставление типов цен
В 1С и на сайте типы цен — это разные сущности, которые кто-то должен связать между собой. Если в учётной системе цена лежит в одном типе, а обмен пишет её в другой (или не пишет вовсе), на сайте останется старое значение. Проверьте, что каждому типу цены из 1С соответствует нужный тип цены на сайте и что соответствие не сбилось после правок в любой из систем.
Отдельно посмотрите, не появился ли в 1С новый тип цены, который на сайте никому не сопоставлен. Такое случается после изменений в учётной системе: обмен формально проходит, а новая цена просто некуда не попадает.
Валюта и коэффициент
Цена приходит вместе с валютой и коэффициентом пересчёта. Если валюта в файле обмена не совпадает с валютой типа цены на сайте, значение может записаться некорректно или не записаться совсем. Проверьте, что валюта и коэффициент в источнике и на приёмнике согласованы, а не «примерно похожи».
Права доступа
Обмен работает от имени конкретного пользователя. Если у этого пользователя нет прав на нужный инфоблок или на нужный тип цены, запись не пройдёт, а в отчёте появится ошибка. Это особенно актуально, когда настройку делал один подрядчик, а права потом менял другой. Проверьте, от какой учётной записи идёт обмен и хватает ли ей прав на запись цен.
Журнал обмена и отчёт импорта: как читать результат
Первое, что нужно сделать, — найти отчёт о последнем обмене и прочитать его целиком, а не только верхнюю строку.
Важный нюанс: журнал обмена может быть пуст, если цены загружались не через штатный обмен, а ручным импортом файла. В этом случае смотреть нужно не в журнал, а в отчёт импорта. Он показывает, сколько элементов обновлено, сколько деактивировано и сколько обработано с ошибками.
Строка про ошибки — самое ценное. Если в отчёте есть позиции «с ошибками», именно они и есть кандидаты на «не обновляется». Дальше вопрос в том, почему конкретная позиция не записалась. Типичные причины: не найден товар для сопоставления, дублируется идентификатор, позиция относится к другому инфоблоку или нарушены права.
Отдельно проверьте, не деактивируются ли товары в процессе. Если позиция деактивирована, её цена может не показываться на витрине, хотя в базе обновилась. Это выглядит как «цена не обновилась», хотя на самом деле товар просто скрыт.
Ошибка передачи или кеш отображения: как различить
Это развилка, которая экономит больше всего времени. Различить её просто: сравните цену в административной части и на витрине.
Проверка в административной части
Откройте карточку проблемного товара в административной части и посмотрите цену по нужному типу. Если там новое значение — передача работает, и проблема в отображении. Если там старое — проблема в обмене, и кеш тут ни при чём.
Проверка на витрине
Если в административной части цена новая, а на сайте старая, смотрите по порядку: наценки, индекс, кеш. Наценки — потому что типы цен с фиксированной наценкой могут не пересчитываться автоматически: в настройках наценок есть отдельное действие для пересчёта, и без него связанные цены остаются прежними. Индекс и кеш — потому что после массового обновления данные могут отдаваться из старого кеша.
Важно: очистка кеша и переиндексация — это не универсальное лекарство, а проверяемая гипотеза. Если после них ничего не изменилось, значит, причина не в отображении, и нужно возвращаться к обмену.
Учебный пример: цены не обновляются у части товаров
Учебный пример. Данные условные и приведены только для иллюстрации порядка действий.
Исходные условия. Условная компания торгует инструментом, в каталоге около 4 500 позиций. Обмен настроен давно, но после смены ответственного за учётную систему часть товаров перестала обновлять цены. По остальным позициям цены приходят нормально. Ручной импорт файла обмена завершается отчётом, в котором есть обновлённые, деактивированные и ошибочные позиции.
Шаг 1. Фиксируем симптом. Выясняем, что не обновляется цена только у части товаров и только по одному типу цены. Значит, канал обмена в целом жив.
Шаг 2. Читаем отчёт импорта. Видим, что количество ошибочных позиций совпадает с числом товаров, у которых цена не меняется. Это подтверждает, что дело не в кеше.
Шаг 3. Разбираем одну ошибочную позицию. Смотрим, к какому инфоблоку она привязана на сайте, и сверяем с тем, куда её пишет обмен. Оказывается, часть товаров приходит не в тот инфоблок — обмен настроен на один каталог, а эти позиции живут в другом.
Шаг 4. Проверяем идентификаторы. Дополнительно убеждаемся, что идентификаторы товаров уникальны: если один и тот же идентификатор встречается у двух позиций, сопоставление может уйти не туда.
Шаг 5. Готовим исправление. Сначала делаем резервную копию, затем на тестовой копии сайта меняем привязку обмена к нужному инфоблоку и повторяем импорт. Смотрим отчёт: число ошибочных позиций должно снизиться, а цены — обновиться.
Шаг 6. Проверяем результат. Сверяем несколько позиций из разных групп: те, что раньше были ошибочными, те, что обновлялись нормально, и те, что были деактивированы. Убеждаемся, что ничего лишнего не изменилось.
Шаг 7. Переносим на рабочий сайт. Только после успешной проверки на копии повторяем настройку на рабочем сайте и снова сверяем контрольные значения.
Наблюдаемый результат в этом примере: цены обновляются у всех позиций, ошибочных строк в отчёте нет, деактивированные товары остались деактивированными. Ответственный за результат — тот, кто ведёт обмен со стороны сайта, при участии специалиста по учётной системе.
Таблица контрольных значений
Таблица помогает не спорить о симптомах, а сравнивать факты. Заполняйте её по проблемным и по заведомо рабочим позициям.
| Что проверяем | Где смотрим | Ожидаемое значение | Что значит отклонение |
|---|---|---|---|
| Цена по нужному типу | Карточка товара в административной части | Совпадает с ценой в 1С | Расхождение — проблема в обмене, а не в отображении |
| Тип цены | Сопоставление типов цен в настройках обмена | Каждому типу из 1С соответствует тип на сайте | Нет пары — цена некуда записывается |
| Валюта и коэффициент | Файл обмена и настройки типа цены | Согласованы между источником и приёмником | Несовпадение — цена пишется некорректно или не пишется |
| Инфоблок позиции | Привязка товара на сайте | Совпадает с инфоблоком, в который пишет обмен | Позиция приходит не в тот каталог |
| Идентификатор товара | Сопоставление позиций | Уникален для каждой позиции | Дублирование уводит сопоставление не туда |
| Строка отчёта импорта | Отчёт последнего обмена | Ошибочных позиций нет | Ошибочные позиции — это и есть «не обновляется» |
| Цена на витрине | Страница товара и список | Совпадает с административной частью | Расхождение — наценки, индекс или кеш |
Как проверить результат и принять работу
Приёмка не должна сводиться к фразе «вроде обновилось». Нужны проверяемые критерии.
Сначала сверьте выборку позиций: несколько товаров из проблемной группы, несколько из тех, что обновлялись нормально, и несколько деактивированных. По каждой позиции сравните цену в 1С, в административной части сайта и на витрине. Все три значения должны совпадать.
Затем проверьте отчёт последнего обмена: ошибочных позиций быть не должно, а число обновлённых должно соответствовать ожидаемому. Если в отчёте остались ошибки, работа не закончена, даже если визуально цены выглядят правильно.
Отдельно проверьте связанные типы цен. Если на сайте есть цены с наценкой, убедитесь, что они пересчитались и что пересчёт не потребовал ручного вмешательства по каждой позиции. Если пересчёт приходится запускать руками после каждого обмена, это стоит зафиксировать как отдельную задачу.
И последнее: проверьте, что цена корректно доходит до оформления заказа. Если на витрине цена одна, а в корзине или на этапе оплаты другая, это уже стык с платежным контуром — тема Интеграция магазина с платёжными системами: онлайн-оплата и касса.
Типичные ошибки и ограничения
Первая ошибка — начинать с очистки кеша. Это быстрый и потому соблазнительный шаг, но если причина в обмене, он только маскирует проблему на время.
Вторая — менять настройки сразу на рабочем сайте. Любые правки в обмене, сопоставлении типов цен и правах сначала проверяют на копии, с резервной копией и понятным планом возврата.
Третья — считать, что «обмен прошёл» означает «всё записалось». Обмен может завершиться с ошибками по части позиций, и без чтения отчёта это останется незамеченным.
Четвёртая — игнорировать деактивированные товары. Позиция может быть скрыта, и её цена не покажется на витрине, хотя в базе всё в порядке.
Ограничения тоже стоит назвать честно. Не всегда удаётся определить причину по внешним признакам: иногда нужен доступ к логам и к настройкам учётной системы. Если обмен настраивали несколько подрядчиков и документации не осталось, диагностика займёт больше времени. И помните: часть решений из старых обсуждений может быть неприменима к вашей конфигурации — проверяйте их на копии, а не переносите вслепую.
Какие исходные данные подготовить для оценки
Чтобы оценка задачи была предметной, соберите пакет вводных. Чем полнее он будет, тем меньше времени уйдёт на диагностику.
- Список проблемных позиций с идентификаторами и описанием симптома.
- Указание, какие типы цен затронуты и какие должны обновляться.
- Сопоставление типов цен между 1С и сайтом в текущем виде.
- Информация о том, от какой учётной записи идёт обмен и какие у неё права.
- Отчёт последнего обмена или импорта целиком, а не только итоговая строка.
- Сведения о том, менялись ли настройки обмена и учётной системы в последнее время.
- Указание, есть ли на сайте цены с наценками и как они пересчитываются.
- Данные о том, на какой копии можно безопасно воспроизвести ситуацию.
Если каких-то данных нет, это тоже полезный факт: он показывает, где в процессе нет прозрачности. Общий контекст настройки обмена товарами и заказами описан в материале Интеграция Битрикс с 1С: как настроить обмен товарами и заказами.
Чек-лист
- Симптом описан точно: все товары или часть, один тип цены или несколько, админка или витрина.
- Найден и прочитан отчёт последнего обмена или импорта, включая строку про ошибки.
- Проверено сопоставление типов цен между 1С и сайтом.
- Проверены валюта и коэффициент для затронутых типов цен.
- Проверено, что обмен идёт от учётной записи с достаточными правами.
- Проверено, что проблемные позиции привязаны к тому же инфоблоку, в который пишет обмен.
- Проверена уникальность идентификаторов товаров.
- Сравнена цена в административной части и на витрине по одной и той же позиции.
- Проверено, пересчитываются ли цены с наценкой и не нужен ли ручной пересчёт.
- Сделана резервная копия перед любыми изменениями, работа идёт на копии.
- После исправления сверены контрольные значения по проблемным, рабочим и деактивированным позициям.
- Зафиксирован план возврата на случай, если результат окажется хуже исходного.
Почему цены не обновляются только у части товаров?
Чаще всего такие позиции приходят не в тот инфоблок, не находят пару при сопоставлении или имеют неуникальный идентификатор. Первый шаг — прочитать отчёт обмена и посмотреть, совпадает ли число ошибочных позиций с числом проблемных товаров.
Журнал обмена пуст — это нормально?
Если цены загружались ручным импортом файла, а не штатным обменом, журнал может быть пуст. В этом случае смотрите отчёт импорта: он показывает, сколько элементов обновлено, деактивировано и обработано с ошибками.
В административной части цена новая, а на сайте старая. Что это значит?
Это значит, что передача работает, а проблема в отображении. Проверяйте по порядку наценки, индекс и кеш. Если после этого ничего не изменилось, причина всё-таки в обмене.
Помогает ли очистка кеша и переиндексация?
Иногда да, но это проверяемая гипотеза, а не универсальное решение. Если после очистки кеша цена не изменилась, значит, дело не в отображении, и нужно возвращаться к проверке обмена.
Почему цены с наценкой не пересчитываются автоматически?
Связанные типы цен могут не пересчитываться при обмене, и тогда нужен отдельный пересчёт в настройках наценок. Если пересчёт приходится запускать вручную после каждого обмена, это отдельная задача для настройки.
Можно ли менять настройки обмена сразу на рабочем сайте?
Нет. Сначала резервная копия, затем проверка на копии сайта, затем перенос на рабочий сайт и сверка контрольных значений. Так у вас остаётся понятный план возврата, если результат окажется хуже.