Задать вопрос
  • Как печатать выделенный фрагмент в 1С на Windows 11?

    paulmann
    @paulmann
    Путешествую, увлекаюсь программированием
    Да, в Windows 11 Microsoft заменила классическое окно печати на новое упрощенное (Modern Print Dialog), в котором действительно **отсутствует** опция "Выделение" (Selection). Это известная проблема, затрагивающая не только 1С, но и другие приложения.

    Вот несколько способов решить проблему печати выделенного фрагмента в 1С на Windows 11:

    1. **Используйте Горячие Клавиши 1С (Самый надежный способ *внутри* 1С):**
    * Выделите нужный фрагмент текста в поле ввода (например, в документе, сообщении, поле формы).
    * **Нажмите `Ctrl + P`.** Это откроет диалог печати **1С**, а не системный диалог Windows.
    * **В диалоге печати 1С (обычно в разделе "Область печати" или "Диапазон страниц") выберите опцию "Выделенный фрагмент" или "Выделение".**
    * Нажмите "Печать". Этот способ **должен работать** независимо от версии Windows, так как использует встроенный механизм 1С.

    2. **Верните Классический Диалог Печати Windows (Работает не всегда и может требовать прав):**
    Хотя старые методы правки реестра (`UseLegacyPrintDialog`) часто перестают работать в новых сборках Win11, есть другой подход через **Редактор локальной групповой политики** (только в Pro/Enterprise/Education версиях Windows):
    * Нажмите `Win + R`, введите `gpedit.msc` и нажмите Enter.
    * Перейдите по пути: `Конфигурация компьютера` -> `Административные шаблоны` -> `Компоненты Windows` -> `Средство просмотра событий MMC` -> `Печать`.
    * Найдите политику **"Показывать новый интерфейс печати в средстве просмотра событий MMC"** (или аналогичную по смыслу, название может немного отличаться, ищите связанное с "New Print Dialog").
    * **Дважды щелкните** на политике.
    * Установите переключатель в положение **"Отключено"**.
    * Нажмите "Применить" и "OK".
    * **Перезагрузите компьютер.**
    * Теперь при печати из 1С (и других программ) *иногда* может появляться старый диалог с опцией "Выделение". **Важно:** Эффективность этого метода зависит от конкретной сборки Windows 11 и приложения. Microsoft постепенно отказывается от старого диалога.

    3. **Печать в PDF + Ручное Выделение:**
    * Вместо печати на физический принтер выберите виртуальный принтер "Microsoft Print to PDF" или любой другой PDF-принтер.
    * Нажмите `Ctrl + P` (чтобы вызвать диалог 1С) и напечатайте **весь документ** в PDF.
    * Откройте полученный PDF-файл в программе просмотра (Adobe Acrobat Reader DC, Edge и т.д.).
    * Выделите нужный фрагмент текста *уже в PDF-просмотрщике*.
    * В диалоге печати **просмотрщика PDF** найдите опцию "Выделение" или "Selection" (она обычно есть в современных просмотрщиках) и отправьте на физический принтер.

    4. **Копирование во Внешний Редактор:**
    * Выделите нужный текст в 1С.
    * Скопируйте его (`Ctrl + C`).
    * Вставьте (`Ctrl + V`) в текстовый редактор (Блокнот, WordPad, Microsoft Word, LibreOffice Writer).
    * Отформатируйте при необходимости.
    * Распечатайте из этого редактора. В большинстве редакторов опция печати выделенного фрагмента есть или легко достижима.

    5. **Разработка Отчета или Печатной Формы (Для Постоянного Использования):**
    Если вам нужно печатать определенные выделенные данные из 1С регулярно, самое правильное (но и самое трудозатратное) решение:
    * Обратиться к специалисту (1С-разработчику) или изучить вопрос самостоятельно.
    * Создать специализированный отчет или печатную форму в конфигурации 1С, которая будет выводить именно те данные, которые вам нужны, в удобном для печати виде. Это даст полный контроль над выводом на печать.

    **Рекомендации:**

    1. **В первую очередь пробуйте `Ctrl + P` внутри 1С.** Это встроенный механизм, и он **должен** иметь опцию печати выделенного фрагмента, независимо от версии Windows.
    2. Если `Ctrl + P` в 1С не дает нужной опции (редко, но может зависеть от конкретной формы или конфигурации), переходите к **печати в PDF** с последующим выделением в просмотрщике.
    3. Метод с **групповыми политиками** стоит пробовать, если вы используете Windows Pro/Enterprise и готовы к перезагрузкам, но не гарантированно сработает.
    4. **Копирование в редактор** — простой универсальный обходной путь.
    5. **Разработка печатной формы** — долгосрочное решение для часто повторяющихся задач.

    Проблема именно в новом системном диалоге печати Windows 11. Использование диалога печати *самой 1С* (`Ctrl + P`) или обходные пути (PDF, внешний редактор) — самые рабочие варианты на сегодня.
    Ответ написан
    1 комментарий
  • Как вывести сумму с учетом скидки Битрикс?

    paulmann
    @paulmann
    Путешествую, увлекаюсь программированием
    Этот код работает для простых правил расчета скидки. Как его модифицировать для скидок на товар, которые рассчитываются исходя из комбинации товаров в корзине?
    Ответ написан
    Комментировать
  • Как удалить все атрибуты type='text/javascript' в bitrix?

    paulmann
    @paulmann
    Путешествую, увлекаюсь программированием
    Добавить очистку перед выводом. Делается через файл init.php в /bitrix/php_interface/

    AddEventHandler("main", "OnEndBufferContent", "ChangeMyContent");
    function ChangeMyContent(&$content)
    {
    $content = sanitize_output($content);
    }
    function sanitize_output($buffer)
    {
    $buffer = str_replace('type="text/javascript"', '', $buffer);
    return $buffer;
    }
    Ответ написан
    Комментировать
  • Какая программа есть под Linux для поиска битых картинок/изображений?

    paulmann
    @paulmann Автор вопроса
    Путешествую, увлекаюсь программированием
    Нет, -I выдает одинаковый результат на битых и целых картинках:
    Целая:

    -bash-4.1# ~/usr/bin/gifsicle-1.87/src/gifsicle -I /var/www/paulmann/data/www/paulmann.su/photos/28060fr02.gif
    * /var/www/paulmann/data/www/paulmann.su/photos/28060fr02.gif 1 image
    logical screen 120x70
    global color table [256]
    background 0
    + image #0 120x70

    Битая:

    -bash-4.1# ~/usr/bin/gifsicle-1.87/src/gifsicle -I /var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif
    * /var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif 1 image
    logical screen 120x70
    global color table [256]
    background 0
    + image #0 120x70


    и только запустив оптимизацию мы имеем:
    gifsicle:/var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif: read error: image corrupted, code out of range (4 times)
    gifsicle:/var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif: read error: missing 8089 pixels of image data


    Спасибо Валерий Рябошапко - что-бы твое решение работало нужно вместо "-I" использовать "-O3", т.к. битый файл определяется только при компрессии. Удалил все, на что ругнулась программа при оптимизации (если оптимизация успешная, gifsicle ничего не выводит):

    for i in `find /var/www -name "*.gif"`; do ~/usr/bin/gifsicle-1.87/src/gifsicle -O3 $i > /dev/null || rm $i done


    P.S. при этом, кроме битых, удалятся JPG файлы с расширением GIF и все другие файлы с которыми хоть что-то не то.
    Ответ написан