|
v7: Вопросы про обновления и не только | ☑ | ||
---|---|---|---|---|
0
o1o1
26.05.12
✎
07:40
|
Здравствуйте!
Я уже давно программирую, но конкретно с 1С пришлось начать работать лишь недавно, вопросов, связанных с программированием у меня нет, но есть вопросы по логике работы "платформы", т.е. вопросы такие: 1. Если я создал свою "обработку", или, допустим, создал свою процедуру в глобальном модуле, или допустим, изменил одну из процедур в глобальном модуле — надо ли их специальным образом "переносить вручную" из одной версии в другую при установке официальных обновлений? Я не знаю, как этот процесс происходит, никогда этого не делал, читал про некие "слияния" конфигураций и всякие шаманства с бубнами при обновлениях "кастомных" конфигураций... 2. Если ответ на предыдущий вопрос — "да", то можно ли сделать этот процесс полностью прозрачным, чтобы не таскать из одной версии в другую весь добавленный функционал, а чтобы "платформа" переносила и его тоже? 3. Есть ли способ запускать 1с 7.7 из командной строки или без вмешательства пользователя с помощью, например, какого-нть планировщика, так, чтобы выполнять регулярно нужную мне процедуру и завершать выполнение программы? 4. Можно ли сделать то, что написано в предыдущем пункте так, чтобы это не "пропадало" после обновлений? (если этот вопрос актуален) |
|||
1
Мимохожий Однако
26.05.12
✎
07:46
|
1.Да.
2.Помещай свой код не в глобальную процедуру, а в твой добавленный объект. 3.Запускать можно. Есть в документации. Нужную процедуру можно запускать, если в глобальной процедуре ПриНачалеРаботы() будет ссылка на неё. 4.Надо документировать свои настройки, ставить пароль и тогда вспомнишь при обновлении, внесешь изменения по оставленному плану. |
|||
2
o1o1
26.05.12
✎
07:58
|
Ок, всё понятно, хотел только уточнить... Правильно ли я понял, что ответ на п. 4 — "нет"? То есть, сделать так, чтобы это запускалось и выполнялось без участия человека, но при этом не приходилось переносить дополнительный функционал из версии в версию руками — это на 7.7 сделать нельзя? Никаких hooks, ничего такого нет?
|
|||
3
Мимохожий Однако
26.05.12
✎
08:02
|
Переходи на 8-ку ))) Там можно. Однако при обновлении вписать одну строчку не представляем труда. Или использовать обработку reklama.ert из квартальной отчетности. Она зачастую вызывается при запуске программы. ИМХО, глубоко нырнул. Начни с простых шагов.
|
|||
4
o1o1
26.05.12
✎
08:05
|
Я не из познавательных побуждений — прикладную задачу поставили, вот, надо решить, как всегда "вчера" ) Саму процедуру нужную я написал, а вот автоматизация хромает ) Ладно, придётся поморочиться, видимо )
|
|||
5
Мимохожий Однако
26.05.12
✎
08:07
|
Если бы назвал конфигурацию, то народ что-нибудь мог подсказать. А так партизанство.
|
|||
6
o1o1
26.05.12
✎
08:14
|
Пардон, вроде типовая "Бухгалтерский учёт, редакция 4.5". От этого сильно зависит?
|
|||
7
Мимохожий Однако
26.05.12
✎
08:35
|
Например,
Добавь одну строку в процедуру ПриНачалеРаботыСистемы() Если ....здесь условия запуска Тогда ОткрытьФорму("Обработка",,КаталогМоихОбработок + "\МояВолшебнаяОбработка.ert"); ЗавершитьРаботуСистемы(); КонецЕсли; .... При обновлении не забывай добавлять эту строчку в код и всё. |
|||
8
o1o1
26.05.12
✎
09:33
|
Ых... Спасибо за ответ!
Жаль, что всё с расширяемостью так сурово... Дело в том, что не мне её обновлять, а админу, мне этой рутиной регулярно лень заниматься... И даже если я инструкцию напишу ему, как что делать, он все равно где-нибудь накосячит, это уже проходили... Неужели никак нельзя это без постоянного рукоприкладства решить? А может быть можно как-то к ней извне подключаться регулярно и выполнять эту обработку? Ну то есть, запускать её каким-нибудь образом снаружи, не в начальной процедуре в 1с? |
|||
9
Мимохожий Однако
26.05.12
✎
09:54
|
Скажи, что делает обработка. Может и 1С не нужна? Тому, кто обновляет - оставь инструкцию. Дальше - проблемы его и руководства. Однако странное положение - программирует в конторе один, а обновляет другой.
|
|||
10
SnarkHunter
26.05.12
✎
09:55
|
Что в этом странного?
|
|||
11
Мимохожий Однако
26.05.12
✎
09:58
|
(10)Ничего нет странного для приходящего программиста. Странно, когда в одной конторе два программиста обслуживают одну программу.
|
|||
12
Мимохожий Однако
26.05.12
✎
09:59
|
+(11)У семи нянек дитя без глазу.
|
|||
13
BlackSeaCat
26.05.12
✎
10:04
|
Зато у семи нянек - четырнадцать сисек!
|
|||
14
o1o1
27.05.12
✎
00:18
|
Ок, а можно ли создать инстанс v77.application и запустить мою обработку из VB или любым другим средством, т.е. написать внешний враппер на OLE/COM/хз ?
Быть может, это позволит не править конфигурацию вовсе? Или, может, где-нибудь уже есть примеры как кто решал такую задачу? Уж очень не хочется вносить такую зависимость в типовую конфигурацию, хотелось сделать какое-то "модульное" решение, которое не надо было бы таскать за собой в новые версии... |
|||
15
o1o1
27.05.12
✎
00:24
|
P.S. обработка дёргает проводки по 51 счету и сливает их в CSV, т.е. это очень простая процедура. Сейчас она реализована на встроенном языке. Возможно, следует реализовать её на VB или "внешнем" по отношению к 1с языке...
Обработка нужна для передачи данных о проводках из 1с в параллельно существующую систему финпланирования, зачем так и почему не планировать в 1с — не спрашивайте ) Мне подойдёт любое решение, которое позволит мне получить извне 1с информацию о проводках в CSV (получить не изнутри с помощью пользовательского интерфейса, а программно извне, без участия пользователя). |
|||
16
maip1
27.05.12
✎
02:12
|
можно скрипт написать, который можно поставить в расписание на запуск.
содержание для запуска 1с и в ней запуска своей обработки напр.: Set v7 = CreateObject("V1CEnterprise.Application") v7.Initialize(v7.RMTrade, "/d""ПутьКБазе""/nИмяПользователя /pПароль","NO_SPLASH_SHOW") v7.ExecuteBatch("ОткрытьФорму(""Отчет"",""ИмяПроцедурыНаИчполнение"",КаталогИБ()+""ExtForms\ИмяФайлаНаЗапуск.ert"")")Set v7 = Nothing |
|||
17
o1o1
27.05.12
✎
03:41
|
maip1, спасибо за подсказку!
В итоге моя задача так и решается — путём написания VBScript, который запускается планировщиком из командной строки, создаёт инстанс объекта 1c 7.7 и запускает на нём внешнюю обработку, не придётся руками постоянно доправлять конфигурацию после обновлений. Всем спасибо за ответы, надеюсь, кому-нибудь этот топик пригодится, сэкономит время... |
|||
18
o1o1
27.05.12
✎
04:00
|
МимохожийОднако, offtopic, на самом деле в том, что один программирует, а обновляет другой, ничего странного нету. Это и есть суть разделения на программистов и администраторов. Есть разные прикладные уровни в конце концов, то есть, программисты пишут то, чем пользуются администраторы и пользователи. Иначе были бы сплошные админопрограмюзеры "всё-в-одном".
В данном случае принцип "кто девушку обедает, тот её и танцует" не совсем уместен, наверное. Есть разделение труда, разные уровни компетенций ну и так далее... Всё это моё личное мнение, не претендую ни на что ) |
|||
19
Sedoy
27.05.12
✎
06:43
|
(18) Это сразу бы, в свое время, лишило кучу 1с-ников по 77 постоянного гарантированного заработка...
|
|||
20
ЧеловекДуши
27.05.12
✎
08:13
|
(18)Все нормально будет, для админа, он даже сверять написание не будет :)
По сути, если я правильно вник в свои опасения, то какое обнову ты для конфы (БД) подготовишь, так все и обновится :) Т.е. может ты и не будешь сам обновлять БД, но по сути подготовить МД файл для обновления обязан :) |
|||
21
ЧеловекДуши
27.05.12
✎
08:14
|
+(20)>>> свои опасения,
В твои опасения (описался малось) |
|||
22
o1o1
27.05.12
✎
10:02
|
ЧеловекДуши, дык, а зачем? Куда проще из VBS это делать, и не надо даже навешивать на себя какие-то дополнительные обязанности ) Для админа это будет полностью прозрачно... Он даже и знать забудет про то, что есть какая-то внешняя обработка, которую я запускаю периодически.
А готовить какие-то файлы при каждом обновлении — это, я считаю, просто полный нонсенс, автоматизация обновлений была придумана, чтобы как раз не готовить никаких файлов, т.е. уйти от рутинного повторяющегося (и в основном неблагодарного) труда. |
|||
23
ЧеловекДуши
27.05.12
✎
10:30
|
(22)>>> файлы при каждом обновлении — это, я считаю, просто полный нонсенс
Детская наивность :) |
|||
24
ЧеловекДуши
27.05.12
✎
10:31
|
+ >> Куда проще из VBS это делать
Удачи... Пиши, как сделаешь, мы оценим ;) |
|||
25
Sedoy
27.05.12
✎
10:47
|
(22) Обновление нестандартной конфигурации, это далеко не рутина. Часто это очень даже творческий процесс...пока не подготовил мд-шник. Потом рутина.
|
|||
26
Туц
27.05.12
✎
10:50
|
Гм...
Если Константа.НомерРелиза <> Лев(Метаданные.Комментарий, 8) Тогда |
|||
27
Мимохожий Однако
27.05.12
✎
10:51
|
(22)Не забудь отписаться, как реализовал. А потом как обновление прошло...Переживаем )))
|
|||
28
BlackSeaCat
27.05.12
✎
11:14
|
Эммм... А была где-то когда-то примочка типа "Конвертор ERT в EXE" - по моему, автору она бы подошла.
|
|||
29
o1o1
27.05.12
✎
17:15
|
В итоге создал реализацию из двух файлов:
1. Создаём где угодно на диске файл MyVBScript.vbs следующего содержания:
Обработка может лежать, где угодно, необязательно держать её внутри файлового дерева в базе. 2. Создаём внешнюю обработку (ert) с помощью Конфигуратора и вставляем в код модуля следующий кусок:
3. Запускаем MyVBScript.vbs двойным щелчком мыши или из консоли или с помощью планировщика. После отработки скрипта появится файл текст.txt с нужным содержанием внутри. Полезной работы в этом коде мало, но это уже детали каждой конкретной задачи, кто какую решает. Я просто вставил этот кусок для примера. Вот, примерно так... и работает ) И я даже админу ничего говорить не буду, зачем ему знать про внутренние детали реализации, пусть обновляет себе конфигурации свои, как и обновлял раньше, результат моей работы этому не мешает, да и свою задачу я таким образом решил, не создавая проблем и дополнительных задач для других сотрудников ) |
|||
30
o1o1
27.05.12
✎
17:27
|
Админ просто не обязан править какие-то строчки в каком-то коде, это не его компетенция просто и никто не убедит меня в обратном ) Он не должен создавать программы, он должен настраивать программы и уметь их использовать. И уже тем более, админ не должен лезть в код процедур глобального модуля для вставки каких-то строк туда... Даже copy-paste не должен делать. Поэтому моё решение (предложенное maip1) мне кажется более элегантным, чем то, которое предложили МимохожийОднако и ЧеловекДуши.
|
|||
31
o1o1
27.05.12
✎
17:31
|
Справедливости ради, следует сказать, что все предложенные в этой теме решения в той или иной степени решают поставленную задачу, просто разными способами, и наименее трудоёмким и наиболее гибким мне показался способ запуска посредством VBScript
|
|||
32
ЧеловекДуши
27.05.12
✎
17:32
|
Ты как быстро это, не спеши :)
Сделай, а потом защити. А то получается мы видим весь процесс твоих, мыслей и ошибок :) |
|||
33
o1o1
27.05.12
✎
17:34
|
Дык, я уже сделал и работает )
|
|||
34
ЧеловекДуши
27.05.12
✎
17:35
|
(30)Давай еще раз, что такое 1С?
Что такое конфигуратор? ...и самое главное... Что значит, в твоем понимает, обновление? А то судя по (29), ты для чего-то за пускаешься в режиме предприятия и запускаешь обработку. Зачем? :) |
|||
35
ЧеловекДуши
27.05.12
✎
17:37
|
(33)Молодец :)
|
|||
36
bushd
27.05.12
✎
17:37
|
(34) Ему надо было проводки в текстовик выгрузить и все. Конфигурация типовая.
|
|||
37
o1o1
27.05.12
✎
17:38
|
Не понял вопроса "зачем?"... Затем, чтобы решить задачу (свою, прикладную).
|
|||
38
bushd
27.05.12
✎
17:43
|
(37) Надо было сразу цель написать.
|
|||
39
Sedoy
27.05.12
✎
17:45
|
Оказывается можно очень сложно решить простейшую задачу...
|
|||
40
ЧеловекДуши
27.05.12
✎
17:45
|
(36)Понятно, я бы не смог даже предположить :)
Ты телепат ? ;) |
|||
41
ЧеловекДуши
27.05.12
✎
17:46
|
(37)Ну ты и усложнил, простой механизм выгрузки операций в файл :)
...боюсь спрашивать, нахрена?... |
|||
42
o1o1
27.05.12
✎
17:48
|
Каюсь, там в середине темы где-то я писал, зачем именно эта обработка и что она делает. Телепатия не нужна, нужно внимание к мелочам, просто невнимательно пролистали тему вместо внимательного чтения )
Но, согласитесь, в контексте того вопроса, который я задал, реализация обработки — дело не принципиальное и вторичное. Эта обработка могла бы делать что угодно, и неважно, типовая или нетиповая конфигурация, главное, чтобы "нетиповость" была учтена в процедуре, если она конфигурация не типовая. Т.е. что делает обработка в контексте моего вопроса неважно — важнее, как она запускается и не влечёт ли она необходимость регулярных рутинных ручных действий (при обновлениях). Чем усложнил? Есть способ проще? |
|||
43
ЧеловекДуши
27.05.12
✎
17:53
|
(42)Я подобное делаю под "Автоматом", существует некий пользователь с галочкой "Может выполнять задания". Данный автомат задействует некий, и несложный, механизм, который основан на "ОбработкаОжидания" и при достижения "ТекущееВремя()" и "ТекущаяДата" определенного параметра, запускает различные обработки. Количество обработок, как и количество запусков их, зависит только от времени выполнения самих обработок и выставленного "Часового механизма" :)
По сути тоже самое, что тебе надо в (29), но более гибко и настраиваемый в режиме предприятия. От программиста или админа надо только одно, запуск самого 1С по пользователем "Автоматом" :) |
|||
44
ЧеловекДуши
27.05.12
✎
17:55
|
+(42) >>> Чем усложнил? Есть способ проще?
Простота, это понятие относительно, все зависит от программиста, решающего задачу. :) |
|||
45
o1o1
27.05.12
✎
18:01
|
ЧеловекДуши, проще — значит, меньше времени на достижение результата при одинаковом качестве результата. Результат получен, и я не уверен, что тот же результат выглядел бы короче и лаконичнее, если бы я завёл отдельного пользователя и наворотил целый каскад вызовов разных процедур.
|
|||
46
ЧеловекДуши
27.05.12
✎
18:04
|
(45)Вы молоды? Время в жизни относительно ;)
Там не целый каскад, там искусство и жизненный интерес программиста. Я писал от души ;) |
|||
47
o1o1
27.05.12
✎
18:10
|
Мне 28, хотелось бы верить, что молод ) Время относительно, это очевидно, только я с большим удовольствием проведу его со своей девушкой, чем с 1С ) У меня как-то сошёл "на нет" тот идеализм, чтобы на каждую частную задачу пытаться придумать универсальное общее решение )
Мне платят за решение задач, а не за то, как круто я могу их решать за неограниченное время ) |
|||
48
o1o1
27.05.12
✎
18:34
|
ЧеловекДуши, я, тем не менее, благодарен Вам, за то, что поучаствовали в обсуждении и предложили свой вариант решения — это бесценно, безусловно, и я буду рад если эта тема поможет еще хотя бы одному человеку )
Спасибо! от души ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |