Имя: Пароль:
1C
1С v8
Проведение по COM
0 Patrio_
O_Muerte
 
19.12.13
11:59
Выручайте други.

Создаю документ по com из базы 1С Отель (Гостиничные технологии), в базе 1С Ресторан (Рарус).
Запись проходит нормально.
Проведение вылетает с ошибкой
Процедура или функция с указанным именем не определена "обПолучитьЦветНех".

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

Я пытался записать разными способами:
1. Сразу при создании и заполнении реквизитов документа.
2. Сначала записываем документ, потом проводим.
3. Записываем документ, затем ищем по гуиду и пытаемся провести.
Ни один из этих способов не дал результата - везде эта ошибка.
Други, как найти эту процедуру?
1 Sammo
 
19.12.13
12:01
Галочка "Внешнее соединение" у модуля стоит?
2 selenat
 
19.12.13
12:01
(0) что там с галочками в свойствах обшего модуля насчет внешнего подключения?
3 selenat
 
19.12.13
12:02
(1) ты быстр :)
4 Patrio_
O_Muerte
 
19.12.13
12:04
Слов не хватает.
Не стоит, но конфа на поддержке. Есть варианты без изменения конфы?
5 Patrio_
O_Muerte
 
19.12.13
12:04
Пардон, не на поддержке, а с замочком
6 Patrio_
O_Muerte
 
19.12.13
12:04
Не хочу включать возможность изменения
7 selenat
 
19.12.13
12:05
(4) полагаю, что нет. Придется снимать.
8 ptiz
 
19.12.13
12:06
(6) Иначе - переносить весь расчет и запись движений в вызывающую обработку.
9 Defender aka LINN
 
19.12.13
12:08
(8) Проще уже в режиме клиентского соединения просто подключаться.
10 selenat
 
19.12.13
12:09
(8) не поможет. Конфликт идет по процедурам, которые даже не используются в модуле проведения этого документа. Грубо говоря процедуры хоть и не используются, должны быть доступны в контексте исполнения. А программа их не находит и ругается.
11 selenat
 
19.12.13
12:10
Возникла мысль, что можно сделать свой модуль с галочкой внешнего соединения и процедурами вызова всех процедур того модуля, но скорее всего тоже не прохляет.
12 Apokalipsec
 
19.12.13
12:13
а через V82.Application не создает тоже?
13 Patrio_
O_Muerte
 
19.12.13
12:19
(12)Не пробовал, у меня времени нет переделывать.
Буду включать возможность изменения и ставить галочку.
14 Patrio_
O_Muerte
 
19.12.13
12:33
Хм, включил галочку внешнее соединение, все равно та же ошибка.
15 selenat
 
19.12.13
13:05
(14) ругается на ту же процедуру или какую-то другую?
16 Patrio_
O_Muerte
 
19.12.13
13:33
Та же.
17 Patrio_
O_Muerte
 
19.12.13
13:35
Базы обе файловые
18 selenat
 
19.12.13
13:37
(16) возьми копию базы и проставь галочки "внешнее соединение" на все общие модули. Проверь, уйдет ли ошибка. По ходу еще что-то тянется.
19 Serginio1
 
19.12.13
13:51
Установи Сервис\Параметры\МодулиПроверка
Режим проверки поставь галку Внешнее соединение и сделай проверку модуля или проверку модулей
20 Patrio_
O_Muerte
 
19.12.13
13:52
Запустил трассу при проведении документа, галочки ВнешнееСоединение стоят у всех модулей, которые используются, кроме двух - УправлениеДиалогом и ЗащищенныеФункции.
Защищенным функциям нет возможности установит этот признак.
Управление диалогом я признак установил, но теперь иная ошибка:
Конструктор не найден.
Валиться на этой строке.
Кнопка = КнопкиПодменюДействия.Вставить(0,"ЗаменитьНаОбъект",ТипКнопкиКоманднойПанели.Действие,"Заменить на другой объект",Новый Действие("ДополнительныеДействияФормы"));
При проведении отладчиком сюда не заходит.
21 Patrio_
O_Muerte
 
