База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Что делает процедура ПоискСоответсвиеНоменклатур в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
8 августа 2026 в 8:29 #38355
Объясни что делает эта процедура
Процедура ПоискСоответсвиеНоменклатур(КодНоменклатурыПокупателя, Номенклатура, Количество, КоличествоЗаказа)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СоответствиеНоменклатурСПокупателем.Делить,
| СоответствиеНоменклатурСПокупателем.Умножить,
| СоответствиеНоменклатурСПокупателем.Число,
| СоответствиеНоменклатурСПокупателем.Номенклатура
|ИЗ
| РегистрСведений.СоответствиеНоменклатурСПокупателем КАК СоответствиеНоменклатурСПокупателем
|ГДЕ
| СоответствиеНоменклатурСПокупателем.КодНоменклатурыПокупателя = &КодНоменклатурыПокупателя»;Запрос.УстановитьПараметр(«КодНоменклатурыПокупателя», КодНоменклатурыПокупателя);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если Запрос.Выполнить().Пустой() Тогда
Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодНоменклатурыПокупателя);
Количество = КоличествоЗаказа;
ИначеПока ВыборкаДетальныеЗаписи.Следующий() Цикл
Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Если ВыборкаДетальныеЗаписи.Умножить Тогда
Количество = КоличествоЗаказа * ВыборкаДетальныеЗаписи.Число;
ИначеЕсли ВыборкаДетальныеЗаписи.Делить Тогда
Количество = Окр(КоличествоЗаказа / ВыборкаДетальныеЗаписи.Число, 2);
Иначе
Количество = КоличествоЗаказа;
КонецЕсли;КонецЦикла;
КонецЕсли;КонецПроцедуры
-
8 августа 2026 в 8:29 #38356
Процедура ПоискСоответсвиеНоменклатур выполняет поиск и преобразование номенклатуры покупателя в номенклатуру вашей базы с учётом возможных коэффициентов пересчёта количества.
Подробно:
1. Входные параметры:
—КодНоменклатурыПокупателя— код товара у покупателя (внешний код).
—Номенклатура— переменная, в которую будет записан найденный элемент справочника «Номенклатура».
—Количество— переменная для результата пересчёта количества.
—КоличествоЗаказа— исходное количество из заказа покупателя.2. Что делает процедура:
— Выполняет запрос к регистру сведений
СоответствиеНоменклатурСПокупателем, где хранятся связи между кодами номенклатуры покупателя и вашей номенклатурой, а также параметры пересчёта количества (Делить,Умножить,Число).— Если по коду покупателя в регистре нет записи (
Пустой()), то:
— Пытается найти номенклатуру в справочнике «Номенклатура» по коду покупателя напрямую.
— Количество просто приравнивает кКоличествоЗаказабез изменений.— Если запись есть, то для каждой найденной строки:
— В переменнуюНоменклатуразаписывается связанная номенклатура из регистра.
— Если установлен флагУмножить, тоКоличество = КоличествоЗаказа * Число.
— Если установлен флагДелить, тоКоличество = КоличествоЗаказа / Числос округлением до 2 знаков.
— Если ни один флаг не установлен,Количествопросто равноКоличествоЗаказа.3. Итог:
— Процедура позволяет по внешнему коду номенклатуры покупателя получить внутреннюю номенклатуру и пересчитать количество с учётом коэффициентов умножения или деления.
— Это удобно, если у покупателя своя система кодирования товаров и свои единицы измерения, отличающиеся от вашей базы.—
Если кратко:
Процедура ищет соответствие номенклатуры покупателя в вашем справочнике и корректирует количество заказа с учётом коэффициентов пересчёта. Если соответствия нет, пытается найти номенклатуру по коду напрямую и количество не меняет.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.