Велостыли: Регламентные задания

09.05.18

Разработка - Рефакторинг и качество кода

Переделывая очередное «Костыльное» решение, в голову пришла мысль, собрать все странные решения в одну статью, чтобы была некая библиотека о том, как делать не надо (Навеяно вредными советами). Потом понял, что в одну статью не получится все записать, начну с регламентных заданий. Поясню, в данную статью попали примеры из жизни, которые так или иначе реализованы на механизме регламентных заданий, при этом совершенно не всегда этот подход в принципе оправдан.

Не пытайтесь повторить это на работе!

Сокращения и сленг в статье:

  • РЗ - Регламентное задание
  • ФЗ – Фоновые задания
  • Шедулер -Task Scheduler, компонент Microsoft Windows, который предоставляет возможность запланировать запуск программ или скриптов в определённые моменты времени или через заданные временные интервалы. (РЗ на Windows)
  • Батник - файл с расширением *.bat
  • БСП – Библиотека стандартных подсистем
  • УТ – Управление торговлей
  • ERP - 1С:ERP Управление предприятием 2.

Содержание:

1 Себестоимость для Директора.

2 Не смог доделать до конца и использовал помощь зала.

3 По старинке. Толстым по тонкому.

4 Перемудрили, хотели как лучше наверное…

5 ФЗ и Обработчик ожидания. РЗ чем-то не угодили?

6 Красивые картинки, устаревшее решение. Закупку программного обеспечения должны производить IT специалисты.

7 Почти все предусмотрели. Бесконечный цикл.

 

1 Себестоимость для Директора.

Поведали мне тут историю про ERP и директора, которого удивлял отчет по себестоимости. Суть в том, что в течение дня себестоимость по Номенклатуре менялась и его это дико удивляло, объяснить же ему, что это вполне нормально сил не нашлось. Был придуман «Гениальный» план…

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

На самом деле удивляет, что из всех возможных вариантов, а их на вскидку приходит в голову масса, к примеру:

-по регламенту собирать куда-то срез на утро и сделать отчет именно по этому срезу.

-либо дополнительный отчет (механизм из БСП), сохраняющий данные при первом запуске за день, а все последующие запуски в течение дня, показывающий только сохраненные данные.

-или все-таки объяснить, что меняющаяся себестоимость в течение дня - это нормально.

Но выбрали именно такой ресурсоемкий вариант…

2 Не смог доделать до конца и использовал помощь зала.

Эту ситуацию рассказала мне коллега по работе. Была задача, по регламенту собирать некий файл Excel и отправлять его на почту, но 1с программист не смог довести всю работу до конца. Толи у него сил не хватило, толи времени, толи желания…

Средствами 1с по регламенту собирался файл Excel и сохранялся на диск. Средствами виндового шедулера запускался скрипт, который отправлял тот самый файл по почте. Самое важное, что поработал 1С программист и системный администратор, они настроили время запуска РЗ и шедулера так, чтобы все работало почти бесшовно…

3 По старинке. Толстым по тонкому.

Это решение видел я лично, досталось оно от одной Франчайзи. Была задачка: собирать с касс в Розницу (Серверная) данные по регламенту. Касс было около 100, по 1-2 на магазине. На кассах стоял Frontol, обмен касс с Розницей настроен был через файлы (подпиленный типовой механизм).

Виндовый шедулер запускал батник, который запускал 1С в толстом клиенте и запускал внешнюю обработку, которая запрашивала отчет за смену либо загружала отчеты, если они лежали в папках обмена.

Я понимаю, что типовые механизмы в данном случае написаны в большинстве на клиентских модулях, но по тому количеству переделок, что было в Рознице, видно было, что за первоначальный вид конфигурации не боролись, поэтому для меня до сих пор остается тайной, почему не создали регламент и не перенесли код на сервер. А лучше вообще создали бы дополнительную обработку (механизм из БСП) и перенесли код в нее и использовали бы ее как регламент.

4 Перемудрили, хотели как лучше наверное…

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

Была добавлена обработка в «Расширения конфигурации» с формой. В модуле обработки была экспортная процедура. В конфигурацию было добавлено РЗ и модуль, в котором была одна единственная процедура:

Процедура ЗапуститУсушкуТовараВРознице() Экспорт

       Обработка = Обработки.УсушкаТовараРозница.Создать();

       Обработка.ЗапуститьУсушкуНаВсехСкладах(Неопределено);

КонецПроцедуры