19.12.13
13:56
(19)Сделал, несколько ошибок, в том числе и та которую я указал.
22 Serginio1
 
19.12.13
13:59
(21) Ну значит либо галка на модуле ВнешнееСоединение не стоит либо проседура в блоке #Если Клиент Тогда и прочее
23 selenat
 
19.12.13
14:04
(20) ты уверен, что подключаешься именно к той базе, где проставил свои галочки внешнего соединения? Что-то меня терзают смутные сомнения, что ты куда-то не туда коннектишься.
24 Patrio_
O_Muerte
 
19.12.13
14:15
(23)База именно та.
(22)Галочка стоит, блока #Если Клиент нету.
Скорее всего связано с тем, что тут каким то образом вызываются методы, которые предназначены для исполнения над элементами формы, и соответственно не работают при программном вызове.
25 selenat
 
19.12.13
14:18
(24) на всякий случай уточню. Галочки стоят в модулях той базы К КОТОРОЙ подключаешься. Так?

Если базы у тебя файловые то на инструкции препроцессору ( #Если Клиент) внимания можешь не обращать.
26 Serginio1
 
19.12.13
14:20
(24) угу
27 selenat
 
19.12.13
14:20
(24) "Скорее всего связано с тем, что тут каким то образом вызываются методы, которые предназначены для исполнения над элементами формы, и соответственно не работают при программном вызове."

Так ты же говоришь, что процедуры эти не вызываются при проведении документа. ИМХО не должно это быть проблемой. ВажнО наличие всех необходимых процедур и функций, которые должны быть доступны для использования по контексту.
28 Serginio1
 
19.12.13
14:21
(24) Вот их и нужно поместить в блок  #Если Клиент
29 selenat
 
19.12.13
14:29
(28) насколько мне известно, для файловых баз это совершенно параллельно,эти инструкции работают только в клиент-серверной базе.
30 Patrio_
O_Muerte
 
19.12.13
14:33
(25)Да, галочки я проверял именно у той базы, к которой я подключаюсь.
31 selenat
 
19.12.13
14:50
(30) у меня идеи закончились. Буду следить за предложениями других. Я бы кстати обратился в фирму РАРУС по поводу этой проблемы. Как минимум ради того, чтобы они пересмотрели в следующих своих релизах регулировку свойства "внешнее соединение" для своих общих модулей. Не исключено, что корректная работа по ком потребует некоторого другого расположения их процедур в общих модулях. А поскольку требуется сохранение поддержки при обновлении, то эта проблема должна решаться централизованно самим разрабочиком.
32 Serginio1
 
19.12.13
15:12
(29) Но вообще то код может выполняться из Внешнего соединения и вэб сервисов. Так что должен использоваться что бы скрыть вызов процедур предназначенных для декстопов например предупреждение итд.
33 selenat
 
19.12.13
21:41
(32) С вэб сервисами дела не имел и до сих пор работаю на платформе 8.1. Так что допускаю, что я сильно отстал от жизни и. Те чего-то не понимаю. Тем не менее у меня все равно большие сомнения в том, что "#Если Клиент Тогда" имеет хоть какое-то значение в файловой базе.
34 Kvestin
 
20.12.13
10:36
У меня была подобная проблема и тоже с конфигурацией РАРУС (только CRM).
Делай так:
Добавляешь в конфигурацию, к которой подключаешься модуль с галками [Сервер] и [Вызов сервера] (других НЕ СТАВИТЬ).
В нем пишешь процедуру, в которой непосредственно вызывается проведение документа (...Записать(РежимЗаписиДокумента.Проведение)).
Все. Через COM вызываешь эту процедуру и все будет работать.

Я вообще добавил в этот модуль процедуру ВыполнитьПроизвольныйКод(..), но это дыра в безопасности, поэтому советовать подобное решение не буду.
35 selenat
 
20.12.13
10:45
(34) хорошая идея. Должно сработать.