В процессе снабжения и закупок торговые и производственные предприятия часто сталкиваются с ситуацией, когда один и тот же товар поставляется разными контрагентами под отличающимися наименованиями и артикулами. Например, для вашей компании позиция называется «Болт М8х20 оцинкованный», один поставщик отгружает его как «Винт с шестигранной головкой 8*20», а другой — «Крепеж оцинкованный М8». Создавать под каждое название отдельную карточку в справочнике Номенклатура категорически не рекомендуется, так как это приведет к дублированию позиций, хаосу на складах и невозможности корректно рассчитать потребность в материалах.
В этой статье мы подробно разберем, как в конфигурации 1С:Управление производственным предприятием (релиз 1.3) настроить связь одной внутренней номенклатурной позиции с неограниченным количеством наименований и артикулов ваших поставщиков. Мы рассмотрим архитектуру этого механизма, исправим типичные ошибки пользователей и разберем практические сценарии применения этих данных.
В отличие от современных конфигураций (таких как 1С:ERP или Комплексная автоматизация 2), где для сопоставления используется подчиненный справочник, в 1С:УПП 1.3 за это отвечает специальный регистр сведений — Номенклатура контрагентов. Этот регистр является периодическим и независимым, что позволяет гибко сопоставлять внутренние карточки с данными внешних контрагентов.
Рассмотрим структуру этого регистра подробнее, чтобы понять логику его работы. Регистр содержит следующие ключевые поля (измерения), определяющие уникальность каждой записи:
Контрагенты (нашего поставщика или покупателя).Сопутствующая информация от поставщика хранится в ресурсах и реквизитах записи:
На форумах часто встречается жалоба пользователей: «Пытаюсь записать контрагента в номенклатуру, а система ругается при записи и не дает сохранить». Проанализируем причину этой ошибки.
Ошибка уникальности («Запись с такими ключевыми полями существует!») возникает только в одном случае: если вы пытаетесь для одного и того же контрагента и одной и той же нашей номенклатурной позиции (с одинаковой характеристикой) создать вторую запись сопоставления. Платформа 1С физически не может хранить две разные записи с абсолютно одинаковым набором ключевых полей (Контрагент + Номенклатура).
Если же вы сопоставляете нашу одну карточку товара с разными поставщиками (например, Поставщик А и Поставщик Б), система без каких-либо возражений запишет обе строки. Каждая из них будет уникальной за счет разного значения в поле Контрагент.
Выясним, как быстро получить доступ к заполнению сопоставлений в интерфейсе программы. Для этого не требуется включать какие-либо функциональные опции или «галочки» в настройках параметров учета — механизм активен по умолчанию. Существует два удобных способа ввода информации.
Номенклатура и откроем карточку нужного товара.Контрагенты и выберем нужного поставщика.Простое заполнение регистра не меняет отображение номенклатуры в стандартных складских отчетах (там всегда выводится наше единое внутреннее наименование для сохранения порядка в учете). Однако эти данные крайне полезны при автоматизации смежных процессов. Рассмотрим основные сценарии их использования.
При формировании документа «Заказ поставщику» хорошим тоном является отправка спецификации с названиями товаров, к которым привык сам поставщик. Для реализации этой возможности мы можем использовать встроенный механизм или доработать печатную форму (например, М-4 или Заказ поставщику). С помощью простого запроса к регистру сведений Номенклатура контрагентов система заменяет наши наименования на наименования партнера в печатном листе.
Проанализируем пример кода запроса, который позволяет быстро получить данные сопоставления для вывода на печать:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента КАК НаименованиеПоставщика,
| НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента КАК АртикулПоставщика
|ИЗ
| РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
|ГДЕ
| НоменклатураКонтрагентов.Номенклатура = &Номенклатура
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";
Запрос.УстановитьПараметр("Номенклатура", ВыбраннаяНоменклатура);
Запрос.УстановитьПараметр("Контрагент", ВыбранныйПоставщик);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
НаименованиеДляПечати = Выборка.НаименованиеПоставщика;
АртикулДляПечати = Выборка.АртикулПоставщика;
КонецЕсли;
Если ваше предприятие использует встроенный сервис 1С-ЭДО, то при получении входящих электронных накладных от поставщиков система будет обращаться именно к регистру Номенклатура контрагентов. Сопоставив позиции один раз вручную, все последующие электронные документы от этого поставщика будут автоматически распознаваться программой и подставляться в документы поступления без участия оператора.
При использовании внешних обработок для загрузки прайсов или приходных накладных из файлов Excel/XML, регистр служит ключевым связующим звеном. Обработка считывает наименование или артикул из файла, ищет совпадение в регистре Номенклатура контрагентов по данному контрагенту и автоматически определяет, какую именно карточку товара из нашего справочника нужно подставить в документ Поступление товаров и услуг.
Для понимания развития платформы сравним архитектурные подходы устаревших и современных систем:
Номенклатура партнеров. Для активации возможности требуется перейти в настройки раздела закупок и включить функциональную опцию Номенклатура поставщиков. Этот подход позволяет строить сложную иерархию товаров поставщика, регистрировать прайс-листы индивидуально и связывать несколько внешних позиций с одной нашей внутренней карточкой в рамках сложных бизнес-схем.Таким образом, несмотря на солидный возраст конфигурации 1С:УПП 1.3, ее встроенный функционал позволяет в полной мере решить задачу ведения сопоставления номенклатуры нескольких поставщиков стандартными средствами без привлечения программистов для доработки структуры базы данных.