Предполагаю, что хотели сделать доработку без изменения конфигурации, но не учли, что на тот момент в расширение еще нельзя было добавлять модули и до сих пор нельзя добавлять РЗ.

Можно было в уже созданной обработке, в модуле добавить функцию СведенияОВнешнейОбработке() Экспорт с двумя командами «ВызовСерверногоМетода» и «ОткрытиеФормы» и все… Используя механизм БСП без доработки конфигурации.

5 ФЗ и Обработчик ожидания. РЗ чем-то не угодили?

Это решение видел лично. Задача состоит в том, что нужно было проверять папку с небольшим интервалом и если в папке присутствует файл, обработать его и удалить. База Розница (Серверная).

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

Тут или РЗ или дополнительная обработка решала бы данную задачу.

6 Красивые картинки, устаревшее решение. Закупку программного обеспечения должны производить IT специалисты.

Не буду рассказывать плотно про мобильное приложение, попробую кратенько. Есть некое мобильное приложение со значком «1С:Совместимо», нарисованное 10 лет назад (так заявлено на сайте), учитывая то, что первая версия мобильной платформы вышла 29.05.2013., а http сервисы пришли с платформой 8.3.5 в 10.07.2014. Получается 10 лет назад, это действительно был прорыв, но решения с годами устаревают и надо озаботится о переработке решения под текущие реалии.

В общем, стояла задача подобрать мобильное приложение для обмена с УТ10, причем решение b2b. На сколько я понимаю, выбрали это решение из-за красивых картинок на сайте. Громких лозунгов "Быстро, Дешево, Легко!". И от того, что фирму обслуживала Франчайзи являющаяся официальным партнером разработчика этого решения.

Вы скажите причем здесь регламентные задания!?

По большему счету, РЗ тут и недолжно быть, но… Рассказываю, как это все работает…

1 Скачивается некая внешняя обработка.

2 С помощью нее делаются настройки в базе.

3 Прописывается под кем она должна запускаться и на каком сетевом ресурсе будет лежать. К этому ресурсу у пользователей должны быть полные права.

4 Виндовый шедулер под пользователем запускает толстый клиент и запускает данную обработку, и она постоянно обрабатывает вызовы.

5 При старте обработка запускает какой-то сервер обработки вызовов, который принимает и отдает данные.

Самое странное, что при работе всего этого, чем больше клиентов подключается через мобилку, тем сложнее работать в УТ сотрудникам. Постоянные конфликты блокировок, съедание всех ресурсов и страшные тормоза, то есть с транзакциями откровенно плохо продумано. Да и сам этот механизм ломался при динамическом обновлении и разных факторах. В итоге раньше раз 10-20 в день завершали работу запущенного толстого клиента и запускали заново через батник прописанный в шедулере. Это уже как ритуал было ;))

В данный момент большая часть клиентов переведена на веб клиент + http-сервис, а параллельно всех остальных переводят на новое самописное приложение, работающее через http-сервис. УТ чувствует себя все лучше и лучше.

7 Почти все предусмотрели. Бесконечный цикл.

Вот этот вариант почти был рабочий, банальная ошибка привела к зацикливанию. По регламенту надо было отправлять сообщения из регистра, в котором они копились. Выбирались первые 100 записей с сортировкой по измерению «ПопыткаОтправки». Сначала надо было отправить те сообщения, которые в прошлый раз были не отправлены. Если сообщение по какой-то причине не отправлялось, «ПопыткаОтправки» увеличивалась на 1. По регламенту если попыток отправки было 10 и более (жестко прописано в коде) сообщения больше не выбирались из регистра. Все бы ничего, но «ПопыткаОтправки» было с типом Число(1), то есть достигнуть 10 было в принципе невозможно.

 

На этом пока все.

Я буду периодически пополнять данную статью и если вдруг вы нашли решение, которого здесь нет, но оно тоже «Костыльное» пишите в комментариях или мне на почту, я его добавлю.

 

В конце решил написать статью с примерами использования механизма из БСП, который мог решить большинство перечисленных выше задач -> БСП. Дополнительные отчеты и обработки. Регламентные задания примеры от простого к сложному

РЗ Регламентное задание ФЗ Фоновые задания Шедулер Task Scheduler БСП

См. также

Результаты ревью кода 1500+ решений каталога Инфостарт: наиболее частые ошибки разработчиков в коде

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

Поделюсь своим опытом аудита кода авторских продуктов с Infostart.ru как одним из элементов применения DevOps-практик внутри Инфостарт. Будет настоящий код, боевые скриншоты, внутренние мемы от команды ИТ-лаборатории Инфостарт и прочее мясо – все, что любят разработчики.

10.04.2024    4645    artbear    67    

69

Ниндзя-код

Рефакторинг и качество кода Платформа 1С v8.3 Россия Бесплатно (free)

Предлагаю вашему вниманию советы мастеров древности. Программисты прошлого использовали их, чтобы заострить разум тех, кто после них будет поддерживать код. Гуру разработки при найме старательно ищут их применение в тестовых заданиях. Новички иногда используют их ещё лучше, чем матёрые ниндзя. Прочитайте их и решите, кто вы: ниндзя, новичок или, может быть, гуру? (Адаптация статьи "Ниндзя-код" из учебника JavaScript)

01.04.2024    2228    DrAku1a    15    

33

Практическое программирование: когда скорость важнее совершенства

Рефакторинг и качество кода Бесплатно (free)

В новом материале мы анализируем, как в программировании баланс между быстротой разработки и тщательной проработкой кода влияет на конечный продукт. Обсуждаем, почему иногда важнее сосредоточиться на скорости выполнения проекта, и когда можно позволить себе уступить в качестве ради достижения бизнес-целей.

01.04.2024    575    Prepod2003    6    

2

Когда понадобился новый оператор

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Когда понадобился новый оператор, но его нет в синтакс-помощнике, что делать?

18.03.2024    1335    ZhokhovM    4    

4

Когда разработчик платформы не добавил проверку препроцессоров

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Когда разработчик платформы решил пойти на кухню за кофе, а проверку препроцессоров не добавил, и вот тут-то и началось: "Что, опять все сломалось? Ну и кофе же я забыл сделать!".😅

18.03.2024    2971    ZhokhovM    4    

9

Реструктуризация - бесконечная история

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

При разработке программ требуемый функционал ставят на первое место, но есть еще и архитектура программы. На горизонте 5-10 лет она становится важнее функционала, который должен работать при масштабировании и росте данных. Реструктуризация 5 терабайтной базы 1С 8.2 в формат 1С 8.3, складывает весь пазл архитектурных просчетов, которые сделали ради функционала. Как это исправить? - для разработки правильной архитектуры, нужно всего лишь сместить фокус с функционала и подумать о «вечном».

29.09.2023    2058    1CUnlimited    15    

23
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Synoecium 779 10.05.18 09:45 Сейчас в теме
Спасибо, что-то на ИС мало статей на тему как не надо делать, большинство пишут как надо (все ведь знают как правильно делать).
user774630; Trancer64; корум; dsdred; +4 Ответить
2. KAV2 156 10.05.18 09:48 Сейчас в теме
Себестоимость для Директора. - Возможно директор хотел не фактическую, а плановую, то есть cost price.
3. dsdred 3318 10.05.18 09:52 Сейчас в теме
(2)Речь была именно про Факт
4. DAAbramov 10 10.05.18 10:18 Сейчас в теме
На инфостарте появилась рубрика "Вредные советы"?)
Upd
Спасибо, нашел
5. pm74 199 10.05.18 10:45 Сейчас в теме
С регламентными заданиями давно для себя решил проблему, универсальное параметризованное РЗ + справочник с хранилищем параметров. Вышло вполне удобно. Пытался опубликовать на ИС, зарубили по оформлению, до сих пор болтается в черновиках.
11. dsdred 3318 10.05.18 22:27 Сейчас в теме
(5)Сильно зарубили?
Интересно было бы посмотреть на решение.
12. pm74 199 10.05.18 23:56 Сейчас в теме
(11) вот описание (сорри за качество записывал поздно вечером )
Прикрепленные файлы:
Описание.wmv
корум; dsdred; +2 Ответить
13. dsdred 3318 11.05.18 09:19 Сейчас в теме
(12)Очень хорошее решение, подойдет для http и web сервисов, регламентных заданий. Надо допиливать статью и публиковать.
У меня в планах у самого было летом написание справочника команд, но тут готовое решение.

Однозначно допиливайте статью и публикуйте!!!

