При работе с внешними поставщиками мы часто сталкиваемся с ситуацией, когда одно и то же изделие или товар называется в нашей базе и в базе партнера совершенно по-разному. Например, в вашей системе позиция учитывается как "гравицапа-15", а ваш поставщик знает ее исключительно как "spaseshatle1508". Другой контрагент поставляет этот же товар под именем "транквилизатор НЮ".
Когда мы оформляем документ Заказ поставщику, нам важно, чтобы поставщик получил заявку со своими собственными наименованиями товаров. Это исключает путаницу, ускоряет обработку заказов и снижает риск ошибок при поставке. В этой статье мы подробно разберем, как решить эту задачу в программе 1С:Управление нашей фирмой (1С:УНФ) как стандартными средствами, так и с помощью кастомизации системы.
Прежде чем перейти к настройке, давайте разберем важное методологическое различие, на которое часто натыкаются пользователи. В программе 1С:УНФ сосуществуют два похожих механизма, выполняющих разные функции:
Выяснив разницу в архитектуре программы, перейдем к пошаговой настройке штатного функционала в современных релизах 1С:УНФ.
Рассмотрим, как задействовать встроенные возможности программы без изменения кода.
Шаг 1. Включение функциональной опции
Для начала нам необходимо активировать ведение номенклатуры поставщиков в настройках программы. Для этого выполним следующие действия:
Шаг 2. Сопоставление номенклатуры
Теперь нам нужно связать нашу внутреннюю позицию гравицапа-15 с наименованиями в базах поставщиков. Сделать это можно двумя способами:
гравицапа-15, перейдем по ссылке Номенклатура поставщиков и создадим записи для каждого контрагента, указав его внутренний артикул и наименование (например, spaseshatle1508 для Поставщика 1).Шаг 3. Заполнение документа «Заказ поставщику»
Давайте создадим документ Заказ поставщику и настроим видимость необходимых полей:
Шаг 4. Печать и отправка заказа по данным поставщика
Это ключевой момент. Чтобы поставщик увидел именно свои наименования товаров, при отправке документа на печать или по электронной почте необходимо выбрать специализированную печатную форму:
👉 Выбираем шаблон печати Заказ поставщику по данным поставщика.
В сформировавшемся документе (печатной форме или PDF-файле) колонка с наименованием товара будет полностью заменена на данные вашего контрагента (например, spaseshatle1508). Задача решена стандартными средствами!
Если вы работаете на устаревшей версии 1С:УНФ, где полноценный механизм сопоставления номенклатуры поставщиков в заказах еще не был реализован до конца, либо если стандартный механизм по какой-то причине вам не подходит, можно воспользоваться проверенным техническим решением через расширение конфигурации.
Идея этого метода заключается в использовании стандартного реквизита табличной части Содержание. В 1С:УНФ при формировании печатных форм система проверяет: если поле Содержание заполнено, то на печать выводится именно этот текст, а не стандартное наименование из карточки номенклатуры.
Мы можем написать небольшое расширение, которое при выборе товара в документе Заказ поставщику будет автоматически искать сопоставленное имя у контрагента и записывать его в колонку Содержание. Рассмотрим пример реализации такого кода:
&НаСервереБезКонтекста
Функция ПолучитьНоменклатуруПоставщикаНаСервере(ВнутренняяНоменклатура, ТекущийПоставщик)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ TOP 1
| НоменклатураПоставщиков.Наименование КАК НаименованиеПоставщика
|ИЗ
| Справочник.НоменклатураПоставщиков КАК НоменклатураПоставщиков
|ГДЕ
| НоменклатураПоставщиков.Номенклатура = &Номенклатура
| И НоменклатураПоставщиков.Владелец = &Поставщик";
Запрос.УстановитьПараметр("Номенклатура", ВнутренняяНоменклатура);
Запрос.УстановитьПараметр("Поставщик", ТекущийПоставщик);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.НаименованиеПоставщика;
КонецЕсли;
Возврат "";
КонецФункции
После этого мы перехватываем событие изменения номенклатуры в форме документа с помощью расширения:
&НаКлиенте
Процедура Расш_ЗапасыНоменклатураПриИзмененииПосле(Элемент)
СтрокаТаблицы = Элементы.Запасы.ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) И ЗначениеЗаполнено(Объект.Контрагент) Тогда
ИмяПоставщика = ПолучитьНоменклатуруПоставщикаНаСервере(СтрокаТаблицы.Номенклатура, Объект.Контрагент);
Если ЗначениеЗаполнено(ИмяПоставщика) Тогда
// Заполняем Содержание, чтобы именно оно ушло на печать поставщику
СтрокаТаблицы.Содержание = ИмяПоставщика;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
При таком подходе во всех ваших внутренних отчетах, складских движениях и анализе продаж товар продолжит фигурировать под вашим удобным именем гравицапа-15. Однако при генерации печатной формы заказа контрагенту поле Содержание перекроет стандартное имя, и поставщик увидит привычный ему текст.
Выбирайте наиболее удобный для вас вариант — встроенный современный механизм или гибкую доработку через расширение — и делайте закупки удобными и безошибочными!