8.1. Переменная не определена (ВнешниеОбработки). Недоступно на сервере #665685


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