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




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

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 не будет опубликован. Обязательные поля помечены *