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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *