Переход от использования связки «1С:Управление торговлей» (УТ) и «1С:Бухгалтерия предприятия» (БП) к работе в одной информационной базе БП — задача амбициозная, но требующая тщательной проработки архитектуры. Основная сложность заключается в том, что в типовой БП отсутствует документ Заказ клиента с механизмом резервирования и оперативного контроля отгрузок. В этой статье мы подробно разберем, как внедрить аналогичный функционал УТ в среду БП 3.0 КОРП, используя современные инструменты платформы 1С v8.3.
Прежде чем приступать к кодингу, проанализируем ситуацию. Зачем это нужно? Основная причина — уход от сложных обменов, которые часто «разваливаются» при обновлении версий, и создание единого информационного пространства для менеджеров и бухгалтеров. Однако стоит помнить, что БП — это система регламентированного учета, и превращение ее в систему оперативного учета (как УТ или ERP) требует создания дополнительных механизмов контроля.
Рассмотрим основные требования к системе «Заказы в БП»:
Заказ клиента).Проанализируем возможности типовой конфигурации. В БП 3.0 документ Счет на оплату покупателю уже обладает частью функционала заказов. Он не делает бухгалтерских проводок, но служит основанием для документов Реализация (акты, накладные) и Поступление на расчетный счет.
Разберем по шагам, как адаптировать счета под нужды заказов:
Расширение можно добавить в документ СчетНаОплатуПокупателю новые реквизиты, такие как «Дата отгрузки», «Способ доставки» или «Приоритет».Если бизнес-процессы требуют жесткого резервирования или сложной аналитики, которой нет в счетах, перейдем к реализации собственной подсистемы. Использование расширения позволит нам не снимать конфигурацию с поддержки и сохранит возможность легкого обновления.
Рассмотрим структуру объектов, которые необходимо создать в расширении:
Заказ, Номенклатура. Ресурс: Количество. Это позволит нам строить отчеты по невыполненным обязательствам.Проанализируем пример кода для проведения документа по регистру накопления в расширении:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Отражаем движение в управленческом регистре
Если РежимЗаписи = РежимЗаписиДанных.Проведение Тогда
Движения.ЗаказыКлиентов.Записывать = Истина;
Для Каждого СтрокаТЧ Из Товары Цикл
Движение = Движения.ЗаказыКлиентов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Заказ = Ссылка;
Движение.Номенклатура = СтрокаТЧ.Номенклатура;
Движение.Количество = СтрокаТЧ.Количество;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Для компаний с позаказным производством важно связать факт выпуска продукции с конкретным заказом клиента. В БП для этого используется документ Отчет производства за смену (ОПзС). Рассмотрим, как организовать эту связь без глубокой переработки системы.
Выясним причину, почему стандартная связь часто неудобна: в БП основной аналитикой затрат является Номенклатурная группа. Чтобы видеть себестоимость по заказам, проанализируем следующий алгоритм:
Номенклатурные группы.Заказ клиента (или счете) указываем эту группу.Отчета производства за смену и Реализации выбираем эту же номенклатурную группу.Закрытие месяца распределит затраты (20 счет) именно по этим группам, что позволит получить детальную себестоимость в разрезе заказов в стандартных бухгалтерских отчетах.Одной из самых сложных задач является контроль дебиторской задолженности именно по заказам, а не по договорам в целом. В БП 3.0 на счете 62.01 и 62.02 используется три субконто: Контрагенты, Договоры, Документы расчетов.
Посмотрим на пример настройки автоматического распределения оплат. Чтобы оплаты привязывались к заказам, мы можем использовать поле Документ расчетов. Для этого в расширении необходимо доработать модуль проведения документов Поступление на расчетный счет, чтобы при наличии ссылки на заказ в назначении платежа, программа подставляла его в субконто Документы расчетов. При необходимости можно также использовать расширение для подбора договора по документу расчетов в банковских выписках.
Разберем фрагмент кода для поиска документа расчетов по номеру заказа из комментария:
// Поиск заказа в тексте назначения платежа
ТекстНазначения = Объект.НазначениеПлатежа;
НомерЗаказа = НайтиНомерВТексте(ТекстНазначения); // Собственная функция парсинга
Если ЗначениеЗаполнено(НомерЗаказа) Тогда
ЗаказСсылка = Документы.СчетНаОплатуПокупателю.НайтиПоНомеру(НомерЗаказа, Объект.Дата);
Если Не ЗаказСсылка.Пустая() Тогда
СтрокаПлатежа = Объект.Оплата[0];
СтрокаПлатежа.СпособПрямогоЗачета = Перечисления.СпособыЗачетаАвансов.ПоДокументу;
СтрокаПлатежа.ДокументРасчетов = ЗаказСсылка;
КонецЕсли;
КонецЕсли;
Чтобы менеджеры не «заблудились» в бухгалтерском интерфейсе, необходимо создать специализированное рабочее место. Это может быть обработка, которая выводит:
Важным моментом является настройка прав. Используйте Профили групп доступа, чтобы ограничить видимость счетов 90, 91, 68, 69. Менеджер должен видеть только справочники ТМЦ, Контрагентов и свои торговые документы. Это обеспечит чистоту учета и безопасность финансовых данных компании.
Подводя итог, можно сказать, что реализация заказов в БП — это рабочий вариант для малого и среднего бизнеса, которому тесно в рамках стандартного обмена с УТ.
Рассмотрим основные тезисы:
Помните, что любая доработка должна быть задокументирована, а механизмы расширений следует тестировать на копии базы перед каждым обновлением типовой конфигурации 1С:Бухгалтерия.