Содержание
Услуги, подряд или авторский заказ? Выбираем договор для работы с заказчиком
Исполнители работают по одному из трёх договоров — услуг, подряда или авторского заказа. Часто предприниматели путают договор и теряют деньги.
Мы расскажем, для каких случаев предназначен каждый договор. Это поможет исполнителю правильно оформить отношения с заказчиком и защититься в спорах.
Почему важно выбрать правильный договор
Договор — когда исполнитель обязан что-то сделать для заказчика, а заказчик оплатить.
От обязанностей исполнителя зависит, правила какого договора из Гражданского кодекса применять. Название договора не имеет значения. Так пояснил Верховный суд в Постановлении № 49 от 25.12.2018.
Например, верстальщик договорился с клиентом на создание лендинга для однодневного тренинга. Чтобы оформить договорённость письменно, взял шаблон договора возмездного оказания услуг. В шаблоне не было условия о сроке, потому что он необязателен для услуг. Договор подписали, клиент перевёл аванс.
Верстальщик делал работу медленно, ведь дедлайна нет. В итоге клиент утратил интерес, потому что до тренинга осталось всего два дня, и попросил аванс обратно. А когда исполнитель отказал, пошёл в суд.
Суд сказал, что создание сайта — это работы, для них нужен договор подряда. При подряде обязательно пишут точный срок выполнения работ. В вашем документе срока нет, поэтому договор не заключён. Верните аванс обратно заказчику.
Чтобы выбрать правильный договор, посмотрите, что вы делаете: оказываете услуги, выполняете работы или создаёте произведение.
]]>
Сдавайте отчётность в три клика
Эльба рассчитает налог и подготовит отчётность для бизнеса на УСН, ЕНВД и патенте. А ещё поможет cформировать счета, акты и накладные.
Сравнение договоров
Вид договора
|
Возмездного оказания услуг
|
Подряда
|
Авторского заказа
|
Деятельность
|
Услуги
|
Работы
|
Произведения
|
Признаки
|
Материального результата нет или он неотделим от процесса
|
Материальный результат есть всегда
|
Труд творческий, результат уникальный
|
Примеры
|
Обучение, уборка, охрана, экскурсии, консультации, реклама, продвижение сайтов
|
Строительство, ремонт, пошив одежды, создание сайтов, разработка программ, дизайн
|
Статьи, логотипы, паттерны, персонажи, программы, базы данных, видео, фото
|
Кому подходит
|
Сеошникам, маркетологам, репетиторам, коучам, организаторам квестов и праздников, клинерам
|
Автослесарям, строителям, швеям, ювелирам. Фирмам, выполняющим работы по дизайну, копирайтингу, фотографии, разработке программ, созданию сайтов.
|
Только физическим лицам. Авторами называют копирайтеров, фотографов, художников, дизайнеров, разработчиков на фрилансе.
|
Общие правила
|
Исполнитель лично оказывает услуги. Других лиц привлекает только с разрешения в договоре.
Услуги принимают по акту. Акт нужен для оплаты.
|
Всегда есть сроки. Без срока договор недействителен.
О перечне работ и характеристиках результата договариваются в техническом задании. Или рисуют эскиз изделия.
После приёмки заказчик становится правообладателем исключительных прав на фото, текст, логотип, программу.
Исполнитель вправе передать часть работы на субподряд, если нет прямого запрета в договоре. Он отвечает за субподрядчика как за себя.
Подрядчик по договору на ремонт квартиры нанимает специалиста для укладки кафеля в ванной — так можно.
Результат работ исполнитель сдаёт по акту. После подписания акта заказчик переводит оплату
|
Всегда есть сроки. Без срока договор недействителен.
На произведение возникает исключительное право — право пользования. Два способа договориться о нём:
1. Отчуждение в собственность заказчика. Например, ресторан использует работы фотографа бессрочно в своих меню.
2. Временное пользование по лицензии. Заказчик может использовать программу на ограниченном количестве компьютеров в течение пяти лет.
У исполнителя всегда сохраняется право называться автором.
|
Бонусы исполнителя
|
1. Гарантия оплаты
Заказчик обязан полностью оплатить услугу, которую не получилось оказать из-за него.
Хозяин квартиры не открыл дверь клинеру — он всё равно платит за уборку.
При форс-мажоре заказчик оплачивает фактические расходы.
Клинер приехал, а офис сгорел. Хозяин оплачивает проезд клинера.
|
1. Право на удержание
Подрядчик вправе не отдавать заказчику результат работы до полной оплаты. Штрафов и пени нет.
2. Право на отказ от договора
Работу прекращают, если заказчик не принёс подходящий материал или не пустил на объект. Исполнителю платят за выполненную часть работы и компенсируют убытки.
Собственник квартиры уехал в командировку, а ключи не оставил. Подрядчик отказался продолжать и потребовал оплату за сделанную часть.
|
1. Льготный срок
Если автор не успевает закончить работу, ему полагается дополнительное время в ¼ часть срока без штрафов.
2. Пониженная ответственность
Автор отвечает за просрочку и плохое качество в пределах реального ущерба. С него нельзя требовать упущенную прибыль.
|
Риски исполнителя
|
1. Заказчик откажется
Заказчик отказывается от продолжения услуг в любой момент. Исполнителю оплачивают фактические расходы.
Клиент позвонил в клининговую компанию и отменил заказ на уборку. Клинер уже выехал. Клиент оплачивает расходы на проезд.
2. Повышенная ответственность перед потребителями
При некачественной услуге клиенту возвращают оплату, компенсируют убытки и моральный вред. За нарушение сроков платят высокие пени. Всё из-за Закона о правах потребителей.
Клинер застрял в пробке — компания платит 3% от стоимости уборки за каждый час просрочки.
|
1. Заказчик откажется
Заказчик отказывается от продолжения работ в любой момент. Исполнителю платят за законченный этап.
Строители выровняли стены в комнате. Клиент передумал с ними работать и заплатил только за первый этап работы.
2. Претензии после приёмки
Исполнитель отвечает за недостатки в течение гарантийного срока или двух лет. Заказчик может заявить о недостатках. Тогда подрядчик исправит их или вернёт деньги.
В квартире клиента через год отпала декоративная штукатурка. Клиент заказал экспертизу, и выяснилось, что в ремонте нарушен ГОСТ. Подрядчик возвращает оплату.
3. Повышенная ответственность перед потребителями
Подрядчик переделывает некачественную работу и компенсирует убытки и моральный вред. За нарушение сроков платит пени 3% за день. Всё из-за Закона о правах потребителей.
|
1. Заказчик откажется, если автор работает медленно
Заказчик отказывается, только если утратил интерес к заказу и срок договора истёк. В этом случае исполнитель не получает льготное время.
Копирайтер не успел подготовить текст для презентации. Заказчику текст больше не нужен, платить он не обязан.
2. Работу нельзя передать на субподряд
Заказчик выбрал автора, потому что оценил именно его умения. Поэтому работу по договору нельзя передоверить другому.
|
как выбрать вид договора и что в нем следует прописать
Гражданское законодательство по-разному регулирует отношения, связанные с выполнением работ и оказанием услуг. Для первых предназначен договор подряда, а для вторых — договор возмездного оказания услуг. Но при этом четкого определения терминов «работа» и «услуга» Гражданский кодекс РФ (в отличие от Налогового кодекса РФ) не содержит. Так как же определить, какой вид договора заключить в конкретной ситуации? И что будет, если составить не тот договор? Ответы на эти вопросы в нашей сегодняшней статье
26.10.2018
Автор: Алексей Крайнев
Работа или услуга: читаем ГК РФ
Как гласит пункт 1 статьи 702 ГК РФ, по договору подряда одна сторона (подрядчик) обязуется выполнить по заданию другой стороны (заказчика) определенную работу и сдать ее результат заказчику, а заказчик обязуется принять результат работы и оплатить его. Суть работ, которые могут быть предметом договора подряда, конкретизирована в пункте 1 статьи 703 ГК РФ. В нем сказано, что договор подряда заключается на изготовление или переработку (обработку) вещи либо на выполнение другой работы с передачей ее результата заказчику.
В свою очередь по договору возмездного оказания услуг исполнитель обязуется по заданию заказчика оказать услуги (совершить определенные действия или осуществить определенную деятельность), а заказчик обязуется оплатить эти услуги (п. 1 ст. 779 ГК РФ). Как видим, в данном случае предметом договора выступает совершение действий или осуществление деятельности. Примеры таких действий (такой деятельности) приведены в пункте 2 статьи 779 ГК РФ. Это могут быть услуги связи, медицинские, ветеринарные, аудиторские, консультационные, информационные услуги, услуги по обучению, туристическому обслуживанию и другие.
Итак, основное отличие предметов договора подряда и договора возмездного оказания услуг заключается в сути главной обязанности, которую принимает на себя исполнитель. Если речь идет о том, что заказчик должен получить от исполнителя некий конечный, и, как правило, овеществленный результат деятельности (документ, здание, забор, яму, исправный автомобиль и т. п.), а сама деятельность — это лишь необходимое условие для образования такого результата, то в терминах ГК РФ речь идет о работе. И, следовательно, отношения по достижению или созданию такого результата и передаче его заказчику должны регулироваться договором подряда.
Если же суть обязательства исполнителя заключается непосредственно в совершении каких-либо действий, результат которых отдельно от них не существует и заказчику не передается, то возникающие отношения между сторонами должны регулироваться договором возмездного оказания услуг.
Таким образом, для правильного выбора вида договора в каждой конкретной ситуации сторонам достаточно задать себе только один вопрос: за что конкретно заказчик будет платить исполнителю. Если получение вознаграждения связано с передачей заказчику какого-то результата деятельности и без этого результата сама деятельность исполнителя никак не оплачивается, то речь идет о работе и договоре подряда.
Если же оплачивается сам факт выполнения какой-либо деятельности (совершения конкретного действия), а не полученный результат, то речь идет о договоре возмездного оказания услуг. Например, таким договором оформляется участие в судебном заседании или проведение семинара.
Как Налоговый кодекс определяет термины «работа» и «услуга»
Налоговое законодательство содержит четкие определения рассматриваемых терминов. Так, согласно пункту 4 статьи 38 НК РФ, работой для целей налогообложения признается деятельность, результаты которой имеют материальное выражение и могут быть реализованы для удовлетворения потребностей организации и (или) физических лиц.
А услугой для целей налогообложения является деятельность, результаты которой не имеют материального выражения, реализуются и потребляются в процессе осуществления этой деятельности (п. 5 ст. 38 НК РФ).
Отличия договоров подряда и оказания услуг
Правильное определение вида договора имеет важное практическое значение. Дело в том, что договоры подряда и возмездного оказания услуг значительно различаются по объему прав и обязанностей сторон. Поэтому ошибка в квалификации договора может повлечь серьезные последствия.
Исполнение договора третьими лицами
Так, по договору подряда исполнитель (подрядчик) имеет право привлекать для выполнения работ третьих лиц, если в договоре прямо не сказано, что он обязан выполнить работы лично (п. 1 ст. 706 ГК РФ). А вот исполнитель по договору возмездного оказания услуг таким правом не обладает. Привлечь к оказанию услуг третьих лиц он может только в том случае, если это прямо разрешено в самом договоре (ст. 780 ГК РФ). А значит, если стороны ошибочно заключили договора подряда вместо договора оказания услуг, и при этом услуги фактически оказываются третьим лицом, это может стать основанием для лишения исполнителя права на вознаграждение.
Приведем пример. Предположим, стороны оформили договором подряда обязательства по проведению семинара для работников заказчика. При этом исполнитель выступил лишь в роли посредника, а непосредственно для проведения семинара привлек другую организацию, имеющую персонал с необходимой квалификацией. Но при этом в договоре с заказчиком данная возможность оговорена не была. В такой ситуации в случае возникновения спора суд переквалифицирует договор. В результате исполнитель может остаться без вознаграждения, так как по условиям договора и с учетом положений ГК РФ о договоре возмездного оказания услуг не имел права привлекать третье лицо.
Односторонний отказ от исполнения договора
Также два рассматриваемых договора различаются в части возможного одностороннего отказа от сделки. По договору подряда такое право есть только у заказчика. Он может в любое время до сдачи результатов работ отказаться от исполнения договора без объяснения причин, оплатив уже выполненную подрядчиком часть работ (ст. 717 ГК РФ). Что же касается договора возмездного оказания услуг, то он может быть прекращен отказом от его исполнения любой из сторон и в любое время. При этом заказчик, отказавшийся от договора, оплачивает исполнителю фактически понесенные им расходы (п. 1 ст. 782 ГК РФ). А если от договора отказывается исполнитель, то он возмещает заказчику связанные с этим убытки (п. 2 ст. 782 ГК РФ).
Также отметим, что заказчик вправе отказаться от договора подряда, если подрядчик выполняет работу настолько медленно, что он явно не уложится в установленные договором сроки (ст. 715 ГК РФ). А вот договор оказания услуг подобной возможности для заказчика не предусматривает.
Оформление «закрывающих» документов
Есть и другие отличия. К примеру, статья 720 ГК РФ требует, чтобы передача результатов работы оформлялась отдельным документом (актом или другим подобным документом). Если этот документ отсутствует, значит, нет оснований считать, что подрядчик выполнил свои обязанности, а, следовательно, у него не возникает право получить вознаграждение (постановление Арбитражного суда Центрального округа от 02.04.18 № Ф10-551/2018 по делу № А84-228/2017). Договор оказания услуг, напротив, не требует оформления каких-либо «закрывающих» документов (постановление Арбитражного суда Центрального округа от 09.04.18 № Ф10-1299/2018 по делу № А23-140/2017). А значит, обязанность заказчика оплатить услуги не зависит от того, оформили стороны акт (иной подобный документ) или нет. Обратное правило может быть предусмотрено в самом договоре (постановление Арбитражного суда Восточно-Сибирского округа от 18.07.18 № Ф02-3133/2018 по делу № А58-7306/2017).
Что нужно обязательно указать в договорах подряда и оказания услуг
Есть отличия и в части содержания договоров подряда и возмездного оказания услуг. Так, в договоре подряда нужно обязательно установить критерии, позволяющие определить конкретный вид работы (п. 1 ст. 702 ГК РФ), а также условия о начальном и конечном сроках выполнения работы (п. 1 ст. 708 ГК РФ).
Что касается договора возмездного оказания услуг, то для того, чтобы он считался заключенным, достаточно зафиксировать условия, определяющие конкретный вид услуги (п. 1 ст. 779 ГК РФ). Правда, нужно учитывать, что отраслевыми законами могут быть предусмотрены и иные правила составления договора возмездного оказания услуг. Например, в договорах на оказание туристских услуг (договор реализации туристского продукта) должны содержаться сведения, перечисленные в статье 10 Федерального закона от 24. 11.96 № 132-ФЗ «Об основах туристской деятельности в Российской Федерации». В частности, к ним относятся сведения о туроператоре и о размере финансового обеспечения ответственности туроператора, данные о договоре страхования ответственности туроператора или о банковской гарантии, сведения о туристе и о цене продукта (в рублях), и иные данные.
Как видим, по общему правилу перечень обязательных условий для договора подряда шире, чем для договора возмездного оказания услуг, так как включает в себя указание сроков начала и окончания выполнения работ. А значит, если стороны ошибочно заключили договор оказания услуг вместо договора подряда и при этом не прописали в договоре сроки выполнения работ, то оформленный ими договор просто не будет иметь юридической силы. Ведь по правилам ГК РФ договоры толкуются не по названию, а по сути возникающих между сторонами отношений (п. 3 ст. 421, ст. 422 и 431 ГК РФ). Поэтому после установления того факта, что по договору выполняются работы, а не оказываются услуги, он будет переквалифицирован в договор подряда. А договор подряда, в котором нет условий о сроках выполнения работ, считается незаключенным. Следовательно, исполнитель-подрядчик не сможет требовать вознаграждения, предусмотренного таким «договором», а заказчик — передачи ему соответствующего результата. Кроме того, ни для одной из сторон такой «договор» не может служить документальным подтверждением расходов, так как юридически он не существует.
Как указывать цену работ или услуг
А вот условие о цене по общему правилу не является обязательным ни для договора подряда, ни для договора возмездного оказания услуг. Если оформить договор без установления платы за работу или услугу, заказчик должен будет выплатить исполнителю сумму, в которую обычно оцениваются аналогичные работы или услуги (п. 3 ст. 424, п. 1 ст. 709 ГК РФ, п. 54 постановления Пленума Верховного суда РФ № 6, Пленума ВАС РФ № 8 от 01.07.96). Понятно, что такой подход к определению цены чреват спорами, поэтому пропускать этот пункт при составлении договора все же не следует.
Формулируя условие о стоимости работ или услуг, необходимо четко зафиксировать, включает ли цена сумму НДС. Дело в том, что если этот вопрос упустить, то исполнитель получит право взыскать налог сверх цены договора (п. 15 Обзора практики разрешения споров по договору строительного подряда, утв. информационным письмом Президиума ВАС РФ от 24.01.2000 № 51).
А при заключении договоров на оказание юридических услуг, связанных с ведением судебных дел, нужно учесть следующее. Ни обязанность заказчика по оплате услуг, ни размер такой оплаты, ни порядок определения цены услуг не могут зависеть от принятого судом решения (постановления Конституционного суда РФ от 23.01.07 № 1-П и Президиума ВАС РФ от 02.12.03 № 11406/03). В частности, стоимость услуг по такому договору нельзя установить в виде процента от взысканной через суд суммы (постановление Арбитражного суда Западно-Сибирского округа от 30.03.18 № Ф04-334/2018 по делу № А46-6600/2017).
Бухгалтерия Онлайн
Испытание электросетей – это подряд или услуги?
- Главная
- FAQ
- Испытание электросетей – это подряд или услуги?
/
/
Процедуру испытания следует считать услугой. Этому есть законодательное подтверждение.
Понятие «подряд», то есть «выполнение работ» отделяется от услуг в ряде норм гражданского кодекса РФ. В частности, закон устанавливает следующие определения:
- В договорах на оказание услуг предмет договорных отношений – это осуществление определенного вида деятельности или выполнение каких-либо действий. Сюда можно отнести испытание электроустановок, перевозку, хранение, обслуживание оборудования и т. д. Полезный эффект заказчик получает в самом процессе предоставления услуги. Исполнитель выполняет работу лично.
- В договорах подряда предмет договорных отношений — это не столько действия подрядчика, сколько их результат, который и оплачивает заказчик. Гражданский кодекс относит в эту группу переработку, изготовление предметов, выполнение работ, позволяющих предоставить материальный результат. То есть подряд приводит к преобразованию существующей вещи или к созданию новой. Подрядчик вправе привлекать к работе сторонние организации (субподряд).
Возмездное оказание услуг интересует заказчика именно процессом исполнения и не приводит к изменению характеристик объекта. В случае подряда договор считается исполненным только при достижении вещественного результата. Таким же образом услуги и подрядные работы разграничивает налоговое законодательство.
Проведение испытаний электросетей подразумевает действия по осмотру, измерениям, диагностике и другие мероприятия, которые не приводят к изменению характеристик системы. Материального результата работы не возникает, заказчик платит за сам процесс испытаний. Если бы в данном случае заключался договор подряда, потребовалось бы согласовать виды и перечень работ или описать их результат. Это сделать в принципе невозможно, так как нельзя узнать заранее, какие повреждения имеет электросеть.
Вернуться назад
Выгода Максимум | Oriflame Cosmetics
Программа «Выгода Максимум» – для всех, кто хочет получать дополнительный доход*
Размести заказы от 100 ББ и получи:
- Доступ к эксклюзивной программе «Выгода Плюс».
- Доступ к предзаказу основных новинок следующего каталога.**
- Возможность купить пять каталогов следующего периода по льготной цене (29₽).
Размести заказы от 150 ББ и получи:
- Доступ к условиям из предыдущего раздела (заказ от 100 ББ) автоматически.
- Минимум 30% выгоды от личных покупок по цене каталога. Скидка складывается из 20% немедленной выгоды и 10%-ной скидки «Выгода Максимум»***;
- Скидку 50% на любимый продукт (от цены Партнёра бренда – кроме линии Wellness, наборов, продуктов, которые не представлены в прайс-листе и продуктов, скидка на которые по каталогу 50% и выше) при размещении заказов на 150ББ и более в двух каталогах подряд****;
- Доступ к акции «1+1+1=4»: четвертый продукт в подарок при заказе трех одинаковых позиций;
- Возможность разместить предварительный онлайн-заказ;
- Возможность покупки набора из 10 каталогов следующего периода по еще более льготной цене (23₽).
- Возможность пользоваться увеличенным кредитным лимитом;
Размести заказы от 250ББ и выше в течение 17 каталогов подряд и получи в подарок любой набор по уходу за кожей лица NovAge на свой выбор!
*Дата регистрации в качестве консультанта не имеет значения.
**Не более 5 штук каждого продукта.
***Скидка 10% выплачивается до тех пор, пока Объемная Скидка не превышает размером скидку «Выгоды Максимум». Партнёр бренда получает либо 10%-ную скидку «Выгоды Максимум», либо Объемную Скидку, но всегда то, что больше по размеру. Скидка «Выгоды Максимум» начисляется на товарную скидку по итогам каталога. Под Объемной Скидкой понимается сумма Объемной Скидки за личный и групповой объём продаж. Размер 10%-ной скидки ограничен максимальной суммой заказа 1500ББ.
****Любимый продукт, купленный с 50% скидкой, не участвует в других акциях каталога и не подлежит обмену на другой товар.
Заказать группу Бригадный Подряд на корпоратив, свадьбу, юбилей. Пригласить на праздник. Цена.
ОФИЦИАЛЬНЫЙ САЙТ БРОНИРОВАНИЯ
Концертный менеджер тел. +7 985 760 78 76
E-mail: [email protected]
При заказе выступления обязательно уточните:
< Занятость на дату вашего мероприятия
< Детали организации выступления
< Способ оплаты и порядок заключения договора
Мы несем полную юридическую ответственность за приезд и выступление
артиста, а также подбираем лучшие условия по выполнению логистики, технического и бытового райдера.
ЦЕНА, СТОИМОСТЬ ВЫСТУПЛЕНИЯ ЗВЕЗД ЭСТРАДЫ
ПОЛНЫЙ СПИСОК ЗВЕЗД РОССИЙСКОЙ ЭСТРАДЫ
«Бригадный Подряд» – потрясающая панк и рок-группа, основанная в 1985-м году в городе Санкт-Петербурге. Участники коллектива были знакомы ещё со школьной скамьи и к моменту основания серьёзной группы они уже несколько раз собирались в музыкальную команду, пробовали разные музыкальные стили, получили некоторый организационный и сценический опыт, нашли идеи для реализации своих творческих планов. В 1986-м году молодые исполнители записали дебютный альбом, в который вошли оригинальные и вызвавшие общественный резонанс композиции – «Я рослый, мослы – во!», «Зачем я (полюбила идиота)», «Режь, серп» и другие песни. Известность о группе молниеносно разлетелась по большой стране, о коллективе заговорили в прессе. Так ребята определились со своим музыкальным жанром и репертуаром, посчитав его интересным и интригующим для публики. В течение двух лет перспективная рок-команда стала членом ленинградского рок-клуба, впервые отправилась в гастрольные туры по Советскому Союзу, принимала участие в престижных и громких рок-фестивалях. «Взрывные» и «острые» песни коллектива легко «заводили» и поднимали со своих мест многотысячные аудитории стадионов и концертных площадок. Состав группы несколько раз менялся: прежние участники коллектива начинали сольную карьеру или переходили в другие группы, а «Бригадный Подряд» пополнялся новыми артистами и идеями. Ежегодно команда являлась хедлайнером крупнейших рок-фестивалей.
Рекомендуем заказать рок-группу «Бригадный Подряд» на корпоративный вечер, день рождения, свадебное торжество. Яркий коллектив сделает ваш вечер неповторимым. На концертах группы царит дружеская расслабляющая атмосфера. Вы потрясающе отдохнёте, потанцуете с друзьями, сделаете великолепные фотографии. Этот день запомнится вам роскошной музыкальной программой. Участники группы отлично знают, как развеселить публику, привести в восторг всех гостей мероприятия, даже самых капризных. Пригласить рок-группу «Бригадный Подряд» на праздник – это мудрый выбор для оптимистичных людей, любящих счастливые компании и оригинальные композиции. Скучно на концерте группы не бывает никогда. Ваши гости будут благодарны вам за удивительное мероприятие. Вы можете заказать рок-группу «Бригадный Подряд» на юбилейный вечер, корпоративный праздник, торжество. Вы наполните свой день приятными счастливыми моментами.
Многие песни легендарной группы стали хитами в репертуаре других популярных артистов, таких как Юрий Шевчук («ДДТ») и Михаил Горшенёв («Король и Шут»). В 2013-м году команда записывает «Сомнамбулу» – самый популярный альбом за творческую карьеру группы, песни которого заняли на целый год первые строчки хит-парадов лучших радиостанций и интернет-ресурсов. Более пятидесяти городов музыканты включили в концертную программу гастролей для презентации альбома. История группы насчитывает более 30 лет, были в её жизни и счастливые и горестные моменты, но интерес к уникальному коллективу никогда не пропадает у слушателей, песни группы в любое время звучат искренне и впечатляюще.
Пригласить группу Бригадный Подряд на праздник, заказать выступление на корпоратив, свадьбу, юбилей или день рождения вы можете с помощью нашего концертно-праздничного агентства 123 ШОУ. Доверьте организацию и проведение вашего мероприятия нашему агентству! Стоимость выступления группу Бригадный Подряд на празднике, корпоративном мероприятии, свадьбе — смотрите ЗДЕСЬ, цены корректны для Москвы и области (кроме предновогоднего периода и Новогодней ночи). Уточняйте занятость артистов по форме обратной связи или по тел. 8-495-760-78-76
Специалисты компании 123 ШОУ обязательно свяжутся с Вами и помогут ответить на все Ваши вопросы.
Генподрядчик в проектировании и строительстве
Главная / Инжиниринг / Инжиниринг в области управления проектами /Версия для печати
Генеральный проектировщик и генеральный подрядчик — организации, которые по договору подряда выполняют проектирование и строительство объектов. При этом, они могут как сами выполнять все работы (в этом случае являются просто проектировщиками), так и нанимать субподрядные организации.
Деятельность генподрядных организаций в проектировании и строительстве регламентируется ГК РФ от 26.01.1996 №14-ФЗ, Статья 706 «Генеральный подрядчик и субподрядчик».
Генеральный проектировщик
Генеральным проектировщиком может выступать юридическое лицо, а точнее проектная организация, имеющая допуски на выполнение того или иного комплекса услуг по выполнению инженерных изысканий и разработке проектной документации на объект строительства.
В сферу компетенции генпроектировщика входит как непосредственное выполнение инженерно-изыскательских и проектных работ, так и заключение договора субподряда. В последнем случае он осуществляет контролирующие функции и является ответственным лицом перед заказчиком за выполнение работ.
В рамках осуществления функции генподрядчика проектных работ выполняются:
-
поиск, выбор субподрядной организации и координация ее деятельности в соответствии с перечнем необходимых работ -
составление технического задания на выполнение инженерных изысканий и проектирования объекта -
комплектация проектной и сметной документации, передача ее заказчику -
согласование необходимого перечня работ, графика его выполнения -
финансовое регулирование подрядных работ -
контроль за соответствием выполненных работ требованиям заказчика -
авторский надзор за строительством -
приемка, внесение правок и сдача выполненных работ заказчику -
согласование и получение разрешительной документации от контролирующих государственных инстанций
Результатом работы генпроектировщика является проектная и рабочая документация, которая разработана на основании и в соответствии с принятыми заказчиком техническими решениями.
Генеральный подрядчик
Генподрядчик — организация, осуществляющая строительство объекта проектирования на основе договора подряда. Иными словами, генподрядная организация является посредником между заказчиком строительства и непосредственными исполнителями работ (субподрядными организациями). При этом, если организация имеет необходимые допуски и квалифицированных специалистов, она может сама выполнять строительно-монтажные работы.
При выполнении генподрядных услуг выполняются следующие виды работ:
-
получение от заказчика технического задания, согласование необходимого перечня работ -
заключение договоров субподряда с исполнителями работ -
координация строительно-монтажных работ, составление графика строительства -
организация поставок оборудования и строительной техники -
организация взаимодействия всех участников проекта строительства -
строительный контроль за соблюдением проектной и рабочей документации, этапов работ, их сроков -
ведение исполнительной документации -
финансовое и юридическое сопровождение строительно-монтажных работ -
учетная работа -
промежуточная приемка выполненных этапов работ -
согласование всех работ с контролирующими органами -
сдача объекта и ввод его в эксплуатацию
Формат строительства объекта под ключ с привлечением генпроектировщиков и генподрядчиков очень удобен для заказчика/инвестора. При обращении к посредникам последний несет всю ответственность за техническую и правовую составляющую работ, а также отвечает за качество, надежность и безопасность будущего объекта. Не все заказчики имеют в своем штате инженеров-проектировщиков или строительный отдел, так как это не всегда рентабельно, например, если строительство нового объекта является разовой потребностью.
Обращаясь к подрядным организациям, значительно оптимизируются процессы проектирования и строительства за счет четкой координации всех задействованных организаций одним лицом, обладающим необходимыми допусками и опытом выполнения соответствующих работ.
Как заключить договор на выполнение функций генпроектировщика или генподрядчика?
Чтобы узнать стоимость наших услуг по осуществлению функций генерального проектировщика или генерального подрядчика, Вы можете:
-
прислать техническое задание на электронную почту -
воспользоваться формой «Заказать услугу», указать контактную информацию для связи с Вами -
позвонить по телефону 8-800-555-9480
* полный перечень предоставляемых услуг в качестве технического заказчика можете уточнить, написав на электронную почту
ПОДРЯД — это… Что такое ПОДРЯД?
подряд — подряд … Орфографический словарь-справочник
подряд — См … Словарь синонимов
ПОДРЯД — 1. ПОДРЯД1, подряда, муж. Договор, по которому кто нибудь обязуется выполнить за определенную цену какую нибудь работу или доставить какие нибудь товары, материалы. Постройка по подряду. Подряд на поставку товара. || Работа по такому договору.… … Толковый словарь Ушакова
ПОДРЯД — 1. ПОДРЯД1, подряда, муж. Договор, по которому кто нибудь обязуется выполнить за определенную цену какую нибудь работу или доставить какие нибудь товары, материалы. Постройка по подряду. Подряд на поставку товара. || Работа по такому договору.… … Толковый словарь Ушакова
ПОДРЯД — в гражданском праве договор, по которому одна сторона (под рядчик) обязуется выполнить за свой риск определенную работу по заданиюдругой стороны (заказчика) из ее или своих материалов, а заказчик обязу ется принять и оплатить выполненную работу.… … Финансовый словарь
Подряд — см. Внутрихозяйственный арендный подряд; Договор бытового подряда; Договор подряда; Договор строительного подряда; … Энциклопедия права
Подряд — Подряд: Подряд один из рангов, в таксономической иерархии находящийся ниже рода, но выше вида. Подряд вид договора … Википедия
ПОДРЯД — см. Договор подряда … Юридический словарь
Подряд — англ. contract договор, по которому одна сторона (подрядчик) принимает на себя обязательство выполнить определенную работу по заданию другой стороны (заказчика) за вознаграждение. Подрядчик выполняет работу по своему усмотрению и имеет право… … Словарь бизнес-терминов
ПОДРЯД — ПОДРЯД, в гражданском праве договор, по которому одна сторона (подрядчик) обязуется за свой риск выполнить определенную работу по заданию другой стороны (заказчика) из ее или своих материалов, а заказчик обязуется принять и оплатить выполненную… … Современная энциклопедия
ПОДРЯД — в гражданском праве договор, по которому одна сторона (подрядчик) обязуется за свой риск выполнить определенную работу по заданию другой стороны (заказчика) из ее или своих материалов, а заказчик обязуется принять и оплатить выполненную работу.… … Большой Энциклопедический словарь
Порядок строк
Порядок строк
Next Previous Up Содержание
Далее: Набор колонн
Вверх: Видимая таблица
Предыдущая: Определение подмножеств
3.2 Порядок строк
Вы можете отсортировать строки каждой таблицы в соответствии с
значения в выбранном столбце.
Обычно вам нужно отсортировать
числовой столбец, но можно сортировать и другие значения, например
столбец String будет отсортирован в алфавитном порядке.
Некоторые типы столбцов (например, массивы) не имеют четко определенных
порядок, и их нельзя выбрать для сортировки.
В любой момент каждая таблица имеет текущий порядок строк ,
и это влияет на видимую таблицу.
Вы всегда можете увидеть, что это такое, посмотрев в разделе «Порядок сортировки».
в окне управления, когда эта таблица
выбрано; по умолчанию это «(нет)», что означает, что строки имеют
в том же порядке, что и таблица, из которой они были загружены.
Маленькая стрелка (/) указывает,
смысл сортировки — вверх или вниз. Вы можете изменить порядок сортировки
выбрав имя столбца в этом элементе управления и изменив смысл
нажав на стрелку.Порядок сортировки также можно изменить
используя пункты меню в
Окно столбцов или щелчок правой кнопкой мыши
всплывающие меню в окне данных.
При выборе столбца для сортировки вычисляется новый порядок строк
выполняя сортировку значений ячеек тут же.
Если данные таблицы каким-то образом изменяются (например, из-за того, что вы редактируете
ячеек в таблице) то это возможно для порядка сортировки
устареть.
Текущий порядок строк влияет на видимую таблицу,
и, следовательно, определяет порядок строк в таблицах, которые экспортируются
любым способом (e.грамм. выписано) из TOPCAT. Вы всегда можете увидеть
строки в их текущем отсортированном порядке в
Окно данных.
Next Previous Up Содержание
Далее: Набор колонн
Вверх: Видимая таблица
Предыдущая: Определение подмножеств
TOPCAT — Инструмент для работы с каталогами и таблицами
Примечание пользователя Starlink 253
Веб-страница TOPCAT:
http://www.starlink.ac.uk/topcat/
Электронная почта автора:
[email protected]
Список рассылки:
topcat-user @ jiscmail.ac.uk
Сортировка строк для организации данных
Чтобы организовать данные в порядке возрастания или убывания, используйте команду Сортировка строк . При сортировке у вас есть два варианта выбора объема данных, с которыми вы хотите работать: вы можете отсортировать все строки на листе или только их выбор.
Вот некоторые вещи, о которых следует помнить при сортировке:
- Применение сортировки повлияет на существующие строки на листе. Когда добавляются новые строки, вам нужно будет снова выполнить сортировку, чтобы включить новые добавленные строки.
- Вы не можете отменить сортировку после сохранения листа. Перед сохранением убедитесь, что строки на листе расположены в нужном порядке.
- Хотя редакторы могут сортировать лист, они не могут сортировать заблокированные строки. Если параметр «Сортировка строк» недоступен, и вы предоставили доступ к листу с разрешениями редактора (подробности см. В разделе «Уровни разрешений общего доступа»), отмените выбор всех заблокированных строк перед попыткой сортировки.
- Команда Сортировка строк будет недоступна, если к вашему листу применен фильтр.Перед сортировкой вам сначала нужно убедиться, что фильтры не применяются. Чтобы очистить фильтр (прекратить его применение к листу), выберите Отключить фильтр в меню Фильтр . Для получения дополнительной информации о фильтрации данных листа ознакомьтесь с нашей статьей об использовании фильтров для отображения или скрытия данных листа.
Сортировать все строки
- Щелкните правой кнопкой мыши заголовок столбца и выберите Сортировать строки.
Появится форма сортировки.
- Введите критерии сортировки и нажмите ОК.
Сортировка выбранных строк
- Выделите строки, удерживая клавишу Shift и щелкая номера строк, которые нужно отсортировать.
- Щелкните правой кнопкой мыши выбранную область и выберите Сортировать строки.
- В форме «Сортировка» введите критерии сортировки и нажмите ОК.
Как сортируются разные типы данных
Тип данных, которые вы сортируете, будет влиять на результат. Вот несколько примеров:
Сортировка поведения в отчетах
При сортировке отчета элементы будут отсортированы в возрастающем или убывающем порядке.Если вы выполняете сортировку по столбцу, который является типом раскрывающегося списка на исходном листе, элементы не будут отсортированы на основе предварительно определенных значений раскрывающегося списка во включенных исходных листах.
Отчет может извлекаться из нескольких листов и объединять столбцы с одинаковыми именами и типами столбцов. Если столбцы раскрывающегося списка имеют разные значения на разных листах (например: a, b, c, d на одном листе и 1,2,3,4 на другом), отчет не сможет определить, какой вид следует учитывать в консолидированном столбец.
Номера строк с недетерминированным порядком
Оконная функция ROW_NUMBER имеет множество практических применений, выходящих далеко за рамки очевидных потребностей ранжирования.В большинстве случаев, когда вы вычисляете номера строк, вам нужно вычислять их на основе некоторого порядка, и вы предоставляете желаемую спецификацию порядка в предложении порядка окон функции. Однако бывают случаи, когда вам нужно вычислять номера строк в произвольном порядке; другими словами, на основе недетерминированного порядка. Это может быть по всему результату запроса или внутри разделов. Примеры включают присвоение уникальных значений строкам результатов, дедупликацию данных и возврат любой строки для каждой группы.
Обратите внимание, что необходимость назначать номера строк на основе недетерминированного порядка отличается от необходимости назначать их на основе случайного порядка.В первом случае вам просто не важно, в каком порядке они назначены, и будут ли повторные выполнения запроса присваивать одни и те же номера строк одним и тем же строкам или нет. В последнем случае вы ожидаете, что повторные выполнения будут постоянно менять, какие строки будут назначены с номерами строк. В этой статье исследуются различные методы вычисления номеров строк с недетерминированным порядком. Есть надежда найти метод, который будет одновременно надежным и оптимальным.
Особая благодарность Полу Уайту за совет относительно сворачивания констант, за технику констант времени выполнения и за то, что он всегда был отличным источником информации!
Когда порядок имеет значение
Я начну со случаев, когда порядок номеров строк имеет значение.
Я буду использовать в своих примерах таблицу под названием T1. Используйте следующий код, чтобы создать эту таблицу и заполнить ее образцами данных:
УСТАНОВИТЬ БЕЗ СЧЕТА; ИСПОЛЬЗУЙТЕ tempdb; УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ dbo.T1; ИДТИ СОЗДАТЬ ТАБЛИЦУ dbo.T1 ( id INT NOT NULL ОГРАНИЧЕНИЕ ПЕРВИЧНЫЙ КЛЮЧ PK_T1, grp VARCHAR (10) NOT NULL, datacol INT NOT NULL ); ВСТАВИТЬ В dbo.T1 (id, grp, datacol) ЗНАЧЕНИЯ (11, 'А', 50), (3, 'Б', 20), (5, 'А', 40), (7, 'Б', 10), (2, «А», 50);
Рассмотрим следующий запрос (назовем его Запрос 1):
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО GRP ORDER BY datacol) КАК n ОТ dbo.Т1;
Здесь вы хотите, чтобы номера строк были назначены в каждой группе, идентифицированной столбцом grp, упорядоченных по столбцу datacol. Когда я запустил этот запрос в своей системе, я получил следующий результат:
id grp datacol n --- ---- -------- --- 5 А 40 1 2 А 50 2 11 А 50 3 7 В 10 1 3 В 20 2
Номера строк назначаются здесь в частично детерминированном и частично недетерминированном порядке. Я имею в виду, что у вас есть уверенность в том, что в одном разделе строка с большим значением datacol получит большее значение номера строки.Однако, поскольку datacol не уникален в пределах раздела grp, порядок присвоения номеров строк среди строк с одинаковыми значениями grp и datacol недетерминирован. Так обстоит дело со строками со значениями id 2 и 11. У обоих есть значение grp A и значение datacol 50. Когда я впервые выполнил этот запрос в своей системе, строка с id 2 получила номер строки 2, а строка с идентификатором 11 получила строку номер 3. Не обращайте внимания на вероятность того, что это произойдет на практике в SQL Server; Если я снова запущу запрос, теоретически строке с идентификатором 2 можно присвоить номер строки 3, а строке с идентификатором 11 можно присвоить номер строки 2.
Если вам нужно назначить номера строк на основе полностью детерминированного порядка, гарантируя повторяемость результатов при выполнении запроса, пока базовые данные не изменяются, вам необходимо, чтобы комбинация элементов в предложениях разбиения окна и упорядочивания была уникальной. . В нашем случае это может быть достигнуто путем добавления идентификатора столбца в предложение порядка окон в качестве разрешения конфликтов. Тогда предложение OVER будет выглядеть так:
OVER (РАЗДЕЛЕНИЕ ПО GRP ORDER BY datacol, id)
В любом случае, при вычислении номеров строк на основе некоторой значимой спецификации упорядочения, как в запросе 1, SQL Server должен обрабатывать строки, упорядоченные комбинацией элементов разделения окна и упорядочивания.Это может быть достигнуто путем извлечения предварительно упорядоченных данных из индекса или путем сортировки данных. В настоящий момент на T1 нет индекса для поддержки вычисления ROW_NUMBER в запросе 1, поэтому SQL Server должен выбрать сортировку данных. Это можно увидеть в плане запроса 1, показанном на рисунке 1.
Рисунок 1. План для запроса 1 без поддерживающего индекса
Обратите внимание, что план сканирует данные из кластеризованного индекса со свойством Ordered: False. Это означает, что сканирование не должно возвращать строки, упорядоченные по ключу индекса.Это так, поскольку кластеризованный индекс используется здесь только потому, что он покрывает запрос, а не из-за его ключевого порядка. Затем план применяет сортировку, что приводит к дополнительным затратам, масштабированию N Log N и времени отклика с задержкой. Оператор сегмента создает флаг, указывающий, является ли строка первой в разделе или нет. Наконец, оператор Sequence Project присваивает номера строк, начиная с 1, в каждом разделе.
Если вы хотите избежать необходимости в сортировке, вы можете подготовить покрывающий индекс со списком ключей, основанным на элементах разделения и упорядочения, и списком включения, основанным на покрывающих элементах.Мне нравится думать об этом индексе как об индексе POC (для секционирования , порядка и , покрывающего ). Вот определение POC, который поддерживает наш запрос:
СОЗДАТЬ ИНДЕКС idx_grp_data_i_id ON dbo.T1 (grp, datacol) INCLUDE (id);
Выполнить запрос 1 еще раз:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО GRP ORDER BY datacol) КАК n ОТ dbo.T1;
План этого исполнения показан на рисунке 2.
Рисунок 2: План для запроса 1 с индексом POC
Обратите внимание, что на этот раз план сканирует индекс POC со свойством Ordered: True.Это означает, что сканирование гарантирует, что строки будут возвращены в порядке ключа индекса. Поскольку данные извлекаются из индекса в предварительном порядке, как того требует оконная функция, в явной сортировке нет необходимости. Масштабирование этого плана линейное, а время отклика хорошее.
Когда порядок не имеет значения
Все становится немного сложнее, когда вам нужно назначить номера строк в полностью недетерминированном порядке. В таком случае естественно было бы использовать функцию ROW_NUMBER без указания условия порядка окон.Во-первых, давайте проверим, позволяет ли это стандарт SQL. Вот соответствующая часть стандарта, определяющая правила синтаксиса для оконных функций:
Правила синтаксиса
…
5) Пусть WNS будет <имя окна или спецификация>. Пусть WDX будет дескриптором структуры окна, который описывает окно, определенное WNS.
6) Если заданы <функция ntile>, <функция опережения или отставания>, <тип функции ранга> или ROW_NUMBER, то:
a) Если указаны <функция ntile>, <функция опережения или запаздывания>, RANK или DENSE_RANK, то должен присутствовать пункт WOC WDX упорядочивания окон.
…
f) ROW_NUMBER () OVER WNS эквивалентно <оконной функции>: COUNT (*) OVER (WNS1 ROWS UNBOUNDED PRECEDING)
…
Обратите внимание, что в элементе 6 перечислены функции
Итак, давайте попробуем и попытаемся вычислить номера строк без упорядочивания окон в SQL Server:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER () AS n ОТ dbo.T1;
Эта попытка приводит к следующей ошибке:
Сообщение 4112, уровень 15, состояние 1, строка 53
Функция «ROW_NUMBER» должна иметь предложение OVER с ORDER BY.
Действительно, если вы проверите документацию SQL Server по функции ROW_NUMBER, вы найдете следующий текст:
«заказ_по_объявлению
Предложение ORDER BY определяет последовательность, в которой строкам присваивается их уникальный ROW_NUMBER в пределах указанного раздела.Требуется.»
Таким образом, очевидно, что предложение порядка окон является обязательным для функции ROW_NUMBER в SQL Server. Кстати, то же самое и с Oracle.
Я должен сказать, что не уверен, что понимаю причину этого требования. Помните, что вы позволяете определять номера строк на основе частично недетерминированного порядка, как в запросе 1. Так почему бы не допустить недетерминизма полностью? Возможно, есть причина, о которой я не думаю. Если вы можете придумать такую причину, поделитесь, пожалуйста.
Во всяком случае, вы можете возразить, что, если вас не волнует порядок, учитывая, что пункт о порядке окон является обязательным, вы можете указать любой порядок. Проблема с этим подходом заключается в том, что если вы заказываете по некоторому столбцу из запрашиваемой таблицы (таблиц), это может привести к ненужному снижению производительности. Когда нет поддерживающего индекса, вы платите за явную сортировку. Когда есть поддерживающий индекс, вы ограничиваете механизм хранения стратегией сканирования порядка индекса (следуя за списком связанных индексов).Вы не допускаете большей гибкости, как это обычно бывает, когда порядок не имеет значения при выборе между сканированием порядка индексации и сканированием порядка распределения (на основе страниц IAM).
Одна из идей, которую стоит попробовать, — указать константу, например 1, в предложении порядка окон. Если поддерживается, можно надеяться, что оптимизатор достаточно умен, чтобы понять, что все строки имеют одно и то же значение, поэтому нет реальной релевантности для упорядочивания и, следовательно, нет необходимости принудительно выполнять сортировку или сканирование порядка индексации. Вот запрос с использованием этого подхода:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 1) AS n ОТ dbo.Т1;
К сожалению, SQL Server не поддерживает это решение. Выдает следующую ошибку:
Msg 5308, уровень 16, состояние 1, строка 56
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают целочисленные индексы в качестве выражений предложения ORDER BY.
Очевидно, SQL Server предполагает, что если вы используете целочисленную константу в предложении порядка окон, она представляет порядковый номер элемента в списке SELECT, например, когда вы указываете целое число в предложении ORDER BY представления.В этом случае стоит попробовать еще один вариант — указать нецелую константу, например:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 'No Order') КАК n ОТ dbo.T1;
Оказывается, это решение тоже не поддерживается. SQL Server выдает следующую ошибку:
Msg 5309, уровень 16, состояние 1, строка 65
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают константы как выражения предложения ORDER BY.
Очевидно, предложение о порядке окон не поддерживает никаких констант.
До сих пор мы узнали следующее о релевантности порядка окон функции ROW_NUMBER в SQL Server:
- Требуется ЗАКАЗАТЬ.
- Невозможно упорядочить по целочисленной константе, поскольку SQL Server считает, что вы пытаетесь указать порядковый номер в SELECT.
- Невозможно выполнить заказ по какой-либо константе.
Вывод состоит в том, что вы должны упорядочивать по выражениям, которые не являются константами. Очевидно, что вы можете упорядочить по списку столбцов из запрашиваемых таблиц.Но мы стремимся найти эффективное решение, в котором оптимизатор сможет понять, что упорядочивающая релевантность отсутствует.
Постоянное складывание
На данный момент сделан вывод, что вы не можете использовать константы в предложении порядка окон ROW_NUMBER, но как насчет выражений, основанных на константах, например, в следующем запросе:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 1 + 0) AS n ОТ dbo.T1;
Однако эта попытка становится жертвой процесса, известного как сворачивание констант, который обычно оказывает положительное влияние на производительность запросов.Идея, лежащая в основе этого метода, состоит в том, чтобы улучшить производительность запроса путем сворачивания некоторых выражений на основе констант в их константы результата на ранней стадии обработки запроса. Здесь вы можете найти подробную информацию о том, какие выражения можно сворачивать константами. Наше выражение 1 + 0 сворачивается до 1, что приводит к той же ошибке, что и при прямом указании константы 1:
Msg 5308, уровень 16, состояние 1, строка 79
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают целочисленные индексы в качестве выражений предложения ORDER BY.
Вы столкнетесь с аналогичной ситуацией при попытке объединения двух символьных строковых литералов, например:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 'Нет' + 'Order') КАК n ОТ dbo.T1;
Вы получаете ту же ошибку, что и при прямом указании литерала «Нет порядка»:
Msg 5309, уровень 16, состояние 1, строка 55
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают константы как выражения предложения ORDER BY.
Bizarro world — ошибки, предотвращающие ошибки
Жизнь полна сюрпризов…
Одна вещь, которая предотвращает сворачивание констант, — это когда выражение обычно приводит к ошибке. Например, выражение 2147483646 + 1 может быть свернуто на константу, так как оно дает допустимое значение типа INT. Следовательно, попытка выполнить следующий запрос не удалась:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ЗАКАЗ 2147483646 + 1) КАК n ОТ dbo.T1;
Msg 5308, уровень 16, состояние 1, строка 109
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают целочисленные индексы в качестве выражений предложения ORDER BY.
Однако выражение 2147483647 + 1 не может быть свернуто на константу, потому что такая попытка привела бы к ошибке переполнения INT. Значение порядка довольно интересно. Попробуйте выполнить следующий запрос (мы назовем его запросом 2):
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ЗАКАЗ 2147483647 + 1) КАК n ОТ dbo.T1;
Как ни странно, этот запрос выполняется успешно! Что происходит, так это то, что, с одной стороны, SQL Server не может применить сворачивание констант, и поэтому упорядочение основано на выражении, которое не является единственной константой.С другой стороны, оптимизатор считает, что значение порядка одинаково для всех строк, поэтому он полностью игнорирует выражение порядка. Это подтверждается при изучении плана этого запроса, показанного на рисунке 3.
Рисунок 3: План запроса 2
Обратите внимание, что план сканирует некоторый покрывающий индекс со свойством Ordered: False. Это и было нашей целью.
Аналогичным образом следующий запрос включает успешную попытку сворачивания констант и, следовательно, терпит неудачу:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 1/1) AS n ОТ dbo.Т1;
Msg 5308, уровень 16, состояние 1, строка 123
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают целочисленные индексы в качестве выражений предложения ORDER BY.
Следующий запрос включает в себя неудачную попытку сворачивания констант и, следовательно, завершается успешно, генерируя план, показанный ранее на рисунке 3:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 1/0) AS n ОТ dbo.T1;
Следующий запрос включает успешную попытку сворачивания констант (литерал VARCHAR ‘1’ неявно преобразуется в INT 1, а затем 1 + 1 сворачивается в 2) и поэтому терпит неудачу:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 1 + '1') КАК n ОТ dbo.Т1;
Msg 5308, уровень 16, состояние 1, строка 134
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают целочисленные индексы в качестве выражений предложения ORDER BY.
Следующий запрос включает в себя неудачную попытку сворачивания констант (невозможно преобразовать ‘A’ в INT) и поэтому завершается успешно, генерируя план, показанный ранее на рисунке 3:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY 1 + 'A') КАК n ОТ dbo.T1;
Честно говоря, даже несмотря на то, что эта причудливая техника достигает нашей первоначальной цели, я не могу сказать, что считаю ее безопасной, и поэтому мне не очень комфортно полагаться на нее.
Постоянные времени выполнения на основе функций
Продолжая поиск хорошего решения для вычисления номеров строк с недетерминированным порядком, есть несколько методов, которые кажутся более безопасными, чем последнее необычное решение: использование констант времени выполнения на основе функций, использование подзапроса на основе константы, использование столбца с псевдонимом на основе на константе и используя переменную.
Как я объясняю в T-SQL, ошибки, подводные камни и передовой опыт — детерминизм, большинство функций в T-SQL оцениваются только один раз для каждой ссылки в запросе, а не один раз для каждой строки.Так обстоит дело даже с большинством недетерминированных функций, таких как GETDATE и RAND. Из этого правила очень мало исключений, таких как функции NEWID и CRYPT_GEN_RANDOM, которые оцениваются один раз для каждой строки. Большинство функций, таких как GETDATE, @@ SPID и многие другие, оцениваются один раз в начале запроса, а их значения затем считаются константами времени выполнения. Ссылка на такие функции не свертывается. Эти характеристики делают постоянную времени выполнения, основанную на функции, хорошим выбором в качестве элемента упорядочивания окон, и действительно, похоже, что T-SQL поддерживает ее.В то же время оптимизатор понимает, что на практике нет релевантности для упорядочивания, что позволяет избежать ненужных потерь производительности.
Вот пример использования функции GETDATE:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY GETDATE ()) AS n ОТ dbo.T1;
Этот запрос получает тот же план, что и ранее на рисунке 3.
Вот еще один пример использования функции @@ SPID (возвращающей идентификатор текущего сеанса):
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ЗАКАЗАТЬ @@ SPID) AS n ОТ dbo.Т1;
А как насчет функции PI? Попробуйте следующий запрос:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY PI ()) AS n ОТ dbo.T1;
Это не работает со следующей ошибкой:
Msg 5309, уровень 16, состояние 1, строка 153
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают константы как выражения предложения ORDER BY.
Такие функции, как GETDATE и @@ SPID, переоцениваются один раз за выполнение плана, поэтому их нельзя сворачивать на постоянной основе.PI всегда представляет одну и ту же константу, и поэтому константа сворачивается.
Как упоминалось ранее, очень мало функций, которые оцениваются один раз для каждой строки, например NEWID и CRYPT_GEN_RANDOM. Это делает их плохим выбором в качестве элемента упорядочивания окон, если вам нужен недетерминированный порядок — не путать со случайным порядком. Зачем платить ненужный штраф за сортировку?
Вот пример использования функции NEWID:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY NEWID ()) AS n ОТ dbo.Т1;
План этого запроса показан на рисунке 4, подтверждая, что SQL Server добавил явную сортировку на основе результата функции.
Рисунок 4: План запроса 3
Если вы действительно хотите, чтобы номера строк назначались в случайном порядке, во что бы то ни стало, это тот метод, который вы хотите использовать. Вам просто нужно знать, что это требует затрат на сортировку.
Использование подзапроса
Вы также можете использовать подзапрос, основанный на константе, в качестве выражения порядка окон (например,g., ЗАКАЗАТЬ (ВЫБРАТЬ «Без заказа»)). Также в этом решении оптимизатор SQL Server распознает отсутствие релевантности упорядочения и, следовательно, не навязывает ненужную сортировку и не ограничивает выбор механизма хранения теми, которые должны гарантировать порядок. Попробуйте выполнить следующий запрос в качестве примера:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY (SELECT «No Order»)) КАК n ОТ dbo.T1;
Вы получите тот же план, показанный ранее на рисунке 3.
Одним из больших преимуществ этой техники является то, что вы можете добавить свой индивидуальный подход.Может быть, вам действительно нравятся NULL:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY (SELECT NULL)) AS n ОТ dbo.T1;
Может быть, вам действительно нравится какой-то номер:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY (SELECT 42)) AS n ОТ dbo.T1;
Может быть, вы хотите отправить кому-нибудь сообщение:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ЗАКАЗАТЬ (ВЫБРАТЬ «Лилах, ты выйдешь за меня замуж?»)) КАК n ОТ dbo.T1;
Вы поняли.
Выполнимо, но неудобно
Есть несколько приемов, которые работают, но немного неудобны. Один из них — определить псевдоним столбца для выражения на основе константы, а затем использовать этот псевдоним столбца в качестве элемента упорядочивания окон. Это можно сделать либо с помощью табличного выражения, либо с помощью оператора CROSS APPLY и конструктора значений таблицы. Вот пример последнего:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ЗАКАЗАТЬ [Я немного уродлив]) КАК n FROM dbo.T1 CROSS APPLY (VALUES ('No Order')) AS A ([Я немного уродлив]);
Вы получите тот же план, что и ранее на рисунке 3.
Другой вариант — использовать переменную в качестве элемента упорядочивания окон:
ОБЪЯВИТЬ @ImABitUglyToo как INT = NULL; ВЫБЕРИТЕ id, grp, datacol, ROW_NUMBER () OVER (ЗАКАЗ @ImABitUglyToo) КАК n ОТ dbo.T1;
Этот запрос также получает план, показанный ранее на рисунке 3.
Что делать, если я использую свой собственный UDF?
Вы можете подумать, что использование вашей собственной UDF, возвращающей константу, может быть хорошим выбором в качестве элемента упорядочивания окон, если вам нужен недетерминированный порядок, но это не так.Рассмотрим в качестве примера следующее определение UDF:
ФУНКЦИЯ УДАЛЕНИЯ, ЕСЛИ СУЩЕСТВУЕТ dbo.YouWillRegretThis; ИДТИ СОЗДАТЬ ФУНКЦИЮ dbo.YouWillRegretThis () RETURNS INT В ВИДЕ НАЧИНАТЬ ВОЗВРАТ NULL КОНЕЦ; GO
Попробуйте использовать UDF в качестве условия упорядочивания окон, например (назовем этот запрос 4):
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (ORDER BY dbo.YouWillRegretThis ()) КАК n ОТ dbo.T1;
До SQL Server 2019 (или уровня параллельной совместимости <150) определяемые пользователем функции оцениваются для каждой строки.Даже если они вернут константу, они не будут встроены. Следовательно, с одной стороны, вы можете использовать такую UDF в качестве элемента упорядочивания окон, но с другой стороны, это приводит к штрафу за сортировку. Это подтверждается изучением плана этого запроса, как показано на рисунке 5.
Рисунок 5: План запроса 4
Начиная с SQL Server 2019, при уровне совместимости> = 150, такие определяемые пользователем функции становятся встроенными, что в основном замечательно, но в нашем случае приводит к ошибке:
Msg 5309, уровень 16, состояние 1, строка 217
Оконные функции, агрегаты и функции NEXT VALUE FOR не поддерживают константы как выражения предложения ORDER BY.
Таким образом, использование UDF, основанного на константе, в качестве элемента упорядочивания окон либо вызывает сортировку, либо вызывает ошибку в зависимости от версии SQL Server, которую вы используете, и уровня совместимости вашей базы данных. Короче говоря, не делайте этого.
Номера строк с разделами с недетерминированным порядком
Обычный вариант использования номеров секционированных строк на основе недетерминированного порядка — возврат любой строки для каждой группы. Учитывая, что по определению в этом сценарии существует элемент разделения, можно подумать, что безопасным методом в таком случае было бы использование элемента разделения окна также в качестве элемента упорядочивания окон.В качестве первого шага вы вычисляете номера строк следующим образом:
ВЫБРАТЬ id, grp, datacol, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО grp ORDER BY grp) КАК n ОТ dbo.T1;
План этого запроса показан на рисунке 6.
Рисунок 6: План запроса 5
Причина, по которой наш поддерживающий индекс сканируется со свойством Ordered: True, заключается в том, что SQL Server действительно должен обрабатывать строки каждого раздела как единое целое. Так было до фильтрации. Если вы фильтруете только одну строку на раздел, у вас есть варианты как на основе порядка, так и на основе хеширования.
Второй шаг — поместить запрос с вычислением номера строки в табличное выражение, а во внешнем запросе отфильтровать строку с номером строки 1 в каждом разделе, например:
С C AS ( ВЫБЕРИТЕ id, grp, datacol, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО grp ORDER BY grp) КАК n ОТ dbo.T1 ) ВЫБЕРИТЕ id, grp, datacol ОТ C ГДЕ n = 1;
Теоретически этот метод должен быть безопасным, но Пол Уайт обнаружил ошибку, которая показывает, что с помощью этого метода вы можете получить атрибуты из разных исходных строк в строке возвращаемого результата для каждой секции.Использование константы времени выполнения на основе функции или подзапроса, основанного на константе, поскольку элемент упорядочивания кажется безопасным даже в этом сценарии, поэтому убедитесь, что вместо этого вы используете такое решение, как следующее:
С C AS ( ВЫБЕРИТЕ id, grp, datacol, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО GRP ORDER BY (ВЫБЕРИТЕ «Нет порядка»)) AS n ОТ dbo.T1 ) ВЫБЕРИТЕ id, grp, datacol ОТ C ГДЕ n = 1;
Попытка вычислить номера строк на основе недетерминированного порядка является общей потребностью. Было бы неплохо, если бы T-SQL просто сделал предложение порядка окон необязательным для функции ROW_NUMBER, но это не так.Если нет, было бы неплохо, если бы в нем хотя бы разрешалось использовать константу в качестве элемента упорядочивания, но этот вариант тоже не поддерживается. Но если вы спросите вежливо, в форме подзапроса, основанного на константе, или константы времени выполнения, основанной на функции, SQL Server позволит это. Это два варианта, которые мне подходят больше всего. Мне не очень нравятся причудливые ошибочные выражения, которые, кажется, работают, поэтому я не могу рекомендовать этот вариант.
Гибкие элементы заказа — CSS: каскадные таблицы стилей
Новые методы компоновки, такие как Flexbox и Grid, дают возможность контролировать порядок содержимого.В этой статье мы рассмотрим способы, которыми вы можете изменить визуальный порядок вашего контента при использовании Flexbox. Мы также рассмотрим последствия переупорядочивания товаров с точки зрения доступности.
свойство flex-direction
может принимать одно из четырех значений:
-
ряд
-
колонка
-
ряд-обратный
-
колонка обратная
Первые два значения сохраняют элементы в том же порядке, в котором они появляются в исходном порядке документа, и отображают их последовательно, начиная с начальной строки.
Вторые два значения меняют местами элементы, меняя начальную и конечную строки.
Помните, что начальная строка относится к режимам записи. Приведенные выше примеры, связанные со строками, демонстрируют, как row
и row-reverse
работают на языке с письмом слева направо, например на английском. Если вы работаете с языком с письмом справа налево, например с арабским, тогда строка
будет начинаться справа, строка-перевернуть
слева.
Это может показаться изящным способом отображения элементов в обратном порядке, однако вы должны помнить, что элементы только визуально, отображаются в обратном порядке. В спецификации по этому поводу сказано следующее:
“Примечание. Возможности переупорядочения гибкого макета намеренно влияют только на визуальный рендеринг, оставляя порядок речи и навигацию на основе исходного порядка. Это позволяет авторам манипулировать визуальным представлением, оставляя неизменным исходный порядок для не-CSS UA и для линейных моделей, таких как речь и последовательная навигация.”- Заказ и ориентация
Если бы ваши элементы были ссылками или каким-либо другим элементом, к которому пользователь мог перейти, то порядок перехода был бы порядком, в котором эти элементы появляются в источнике документа, а не вашим визуальным порядком.
Если вы используете обратное значение или иным образом переупорядочиваете свои элементы, вам следует подумать, действительно ли вам нужно изменить логический порядок в источнике. Спецификация продолжается с предупреждением не использовать переупорядочивание для устранения проблем в вашем источнике:
«Авторы не должны использовать порядок или * -reverse значения flex-flow / flex-direction в качестве замены правильного упорядочивания источника, так как это может нарушить доступность документа.”
Примечание : В течение нескольких лет в Firefox была ошибка, из-за которой он пытался следовать визуальному порядку, а не исходному, что заставляло его вести себя иначе, чем другие браузеры. Теперь это исправлено. Вы всегда должны принимать исходный порядок как логический порядок документа, поскольку все современные пользовательские агенты будут следовать спецификации и делать это.
В приведенном ниже живом примере я добавил стиль фокуса, чтобы при переходе от ссылки к ссылке можно было видеть, какая из них выделена.Если вы измените порядок, используя flex-direction
, вы увидите, как порядок табуляции продолжает следовать порядку, в котором элементы перечислены в источнике.
Точно так же, как изменение значения flex-direction
не меняет порядок, в котором осуществляется переход к элементам, изменение этого значения не меняет порядок рисования. Это только визуальный переворот предметов.
В дополнение к изменению порядка визуального отображения гибких элементов на противоположный, вы можете настроить таргетинг на отдельные элементы и изменить их расположение в визуальном порядке с помощью свойства order
.
Свойство порядка предназначено для размещения элементов в порядковых группах . Это означает, что элементам присваивается целое число, которое представляет их группу. Затем элементы размещаются в визуальном порядке в соответствии с этим целым числом, сначала самые низкие значения. Если более одного элемента имеют одно и то же целочисленное значение, то в этой группе элементы располагаются в соответствии с исходным порядком.
В качестве примера у меня есть 5 гибких элементов, и я назначаю порядка
значений следующим образом:
- Исходный элемент 1:
заказ: 2
- Исходный элемент 2:
заказ: 3
- Исходный элемент 3:
заказ: 1
- Исходный элемент 4:
заказ: 3
- Исходный элемент 5:
заказ: 1
Эти элементы будут отображаться на странице в следующем порядке:
- Исходный элемент 3:
заказ: 1
- Исходный элемент 5:
заказ: 1
- Исходный элемент 1:
заказ: 2
- Исходный элемент 2:
заказ: 3
- Исходный элемент 4:
заказ: 3
Вы можете поиграть со значениями в этом живом примере ниже и посмотреть, как это меняет порядок.Кроме того, попробуйте изменить flex-direction
на row-reverse
и посмотрите, что произойдет - начальная строка переключается, поэтому порядок начинается с противоположной стороны.
Элементы
Flex имеют значение по умолчанию порядка
, равное 0
, поэтому элементы с целым числом больше 0 будут отображаться после всех элементов, которым не было задано явное значение порядка
.
Вы также можете использовать отрицательные значения с порядком, что может быть весьма полезно.Если вы хотите, чтобы сначала отображался один элемент, а порядок всех остальных элементов оставался неизменным, вы можете присвоить этому элементу порядок -1
. Поскольку это значение меньше 0, элемент всегда будет отображаться первым.
В приведенном ниже примере живого кода у меня есть элементы, расположенные с использованием Flexbox. Изменяя, какой элемент имеет активный класс
, назначенный ему в HTML, вы можете изменить, какой элемент отображается первым и, следовательно, становится на всю ширину вверху макета, а другие элементы отображаются под ним.
Элементы отображаются в том, что описано в спецификации как заказ-измененный документ заказ . Значение свойства order учитывается перед отображением элементов.
Order также изменяет порядок окраски предметов; элементы с более низким значением для порядка
будут окрашены первыми, а предметы с более высоким значением для порядка
будут окрашены позже.
Использование свойства order
имеет те же последствия для доступности, что и изменение направления с помощью flex-direction
.Использование order
изменяет порядок, в котором элементы окрашиваются, и порядок, в котором они отображаются визуально. Это не меняет порядок последовательной навигации по элементам. Поэтому, если пользователь перемещается между элементами, он может запутаться в вашем макете.
Обведя любой из живых примеров на этой странице, вы можете увидеть, как порядок потенциально создает странный опыт для тех, кто не использует какое-либо указывающее устройство.Чтобы узнать больше об этом несоответствии визуального порядка и логического порядка, а также о некоторых потенциальных проблемах, которые оно вызывает для доступности, см. Следующие ресурсы.
Иногда бывает полезным тот факт, что логический и, следовательно, порядок чтения гибких элементов отделен от визуального порядка. При осторожном использовании свойство order
может позволить легко реализовать некоторые полезные общие шаблоны.
У вас может быть дизайн, возможно, карточка, на которой будет отображаться новость.Заголовок новости - это ключевой момент, который нужно выделить, и он был бы элементом, к которому пользователь мог бы перейти, если бы он переходил между заголовками, чтобы найти контент, который хотел бы прочитать. На карте также есть дата; готовый дизайн, который мы хотим создать, выглядит примерно так.
Визуально дата отображается над заголовком в источнике. Однако, если карточка считывалась программой чтения с экрана, я бы предпочел, чтобы сначала объявлялось название, а затем дата публикации. Мы можем сделать это так, используя свойство order
.
Карта будет нашим гибким контейнером с flex-direction
, установленным в столбец. Затем я даю дату заказ
из -1
. Это поднимет его над заголовком.
Эти небольшие настройки представляют собой тот случай, когда свойство порядка
имеет смысл. Сохраняйте логический порядок, такой как порядок чтения и табуляции в документе, и поддерживайте его наиболее доступным и структурированным способом. Затем используйте заказ
для чисто визуальных настроек дизайна.При этом будьте осторожны, чтобы не переупорядочивать элементы, к которым можно получить доступ с клавиатуры, когда пользователь выполняет табуляцию. Особенно при использовании новых методов компоновки вы должны убедиться, что тестирование вашего браузера включает тестирование сайта только с помощью клавиатуры, а не с помощью мыши или сенсорного экрана. Вы быстро увидите, не затрудняют ли ваши варианты развития работу с контентом.
Отразить данные в Excel | Обратный порядок данных в столбце / строке
Иногда вам может потребоваться перевернуть данные в Excel, т.е.е., чтобы изменить порядок данных вверх ногами в вертикальном наборе данных и слева направо в горизонтальном наборе данных.
Итак, если вы думаете, что для этого в Excel должна быть встроенная функция, боюсь, вы будете разочарованы.
Хотя есть несколько способов перевернуть данные в Excel, встроенной функции нет. Но вы можете легко сделать это, используя простой трюк сортировки, формулы или VBA.
В этом уроке я покажу вам, как переворачивать данные в строках, столбцах и таблицах в Excel.
Итак, приступим!
Отразить данные с помощью SORT и вспомогательного столбца
Один из самых простых способов изменить порядок данных в Excel - использовать вспомогательный столбец, а затем использовать этот вспомогательный столбец для сортировки данных.
Отразить данные по вертикали (обратный порядок вверх ногами)
Предположим, у вас есть набор данных с именами в столбце, как показано ниже, и вы хотите перевернуть эти данные:
Ниже приведены шаги, чтобы перевернуть данные по вертикали:
- В соседнем столбце введите «Помощник» в качестве заголовка столбца.
- В столбце помощника введите ряд чисел (1,2,3 и т. Д.).Вы можете использовать показанные здесь методы, чтобы сделать это быстро.
- Выберите весь набор данных, включая вспомогательный столбец
- Щелкните вкладку «Данные»
- Щелкните значок «Сортировка»
- В диалоговом окне «Сортировка» выберите «Помощник» в поле « Сортировка по раскрывающемуся списку
- В раскрывающемся списке «Порядок» выберите «От наибольшего к наименьшему».
- Нажмите «ОК»
Вышеупомянутые шаги будут отсортировать данные на основе значений вспомогательного столбца, что также приведет к изменению порядка следования имена в данных.
После этого удалите вспомогательный столбец.
В этом примере я показал вам, как перевернуть данные, когда у вас всего один столбец, но вы также можете использовать тот же метод, если у вас есть вся таблица. Просто убедитесь, что вы выбрали всю таблицу, а затем использовали вспомогательный столбец для сортировки данных в порядке убывания.
Отразить данные по горизонтали
Вы также можете использовать ту же методологию, чтобы перевернуть данные по горизонтали в Excel.
В Excel есть возможность сортировать данные по горизонтали с помощью диалогового окна «Сортировка» (функция «Сортировать слева направо»).
Предположим, у вас есть таблица, показанная ниже, и вы хотите перевернуть эти данные по горизонтали.
Ниже приведены шаги для этого:
- В строке ниже введите «Помощник» в качестве заголовка строки
- В строке помощника введите ряд чисел (1,2,3 и скоро).
- Выберите весь набор данных, включая вспомогательную строку.
- Щелкните вкладку «Данные».
- Щелкните значок «Сортировка».
- В диалоговом окне «Сортировка» нажмите кнопку «Параметры».
- В открывшемся диалоговом окне нажмите «Сортировать слева направо».
- Нажмите «ОК»
- В раскрывающемся списке «Сортировать по» выберите строку 3 (или любую другую строку, в которой есть столбец вашего помощника)
- В раскрывающемся списке «Порядок» - вниз, выберите «От наибольшего к наименьшему».
- Нажмите «ОК»
Выполненные выше действия перевернут всю таблицу по горизонтали.
После этого вы можете удалить вспомогательный ряд.
Отразить данные с помощью формул
В Microsoft 365 появилось несколько новых формул, которые позволяют очень легко изменить порядок столбца или таблицы в Excel.
В этом разделе я покажу вам, как это сделать, используя формулу SORTBY (если вы используете Microsoft 365) или формулу INDEX (если вы не используете Microsoft 365).
Использование функции SORTBY ( доступно в Microsoft 365)
Предположим, у вас есть таблица, показанная ниже, и вы хотите перевернуть данные в этой таблице:
Для этого сначала скопируйте заголовки и поместите их там, где вы хотели бы перевернуть таблицу
Теперь используйте следующую формулу под ячейкой в крайнем левом заголовке:
= СОРТИРОВАТЬ ($ A $ 2: $ B $ 12, СТРОКА (A2: A12), - 1)
Формула выше сортирует данные и используя результат функции СТРОКА в качестве основы для их сортировки.
Функция ROW в этом случае вернет массив чисел, который представляет номера строк между указанным диапазоном (который в этом примере будет серией чисел, таких как 2, 3, 4 и т. Д.).
И поскольку третий аргумент этой формулы равен -1, это заставит формулу сортировать данные в порядке убывания.
Запись с наивысшим номером строки будет наверху, а запись с наименьшим номером правила - внизу, по существу меняя порядок данных.
После этого вы можете преобразовать формулу в значения, чтобы получить статическую таблицу.
Использование функции ИНДЕКС
Если у вас нет доступа к функции СОРТИРОВКА, не беспокойтесь - вы можете использовать замечательную функцию ИНДЕКС.
Предположим, у вас есть набор данных с именами, как показано ниже, и вы хотите перевернуть эти данные.
Ниже приведена формула для этого:
= ИНДЕКС ($ A $ 2: $ A $ 12, ROWS (A2: $ A $ 12))
Как работает эта формула?
В приведенной выше формуле используется функция ИНДЕКС, которая возвращает значение из ячейки на основе числа, указанного во втором аргументе.
Настоящая магия происходит во втором аргументе, где я использовал функцию ROWS.
Поскольку я заблокировал вторую часть ссылки в функции ROWS, в первой ячейке она вернет количество строк между A2 и A12, которое будет равно 11.
Но когда он идет вниз по строкам, первая ссылка изменится на A3, затем на A4 и так далее, в то время как вторая ссылка останется как есть, потому что я заблокировал ее и сделал ее абсолютной.
По мере того, как мы спускаемся по строкам, результат функции СТРОКИ будет уменьшаться на 1, с 11 до 10, до 9 и так далее.
И поскольку функция ИНДЕКС возвращает нам значение на основе числа во втором аргументе, это в конечном итоге даст нам данные в обратном порядке.
Вы можете использовать одну и ту же формулу, даже если у вас есть несколько столбцов в наборе данных. однако вам нужно будет указать второй аргумент, который будет указывать номер столбца, из которого должны быть извлечены данные.
Предположим, у вас есть набор данных, как показано ниже, и вы хотите изменить порядок всей таблицы:
Ниже приведена формула, которая сделает это за вас:
= ИНДЕКС ($ A $ 2: $ B $ 12 , ROWS (A2: $ A $ 12), COLUMNS ($ A $ 2: A2))
Это аналогичная формула, в которой я также добавил третий аргумент, указывающий номер столбца, из которого должно быть извлечено значение.
Чтобы сделать эту формулу динамической, я использовал функцию COLUMNS, которая продолжала бы изменять значение столбца с 1 на 2 до 3 при копировании вправо.
После этого вы можете преобразовать формулы в значения, чтобы получить статический результат.
Примечание. Когда вы используете формулу для изменения порядка набора данных в Excel, исходное форматирование не сохраняется. Если вам также нужно исходное форматирование для отсортированных данных, вы можете применить его вручную или скопировать и вставить форматирование из исходного набора данных в новый отсортированный набор данных.
Отразить данные с помощью VBA
Если перевернуть данные в Excel - это что-то делать это приходится довольно часто, можно также попробовать метод VBA.
С помощью кода макроса VBA вы можете один раз скопировать и вставить его в книгу в редакторе VBA, а затем повторно использовать его снова и снова в той же книге.
Вы также можете сохранить код в личной книге макросов или как надстройку Excel и иметь возможность использовать его в любой книге в вашей системе.
Ниже приведен код VBA, который переворачивает выбранные данные на листе по вертикали.
Sub FlipVerically () Кодекс Сумита Бансала с сайта TrumpExcel.com Dim TopRow как вариант Dim LastRow As Variant Dim StartNum As Integer Dim EndNum As Integer Заявление.ScreenUpdating = False StartNum = 1 EndNum = Selection.Rows.Count Делать, пока StartNumЧтобы использовать этот код, вам сначала нужно выбрать набор данных, который вы хотите инвертировать (исключая заголовки), а затем запустить этот код.
Как работает этот код?
Приведенный выше код сначала подсчитывает общее количество строк в наборе данных и присваивает его переменной EndNum.
Затем он использует цикл Do While, в котором происходит сортировка данных.
Он сортирует эти данные, беря первую и последнюю строки и меняя их местами. Затем он переходит во вторую строку во второй последней строке и меняет их местами. Затем он переходит в третий ряд в третьем последнем ряду и так далее.
Цикл заканчивается, когда вся сортировка завершена.
Он также использует свойство Application.ScreenUpdating и устанавливает для него значение FALSE во время выполнения кода, а затем возвращает его в значение TRUE, когда код завершает работу.
Это гарантирует, что вы не видите изменений, происходящих в реальном времени на экране, а также ускоряет процесс.
Как пользоваться кодом?
Чтобы скопировать и вставить этот код в редактор VB, выполните следующие действия:
- Откройте файл Excel, в который вы хотите добавить код VBA.
- Удерживая клавишу ALT, нажмите клавишу F-11 (вы также можете перейдите на вкладку «Разработчик» и щелкните значок Visual Basic)
- В открывшемся редакторе Visual Basic в левой части редактора VBA будет Project Explorer.Если вы его не видите, щелкните вкладку «Вид», а затем щелкните «Обозреватель проекта».
- Щелкните правой кнопкой мыши любой из объектов книги, в которую вы хотите добавить код.
- Перейдите во вкладку «Вставка» вариант, а затем нажмите на модуль. Это добавит новый модуль в книгу.
- Дважды щелкните значок модуля в проводнике проекта. Это откроет окно кода для этого модуля.
- Скопируйте и вставьте приведенный выше код VBA в окно кода
Чтобы запустить код макроса VBA, сначала выберите набор данных, который вы хотите перевернуть (за исключением заголовков).
Выбрав данные, перейдите в редактор VB и нажмите зеленую кнопку воспроизведения на панели инструментов или выберите любую строку в коде, а затем нажмите клавишу F5.
Итак, вот некоторые из методов, которые вы можете использовать чтобы перевернуть данные в Excel (т. е. изменить порядок набора данных в обратном порядке).
Все методы, которые я рассмотрел в этом руководстве (формулы, функция СОРТИРОВКИ и VBA), можно использовать для переворота данных по вертикали и горизонтали (вам нужно будет соответствующим образом настроить формулу и код VBA для горизонтального переворота данных) .
Надеюсь, вы нашли этот урок полезным.
Другие руководства по Excel, которые могут вам также понравиться:
Автоматическая нумерация строк - Excel
В отличие от других программ Microsoft Office, Excel не имеет кнопки для автоматической нумерации данных. Но вы можете легко добавлять последовательные числа к строкам данных, перетаскивая дескриптор заполнения, чтобы заполнить столбец серией чисел, или с помощью функции СТРОКА.
Совет: Если вы ищете более продвинутую систему автоматической нумерации для ваших данных и на вашем компьютере установлен Access, вы можете импортировать данные Excel в базу данных Access.В базе данных Access вы можете создать поле, которое автоматически генерирует уникальный номер, когда вы вводите новую запись в таблицу.
Что ты хочешь сделать?
Заполните столбец серией чисел
Выберите первую ячейку в диапазоне, который вы хотите заполнить.
Введите начальное значение серии.
Введите значение в следующую ячейку, чтобы установить шаблон.
Совет: Например, если вам нужны серии 1, 2, 3, 4, 5 ..., введите 1 и 2 в первых двух ячейках. Если вам нужны серии 2, 4, 6, 8 ..., введите 2 и 4 .
Выделите ячейки, содержащие начальные значения.
Примечание. В Excel 2013 и более поздних версиях кнопка Quick Analysis отображается по умолчанию при выборе нескольких ячеек, содержащих данные.Вы можете проигнорировать кнопку, чтобы завершить эту процедуру.
Перетащите маркер заполнения
по всему диапазону, который вы хотите заполнить.
Примечание. Когда вы перетаскиваете маркер заполнения через каждую ячейку, Excel отображает предварительный просмотр значения. Если вам нужен другой узор, перетащите маркер заливки, удерживая нажатой кнопку правой кнопки мыши, а затем выберите узор.
Для заполнения в порядке возрастания перетащите вниз или вправо.Для заполнения в порядке убывания перетащите вверх или влево.
Примечание: Эти числа не обновляются автоматически при добавлении, перемещении или удалении строк. Вы можете вручную обновить последовательную нумерацию, выбрав два числа в правильной последовательности, а затем перетащив маркер заполнения в конец пронумерованного диапазона.
Используйте функцию СТРОКА для нумерации строк
В первой ячейке диапазона, который вы хотите пронумеровать, введите = СТРОКА (A1) .
Функция ROW возвращает номер строки, на которую вы ссылаетесь. Например, = СТРОКА (A1) возвращает число 1 .
Перетащите маркер заполнения
по всему диапазону, который вы хотите заполнить.
Эти числа обновляются, когда вы сортируете их с вашими данными. Последовательность может быть прервана, если вы добавляете, перемещаете или удаляете строки.Вы можете вручную обновить нумерацию, выбрав два числа в правильной последовательности, а затем перетащив маркер заполнения в конец пронумерованного диапазона.
Если вы используете функцию ROW и хотите, чтобы числа вставлялись автоматически при добавлении новых строк данных, превратите этот диапазон данных в таблицу Excel. Все строки, добавленные в конец таблицы, нумеруются последовательно. Дополнительные сведения см. В разделе Создание или удаление таблицы Excel на листе.
Для ввода определенных порядковых числовых кодов, таких как номера заказов на поставку, можно использовать функцию СТРОКА вместе с функцией ТЕКСТ . Например, чтобы начать нумерованный список с использованием 000-001 , вы вводите формулу = ТЕКСТ (СТРОКА (A1), «000-000») в первую ячейку диапазона, который вы хотите пронумеровать, и затем перетащите маркер заполнения в конец диапазона.
Показать или скрыть маркер заполнения
Ручка заполнения
отображается по умолчанию, но вы можете включить или выключить его.
В Excel 2010 и более поздних версиях щелкните вкладку File , а затем щелкните Options .
В Excel 2007 нажмите кнопку Microsoft Office
, а затем щелкните Параметры Excel .
В категории Advanced в разделе Опции редактирования установите или снимите флажок Включить маркер заполнения и флажок с перетаскиванием ячейки, чтобы отобразить или скрыть маркер заполнения.
Примечание: Чтобы предотвратить замену существующих данных при перетаскивании маркера заполнения, убедитесь, что установлен флажок «Предупреждение перед перезаписью ячеек ». Если вы не хотите, чтобы Excel отображал сообщение о перезаписи ячеек, вы можете снять этот флажок.
См. Также
Обзор формул в Excel
Как избежать неправильных формул
Найдите и исправьте ошибки в формулах
Сочетания клавиш и функциональные клавиши Excel
Функции поиска и ссылки (ссылка)
Функции Excel (по алфавиту)
Функции Excel (по категориям)
Сетка JavaScript: Сортировка строк
На этой странице описывается, как получить сортировку данных сетки.Сортировка строк работает со всеми фреймворками
(например, Angular и React), а также простой JavaScript.Включить сортировку
Включите сортировку для столбцов, установив атрибут определения
сортируемого столбца
.
Затем вы можете отсортировать столбец, щелкнув заголовок столбца.const gridOptions = { columnDefs: [ {field: 'name', sortable: true}, {field: 'age', sortable: true}, {field: 'address'}, ], }
Чтобы включить сортировку для всех столбцов, установите сортировку в определении столбца по умолчанию.
const gridOptions = { defaultColDef: { сортируемый: правда }, columnDefs: [ {field: 'name'}, {field: 'age'}, {field: 'address', sortable: false}, ], }
Пользовательская сортировка
Пользовательская сортировка предоставляется на уровне столбца путем настройки компаратора для определения столбца.
const gridOptions = { columnDefs: [ { поле: 'возраст', компаратор: (значениеA, значениеB, nodeA, nodeB, isInverted) => valueA - значениеB }, { поле: 'имя', компаратор: (значениеA, значениеB, nodeA, nodeB, isInverted) => { если (значениеA == значениеB) вернуть 0; возврат (значениеA> значениеB)? 1: -1; } } ], }
Это следующие параметры:
valueA, valueB
: значения в ячейках для сравнения.Обычно сортировка выполняется только по этим значениям.nodeA, nodeB
: узлы строк для сортируемых строк. Их можно использовать, если для сравнения требуется дополнительная информация, например данные из других столбцов.isInverted
:true
для возрастания,false
для убывания.Пример: пользовательская сортировка
Пример ниже показывает следующее:
- Сортировка по умолчанию в столбце Athlete .
- Если столбец Год не отсортирован, отображается настраиваемый значок (стрелка вверх / вниз).
- Столбец Date содержит строки в качестве данных строки, но имеет настраиваемый компаратор, поэтому при сортировке этого столбца он сортируется как даты, а не как строки.
Пример: настраиваемые группы сортировки
При группировании строк можно переопределить порядок сортировки столбцов группы строк. При использовании столбца Auto Group Column укажите компаратор через свойство сетки
autoGroupColumnDef
.const gridOptions = { autoGroupColumnDef: { поле: 'спортсмен', компаратор: функция (значениеA, значениеB, nodeA, nodeB, isInverted) { return (valueA == valueB)? 0: (значениеA> значениеB)? 1: -1; }, }, }
Сортировка по нескольким столбцам
Можно сортировать по нескольким столбцам. Действие по умолчанию для сортировки по нескольким столбцам:
пользователь, удерживая нажатой клавишу Shift , щелкает заголовок столбца. Чтобы изменить действие по умолчанию, чтобы использовать
клавиша Ctrl (или клавиша Command в Apple) вместо этого устанавливает свойствоmultiSortKey = 'ctrl'
.Пример ниже демонстрирует следующее:
- Сетка по умолчанию сортируется по Странам , затем Спортсменам .
- Установлено свойство
multiSortKey = 'ctrl'
, поэтому сортировка по нескольким столбцам достигается удерживанием Ctrl и выбором нескольких столбцов.Анимация сортировки
Чтобы включить анимацию строк после сортировки, установите свойство сетки
animateRows = true
.Порядок сортировки
По умолчанию порядок сортировки следующий:
по возрастанию -> по убыванию -> нет .
Другими словами, когда вы щелкаете столбец, который не отсортирован, он будет отсортирован по возрастанию. Следующий щелчок
сделает сортировку по убыванию. Еще один щелчок удалит сортировку.Это поведение можно изменить, указав свой собственный
sortingOrder
на любом из
gridOptions
илиcolDef
. Если определено как вcolDef
, так и в
gridOptions
,colDef
получит предпочтение, что позволит вам определить общее значение по умолчанию,
а затем портной по столбцу.Пример: порядок сортировки и анимация
Пример ниже показывает анимацию строк плюс различные комбинации порядков сортировки следующим образом:
- Сетка по умолчанию: по возрастанию -> по убыванию -> без сортировки
- Колонка спортсменов: по возрастанию -> по убыванию
- Возраст столбца: по убыванию -> по возрастанию
- Страна столбца: по убыванию -> без сортировки
- Год столбца: только по возрастанию
API сортировки
Применяемая сортировка контролируется с помощью состояния столбца.В приведенных ниже примерах для управления сортировкой столбцов используется API состояния столбца.
Сортировка с акцентом
По умолчанию при сортировке не учитываются символы, зависящие от языкового стандарта. Если вам нужно сделать свой сорт
в зависимости от локали, вы можете настроить это, установив параметр сеткиacntedSort = true
.Использование этой функции дороже; если вам нужно отсортировать очень большой объем данных, вы можете обнаружить, что это
приводит к тому, что сортировка становится заметно медленнее.Следующий пример настроен для использования этой функции.
Пост-сортировка
Также можно выполнить некоторую пост-сортировку, если вам требуется дополнительный контроль над отсортированными строками.
Это обеспечивается функцией обратного вызова сетки
postSort
, как показано ниже:const gridOptions = {
postSort: rowNodes => {пусть nextInsertPos = 0;
for (let i = 0; i