Почему не заполняется цена в документе «Возврат товаров между организациями» в 1С:УТ 11 и как это исправить?

Пользователь 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с механизмом межфирменных продаж (также известным как Интеркампани) в программных продуктах 1С:Управление торговлей 11, 1С:ERP или 1С:Комплексная автоматизация пользователи часто сталкиваются с ситуацией, когда при оформлении передач или возвратов табличная часть Товары заполняется без цен. В результате такие документы не могут быть проведены автоматически в рамках процедуры закрытия месяца.

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

Выясняем причину: почему цена отсутствует?

В процессе выполнения регламентной процедуры закрытия месяца в рабочем месте Оформление передач и возвратов (раздел Финансовый результат и контроллинг — Закрытие месяца) программа автоматически формирует документы, такие как Реализация товаров в другую организацию или Возврат товаров между организациями. Автоматическое заполнение цен в этих документах жестко зависит от настроек правил передачи товаров и зарегистрированных в системе цен.

Если при создании документа колонка Цена остается пустой, это означает, что для выбранного вида цен (например, «Себестоимость» или «Трансфертная цена») на дату документа в системе не установлены цены для возвращаемой номенклатуры. Программа не находит подходящих записей в регистрах и оставляет поле незаполненным.


Способ 1. Ручная регистрация цен документом «Установка цен номенклатуры»

Если для расчетов между вашими организациями используется фиксированная стоимость или вы хотите быстро решить проблему «здесь и сейчас», необходимо вручную зарегистрировать цены для проблемных позиций. Проанализируем этот процесс по шагам:

  1. Перейдем в раздел CRM и маркетинг — Цены и скидки — Цены (прайс-лист).
  2. Нажмем кнопку Создать или воспользуемся кнопкой Изменить цены для создания нового документа Установка цен номенклатуры.
  3. В открывшейся форме выберем нужный Вид цены (в случае автора темы это вид цен с наименованием «Себестоимость»).
  4. Добавим в табличную часть товары, по которым оформляется возврат между организациями, и укажем для них актуальные цены.
  5. Проведем документ Установка цен номенклатуры. Дата документа обязательно должна быть меньше или равна дате оформляемого возврата товаров.

После проведения документа вернемся в рабочее место оформления передач и перезаполним или пересоздадим документ Возврат товаров между организациями. Цена заполнится автоматически.


Способ 2. Автоматический расчет цен по себестоимости (Рекомендуемый подход)

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

  1. Откроем справочник CRM и маркетинг — Настройки и справочники — Цены и скидки — Виды цен.
  2. Найдем и откроем карточку вида цены, используемого для передач (например, «Себестоимость»).
  3. Установим флаг «Используется при передаче между организациями». Это критически важная настройка: без этого признака система проигнорирует вид цены при автозаполнении межфирменных документов.
  4. В поле Способ задания цены выберем значение «По себестоимости» или «Произвольный запрос к данным ИБ» (например, по схеме компоновки данных Себестоимость с дополнительными расходами).
  5. Сохраним изменения.

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


Способ 3. Проверка правил передачи и договоров между организациями

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

  1. Перейдем в Финансовый результат и контроллинг — Настройки передачи товаров между организациями.
  2. В шахматной сетке найдем пересечение организации-владельца и организации-продавца. Убедимся, что для данного направления передачи выбран правильный вид цены.
  3. Если в системе включена опция использования договоров между организациями, откроем соответствующий Договор между организациями и перейдем на вкладку Условия передач. Убедимся, что там указан верный вид цены, и этот договор действует на дату совершения операции.

Технические нюансы: почему не срабатывает точка останова при отладке?

При попытке разобраться в коде конфигурации (например, анализируя процедуры заполнения табличной части) разработчики часто сталкиваются с тем, что расставленные точки останова игнорируются системой. Выясним причину этого поведения.

Процедура автоматического формирования передач и возвратов, вызываемая из помощника закрытия месяца, практически всегда выполняется в контексте фонового задания на сервере 1С. По умолчанию обычный отладчик не перехватывает управление в фоновых заданиях.

Чтобы точка останова сработала, выполните следующие действия в Конфигураторе:

  1. В главном меню выберите пункт Отладка — Подключение....
  2. В открывшемся окне нажмите кнопку Настройка... в правом верхнем углу.
  3. В списке «Автоматическое подключение» установите флаг напротив пункта Фоновые задания.
  4. Нажмите ОК для сохранения настроек.

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

Для примера рассмотрим, как выглядит типовой запрос получения остатков к возврату в модуле менеджера документа, где на первом этапе собираются только количественные данные, а расчет стоимостных показателей происходит позже:


Процедура ЗаполнитьТоварыПоОстаткамКВозврату(Объект, НачалоПериода = Неопределено, КонецПериода = Неопределено) Экспорт
    Запрос = Новый Запрос("
        |ВЫБРАТЬ
        |    ЗаПериод.АналитикаУчетаНоменклатуры        КАК АналитикаУчетаНоменклатуры,
        |    ВидыЗапасов.Ссылка                        КАК ВидЗапасов,
        |    ЗаПериод.НомерГТД                        КАК НомерГТД,
        |    ЗаПериод.ВозвращеноОборот                КАК ВозвращеноНаДату,
        |    ЕСТЬNULL(НаСейчас.ВозвращеноОстаток,0)    КАК ВозвращеноНаСейчас
        |ПОМЕСТИТЬ КВозврату
        |ИЗ
        |    РегистрНакопления.ТоварыОрганизацийКПередаче.ОстаткиИОбороты(&НачГраница, &КонГраница, Период, ,
        |        ОрганизацияВладелец = &ОрганизацияПолучатель
        |        И АналитикаУчетаНоменклатуры.Склад = &Склад) КАК ЗаПериод
        |
        |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ
        |        Справочник.ВидыЗапасов КАК ВидыЗапасов
        |    ПО
        |        ЗаПериод.ВидЗапасовПродавца = ВидыЗапасов.Ссылка
        |...
        |;
        |ВЫБРАТЬ
        |    Количество,
        |    Аналитика.Номенклатура                    КАК Номенклатура,
        |    Аналитика.Характеристика                КАК Характеристика,
        |    Аналитика.Серия                            КАК Серия
        |...
        |ПО
        |    КВозврату.АналитикаУчетаНоменклатуры = Аналитика.КлючАналитики");
КонецПроцедуры

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

← На главную