Что делает процедура ПоискСоответсвиеНоменклатур в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Что делает процедура ПоискСоответсвиеНоменклатур в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38355
      Фото аватараOdineski
      Участник

        Объясни что делает эта процедура

        Процедура ПоискСоответсвиеНоменклатур(КодНоменклатурыПокупателя, Номенклатура, Количество, КоличествоЗаказа)

        Запрос = Новый Запрос;
        Запрос.Текст =
        «ВЫБРАТЬ
        | СоответствиеНоменклатурСПокупателем.Делить,
        | СоответствиеНоменклатурСПокупателем.Умножить,
        | СоответствиеНоменклатурСПокупателем.Число,
        | СоответствиеНоменклатурСПокупателем.Номенклатура
        |ИЗ
        | РегистрСведений.СоответствиеНоменклатурСПокупателем КАК СоответствиеНоменклатурСПокупателем
        |ГДЕ
        | СоответствиеНоменклатурСПокупателем.КодНоменклатурыПокупателя = &КодНоменклатурыПокупателя»;

        Запрос.УстановитьПараметр(«КодНоменклатурыПокупателя», КодНоменклатурыПокупателя);

        РезультатЗапроса = Запрос.Выполнить();

        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

        Если Запрос.Выполнить().Пустой() Тогда
        Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодНоменклатурыПокупателя);
        Количество = КоличествоЗаказа;
        Иначе

        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        Если ВыборкаДетальныеЗаписи.Умножить Тогда
        Количество = КоличествоЗаказа * ВыборкаДетальныеЗаписи.Число;
        ИначеЕсли ВыборкаДетальныеЗаписи.Делить Тогда
        Количество = Окр(КоличествоЗаказа / ВыборкаДетальныеЗаписи.Число, 2);
        Иначе
        Количество = КоличествоЗаказа;
        КонецЕсли;

        КонецЦикла;
        КонецЕсли;

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

      • #38356
        bot_avaOdin — Одинэсник
        Участник

          Процедура ПоискСоответсвиеНоменклатур выполняет поиск и преобразование номенклатуры покупателя в номенклатуру вашей базы с учётом возможных коэффициентов пересчёта количества.

          Подробно:

          1. Входные параметры:
          КодНоменклатурыПокупателя — код товара у покупателя (внешний код).
          Номенклатура — переменная, в которую будет записан найденный элемент справочника «Номенклатура».
          Количество — переменная для результата пересчёта количества.
          КоличествоЗаказа — исходное количество из заказа покупателя.

          2. Что делает процедура:

          — Выполняет запрос к регистру сведений СоответствиеНоменклатурСПокупателем, где хранятся связи между кодами номенклатуры покупателя и вашей номенклатурой, а также параметры пересчёта количества (Делить, Умножить, Число).

          — Если по коду покупателя в регистре нет записи (Пустой()), то:
          — Пытается найти номенклатуру в справочнике «Номенклатура» по коду покупателя напрямую.
          — Количество просто приравнивает к КоличествоЗаказа без изменений.

          — Если запись есть, то для каждой найденной строки:
          — В переменную Номенклатура записывается связанная номенклатура из регистра.
          — Если установлен флаг Умножить, то Количество = КоличествоЗаказа * Число.
          — Если установлен флаг Делить, то Количество = КоличествоЗаказа / Число с округлением до 2 знаков.
          — Если ни один флаг не установлен, Количество просто равно КоличествоЗаказа.

          3. Итог:
          — Процедура позволяет по внешнему коду номенклатуры покупателя получить внутреннюю номенклатуру и пересчитать количество с учётом коэффициентов умножения или деления.
          — Это удобно, если у покупателя своя система кодирования товаров и свои единицы измерения, отличающиеся от вашей базы.

          Если кратко:
          Процедура ищет соответствие номенклатуры покупателя в вашем справочнике и корректирует количество заказа с учётом коэффициентов пересчёта. Если соответствия нет, пытается найти номенклатуру по коду напрямую и количество не меняет.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С