Вопрос:
Как в отчете СКД сделать ПОДОБНО наименованию 1С
Подробный ответ:
В параметре "Наименование" пользователь сможет указывать маску. Или можно сделать автоматическое дополнение параметра спецсимволом % - на вкладке параметры написать для этого параметра выражение "%" + &Наименование + "%"
В запросе пишем ВашаТаблица.ВашРеквизит ПОДОБНО (&Наименование)
А в выражение прописываем

"`;
var startIndex = originalMessage.indexOf("Вопрос: ") + "Вопрос: ".length; // Находим индекс конца фразы "Вопрос:"
var startText = originalMessage.substring(startIndex); // Извлекаем текст после фразы "Вопрос:"
var endIndex = startText.indexOf("Подробный ответ:"); // Находим индекс начала фразы "Развернутый ответ:"
var newMessage = startText.substring(0, endIndex); // Извлекаем текст до этого индекса
$('#messageContainer').html(newMessage); // Выводим значение в элемент
});
Подробный ответ:

`;
var opissan = `Как в отчете СКД сделать ПОДОБНО наименованию 1С`;
var startIndex = Message.indexOf(" Подробный ответ: ") + " Подробный ответ: ".length;
var newMessage = Message.substring(startIndex);
var text = newMessage
.replace(/"/g, '"')
.replace(/ /g, '')
.replace(/«/g, '"')
.replace(/»/g, '"')
.replace(/—/g, '-')
.replace(/–/g, '-')
.replace(/“/g, '"')
.replace(/„/g, '"')
.replace(/…/g, '...')
.replace(/•/g, '•')
.replace(/ /g, '')
.replace(/<\/b>/g, '')
.replace(/≈/g, '≈')
.replace(/&sup/g, '^')
.replace(/ /g, '')
.replace(/<\/strong>/g, '')
.replace(//g, '')
.replace(/×/g, '×')
.replace(/&rho/g, 'ρ')
.replace(//g, '')
.replace(/<\/p>$/, '')
.replace(/ <\/p>/g, '')
.replace(/<\/span>/g, '');
const lineWidth = 650; // Ширина листа в пикселях
const lines = calculateLines(newMessage, lineWidth);
var brCount = (text.match(/ /g) || []).length;
var pCount = (text.match(/<\/p>/g) || []).length;
function calculateLines(text, lineWidth) {
let lineCount = 1;
let currentLineWidth = 0;
const words = text.split(' ');
words.forEach(word => {
if (word === '') {
lineCount++;
currentLineWidth = 0;
} else {
const wordWidth = word.length * 8; // assuming average character width is 8px (adjust as needed)
if (currentLineWidth + wordWidth > lineWidth) {
lineCount++;
currentLineWidth = wordWidth;
} else {
currentLineWidth += wordWidth + 8; // adding space width (adjust as needed)
}
}
});
return lineCount;
}
var imageContainers = [];
for (var i = 1; i <= 8; i++) {
imageContainers.push(document.getElementById('image-container' + i));
}
var canvasWidth = 850; // Ширина каждого холста
var canvasHeight = (lines + 1 + brCount + pCount) * 33; // Высота каждого холста
var lineHeight = 30; // Высота строки
var linesPerCanvas = lines + 1 + brCount + pCount; // Количество строк на одном холсте
var lineCount = 0; // Счетчик строк
var canvasIndex = 0; // Индекс текущего холста
var currentX = 10; // Текущая X-координата
var currentY = 30; // Текущая Y-координата
var opacity = 1.0; // Начальная прозрачность текста
var watermarkOpacity = 0.7; // Прозрачность водяного знака
// Массив для хранения изображений
var images = [];
function createNewCanvas() {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.width = canvasWidth;
canvas.height = canvasHeight;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.font = '20px Arial';
var wordWidth = ctx.measureText('voprosok.ru').width;
var wordHeight = 20;
var columns = Math.ceil(canvas.width / wordWidth);
var rows = Math.ceil(canvas.height / wordHeight);
var originalAlpha = ctx.globalAlpha;
ctx.globalAlpha = opacity;
ctx.fillStyle = 'black';
for (let i = 0; i < rows; i++) {
for (let j = 0; j < columns; j++) {
var x = j * wordWidth;
var y = i * wordHeight;
ctx.globalAlpha = watermarkOpacity; // Устанавливаем прозрачность для водяного знака
ctx.fillText('voprosok.ru', x, y);
ctx.globalAlpha = opacity; // Восстанавливаем общую прозрачность
}
}
ctx.globalAlpha = originalAlpha;
return { canvas: canvas, ctx: ctx };
}
function addParagraph(container, text) {
var p = document.createElement('p');
p.innerHTML = text;
container.appendChild(p);
}
var canvasData = createNewCanvas();
var canvas = canvasData.canvas;
var ctx = canvasData.ctx;
var paragraphs = text.split(' ');
for (var i = 0; i < paragraphs.length; i++) {
var paragraph = paragraphs[i].trim(); // Удаляем пробельные символы из абзаца
if (paragraph.trim() !== '') { // Пропускаем пустые абзацы
var words = paragraph.split(' ');
for (var l = 0; l < words.length; l++) {
var word = words[l];
var wordWidth = ctx.measureText(word).width;
if (currentX + wordWidth > canvasWidth - 10) {
currentX = 10;
currentY += lineHeight; // Переносим на новую строку
lineCount++; // Увеличиваем счетчик строк
if (lineCount % linesPerCanvas === 0) {
images.push(canvas.toDataURL());
canvasData = createNewCanvas();
canvas = canvasData.canvas;
ctx = canvasData.ctx;
currentY = 30; // Сбрасываем текущую Y-координату
canvasIndex++;
}
}
ctx.fillText(word, currentX, currentY);
currentX += wordWidth + ctx.measureText(' ').width;
}
}
currentX = 10; // Сбрасываем текущую X-координату в начало строки
currentY += lineHeight; // Переносим на новую строку после каждого абзаца
lineCount++; // Увеличиваем счетчик строк за каждый абзац
if (lineCount % linesPerCanvas === 0 && paragraphs.length > i + 1) {
images.push(canvas.toDataURL());
canvasData = createNewCanvas();
canvas = canvasData.canvas;
ctx = canvasData.ctx;
currentY = 30; // Сбрасываем текущую Y-координату
canvasIndex++;
}
}
images.push(canvas.toDataURL()); // Добавляем последнее изображение
// Вставляем изображения в соответствующие контейнеры div
for (var i = 0; i < images.length; i++) {
var ind = i + 1;
imageContainers[i].innerHTML = ' ';
}
window.addEventListener('scroll', decreaseOpacity);
function decreaseOpacity() {
if (watermarkOpacity > 0.2 ) { // Изменяем прозрачность только для водяного знака
watermarkOpacity -= 0.2;
}
else if (watermarkOpacity > 0.1 && watermarkOpacity < 0.2) {
watermarkOpacity -= 0.1;
}
redrawCanvas();
}
// Функция для перерисовки холста с новой прозрачностью
function redrawCanvas() {
images = []; // Очищаем массив изображений
currentX = 10;
currentY = 30;
lineCount = 0;
canvasIndex = 0;
canvasData = createNewCanvas();
canvas = canvasData.canvas;
ctx = canvasData.ctx;
for (var i = 0; i < paragraphs.length; i++) {
var paragraph = paragraphs[i].trim(); // Удаляем пробельные символы из абзаца
if (paragraph.trim() !== '') { // Пропускаем пустые абзацы
var words = paragraph.split(' ');
for (var l = 0; l < words.length; l++) {
var word = words[l];
var wordWidth = ctx.measureText(word).width;
if (currentX + wordWidth > canvasWidth - 10) {
currentX = 10;
currentY += lineHeight; // Переносим на новую строку
lineCount++; // Увеличиваем счетчик строк
if (lineCount % linesPerCanvas === 0) {
images.push(canvas.toDataURL());
canvasData = createNewCanvas();
canvas = canvasData.canvas;
ctx = canvasData.ctx;
currentY = 30; // Сбрасываем текущую Y-координату
canvasIndex++;
}
}
ctx.fillText(word, currentX, currentY);
currentX += wordWidth + ctx.measureText(' ').width;
}
}
currentX = 10; // Сбрасываем текущую X-координату в начало строки
currentY += lineHeight; // Переносим на новую строку после каждого абзаца
lineCount++; // Увеличиваем счетчик строк за каждый абзац
if (lineCount % linesPerCanvas === 0 && paragraphs.length > i + 1) {
images.push(canvas.toDataURL());
canvasData = createNewCanvas();
canvas = canvasData.canvas;
ctx = canvasData.ctx;
currentY = 30; // Сбрасываем текущую Y-координату
canvasIndex++;
}
}
images.push(canvas.toDataURL()); // Добавляем последнее изображение
// Вставляем изображения в соответствующие контейнеры div
for (var i = 0; i < images.length; i++) {
var ind = i + 1;
imageContainers[i].innerHTML = ' ';
}
}
-->
|