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