Печать почтового индекса, только средствами платформы


Обработка-пример печати почтового индекса, только средствами платформы 1С:Предприятие 8.

Пример использования: печать индекса на почтовых конвертах, без использования посторонних программ (только средствами 1С:Предприятие 8).

Обработка предназначена для ознакомления. Для нормальной работы нужно интегрировать процедуры модуля объекта в своё решение (например, печатные формы конвертов).

10 Comments

  1. monkbest

    Я думал конверты проще купить/заказать, чем самому печатать и клеить:)

    Reply
  2. terroristish

    Если нужна массовая рассылка, то может оказаться, что легче распечатать из 1С на пустых конвертах, чем всё от руки заполнять. При этом конечно нужно, что бы в ИБ была вся необходимая для этого информация (адреса с индексами и т.д.).

    Reply
  3. Идальго

    А сделали как, каждой цифре соответствует заранее нарисованная картинка, или как-то по-другому?

    Reply
  4. terroristish

    Для каждой цифры задан алгоритм, как её (цифру) следует изобразить с помощью графических примитивов доступных в табличном документе (линии и точки). Пропорции брал из ГОСТ Р 51506—99 приложение Д.1 Оформление шестизначного кодового штампа. Т.е.каждая цифра — это не заранее нарисованная картинка, а набор графических элементов табличного документа.

    Reply
  5. iov

    (4) terroristish, Было просто ради интереса? Не в обиду но картинка не поменяется с выходом новой платформы а вот программное исполнение — запросто. 1С могут )))

    Проще собрать из картинок и маштабировать под конверты легче мне кажется.

    Reply
  6. terroristish

    (5) iov, Разработка алгоритма печати индекса выполнялась под конкретную задачу (подсистема учета и рассылки почтовых сообщений). Данная обработка, по большому счету просто часть общего модуля по печати почтового индекса в табличный документ. Вариант с картинками я рассматривал, но выбрал именно тот вариант, который реализован (пусть он и сложнее в исполнении). Существенные изменения в платформе, в части касающейся табличного документа, кажутся мне маловероятными в ближайшие годы.

    Reply
  7. chmv

    Так почему не картинка? Или подобрать шрифт?

    Reply
  8. terroristish

    (7) chmv, Шрифты искал. То, что нашёл мне не понравилось. Например: отсутствие в них реперных точек. В рисовании картинок я не силён. Лично мне легче примитивами табличного документа отобразить.

    Reply
  9. jobkostya1c8

    Работает, зачет!

    Reply
  10. kc-ropa

    Все супер, только цифры 7 и 9 неправильные. Необходимо поправить со строки 100

    // ПРАВО ВЕРХ
    Если ТекЦифра = 0
    ИЛИ ТекЦифра = 1
    ИЛИ ТекЦифра = 2
    ИЛИ ТекЦифра = 4
    //ИЛИ ТекЦифра = 7
    ИЛИ ТекЦифра = 8
    ИЛИ ТекЦифра = 9 Тогда
    
    НарисоватьЛинию(Макет, Х0 + РазмерРебра, У0, 0, РазмерРебра, ТолщинаЛинии);
    
    КонецЕсли;
    
    // ЦЕНТР
    Если ТекЦифра = 3
    ИЛИ ТекЦифра = 4
    ИЛИ ТекЦифра = 5
    ИЛИ ТекЦифра = 6
    ИЛИ ТекЦифра = 8
    ИЛИ ТекЦифра = 9 Тогда
    
    НарисоватьЛинию(Макет, Х0, У0+РазмерРебра, РазмерРебра, 0, ТолщинаЛинии);
    
    КонецЕсли;
    
    // ВЕРХ ПОПЕРЕЧНАЯ
    Если ТекЦифра = 1
    ИЛИ ТекЦифра = 3
    ИЛИ ТекЦифра = 7
    ИЛИ ТекЦифра = 6 Тогда
    
    НарисоватьЛинию(Макет, Х0+РазмерРебра, У0, -РазмерРебра, РазмерРебра, ТолщинаЛинии);
    
    КонецЕсли;
    
    //ЛЕВО НИЗ
    Если ТекЦифра = 0
    ИЛИ ТекЦифра = 6
    ИЛИ ТекЦифра = 7
    ИЛИ ТекЦифра = 8 Тогда
    
    НарисоватьЛинию(Макет, Х0, У0+РазмерРебра, 0, РазмерРебра, ТолщинаЛинии);
    
    КонецЕсли;
    
    //ПРАВО НИЗ
    Если ТекЦифра = 0
    ИЛИ ТекЦифра = 1
    ИЛИ ТекЦифра = 4
    ИЛИ ТекЦифра = 5
    ИЛИ ТекЦифра = 6
    //ИЛИ ТекЦифра = 7
    ИЛИ ТекЦифра = 8
    //ИЛИ ТекЦифра = 9
    Тогда
    
    НарисоватьЛинию(Макет, Х0+РазмерРебра, У0+РазмерРебра, 0, РазмерРебра, ТолщинаЛинии);
    
    КонецЕсли;
    
    // НИЗ
    Если ТекЦифра = 0
    ИЛИ ТекЦифра = 2
    ИЛИ ТекЦифра = 5
    ИЛИ ТекЦифра = 6
    ИЛИ ТекЦифра = 8
    //ИЛИ ТекЦифра = 9
    Тогда
    
    НарисоватьЛинию(Макет, Х0, У0+РазмерРебра*2, РазмерРебра, 0, ТолщинаЛинии);
    
    КонецЕсли;
    
    //НИЗ ПОПЕРЕЧНАЯ
    Если ТекЦифра = 2
    ИЛИ ТекЦифра = 3
    ИЛИ ТекЦифра = 9
    Тогда
    
    НарисоватьЛинию(Макет, Х0+РазмерРебра, У0+РазмерРебра, -РазмерРебра, РазмерРебра, ТолщинаЛинии);
    
    КонецЕсли;
    
    

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *