COM соединение. Почему выполняется ПередЗаписью() при СоздатьДокумент() #159335


#0 by Volkoff
Господа, проблема следующая: Имеется:  COM - соединение двух восьмерок. Пытаюсь: Из одной восьмерки создать в другой документ. Все просто: Проблема: Во второй восьмерке("База") в модуле документа "Прием" есть предопределенная процедура "ПередЗаписью", в этой процедуре используются глобальные процедуры и функции "Базы"(они там проверяют реквизиты на корректность). При выполнении метода "СоздатьДокумент" первая восьмерка ругается, что такие-то переменные не определены, т.к. при выполнении процедуры "СоздатьДокумент" автоматом выполняется процедура "ПередЗаписью". Что делать??? Я цлый день мучаюсь. Ладно, понятно, если бы "ПередЗаписью" вызывалась методом "Записать", дык какого Х.. она выполняется при "СоздатьДокумент"? Помогите, плз. Может есть какие способы обхода?
#1 by ТелепатБот
#2 by Volkoff
Телепат, спасибо конечно, но это ты меня не понял :)
#3 by Volkoff
З.Ы. Во второй восьмерке ("База") я не имею права менять ни одной строчки. Она находится на поддержке...
#4 by Волшебник
при вызове метода СоздатьДокумент процедура ПередЗаписью не выполняется, но модуль объекта, содержащий эту процедуру в том числе, компилируется
#5 by Vozhd
Скорее всего платформа не может скомпилировать модуль объекта. Правильно настроенные параметры синтаксического контроля покажут возможные ошибки.
#6 by vde69
Создай копию модуля где описаны глобальные процедуры и функции "Базы" удали все лишнее, дай ему права работать с сом соединением
#7 by Volkoff
2Волшебник Я и сам думал, что не выполняется... но факт остается фактом. И это и есть проблема! Приведенный выше код работает без проблем если я комментирую содержание процедуры "ПередЗаписью" конфы "База" (т.к. никакой проверки не выполняется и все эти гл_переменные не используются), но этого делать никак нельзя! Сдача работы завтра! Завал...
#8 by Волшебник
Факт таков, что она не выполняется, а всего лишь проверяется. Поверь.
#9 by Волшебник
"Сдача работы завтра!", а автор еще не разобрался с режимом работы восьмерки "COM-соединение", наверняка не знает про директивы препроцессора и флажки общих модулей. Стыдись, Белое перо...
#10 by Volkoff
Мне стыдиться нечего абсолютно, т.к. восьмерка - побочное производство :) Основным дя меня (на данный момент) явл. php, а так-же реализация нейросетей.. А про директивы и флажки буду читать :) Спасибо.
#11 by Volkoff
А толку от директив препроцессора и от флажка "внешнее соединение" в свойствах общего модуля, если я не могу менять конфигурацию "База" вообще??? Вопрос был следующий: Как сделать так, чтоб не проверялась процедра "ПередЗаписью" при вызове метода "СоздатьДокумент"?
#12 by vde69
можно так, но помоему это не правильно:) #Если не ВнешнееСоединение Тогда ПередЗаписью КонецПроцедуры #КонецЕсли
#13 by Волшебник
Может быть присоединишься к доработке движка форума? он написан на PHP? или подключим нейросети к форуму, например, для более качественных ответов ТелепатБота?
#14 by Volkoff
Как только будет свободное время можно горы свернуть :) А нейросети, я думаю, сюда не стоит (не оправданно), если есть желание впихнуть какую-нить интеллектуальную систему для обработки сообщений, то продуманная продукциаонная модель ИС вполне прокатит... Движок форума, по всему видно - самописный (дырявость публичных скриптов пугает?! :) ), его, конечно, можно вылизать до блеска, как всегда - вопрос в цене :) -----------------лирика------------------------------- Меня же на данный момент волнует вопрос: Есть ли возможность обойти компиляцию модуля документа "Базы", при вызове метода "СоздатьДокумент" из присоединенной конфигурации, НЕ МЕНЯЯ НИ СТРОЧКИ в "Базе"??? (Сколько недокументированных проблем с 1с было - все решил, а вот эта, что-то запала...)
#15 by Волшебник
Тебе нужно исправить ошибки в той базе, к которой ты подключаешься. Дело это благородное, потому я тебя благословляю на это. Как включить возможность изменения, ты прочитаешь здесь: ;
#16 by Vozhd
"Есть ли возможность обойти компиляцию модуля документа "Базы", при вызове метода "СоздатьДокумент"" - пять баллов. Можно ли запустить не скомпилированную программу?
#17 by vde69
смотри совет 12, а неправильно это не по тому, что работать не будет а по тому, что при записи ты отключишь всю стандарную обработку
#18 by Volkoff
2Волшебник. Я с 1с8 работаю уже около двух лет :) Не много, но и не мало :) Пару недель назад просто получил задание объеденить две конфы - одна типовая УП (перелопаченная мной вдоль и поперек), а другая - Каминовский Расчет Зарплаты (менять я ее не могу, даже с таким благословением :)) (решил все сделать по старому доброму COM - интерфейсу), справочники и регистры объеденились как по маслу (эх, блинчиков бы щас), а вот с документами накладочка получается... В Камине, при записи документа в обработке "При Записи" проверяется заполнен ли реквизит "Фирма", если нет, то реквизиту присваивается значение глобальной переменной "гл_Фирма", которая определяется при начале работы системы (значение берет из константы "ОсновнаяФирма"). Так вот нафига компилировать и соответсвенно проверять на существование реквизит документа, который еще не задан, и выдавать мне ошибку, что переменная "гл_Фирма" не определена???
#19 by Volkoff
2Vozhd, ну не правильно выразился, не расстреливать же за это, хотя примнинительно к конфигурациям 1с - "компилиция" весьма противоречивое обзывательство... ИМХО (Можно Си или Дельфи по ОЛЕ подрубить к 1с-ке, посылать текстом команды на встроенном языке 1С и они, с некоторыми ограничениями, во время работы конфигурации будут выполнятся - компиляцией тут и не пахнет... обычное выполнение платформой стандартных функций) 2vde69 Все понятно, но при записи, в последствии, стандартная обработка ой как понадобится! Может есть возможность объявить из подключенной конфы переменные и функции "Базы"??? Сделать например их пустыми, и фиг с ним... но чей-то NewObject мне как-то мало помог...
#20 by Volkoff
Впорос: Можно ли из подключенной конфигурации объявлять функции и переменные конфигурации - сервера COM соединения (той к которой было произведено подключение)???
#21 by Vozhd
Ну почему люди не читают документацию? Вы создаете объект. У объекта есть определенный программный код, который необходимо скомпилировать при создании объекта. Если его не компилировать, то с объектом нельзя будет работать. В программном коде объекта синтаксическая ОШИБКА! Из-за этого код объекта не компилируется. Обойти это можно только одним сопособом - ИСПРАВИТЬ синтаксическую ошибку.
#22 by Volkoff
В итоге пришлось использовать массивное ОЛЕ соединение... вот тебе и оптимизация...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С