Описание
Заказчик
Лоты
Зарегистрируйтесь и получите полную информацию о Заказчике, аналитику по снижению им
цены и основным поставщикам.
Лот 1
Предмет контракта: Выполнение комплекса работ по зачистке и ремонту резервуаров горизонтальных надземных (РГН) для хранения нефти с паровым регистром, объемом 20-50 м3
Цена контракта: 0,00 RUB
Получить помощь специалиста
Документация
Вы не можете просматривать результаты тендеров. Свяжитесь с вашим персональным менеджером, чтобы получить возможность просматривать результаты тендеров
Оглавление ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть 60
..
STAGE = "prod";
var captchaImageExpireSeconds = ""*1; // "" for syntax, *1 for number
var captchaInputDisabledAtLastsExpireSeconds = ""*1; // "" for syntax, *1 for number
input,
html,
h1, h2, h3 {
font-weight: 400;
}
.
hgroup.page
.status
.loading-rotate-back,
.loading
.loading-rotate
.loading
@keyframes loading-wings
}
@keyframes loading-rotate
40% {
transform: rotate(0deg);
}
45% {
transform: rotate(10deg);
}
60% {
transform: rotate(0deg);
}
75% {
transform: rotate(0deg);
}
82% {
transform: rotate(7deg);
}
}
#
.state-expire #
.state-loading #
@keyframes captcha
50% {
background-position: 0px 0px;
}
}
#status
.state-loading #status
.captcha-180 {
position: absolute;
transform: scaleY(-1) translateY(-0.07em) translateX(-2px);
}
.captcha-after
#
#header-wrong
.state-wrong-answer #header-wrong
.first-captcha-loaded .width-as
.at-left-side-before-first
.first-captcha-loaded .at-left-side-before-first
@media (max-width: 768px) {
.
hgroup.page
.status
#header-wrong
.state-wrong-answer #header-wrong
}
@media (min-width: 768px) {
#header-we-like-a
#
.
}
#
.stage-local #
.state-expire #header-hello, .state-expire #header-its-captcha, .state-expire #header-we-like-a
#header
.state-expire #header
.state-expire #
(function(){
if (STAGE!="local") return;
setInterval(function() {
var captchaImageLivetime = Math.floor((Date.now() - captchaImageReceivedAt) / 1000);
document.getElementById("dbg").innerHTML = `${captchaImageLivetime}sec / ${captchaImageExpireSeconds} – ${captchaInputDisabledAtLastsExpireSeconds}`;
}, 0.5*1000);
})();
(function(){
var prevLivetime = -1;
setInterval(function() {
var captchaImageLivetime = Math.floor((Date.now() - captchaImageReceivedAt) / 1000);
if (prevLivetime!=captchaImageLivetime) {
var critical = Math.floor(CAPTCHA_ENV["VERIFICATION_TOKEN_TTL"]/1000);
if (prevLivetime!==-1 && prevLivetime critical) {
expireSoon();
}
prevLivetime = captchaImageLivetime;
}
}, 0.5*1000);
})();
Здравствуйте!
Вам КАПЧА!
Не бойтесь оказаться роботом, но никогда не скрывайте свою человечность.
Пожалуйста, включите яваскрипт
Вы не успели расшифровать эту КАПЧУ.
Пожалуйста, запросите другую картинку.
Текст не совпал — попробуйте еще раз
var loadings = 1;
function addLoading() {
if (loadings===0) {
document.body.classList.add('state-loading');
document.getElementById("refreshbtn").disabled = true;
document.getElementById("answerbtn").disabled = true;
}
loadings++;
}
function removeLoading() {
loadings--;
setTimeout(() => {
if (loadings===0) {
document.body.classList.remove('state-loading');
document.getElementById("answerbtn").disabled = false;
document.getElementById("answer").focus();
document.getElementById("answer").value = "";
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answerbtn").disabled = false;
}
}, 50);
}
function actualOrDefault(replacedVariable, defaultValue) {
if (replacedVariable.charAt(0)=="_") {
if (replacedVariable.charAt(replacedVariable.length-1)=="_") {
return defaultValue;
}
}
return replacedVariable;
}
var CAPTCHA_ENV = {
"REQUEST_ID": "WAF8NfNdd0U1",
"IP": "212.66.43.82",
"DATETIME": "
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть :10:32 +0000",
"ORIGINAL_URL": "https://api.tektorg.ru/open-api/documents/procedure/
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть ?utm_referrer=https%3a%2f%2fwww.tektorg.ru%2frosnefttkp%2fprocedures%2f
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть ",
"PTOKEN_PARAM_NAME_FOR_ORIGINAL_URL": "fa821dba_ipp_har",
"CAPTCHA_TOKEN": actualOrDefault("ap/jDMcFX5MrYnW+uy6HD/OqxQuPjfIemAz+ngn9h3dkwu0itHr8rJRQRuRQUZs+pM++Nw==",""),
"CAPTCHA_TOKEN_TTL": actualOrDefault("600000", "600000")*1,
"VERIFICATION_TOKEN_TTL": actualOrDefault("120000", "120000")*1,
"CAPTCHA_URL": actualOrDefault("https://c1.vchecks.io",""),
};
var captchaImageReceivedAt = 0;
var vtoken = null;
function handleTokenExpiration() {
document.getElementById("submitbtn").disabled = true;
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answer").disabled = true;
document.getElementById("refreshbtn").onclick = () =>
window.location.reload();
}
function myFetch(folder, params) {
if (folder.charAt(0)=="/") folder = folder.slice(1);
var origin = CAPTCHA_ENV["CAPTCHA_URL"];
if (origin.slice(-1)=="/") origin = origin.slice(0, -1);
var url = origin + "/" + folder;
url += "?ms="+ Date.now() +"&rnd=" + Math.random();
url += "&ctoken=" + CAPTCHA_ENV["CAPTCHA_TOKEN"];
var getParams = Object.entries(params || {}).map(([k,v]) => k+'='+v).join('&') || '';
if (getParams) {
url += '&' + getParams;
}
return fetch(url)
.then(res => {
if (!res.ok) throw new Error(res.status);
return res.json();
});
}
function fetchPic() {
addLoading();
document.getElementById("captcha").src = '';
document.body.classList.remove("state-expire-wait-for-user");
var widthAsCaptcha = () => {
setTimeout(()=>{
var img = document.getElementById("captcha");
img.width = img.naturalWidth;
img.height = img.naturalHeight;
var width = img.offsetWidth;
var height = img.offsetHeight;
Array.from(document.querySelectorAll(".width-as-captcha")).forEach(node => {
node.style.width = width +"px";
});
Array.from(document.querySelectorAll(".height-as-captcha")).forEach(node => {
node.style.height = height +"px";
});
console.log(width, height)
notExpireSoon();
setTimeout(()=>{
document.body.classList.remove("first-captcha-not-loaded");
document.body.classList.add("first-captcha-loaded");
}, 50);
},10);
}
document.getElementById("captcha").onload = widthAsCaptcha;
return myFetch("generate", null)
.then(json => {
var captcha_image_elem = document.getElementById("captcha");
if (json.png) {
captcha_image_elem.src = "data:image/png;base64," + json.png;
} else if (json.jpg || json.jpeg) {
captcha_image_elem.src = "data:image/jpeg;base64," + json.jpg || json.jpeg;
}
if (json.alt) {
captcha_image_elem.alt = json.alt;
}
captcha_image_elem.classList.remove('loading');
vtoken = json.vtoken;
captchaImageReceivedAt = Date.now();
removeLoading();
})
.catch(er => {
console.error(er);
if (er.message === "403") {
handleTokenExpiration();
} , 5 * 1000);
})
.then(()=>{
removeLoading();
return fetchPic();
});
}
});
}
function expireSoon() {
document.body.classList.add('state-expire');
document.body.classList.add('state-expire-wait-for-user');
document.getElementById("answerbtn").disabled = true;
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answer").disabled = true;
}
function notExpireSoon() {
document.body.classList.remove('state-expire');
document.body.classList.remove('state-expire-wait-for-user');
document.getElementById("answerbtn").disabled = false;
document.getElementById("answer").disabled = false;
}
function submit_answer() {
addLoading();
return myFetch("verify", {"vtoken": vtoken, "answer": (document.getElementById("answer").value+'').trim()})
.then(json => {
const result_url = new URL(CAPTCHA_ENV["ORIGINAL_URL"]);
result_url.searchParams.append(CAPTCHA_ENV["PTOKEN_PARAM_NAME_FOR_ORIGINAL_URL"], json.ptoken);
window.location.href = result_url.href;
})
.catch(er => {
console.error(er);
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, 1 * 1000);
})
.then(()=>{
removeLoading();
document.body.classList.add('state-wrong-answer');
setTimeout(() => {
document.body.classList.remove('state-wrong-answer');
}, 3*1000);
return fetchPic();
});
})
}
removeLoading();
fetchPic();
setTimeout(()=>{
handleTokenExpiration()
}, CAPTCHA_ENV["CAPTCHA_TOKEN_TTL"])
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть
..
STAGE = "prod";
var captchaImageExpireSeconds = ""*1; // "" for syntax, *1 for number
var captchaInputDisabledAtLastsExpireSeconds = ""*1; // "" for syntax, *1 for number
input,
html,
h1, h2, h3 {
font-weight: 400;
}
.
hgroup.page
.status
.loading-rotate-back,
.loading
.loading-rotate
.loading
@keyframes loading-wings
}
@keyframes loading-rotate
40% {
transform: rotate(0deg);
}
45% {
transform: rotate(10deg);
}
60% {
transform: rotate(0deg);
}
75% {
transform: rotate(0deg);
}
82% {
transform: rotate(7deg);
}
}
#
.state-expire #
.state-loading #
@keyframes captcha
50% {
background-position: 0px 0px;
}
}
#status
.state-loading #status
.captcha-180 {
position: absolute;
transform: scaleY(-1) translateY(-0.07em) translateX(-2px);
}
.captcha-after
#
#header-wrong
.state-wrong-answer #header-wrong
.first-captcha-loaded .width-as
.at-left-side-before-first
.first-captcha-loaded .at-left-side-before-first
@media (max-width: 768px) {
.
hgroup.page
.status
#header-wrong
.state-wrong-answer #header-wrong
}
@media (min-width: 768px) {
#header-we-like-a
#
.
}
#
.stage-local #
.state-expire #header-hello, .state-expire #header-its-captcha, .state-expire #header-we-like-a
#header
.state-expire #header
.state-expire #
(function(){
if (STAGE!="local") return;
setInterval(function() {
var captchaImageLivetime = Math.floor((Date.now() - captchaImageReceivedAt) / 1000);
document.getElementById("dbg").innerHTML = `${captchaImageLivetime}sec / ${captchaImageExpireSeconds} – ${captchaInputDisabledAtLastsExpireSeconds}`;
}, 0.5*1000);
})();
(function(){
var prevLivetime = -1;
setInterval(function() {
var captchaImageLivetime = Math.floor((Date.now() - captchaImageReceivedAt) / 1000);
if (prevLivetime!=captchaImageLivetime) {
var critical = Math.floor(CAPTCHA_ENV["VERIFICATION_TOKEN_TTL"]/1000);
if (prevLivetime!==-1 && prevLivetime critical) {
expireSoon();
}
prevLivetime = captchaImageLivetime;
}
}, 0.5*1000);
})();
Здравствуйте!
Вам КАПЧА!
Не бойтесь оказаться роботом, но никогда не скрывайте свою человечность.
Пожалуйста, включите яваскрипт
Вы не успели расшифровать эту КАПЧУ.
Пожалуйста, запросите другую картинку.
Текст не совпал — попробуйте еще раз
var loadings = 1;
function addLoading() {
if (loadings===0) {
document.body.classList.add('state-loading');
document.getElementById("refreshbtn").disabled = true;
document.getElementById("answerbtn").disabled = true;
}
loadings++;
}
function removeLoading() {
loadings--;
setTimeout(() => {
if (loadings===0) {
document.body.classList.remove('state-loading');
document.getElementById("answerbtn").disabled = false;
document.getElementById("answer").focus();
document.getElementById("answer").value = "";
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answerbtn").disabled = false;
}
}, 50);
}
function actualOrDefault(replacedVariable, defaultValue) {
if (replacedVariable.charAt(0)=="_") {
if (replacedVariable.charAt(replacedVariable.length-1)=="_") {
return defaultValue;
}
}
return replacedVariable;
}
var CAPTCHA_ENV = {
"REQUEST_ID": "VAFF6rQwwSw1",
"IP": "212.111.82.234",
"DATETIME": "
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть :10:31 +0000",
"ORIGINAL_URL": "https://api.tektorg.ru/open-api/documents/procedure/
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть ?utm_referrer=https%3a%2f%2fwww.tektorg.ru%2frosnefttkp%2fprocedures%2f
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть ",
"PTOKEN_PARAM_NAME_FOR_ORIGINAL_URL": "fa821dba_ipp_har",
"CAPTCHA_TOKEN": actualOrDefault("H5p+Y5oZc4DHCj5rZr0S81kV5exsUixSk7brOGVc0B9sRehkVxQMaJR+vZ4kbp/T24bZ2g==",""),
"CAPTCHA_TOKEN_TTL": actualOrDefault("600000", "600000")*1,
"VERIFICATION_TOKEN_TTL": actualOrDefault("120000", "120000")*1,
"CAPTCHA_URL": actualOrDefault("https://c1.vchecks.io",""),
};
var captchaImageReceivedAt = 0;
var vtoken = null;
function handleTokenExpiration() {
document.getElementById("submitbtn").disabled = true;
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answer").disabled = true;
document.getElementById("refreshbtn").onclick = () =>
window.location.reload();
}
function myFetch(folder, params) {
if (folder.charAt(0)=="/") folder = folder.slice(1);
var origin = CAPTCHA_ENV["CAPTCHA_URL"];
if (origin.slice(-1)=="/") origin = origin.slice(0, -1);
var url = origin + "/" + folder;
url += "?ms="+ Date.now() +"&rnd=" + Math.random();
url += "&ctoken=" + CAPTCHA_ENV["CAPTCHA_TOKEN"];
var getParams = Object.entries(params || {}).map(([k,v]) => k+'='+v).join('&') || '';
if (getParams) {
url += '&' + getParams;
}
return fetch(url)
.then(res => {
if (!res.ok) throw new Error(res.status);
return res.json();
});
}
function fetchPic() {
addLoading();
document.getElementById("captcha").src = '';
document.body.classList.remove("state-expire-wait-for-user");
var widthAsCaptcha = () => {
setTimeout(()=>{
var img = document.getElementById("captcha");
img.width = img.naturalWidth;
img.height = img.naturalHeight;
var width = img.offsetWidth;
var height = img.offsetHeight;
Array.from(document.querySelectorAll(".width-as-captcha")).forEach(node => {
node.style.width = width +"px";
});
Array.from(document.querySelectorAll(".height-as-captcha")).forEach(node => {
node.style.height = height +"px";
});
console.log(width, height)
notExpireSoon();
setTimeout(()=>{
document.body.classList.remove("first-captcha-not-loaded");
document.body.classList.add("first-captcha-loaded");
}, 50);
},10);
}
document.getElementById("captcha").onload = widthAsCaptcha;
return myFetch("generate", null)
.then(json => {
var captcha_image_elem = document.getElementById("captcha");
if (json.png) {
captcha_image_elem.src = "data:image/png;base64," + json.png;
} else if (json.jpg || json.jpeg) {
captcha_image_elem.src = "data:image/jpeg;base64," + json.jpg || json.jpeg;
}
if (json.alt) {
captcha_image_elem.alt = json.alt;
}
captcha_image_elem.classList.remove('loading');
vtoken = json.vtoken;
captchaImageReceivedAt = Date.now();
removeLoading();
})
.catch(er => {
console.error(er);
if (er.message === "403") {
handleTokenExpiration();
} , 5 * 1000);
})
.then(()=>{
removeLoading();
return fetchPic();
});
}
});
}
function expireSoon() {
document.body.classList.add('state-expire');
document.body.classList.add('state-expire-wait-for-user');
document.getElementById("answerbtn").disabled = true;
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answer").disabled = true;
}
function notExpireSoon() {
document.body.classList.remove('state-expire');
document.body.classList.remove('state-expire-wait-for-user');
document.getElementById("answerbtn").disabled = false;
document.getElementById("answer").disabled = false;
}
function submit_answer() {
addLoading();
return myFetch("verify", {"vtoken": vtoken, "answer": (document.getElementById("answer").value+'').trim()})
.then(json => {
const result_url = new URL(CAPTCHA_ENV["ORIGINAL_URL"]);
result_url.searchParams.append(CAPTCHA_ENV["PTOKEN_PARAM_NAME_FOR_ORIGINAL_URL"], json.ptoken);
window.location.href = result_url.href;
})
.catch(er => {
console.error(er);
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, 1 * 1000);
})
.then(()=>{
removeLoading();
document.body.classList.add('state-wrong-answer');
setTimeout(() => {
document.body.classList.remove('state-wrong-answer');
}, 3*1000);
return fetchPic();
});
})
}
removeLoading();
fetchPic();
setTimeout(()=>{
handleTokenExpiration()
}, CAPTCHA_ENV["CAPTCHA_TOKEN_TTL"])
x
- Посмотреть таблицу с данными
ИЗВЕЩЕНИЕ
о заинтересованности в проведении закупки
Выполнение комплекса работ по зачистке и ремонту резервуаров горизонтальных надземных (РГН) для хранения нефти с паровым регистром, объемом 20-50м³ для Нижневартовского филиала ООО «РН-Бурение» на 2025г.
наименование товаров/наименование работ/наименование услуг
Наименование инициатора закупки (заказчика) - ООО «РН-Бурение»
Почтовый адрес:▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть , г. Москва, ул. Калужская М., дом 15, стр.31
Адрес электронной почты: ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть
Номер контактного телефона, номер факса, контактное лицо: Нижневартовский филиал ООО «РН-Бурение»,▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть , Ханты-Мансийский Автономный округ-Югра, г. Нижневартовск, ул. Индустриальная, 19, строение 8.; Литвяков Антон Александрович – гл. специалист, тел. (3▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть доб. 1565.
В связи с необходимостью проведения закупки:
Выполнение комплекса работ по зачистке и ремонту резервуаров горизонтальных надземных (РГН) для хранения нефти с паровым регистром, объемом 20-50м³ для Нижневартовского филиала ООО «РН-Бурение» на 2025г.
наименование товаров/наименование работ/наименование услуг
с целью подготовки документации о закупке, просим предоставить предложение о максимальной цене договора (лота) на оказание вышеуказанных услуг в соответствии с условиями определенными Техническим заданием и закупочной формой договора. В цену должны быть включены все расходы участника для исполнения обязательств в ходе оказания услуг.
Место, дата и время окончания срока подачи предложений – http://rn.tektorg.ru, до 12 ч 00 мин (МСК+2) «14» марта 2025 г.
Предложение подается в письменной форме (на фирменном бланке участника или с печатью участника) и за подписью руководителя или уполномоченного лица.
Предложение может быть направлено потенциальным участником закупочной процедуры и получено инициатором (заказчиком) только посредством электронной торговой площадки http://rn.tektorg.ru.
Размещение настоящего извещения не накладывает на ООО «РН-Бурение» (в том числе в лице Филиалов), гражданско-правовых обязательств по обязательному заключению договора с участниками, предоставившими свои предложения (т.е. ООО «РН-Бурение» (в том числе в лице Филиалов), не несут ответственности за отказ от заключения такого договора с участниками), а также иных ограничений, предусмотренных законодательством РФ.
К извещению прилагается:
Приложение 1 к извещению «Форма коммерческого предложения»
Главный специалист
А. А. Литвяков
x
- Посмотреть таблицу с данными
- Посмотреть таблицу с данными
- Посмотреть таблицу с данными▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть 60-addi-.zip
..
STAGE = "prod";
var captchaImageExpireSeconds = ""*1; // "" for syntax, *1 for number
var captchaInputDisabledAtLastsExpireSeconds = ""*1; // "" for syntax, *1 for number
input,
html,
h1, h2, h3 {
font-weight: 400;
}
.
hgroup.page
.status
.loading-rotate-back,
.loading
.loading-rotate
.loading
@keyframes loading-wings
}
@keyframes loading-rotate
40% {
transform: rotate(0deg);
}
45% {
transform: rotate(10deg);
}
60% {
transform: rotate(0deg);
}
75% {
transform: rotate(0deg);
}
82% {
transform: rotate(7deg);
}
}
#
.state-expire #
.state-loading #
@keyframes captcha
50% {
background-position: 0px 0px;
}
}
#status
.state-loading #status
.captcha-180 {
position: absolute;
transform: scaleY(-1) translateY(-0.07em) translateX(-2px);
}
.captcha-after
#
#header-wrong
.state-wrong-answer #header-wrong
.first-captcha-loaded .width-as
.at-left-side-before-first
.first-captcha-loaded .at-left-side-before-first
@media (max-width: 768px) {
.
hgroup.page
.status
#header-wrong
.state-wrong-answer #header-wrong
}
@media (min-width: 768px) {
#header-we-like-a
#
.
}
#
.stage-local #
.state-expire #header-hello, .state-expire #header-its-captcha, .state-expire #header-we-like-a
#header
.state-expire #header
.state-expire #
(function(){
if (STAGE!="local") return;
setInterval(function() {
var captchaImageLivetime = Math.floor((Date.now() - captchaImageReceivedAt) / 1000);
document.getElementById("dbg").innerHTML = `${captchaImageLivetime}sec / ${captchaImageExpireSeconds} – ${captchaInputDisabledAtLastsExpireSeconds}`;
}, 0.5*1000);
})();
(function(){
var prevLivetime = -1;
setInterval(function() {
var captchaImageLivetime = Math.floor((Date.now() - captchaImageReceivedAt) / 1000);
if (prevLivetime!=captchaImageLivetime) {
var critical = Math.floor(CAPTCHA_ENV["VERIFICATION_TOKEN_TTL"]/1000);
if (prevLivetime!==-1 && prevLivetime critical) {
expireSoon();
}
prevLivetime = captchaImageLivetime;
}
}, 0.5*1000);
})();
Здравствуйте!
Вам КАПЧА!
Не бойтесь оказаться роботом, но никогда не скрывайте свою человечность.
Пожалуйста, включите яваскрипт
Вы не успели расшифровать эту КАПЧУ.
Пожалуйста, запросите другую картинку.
Текст не совпал — попробуйте еще раз
var loadings = 1;
function addLoading() {
if (loadings===0) {
document.body.classList.add('state-loading');
document.getElementById("refreshbtn").disabled = true;
document.getElementById("answerbtn").disabled = true;
}
loadings++;
}
function removeLoading() {
loadings--;
setTimeout(() => {
if (loadings===0) {
document.body.classList.remove('state-loading');
document.getElementById("answerbtn").disabled = false;
document.getElementById("answer").focus();
document.getElementById("answer").value = "";
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answerbtn").disabled = false;
}
}, 50);
}
function actualOrDefault(replacedVariable, defaultValue) {
if (replacedVariable.charAt(0)=="_") {
if (replacedVariable.charAt(replacedVariable.length-1)=="_") {
return defaultValue;
}
}
return replacedVariable;
}
var CAPTCHA_ENV = {
"REQUEST_ID": "ALIHLFEKK4Y1",
"IP": "147.45.231.61",
"DATETIME": "
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть :21:10 +0000",
"ORIGINAL_URL": "https://api.tektorg.ru/open-api/documents/procedure/
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть ?utm_referrer=https%3a%2f%2fwww.tektorg.ru%2frosnefttkp%2fprocedures%2f
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - открыть ",
"PTOKEN_PARAM_NAME_FOR_ORIGINAL_URL": "fa821dba_ipp_har",
"CAPTCHA_TOKEN": actualOrDefault("+p4T49yf7qg9izPsWcvecJpvpVV7EMIu594ja69nweZ5Nktr4Barza8fnMUTi7J3Cpsycg==",""),
"CAPTCHA_TOKEN_TTL": actualOrDefault("600000", "600000")*1,
"VERIFICATION_TOKEN_TTL": actualOrDefault("120000", "120000")*1,
"CAPTCHA_URL": actualOrDefault("https://c1.vchecks.io",""),
};
var captchaImageReceivedAt = 0;
var vtoken = null;
function handleTokenExpiration() {
document.getElementById("submitbtn").disabled = true;
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answer").disabled = true;
document.getElementById("refreshbtn").onclick = () =>
window.location.reload();
}
function myFetch(folder, params) {
if (folder.charAt(0)=="/") folder = folder.slice(1);
var origin = CAPTCHA_ENV["CAPTCHA_URL"];
if (origin.slice(-1)=="/") origin = origin.slice(0, -1);
var url = origin + "/" + folder;
url += "?ms="+ Date.now() +"&rnd=" + Math.random();
url += "&ctoken=" + CAPTCHA_ENV["CAPTCHA_TOKEN"];
var getParams = Object.entries(params || {}).map(([k,v]) => k+'='+v).join('&') || '';
if (getParams) {
url += '&' + getParams;
}
return fetch(url)
.then(res => {
if (!res.ok) throw new Error(res.status);
return res.json();
});
}
function fetchPic() {
addLoading();
document.getElementById("captcha").src = '';
document.body.classList.remove("state-expire-wait-for-user");
var widthAsCaptcha = () => {
setTimeout(()=>{
var img = document.getElementById("captcha");
img.width = img.naturalWidth;
img.height = img.naturalHeight;
var width = img.offsetWidth;
var height = img.offsetHeight;
Array.from(document.querySelectorAll(".width-as-captcha")).forEach(node => {
node.style.width = width +"px";
});
Array.from(document.querySelectorAll(".height-as-captcha")).forEach(node => {
node.style.height = height +"px";
});
console.log(width, height)
notExpireSoon();
setTimeout(()=>{
document.body.classList.remove("first-captcha-not-loaded");
document.body.classList.add("first-captcha-loaded");
}, 50);
},10);
}
document.getElementById("captcha").onload = widthAsCaptcha;
return myFetch("generate", null)
.then(json => {
var captcha_image_elem = document.getElementById("captcha");
if (json.png) {
captcha_image_elem.src = "data:image/png;base64," + json.png;
} else if (json.jpg || json.jpeg) {
captcha_image_elem.src = "data:image/jpeg;base64," + json.jpg || json.jpeg;
}
if (json.alt) {
captcha_image_elem.alt = json.alt;
}
captcha_image_elem.classList.remove('loading');
vtoken = json.vtoken;
captchaImageReceivedAt = Date.now();
removeLoading();
})
.catch(er => {
console.error(er);
if (er.message === "403") {
handleTokenExpiration();
} , 5 * 1000);
})
.then(()=>{
removeLoading();
return fetchPic();
});
}
});
}
function expireSoon() {
document.body.classList.add('state-expire');
document.body.classList.add('state-expire-wait-for-user');
document.getElementById("answerbtn").disabled = true;
document.getElementById("refreshbtn").disabled = false;
document.getElementById("answer").disabled = true;
}
function notExpireSoon() {
document.body.classList.remove('state-expire');
document.body.classList.remove('state-expire-wait-for-user');
document.getElementById("answerbtn").disabled = false;
document.getElementById("answer").disabled = false;
}
function submit_answer() {
addLoading();
return myFetch("verify", {"vtoken": vtoken, "answer": (document.getElementById("answer").value+'').trim()})
.then(json => {
const result_url = new URL(CAPTCHA_ENV["ORIGINAL_URL"]);
result_url.searchParams.append(CAPTCHA_ENV["PTOKEN_PARAM_NAME_FOR_ORIGINAL_URL"], json.ptoken);
window.location.href = result_url.href;
})
.catch(er => {
console.error(er);
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, 1 * 1000);
})
.then(()=>{
removeLoading();
document.body.classList.add('state-wrong-answer');
setTimeout(() => {
document.body.classList.remove('state-wrong-answer');
}, 3*1000);
return fetchPic();
});
})
}
removeLoading();
fetchPic();
setTimeout(()=>{
handleTokenExpiration()
}, CAPTCHA_ENV["CAPTCHA_TOKEN_TTL"])
Похожие тендеры
Название
Тип тендера
Цена
Период показа
Конкурс #236983088
21 000
4 дня
19.01.2023
06.05.2025
Конкурс #237151516
21 000
6 дней
20.01.2023
08.05.2025
Отбор #279155934
364 дня
30.08.2024
01.05.2026
Отбор #284911422
364 дня
25.11.2024
01.05.2026
Электронный аукцион #287620367
12 909 968
28 дней
24.12.2024
30.05.2025
Тендеры из отрасли Химические элементы и соединения
Название
Тип тендера
Цена
Период показа
Малая закупка #293186857
1 500
Обеспечение заявки: 75
срок истек
07.03.2025
07.03.2025
Малая закупка #293186853
270
Обеспечение заявки: 60
срок истек
07.03.2025
07.03.2025
Малая закупка #293186791
2 571
срок истек
07.03.2025
07.03.2025
Электронный аукцион #293186471
435 034
Обеспечение контракта: 10%
срок истек
07.03.2025
18.03.2025
Электронный аукцион #293186429
435 034
Обеспечение контракта: 10%
срок истек
07.03.2025
18.03.2025
Тендеры из региона г. Москва
Название
Тип тендера
Цена
Период показа
Запрос цен #293187051
срок истек
07.03.2025
24.03.2025
Анализ цен #293187038
срок истек
07.03.2025
17.03.2025
Анализ цен #293187018
срок истек
07.03.2025
12.03.2025
Электронный аукцион #293187013
111 250
срок истек
07.03.2025
07.03.2025
Электронный аукцион #293187011
301 000
срок истек
07.03.2025
07.03.2025