Недокументированное использование стандартных обработок из меню "Все функции".




Принцип обмена данными из 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='\

99 Comments

  1. friend0

    Неожиданно. Если не секрет, то где подобную информацию можно раскопать? И можно ли еще что-то стандартное сделать нестаднартным? «Изменить форму», например.

    Reply
  2. AlX0id

    Ага, и, например, ширину панели открытых окон в такси 🙂

    Reply
  3. ZhokhovM

    Круто, спасибо. В обработке «StandardDocumentsPosting» можно вернуть закладку «Восстановление последовательностей», заменив код:

    «Items.RestoreSequence.Enabled» на «True», далее изучить код для заполнения списка восстановления последовательностей.

    Reply
  4. Dementor

    Автор, действительно, поделитесь методом поиска информации!

    О ресурсах v8res:// в официальной документации я ничего не находил. Единственные упоминания появляются в описаниях ошибок. Но с типовыми пунктами меню сгенерировать ошибку нереально.

    Reply
  5. w.r.

    На глюки платформы при использовании этих функций никто не наталкивался?

    Reply
  6. Dementor

    Не там искал… Оказывается это тема годичной давности с партнерского форума. Там и полный состав стандартных обработок и код для сохранения/переопределения. А так же официальная позиция компании 1С по этому поводу:

    Вполне очевидно, что данная возможность не является лицензионной.

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

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

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

    Reply
  7. ekaruk

    (1) friend0, (4) Dementor, В официальном описании ничего этого нет.

    Поэтому и «недокументированное использование».

    Вытянуто из ресурсных файлов .res в поставке платформы.

    Случайно наткнулась при разборе ошибок платформы.

    Reply
  8. Поручик

    Супер. Автору зачёт. Вот уж не знал. Сколько встречал вопросов, а можно ли вызвать что-то стандартное, и везде ответ — нельзя.

    Reply
  9. ekaruk

    (8) Поручик, Официально это делать действительно нельзя.

    Позиция 1С по поводу таких переопределений описана в (6). И в принципе я с ней согласна. Их подход правильный. Есть стандартные функции, которые зависят от релиза платформы и развиваются параллельно с ней.

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

    Reply
  10. bulpi

    Умница!

    Reply
  11. ZhokhovM

    Автор, а кроме стандартных обработок есть еще другие стандартные встроенные объекты? Например, по списку внутренних идентификаторов платформы: «v8res://mngbase/» или «v8res://…».

    Reply
  12. ekaruk

    (11) ZhokhovM, По обработкам вроде это все.

    Есть много вшитых в ресурсы форм, но как их правильно вытащить я пока не разбиралась.

    Reply
  13. mburkin

    А такую штуку можно провернуть со всеми обработками или только из тех, что скрываются в пункте «Стандартные»?

    Reply
  14. ekaruk

    (13) mburkin, А с какими это «со всеми»?

    Насколько я знаю, других обработок в платформе нет.

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

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

    Reply
  15. МихаилМ

    спасибо. здорово.

    Reply
  16. ZOMI

    Умница

    Reply
  17. w.r.

    Автор, удаление пормеченных объектов разве не является обработкой конфигурации?

    Reply
  18. Fragster

    Очень хочется подменить стандартное окно полнотекстового поиска, случайно нет информации про него?

    Reply
  19. ekaruk

    (17) w.r., Всегда есть платформенная в меню «Все функции».

    Плюс дополнительно в конфигурации может быть включена обработка, адаптированная под особенности конкретной конфигурации.

    Например, в УТ11, есть отдельные обработки «Удаление помеченных объектов», «Управление итогами и агрегатами», «Управление полнотекстовым поиском».

    Но это именно отдельные независимые обработки.

    В общем случае при наличии обработок в конфигурации лучше использовать их, а не встроенные в платформу.

    Reply
  20. ekaruk

    (18) Fragster, Насколько я понимаю, это не платформенная, а стандартная встроенная в конфигурацию обработка.

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

    Reply
  21. w.r.

    Автор, и еще в примере 1 ошибка ПодключитьВнешнююОбработкуНаСервере() это процедура, иначе нужно что-нибудь возвращать в функции и лучше вызывать без контекста

    Reply
  22. ekaruk

    (21) w.r., Да, действительно. с точки зрения идеологии работы правильнее Процедура.

    Поправила.

    Хотя, как ни странно, вариант с функцией тоже работает и ошибок не выдает.

    По поводу контекста, это пример для модуля команды.

    В нем нет варианта директивы &НаСервереБезКонтекста.

    Но при вызове из формы логичнее использовать без контекста.

    Reply
  23. w.r.

    (22) функция без явного указания возвращаемого значения возвращает Неопределено, вот когда вызывают процедуру, как функцию, тогда будет ошибка выполнения. Если общая команда, то логично, что всегда есть контекст, извиняюсь. Но я бы конфигурацию менять не стал без особой крайней надобности. Лучше внешняя обработка

    Reply
  24. Aleksey.Bochkov

    (0) поясню минус — ИМХО, от таких возможностей больше вреда, чем пользы. По этим соображениям и не публиковал тут подобную информацию когда раскопал эту фичу.

    Reply
  25. ekaruk

    (24) Aleksey.Bochkov, У меня были сомнения о том, стоит ли описывать такие вещи о работе платформы. Думаю, то что они не описаны в официальной документации от 1С это правильно.

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

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

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

    И на мой взгляд, Инфостарт именно тот ресурс, на котором должна быть подобная информация. Также как информация о внутреннней структуре .cf и .dt файлов, структуре хранения системных данных базы в SQL. Да, неправильное использование такой информации может навредить, но понимание этих вещей необходимо для правильной работы и возможности оперативно решать возникающие задачи.

    Reply
  26. w.r.

    (25) Не согласен. Работа программиста прежде всего разработка. Порнимать механизмы нужно, но только касаемо части разработки. Если возникли проблемы с платформой, то лучше и правильней все-таки откатиться на предыдущую версию, где нет проблемы, и сообщить о ней разработчику, чем пытаться ее устранить самостоятельно, используя недокументируемые функции

    Reply
  27. w.r.

    (22) стало интересно, тут с точки зрения идеологии нужна все-таки функция, тк метод ВнешниеОбработки.Подключить возвращает имя подключенной обработки, значит можно контролировать этот процесс :

    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ИмяОбработки = ПодключитьВнешнююОбработкуНаСервере();
    Если ИмяОбработки = «StandardFindByRef» Тогда
    ОткрытьФорму(«ВнешняяОбработка.StandardFindByRef.Форма»);
    Иначе
    Предупреждение(«Не удалось подключить внешнюю обработку!»);
    КонецЕсли;
    КонецПроцедуры
    
    &НаСервере
    Функция ПодключитьВнешнююОбработкуНаСервере()
    ИмяОбработки = ВнешниеОбработки.Подключить(«v8res://mngbase/StandardFindByRef.epf», «StandardFindByRef», Ложь);
    Возврат ИмяОбработки;
    КонецФункции
    

    Показать

    Ну если не используется модальность, то показать через метод ПоказатьПредупреждение

    Reply
  28. tormozit

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

    Reply
  29. ekaruk

    (28) tormozit, Формы обычные есть. Обработок в явном виде не видела.

    Насколько я понимаю, тема имелась в виду эта. Ничего больше не встречала. https://partners.v8.1c.ru/forum/topic/1252472

    Там нет особо официальных разъяснений. Основная идея: использовать функции платформы можно только из основного меню.

    Reply
  30. tarassov

    Очень интересная идея автора!

    И чуть-чуть ее можно продолжить.

    Информация о файлах v8res://mngbase/StandardActiveUsers.epf и т.п. лежит в файле mngbase_root.res

    «v8res://mngbase/dcssFormModuleRus.txt»

    «v8res://mngbase/searchFormModuleRus.txt»

    «v8res://mngbase/FileSystemExtension.zip»

    «v8res://mngbase/CryptoProtectionExtension.zip»

    «v8res://mngbase/html.txt»

    «v8res://mngbase/model.xdto»

    Reply
  31. mrmasson

    Ставлю жирный плюс. В УТ 11.1 в обработке поиска ссылки не объект нет справочника «Номенклатура». Благодаря Вашему способу, смогу вытянуть стандартную обработку, подправить ее и пользоваться в свое удовольствие

    Reply
  32. ekaruk

    (31) mrmasson, На самом деле в Вашем случае это не обязательно.

    Он там есть, просто называется «Позиция номенклатуры».

    Вытягивать придется только если нужно будет какие-то еще опции в поиск добавить.

    Reply
  33. tarassov

    Попробовал, ка описано, сделать «1. Вызов стандартной обработки из любого пункта меню. »

    Если вместо предлагаемого

    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ПодключитьВнешнююОбработкуНаСервере();
    ОткрытьФорму(«ВнешняяОбработка.StandardFindByRef.Форма»);
    КонецПроцедуры
    

    написать

    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    Параметры = Новый Структура;
    Параметры.Вставить(«RequiredObject», ПараметрКоманды);
    
    ПодключитьВнешнююОбработкуНаСервере();
    ОткрытьФорму(«ВнешняяОбработка.StandardFindByRef.Форма», Параметры, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
    
    КонецПроцедуры
    

    Показать

    то не потребуется вручную выбирать объект. Сразу заработает поиск!

    Reply
  34. DoctorRoza

    Конструктор запросов порадовал! 🙂

    Reply
  35. Mortiferus

    Классно! Только сегодня думал о том, как запускать регламентным заданием перепроведение документов, чтобы самому не писать. Молодчина!

    Reply
  36. Zord

    Отлично! Спасибо большое! Я буквально на днях искал где же эти обработки зарыты!

    Reply
  37. Ulus

    Молодец.

    Давно ее подметил.

    Видно — мега спец!

    Все темы — МОЩЬ!

    Reply
  38. Чарик

    Классная статья! И самое главная нужная! Автору респект и жирный плюс!

    Reply
  39. DrAku1a

    Автору респект! Яростно плюсуем!

    Reply
  40. ekaruk

    Вау.

    Моя первая публикация, набравшая 200 плюсиков.

    Причем ровно за неделю.

    Похоже, действительно зацепила интересную тему.

    Приятно 🙂

    Reply
  41. Yashazz

    У меня есть ощущение, что таковое появилось недавно. Потому что я копался в 8.2.12 ровно с той же идеей, и нихрена не обрёл. Ну и в любом случае это может завтра измениться, и тогда будут грабли)

    Автору за кропотливое копание в потрохах 1С — респект.

    Reply
  42. kuzev

    Добавлю ссылку на пост годичной давности: https://snegopat.ru/forum/viewtopic.php?f=6&t=619.

    Reply
  43. Kondrat

    Молодец!!!

    Reply
  44. infostartfilipich

    Не могу открыть в Бухгалтерии 2.0 на платформе 8.2.19.116 (и клиент-сервер и файловая, код выполняется в модуле внешней обработки) — пробовал и так:

    ВнешниеОбработки.Подключить(«v8res://mngbase/StandardFindByRef.epf», «StandardFindByRef», false);

    ВнешниеОбработки.Создать(«StandardFindByRef»);

    и так:

    ВнешниеОбработки.Создать(«v8res://mngbase/StandardFindByRef.epf», false);

    Ругается:

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

    по причине:

    Файл не обнаружен ‘StandardFindByRef'»

    Что я не так делаю? — на платформе 8.3 работает…

    Reply
  45. ekaruk

    (44) infostartfilipich, Да, у меня тоже напрямую не подключается на 8.2.19.130.

    Зато подключается через промежуточный файл

    КопироватьФайл(«v8res://mngbase/StandardFindByRef.epf»,»c:/temp/StandardFindByRef.epf»);
    Обработка = ВнешниеОбработки.Создать(«c:/temp/StandardFindByRef.epf», false);
    
    Reply
  46. infostartfilipich

    (45) Спасибо, понял!

    Хорошо бы этот нюанс и в статью добавить…

    Reply
  47. ekaruk

    (46) infostartfilipich, Да я сама не знала. Только сейчас попробовала.

    Не могу понять, почему обычный вариант не работает.

    Вроде должен работать аналогично.

    Синтаксис команд работы с внешними обработками в 8.2 и 8.3 одинаковый.

    Reply
  48. pro1c@inbox.ru

    Супер!

    Плюс!

    Reply
  49. Дикий Йожыг

    Клева.

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

    Reply
  50. V.Nikonov

    (47) Адресное пространство «v8res://mngbase…» недоступно для проводника Windows? По этой причине или требуется разрешение на запись в «v8res://mngbase…»?

    Reply
  51. ekaruk

    (50) V.Nikonov, Оно не может быть доступно.

    Это внутренний адрес конфигурации.

    Мы туда ничего не пишем, только читаем.

    Reply
  52. tormozit

    Форма настроек динамического списка есть там?

    Reply
  53. Dementor

    (52) tormozit, Нет. Только перечисленные обработки.

    Reply
  54. vec435

    а для 8.1 есть какая-нить инфа?

    Reply
  55. sashocq

    Нашёл там ещё описания форм. Есть идеи как их вытащить? Интересует диалог выбора цвета (ColorChoose.lf), хотелось бы его доработать и вставить себе в конфигурацию. Просмотрел весь код формы — не нашёл, как формируется список цветов и как они отображаются.

    Reply
  56. chmv

    интересно

    Reply
  57. superkuzja

    Евгения, подскажите как правильно получить путь к стандартной обработке. У меня при выполнении команды:

    КопироватьФайл(«v8res://mngbase/StandardFindByRef.epf»,»C:ВнешняяОбработка.epf»);

    выходит ошибка:

    Ошибка копирования файлов

    по причине:

    Каталог не обнаружен ‘v8res://mngbase/StandardActiveUsers.epf’

    Запускал на платформе 8.3.6.2152. Заранее — спасибо!

    Reply
  58. ekaruk

    (58) superkuzja, У меня на 8.3.6.2152 обработка в файл сохраняется корректно.

    Проверяла для файловой базы. Контекст выполнения &НаСервере

    Reply
  59. superkuzja

    (59) большое спасибо, Евгения, всё корректно отработало при изменении контекста.

    Reply
  60. mszsuz

    Во вложении готовая обработка для выгрузки. Поможет сэкономить немного времени.

    Reply
  61. boln

    ekaruk, не в первый раз жалею, что слово «гений» не имеет женского рода 🙂

    Reply
  62. frkbvfnjh

    Я с «детства» мечтал добраться до этих обработок, чтоб хотя бы вызвать из из своего кода. Это самая качественная и нужная статья по недокументированным возможностям. Хотя не пойму, почему разработчики платформы не добавили возможность хотя бы просто вызова этих диалогов из кода, пусть даже с административными правами…

    Reply
  63. frkbvfnjh

    Кстати, тут уже спрашивали, так что повторюсь — как добраться до обработок для обычного приложения, не управляемого? Я имею ввиду, может кто нибудь уже разобрался как до них добраться…

    Reply
  64. Abbra

    А нельзя ли как-нибудь эти ссылки использовать по кнопке Перейти по ссылке (Звездочка с зеленой стрелкой) для открытия обработок? Просто скопировал — не получилось.

    Reply
  65. ekaruk

    (64) frkbvfnjh, Про обычное не знаю. Теоретически это должны быть те же самые обработки.

    (65) Abbra, Не совсем поняла, как скопировали. Эти обработки не являются элементами конфигурации, соответственно на них не может быть внешней ссылки. При их открытии даже звездочка неактивна. Если нужно дать на них ссылку, то я вижу только вариант встраивать их в конфигурацию.

    Reply
  66. Abbra

    (66) из Вашей статьи скопировал. «v8res://mngbase/StandardFindByRef.epf» )

    Теперь понятно, что нельзя. Спасибо.

    Reply
  67. AndreykO

    Спасибо. Очень помогло. Всё работает

    Reply
  68. anri99

    Отличная статья, спасибо автору, такое редко где встретишь!

    Reply
  69. Trise

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

    Reply
  70. ekaruk

    (70) Trise, С формами так, к сожалению, не получится.

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

    Формы теоретически можно вытащить, но подменить стандартные внешними нельзя.

    Reply
  71. alex-l19041

    (61) mszsuz,

    Обработка хорошая, только сразу не запустилась.

    Пришлось СтрРазделить(Стр, «;», Ложь);

    заменить на

    ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,»;»);

    Также процедура КаталогВыгрузкиНачалоВыбора

    не сработала. Пришлось полностью переписать

    Reply
  72. mszsuz

    (72) Переходите на новую платформу. Сейчас уже 8.3.8. Две недели проверяю — вроде нормально работает.

    Reply
  73. blackschool

    В коде типовых конфигураций можно найти упоминание имён стандартных обработок. Например, в УТ 11.2 «StandardFindByRef».

    Reply
  74. ekaruk

    (74) blackschool, Да, действительно.

    Появились упоминания.

    Интересно, раньше не было нигде.

    Reply
  75. LexSeIch

    Тема очень интересная — большое спасибо за публикацию данной статьи.

    Reply
  76. German_Tagil

    И все таки как быть с обычными формами?

    Reply
  77. ZhokhovM

    Есть вопрос, как вызвать программно стандартную форму «Все функции» из внешней обработки? Мне нужно это для теста. Никто не знает?

    Reply
  78. jONES1979

    Действительно, очень любопытно, и перспективы интересные. Спасибо! 🙂

    Reply
  79. androgin

    (73) mszsuz, 2 недели?????

    она с прошлого года уже ! )))))

    Reply
  80. tyushin

    на актуальной платформе что-то не работает у меня. Ошибка «каталог v8res://mngbase/… не обнаружен»

    Reply
  81. Wolex

    (77) German_Tagil, учитывая, что для управляемых используется внутренний каталог v8res://mngbase/, покопайте в сторону OrdinaryApplication. что-нибудь в духе ordbase

    Reply
  82. v3rter

    Подскажите, пожалуйста, адрес стандартной формы формы «Редактирование списка значений».

    Reply
  83. tailer2

    (6) трабл в том, что любая документированная фича в любой момент может перестать работать

    в вообще, доступно и всерьез, знаете ли

    Reply
  84. JesteR

    8.3.8.2197 Попробовал вытащить Удаление помеченных, не работает, пишет «Каталог не обнаружен», видимо с момента выхода публикации 1С что-то изменили.

    Reply
  85. Dementor

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

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

    Reply
  86. ekaruk

    (85) Ничего не изменилось.

    На 8.3.9.2016 отлично работает.

    Проверьте, что код выполняется на сервере и существует каталог, в который файл копируете.

    Reply
  87. JesteR

    (85) (87) Извините, сам дурак. Все работает. Спасибо.

    Reply
  88. Probot1c

    Автор молодец, полезно!

    Reply
  89. daho

    А вот для неуправляемых форм можно выгрузить обработки?

    Reply
  90. German_Tagil

    (90) Присоеденяюсь

    Reply
  91. Wolex

    (90) в (77) уже спрашивали, в (82) возможный ответ

    Reply
  92. daho

    (92) Да, спасибо.. Так в принципе и мыслил. Думал может кто уже наковырял. )

    Reply
  93. Aphanas

    Коллеги, подскажите кто знает, возможно ли выдернуть подобным образом обработку конструктора запроса?

    Reply
  94. mszsuz

    (94) Да. Именно она и упомянута в описании под номером 10.

    Reply
  95. fishca

    666 звезд набрано

    Reply
  96. Aprobator

    Обалденно, у меня просто других слов нет )

    Reply
  97. sss999

    Это ты сама написала?

    Reply
  98. ssfedkin

    Интересно, получилось у кого-нибудь для обычных форм обработки вытащить? Как в (82) не получается.

    Reply
  99. Dr.Mult

    (6)

    и код для сохранения/переопределения.

    , конечно тут элементарный копипаст с изменением пары фраз и выдача за свой титанический труд ( цитата «Случайно наткнулась при разборе ошибок платформы. » — ха .. ха)

    Reply

Leave a Comment

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