Как в 1С:УНФ отправлять заказы поставщикам с их наименованиями номенклатуры?

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

При работе с внешними поставщиками мы часто сталкиваемся с ситуацией, когда одно и то же изделие или товар называется в нашей базе и в базе партнера совершенно по-разному. Например, в вашей системе позиция учитывается как "гравицапа-15", а ваш поставщик знает ее исключительно как "spaseshatle1508". Другой контрагент поставляет этот же товар под именем "транквилизатор НЮ".

Когда мы оформляем документ Заказ поставщику, нам важно, чтобы поставщик получил заявку со своими собственными наименованиями товаров. Это исключает путаницу, ускоряет обработку заказов и снижает риск ошибок при поставке. В этой статье мы подробно разберем, как решить эту задачу в программе 1С:Управление нашей фирмой (1С:УНФ) как стандартными средствами, так и с помощью кастомизации системы.

Различие между «Номенклатурой контрагентов» и «Номенклатурой поставщиков»

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

  1. Номенклатура контрагентов (подсистема ЭДО): этот регистр используется преимущественно для сопоставления позиций при обмене электронными документами через 1С-ЭДО. Когда вам приходит входящая накладная (УПД) от поставщика, программа обращается к этому регистру, чтобы понять, какой вашей внутренней позиции соответствует товар отправителя.
  2. Номенклатура поставщиков (подсистема закупок): это отдельный справочник, предназначенный для хранения прайс-листов контрагентов, загрузки их остатков и, самое главное, для оформления документов закупки по наименованиям поставщиков. Именно этот механизм необходим для решения нашей задачи.

Выяснив разницу в архитектуре программы, перейдем к пошаговой настройке штатного функционала в современных релизах 1С:УНФ.

Вариант 1. Настройка и использование штатного механизма номенклатуры поставщиков

Рассмотрим, как задействовать встроенные возможности программы без изменения кода.

Шаг 1. Включение функциональной опции

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

  1. Перейдем в раздел Настройки, затем выберем пункт Еще больше возможностей.
  2. В открывшемся окне перейдем в подраздел Закупки.
  3. Установим флажок напротив опции Номенклатура поставщиков. Сохраним настройки.

Шаг 2. Сопоставление номенклатуры

Теперь нам нужно связать нашу внутреннюю позицию гравицапа-15 с наименованиями в базах поставщиков. Сделать это можно двумя способами:

Шаг 3. Заполнение документа «Заказ поставщику»

Давайте создадим документ Заказ поставщику и настроим видимость необходимых полей:

  1. В созданном документе выберем нужного поставщика.
  2. На панели табличной части Запасы нажмем на кнопку Настройка (иконка шестеренки).
  3. В списке доступных колонок установим галочку напротив поля Номенклатура поставщика. Нажмем "ОК".
  4. Теперь при заполнении табличной части мы можем использовать стандартный подбор или кнопку Подобрать по номенклатуре поставщика. Программа автоматически отобразит сопоставленные наименования и подставит их в соответствующую колонку рядом с нашей внутренней номенклатурой.

Шаг 4. Печать и отправка заказа по данным поставщика

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

👉 Выбираем шаблон печати Заказ поставщику по данным поставщика.

В сформировавшемся документе (печатной форме или PDF-файле) колонка с наименованием товара будет полностью заменена на данные вашего контрагента (например, spaseshatle1508). Задача решена стандартными средствами!

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

Если вы работаете на устаревшей версии 1С:УНФ, где полноценный механизм сопоставления номенклатуры поставщиков в заказах еще не был реализован до конца, либо если стандартный механизм по какой-то причине вам не подходит, можно воспользоваться проверенным техническим решением через расширение конфигурации.

Идея этого метода заключается в использовании стандартного реквизита табличной части Содержание. В 1С:УНФ при формировании печатных форм система проверяет: если поле Содержание заполнено, то на печать выводится именно этот текст, а не стандартное наименование из карточки номенклатуры.

Мы можем написать небольшое расширение, которое при выборе товара в документе Заказ поставщику будет автоматически искать сопоставленное имя у контрагента и записывать его в колонку Содержание. Рассмотрим пример реализации такого кода:


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

После этого мы перехватываем событие изменения номенклатуры в форме документа с помощью расширения:


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

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

Выбирайте наиболее удобный для вас вариант — встроенный современный механизм или гибкую доработку через расширение — и делайте закупки удобными и безошибочными!

← На главную