Как правильно указать конкретные показатели товара
Поставщик обязан указать в первой части аукционной заявки точные характеристики предлагаемых к поставке товаров. В этой статье раскроем смысл этого понятия и выясним, какие подводные камни оно скрывает.
Что такое конкретные показатели в заявке
В аукционной документации должно быть объективное описание приобретаемой продукции (ч. 1 ст. 33 44-ФЗ). Сюда относятся величины качества, технические, функциональные и эксплуатационные свойства, а также товарные знаки и т.п. Если речь не идет о закупке совместимых или запасных товаров, то каждое наименование должно сопровождаться словами «или эквивалент». При этом заказчик указывает границы эквивалентности в виде различных вариантов или диапазонов значений.
Номенклатура показателей качества конкретной продукции устанавливается государственными стандартами (ГОСТ).
Инструкция по заполнению конкретных показателей
Документация об электронном аукционе должна содержать инструкцию по составлению заявки (п. 2 ч. 1 ст. 64 44-ФЗ), в том числе по описанию точных характеристик продукции. Здесь заказчик может предложить оформить сведения в виде таблицы.
Она является рекомендуемой, а не обязательной, поэтому участники оставляют за собой право составить документ так, как им удобно. Отказать в допуске из-за этого заказчик не имеет права.
В инструкции значения эквивалентности часто делят на несколько видов:
Далее заказчик дает разъяснения по каждому пункту отдельно, как, например, на иллюстрации.
Также в инструкции часто присутствует запрет на использование некоторых слов.
Очень важно подробно изучить инструкцию, так как заказчики могут по-разному интерпретировать смысл конкретных значений.
Ошибки в заполнении конкретных показателей
По причине неоднозначности некоторых свойств товара, часто возникают споры между заказчиком и участником. При несогласии с результатом рассмотрения первых частей заявок поставщик может пожаловаться в ФАС на неправомерное отклонение. Если же ответ антимонопольного органа не устроит одну из сторон, есть возможность обжаловать его в Арбитражном суде.
Если обратиться к практике ФАС по 44 ФЗ, конкретные показатели часто вызывают разногласия, а итоговое решение зависит от конкретного случая. Так, например, в некоторых заявках указание свойства товара в диапазоне значений будет являться конкретным свойством, если можно доказать, что этого требует специфика товара. Здесь источники, такие как ГОСТ, официальный сайт производителя или технический регламент, также будут содержать диапазон. Отказ в допуске в этом случае будет незаконным.
В остальных случаях нужно указывать точные признаки, даже если в нормативной документации есть разброс.
Если предоставленные сведения противоречат инструкции, они считаются недостоверными, а значит заявку могут отклонить на основании ч. 4 ст. 67 44-ФЗ.
Конкретные показатели товара: образец заполнения
Приведем в качестве примера конкретных показателей товара 44 ФЗ образец. Как видно из таблицы, из предложенных в документации диапазонов и вариантов выбрано одно значение в установленных рамках, а также удалены слова, допускающие неточное толкование («должны», «должны быть»).
Инструкция по заполнению конкретных показателей товара
Конкретные показатели — это сведения о товаре, который собирается поставлять или использовать в работе участник закупок. Если их неправильно заполнить, то заявку не рассмотрят и не допустят до торгов.
Общие положения
В документации о закупке, а точнее, в техническом задании, госзаказчик описывает товар с разных сторон. Он указывает качественные, технические, функциональные и эксплуатационные свойства. Как правило, это вторая часть документации. Чтобы объяснить потенциальным поставщикам, что ему нужно, госзаказчик может указать:
Но такими действиями он будет ограничивать конкуренцию. Поэтому каждое упоминание нужно сопровождать фразой «или эквивалент». Это значит, что можно поставить товар, который хочет заказчик, или аналогичный. Исключение сделали для закупок совместимых товаров и запасных частей. В таких случаях можно требовать конкретную марку.
Как заполнить
Эти конкретные показатели обязательно есть в закупках на поставку продукции или оказание услуг или работ, в которых используется товар. Прописываются в виде максимальных, минимальных и диапазонных значений. Участник предоставляет конкретные свойства, которые будут поставлять или использовать в работах. В процессе заполнения поможет номенклатура показателей качества конкретной продукции, установлена она в технических документах — ГОСТ, техпаспорт, ресурсы производителя и т. п. В документах о закупке, в которой нужно предоставить конкретные показатели, заказчик выкладывает инструкцию по составлению заявки (п. 2 ч. 1 ст. 64 44-ФЗ). В ней есть алгоритм заполнения точных характеристик продукции. Заказчик предлагает заполнить таблицу. Эта форма рекомендуемая. Участник сам решает, в каком виде передаст заказчику данные о конкретных показателях продукции.
№
Показатели, позволяющие определить соответствие закупаемого товара установленным заказчиком требованиям. (При этом указываются максимальные и(или) минимальные значения таких показателей, а также значения показателей, которые не могут изменяться) (сведения в настоящей графе не подлежат изменению, исправлению, дополнению и т. д.)
Конкретные показатели, соответствующие значениям, установленным документацией о таком аукционе, и указание на товарный знак (его словесное обозначение) (при наличии), знак обслуживания (при наличии), фирменное наименование (при наличии), патенты (при наличии), полезные модели (при наличии), промышленные образцы (при наличии), наименование страны происхождения товара (заполняется участником электронного аукциона)
Не допустить к торгам из-за того, что форма участника не соответствует той, которую разработал заказчик, нельзя. В инструкции все параметры делятся на такие:
Заказчик разъясняет, как нужно заполнить каждый параметр. Вот так это выглядит на практике.
В инструкции заказчики запрещают использовать слова, которые отражают неконкретный характер предложения. Такими словами могут быть: «должен», «примерно»,«допускается» и т. п.
Где найти
Образец заполнения конкретных показателей товара найдете в реестре контрактов. Заявки, которые побеждают в тендере, становятся частью контракта и публикуются в ЕИС. Вот образец конкретных показателей товара 44 ФЗ. Участник из предложенных в документации диапазонов и вариантов выбрал значение в границах, которые определил заказчик, и удалил слова, которые допускают двусмысленное значение.
Из Википедии: «Именованные параметры в языках программирования означают поддержку указания явных имен параметров в вызове функции. Вызов функции, принимающей именованные параметры, отличается от обычного вызова функции, в котором передаваемые аргументы ассоциируются с параметрами функции лишь только по их порядку в вызове функции«
Давайте посмотрим на пример:
И еще один пример на выдуманном псевдо-языке:
Комментарии
Давайте начнём с ненастоящего, но наиболее простого способа — эмуляция именованных параметров через комментарии 🙂
Этот подход весьма популярен среди Windows-разработчиков, поскольку примеры в MSDN часто снабжены такими комментариями.
Идиома «именованного параметра»
Идея происходит из стиля программирования на Java: создать прокси-класс, который будет все опциональные параметры включать в себя в виде методов. После этого мы можем использовать цепочку вызовов этих методов для задания только нужных нам параметров:
Класс OpenFile — это набор параметров, а конструктор File принимает объект этого класса. Некоторые авторы (например, здесь) утверждают, что OpenFile должен иметь только private-члены и объявить класс File дружественным. Это может иметь смысл, если вы хотите использовать какую-то более сложную логику установки параметров. Но для присвоения простых значений вполне пойдет и вышеуказанный стиль с публичными методами.
Идиома «пакета параметров»
Идея похожа на предыдущую и взята из книги Davide Di Gennaro’s Advanced C++ Metaprogramming – техника использования прокси-объектов для установки параметров через оператор присваивания (=), в итоге мы получим следующий синтаксических сахар:
За полным кодом загляните в оригинальную книгу.
Хотя техника и кажется интересной, на практике тяжело сделать её достаточно удобной и общной. В книге она вообще была представлена не решением рассматриваемой нами задачи, а примером «цепочного» вызова оператора [].
Andrzej Krzemieński опубликовал интересный пост «Интуитивный интерфейс», где предложил следующее: именованные параметры представляют собой пары компаньонов — реального значения и пустой структуры (пустые структуры разных типов нужны для выбора нужной перегруженной функции). Вот пример этого подхода из STL:
Andrzej предложил обобщить подход:
Как вы понимаете, потребуется создать некоторое количество перегруженных функций, а также вы не можете выбирать порядок параметров. К плюсам можно отнести отсутствие необходимости наличия конструкторов копирования\переноса. Передача значений по-умолчанию также работает без проблем. Из статьи: «Теги не являются идеальным решением, поскольку засоряют пространства имён перегруженными функциями, которые полезны лишь в нескольких местах их вызова»
Кроме того, один из читателей предложил хорошую идею другой реализации тегов.: std::vector v1(std::with_size(10), std::with_value(6));
Boost
Как и можно было ожидать, это довольно полная и практичная реализация. Пример:
Именованные параметры в современном С++
Последние стандарты языка С++ открывают новые двери. Давайте посмотрим, получится ли применить что-нибудь из них для решения нашей задачи.
Лямбды
Метод «цепочных вызовов» слишком многословен. Я не хочу добавлять кучу функций, возвращающих сам объект. Как на счёт определить структуру и устанавливать её члены через лямбда-функции?
Нам всё ещё нужен класс для хранения параметров, но сам подход масштабируется лучше, чем классическая идиома именованного параметра, в которой нужно явно прописать все «цепочные» функции. Ещё один вариант — сделать конструктор класса File, принимающий объект типа FileRecipe.
Как улучшить читаемость обязательных параметров? Давайте попробуем соединить данный подход с тегами:
Правда, они всё ещё позиционные. Если вы допускаете возможность получения в рантайме ошибки «обязательный параметр отсутствует» — можно использовать тип optional
Я недавно пробовал использовать данный подход для конфигурации тестов и моков. К примеру, мне нужно было создать тесты для простой игры в кости. Конфигурация и тесты раньше выглядели так:
С использованием данного подхода они могут выглядеть так:
Также мы можем использовать макрос, чтобы не повторяться в каждом тесте с вызовом одинаковых лямбд:
Использование Variadic Templates
Моя идея в следующем: я хочу использовать Variadic Templates чтобы дать пользователю возможность определять порядок параметров и опускать опциональные параметры.
Представьте два конструктора:
Объект типа File может быть создан любым из двух способов. Если вы используете второй конструктор — он просмотрит все параметры в наборе и вызовет первый конструктор с соответствующим набором параметров. Просмотр параметров и генерация кода выполняется на этапе компиляции, занимает линейное время и не влияет на затраты времени на вызов в рантайме.
Данная реализация лишь набросок, наверняка её можно улучшить.
Вот как может быть спроектирован класс:
Перед тем как показать вам работающий код, давайте проясним, что ту же самую идею мы можем применить к прокси:
Основное отличие здесь в передаче аргументов: с прокси мы получаем синтаксический сахар (оператор=), но теперь нам нужно хранить и передавать значения (не очень хорошо для не-перемещаемых/копируемых типов).
Здесь вы можете поэкспериментировать с кодом. Я начал с версии с тегами и потом перешел к прокси, поэтому там обе версии. Вы найдёте две секции под названием “PACK UTILS” (для тегов и прокси).
Вот как будет выглядеть класс:
Как вы видите, оба последних конструктора всегда вызывают «классический» конструктор для выполнения реальной работы.
Следующий кусок кода показывает, как пользователь может создать объект:
Обратите внимание на первую проблему: Clang достаточно умён, чтобы сообщить о проблеме весьма наглядно. Представим, что я забыл об обязательном параметре с названием окна, вот вывод компилятора:
Теперь вы достаточно точно знаете, что именно и где было пропущено.
Минималистичный подход с использованием std::tuple
[этот параграф написал Davide Di Gennaro]
Мы можем использовать функционал кортежей (std::tuple) для написания весьма компактной и портируемой реализации нашей задачи. Мы будем опираться на несколько простых принципов:
Вот как может выглядеть реализация этой идеи.
Раскрытие макроса CREATE_TAG(age, int) создаёт класс и глобальный объект.
Преобразовывается во что-то типа:
Обратите внимание, что мы написали:
Мы требуем r-value справа. Это сделано ради безопасности: ради повышения читабельности кода с наборами параметров вы можете захотеть присваивать константы, а не переменные.
Кроме того, мы можем использовать семантику перемещения:
В виде альтернативы мы могли бы написать:
А теперь мы напишем подходящий оператор конкатенации для наших кортежей.
Мы неявно соглашаемся с тем, что все кортежи, начинающиеся с parameter были созданы нашим кодом, так что без всякой явной валидации мы просто выбросим parameter.
Очень простая функция: проверяет, что оба кортежа имеют вид
Ну и наконец, мы напишем функцию извлечения аргумента из набора. Обратите внимание, что данная функция имеет семантику переноса (т.е. после её вызова параметр будет извлечён из набора).
Работает она следующим образом: если набора содержит parameter, тогда переменная получает значение, следующее непосредственно за ним и функция возвращает true. Иначе случается что-то плохое (мы можем выбрать — ошибка компиляции, вернуть false, сгенерировать исключение).
Чтобы сделать этот выбор возможным, функция будет выглядеть как:
и вызывать мы её будем вот так:
В виду правил работы с variadic templates, extract_from_pack знает, что набор параметров имеет форму tuple
, так что нужно проверить рекурсивно действительно ли TAG равен TAG1. Мы реализуем это направлением вызова классу:
который далее вызывает
который имеет два перегруженных варианта:
которые, если выполняется, выполняет присваивание и возвращает true или
который продолжает итерацию, вызывая снова
когда продолжение итерации невозможно — вызывается error_policy::err(…)
В виду гибкой природы наборов параметров, лучшей политикой обработки ошибком может считаться “return false” (любое более строгое поведение будет на самом деле означать обязательность каждого параметра).
Тем ни менее, если зачем-то нужно, мы можем выбрать также из вот этих двух:
Дополнительным усовершенствованием может быть проверка избыточности для таких случаев как:
Финальные заметки
Мы не обсудили рантайм-техники, вроде:
Код работает на рантайме, пытаясь достать нужные ему параметры по ходу работы, соответственно мы имеем затраты времени, ну и об ошибке вы узнаете лишь когда она возникнет. Код далёк от идеала, я привожу его лишь как «proof of concept» и не думаю, что в таком виде его можно применять в реальных проектах.
А ещё я нашел предложение добавить именованные параметры в стандарт языка С++ вот здесь. Неплохо было бы.
Технический пара́метр — физическая величина, характеризующая какое-нибудь свойство технического устройства, системы, явления или процесса. Число, характеризующее этот параметр (величину), является его значением.
Параметр — это обобщенное название определенного физического, геометрического или иного свойства устройства (процесса). Это могут быть, например, размер, скорость, напряжение и т. д. Изучением видов параметров, измерений, методов и средств обеспечения их единства и способов достижения требуемой точности занимается метрология.
Содержание
Виды технических параметров
Параметры подразделяются на входные, внутренние и выходные.
Входные (внешние) параметры отражают внешние требования к техническому устройству (процессу), их значения или характер изменения с той или иной точностью известны. Часть этих параметров, существенно влияющих на состояние и характеристики устройства (процесса), называют управляющими.
Часть входных параметров, которые характеризуют выполняемую устройством (процессом) функцию, относят к функциональным параметрам. Эти параметры в процессе проектирования известны.
Внутренние параметры характеризуют состояние и свойства самого устройства (процесса). Их значения определяются или уточняются в процессе проектирования. Они необходимы для обоснования принимаемых решений, характеристики свойств устройства и других целей.
Часть входных параметров и рассчитанных внутренних параметров устройства (процесса) может использоваться в качестве исходных данных для другого, взаимосвязанного устройства (процесса) или его модели. Такие параметры называются выходными параметрами для рассмотренного устройства (процесса) и входными — для вновь рассматриваемого.
Например, для устройства «лифт» входными параметрами будут, например, масса груза (функциональный параметр) и высота его подъёма, срок службы (они задаются, приходят извне), а внутренними, например, диаметр и материал троса, размеры кабины лифта (они определяются, характеризуют устройство и вначале неизвестны). Для устройства «шахта лифта» ранее найденные размеры кабины лифта будут входными параметрами и, следовательно, — выходными параметрами для устройства «лифт».
Некоторые параметры могут выступать в виде обобщённых параметров, объединяющих в себе ряд свойств. Эти параметры применяют, когда излишняя конкретизация при решении задачи не требуется, либо вызывает потребность в дополнительных специальных знаниях. Однако при таком параметре должна быть ссылка на документ, однозначно раскрывающий его содержание.
Например, марка (название) материала: сталь 45 ГОСТ 1050-88 «Прокат сортовой, калиброванный, со специальной отделкой поверхности из углеродистой качественной конструкционной стали. Общие технические условия». Она содержит данные о составе, условиях изготовления и иных свойствах материала и является обобщённым параметром, скажем, для проектировщика, но не для материаловеда или металлурга.
В зависимости от того, что характеризуют параметры — реальное устройство (процесс) или его модель, параметры подразделяют на нормированные и действительные.
Нормированный параметр
Нормированный параметр (или, более правильно, нормированное значение параметра) — это теоретическая величина, значение которой устанавливается нормативно-техническими документами и характеризует признаки модели соответствующего технического устройства. Выражается предельными допустимыми значениями параметра. Изделие, параметры которого будут находиться внутри интервала, образованного этими предельно-допустимыми значениями, считается работоспособным и может использоваться по назначению.
Например, длина стержня, указанная на чертеже, составляет 98…104 мм. Это — нормированное значение параметра, установленное чертежом, а 98 и 104 — предельно-допустимые его значения (наименьшее и наибольшее предельно-допустимые значения параметра).
Если одно из предельных значений равно нулю или бесконечности, то оно не указывается, а подразумевается. Например, твёрдость поверхности детали не менее НВ180, что означает 180…∞. Или, например, поднимаемый груз — 200 кг, что соответствует 0…200.
Для марки материала, например, стали, предельно-допустимые значения содержатся в соответствующем ей ГОСТе.
Величина интервала, ограниченного предельными значениями параметров, называется допуском параметра. Он обозначается буквой T (в предыдущем примере Т = 104–98 = 6 мм). Сама же область допустимых значений параметров называется полем допуска.
Действительный параметр
Действительный параметр (или действительное значение параметра) характеризует признаки конкретного реального изделия. Его определяют путем испытаний [1] или измерительного эксперимента с точностью, достаточной для контроля этого параметра.
Обычно каждое замеренное действительное значение уникально, так как его величина зависит от внешних условий, условий изготовления, способа и точности измерения и многих других факторов. С целью повышения достоверности знания значения параметра проводят ряд измерений, результаты которых будут иметь разброс внутри какого-то интервала. По этой причине действительное значение параметра задают диапазоном. Совпадение действительных значений одних и тех же параметров изделий из их партии возможно только в пределах точности измерения.
Например, измерениями была установлена длина стержня 97…98 мм. Это — действительное значение параметра, истинное значение которого лежит внутри диапазона, заданного суммарной погрешностью измерения. Повышение точности измерений сузит данный диапазон, например, до 97,6…98,1 мм.
Точность оценивается погрешностью измерения, которая представляет собой разность между действительным и истинным значениями параметра. За истинное значение параметра принимается идеальное значение, к которому стремится действительное значение параметра при повышении точности измерения. Истинное значение не может быть определено экспериментально, поскольку все средства измерения имеют некоторую погрешность измерения. Вместо истинного значения для оценки погрешности измерения берут действительное значение параметра, определенное другим средством измерения, погрешность которого на порядок меньше допустимого значения для данной цели.
Погрешность измерения включает в себя составляющие, причинами возникновения которых являются средства измерения, метод измерения и оператор (субъект).
Номинальный параметр
Для удобства записи параметров используют номинальный [2] параметр (номинальное значение параметра), то есть такое его значение, которое служит началом отсчета действительных и предельно допустимых отклонений. Субъективно назначается человеком либо является результатом операций с такими же номинальными параметрами.
Например, длину стержня, указанную на чертеже, можно записать как 101±3 мм. Здесь 101 — номинальное значение, ±3 — отклонения, задающие предельные значения параметра (98…104). В приведенном примере номинальное значение выбрано из середины интервала и, как следствие, отклонения будут симметричными. Если в качестве номинального значения принять «круглую» величину 100, то форма записи данного нормированного параметра примет, например, следующий вид , где +4 — величина верхнего предельного отклонения (100+4), −2 — нижнего (100+(-2)).
Номинальным параметром можно считать марку материала, приведённую без ссылки на соответствующий ГОСТ, например, сталь 45.
Часто оперируют только с номинальными значениями параметров, например, указывают длину стержня как 100 мм. Решать уравнения с параметрами, заданными в таком виде, удобнее, хотя теряется ощущение точности не только исходных данных, но и результата вычислений.
Однако изделие считается годным, если действительные значения его параметров попадают в интервал, задаваемый предельными значениями нормируемого параметра. Если указано только номинальное значение нормируемого параметра, то формально значение интервала равно нулю и попасть в такой интервал практически невозможно и, следовательно, каждое изделие по этому параметру будет бракованным. Поэтому в документации (особенно предназначенной для других пользователей — заказчика, исполнителя, покупателя, других специалистов) принято приводить нормированные значения параметров, а не указывать только их номинальные значения.
Для устранения излишнего многообразия номинальных значений параметров их рекомендуют нормировать, то есть приводить в соответствие (например, округлять расчетные значения) с предпочтительными числами.
Оценка значения технического параметра
Значения параметров могут оцениваются следующим образом: