|
8.1. Переменная не определена (ВнешниеОбработки). Недоступно на сервере | ☑ | ||
---|---|---|---|---|
0
cube033
21.05.13
✎
14:43
|
Сказывается недостаток знаний.
Текущие условия: 8.1 УПП, SQL, РИБ. Людей работает много, выгнать пользователей лишний раз нельзя, поэтому принято решение все действия выполнять во внешних обработках, а из модуля производить только вызов внешних обработок. Суть проблемы: Развернул у себя файловую версию данной базы, реализовал все механизмы - все работает. Перенес механизмы на базу клиента с сервером 1С и понеслось... {ОбщийМодуль.АТП_ПодпискаНаСобытие(7,21)}: Переменная не определена (ВнешниеОбработки) ВнешняяОбработка = <<?>>ВнешниеОбработки.Создать(ПолучитьПуть()); {ОбщийМодуль.АТП_ПодпискаНаСобытие(67,21)}: Переменная не определена (ВнешниеОбработки) ВнешняяОбработка = <<?>>ВнешниеОбработки.Создать(ПолучитьПуть()); {ОбщийМодуль.АТП_ПодпискаНаСобытие(42,3)}: Процедура или функция с указанным именем не определена (Предупреждение) <<?>>Предупреждение("Установите значение константы ""Путь к обработкам АТП"" в ""Операции > Константы > Прочие"" "); {ОбщийМодуль.АТП_ПодпискаНаСобытие(48,6)}: Процедура или функция с указанным именем не определена (Предупреждение) <<?>>Предупреждение("Значение константы ""Путь к обработкам АТП"" установлено не верно!" + Символы.ПС +" Изменить его можно в ""Операции > Константы > Прочие"" "); И ладно у внешних обработок правда есть ограничения "Недоступно на сервере 1С:Предприятие", но "Предупреждение" то тут причем??? Помогите пожалуйста понять в чем суть ограничений. В свойствах модуля, из которого идет вызов внешних обработок, стоят все три галки "Клиент","Сервер","Внешние соединение", но при этих же настройках в моём файловом варианте все работало. Из модуля формы "ФормаЭлемента" номенклатуры подобный вызов внешних обработок проходит успешно. |
|||
1
ДенисЧ
21.05.13
✎
14:45
|
а кого ты НаСервере предупреждать собираешься?
|
|||
2
cube033
21.05.13
✎
14:47
|
Тоже верно (1)
Только вот я вообще не хочу, чтобы процедура выполнялась НаСервере, в этом я и хочу разобраться. |
|||
3
ДенисЧ
21.05.13
✎
14:47
|
модуль в регламентном задании запускаешь?
|
|||
4
cube033
21.05.13
✎
14:48
|
Подписка на событие - при записи
|
|||
5
hhhh
21.05.13
✎
14:49
|
(4) ну убери предупреждения оттуда.
|
|||
6
ДенисЧ
21.05.13
✎
14:51
|
(4) дык. Это ж на сервере...
Убирай всё лишнее... |
|||
7
cube033
21.05.13
✎
14:51
|
Проблема возникает при проведении, поэтому к тому времени как запуститься процедура из моего модуля, уже столько всего происходит, что я путаюсь в клиентах и серверах
|
|||
8
cube033
21.05.13
✎
14:52
|
(6) Убирать вызов внешних обработок не вариант, там больше ничего и нет кроме них
|
|||
9
ICWiner
21.05.13
✎
14:53
|
Галочку сервер сними с общего модуля
|
|||
10
cube033
21.05.13
✎
15:00
|
Как я понимаю проблема происходит из-за того, что вызов процедуры происходит НаСервере.
(9) - Будет ли процедура вообще запускаться НаСервере без этой галочки? Условия таковы, что тестировать я могу с 0:00 до 8:00, поэтому - хорошо бы разобраться в причинах проблемы до тестов. |
|||
11
ICWiner
21.05.13
✎
15:12
|
а зачем НаСервере?
|
|||
12
Шапокляк
21.05.13
✎
15:21
|
(10) А если ограничить создание внешних обработок примерно так:
#Если Клиент Тогда //тут мы создаем и запускаем свои внешние обработки ВнешняяОбработка = <<?>>ВнешниеОбработки.Создать(ПолучитьПуть()); // и выполняем их #КонецЕсли |
|||
13
cube033
22.05.13
✎
04:08
|
(11) - это я и хочу понять, как я уже писал - (7)
(12) Тогда мы вероятно избежим ошибки, но запуск внешней обработки тоже не произойдет. |
|||
14
cube033
22.05.13
✎
05:35
|
Как я понимаю, логика распределения между клиентом и сервером аналогична управляемым формам. И если речь о подписке на событие "При записи", то в клиент-серверном варианте процедура всегда будет выполняться на сервере? И это никак не изменить, нужно подстраиваться? Из процедуры НаСервере конечно нельзя вызвать процедуру НаКлиенте? И если на управляемых формах все определяется явно (#НаКлиенте,#НаСервере), то как с этим работать в 8.1 вообще не понятно.
|
|||
15
cube033
22.05.13
✎
10:04
|
Настало утро в европейской части России и в связи с этим ап)
|
|||
16
Шапокляк
22.05.13
✎
11:34
|
(15) Не уверена, полагаю, что при интерактивной работе пользователя ветка на Клиенте сработает, а если какие регламентные задания то фиг знает. Понятно, что ВнешниеОбработки. не доступны на Сервере, потому программа и ругается - ей же не объяснишь, что вы напихали в модуль с галками и Клиент и Сервер такие процедуры, которые, возможно, и не будут на сервере никогда выполняться. Конечно, если нельзя, но очень хочется, то можно. Например, в порядке эксперимента засуньте в справочник внешних обработок свои обработки, после чего раскручивайте их во временный экземпляр обработки средствами конфигурации. Возможно, прокатит, хотя скорость... да и гемор по обеспечению существования этих внешних нашлепок во всех узлах РИБ вас не воодушевит.
|
|||
17
cube033
22.05.13
✎
15:11
|
(16) - спасибо.
Уже не воодушевляет, но пока не вижу других способов, точнее уже никаких способов. В этой обработке Очень много кода... Не знаю, что придумать. Про справочник интересно, но выглядит, как еще один костыль к не очень здоровой системе. Задумка - то изначально не сложная - нужно просто отправлять на сайт изменения количества товара. |
|||
18
Шапокляк
22.05.13
✎
17:18
|
(17) Жуткая идея. Почему не запускать регламентное задание с какой-то периодичностью? А вот представьте, как у вас будет групповое перепроведение выглядеть с вашей подпиской! Месяца за 3 документы перепровести, так уже и на пенсию пора.
|
|||
19
cube033
22.05.13
✎
17:54
|
(18) А регламентные задания предположительно удасться подружить с внешними обработками на клиент-серверном варианте?
|
|||
20
Шапокляк
22.05.13
✎
18:04
|
(18) Да при таком подходе тоже не особо. Есть надежда, что, отладив выгрузку остатков на сайт, вы сможете в конфу обработку запихать. Мои соображения в (17) касались, в основном, целесообразности передачи на сайт остатков после проведения каждого документа.
|
|||
21
cube033
22.05.13
✎
18:14
|
(18)
Кроме обменов и массовых перепроведений - подписка выигрывает, тем, что номенклатуры очень много. Так как если при подписке нужно обновить сведения о 1-20 товаров, то при регламентном задании инфу надо обновлять о всей номенклатуре. Хотя как вариант - брать записи регистра за последний день (период от подписки до подписки) |
|||
22
cube033
23.05.13
✎
05:57
|
Мне бы как-то вызвать процедурку из внешней обработки не НаСервере. Я уже обдумываю из формы документов, которые делают движения по искомому регистру вызывать - они то наверняка НаКлиенте. На кнопку "ОК" повесить. Но это громадный костыль...
в 8.2 еще есть способ вроде - поместить обработку в хранилище и это хранилище подключить. В 8.1 нет ничего подобного? |
|||
23
cube033
23.05.13
✎
12:39
|
Ап
|
|||
24
Шапокляк
23.05.13
✎
12:54
|
(22) Я предлагала выполнять подписку в ветке Если Клиент, тогда и костыли не нужны. Но при этом какие-нибудь регламентные перепроведения на сервере не делают того, что вам нужно (кстати если тупо перепроведение проведенных, то и на остатки не влияет, может оно вам и не надо в т аком случае-то). Было также предложение запихать обработку в справочник внешних обработок и оттуда уже через хранилище вытаскивать. Это быстродействие. Третий вариант - отладить обработку и запихать ее в конфу, после чего обращаться к ней в подписке, т.е. не ВнешниеОбработки.Тратата, а просто Обработки.Траляля - ограничения на сервер там нет вроде бы.
|
|||
25
cube033
24.05.13
✎
14:35
|
1. "Я предлагала выполнять подписку в ветке Если Клиент, тогда и костыли не нужны.","если тупо перепроведение проведенных". Кроме перепроведения существует и проведение, именно оно мне и нужно, именно оно делает запись в регистре, на которую реагирует подписка и оно наверняка проходит на сервере. Кстати да - проведение/перепроведение вообще не причем, важны только записи регистра "Товары на складах", а такие изменения (мне кажется) всегда будут на сервере, и различными конструкциями (Если клиент) мы можем только пропустить код, который нам нужен.
2. "запихать обработку в справочник внешних обработок". В 8.1 нет конструкции "ПодключитьВнешнююОбработку", насколько мне известно - типовые конфы 8.1, сначала сохраняют обработку из такого справочника во временный файл, а потом снова используют ВнешниеОбработки.Создать(), которые не работают на сервере. 3. " отладить обработку и запихать ее в конфу" - это крайний вариант, но я уже к нему склоняюсь. Проблем тут несколько: а)Работать приходиться одновременно с клиентом и изготовителем сайтов - идеи у них появляются и меняются, поэтому конечная версия будет не скоро, а клиент уже хочет работать в текущей версии. б)База не очень надежна, в ней есть ссылки на несуществующие объекты, она переписана другим франчайзи, изредка приходится делать динамическое обновление конфигурации, так я очень переживаю в такие моменты. Не хотелось бы постоянно обновлять конфу, клиент не очень идет на контакт, и если кто-то начал работать пока я пишу - это сугубо моя проблема, просить выйти из базы никого нельзя. Если людям будут писать, что текущая конфа отличается от сохраненной - это мой косяк, так, что динамических обновлений не избежать. в) Как я уже писал - работать можно с 00:00 до 8:30 - пока пользователей и бэкап юзеров-ботов нет в базе и можно почти спокойно обновить конфу. Можно конечно сделать себе копию на сервере клиента, а по утрам накатывать все изменения разом, наверное так и сделаю. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |