Форум ДИЦ

Пользовательский и Дилерский форум ДИЦ
Текущее время: Вс июл 22, 2018 5:02 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Пн ноя 27, 2017 3:49 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
Назначение: Набор базовых методов для работы с проектами от BAU, включая работу с классами-сервисами

Скачать:
Вложение:
BAU_Biblio.7z [83.95 Кб]
Скачиваний: 8

Что изменено в версии v2.0501

Классы-сервисы: упрощённый метод расширения функционала

Часто возникает необходимость добавить к стандартному функционалу что-нибудь своё. Наиболее частая просьба от пользователей - сделать в картотеке кнопочку, чтобы на выделенных записях поставить/снять флаг, изменить дату и т.п. Стандартный подход требует в рамках отдельного проекта сделать расширение, где всё прописать. Однако существует проблема множественного расширения одного объекта из разных проектов.

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

Класс-сервис - это библиотечный cod-файл, содержащий в себе минимально необходимый код для выполнения некоторой модификации существующего визуального объекта (бланк или картотека, одного или нескольких сразу), включая и выдачу подсказки пользователю. При этом наиболее общая часть функционального кода вынесена в библиотеку с тем, чтобы для добавления нового схожего функционала было достаточно скопировать образец и внести в него минимальные изменения.

Особенности реализации: функционирование класса-сервиса НЕ зависит ни от имени файла, ни от места файла среди папок проекта типа "Библиотечные файлы", ни от проекта, куда файл класса-сервиса положен ;).

В приложенных простейших примерах демонстрируется автоматическое добавление кнопок в картотеки для обработки выделенных записей. Я же теперь любые доработки выполняю именно с помощью своих классов-сервисов. В примерах максимально прокомментированы все действия.
Хотите сделать свой сервис - создайте новый пустой файл, скопируйте туда пример целиком, посмотрите, что получится ;) Потом модернизируете под свои нужды

Краткая инструкция:
1. Установите в систему проект BAU. Он включает в себя и функционал для управлениями сервисами, и некоторые другие применяемые мной методы.

2. Подключите проект BAU к своему проекту. Проект НЕ лицевой, для использования подключать его следует как подпроект лицевого.

3. Положите cod-файлы примеров в любой свой проект, откомпилируйте.

Обратите внимание - для управления подключенными сервисами добавляется бланк Настройки.блBAU_Сервисы. Помимо того, что он демонстрирует подробную информацию о сервисах, он позволяет:
- отключить сервис. Отключенный сервис остаётся в системе, однако весь его функционал отключается.
- посмотреть подсказку к сервису
- поменять порядок демонстрации кнопок (двигая строки секции со списком)
Кроме того - там есть флаг, при установке которого при открытии любого бланка/картотеки в подвале демонстрируется его служебное имя, необходимое для указания в новом сервисе
ВАЖНО - изменения учитываются после нажатия кнопки Изменить при следующем открытии модифицируемого объекта.

Рекомендации
Единственное требование к размещению сервиса - его проект должен давать доступ к проекту, с чьими объектами сервис будет работать. Ну и, естественно, это НЕ должен быть проект от ДИЦ, чтобы не страдать при обновлении. Поэтому варианты такие:
- МойПроект - у многих, вероятно, осталось нечто подобное? Тогда в нём можно создать/использовать папку Сервисы
- собственный объединяющий проект. Помните, у ДИЦ есть проект БухгалтерскийУчет, который функционала не содержит, и нужен для упрощения компиляции всех стандартных проектов? Я делаю подобный проект для собственных проектов - и именно его подключаю к инфобазам (дополнительное преимущество - при подключении/отключении подпроектов НЕ требуется реорганизация инфобазы :)).

Если будете использовать собственный объединяющий проект, то
- включите в него БухгалтерскийУчет, и тогда все его подпроекты получат доступ ко всем стандартным проектам (учтите занятие лицензий)
- включите в него проект BAU_Бибилио
- используйте папку проекта типа "Библиотечные файлы" с именем Сервисы для размещения сервисов (положите туда примеры).

Напоминаю - можно все такие файлы хранить в одной папке. У меня сервисов много, потому для простоты администрирования я их раскладываю в соответствии с объектами, для которых они предназначены.
Кроме того, имя файла должно содержать имя объекта и отражать назначение сервиса. Это облегчает администрирование – при взгляде на файл должно быть понятно, для чего он предназначен. Например: srvкартРазные_Замок.cod – сервис, предназначенный для нескольких картотек, добавляющий кнопку управления флагом Замок

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Последний раз редактировалось Buletov Пн июн 04, 2018 12:22 pm, всего редактировалось 12 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Ср ноя 29, 2017 8:51 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
Ни одного отклика :(
Неинтересно или непонятно?

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Ср ноя 29, 2017 8:55 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 10:25 am
Сообщения: 4852
Откуда: Таганрог
Андрей, вчера скачал - огромное спасибо. Пока все понятно, но смотреть внимательно на предмет использования буду не раньше выходных.

_________________
Александр Золотько, г.Таганрог


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Ср ноя 29, 2017 9:29 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 11:50 pm
Сообщения: 6416
Откуда: Новороссийск
Аналогично - скачал, но пока не смотрел...

_________________
Ян Терновский, Новороссийск


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: BAU: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Ср ноя 29, 2017 10:39 pm 
Не в сети

Зарегистрирован: Ср июн 18, 2008 3:03 pm
Сообщения: 985
+

_________________
С уважением, Владимир Миронычев.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Чт ноя 30, 2017 12:20 am 
Не в сети

Зарегистрирован: Пн мар 29, 2004 12:48 pm
Сообщения: 437
Откуда: Ростов-на-Дону
+

_________________
Ковалевский А.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Вс дек 03, 2017 2:51 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
Описание изменений к версии библиотеки BAU v.1.01
Помимо исправления ошибок и доработок

Чтобы активизировать интерес к библиотеке, сделал универсальный сервис для работы с флагом Замок srvкартРазные_Замок

Флаг Замок присутствует во многих картотеках.
Так вот, чтобы кнопка управления замком появилась ещё и в другой картотеке, в общем случае в сервисе достаточно было сделать следующее:
1. Добавить имя этой картотеки в параметр aTarget
Код:
VAR aTarget  []: String=["Документы.УчетНДС.СчетаФактуры.картСчетФактурыВсе"
                         ,"Документы.УчетТМЦ.картБухСкладскиеДокументы"
                         ]; -- Список объектов для сервиса

2. Обезличить обращение к картотеке в методе "PROC OnClick" - сделать его универсальным
То есть убрать оператор WITH и использовать прямое обращение к модифицируемому объекту
Код:
--  WITH B.Owner.Owner AS Первичка.Документы.УчетНДС.СчетаФактуры.картСчетФактурыВсе DO
--{ Блок, работающий в полученном контексте
    n=B.Owner.Owner.Cardfile.SelectedCount;


    If n=0 Then Message('Не выбрано ни одной записи'); Return; End;     -- Входная проверка

    i=Enquiry('','Что делать с флагом?',['Установить','Сбросить','Отказ'],1);
    IF not i IN [1,2] THEN Return; END;
    lValue=(i=1);

    sHint='Обработано '+Str(n)+'/';
    FOR i = 1..n DO Hint(sHint+Str(i),i,n);                             -- Перебираю выбранные
      B.Owner.Owner.Cardfile.Selected[i].Замок=lValue;                                -- Новое значение флага
    END; -- For    --  выделенные записи
--} Блок, работающий в полученном контексте
--  END; -- With B.Owner.Owner


Забавно, что добавив "Справочники.картКонтрагент", я вдруг НЕ увидел свои добавленные кнопки.
Чтобы увидеть, где же они, я использовал при вызове AddBtnBlock необязательный параметр - задал побольше ширину основной кнопки.
Оказывается, они просто спрятались за большой кнопкой "Проверить контрагентов" ;)

Причина - то, что в стандартном комплекте не учитывается, что кто-то будет что-то дорабатывать.
Мои кнопки добавляются в начале формирования визуальной формы и используют относительное положение на фрейме, а ДИЦ свою кнопку добавляет тоже динамически потом, причём координаты указывает фиксированные - вот и накладывает поверх моих.

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

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Пт дек 22, 2017 5:18 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
Версия 2.01

1. ВАЖНО - проект переименован - BAU_Библио
ИЗВИНИТЕ - но имя BAU интерферировало с с другими компонентами

2. Доработан бланк управления классами-сервисами.
Теперь там обозначены границы набора сервисов одного объекта, в пределах которых сервис можно двигать (порядок обработки сервисов -
поднимать/опускать кнопки)
3. Доработан бланк выдачи подсказок - техническую информацию теперь можно копировать

4. Добавлен библиотечный класс Настройки. Назначение - возможность сохранять/читать значения заданных переменных бланка.
Комплекты переменных можно сохранить как для бланка в целом, так и для текущего пользователя отдельно
Используется стандартная картотека МашинаРеквизитов.Настройки.Переменная

5. Файлы с примерами лежат прямо в проекте, но отключены (иначе требовали бы подключения нужных им стандартных проектов)

Настройки - при едином функционале у пользователей могут быть свои предпочтения настроек. Как минимум - разные группы справочников, разные счета учёта, разные папки для работы с файлами...
Я решил отказаться от ведения собственных картотек хранения настроек и использовать ту, что уже есть в стандартном комплекте.
Теперь использую 3х уровневую схему
-- настройки от разработчика. Прописаны прямо в коде, используются, например, при добавлении проекта к инфобазе.
--настройки Общие. Хранятся в инфобазе, доступны всем пользователям. Можно использовать для размножения настроек. Например, один пользователь настраивает, сохраняет как общие. Другие могут просто прочитать и работать, либо поднастроить для себя и сохранить как пользовательские (персональные)
-- настройки Пользовательские - видны только текущему пользователю.

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

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Вт май 22, 2018 4:41 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
Обновление - редакция 2.04
Скачивать здесь
Описание предыдущей редакции

