Расширения конфигурации. Полезные советы для разработки




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

97 Comments

  1. MaxS

    А ещё, если, например, нужно с помощью расширения всего лишь добавить кнопку на форму документа, то придётся тянуть в расширение всю форму. И при последующем обновлении конфигурации расширение может перестать работать.

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

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

    Reply
  2. pallid

    Внес свои 5 копеек ))) точнее 4.98, все что было. Спасибо за труд.

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

    Reply
  3. mrXoxot

    (1) ya.Avoronov,

    Спасибо! Я старался.

    (2) MaxS,

    И при последующем обновлении конфигурации расширение может перестать работать

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

    Пока в некоторых ситуациях удобнее программно добавлять элементы на форму.

    Безусловно Вы правы!

    (3) white_sochi,

    Огромное спасибо! Перевод получил и очень Вам признателен.

    Кстати, там можно делать переводы и с телефона…

    Reply
  4. FreeArcher

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

    Reply
  5. Dach

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

    «а) Выполнить сначала типовой код, затем код из расширения:»

    То есть, например, я хочу знать, что пользователь на форме документа нажал некую очень важную кнопку. Создав расширение и обработчик — могу отслеживать без изменения конфигурации, так?

    Reply
  6. mrXoxot

    (6) Dach,

    Да, именно так. В этом одна из прелестей этого механизма.

    Reply
  7. JohnyDeath

    (5) вот и я немного прилип после обновления типовой бухгалтерии 3.0. В справочнике «Контрагенты» был переименован реквизит «ОсновнойДоговорКонтрагента» (теперь он «УдалитьОсновнойДоговорКонтрагента») и всё, теперь расширение нерабочее. А допиливал я по мелочи: формы ПКО, РКО, договоры контрагентов

    Reply
  8. mrXoxot

    (8) JohnyDeath,

    Кажется, что в этом случае правильно, что отвалилось расширение.

    Потому что если стал реквизит Удалить_, то скорее всего его использовать больше не надо. Было бы гораздо больше проблем, если расширение осталось рабочим, но делало что-то совсем другое.

    Reply
  9. frkbvfnjh

    Титанический труд! +100500

    Reply
  10. MaxS

    (4)

    Кажется, это не так. Еще не проверял, но разработчики платформы заявляли…

    Проверял таким образом: в БП 3.0.42 в форму документа АктОбОказанииПроизводственныхУслуг добавил элемент, например декорацию. Сохранил это расширение и загрузил в БП 3.0.41. Появилась ошибка, ругается на отсутствующий справочник.

    Попробовал в расширении удалить все штатные элементы формы и добавить свой элемент. В предприятии при открытии этого документа пропали все элементы и форма не открылась.

    До появления расширений несколько лет эта конфигурация обновлялась с дополнительным общим модулем, где изменения в формы документов вносились программно. Конфликтов небыло ни разу. Расширение пока не решило этот вопрос.

    Reply
  11. JohnyDeath

    (9) конкретно в этом случае я просто немного правил под себя типовую форму. А когда первый раз добавлял ее в расширение, то все реквизиты объекта автоматом перешли в расширение. Переименованные реквизиты в расширении вообще не используются, но вот работать перестало все расширение.

    Reply
  12. mrXoxot

    (11) MaxS, (12) JohnyDeath,

    Да, тут вы правы. Расширение еще не умеет всего делать.

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

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

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

    Reply
  13. tormozit

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

    Reply
  14. mrXoxot

    (14) tormozit,

    Согласен. Попробую в следующий раз. А есть где-нибудь примеры?

    Reply
  15. Доработай 1С

    Спасибо за статью!

    Очень аккуратно и качественно сделано.

    Приятно читать.

    Reply
  16. mrXoxot

    Искренне благодарю всех, кто перечислил денежку!

    Это очень мотивирует.

    И дает понимание, что такие публикации кому-то нужны и полезны!

    Благодарю!

    Reply
  17. ben_art

    А свои реквизиты в расширении создавать можно ?

    Reply
  18. Blind_Guardian

    Хорошая статья, спасибо.

    Reply
  19. sudmorsh

    Спасибо за статью!

    Приятно читать.

    Reply
  20. vlastapov

    Да, с отладкой расширения другое дело, Большое спасибо за науку.

    Reply
  21. mrXoxot

    (19) Blind_Guardian, (21) vlastapov, (20) sudmorsh,

    Пожалуйста!

    Reply
  22. polyaka

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

    Reply
  23. polyaka

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

    Сейчас столкнулась с такой проблемкой, может кто поможет разобраться:

    Добавляю в расширение форму, которая вызывается из основной формы объекта, по гиперссылке (например: Конфигурация БП 3.0, документ «Реализация», форма «ФормаДоставка»).

    Хочу заполнить часть реквизитов на основании данных из основной формы документа. Как это можно сделать?

    Как в расширении обратиться к самому объекту?

    Reply
  24. GreenDragon

    Отличная статья! Также спасибо за дополнительные ссылки.

    Reply
  25. zlato

    Отличная статья! А анимированные изображения облегчают понимание. Спасибо!

    Reply
  26. Alister

    И очень вежливый автор.)

    Reply
  27. mrXoxot

    Коллеги! Всех поздравляю.

    В 8.3.9 будет существенное развитие механизма Расширения конфигурации.

    Почитать можно в зазеркалье.

    Если кратко, то суть изменений:

    Перехват

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

    Собственные обработчики

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

    Собственные модули

    Вы можете создавать в расширении собственные общие модули.

    Вызов

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

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

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

    Reply
  28. Alister

    Очень интересные возможности открываются.

    Reply
  29. Zhilyakovdr

    (11) MaxS, Добрый день!

    Насколько я знаю, форму в расширении можно обновить из основной конфы, кнопка в конструкторе форм «Обновить расширение формы», при обновлении все изменения остаются, применяются только изменения из основной конфы.

    Reply
  30. bondar_vy

    Добрый день.

    Подскажите пожалуйста куда рыть дальше.

    Проблема с ошибкой блокировки расширения конфигуратором. Всё сделал как описано в п.4. Ошибка блокировки не ушла.

    На вкладке Дополнительно поставил флажок «Устанавливать режим разрешения отладки». Ошибка блокировки не ушла.

    И в запуске предприятия поставил режим отладки.

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

    Reply
  31. mrXoxot

    (31) bondar_vy@mail.ru,

    Такое может быть при первом подключении расширения или если изменился Поставщик расширения или номер версии.

    Для исправления попробуйте следующие действия:

    1. В конфигураторе закрыть это расширение

    2. В режиме предприятия открыть форму связанную с расширением

    3. Открыть расширение в конфигураторе

    4. Перезапустить отладку.

    Reply
  32. bondar_vy

    Спасибо огромное. Помогло. Этот танец с бубнами было бы здорово добавить к п.4.

    Ещё раз огромное спасибо.

    Reply
  33. mrXoxot

    (33) bondar_vy@mail.ru,

    Добавил в 4 пункт это уточнение. Спасибо за отзыв!

    Reply
  34. bondar_vy

    День добрый.

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

    И можно ли обновить скажем все изменённые в расширении формы оптом или надо по одной?

    Reply
  35. leonvlas

    Обновлял зуп. с расширением от внедренца- гемор полный

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

    Если кто соскучился по танцам, то флаг вам в руки.

    Reply
  36. Alister

    (36) leonvlas, а подробности?

    Reply
  37. fomstas

    (36)leonvlas, Да иногда приходиться переписывать расширение, но так проще найти что нужно переписать! 🙂

    Reply
  38. Yashazz

    (36) leonvlas, воистину.

    Вообще странно, что я прохлопал эту публикацию и не отметился в комментах. Так вот, отмечаюсь. Всё, изложенное в статье, конечно, очень демонстративно, круто и замечательно, только вот нихрена вам не поможет. Количество глюков и косяков в этом сыром убожестве от 1С таково, что мануалами тут делу не поможешь, только личный опыт. Что делать можно, что нельзя, где её заклинит, и где платформа тихо рухнет. Мне ещё в прошлом году по самое не балуйся хватило.

    Добрый совет: если можете — пилите конфу и не связывайтесь с расширениями. Это полное и безысходное г****.

    И ещё — ребятушки, а что, пересказ материалов с ИТС без указания копирайта так высоко котируется?

    Reply
  39. mrXoxot

    (39) Yashazz,

    Всё, изложенное в статье, конечно, очень демонстративно, круто и замечательно

    Спасибо за оценку!

    И ещё — ребятушки, а что, пересказ материалов с ИТС без указания копирайта так высоко котируется?

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

    В своей публикации я постарался свести все к маленьким практическим кейсам.

    Если, считаете, что это плохо — то можете поставить публикации минус. И тогда, возможно, таких публикаций будет меньше.

    Reply
  40. Nkolp

    Очень ценная статья — СПАСИБО

    Reply
  41. DrSender

    Попробовал. Использовать не советую. Много глюков. Неудобно отлаживать.

    Reply
  42. mrXoxot

    (42) DrSender,

    А в чем сложность отладки? Пробовали это.

    Reply
  43. white-mount

    (39) Yashazz, Уважаемый, но разве у всех есть под рукой ИТС? Да и остальные не всегда читают весь ИТС, а ведут рубрикатор опубликованного и того меньше.

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

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

    Reply
  44. smaximaa

    Кто знает, добавляются ли в расширение глобальные параметризуемые команды формы? А то добавил форму, а этих команд нет, без низ мне смысл использовать расширение 0 ((

    Reply
  45. white-mount

    (45) smaximaa,

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

    Хотя есть задача в которой это и мне может потребоваться, нужно будет попробовать.

    Reply
  46. Yashazz

    (44) white-mount, вы знаете, что такое нарушение копирайта? Это, на минуточку, нарушение законодательства. А на ИС прям-таки стандартная реакция типа «нуачо» или «а у меня нет ИТС». Вы вообще понимаете, что это статья УК? А не повод вешать плюсики за плагиат?

    Reply
  47. white-mount

    (47) Yashazz, уважаемый,

    white-mount, вы знаете, что такое нарушение копирайта?

    Ответ: Да

    Вы вообще понимаете, что это статья УК?

    Ответ: Нет

    Подайте на меня в суд за то, что я на форуме направил Вам message:

    Yashazz, Уважаемый, но разве у всех есть под рукой ИТС? Да и остальные не всегда читают весь ИТС, а ведут рубрикатор опубликованного и того меньше.

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

    На мой взгляд не хватает предостережений, в этой части с Вами полностью согласен, правильно заточенный инструмент, конфа, надёжней в эксплуатации.
    Reply
  48. Milanick

    в чем GIFки делали?

    Reply
  49. smaximaa

    (46) white-mount, программно не пробовал, но сработала другая вещь, надо было добавить зависимые объекты команды и она появилась в параметризируемых

    Reply
  50. smaximaa

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

    ps. смысл тогда добавлять их в расширение если редактировать нельзя…

    Reply
  51. sikvel2012

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

    Reply
  52. mrXoxot

    (52) reznic,

    А зачем?

    Можно добавить форму к обработке и добавлять любые реквизиты.

    Reply
  53. sikvel2012

    (53) вопрос поставил немного не правильно, если быть точнее то как добавлять объект чтобы он не тянул за собой по ссылкам другие объекты

    Reply
  54. mrXoxot

    (54) reznic,

    Никак.

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

    Reply
  55. sikvel2012

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

    Reply
  56. mrXoxot

    (56) reznic,

    К сожалению, мне другой способ не известен.

    А чем мешают реквизиты? Ведь можно скрыть неиспользуемые объекты, например так

    Reply
  57. sikvel2012

    особо ничем, только весом расширения и лишними ненужными элементами

    Reply
  58. TreeDogNight

    Извиняюсь за вопрос не по теме: С помощью какого софта вы делали GIF-анимацию?

    Reply
  59. mrXoxot

    (49) Milanick, (59) TreeDogNight,

    Гифки я делал так:

    1. Снимал видео через Snagit

    2. Потом через сервис http://makeagif.com/ переделывал из видео в gif

    Reply
  60. oslokot

    Добавил справочник номенклатура в расширение, конструктор запроса не видит стандартный реквизит ЭтоГруппа. Как быть?

    Reply
  61. mrXoxot

    (61) oslokot,

    Нужно в расширении установить проверку свойство «Иерархический».

    Либо сделать запрос в другом месте. При выполнении ошибки быть не должно.

    Reply
  62. Wefast

    Не появилась возможность править общие модули еще?

    Reply
  63. mrXoxot

    (63) Wefast,

    Такая возможность появилась в платформе 8.3.9.

    Но чтобы она работала в конфигурации должен быть снят режим совместимости с 8.3.8.

    На сколько мне известно, таких типовых еще нет.

    Reply
  64. Fynjy

    Читать приятно. За это 99 рублей не жалко )

    Reply
  65. progr-2008

    Подробно и понятно.

    Reply
  66. tormozit

    EDT уже поддерживает редактирование расширений? Вроде не встречал инфы про их поддержку в описании.

    Reply
  67. mrXoxot

    (67) tormozit,

    Тоже не встречал такой информации.

    Сейчас поискал самостоятельно в EDT — не смог найти как создать или открыть расширение.

    Reply
  68. tormozit

    (68) По сообщениям с партнерского форума сделал вывод, что поддержки расширений как и внешних обработок в текущей версии нет. Думаю она появится в самом конце.

    Reply
  69. tormozit

    Как массово добавить объекты из конфигурации (CF) в расширение (CFE)?

    Reply
  70. mrXoxot

    (70) tormozit,

    К сожалению, никак.

    По крайней мере на текущий момент.

    Сам мучаюсь.

    Reply
  71. mark_oilbass

    Сегодня была задача по изменению общего модуля. Расширение помогло. Добавил общий модуль и скопировал в общий модуль процедуру. К этим процедурам надо добавлять дерективы &Перед(«НашаПроцедура»), &После(«НашаПроцедура») и &Вместо(«НашаПроцедура»). Если использовать &Вместо к ней можно еще в конце процедуры или функции добавить метод ПродолжитьВызов(), как я понял этот метод выполняет сначала процедуру из расширения потом эту же процедуру там от куда мы ее взяли. Не знаю за чем это. Вот источник http://v8.1c.ru/o7/201603module/index.htm

    Reply
  72. andrewrocker

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

    Reply
  73. mrXoxot

    (73)

    Есть документация на ИТС. Есть курсы Гилева и Насипова.

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

    Reply
  74. dtripleh

    Макет же можно добавлять в заимствованных объектах, а вот типовой менять нельзя

    Reply
  75. markers

    (75) Насколько мне известно (но возможно ошибаюсь) эту возможность добавили в 8.3.9

    Reply
  76. dtripleh

    (76) проверил, не фига(

    Reply
  77. Meteorage

    Шикарный материал, изменяющий принципы конфигурирования. Будем использовать!

    Reply
  78. puhshok

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

    Reply
  79. laf

    Вообще впервые узнаю о таких возможностях. Поразительно.Плюс

    Reply
  80. fomix

    (72) Цитата: «Добавил общий модуль и скопировал в общий модуль процедуру.».

    1. Что здесь означает слово «Добавил» — скопировал в расширение или реально добавил?!

    2. Аналогично слово «Скопировал»?!

    Например, я добавил в свое расширение ОбщийМодуль из основной конфы и пытаюсь переопределить там функцию аннотацией &Вместо(«ИмяФункции») — при компиляции в ответ получаю

    {Расширение1 ОбщийМодуль.Расш1_ОбщийМодуль_ИмяМодуля.Модуль(2,8)}: Ожидается определение процедуры/функции &Вместо<<?>>(«ПолучитьФорматЗаписиИзДереваФормата») (Проверка: Сервер).

    Что не так?! В тырнете ответа НЕ НАШЕЛ!

    Reply
  81. tormozit

    В обычном приложении и внешнем соединении расширения не работают. Вроде там какую то ошибку 1С собирается исправить, но все равно гарантировать полностью корректную работу не будет. Открыть обычную форму в управляемом режиме из расширения мне тоже не удалось — ошибка «Неизвестное имя формы». У кого нибудь получилось?

    Reply
  82. spacecraft

    (82)

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

    Вот пример открытия обычной формы элемента справочника из управляемой формы списка в расширении по отдельной команде:

    #Если ТолстыйКлиентУправляемоеПриложение Тогда
    &НаКлиенте
    Процедура КомандаОткрыть(Команда)
    ТекЭлемент = Элементы.Список.ТекущаяСтрока;
    ФормаТекЭлемента = ТекЭлемент.ПолучитьФорму(Метаданные.Справочники.ФизическиеЛица.Формы.ФормаЭлемента);
    ФормаТекЭлемента.Открыть();
    КонецПроцедуры
    #КонецЕсли
    

    Показать

    Reply
  83. tormozit

    (83) Я имел ввиду, что обычная форма находится в расширении, но получить ее по полному имени не удается.

    Reply
  84. tormozit

    (82) Удивительно, но удалось убедить 1C признать это ошибкой. Вероятно в 8.3.11 это исправят и такая возможность появится.

    Reply
  85. alarma11

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

    Тем более добро пожаловать в 8.3.9 и т.д. где теперь можно почти со всеми модулями проводить махинации.

    Reply
  86. alarma11

    (18) Пока что (проверено на 8.3.10) нет такой возможности. Планируется ли? — неизвестно.

    Reply
  87. MaxS

    (97) Код в общем модуле доработанной конфигурации содержит несколько строк и не зависит от метаданных. А при попытке перетянуть форму в расширение переносится ещё и куча ссылок на документы и справочники.

    Типовых конфигураций на 8.3.9, в которых ведётся учет я пока не встречал.

    Reply
  88. vapiarius

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

    Reply
  89. ariadna-nn

    Никита, хорошая статья.

    Сделали расширение с командой «открыть» «свою» добавленную форму.

    На платформе 8.3.8 работало. ничего не меняли .на платформе 8.3,9 и на 8.3.10 Выдает ошибку «Неизвестное имя формы».

    Что надо поменять для 8.3.9(10)?

    вот модуль

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

    Показать

    —————

    текст Ошибки

    {ТХТ_ГТД Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары.Форма(166)}: Ошибка при вызове метода контекста (ОткрытьФорму)

    ОткрытьФорму(«Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма», ПараметрыФормы, ЭтаФорма);

    по причине:

    Неизвестное имя формы. Имя: «Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма»

    Reply
  90. mrXoxot

    (133)

    Если ничего не меняли, то скорее всего это ошибка платформы и можете написать им.

    Я бы попробовал перенести форму в другое место или скопировать ее и обратиться заново.

    (134)

    Большое спасибо!

    Reply
  91. avk72

    (70) (71)

    Как массово добавить объекты из конфигурации (CF) в расширение (CFE)?

    Наше решение должно помочь https://infostart.ru/public/689299/

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

    Делали для упрощения обновления измененных типовых конфигураций

    Reply
  92. tormozit

    (70) В подсистеме «Инструменты разработчика» теперь есть общая форма «ирВыпускРасширения». Она преобразует конфигурацию в расширение (конечно же с ограничениями).

    Reply
  93. julia96_07

    (133) Светлана, смогли решить проблему?

    Reply
  94. tmn72.1C

    (7) Никита подскажит поподробнее. создал в расширении подсистему, создал роль и обработку. в итоге подсистема не видна. не подскажите какие подводные камни имеются?

    Reply
  95. Olenevod

    (14) Если интересно, есть хитрый удобный способ сделать паузу гифки. Для этого надо нажать в нужный тебе момент на кнопку закрытия браузера, но не отпускать кнопку мыши (чтоб не закрыть браузер 🙂 ) потом просто отвести указать в сторону и отпустить.

    Reply
  96. tormozit

    (165)

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

    Reply
  97. dobrynin.i.s

    (134)Ваша щедрость не знает границ

    Reply

Leave a Comment

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