П.С. На ИС смотришь одни Com и XML заголовки мелькают, аж передергивает ;)) Поэтому и статьи стал писать чтобы народ прекращал старье в работе использовать.
14. pm74 199 11.05.18 10:13 Сейчас в теме
(13) код с тех пор уже сильно изменился , в старом тоже куча недочетов (лишних процедур , серверных вызовов итп) нужен рефакторинг .
Думал сделать как расширение , жаль только в него регламентное задание не добавить
15. dsdred 3318 11.05.18 10:27 Сейчас в теме
(14) Расширение + дополнительная обработка (БСП:Дополнительные отчеты и обработки) чем не вариант?
16. pm74 199 11.05.18 10:41 Сейчас в теме
(15) не думал на эту тему , можно попробовать.
кстати из предыдущего моего комментария может сложиться мнение , что какая то нерабочая поделка, но это не так . Работает уже несколько лет в боевом режиме на 2 базах.
Прикрепленные файлы:
Пример.wmv
17. dsdred 3318 11.05.18 10:59 Сейчас в теме
(16)Обязательно нужно публиковать!

Реально то, что хотел писать сам))
6. kiruha 388 10.05.18 10:53 Сейчас в теме
Отдельная база для директора решает множество других проблем :
1) Кроме себестоимости может много чего меняться за день
2) Ничего не тормозит
3) Ничего не блокируется
Обычно только это называется ежедневной копией и доступ кроме директора дается еще финикам
Synoecium; +1 Ответить
7. Synoecium 779 10.05.18 11:20 Сейчас в теме
(6) кстати да, в статье пишется, что цель у директора была чтобы "себестоимость не менялась" и такую проблему можно решить гораздо проще, но такая копия базы очень полезна и возможно стоит потраченных на неё ресурсов. А бывает что нужна еще и третья база - кроме актуальной копии с неизменной информацией еще и тестовая копия которую можно убивать в хлам и она сама восстановится на следующий день.
8. dsdred 3318 10.05.18 11:25 Сейчас в теме
(6)
Отдельная база для директора решает множество других проблем :
1) Кроме себестоимости может много чего меняться за день
2) Ничего не тормозит
3) Ничего не блокируется
Обычно только это называется ежедневной копией и доступ кроме директора дается еще финикам


Обычно, но повторю. Задача была и возникла из-за одного единственного типового отчета на СКД и только для одного человека.
При этом в конторе около 300 сотрудников, в том числе и финики.
9. ron1 10.05.18 11:39 Сейчас в теме
А мы тоже сделали копию, только на sql, и в ней директор, экономисты, финансисты и другие "исты" делают отчеты, потому что быстро. Обычно их не интересует текущий день, они делают отчеты за прошлые годы и уже закончившиеся кварталы и месяцы. Бухгалтерии удобно тем, что у них перестало тормозить, а "истам" удобно в том, что когда бухгалтерия закрывает период и почти каждый день запускает перепроведение документов это им не мешает . Все довольны.
корум; +1 Ответить
10. ron1 10.05.18 11:42 Сейчас в теме
п.6 я догадываюсь о каком мобильном приложении речь. Мы тоже помучились, пока руководитель не понял, что это лохотрон.
18. Stim213 415 22.05.18 14:43 Сейчас в теме
5 ФЗ и Обработчик ожидания. РЗ чем-то не угодили?

Это решение видел лично. Задача состоит в том, что нужно было проверять папку с небольшим интервалом и если в папке присутствует файл, обработать его и удалить. База Розница (Серверная).


Ничего, что регламентные задания выполняются на сервере и от имени пользователя, под которым запущена служба?
При использовании в клиент-серверном режиме сервер ни сном ни духом о файлах на клиенте и ваше РЗ или обработка с РЗ не будут иметь доступа к нужным файлам.
Кроме того, даже если у вас клиент и сервер на одной машине(например, RDP), то, чтобы сервер видел папку пользователя - нужно давать права пользователю, под которым запущен сервер на эту папку. И в этом случае доступ к папке будут иметь все, т.к. что доступно серверу - доступно всем. По этой причине серверный пользователь должен быть максимально ограничен в правах.
Подробнее можете почитать: https://infostart.ru/public/659098/


Почитайте немного матчасть, прежде чем критиковать чужие решения.
o.nikolaev; +1 Ответить
20. dsdred 3318 22.05.18 15:27 Сейчас в теме
(18)В том то и дело, что я в курсе того, что вы описали.

То есть Вы считаете нормальным решением на сервере по таску батником (в котором указан логин и пароль) открывать толстого клиента с обработкой под определенным пользователем который ломится в некую папку?
22. Stim213 415 22.05.18 17:48 Сейчас в теме
(20)

То есть Вы считаете нормальным решением на сервере по таску батником (в котором указан логин и пароль) открывать толстого клиента с обработкой под определенным пользователем который ломится в некую папку?


я не вижу другого решения, невозможно на клиент-сервере выполнить клиентский код в регл задании.

Простой пример - Клиент-серверная база, пользователи работают по RDP на сервере1. При этом служба 1С запущена на сервере2, к которому никому, кроме админов, нет доступа. Папка с файлами находится на терминальном сервере 1.
А теперь расскажите, как через РЗ вы организуете чтение файлов этой папки.
19. Stim213 415 22.05.18 14:54 Сейчас в теме
+ аналогично по прочим пунктам.
Поймите же, что при выполнении РЗ серверный пользователь при всем своем(и вашем) желании не сможет увидеть файлы, хранящиеся на клиенте. Для этого нужен толстый/тонкий клиент, который запускается шедулером.
21. dsdred 3318 22.05.18 15:33 Сейчас в теме
(19)Я это понимаю, так как описанные выше решения переводил на РЗ.

Вы правда считаете, что "Папки для обмена" делают на "клиенте" у некого пользователя при клиент\серверном решении?
23. Stim213 415 22.05.18 17:53 Сейчас в теме
(21)
Вы правда считаете, что "Папки для обмена" делают на "клиенте" у некого пользователя при клиент\серверном решении?


я не могу знать кто и с какой целью создает эти папки. Но если вы хотите обеспечить безопасность файлов в ней, то не следует давать права неё пользователю, под которым крутится сервер, потому что таким образом содержимое может прочесть любой пользователь.
Если секретных данных в папке нет или безопасность поддерживается на уровне ларька средней руки - то можно и сервер. пользователю дать доступ.
24. Stim213 415 22.05.18 17:56 Сейчас в теме
+ я не говорю, что это правильно или неправильно.
Может в вашей конкретной ситуации РЗ и является корректным решением. Но в более общем случае и при разработке универсальных решений такой подход может являться единственно правильным способом, поэтому не стоит так бездумно винить разработчиков. Возможно, у вас просто мало опыта.
25. dsdred 3318 22.05.18 18:57 Сейчас в теме
(24)Отвечу на все разом, если Вы не против.
Согласен, возможно, я не слишком подробно описал, но я предполагал, что упомянув 100 касс с Frontol и файловый обмен в 3 примере, это уже натолкнет на ftp... То есть с касс по ftp прилетали файлы в папки рассшаренные всем пользователям кроме того под которым крутилось 1с по принципу, что Вы описали выше(20). На стороне, где крутится 1с, запускалось то чудо, что я описал. Собственно я перерисовал код под ftp.

По 5 примеру с удалением файла из папки. Инвентаризаторы создавали некий файл определенного формата и передавали его тоже через ftp из вне. Дальше работало то, что описано выше. Я такие вещи в принципе делаю через http сервисы.

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


А по поводу "не следует давать права неё пользователю, под которым крутится сервер", а каким образом работают файловое хранилище в новых конфигурациях? 1С сама сделала именно такой вариант: пользователь, под которым крутится сервер, имеет доступ к папке с файлами, а уже остальным пользователям на уровне конфигурации запрещено использовать внешние обработки, и зарезаны различные доступы. (Хотя может, что то изменилось, но года полтора назад именно так и было)

-> http://v8.1c.ru/doc8/4.htm
Вырезка: "Для работы с файлами различных типов используются приложения, установленные на компьютере пользователя и ассоциированные с соответствующим типом файлов.

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

В информационной базе для хранения файлов предусмотрена структура папок. Файлы распределяются по папкам. Доступ сотрудника к папке может быть ограничен заданными правами доступа."
26. Stim213 415 23.05.18 15:05 Сейчас в теме
(25) Ну что тут можно сказать.
На 1С полагайся, но своей головой все равно думай(с). В 1С много дыр в безопасности, пример взлома я выкладывал: https://infostart.ru/public/182849/

Если хотите действительно сохранить данные - разделяйте их правами доступа на уровне учетных записей ОС, иначе - данные можно утащить.
27. dsdred 3318 23.05.18 15:09 Сейчас в теме
(26)Красивая брешь безопасности
28. azubar 45 16.06.18 23:43 Сейчас в теме
(26) На уровне ОС дыр в безопасности не меньше ;-)
va582; dsdred; +2 Ответить
Оставьте свое сообщение