<?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='\
Я правильно понял: внешнюю обработку (если она изменена в конфигураторе) закрывать и открывать не надо, достаточно щёлкнуть по кнопке на форме, и она обновится? Тогда это здорово, а то порой подутомляешься с этими переоткрываниями…
(1) Boroda, именно так. Особенно намучаешься, если открыто поочередно несколько обработок.
(0) Хорошая и своевременная публикация. Давно себе хотел сделать подобный сервис, но всё руки не доходили…
Ваша публикация подтолкнула к действию. На основании Вашего кода сделал для себя универсальный шаблон (для обработок и для отчетов).
Кнопку «Переоткрыть» поместил в меню «Действия». Её можно там и оставить после отладки обработки. Не занимает места на командной панели, и глаза не мозолит.
Код для неуправляемой формы получился вот такой (компактней и, по-моему, универсальней):
Процедура КоманднаяПанель1_кнПереоткрыть(Кнопка)
// Имя формы, которую надо переоткрыть, нужно прописать в КНОПКА.ПОЯСНЕНИЕ
Отладка_ФормаКОткрытию = Кнопка.Пояснение;
Отладка_ИмяФайла = ЭтотОбъект.ИспользуемоеИмяФайла;
Закрыть();
КонецПроцедуры //КоманднаяПанель1_кнПереоткрыть()
Процедура ПриЗакрытии()
Если НЕ ПустаяСтрока(Отладка_ФормаКОткрытию) Тогда
ВнешниеОбработки.Создать(Отладка_ИмяФайла).ПолучитьФорму(Отладка_ФормаКОткрытию).Открыть();//Для обработок
//ВнешниеОтчеты.Создать(Отладка_ИмяФайла).ПолучитьФорму(Отладка_ФормаКОткрытию).Открыть(); //Для отчетов
КонецЕсли;
КонецПроцедуры
, где Отладка_ФормаКОткрытию и Отладка_ИмяФайла — это реквизиты внешней обработки/отчета.
_
Согласен, полезная вещь. Приведенный в (3) код, думаю, и в 8.1 будет работать.
в 7.7 часто пользовался, в 8 руки не доходили, да и подзабыл. Спасибо автору.
Я еще на форме делаю кнопочку, цепляю на неё Ctrl+Z и становится ещё удобнее 🙂
Автор — молодец. Спасибо.
Всем — пожалуйста. Пользуйтесь на здоровье. И спасибо за комментарии.
(3) mtv:), у меня приведен шаблон, поэтому кнопку можно смело двигать, чтоб «глаза не мозолила».
А такое сокращение кода для неуправляемой формы — накладывает еще одно ограничение: при переименовании редактируемой формы в моем варианте нужно всего лишь переоткрыть традиционным способом обработку, в вашем — придется в Кнопка.Пояснение не забыть прописать новое имя формы. И при копировании формы, кстати, тоже.
Для внешних отчетов отличия минимальны — сами видите. Опять же подчеркну слово шаблон.
(0) Ничего сложного на самом деле, сам юзаю такую кнопку.
У меня лично такая кнопка со времен 77 называется «Перезагрузить» 🙂
помнится, даже спец.скрипт для Опенконфа делал для автодобавления этой кнопки на форму прямо в конфигураторе.
(3) ты не прав, так не удобно, (6) более прав — весь вопрос в телодвижениях, хотя и к нему есть вопросы 🙂
(6) что-то как-то сложно и нерационально у тебя в неуправляемой форме 🙁
все можно и нужно уместить в одной процедуре, лично у меня так и сделано.
1. Зачем делить на КоманднаяПанель1ОткрытьЕщеРаз и ПриЗакрытии() ?
Нужно тупо в КоманднаяПанель1ОткрытьЕщеРаз вместо оператора Прервать вставить код из ПриЗакрытии.
2. Реквизиты ФормаКОткрытию и ИмяФайла совсем не нужны, имя файла можно узнать непосредственно в момент вызова кнопки.
Ведь в управляемой у тебя фактически так и сделано? 🙁
т.е. схема-то простейшая — при нажатии кнопки Перезагрузить открываем новую форму для этого же файла, а старую закрываем.
в итоге все что нужно — вот этот код
Показать
Странно, наверно я не доганяю, а как у вас реквизиты заполнятся сами что ли? Я давно так делаю, но перед закрытием заполняю в новой обработке все реквизиты из старой, есть вероятность ошибки, но при правильном построении обработок она минимальна, к тому же заполнение опционально. А у вас как?
(7)
т.е. схема-то простейшая — при нажатии кнопки Перезагрузить открываем новую форму для этого же файла, а старую закрываем.
Уважаемый artbear, у меня так не работает (по крайней мере в файловом варианте), форма закрывается, а новая не появляется.
А вот так работает:
При нажатии кнопки «Перезагрузить» сначала ЗАКРЫВАЕМ старую форму, а затем ОТКРЫВАЕМ новую форму для этого же файла.
(8) Для отладочных целей не всегда нужно автозаполнение всех полей.
Я предпочитаю полностью штатную перезагрузку, когда нужные поля заполняются так же, как и при ручной перезагрузке.
(9) Случайно не юзаешь код (Форма = ПолучитьФорму()) ? я ведь специально указываю лФорма = …
вообще разницы быть не должно, т.к. Закрыть(), как и в 77, не сразу закрывает форму, а только после выполнения текущего обработчика.
(9) Приведи свой код, если совет из (10) не помог.
Юзаю код, аналогичный (7), со времен 8.0
Публикация из серии «Приятные мелочи».
Поскольку на вкус и цвет…. себе сделал внешнюю обработку с выбором пути к файлу. После выбора файла форму всмогательной обработки минимизирую и размещаю в уголке. Один клик и наслаждаюсь исправленной обработкой или отчетом. Автору за идею +.
(11) artbear, в сообщении (9) я говорил про твой код из (7).
Скопировал его один-в-один в тестовую обработку, запустил — форма закрывается… и всё…
Вывод — код не работает. Что-то не так.
При отладке видно, что новая форма создается и открывается. Но после Закрыть(), старая и новая формы закрываются. 🙁
я делал внешнюю обработку, с большой кнопкой «Выполнить», сохраняемым списком путей к отлаживаемым обработкам/отчетам, которая запускала текущую обработку
(0) При внимательном взгляде на процедуру «КоманднаяПанель1ОткрытьЕщеРаз» видно, что код будет работать некорректно в некоторых ситуациях. Эксперимент это подтверждает.
Вот пример, когда получается неожиданный результат:
В обработке имеем две неуправляемые формы «Форма01» и «Форма02». В списке форм они расположены именно в таком порядке. Открываем обе формы.
В форме «Форма02» нажимаем кнопку «Открыть еще раз». И видим, что «Форма02» просто закрывается, и затем открывается еще одна «Форма01».
Действительно неожиданный результат… 🙁
То есть, при нескольких открытых формах, всегда открывается та, которая выше в списке форм.
(0) Еще заметил один неприятный момент в работе алгоритма шаблона.
Нужно внимательно следить, что бы Синоним формы был без пробелов, и в точности соответствовал Имени формы. Попробуйте, например, задать следующие имена форме: «НеуправляемаяФорма» или «Форма_01».
В реквизите «ФормаКОткрытию» запоминается не Имя формы, а Синоним формы. А это не всегда одно и тоже.
Прикольная штука,только сегодня хотел, что-нибудь такое сделать
(0) (7) С учетом ранее замеченных недостатков, и положительно реагируя на критику в свой адрес, а так же учитывая подсказку от artbear, допилил «Алгоритм переоткрытия внешней обработки/отчета» для обычных форм. Вроде получилось очень даже ничего.
На кнопку «Перезапустить» вешаем следующую процедуру:
Показать
В итоге совместных усилий имеем следующее:
1. Всего одна коротенькая процедура, вызываемая нажатием на кнопку.
2. Не нужны дополнительные реквизиты. Так же не нужны вставки кода в процедуры событий формы.
3. Процедура работает как для внешних обработок, так и для внешних отчетов. Нужно только закомментировать/раскомментировать одну строку.
4. Очень легко вставляется в новые внешние обработки и отчеты (одна кнопка и одна процедура).
(18), идеальный вариант 🙂
(18) Да, именно про такую процедуру я и говорил.
Странно, почему код в (7) не работает 🙁
Похоже, что ошибкой было сохранять форму в переменной 🙁
Вот простейший 100% рабочий код, которым пользуюсь со времен 8.0
Только что проверил на всякий случай 🙂
(18) >>Процедура работает как для внешних обработок, так и для внешних отчетов
Я бы еще просто добавил проверку на тип, это несложно, чтобы сделать код полностью универсальным, без дополнительного комментирования/раскомментирования.
И для идеала — можно написать спец.процедуру, которая вставляет кнопку с вызовом сабжевого кода в командную панель. Это также несложно.
(20) Согласен, это простейший 100% рабочий код. Но он всегда открывает основную форму обработки.
А задача стояла — открывать форму, в которой была нажата кнопка «Перезапустить». Поэтому код в (18) получился чуть сложней. 🙂
(20) Кстати, почему я поставил метод «Закрыть()» ПЕРЕД открытием нового окна.
Если метод «Закрыть()» поставить ПОСЛЕ открытия нового окна, как в (20), то наблюдается неприятный эффект.
Попробуй открыть форму. Затем измени размер окна формы, или просто максимизируй (распахни на полный экран). После этого понажимай на кнопку «Перезапустисть». Ты будешь приятно удивлен. 🙂
Форма будет периодически открываться, с разными размерами окна… 🙂
И для идеала — можно написать спец.процедуру, которая вставляет кнопку с вызовом сабжевого кода в командную панель. Это также несложно.
Думаю, что в данном случае это уже будет лишним. Хотя, действительно, написать такую процедуру несложно.
здесь или тут . 🙂
Если кому-то это будет необходимо, то может посмотреть, как подобное делается
(0), (21), (18) «Алгоритм переоткрытия внешней обработки/отчета» для обычных форм. (ВЕРСИЯ 2).
Приняв во внимание замечание artbear, доработал алгоритм из (18), и вот что получилось:
На кнопку «Перезапустить» вешаем следующую процедуру:
Показать
В итоге совместных усилий имеем следующее:
1. Всего одна коротенькая процедура, вызываемая нажатием на кнопку.
2. Не нужны дополнительные реквизиты. Так же не нужны вставки кода в процедуры событий формы.
3. Процедура работает как для внешних обработок, так и для внешних отчетов.
4. Очень легко вставляется в новые внешние обработки и отчеты (одна кнопка и одна процедура).
Всем спасибо за положительные отзывы, а особенное спасибо — за конструктивную критику.
Немного неожиданно (для меня) — бурная реакция на неуправляемые формы.
(15), (16) mtv:), у меня встречный вопрос: как открыть сразу несколько форм одной обработки?
(12) ARL, задача стояла именно в том, чтобы избавиться от необходимости вручную указывать (в коде ли, в реквизитах ли — неважно) какую обработку открыть.
Нужно учесть, что у внешнего объекта может быть открыто одновременно несколько форм (с разными метаданными). Поэтому нужно все их закрыть, чтобы не получилось ситуации, когда открыта часть форм от нового объекта с новой версией файла и часть от старого объекта со старой версией файла.
Показать
Правда еще бывает КлючУникальности установлен у формы. Тогда можно обнаружить только основную форму.
Надежного решения задачи платформа не позволяет реализовать.
…mtv:), у меня встречный вопрос: как открыть сразу несколько форм одной обработки?
Не хочу никого обижать, но я не понял… 🙁
Это прикол такой? Или действительно имеются затруднения с открытием нескольких форм одной обработки?
(28) mtv:), это не прикол. Просто не сталкивался. И не только я не сталкивался.
(29) Ну, например, вставить следующий код в процедуру «ПриОткрытии», или повесить этот код на какую-нибудь кнопку:
Или не это имелось ввиду?…
(30) mtv:), понятно. Спасибо. Но это, так сказать, искусственное открытие нескольких форм. До него я докумекал. Я так понимаю, что штатного механизма открытия нескольких форм платформа не предоставляет?
(31), ShantinTD, ох чует мое сердце, что мы говорим о разных вещах…
Возможно, что ты имел ввиду: «Как открыть одну и ту же форму несколько раз (в разных окнах)?».
Тогда это делается по-другому… 🙂
(31) если требуется открыть одну и ту же форму несколько раз (в разных окнах), то можно использовать, например, следующий код:
Это пример штатного механизма платформы для открытия новых экземпляров формы.
_
(32), (33) mtv:), нет, мы говорим об одном и том же: именно как открыть несколько разных форм. Про УникальныйИдентификатор() я видел. Но это опять же искусственное открытие нескольких форм (хоть разных, хоть одинаковых). Может быть я немного неточно выразил свою мысль про штатный механизм: я имел ввиду некий штатный механизм интерактивного открытия нескольких форм.
(27) tormozit, да, согласен, что нужно за собой прибирать — т.е. закрывать все открытые формы внешней обработки/отчета. Спасибо за подсказку.
Объясни, пожалуйста, смысл первой строки твоего кода: «ЭтотОбъект = ЭтаФорма.ЭтотОбъект;». Я не понял, зачем это. Тем более, что эта строка выдает ошибку, пришлось закомментировать.
И еще, если ты используешь оператор «Попытка Исключение», то не проще ли в нем и разместить код открытия новой формы? Тем самым сократив код на семь строк.
Я сам почему-то не люблю оператор «Попытка Исключение», использую его только в крайних случаях. 🙂
(35) Мой код может выдавать ошибку при попытке присвоения «ЭтотОбъект = …» только при выполнении из контекста формы. Я же очевидно писал его для выполнения в более изолированном контексте (например общего модуля).
В конструкцию Попытка Исключение разумно помещать минимальное число операций, чтобы не рисковать замаскировать непредвиденные ошибки.
(36) Спасибо за разьяснения, всё понял, согласен.
Идея хороша, но есть уже и причем давно такие же. 5+
Все работает чудесным образом. Давно мечтал о подобном свойстве при отладке. Спасибо!
(0), (27), For All. «Алгоритм переоткрытия внешней обработки/отчета» для обычных форм. (ВЕРСИЯ 3).
Приняв во внимание замечания (27) tormozit, доработал алгоритм из (25).
Теперь закрываются все открытые формы внешней обработки.
На кнопку «Перезапустить» вешаем следующую процедуру:
Показать
В итоге совместных усилий имеем следующее:
1. Всего одна коротенькая процедура, вызываемая нажатием на кнопку.
2. Процедура работает как для внешних обработок, так и для внешних отчетов.
3. Очень легко вставляется в новые внешние обработки и отчеты (одна кнопка и одна процедура).
Да, идея хороша!
идея не просто хорошая, а очень хорошая. коротко, ясно, и полезно.
Неплохо-неплохо.
Полезная вещь, немного экономит время)
(40) mtv:), нашел такой момент: если МетаФорма — управляемая, то в режиме обычного приложения она не может быть Открыта(), и происходит ошибка.
For All, учел все ваши пожелания и предложения, учелhttp://infostart.ru/public/97685/ и получился новый вариант обработки.
(45) Закрытие формы в управляемом режиме проверял? именно простое закрытие, а не переоткрытие?
(46) artbear, естественно. То, что мы видели по ссылке выше — натолкнуло в правильное русло. Из-за такой же ошибки у меня был сделан реквизит ФормаКОткрытию для обычной формы. Так что эти грабли — уже пройдены.
(45) я писал в (40), что «Алгоритм переоткрытия внешней обработки/отчета» для обычных форм. Так что работоспособность для управляемых форм не тестировалась и, естесственно, не гарантируется.
http://infostart.ru/public/97685/ , публикация к сожалению уже удалена… 🙁
А по ссылке, указанной в (45)
Так и не узнать видимо никогда, что имелось ввиду… 🙂
(48) mtv:), вопрос в том, что код выполняется в обычной форме, но при наличии в обработке управляемых форм возникнет ошибка.
По ссылке был выложен вариант обработки только для управляемых форм, но просто закрыть обработку не получалось. Об этом меня спрашивает в (46) artbear.
(49) чтобы избежать ошибки при наличии в обработке управляемых форм, алгоритм из (40) можно дополнить условием (вставить перед строкой: «Если ТекФорма.Открыта() Тогда»):
(51) Неправ/неправа, минусую
(51) Масянька, в споре — рождается истина. Выложен шаблон. Совместными усилиями — пришли к достаточно приемлемому варианту. Каждый в состоянии взять для себя ту часть, которая подойдет именно ему. Так что в этом отношении — я очень доволен. Я немного удивлен тем, что, по видимому, управляемые формы еще слишком мало вошли в нашу жизнь.
Спасибо от начинающих!!!
Кнопочка работает! На самом деле, пока отчет до ума доведешь, забодаешься перезапускать.
Очень полезная штука, конечно, плюс!!!
Никогда об этом не задумывался, + за идею. Сделал и для 7-ки.
(55) rom-x, сделал сам — поделись с товарищем. Хотя я сам делал эту кнопку на основании семёрочнойhttp://infostart.ru/public/86415/ .
покажи для 7ки … тупо позырить…
(56) (57) Программулькин,
(58) rom-x,
Спасибо.
Сделал немного по-другому на основе вашего кода —http://infostart.ru/public/104428/
немного корявая, но спасибо
(62) Rino, конструктивнее: что именно не понравилось?
Интересно. Спасибо.
(62) Rino, Корявая или нет — субъективное мнение. Выложите свой вариант, мы все оценим. А так это пустой трёп. Идея хорошая. Мне понравилась.
Интересно как глюки будут или нет
Отличная разработка, не уверен что найдет прикладной характер, но по сути, возможно найдутся потребности в таком решении.Плюс автору.
ShantinTD, отличная публикация. Шаблон не качал. Для себя взял Процедуру из коммента (40), отдельное спасибо mtv:). То что надо! :)))
(58) rom-x, в 7.7 есть оператор РасположениеФайла(Путь,Имя), где Путь, Имя — переменные, принимающие путь и имя в контексте данного отчета/обработки.
Поэтому писать КаталогИБ()+»Extforms123.ert» излишне и нерационально
Нужная обработка. Давно хотела такую
(3) mtv:), только по моему нужно использовать процедура не ПриЗакрытии(), а ПередЗакрытием().
P.s. если я не прав то попровьте)
(71) markgenuine, ты смотрел начальный вариант (сырой и глюкавый).
Окончательный вариант смотри в комментарии (40). Там процедура ПриЗакрытии совсем не используется. 🙂
(71)так «при» от «перед» фактически отличается только возможностью предотвратить закрытие
Класная штука…. правда написано универсально… и при наличие нескольких форм откривает все…. немножко подправляю под ситуацию… и отладка ускоряється в разы… Спасибо за идею
действительно удобно, +.
Я вот тоже такой темой заморочился для УФ
http://www.forum.mista.ru/topic.php?id=709041
Может кому пригодится.
Ничего писать во внешней обработке не надо. Решается добавлением только одной общей команды с хоткеем. У себя назвал глShiftF5
Модуль:
Показать
Свойства команды:
<Properties>
<Name>глShiftF5</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Глобальный Shift+F5</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Group>FormNavigationPanelImportant</Group>
<Representation>Auto</Representation>
<ToolTip/>
<Picture/>
<Shortcut>Shift+F5</Shortcut>
<IncludeHelpInContents>false</IncludeHelpInContents>
<CommandParameterType/>
<ParameterUseMode>Single</ParameterUseMode>
<ModifiesData>false</ModifiesData>
</Properties>
При открытии нескольких экземпляров внешней обработки перезагружается только текущая активная.
1) УФ — внешняя обработка (отчет)
2) В УФ создаем команду формы и назначаем ей процедуру «Переоткрыть»
3) На УФ создаем кнопку формы и назначаем ей команду из п. 2
Модуль формы
Показать
Всем хорошего настроения!
Всем привет!
Рад, что спустя три года такая мелочь все еще остается полезной, востребованной и не только скачивается, но и толкает других к написанию своего варианта, к тому, чтобы поделиться своим вариантом с остальными.
Всем СПАСИБО!
(78) Nuuq, что то ругается на
НачатьПомещениеФайла(,,СтруктураПереоткрыть.ИспользуемоеИмяФайла,Ложь,);
процедура или функция не найдены
Интересно 🙂 Прекрасная замена Файл-открыть последний (или Alt, ф, стрелка вниз, 1)
Мне понадобилось запускать обработку сначала в режиме мастера настройки (для первоначальной настройки), а потом переходить в обычный режим.
Проблема в том, что у обработки использовались разные формы, т.е. в «ПередОткрытием» я переопределял основную форму.
После завершения работы мастера, самым простым способом оказалось просто перезапустить обработку ПРОГРАММНО, так что спасибо автору за готовое решение! 🙂
В предпоследней платформе (8.3.7.1790) как ни бился, не смог сделать переоткрытие внешнего отчета в толстом клиенте с НЕ файловой базой.
Может у кого есть работающий код? Хочется посмотреть до чего же я не додумался…
(83) batyrkin, Даже интересно стало. Хотя и, вероятно, уже не актуально, поставил именно эту версию платформуы, не файловый вариант, запустился в толстом клиенте — все работает, как написано например в (78)
Для личного удобства использовал программное добавление кнопки, полный листинг модуля формы ниже
Показать
Для обычных форм на этой же платформе прекрасно отрабатывает код (40)
(83) batyrkin, Я кажется понял, в чем проблема. Может кому-то пригодится. Вот измененный код процедуры
Показать