================================================================================
22.05.2018 v2.04
+ Добавил возможность вызывать сервис ПриЗаписи (OnPost)
================================================================================
28.03.2018 v2.03
# Добавил скрытую (Hidden) папку бланков BAU.Сервис
# BAU.Сервис.блУниверсал - Добавил работу со ссылочными полями, включая случай полей с неописанными картотеками
# BAU.Сервис.ПоказатьЗапись Ошибка при обработке служебного поля IsGroup
================================================================================

# BAU.Сервис.блУниверсал - бланк-надстройка над картотеками, предназначен для групповой обработки записей ЛЮБОЙ картотеки (поля шапки).
1. Выбираете нужную картотеку
2. Выделяете записи для изменения (фильтрация, сортировка и т.п. - стандартными методами)
3. Встаёте на поле (любого типа), в которое надо записать новое значение в выделенных записях
4. Кнопка Заменить - просит указать новое значение (соответствующего простому типу поля - не ссылочному)
Кнопка Очистить - очищает поле (значение = nil)
Для указания новых значений ссылочных полей используйте дополнительную панель параметров (по-умолчанию - задвинута/спрятана справа)
Кнопка Заполнить - определение класса ссылочного поля.
Поле "Новое значение" имеет кнопку выбора. Если поле исходной картотеки имеет привязку к картотеке - она и откроется для выбора значения. Если привязки нет - нужную картотеку придётся указать явно.

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Последний раз редактировалось Buletov Вт май 22, 2018 6:12 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Вт май 22, 2018 5:50 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 10:25 am
Сообщения: 4852
Откуда: Таганрог
Спасибо, Андрей!

_________________
Александр Золотько, г.Таганрог


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Вт май 22, 2018 6:06 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
Перевыложил 2.04 - наткнулся на ошибку, из-за которой не сохранялись документы, к которым не подключен сервис типа OnPost

В порядке извинения - прилагаю сервис для пересчёта НДС при сохранении СФН
Доработанный сервис Здесь

Назначение: обеспечение совпадения НДС, рассчитанного от общей суммы с суммой НДС позиций
Алгоритм:
Считаю НДС-18% от соответствующей суммы шапки, корректирую соответствующую сумму без НДС.
В позициях пересчитываю НДС-18% с округлением до 2х знаков, корректирую сумму без НДС
Сравниваю с тем, что в шапке - на величину расхождения корректирую позицию с максимальным НДС. Именно эту - чтобы погрешность в позиции была минимальной

Чтобы увидеть, как сервис работает, можно в СФН в позиции указать явно неправильный НДС и сохранить документ (F2)

Напоминаю - файл с сервисом можно положить в папку библиотечных классов любого проекта ;)

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Последний раз редактировалось Buletov Вт май 22, 2018 10:10 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Вт май 22, 2018 10:09 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
Сервис пересчёта НДС при сохранении ОД и СФН

Описание алгоритма здесь
Скачать здесь:
Вложение:
srvNDSonPost.7z [2.15 Кб]
Скачиваний: 9

Пользователь, получив предыдущую версию функционала пересчёта НДС, сразу указал на то, что надо пересчитывать не только СФН, но и соответствующий ОД

Вот я и выкладываю обновлённый сервис. Заодно и как пример - как одним классом расширить функционал сразу нескольких совершенно разнотипных документов ;)

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Вт май 22, 2018 10:51 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 11:50 pm
Сообщения: 6416
Откуда: Новороссийск
Buletov писал(а):
Сервис пересчёта НДС при сохранении ОД и СФН

Описание алгоритма здесь
Скачать здесь:
Вложение:
srvNDSonPost.7z

Пользователь, получив предыдущую версию функционала пересчёта НДС, сразу указал на то, что надо пересчитывать не только СФН, но и соответствующий ОД

Вот я и выкладываю обновлённый сервис. Заодно и как пример - как одним классом расширить функционал сразу нескольких совершенно разнотипных документов ;)

А, может, надо сразу и всю первичку перепроверить? А то ОД и СФ будут пересчитаны, а Счет и Торг-12 - нет? :)

_________________
Ян Терновский, Новороссийск


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Ср май 23, 2018 9:49 am 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 4997
Откуда: Москва, Кустарь-одиночка с мотором
yante писал(а):
А, может, надо сразу и всю первичку перепроверить? А то ОД и СФ будут пересчитаны, а Счет и Торг-12 - нет? :)

Ответил там, чтобы не загромождать тему политическими вопросами

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: BAU_Библио: библиотека с поддержкой классов-сервисов
СообщениеДобавлено: Ср май 23, 2018 6:46 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 10:25 am
Сообщения: 4852
Откуда: Таганрог
yante писал(а):
А, может, надо сразу и всю первичку перепроверить? А то ОД и СФ будут пересчитаны, а Счет и Торг-12 - нет? :)

Ян, чувствуется что ты в бухучете - не рубиш... :mrgreen: Как можно ПЕРЕПРОВЕРИТЬ первичку, если она НЕ МОЖЕТ меняться без оформления изменений? :shock:
Андрей писал сервис для СОЗДАНИЯ первички....

_________________
Александр Золотько, г.Таганрог


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB