Мелкие трюки в кассовой книге

Стандартная кассовая книга хоть и хороша собой, однако имеет ряд нюансов:

  1. Нет возможности управлять нумерацией создаваемых документов
  2. Нет возможности заместить печатную форму
  3. Имеется ненужная пользователю вкладка “Поступления чеков”
  4. Нет возможности менять контрольный счёт контрагента на альтернативный

(далее…)

Кэширование данных отчёта – тривиальная реализация

Предположим, что у нас есть отчёт в виде Z-разработки.

Кэширование данных отчёта нам может пригодиться в нескольких случаях, например:

  1. Отчёт часто требуется, но долго выполняется; при этом от результатов особой оперативности не требуется;
  2. Результат выполнения данного отчёта требуется отразить в другом отчёте (сводном); но при этом рассчитывать в сводном отчёте множество под-отчётов не хочется;

Для начала допустим, что:

  • отчёт имеет простые и стабильные параметры;
  • процедуры сбора и показа данных строго разделены;
  • данные отчёта находятся в одной внутренней таблице.

(далее…)

Телевизор — это …

Переслушиваю читанный давно роман. Пелевин. Чапаев и Пустота.

– А вот скажите, – заговорил он, – чего хочет человек, вернувшийся домой из опасного путешествия, после того как утолит жажду и голод?
– Не знаю, – сказал Сердюк. – У нас обычно телевизор включают.
– Не-е-е, – сказал Кавабата. – Мы в Японии производим лучшие телевизоры в мире, но это не мешает нам осознавать, что телевизор – это просто маленькое прозрачное окошко в трубе духовного мусоропровода. Я не имел в виду тех несчастных, которые всю жизнь загипнотизированно смотрят на бесконечный поток помоев, ощущая себя живыми только тогда, когда узнают банку от знакомых консервов. Речь идет о тех людях, которые достойны упоминания в нашей беседе.

   – Так как же ты, Петька, дошел до такой жизни, что спрашиваешь меня, своего боевого командира, всегда ли то, что происходит у тебя в голове, – это то, что происходит у тебя в голове, или не всегда?

Он взял со стола две луковицы и принялся молча чистить их. Одну он ободрал до белизны, а со второй снял только верхний слой шелухи, обнажив красно-фиолетовую кожицу.
   – Гляди, Петька, – сказал он, кладя их на стол перед собой. – Вот перед тобой две луковицы. Одна белая, а другая красная.

 

Александр Скляр в качестве чтеца — силён, бесспорно.

Удивительные алгоритмы

Бороздя просторы своих подписок, наткнулся между делом на нечто. В чём суть этого бессмысленного и беспощадного ненормального приёма программирования:

Требуется выполнить деление двух целых чисел с точностью до четырёх знаков после запятой, но используя только оператор простой замены подстроки.

В качестве базового алгоритма использован Нормальный Алгоритм Маркова, который можно реализовать на любом языке программирования. Входные значения – унарные числа.

Обуреваемый скептицизмом, решил переложить на язык ABAP.

Реально работает!

Результат алгоритма Маркова

Пример кода выложил отдельно в виде SLNK.

Тонкости в ABAP-редакторе

Исправление регистра

В редакторе кода есть кнопка “Структурная печать”.

По умолчанию она выправляет отступы в тексте, однако там есть ещё опция преобразования регистра. Если душа лежит к одному из этих подходов – вперёд и с песней.

Настройки структурной печати

 

Вот наблюдаем некоторый бардак:

до обработки

А вот что стало после обработки:

после обработки

Хитрый поиск

В окне поиска есть галочка “Регулярные выражения”:

Поиск с регулярными выражениями

По регулярным выражениям можно учебники писать, однако краткая вводная информация доступна по пумпочке справа от искомого текста. Можете дополнительно полистать документацию, но не обязательно саповскую – регулярные выражения (Regular Expressions, RegExp, регэкспы) используются в огромном количестве других систем в разных вариациях.

Вот несколько примеров, которые обычным поиском просто не решаются:

Поиск всех слов, начинающихся на букву Z:

\<Z\w*\>

Поиск всех “слов” из трёх знаков:

\<…\>

Поиск строк – любых вариантов из списка (bsis, bsas, bsik, bsak, bsid, bsad):

bs[ia][dks]

Внесистемная группировка данных

В практике программирования бывает необходимость выделить несколько однородных карточек в особую группу. Счета главной книги для особого использования, группа контрагентов входящих в особый “холдинг”, список материалов-синонимов и так далее.

Хорошо, если такую группировку получается легко реализовать на базе самих карточек.

Один из универсальных подходов – применение наборов (используются в Report Writer). Здесь особо без разницы, какие именно карточки хотите сгруппировать – тип данных можно указать вручную.

(далее…)

Ccылки на транзакции и настройки из браузера

Немного хитрости и смекалки позволяют делать прямые ссылки на транзакции и объекты настроек в SAP.

Стоит только щёлкнуть по ссылке на сайте или в документе, и в SAPGUI открывается нужная транзакция или раздел.

Баловство без реальной необходимости, хотя…

Вот ниже вполне работоспособные ссылки (на моём компьютере):

(далее…)

Сортировка почты без почтового клиента

Сортировка почты – вещь ну просто необходимая при большом потоке писем. Есть куча методов и подходов к сортировке.

например, продвинутым моментом я считаю такую настройку, при которой письма сами раскладываются по папкам, на основании заголовков и адресной книги. То есть так, чтоб при этом не надо было постоянно подкручивать правила сортировки – по правилу “один раз настроил – и работает”.

Ещё есть интересные моменты скриптования прямо на сервере – это называется Sieve.

Пишешь скриптик, и он работает в моменты, когда происходит обработка писем на сервере.

Например, я пока повесил на один из ящиков скрипт:

require ["reject"];

if address :is ["To", "Cc"] ["contact@sample.com"] { }
else {
    reject "Banned";
    stop;
}

Здесь contact@sample.com – адрес ящика, на который я повесил этот скрипт, а “Banned” – текст в отлупе.

Скрипт делает следующее: реагирует отлупом на все письма, которые направлены не напрямую в этот ящик (спам, рассылки и подобные письма). Проходят только письма, у которых этот ящик указан в полях Кому(To) и Копия(CC), но не в Скрытой/Слепой Копии (BCC).

Пока поставил, поживём – увидим, что будет дальше.