Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > КИС Lack & УС Land

Легким движением руки програмера УС Лэнд превращается в ... или пустим "козла в огород"? : КИС Lack & УС Land

28.03.2024 23:31


07.02.2019 17:24
AndreyZh
 
В плане отработки алгоритмов и подходов для заказной задачи, которую возможно потенциально буду делать разработал глобальную (ые) технологию для программ семейства "УС Лэнд". Одна из "заморочек" данной задачи: для разных контрагентов алгоритмы (формулы) вычисления и обновления информации могут различаться и они изначально неизвестны. Как возможный подход: программный код, привязанный к клиенту хранить в отдельном файле, изменять его и выполнять уже в неизменяемой программе.

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

Вот придумал... и технология доступна ВЕЗДЕ (во всех списках) любых программ систем "УС Land"... или "УС Лэнд:ЕГАИС". Хотя очень сомневаюсь, что нужно её широко рекламировать, т.к. в "шаловливых" руках она может привести к фатальным последствиям?

1. Нажатием кнопки Х в любом списке можно запустить поиск с текущего места по условию, определяемому в виде набора условий на языке программирования xHarbour. В примере ищем отправленные, но полностью не проведенные акты списания с количеством больше 2 единиц:








2. Нажатием кнопки Y в любом списке можно включить/выключить пометки в группу по условию, определяемому в виде набора условий на языке программирования xHarbour. Ищем документы по банку, где дата документа не совпадает с датой оплаты:









Получилось, что "захватились" фиктивные документы. Усложним условие, отбросив таковые:





... другие технологии - вызов кода на выполнение опишу когда-нибудь после
07.02.2019 19:54
FinSoft
 
Привет, Андрей.

Эта задачка фильтрации записей в списке. Когда-то изучал эту тему и пришел к выводу, что для реальных пользователей работать с формулами не очень удобно. Поэтому сделал облегченный вариант. Щелкаем правой кнопкой мышки по заголовку колонки и вводим условию отбора. Если туда выводится дата, то вводим период, если число, то диапазон значений, если строка то набор фрагментов через пробел (возможно использование "-" для исключения фрагмента). Потом полученный список можно распечатать или экспортировать в xls в том виде как есть, с учетом установленной ширины колонок, скрытых колонок и т.п. Щелчек мышки при нажатом shift по заголовку числовой колонки делает подсчет итого, по заголовку колонки со ссылкой на какой-нибудь справочник открывает форму для просмотра содержимого справочника. Фильтры можно сохранять в списке избранного и затем быстро выбирать.
Конечно, при таком подходе не получится реализовать некоторые сложные условия отбора. Но практика показывает, что они составляют небольшой процент среди используемых вариантов.

Ну а под нужды конкретных пользователей есть подгружаемые библиотеки. Компилим отчеты в dll, затем в списке дополнительных отчетов указываем вызвать из такой-то dll такой-то отчет или обработку. В ряде ситуаций очень удобно вызывать программу с ключиком, указав автоматическое выполнение какой-нибудь функции из какой-нибудь dll.
07.02.2019 20:38
AndreyZh
 
Цитата:
FinSoft Эта задачка фильтрации записей в списке. Когда-то изучал эту тему и пришел к выводу, что для реальных пользователей работать с формулами не очень удобно. Поэтому сделал облегченный вариант. Щелкаем правой кнопкой мышки по заголовку колонки и вводим условию отбора. Если туда выводится дата, то вводим период, если число, то диапазон значений, если строка то набор фрагментов через пробел (возможно использование "-" для исключения фрагмента). Потом полученный список можно распечатать или экспортировать в xls в том виде как есть, с учетом установленной ширины колонок, скрытых колонок и т.п. Щелчек мышки при нажатом shift по заголовку числовой колонки делает подсчет итого, по заголовку колонки со ссылкой на какой-нибудь справочник открывает форму для просмотра содержимого справочника. Фильтры можно сохранять в списке избранного и затем быстро выбирать.
Конечно, при таком подходе не получится реализовать некоторые сложные условия отбора. Но практика показывает, что они составляют небольшой процент среди используемых вариантов.
Я и надеюсь, что обычные пользователи туда не полезут

Цитата:
FinSoft Ну а под нужды конкретных пользователей есть подгружаемые библиотеки. Компилим отчеты в dll, затем в списке дополнительных отчетов указываем вызвать из такой-то dll такой-то отчет или обработку. В ряде ситуаций очень удобно вызывать программу с ключиком, указав автоматическое выполнение какой-нибудь функции из какой-нибудь dll.
В этом и фишка исходной задачи: сделать единожды хардкодную простую программу, а при добавлении нюансов или видов контрагентов просто подсовывать программе текстовый файл с "исходным" кодом, реализующим нюансы, который на лету будет исполнять программа.

В "продолжении" приведу пример использования - просто сегодня было лень
10.02.2019 09:46
AndreyZh
 
3. Нажатием кнопки Z в любом списке можно запустить произвольный набор операторов и функций на исполнение.

Приведу РЕАЛЬНЫЕ примеры для "УСЕга", где было полезным использование данной технологии. В то же время заносить данные операции в штатные средства программы - это лишь усложнять её использование, а работы в принципе "разовые":

а. Когда-то меня попросили список магазинов X5 с адресами, что легко получить средствами ЕГАИС. В результате в таблице клиентов появилось 12 000 мусорных записей. Штатное удаление по одной - тоскливо. Делаем через описываемый сервис:





В результате можно увидеть, что записи удалены, а таблица резко уменьшилась:





б. В "УС Land" есть штатная операций - инвентировать пометки в группу, т.е. снять с помеченных, а пометить не выбранные. Например нужен построить отчет по покупателям, исключая несколько других. "УСЕга" этого не имеет:





В результате, если делать по всем записям:





в. Когда-то из-за сбоя ЕГАИС акт списания был отправлен, но он "потерялся" в ЕГАИС. Было выяснение с техподдержкой и они посоветовали переотправить акт заново, но он был с акцизными марками... и программа запрещает удаление отправленного или проведенного в ЕГАИС документа... По удаленке, при помощи: https://olegon.ru/showthread.php?t=16617&page=3 сменил статус отправки акта, но при помощи этого механизма можно сделать так... По второй строке уже сделал:

08.09.2019 15:50
AndreyZh
 
"Не всё коту масленица"... В этом году впервые попытался уйти в 2 недельный отпуск, как обычно в санаторий, да и тот не получается - всю неделю каждодневные звонки по работам, письма, которые нужно анализировать и доказательно отвечать, звонки от "левых" товарищей... причём всё могло подождать до моего исхода с оного. А в выходные нет лечебных процедур, а полуфабрикаты для заготовки на зиму переспевают - вот жена это перерабатывает не допуская меня и мне приходится что-то творить

Данные глобальные технологии существуют во всех системах и испытываются, в том числе на "дураках", а так же по ним высказывались пожелания. За субботу & воскресенье фсё реализовал и в будущих релизах всех систем "УС Лэнд" они перейдут на "легальное" положение:





Однако удалил технику внедрения своего кода, изменяющую информацию - слишком опасная, в том числе для меня, освободился от прямого указания алиасов таблиц и добавил технологию фильтрации данных, вызываемую Ctrl+F... Раньше "не додумался", т.к. по сети это очень медленно плюс придумал, как "освобождать" ограниченные ей ресурсы.

Выше приводил картинки по "УС Лэнд:ЕГАИС", а теперь новый "фильтр" покажу, как работает в любом режиме "УС Land"...

Напомню: технологии вшиты в общую библиотеку для всех программ, всех моих систем и как следствие работают в любой из моих программ... но и приходится учитывать их "нюансы", например по принципам работы с БД

Имеем список наличных платежей, в котором задаём фильтр:

- сумма больше 700 руб
- и затраты на питание водителей





После чего программа показывает только документы удовлетворяющие данному условию:





К программам прилагаются описания структуры БД и предназначения рабочих полей таблиц

1. "УС Land". Document\LAKS_DBF.DOC
2. "УС Лэнд:ЕГАИС". Document\Структура БД УСЕга.doc
08.08.2022 14:53
AndreyZh
 
Изредка возникают неожиданные задачи... Вот и недавно во время посещения клиента увидел, как оператор вносит данные в БД из электронной таблицы, присланной покупателем - тогда было массовое изменение GLN торговых точек и обязательное указание телефонов магазинов для водителей в документах. Как обычно, т.к. задача "разовая" всё вводилось ручками, да и ко мне не обращались по причине, что такие задачи редкие и каждый раз "другие". Так, как у меня было время подумать на досуге, то на будущее вспомнил механизмы данной темы и придумал универсальный механизм пособления операторам для таких разовых и каждый раз разных задач.

На "вход" имеем CSV файл с произвольными разделителями, который легко, например получить из электронной таблицы. Затем нажав в требуемой таблице, режиме, справочнике и etc кнопки Ctrl+A задаём для этой таблицы схему копипаста, где указываем в какие поля текущей таблицы пишем информацию из строки CSV файла. При необходимости игнорировать поле CSV оставляем пустое значение.

Например где-то, например (реально) из 1С:Бухгалтерия выгружен список работников с кучей ненужных атрибутов, из которых нам нужно только внести в программу должность и номер телефона:





В списке (справочнике) работников вызвали режим режим задания схемы Ctrl+A. Определили разделитель, список полей для копипаста. Как видно на картинке мы игнорируем первые 3 поля.

Затем последовательно по строкам CSV списка копируем строку: Crtl+Insert (Ctrl+C) или из меню:





На изменяемой строке справочника нажимаем кнопки Ctrl+Z. Программа блокирует запись и изменяет соответствующие поля таблицы, заблокировав запись и определившись с типом поля для внесения информации, т.е. дату запишет, как дату:





При операции копипаста правильно определяются шрифты, если установлен "русский"... и понятно, что для таких действий нужно знать структуру БД - инструкции laks_dbf.doc и понимать, что нельзя менять поля системных кодов. Впрочем врятли такие задачи пользователи будут решать без обращения ко мне, но всё же это много легче, чем вбивать информацию ручками?
Часовой пояс GMT +3, время: 23:31.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.