Отладка подключаемых обработок




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

76 Comments

  1. davdykin

    Спасибо, познавательно.

    Reply
  2. Alex_E

    Всё, что можно запустить через Файл — Открыть отлаживается тупо и без выкрутасов…..

    Reply
  3. unichkin

    (2) (3)

    Есть такая малость… Те параметры, которые передает этой самой обработке источник)) Через файлоткрыть вы их не получите, разве что сами где-нибудь забьете. Кроме этого сама отладка ведется именно по контексту — открыл объект которому назначена обработка и выполняю команду… И сразу торможусь в конфигураторе на точке останова.И вижу весь отладочный контекст. Захотел — для одного объекта команду выполнил, захотел — для другого. ничего не перевыбирая, ничего не переписывая, а сразу. Больше возможностей для проверки.

    Reply
  4. unichkin

    (2)

    В чем профит запихивания во внешние обработки ?

    Обращу ваше внимание на тему статьи — «Отладка дополнительных обработок БСП», а не просто внешних обработок. О профите от помещения в внешние обработки речи не идет. Если изначально делаем назначаемуюглобальную обработку для БСП — так будет проще отлаживать, чем через файлоткрыть.

    Reply
  5. ok521

    Метод хороший, для отладки внешних печатных форм — то, что нужно. Позволяет цеплять обработку к нужному объекту без всяких дополнительных ухищрений. Подходит и для серверного метода, и для клиентского.

    Reply
  6. pas

    Если в подключаемой обработке есть форма с командными кнопками, то отладчик не заходит в процедуры формы. Видимо, ваш код необходимо выполнять до захода в форму.

    Reply
  7. unichkin

    (7) надо понимать, откуда форма открывается. Тут ведь происходит точечная отладка — т.е. конкретный метод выполняем через внешнюю обработку. Ну переопределите открытие формы — в ПриОткрытии подключайте внешнюю обработку, открывайте ее форму, от исходной отказывайтесь. Все аналогично.

    Reply
  8. tormozit

    В инструментах разработчика в вариантах Расширение и Подсистема есть инструмент «Отладка внешних обработок БСП». Он позволяет отлаживать внешние отчеты и обработки из справочника БСП в натуральном виде в заданном каталоге с минимумом манимпуляций.

    Reply
  9. tormozit

    (9) Обнаружил, что в БСП 2.4 изменился внутренний механизм работы с внутренними событиями. На нем я не нашел как заставить работать инструмент «Отладка внешних обработок БСП» из ИР (перенаправлять создание внешних обработок в файлы).

    Reply
  10. binx

    я обычно создаю форму, создаю на ней реквизиты и поля для требуемых параметров. Отлаживаю потом переписываю на работу как доп. обработки.

    немного это времени занимает.

    Reply
  11. unichkin

    (11)

    немного это времени занимает

    — много. И оно не надо. При таком подходе вы лишены контекста разработки, отладка идет от эмуляции окружения.

    Reply
  12. binx

    контекста разработки я себя не лишаю, и время набить несколько параметров не проблема.

    я не против вашего метода. Я делюсь своим.

    Reply
  13. unichkin

    (13) я понимаю) Но я против вашего, и делюсь этим) Поскольку сам проходил этот этап — и могу сказать, что это «идеальный газ». Отладка по контексту помогает выявить большое количество ошибок, о которых вы и не узнаете если будете все параметры эмулировать через отладочную форму. Конечно, все еще от конфы зависит, от ситуации. Но лично у меня скоростькачество разработки улучшились.

    Reply
  14. binx

    вопрос, ваш метод будет работать в клиент-серверном варианте?

    Reply
  15. binx

    И о каком контексте вы все время говорите кроме передаваемых в обработку параметров?

    Reply
  16. unichkin

    (15) Да, разумеется

    Reply
  17. unichkin

    (16) Я имею в виду что запуск обработки отчета происходит по пользовательскому событию. Вы будете открывать обработку в режиме предприятия, забивать параметры, нажимать на кнопку. Я буду открывать документ, вызывать команду из его формы — все также, как делает пользователь. При этом мне не понадобится перезапускать 1С, или переоткрывать инициализирующую форму — у меня есть одна команда, например для заполнения табличной части. Я вызываю ее, при этом всю разработку веду в внешней обработке.

    Reply
  18. binx

    в клиент серверном варианте кто должна лежать обработка?

    Reply
  19. unichkin

    В каталоге, доступном пользователю 1С. На локальной машине с этим проблем обычно не возникает, если разнесены — сделайте шару.

    Reply
  20. johnnyshut23

    Спасибо, полезно!

    Reply
  21. bsturtle

    Красиво, просто и понятно. спасибо. Будем использовать

    Reply
  22. nagaitseff

    (9)

    это очень хороший инструмент, но отладка работает в том случае, если инструменты разработчика внедрены в конфигурацию (это ответ разработчика инструментов)

    Reply
  23. tormozit

    (23) Использовать эту возможность можно не только при внедрении в конфигурацию (вариант Подсистема), но и при подключении расширения конфигурации (вариант Расширение). А вот вариант Портативный действительно не позволяет использовать эту возможность. Я кстати есть разработчик подсистемы «Инструменты разработчика».

    Reply
  24. nagaitseff

    (24) Спасибо, про расширение не знал. Буду пользоваться. Инструмент то незаменимый!

    Reply
  25. kkv90

    Зачет +

    Reply
  26. spezc

    Категорически одобряю

    Reply
  27. strange2007

    (5) Не проще. Создание обработки, это циклический процесс: Открыть, начать отладку, внести изменения, сохранить и переоткрыть заново.

    Для быстрой и качественной отладки делается по одному шаблону для каждого вида (отчёт, заполнение ТЧ и т.д.) и всё. Можно вести разработку для обработок на БСП точно так же, как если бы разрабатывалась обычная обработка или обычный отчёт.

    Reply
  28. unichkin

    (28)

    Для быстрой и качественной отладки делается по одному шаблону для каждого вида (отчёт, заполнение ТЧ и т.д.) и всё. Можно вести разработку для обработок на БСП точно так же, как если бы разрабатывалась обычная обработка или обычный отчёт.

    Мне надоело что-то кому-то доказывать)) Если смотрели видео пробовали сами этот подход — то профит должен быть очевиден. Если не делали этого — то попробуйте. Ну, или работайте как вам больше нравится) В конце концов, если кому-то кажется правильным работать эмулируя окружение — это его дело.

    Reply
  29. strange2007

    (29) Не надо доказывать. Терпите, ведь это по сути «барахолка». Видео, это для многих круто, но не для всех. Проще говоря в работе видео никогда вообще не смотрю. Поэтому приходится как-то по косвенным признакам пытаться догадываться.

    По поводу окружения не понял. Ведь в шаблонах создаёшь это самое окружение в виде параметров.

    Reply
  30. strange2007

    (18) один раз выбираю во внешней обработке нужный документ, ввожу имя ТЧ и всё, хоть запереоткрывайся, ничего выбирать не надо.

    Reply
  31. Gorec17

    Спасибо, не знал.

    Reply
  32. it@contlog.ru

    Спасибо в моей задаче этот метод помог. Но единственно что нужно сохранить обработку на общем ресурсе который одинаково доступен как серверу так и отладчику с клиентом. если они разнесены на разные машины то путь к обработке должен быть через \ , а если на одной то можно как в примере. Важно чтобы предприятие и конфигуратор открывали обработку с одним и тем-же путем.

    Reply
  33. unichkin

    (33) ну да, это мне кажется прозрачный момент

    Reply
  34. ccserg

    что то я не понял , как отладить не Печатную форму , а обработку заполнения ТЧ

    и не понял зачем так тода извращаться если таким же способом можно Универсальную создать ? с выбором файла ?

    Reply
  35. unichkin

    (35)

    и не понял зачем так тода извращаться если таким же способом можно Универсальную создать ? с выбором файла ?

    Смотрите видео.. Все по аналогии. Профит:

    — не надо делать лишних интерфейсов — работаем, повторяя пользовательский сценарий в 1С

    — не надо эмулировать окружение (забивать параметры на форму)

    — не надо использовать вспомогательные обработчики для отладки — я ими попользовался, и скорее бы такой подход назвал извращением, чем этот

    Reply
  36. ccserg

    (36)

    в видео у вас Печатная форма , и процедура Печать в модуле обработки

    у меня обработка ТЧ документа ,

    в СведенияОВнешнейОбработке описана команда открытия допформы и все действия в модуле формы уже

    не понятно куда в таком случае добавлять код который у вас в процедуре Печать добавляется ?

    Reply
  37. unichkin

    (37)

    не понятно куда в таком случае добавлять код который у вас в процедуре Печать добавляется ?

    Дайте пример? Вообще, по-идее на форме должен быть только интерактив, а основные действия — в модуле объекта.

    Reply
  38. ccserg

    (38)вот к примеру эта обработка

    https://infostart.ru/public/561065/

    если надо могу её вам скинуть

    вызывается форма , где указываются параметры , из формы они переносятся в документ

    код в модуле обработки :

    Функция СведенияОВнешнейОбработке() Экспорт
    Назначения = Новый Массив ;
    Назначения.Добавить(«Документ.ТабельУчетаРабочегоВремени») ;
    
    ПараметрыРегистрации = Новый Структура ;
    ПараметрыРегистрации.Вставить(«Вид»,»ЗаполнениеОбъекта»);
    ПараметрыРегистрации.Вставить(«Назначение»,Назначения);
    ПараметрыРегистрации.Вставить(«Наименование»,»Заполнить Сводно»);
    ПараметрыРегистрации.Вставить(«Версия»,»1.0″);
    ПараметрыРегистрации.Вставить(«Информация»,»Дополнительная обработка табличной части табеля»);
    ПараметрыРегистрации.Вставить(«БезопасныйРежим»,Ложь); ///—отладка
    
    
    Команды = ПолучитьТаблицуКоманд() ;
    ДобавитьКоманду(Команды, «Заполнить сводно»,»ЗаполнитьДокумент»,»ОткрытиеФормы»,Истина,) ;
    
    
    ПараметрыРегистрации.Вставить(«Команды»,Команды) ;
    
    
    Возврат ПараметрыРегистрации;
    
    КонецФункции
    
    

    Показать

    остальной код в уже в форме

    Reply
  39. unichkin

    (39)

    ОткрытиеФормы

    Как я думал — обвал по архитектуре. Таблицу необходимо заполнять на сервере. Саму таблицу — в табличную часть, заполняем ее на сервере, на клиенте отражаем результат заполнения. Серверный метод можно отладить, используя данный подход. Предупреждая вопросы — переносить алгоритм заполнения на сервер надо не ради отладки, а ради соблюдения ИТС, см. например Минимизация кода, выполняемого на клиенте.

    Саму форму теоретически отладить можно, для этого надо сделать метод экспортным и переопределить открытие формы, открыв форму внешней обработки — однако у меня ни разу такой потребности не возникало.

    Reply
  40. ccserg

    (40)

    как таблицу на сервере ? форма документа открыта на клиенте , зачем её на сервере заполнять

    или я не понимаю что то ?

    почитал по ссылке , там про сложные алгоритмы и ресурсы компа , это не важно абсолютно в моём случае

    Reply
  41. unichkin

    (41)

    зачем её на сервере заполнять

    — затем, что работа с таблицей формы в большинстве случаев может породить неявные вызовы сервера. Во-вторых — в принципе при разработке надо стремиться к тому чтобы на форме был только интерактив, весь служебный интерфейс необходимо разрабатывать на сервере -> в модуле объекта. Вы же совместили интерфейс с самим алгоритмом.

    К сожалению, все обычно руководствуются правилом «что разрешено — то не запрещено». Почитайте статьи про рефакторинг, на ИС, возможно придете к этим-же выводам.

    Не хочу здесь проводить код-ревью вашей обработки, много писать придется. Да вам оно, думаю и не надо)

    Reply
  42. ccserg

    (42)скорей всего и не надо , до управляемых форм все было отлично

    как на эту ерунду (клиент/сервер) перешли так всё по другому стало … а многим оно и не нужно

    а я прикладные задачи решаю а не глобальные …

    и как вы заметили , кода прибавляется , зачем непонятно , когда тут простейшие алгоритмы

    спасибо , может почитаю чего нибудь в этом направлении

    а у вас есть пример любой обработки с этим кодом ? поделитесь пожалуйста .

    Reply
  43. unichkin

    (43) Посмотрите примеры в БСП, вот демка для заполнения контрагентов

    Reply
  44. fanast2

    Метод прикольный, спору нет. Но только не работает у меня:

    База на сервере, все сделал как в примере — отладка фоновых заданий, параметр запуска. На точки останова не тормозиться и все тут. Сообщения если оставлять, все выводит в правильном порядке. подскажите что еще попробовать можно

    Reply
  45. unichkin

    (45)

    База на сервере, все сделал как в примере — отладка фоновых заданий, параметр запуска. На точки останова не тормозиться и все тут. Сообщения если оставлять, все выводит в правильном порядке. подскажите что еще попробовать можно

    Отладка Подключение Подключенные предметы отладки — должны при запуске базы автоматически светится две строки. Тонкий клиент Сервер. Это есть?

    Reply
  46. fanast2

    (46) Да, есть. Платформа 8.3.10.2580. Еще один факт: пробую печатать — отладка не запускается. Следом открываю обработку через файл — открыть, нажимаю кнопку и ТОЖЕ НЕ ПОПАДАЮ В ОТЛАДКУ. В конфигураторе ставлю пробел, сохраняю, открываю — появляется отладка.

    то есть смысл в том, что если нажать кнопку печать, то отладка отваливается от этого файла…?

    обработка лежит на сетевом диске, он доступен ото всюду. путь тоже правильно написан

    Reply
  47. fanast2

    (47) Поставил точку останова в общем модуле, в который обращается моя обработка, поскольку точки останова в самой обработине не работали. И воуаля, мы зашли туда, F11, и выходим снова в обработку. Но только открылось другое окно (которое слева на картинке)

    Как я понял проблемы была в букве сетевого диска и пути к обработке. Я открыл вот такую обработку N:\*** а через общий модуль открылась обработка вот с таким путем \192.168****

    Reply
  48. unichkin

    (48)

    Как я понял проблемы была в букве сетевого диска и пути к обработке. Я открыл вот такую обработку N:\*** а через общий модуль открылась обработка вот с таким путем \192.168****\r

    А, да, есть такое. Пути должны быть одинаковые.

    Reply
  49. ivamailh

    Отличное видео. Все сработало. Спасибо!

    Reply
  50. user705522_constantin_h

    Я пользуюсь https://infostart.ru/public/73691/. По-моему, это удобнее.

    Reply
  51. kadild

    (2)

    так и стартуйте ее с диска и отлаживайте

    Вы просто не понимаете разницу между внешними обработками и дополнительными обработками. Каким образов вы думаете отлаживать сохраненные параметры у прикрепленной обработки запуская его как внешний, а?

    Reply
  52. kadild

    (11) Чего?? Делать кучу телодвижений вместо пару строчек для вас не занимает много времени?))

    Reply
  53. SlavaKron

    (37) Отладить как клиентские так и серверные вызовы, достаточно перед самым запуском подключаемой команды открыть вашу обработку через «Файл->Открыть», потом закрыть и запустить команду. Всё выполнение будет передано этой обработке из файла (имя обработки, естественно, должно совпадать с именем объекта из справочника ДополнительныеОтчетыИОбработки). Версия БСП — 2.4.5.31

    Reply
  54. unichkin

    (54)

    (37) Отладить как клиентские так и серверные вызовы, достаточно перед самым запуском подключаемой команды открыть вашу обработку через «Файл->Открыть», потом закрыть и запустить команду. Всё выполнение будет передано этой обработке из файла (имя обработки, естественно, должно совпадать с именем объекта из справочника ДополнительныеОтчетыИОбработки). Версия БСП — 2.4.5.31

    Что-то не выходит у меня..

    Reply
  55. SlavaKron

    (55) Двоичные данные внешней обработки из файла должны полностью совпадать с двоичными данными из справочника. Поэтому при каждом изменении в файле, нужно загружать его в справочник.

    Когда вы открываете файл обработки через меню Файл-Открыть, вы регистрируете ее Имя и, видимо, хеш-сумму, причем её ИспользуемоеИмяФайла — это файловый путь. Кода запускается команда подключенной обработки с таким же именем, проверяется ее хеш-сумма, и если она не совпадает, то ИспользуемоеИмяФайла заменяется на путь во временном хранилище, но если совпадает, ИспользуемоеИмяФайла не меняется и команда может быть отлажена в файле.

    Reply
  56. pavelyar

    Спасибо полезно!

    Reply
  57. unichkin

    (56) Я насколько понял — вы говорите о обработке, которая после первого запуска создает 1С в временном файле. Она — да, существует до закрытия программы. Только это не отладка будет, а боль сплошная.

    Reply
  58. vpaoli

    ваше кино на ютубе не открывается. битая ссылка. хотя бы картинку добавили. ничего понять невозможно в такой статье.

    Reply
  59. user705522_constantin_h

    (59)У меня открылось https://www.youtube.com/watch?time_continue=21&v=5ffBzFNOSeM.

    Проблемы с вашим интернетом.

    Reply
  60. vpaoli

    сорри.

    это на моей работе ограничивают досступ к ютуб

    Reply
  61. PerlAmutor

    Уточните, пожалуйста, следующие моменты:

    — вариант работает на клиент-серверном варианте?

    — конфигуратор должен быть открыт на той же машине, где работает сервер предприятия 1С?

    Я попробовал использовать сетевую папку которая доступна с сервера и клиента, путь одинаковый, но точка остановки не срабатывает.

    Для варианта вызова ТипКомандыВызовКлиентскогоМетода() видимо отдельно придумывать нужно что-то, т.к. создать обработку на клиенте невозможно.

    Reply
  62. denmax

    Опубликована новая версия универсального отладчика доп. обработок https://infostart.ru/public/916110 Это развитие метода, использованного в нашей более старой публикации, который позаимствовал (9)

    Reply
  63. unichkin

    (62) Везде работает, все равно где открыт конфигуратор. Про вызов клиентского — видимо, да, не сталкивался до сих пор, соотв. не было нужды что-то изобретать. Но вообще — возможно, в режиме толстого клиента УФ. Да и на тонком возможно, только гемора чуть побольше.

    Reply
  64. SergSergWolf

    На каком релизе платформы работает?

    Пробую на 8.3.12.1469

    Условие

    Если Адрес <> ЭтотОбъект.ИспользуемоеИмяФайла

    выполняется всегда, так как свойство ЭтотОбъект.ИспользуемоеИмяФайла содержит темпоральное имя в виде

    «e1cib/tempstorage/186306aa-905d-4790-bf3d-de9944665b4c»

    из за этого возникает бесконечный рекурсивный вызов процедуры

    Reply
  65. SergSergWolf

    … заработало

    Какие то глюки с кэшем

    Reply
  66. kasperiks

    Спасибо за статью, очень помогла. Особенно с последними версиями БСП 2.4

    Reply
  67. InJey

    Почему не получается?

    {ВнешняяОбработка.СчетЗаказКлиентаВнешнийКирсановаТЕСТ.МодульОбъекта(49)}: Ошибка при вызове метода контекста (Создать)

    обр = ВнешниеОбработки.Создать(Адрес, БезопасныйРежим());

    по причине:

    Ошибка подключения внешних метаданных

    по причине:

    Каталог не обнаружен ‘E:1Тест.epf’

    все сделал по инструкции, пробовал несколько раз менять адрес каталога

    Reply
  68. unichkin

    (68)

    все сделал по инструкции, пробовал несколько раз менять адрес каталога

    Предполагаю что каталог на сервере не обнаружен

    Reply
  69. InJey

    (69) да я не верно разместил каталог

    Reply
  70. tormozit

    (10) Теперь поддерживается и БСП 2.4+, но только в варианте Расширение.

    Reply
  71. tireal

    (8) а как быть если внешняя обработка заполнения таб. части с вызовом клиентского метода с формы?

    Получить форму для обращения к экспортной процедуре «ВыполнитьКоманду» внешней обработки можно только в толстом клиенте. И получается что в этом варианте исполнения ваш метод не исполнить никак правильно?

    Reply
  72. unichkin

    (72) Сам алгоритм должен находиться на сервере, в модуле обработки

    Reply
  73. unichkin

    (72) «Получить форму для обращения к экспортной процедуре «ВыполнитьКоманду» внешней обработки можно только в толстом клиенте. И получается что в этом варианте исполнения ваш метод не исполнить никак правильно?» — кстати, не уверен. Можно вроде и на тонком извратиться, только зачем? Соблюдайте негласные базовые правила — отделяйте основную логику от интерактива, и не будет возникать таких вопросов.

    Reply
  74. tireal

    (74) «кстати, не уверен. Можно вроде и на тонком извратиться» — может и можно но в доступности ВнешниеОбработкиМенеджер

    ПолучитьФорму только Толстый клиент, а по поводу соблюдать негласные правила… я же приводил пример общего модуля стандартных подсистем — т.е. так работают 99% всех типовых конфигураций и речь напомню об обработки заполнения таблицы формы — т.е. в конце концов мы работаем именно с интерфейсной частью. Так что тут все правила соблюдены.

    Да и не об этом речь — смысл вопроса в том что перехватить исполнение кода по вашей методе мы можем только в модуле объекта и никак иначе — вот что я хотел уточнить, и как понял это именно так.

    Reply
  75. AZel84

    Плюс как минимум за это:

    Правой кнопкой мыши по файлу с шифтом — «Копировать как путь»

    Reply
  76. Gorus

    Спасибо за идею.

    Правда, у меня иногда крашился клиент. Пришлось добавить исключение по ЭтомуОбъекту в «ЗаполнитьЗначенияСвойств»:

    Если Адрес <> ЭтотОбъект.ИспользуемоеИмяФайла Тогда
    обр = ВнешниеОбработки.Создать(Адрес, БезопасныйРежим());
    ЗаполнитьЗначенияСвойств(обр, ЭтотОбъект, , «ЭтотОбъект»);
    обр.ОтлаживаемаяПроцедура(Параметр1, Параметр2);
    Возврат;
    КонецЕсли;
    
    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *