{"id":144353,"date":"2024-08-01T14:10:07","date_gmt":"2024-08-01T07:10:07","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=144353"},"modified":"2026-04-29T15:38:48","modified_gmt":"2026-04-29T08:38:48","slug":"bill-of-quantity","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/","title":{"rendered":"Bill of Quantity (BOQ): Perannya dalam Perencanaan Biaya Proyek"},"content":{"rendered":"<p>Bill of Quantity (BOQ) merupakan dokumen yang digunakan untuk merinci kebutuhan pekerjaan, material, dan biaya dalam suatu proyek. Dokumen ini berfungsi sebagai acuan utama dalam perencanaan anggaran serta pengendalian pelaksanaan proyek, terutama di sektor konstruksi dan pengadaan.<\/p>\n<p>Dengan BOQ, perusahaan dapat memperoleh gambaran yang lebih jelas mengenai ruang lingkup proyek dan alokasi sumber daya yang dibutuhkan. Perencanaan yang terstruktur ini membantu meningkatkan transparansi serta memudahkan koordinasi antara pihak-pihak yang terlibat.<\/p>\n<p>Namun, <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/contoh-boq\/\">penyusunan BOQ yang baik<\/a> membutuhkan ketelitian tinggi agar perhitungan biaya dan volume pekerjaan tetap akurat. Kesalahan kecil dalam tahap awal dapat berdampak pada efisiensi dan kelancaran proyek, sehingga pemahaman yang tepat mengenai BOQ menjadi aspek penting dalam manajemen proyek.<\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#pengertian-bill-of-quantity-dalam-proyek-konstruksi\">Bill of Quantity (BOQ) berfungsi<\/a> sebagai dokumen utama yang merinci jenis pekerjaan, volume, serta estimasi biaya dalam suatu proyek.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Penerapan BOQ yang disusun dengan baik <a href=\"#fungsi-boq-bagi-perusahaan-dan-manajemen-proyek\">membantu perusahaan menjaga efisiensi biaya<\/a> dan meningkatkan akurasi perhitungan sejak tahap awal proyek.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#komponen-utama-dalam-bill-of-quantity\">Karakteristik utama BOQ<\/a> mencakup penyajian data yang transparan, terukur secara kuantitatif, serta detail.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n<!-- \t\t\t<div class=\"button-wrapper\">\r\n\t\t\t\t<a href=\"https:\/\/www.equiperp.com\/tour-produk-gratis\/?medium=key-takeaways\" class=\"submit-button\">Klik untuk Demo Gratis!<\/a>\r\n\t\t\t<\/div> -->\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2><strong>Pengertian Bill of Quantity dalam Proyek Konstruksi<\/strong><\/h2>\n<p><span id=\"a\">Bill of Quantity (BOQ) adalah dokumen yang mencantumkan seluruh item pekerjaan dalam suatu proyek konstruksi beserta volume, satuan ukur, harga satuan, dan total biayanya. Komponen standarnya meliputi nomor item, uraian pekerjaan, unit pengukuran (m\u00b2, m\u00b3, kg, dan sebagainya), kuantitas, serta harga per unit.<\/span><\/p>\n<p>Dokumen ini juga mencakup pekerjaan jasa seperti pemasangan scaffolding, mobilisasi alat berat, atau pengujian kualitas beton. Artinya, BOQ merekam apa yang dikerjakan, bukan hanya apa yang dibeli.Dalam proyek konstruksi di Indonesia, BOQ menjadi dasar utama saat proses tender.<\/p>\n<p>Kontraktor mengisi harga satuan pada setiap item BOQ, lalu owner membandingkan penawaran dari beberapa kontraktor secara apple-to-apple. Tanpa BOQ yang rinci, perbandingan harga antar-kontraktor jadi tidak setara karena masing-masing bisa mengasumsikan lingkup kerja yang berbeda.<\/p>\n<p>Misalnya, pada proyek pembangunan ruko tiga lantai, BOQ memecah pekerjaan struktur menjadi item seperti galian tanah (volume 120 m\u00b3), beton bertulang K-300 untuk kolom (18 m\u00b3), bekisting (245 m\u00b2), dan pembesian (3.200 kg). Jika volume galian ternyata meleset 20% karena kondisi tanah di lapangan berbeda dari asumsi awal, penyesuaian bisa langsung dihitung pada item spesifik itu tanpa mengacak seluruh anggaran.<\/p>\n<h2><strong>Fungsi BOQ bagi Perusahaan dan Manajemen Proyek<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-144355\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-300x169.webp\" alt=\"Bill of Quantity \" width=\"655\" height=\"369\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2-1068x601.webp 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity-2.webp 1200w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><span id=\"b\">Menggunakan <em>Bill of Quantities<\/em> (BOQ) dapat memberikan berbagai manfaat signifikan bagi perusahaan. Berikut fungsi utamanya dalam praktik:<\/span><\/p>\n<h3><strong>1. Dasar perbandingan harga saat tender<\/strong><\/h3>\n<p>Saat owner membuka tender, BOQ menjadi format standar yang harus diisi oleh setiap kontraktor. Setiap peserta mengisi harga satuan pada item pekerjaan yang sama, sehingga evaluasi penawaran bisa dilakukan secara setara.<\/p>\n<p>Tanpa BOQ, satu kontraktor bisa memasukkan pekerjaan bekisting dalam harga beton, sementara kontraktor lain memisahkannya. Akibatnya, owner kesulitan membandingkan mana yang lebih murah.<\/p>\n<h3><strong>2. Kontrol realisasi biaya selama pelaksanaan<\/strong><\/h3>\n<p>Selama proyek berjalan, BOQ digunakan untuk membandingkan volume pekerjaan yang sudah selesai dengan volume yang direncanakan. Project manager bisa langsung melihat jika pekerjaan galian tanah sudah menyerap 80% anggaran padahal baru selesai 60% volume.<\/p>\n<p>Deviasi seperti ini terdeteksi per item, bukan baru ketahuan saat total budget habis.<\/p>\n<h3><strong>3. Acuan progres dan termin pembayaran<\/strong><\/h3>\n<p>Pembayaran kontraktor biasanya mengikuti progres pekerjaan yang tercatat di BOQ. Misalnya, jika pekerjaan pondasi sudah selesai 100% dan pekerjaan struktur baru 40%, termin pembayaran dihitung berdasarkan persentase itu dikalikan harga satuan masing-masing item.<\/p>\n<p>Ini mencegah kontraktor dibayar lebih dari pekerjaan yang sudah dikerjakan, sekaligus memastikan cash flow proyek terjaga.<\/p>\n<h3><strong>4. Dokumentasi perubahan pekerjaan (variation order)<\/strong><\/h3>\n<p>Proyek konstruksi jarang berjalan persis sesuai rencana awal. Ketika ada perubahan desain atau kondisi lapangan yang berbeda dari asumsi, BOQ menjadi dokumen rujukan untuk menghitung selisih biaya.<\/p>\n<p>Jika volume pekerjaan beton bertambah 15 m\u00b3 dari rencana, perhitungan biaya tambahannya langsung mengacu pada harga satuan yang sudah disepakati di BOQ, bukan negosiasi ulang dari nol.<\/p>\n<h3><strong>5. Bahan evaluasi proyek setelah selesai<\/strong><\/h3>\n<p>Setelah proyek selesai, BOQ awal dibandingkan dengan realisasi aktual untuk mengevaluasi akurasi estimasi. Data ini berguna untuk proyek berikutnya: jika estimasi pekerjaan plesteran konsisten meleset 10\u201315% di beberapa proyek terakhir, tim estimator bisa menyesuaikan asumsi volume untuk proyek mendatang.<\/p>\n<style>\r\n\t#baca-juga {\r\n\t\tpadding: 16px;\r\n\t\tbackground-color: #f7eaea;\r\n\t\tborder-left: 3px solid #af2828;\r\n\t\tfont-weight: 500;\r\n\t\tmargin-bottom: 26px;\r\n\t}\r\n\t\r\n\t#baca-juga a {\r\n\t\tcolor: #af2828 !important;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t}\r\n\t\r\n\t#baca-juga a:hover {\r\n\t\tcolor: #af282880 !important;\r\n\t}\r\n<\/style>\r\n\r\n<div id=\"baca-juga\">\r\n\t<span>Baca juga: <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/tips-menyusun-deliverable-proyek-agar-pengerjaannya-lebih-mudah\/\">6 Tips Menyusun Deliverable Proyek Agar Pengerjaan Proyek Berjalan Lancar<\/a><\/span>\r\n<\/div>\n<h2><strong>Komponen Utama dalam Bill of Quantity<\/strong><\/h2>\n<div style=\"font-family: 'DM Serif Display', Georgia, serif; background-color: #fafaf9; max-width: 820px; margin: 0 auto; padding: 48px 36px 56px; border: 1px solid #e7e5e4; position: relative; overflow: hidden;\">\n<p><!-- Decorative line --><\/p>\n<div style=\"text-align: center; margin-bottom: 44px;\">\n<div style=\"display: inline-block; width: 60px; height: 1px; background-color: #a83249;\"><\/div>\n<div style=\"display: inline-block; width: 6px; height: 6px; background-color: #a83249; border-radius: 50%; margin: 0 10px; vertical-align: middle;\"><\/div>\n<div style=\"display: inline-block; width: 60px; height: 1px; background-color: #a83249;\"><\/div>\n<\/div>\n<p><!-- Item 1 - Icon Left --><\/p>\n<div style=\"display: flex; flex-direction: row; align-items: flex-start; margin-bottom: 40px; position: relative;\">\n<div style=\"position: absolute; left: -8px; top: -18px; font-family: 'DM Serif Display', Georgia, serif; font-size: 110px; font-weight: 400; color: rgba(168,50,73,0.06); line-height: 1; z-index: 0;\">01<\/div>\n<div style=\"flex-shrink: 0; width: 72px; height: 72px; background-color: #fff; border: 1.5px solid #e7e5e4; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-right: 24px; z-index: 1; box-shadow: 0 2px 8px rgba(0,0,0,0.04);\"><img decoding=\"async\" loading=\"lazy\" style=\"width: 38px; height: 38px;\" src=\"https:\/\/cdn-icons-png.flaticon.com\/128\/10473\/10473293.png\" alt=\"Nomor Item\" \/><\/div>\n<div style=\"flex: 1; z-index: 1;\">\n<div style=\"display: flex; align-items: center; margin-bottom: 6px;\">\n<p><span style=\"display: inline-block; background-color: #a83249; color: #fff; font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 10px; font-weight: bold; padding: 2px 8px; border-radius: 2px; margin-right: 10px;\">01<\/span><\/p>\n<h3 style=\"font-family: 'DM Serif Display', Georgia, serif; font-size: 20px; font-weight: 400; color: #1c1917; margin: 0;\">Nomor Item<\/h3>\n<\/div>\n<p style=\"font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 13.5px; color: #57534e; line-height: 1.7; margin: 0;\">Kode identifikasi setiap pos pekerjaan. Mengikuti struktur hierarki \u2014 misalnya <strong style=\"color: #1c1917;\">01<\/strong> untuk pekerjaan persiapan, <strong style=\"color: #1c1917;\">02<\/strong> untuk pekerjaan tanah, <strong style=\"color: #1c1917;\">03<\/strong> untuk struktur. Setiap pihak bisa merujuk item yang sama tanpa ambigu.<\/p>\n<\/div>\n<\/div>\n<p><!-- Item 2 - Icon Right --><\/p>\n<div style=\"display: flex; flex-direction: row-reverse; align-items: flex-start; margin-bottom: 40px; position: relative;\">\n<div style=\"position: absolute; right: -8px; top: -18px; font-family: 'DM Serif Display', Georgia, serif; font-size: 110px; font-weight: 400; color: rgba(168,50,73,0.06); line-height: 1; z-index: 0; text-align: right;\">02<\/div>\n<div style=\"flex-shrink: 0; width: 72px; height: 72px; background-color: #fff; border: 1.5px solid #e7e5e4; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-left: 24px; z-index: 1; box-shadow: 0 2px 8px rgba(0,0,0,0.04);\"><img decoding=\"async\" loading=\"lazy\" style=\"width: 38px; height: 38px;\" src=\"https:\/\/cdn-icons-png.flaticon.com\/128\/2991\/2991106.png\" alt=\"Uraian Pekerjaan\" \/><\/div>\n<div style=\"flex: 1; z-index: 1; text-align: right;\">\n<div style=\"display: flex; flex-direction: row-reverse; align-items: center; margin-bottom: 6px;\">\n<p><span style=\"display: inline-block; background-color: #a83249; color: #fff; font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 10px; font-weight: bold; padding: 2px 8px; border-radius: 2px; margin-left: 10px;\">02<\/span><\/p>\n<h3 style=\"font-family: 'DM Serif Display', Georgia, serif; font-size: 20px; font-weight: 400; color: #1c1917; margin: 0;\">Uraian Pekerjaan<\/h3>\n<\/div>\n<p style=\"font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 13.5px; color: #57534e; line-height: 1.7; margin: 0;\">Deskripsi spesifik apa yang harus dikerjakan, termasuk spesifikasi teknis. Contoh: &#8220;beton kolom K-300, dimensi 40\u00d740 cm.&#8221; Semakin spesifik uraian, semakin kecil ruang perbedaan interpretasi antar-kontraktor.<\/p>\n<\/div>\n<\/div>\n<p><!-- Item 3 - Icon Left --><\/p>\n<div style=\"display: flex; flex-direction: row; align-items: flex-start; margin-bottom: 40px; position: relative;\">\n<div style=\"position: absolute; left: -8px; top: -18px; font-family: 'DM Serif Display', Georgia, serif; font-size: 110px; font-weight: 400; color: rgba(168,50,73,0.06); line-height: 1; z-index: 0;\">03<\/div>\n<div style=\"flex-shrink: 0; width: 72px; height: 72px; background-color: #fff; border: 1.5px solid #e7e5e4; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-right: 24px; z-index: 1; box-shadow: 0 2px 8px rgba(0,0,0,0.04);\"><img decoding=\"async\" loading=\"lazy\" style=\"width: 38px; height: 38px;\" src=\"https:\/\/cdn-icons-png.flaticon.com\/128\/3650\/3650625.png\" alt=\"Satuan Ukur\" \/><\/div>\n<div style=\"flex: 1; z-index: 1;\">\n<div style=\"display: flex; align-items: center; margin-bottom: 6px;\">\n<p><span style=\"display: inline-block; background-color: #a83249; color: #fff; font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 10px; font-weight: bold; padding: 2px 8px; border-radius: 2px; margin-right: 10px;\">03<\/span><\/p>\n<h3 style=\"font-family: 'DM Serif Display', Georgia, serif; font-size: 20px; font-weight: 400; color: #1c1917; margin: 0;\">Satuan Ukur<\/h3>\n<\/div>\n<p style=\"font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 13.5px; color: #57534e; line-height: 1.7; margin: 0;\">Menentukan cara volume pekerjaan dihitung. Galian tanah dalam <strong style=\"color: #1c1917;\">m\u00b3<\/strong>, keramik dalam <strong style=\"color: #1c1917;\">m\u00b2<\/strong>, pembesian dalam <strong style=\"color: #1c1917;\">kg<\/strong>. Satuan yang salah bisa menyebabkan selisih harga yang signifikan saat realisasi.<\/p>\n<\/div>\n<\/div>\n<p><!-- Item 4 - Icon Right --><\/p>\n<div style=\"display: flex; flex-direction: row-reverse; align-items: flex-start; margin-bottom: 40px; position: relative;\">\n<div style=\"position: absolute; right: -8px; top: -18px; font-family: 'DM Serif Display', Georgia, serif; font-size: 110px; font-weight: 400; color: rgba(168,50,73,0.06); line-height: 1; z-index: 0; text-align: right;\">04<\/div>\n<div style=\"flex-shrink: 0; width: 72px; height: 72px; background-color: #fff; border: 1.5px solid #e7e5e4; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-left: 24px; z-index: 1; box-shadow: 0 2px 8px rgba(0,0,0,0.04);\"><img decoding=\"async\" loading=\"lazy\" style=\"width: 38px; height: 38px;\" src=\"https:\/\/cdn-icons-png.flaticon.com\/128\/10473\/10473068.png\" alt=\"Volume\" \/><\/div>\n<div style=\"flex: 1; z-index: 1; text-align: right;\">\n<div style=\"display: flex; flex-direction: row-reverse; align-items: center; margin-bottom: 6px;\">\n<p><span style=\"display: inline-block; background-color: #a83249; color: #fff; font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 10px; font-weight: bold; padding: 2px 8px; border-radius: 2px; margin-left: 10px;\">04<\/span><\/p>\n<h3 style=\"font-family: 'DM Serif Display', Georgia, serif; font-size: 20px; font-weight: 400; color: #1c1917; margin: 0;\">Volume \/ Kuantitas<\/h3>\n<\/div>\n<p style=\"font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 13.5px; color: #57534e; line-height: 1.7; margin: 0;\">Jumlah pekerjaan berdasarkan satuan ukur yang ditentukan, dihitung dari gambar kerja. Contoh: galian tanah <strong style=\"color: #1c1917;\">120 m\u00b3<\/strong>, pembesian <strong style=\"color: #1c1917;\">3.200 kg<\/strong>. Kesalahan volume 20% langsung berarti 20% biaya yang tidak teranggarkan.<\/p>\n<\/div>\n<\/div>\n<p><!-- Item 5 - Icon Left --><\/p>\n<div style=\"display: flex; flex-direction: row; align-items: flex-start; margin-bottom: 12px; position: relative;\">\n<div style=\"position: absolute; left: -8px; top: -18px; font-family: 'DM Serif Display', Georgia, serif; font-size: 110px; font-weight: 400; color: rgba(168,50,73,0.06); line-height: 1; z-index: 0;\">05<\/div>\n<div style=\"flex-shrink: 0; width: 72px; height: 72px; background-color: #fff; border: 1.5px solid #e7e5e4; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-right: 24px; z-index: 1; box-shadow: 0 2px 8px rgba(0,0,0,0.04);\"><img decoding=\"async\" loading=\"lazy\" style=\"width: 38px; height: 38px;\" src=\"https:\/\/cdn-icons-png.flaticon.com\/128\/2830\/2830284.png\" alt=\"Harga Satuan\" \/><\/div>\n<div style=\"flex: 1; z-index: 1;\">\n<div style=\"display: flex; align-items: center; margin-bottom: 6px;\">\n<p><span style=\"display: inline-block; background-color: #a83249; color: #fff; font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 10px; font-weight: bold; padding: 2px 8px; border-radius: 2px; margin-right: 10px;\">05<\/span><\/p>\n<h3 style=\"font-family: 'DM Serif Display', Georgia, serif; font-size: 20px; font-weight: 400; color: #1c1917; margin: 0;\">Harga Satuan &amp; Total Harga<\/h3>\n<\/div>\n<p style=\"font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 13.5px; color: #57534e; line-height: 1.7; margin: 0;\">Harga per item pekerjaan (misal <strong style=\"color: #1c1917;\">Rp 1.200.000\/m\u00b3<\/strong> untuk beton K-300) dikalikan volume menghasilkan total harga per item. Jumlah seluruh item = estimasi biaya proyek keseluruhan.<\/p>\n<\/div>\n<\/div>\n<p><!-- Bottom decorative line --><\/p>\n<div style=\"text-align: center; margin-top: 36px; margin-bottom: 24px;\">\n<div style=\"display: inline-block; width: 60px; height: 1px; background-color: #a83249;\"><\/div>\n<div style=\"display: inline-block; width: 6px; height: 6px; background-color: #a83249; border-radius: 50%; margin: 0 10px; vertical-align: middle;\"><\/div>\n<div style=\"display: inline-block; width: 60px; height: 1px; background-color: #a83249;\"><\/div>\n<\/div>\n<p><!-- Footer callout --><\/p>\n<div style=\"background-color: #fff; border: 1.5px solid #e7e5e4; border-left: 4px solid #a83249; border-radius: 4px; padding: 18px 24px; text-align: center;\">\n<p style=\"font-family: 'DM Serif Display', Georgia, serif; font-size: 15px; color: #1c1917; margin: 0 0 4px; line-height: 1.5;\">BOQ yang lengkap = perbandingan tender yang setara,<\/p>\n<p style=\"font-family: 'DM Serif Display', Georgia, serif; font-size: 15px; color: #1c1917; margin: 0; line-height: 1.5;\">kontrol biaya yang terukur, dan risiko overbudget yang lebih kecil.<\/p>\n<\/div>\n<\/div>\n<p><span id=\"c\">BOQ yang disusun dengan baik umumnya memuat lima komponen standar. Masing-masing punya peran spesifik agar dokumen bisa digunakan sebagai acuan kerja, bukan sekadar formalitas administrasi.<\/span><\/p>\n<h3><strong>1. Nomor item <\/strong><\/h3>\n<p>Berfungsi sebagai kode identifikasi setiap pos pekerjaan. Penomoran ini biasanya mengikuti struktur hierarki. Misalnya 01 untuk pekerjaan persiapan, 02 untuk pekerjaan tanah, 03 untuk pekerjaan struktur, dan seterusnya. Dengan sistem ini, setiap pihak bisa merujuk item yang sama tanpa ambigu saat diskusi atau negosiasi.<\/p>\n<h3><strong>2. Uraian pekerjaan <\/strong><\/h3>\n<p>Menjelaskan secara spesifik apa yang harus dikerjakan pada setiap item, termasuk spesifikasi teknis yang berlaku. Misalnya, item &#8220;pekerjaan beton kolom&#8221; tidak cukup ditulis begitu saja.<\/p>\n<p>Uraiannya perlu mencantumkan mutu beton (K-300), dimensi kolom (40\u00d740 cm), dan metode pengecoran yang digunakan. Semakin spesifik uraian, semakin kecil ruang interpretasi yang berbeda antar-kontraktor.<\/p>\n<h3><strong>3. Satuan ukur <\/strong><\/h3>\n<p>Menentukan bagaimana volume pekerjaan dihitung. Pekerjaan galian tanah diukur dalam m\u00b3, pemasangan keramik dalam m\u00b2, pembesian dalam kg, dan pekerjaan pengecatan kadang dalam m\u00b2 atau liter cat.<\/p>\n<p>Pemilihan satuan yang tepat menghindari miskomunikasi, misalnya, jika pekerjaan plesteran dihitung dalam m\u00b2 tapi kontraktor mengira dalam m\u00b3, selisih harganya bisa signifikan.<\/p>\n<h3><strong>4. Volume atau kuantitas <\/strong><\/h3>\n<p>mencantumkan jumlah pekerjaan berdasarkan satuan ukur yang sudah ditentukan. Angka ini dihitung dari gambar kerja dan biasanya diverifikasi oleh quantity surveyor.<\/p>\n<p>Kesalahan volume di tahap ini langsung berdampak pada total biaya, volume galian yang tercatat 100 m\u00b3 padahal seharusnya 120 m\u00b3 berarti ada 20% biaya yang tidak teranggarkan.<\/p>\n<h3><strong>5. Harga satuan dan total harga <\/strong><\/h3>\n<p>melengkapi BOQ sebagai dokumen anggaran. Harga satuan diisi per item pekerjaan (misalnya Rp 1.200.000\/m\u00b3 untuk beton K-300), lalu dikalikan volume untuk mendapatkan total harga per item. Jumlah seluruh total harga item menghasilkan estimasi biaya proyek secara keseluruhan<\/p>\n<p>Penggunaan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/7-software-rab-kontraktor-terbaik-untuk-manajemen-prakonstruksi\/\">aplikasi hitung RAB bangunan<\/a> dapat lebih lanjut mendukung upaya ini dengan menyediakan alat yang canggih untuk perhitungan anggaran yang tepat dan manajemen biaya yang efisien.<\/p>\n<h2><strong>Perbedaan BOQ dan RAB dalam Perencanaan Anggaran<\/strong><\/h2>\n<p>Meskipun keduanya bertujuan untuk mengatur biaya dan sumber daya, <em>bill of quantity<\/em> dengan RAB memiliki karakteristik dan fungsi yang berbeda yang mempengaruhi cara penggunaannya dalam berbagai konteks bisnis.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; font-family: 'Segoe UI', Tahoma, sans-serif; font-size: 14px; margin: 24px 0;\">\n<thead>\n<tr style=\"background-color: #a83249; color: #fff;\">\n<th style=\"padding: 14px 16px; text-align: left; font-weight: 600; width: 22%;\">Aspek<\/th>\n<th style=\"padding: 14px 16px; text-align: left; font-weight: 600; width: 39%;\">BOQ (Bill of Quantity)<\/th>\n<th style=\"padding: 14px 16px; text-align: left; font-weight: 600; width: 39%;\">RAB (Rencana Anggaran Biaya)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #fafaf9;\">\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; font-weight: 600; color: #1c1917;\">Fokus utama<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Merinci <strong>setiap item pekerjaan<\/strong> beserta volume dan harga satuannya. Satu item = satu baris.<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Menghitung <strong>total biaya proyek<\/strong> secara keseluruhan, termasuk overhead, profit, pajak, dan kontingensi.<\/td>\n<\/tr>\n<tr style=\"background-color: #fff;\">\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; font-weight: 600; color: #1c1917;\">Siapa yang menyusun<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Quantity surveyor atau estimator, berdasarkan gambar kerja dan spesifikasi teknis.<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Tim estimator atau manajemen proyek, dengan input dari BOQ, data harga pasar, dan kebijakan perusahaan.<\/td>\n<\/tr>\n<tr style=\"background-color: #fafaf9;\">\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; font-weight: 600; color: #1c1917;\">Kapan digunakan<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Saat tender (kontraktor mengisi harga satuan), pelaksanaan (kontrol volume), dan serah terima (verifikasi pekerjaan).<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Saat perencanaan awal (approval budget), pengajuan pendanaan, dan evaluasi kelayakan proyek.<\/td>\n<\/tr>\n<tr style=\"background-color: #fff;\">\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; font-weight: 600; color: #1c1917;\">Level detail<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Sangat detail per item, misalnya &#8220;beton K-300 kolom 40\u00d740, volume 18 m\u00b3, harga Rp 1.200.000\/m\u00b3.&#8221;<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Lebih agregat, misalnya &#8220;Total pekerjaan struktur: Rp 850.000.000&#8221; tanpa memecah per item pekerjaan.<\/td>\n<\/tr>\n<tr style=\"background-color: #fafaf9;\">\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; font-weight: 600; color: #1c1917;\">Hubungan<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Menjadi <strong>input<\/strong> untuk penyusunan RAB. Data harga dan volume dari BOQ dipakai sebagai basis kalkulasi.<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e7e5e4; color: #57534e;\">Merupakan <strong>output akhir<\/strong> yang merangkum seluruh biaya, termasuk data dari BOQ ditambah biaya non-teknis.<\/td>\n<\/tr>\n<tr style=\"background-color: #fff;\">\n<td style=\"padding: 12px 16px; font-weight: 600; color: #1c1917;\">Contoh isi<\/td>\n<td style=\"padding: 12px 16px; color: #57534e;\">Item: Galian tanah \u00b7 Satuan: m\u00b3 \u00b7 Volume: 120 \u00b7 Harga satuan: Rp 85.000 \u00b7 Total: Rp 10.200.000<\/td>\n<td style=\"padding: 12px 16px; color: #57534e;\">Pekerjaan tanah: Rp 45 jt \u00b7 Struktur: Rp 850 jt \u00b7 Overhead 10%: Rp 89,5 jt \u00b7 Profit 8%: Rp 71,6 jt \u00b7 <strong>Grand Total: Rp 1,056 M<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Memahami perbedaan ini akan membantu perusahaan dalam mengelola anggaran dan sumber daya dengan lebih efisien, serta memastikan keselarasan antara perencanaan dan pelaksanaan proyek.<\/p>\n<h2><strong>Kesimpulan<\/strong><\/h2>\n<p>Bill of Quantity (BOQ) memiliki peran penting dalam perencanaan dan pengendalian biaya proyek. Dengan BOQ, perusahaan dapat memastikan setiap pekerjaan dan kebutuhan material tercatat secara jelas, sehingga risiko kesalahan perhitungan dan pemborosan dapat diminimalkan.<\/p>\n<p>Pengelolaan BOQ yang baik juga membantu meningkatkan transparansi anggaran serta mempermudah proses evaluasi dan pengawasan proyek. Dalam praktiknya, penyusunan BOQ secara manual sering kali membutuhkan ketelitian tinggi dan waktu yang tidak sedikit.<\/p>\n<p>Oleh karena itu, pemanfaatan sistem digital untuk mengelola BOQ dapat menjadi alternatif bagi perusahaan yang ingin meningkatkan efisiensi dan akurasi. Melalui <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">konsultasi gratis<\/a>, perusahaan dapat memahami bagaimana teknologi ini mendukung perencanaan anggaran dan pengelolaan proyek secara lebih optimal.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Mobile.webp\" alt=\"HashConstructionSuite\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<h2><strong>Pertanyaan Seputar Bill of Quantity<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa saja isi BOQ?<\/strong><\/summary>\n<p>BoQ standar terdiri dari daftar item (dengan nomor dan deskripsi), unit pengukuran, kuantitas, biaya per unit, dan total biaya per item.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa perbedaan BOQ dengan RAB?<\/strong><\/summary>\n<p>Baik RAB maupun BOQ sebenarnya memiliki tujuan yang sama. Hanya saja perbedaannya terletak pada karakteristik. Jika BOQ tidak mencantumkan harga satuan, RAB perlu mencantumkannya. Kemudian, apabila RAB maka harganya bisa mengikat sedangkan BOQ tidak mengikat.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa yang dimaksud dengan quantity take off?<\/strong><span style=\"background-color: #e8e8e8;\"><strong><br \/>\n<\/strong><\/span><\/summary>\n<p>Quantity Take Off (QTO) adalah pengukuran detail bahan dan bahan yang dibutuhkan untuk menyelesaikan proyek konstruksi. Penelitian ini bertujuan untuk menganalisis perbandingan Quantity Take Off pekerjaan struktur dengan metode yang berbeda.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"Apa saja isi BOQ?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"BoQ standar terdiri dari daftar item (dengan nomor dan deskripsi), unit pengukuran, kuantitas, biaya per unit, dan total biaya per item.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apa perbedaan BOQ dengan RAB?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Baik RAB maupun BOQ sebenarnya memiliki tujuan yang sama. Hanya saja perbedaannya terletak pada karakteristik. Jika BOQ tidak mencantumkan harga satuan, RAB perlu mencantumkannya. Kemudian, apabila RAB maka harganya bisa mengikat sedangkan BOQ tidak mengikat.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apa yang dimaksud dengan quantity take off?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Quantity Take Off (QTO) adalah pengukuran detail bahan dan bahan yang dibutuhkan untuk menyelesaikan proyek konstruksi. Penelitian ini bertujuan untuk menganalisis perbandingan Quantity Take Off pekerjaan struktur dengan metode yang berbeda.\"\n    }\n  }]\n}\n<\/script><\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Bill of Quantity (BOQ) merupakan dokumen yang digunakan untuk merinci kebutuhan pekerjaan, material, dan biaya dalam suatu proyek. Dokumen ini berfungsi sebagai acuan utama dalam perencanaan anggaran serta pengendalian pelaksanaan proyek, terutama di sektor konstruksi dan pengadaan. Dengan BOQ, perusahaan dapat memperoleh gambaran yang lebih jelas mengenai ruang lingkup proyek dan alokasi sumber daya yang [&hellip;]<\/p>\n","protected":false},"author":222,"featured_media":144354,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-144353","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-construction"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Bill of Quantity (BOQ): Definisi dan Perbedaannya dengan RAB<\/title>\n<meta name=\"description\" content=\"Bill of Quantity adalah dokumen yang merinci semua komponen biaya dan kuantitas material yang diperlukan dalam suatu tugas atau proyek.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bill of Quantity (BOQ): Perannya dalam Perencanaan Biaya Proyek\" \/>\n<meta property=\"og:description\" content=\"Bill of Quantity adalah dokumen yang merinci semua komponen biaya dan kuantitas material yang diperlukan dalam suatu tugas atau proyek.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-01T07:10:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-29T08:38:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Kinan Eliana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kinan Eliana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/\"},\"author\":{\"name\":\"Kinan Eliana\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/53c7ddb69fea5f813a7687ddf4196411\"},\"headline\":\"Bill of Quantity (BOQ): Perannya dalam Perencanaan Biaya Proyek\",\"datePublished\":\"2024-08-01T07:10:07+00:00\",\"dateModified\":\"2026-04-29T08:38:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/\"},\"wordCount\":1590,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/Bill-of-Quantity.webp\",\"articleSection\":[\"Construction Suite\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/\",\"name\":\"Bill of Quantity (BOQ): Definisi dan Perbedaannya dengan RAB\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/Bill-of-Quantity.webp\",\"datePublished\":\"2024-08-01T07:10:07+00:00\",\"dateModified\":\"2026-04-29T08:38:48+00:00\",\"description\":\"Bill of Quantity adalah dokumen yang merinci semua komponen biaya dan kuantitas material yang diperlukan dalam suatu tugas atau proyek.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/Bill-of-Quantity.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/Bill-of-Quantity.webp\",\"width\":1200,\"height\":675,\"caption\":\"Bill of Quantity\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/bill-of-quantity\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bill of Quantity (BOQ): Perannya dalam Perencanaan Biaya Proyek\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hashmicro\",\"https:\\\/\\\/x.com\\\/hashmicro\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/53c7ddb69fea5f813a7687ddf4196411\",\"name\":\"Kinan Eliana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/kinan-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/kinan-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/kinan-96x96.webp\",\"caption\":\"Kinan Eliana\"},\"description\":\"Kinan telah berpengalaman selama 3 tahun di bidang content writing untuk industri manufaktur, konstruksi, dan retail. Ia secara konsisten mengulas topik terkait proses operasional bisnis manufaktur, manajemen omnichannel, manajemen proyek, serta implementasi teknologi digital untuk proses bisnis.\",\"sameAs\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/\"],\"gender\":\"Perempuan\",\"knowsAbout\":[\"industri\",\"manajemen bisnis\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Content Writer\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/kinan-eliana\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Bill of Quantity (BOQ): Definisi dan Perbedaannya dengan RAB","description":"Bill of Quantity adalah dokumen yang merinci semua komponen biaya dan kuantitas material yang diperlukan dalam suatu tugas atau proyek.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/","og_locale":"id_ID","og_type":"article","og_title":"Bill of Quantity (BOQ): Perannya dalam Perencanaan Biaya Proyek","og_description":"Bill of Quantity adalah dokumen yang merinci semua komponen biaya dan kuantitas material yang diperlukan dalam suatu tugas atau proyek.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2024-08-01T07:10:07+00:00","article_modified_time":"2026-04-29T08:38:48+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity.webp","type":"image\/webp"}],"author":"Kinan Eliana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Kinan Eliana","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/"},"author":{"name":"Kinan Eliana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/53c7ddb69fea5f813a7687ddf4196411"},"headline":"Bill of Quantity (BOQ): Perannya dalam Perencanaan Biaya Proyek","datePublished":"2024-08-01T07:10:07+00:00","dateModified":"2026-04-29T08:38:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/"},"wordCount":1590,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity.webp","articleSection":["Construction Suite"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/","name":"Bill of Quantity (BOQ): Definisi dan Perbedaannya dengan RAB","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity.webp","datePublished":"2024-08-01T07:10:07+00:00","dateModified":"2026-04-29T08:38:48+00:00","description":"Bill of Quantity adalah dokumen yang merinci semua komponen biaya dan kuantitas material yang diperlukan dalam suatu tugas atau proyek.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/08\/Bill-of-Quantity.webp","width":1200,"height":675,"caption":"Bill of Quantity"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Bill of Quantity (BOQ): Perannya dalam Perencanaan Biaya Proyek"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/53c7ddb69fea5f813a7687ddf4196411","name":"Kinan Eliana","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp","caption":"Kinan Eliana"},"description":"Kinan telah berpengalaman selama 3 tahun di bidang content writing untuk industri manufaktur, konstruksi, dan retail. Ia secara konsisten mengulas topik terkait proses operasional bisnis manufaktur, manajemen omnichannel, manajemen proyek, serta implementasi teknologi digital untuk proses bisnis.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Perempuan","knowsAbout":["industri","manajemen bisnis"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/kinan-eliana\/"}]}},"focus_keyword":"bill of quantity","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/144353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/222"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=144353"}],"version-history":[{"count":15,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/144353\/revisions"}],"predecessor-version":[{"id":193092,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/144353\/revisions\/193092"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/144354"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=144353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=144353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=144353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}