Как настроить регистрацию цен поставщиков при приеме документов по ЭДО в 1С:Управление торговлей 11?

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

При работе с электронным документооборотом (ЭДО) в программе «1С:Управление торговлей 11» (а также в смежных конфигурациях «1С:ERP» и «1С:Комплексная автоматизация») пользователи часто сталкиваются с неприятной особенностью. При создании документа Приобретение товаров и услуг напрямую из ЭДО на основании входящего УПД реквизит Соглашение автоматически не заполняется. Если же выбрать соглашение вручную, система предлагает перезаполнить цены. При согласии цены сбрасываются в ноль, а при отказе — цены остаются, но колонка Вид цены в табличной части оказывается пустой, из-за чего автоматическая регистрация новых цен поставщика становится невозможной.

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

Почему возникает эта проблема: техническая суть процесса

Для начала выясним причину такого поведения конфигурации. Регистрация цен поставщиков в системе 1С происходит в момент проведения документа Приобретение товаров и услуг (при условии, что включена соответствующая опция). Запись данных производится в регистр сведений Цены номенклатуры поставщиков. Этот регистр имеет ключевое измерение — Вид цены поставщика.

Когда документ создается автоматически на основании входящего пакета ЭДО, программа переносит текстовые и числовые данные из файла (номенклатуру, количество, цену, сумму). Но она не всегда может сопоставить соглашение об условиях закупок, поскольку у одного контрагента в базе может быть создано несколько действующих соглашений или договоров.

Когда вы открываете созданный документ и вручную выбираете Соглашение, платформа 1С отрабатывает стандартный алгоритм изменения реквизита и выдает диалоговое окно с вопросом: «Перезаполнить цены по соглашению?». Здесь у пользователя есть два пути, и оба ведут к трудностям:

  1. Вы соглашаетесь («Перезаполнить»): Система пытается найти в базе ранее зарегистрированные цены по выбранному соглашению на дату документа и подставить их в табличную часть. Если этот вид цен ранее не регистрировался или цены поставщика изменились, ваши актуальные цены из ЭДО затираются (обнуляются), и их приходится вводить вручную.
  2. Вы отказываетесь («Не перезаполнять»): Программа сохраняет те цены, которые пришли из электронного документа (что нам и нужно). Однако при этом срабатывает защитный алгоритм платформы: раз пользователь отказался перезаполнять цены по соглашению, программа оставляет цены «как есть», но очищает (или оставляет незаполненной) колонку Вид цены в табличной части Товары.

Следствие: Так как колонка Вид цены пуста, проведение документа с установленным флагом Регистрировать цены поставщика автоматически не дает никакого результата. Программа просто «не понимает», по какому именно виду цен (например, «Оптовая закупка» или «Базовый прайс-лист контрагента») нужно сделать запись в регистр сведений.

Рассмотрим подробнее, как решить эту проблему различными способами.

---

Способ 1. Групповое заполнение вида цены (быстрое решение без программирования)

Если документов немного и вам нужно оперативно провести документ с сохранением цен из ЭДО и успешной регистрацией цен в базе, воспользуйтесь штатным механизмом группового изменения строк.

Разберем этот процесс по шагам:

  1. Откройте созданный из ЭДО документ Приобретение товаров и услуг.
  2. В поле Соглашение выберите нужное соглашение с поставщиком вручную.
  3. В появившемся окне с вопросом о перезаполнении цен обязательно нажмите кнопку «Не перезаполнять». Цены, пришедшие из ЭДО, останутся нетронутыми.
  4. Перейдите к табличной части Товары.
  5. Выделите абсолютно все строки в таблице. Для этого нажмите левой кнопкой мыши на любую строку и воспользуйтесь комбинацией клавиш Ctrl + A (все строки окрасятся в синий цвет).
  6. Нажмите на кнопку «Заполнить», расположенную на панели управления прямо над табличной частью (в некоторых релизах нужно нажать правой кнопкой мыши на выделенные строки для вызова контекстного меню).
  7. В выпадающем меню выберите команду «Заполнить вид цены в выделенных строках...» (или аналогичную команду «Установить вид цены...»).
  8. В открывшемся небольшом окне выберите нужный вид цены, который привязан к вашему соглашению с этим поставщиком. Он мгновенно пропишется во всех строках табличной части.
  9. Перейдите на вкладку Дополнительно и убедитесь, что установлен флаг Регистрировать цены поставщика автоматически.
  10. Проведите документ. Цены успешно запишутся в систему.

---

Способ 2. Автоматическая подстановка Соглашения при загрузке из ЭДО

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

Проанализируем необходимые настройки:

  1. Перейдите в раздел Закупки — НСИ закупок — Соглашения с поставщиками. Найдите соглашение с вашим контрагентом.
  2. Убедитесь, что для данного поставщика создано только одно действующее индивидуальное соглашение с установленным статусом Действует. Если у вас в базе несколько действующих соглашений на одного и того же контрагента, система 1С при загрузке ЭДО физически не сможет определить, какое из них применить, и оставит поле пустым.
  3. Если учет ведется в разрезе договоров, перейдите в настройки ЭДО с конкретным контрагентом: откройте карточку контрагента, нажмите кнопку ЭДО — Настройки отправки (или воспользуйтесь разделом Администрирование — Обмен электронными документами — Настройки ЭДО).
  4. Активируйте опцию учета по договорам и жестко свяжите идентификатор участника ЭДО с конкретным договором в 1С.
  5. В самом договоре или соглашении укажите, что данный документ является основным (по умолчанию) для расчетов с этим контрагентом.

При соблюдении этих условий входящий документ ЭДО сразу сформируется с заполненным соглашением, корректным видом цен и сохранит все цены поставщика, указанные в электронном УПД.

---

Способ 3. Предварительная настройка параметров Соглашения

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

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

---

Способ 4. Использование механизма расширений (автоматизация для разработчиков)

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

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

Примерный фрагмент кода для реализации в расширении формы документа:


&После("СоглашениеПриИзмененииНаКлиенте")
Процедура Расш_СоглашениеПриИзмененииНаКлиенте(Элемент)
    
    // Получаем объект документа на сервере для обхода строк
    ОбъектДокумента = РеквизитФормыВЗначение("Объект");
    
    // Проверяем, заполнено ли соглашение и есть ли в нем вид цены
    Если ЗначениеЗаполнено(ОбъектДокумента.Соглашение) Тогда
        
        ВидЦеныИзСоглашения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектДокумента.Соглашение, "ВидЦеныПоставщика");
        
        Если ЗначениеЗаполнено(ВидЦеныИзСоглашения) Тогда
            // Проходим по строкам и заполняем незаполненные виды цен, сохраняя текущие цены
            Для Каждого СтрокаТЧ Из ОбъектДокумента.Товары Цикл
                Если Не ЗначениеЗаполнено(СтрокаТЧ.ВидЦены) Тогда
                    СтрокаТЧ.ВидЦены = ВидЦеныИзСоглашения;
                КонецЕсли;
            КонецЦикла;
            
            // Копируем измененные данные обратно в реквизит формы
            ЗначениеВРеквизитФормы(ОбъектДокумента, "Объект");
        КонецЕсли;
        
    КонецЕсли;

КонецПроцедуры

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

← На главную