Многие пользователи сталкиваются с задачей интеграции интернет-магазина с 1С:Бухгалтерия 3.0. Поскольку эта конфигурация в первую очередь предназначена для бухгалтерского и налогового учета, а не для торговых операций, возникают вопросы о том, как правильно настроить обмен, не нарушая типовой функционал и не создавая проблем при обновлениях. Давайте разберем, как подойти к этой задаче профессионально и эффективно.
Первое, что нужно осознать: 1С:Бухгалтерия 3.0 не является полноценной торговой системой, в ней нет развитого механизма характеристик номенклатуры или сложных видов цен, как в 1С:Управление торговлей. Однако это не означает, что выгрузка невозможна. Для реализации обмена нам потребуется создать подсистему, которая будет «вытягивать» данные о товарах, остатках и ценах и преобразовывать их в формат, понятный сайту (обычно это CommerceML).
Главная рекомендация при внесении любых доработок — используйте механизм Расширений конфигурации. Это позволит вам добавлять необходимые реквизиты (например, ссылку на путь к картинке, артикул сайта или специфический признак выгрузки) без изменения основной конфигурации. Это критически важно для того, чтобы база оставалась на поддержке и легко обновлялась.
Рассмотрим по шагам, как настроить хранение дополнительных данных:
Номенклатура дополнительные реквизиты, необходимые для сайта (например, СсылкаНаИзображение или ПризнакВыгрузкиНаСайт).Расширения для изменения форм, если требуется вывести эти поля в интерфейс пользователя.В типовой 1С:Бухгалтерия 3.0 существуют типы цен, которые можно использовать для целей обмена. Вы можете назначить один из типов цен как «Цена для сайта». Обмен будет работать следующим образом:
При запуске процедуры выгрузки, ваша обработка должна обращаться к регистрам накопления ТоварыНаСкладах для получения остатков и к регистру сведений ЦеныНоменклатуры для получения актуальных цен. Пример логики получения цены:
Функция ПолучитьЦенуНоменклатуры(Номенклатура, ТипЦены) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура И ТипЦен = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("ТипЦены", ТипЦены);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Возврат Результат.Цена;
КонецЕсли;
Возврат 0;
КонецФункции
Не рекомендуется хранить тяжелые файлы изображений непосредственно в базе 1С:Бухгалтерии 3.0, так как это приведет к быстрому разрастанию объема базы данных и замедлит работу. Оптимальный вариант — использовать сетевую папку или внешний сервер:
XML-файла для обмена (например, для 1С-Битрикс), вставляйте в структуру файла полный URL или относительный путь, по которому сайт сможет самостоятельно скачать или получить изображение.Создайте внешнюю обработку, которая будет выполнять выгрузку по расписанию. Используйте стандартный XMLWriter для генерации файлов обмена. Структура CommerceML достаточно типизирована, и современные CMS легко распознают этот формат. Ваша задача — перебрать номенклатуру, сформировать для каждого элемента соответствующий узел в XML и выгрузить его на FTP или через HTTP-запрос.
Подводя итог, можно сказать, что доработка 1С:Бухгалтерии 3.0 под нужды интернет-магазина вполне реальна, если придерживаться принципа «не навреди»:
Расширения.Регламентные задания для автоматической выгрузки, чтобы не заставлять пользователя запускать процесс вручную.Если бизнес планирует серьезное расширение торговой деятельности, в будущем стоит рассмотреть переход на специализированную систему, такую как 1С:Управление торговлей или 1С:Управление нашей фирмой, где торговый функционал проработан глубже и штатно готов к интеграции с любыми CMS.