<?php // Полная загрузка сервисных книжек, создан 2025-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='\
(0) Дочитал до конца, но нового ничего не узнал. Так, чисто время занять, пока большой файл скачивается.
Всё написано и разжёвано в книге Хрусталёвой Разработка управляемого интерфейса.
В аннотации про это честно сказано 🙂
Не согласен.
Зря использовали это словосочетание. Оно напоминает «ХранилищеЗначений». Кто-то может спутать.
Не согласен.
При открытии формы элемента справочника СправочникОбъект остается на сервере, а на клиент передается описывающий его ДанныеФормыСтруктура*. И будет существовать этот СправочникОбъект на сервере до тех пор, пока форма не будет уничтожена (ну, может еще по таймауту).
Именно поэтому существуют контекстные и бесконтекстные вызовы сервера. Это подчеркивает, что контекст существует и на сервере и на клиенте.
(3) B2B, не смотря на ваши замечания, всё равно прочитал с большой пользой для себя. Спасибо автору статьи за данный материал
(3) B2B,
Рискую ошибится, но думаю, что это ни о чем не говорит.
Я рассуждаю так: если СправочникОбъект остается на сервере, тогда зачем в принципе нужно разделение на контекстные и бесконтекстгые процедуры? Ведь контекст остался на сервере?
Но тут возникают но… Данные на форме могли поменяться и поэтому при контекстном вызове их надо обновить (должно происходить если на сервере контекст сохранен), либо если контекст уничтожен на сервере, тогда контекстный вызов просто необходим.
На личном опыте замечено что не важно сколько ты информации изменил на форме, на скорости контекстного вызова это не сказывается (т.е. платформа не отслеживает только измененные объекты и не передает только их) что косвенно подтверждает теорию отсутствия СправочникОбъект на сервере. Либо говорит о том что 1С здесь чего-то не доработало.
Это мое сугубо личное мнение и оно, возможно, является ошибочным.
(6) B2B, грубейшая ошибка. С чего вы взяли про идентификатор какой-то?
СправочникОбъект уничтожается при возврате на клиента. Контекст формы существует только в виде ДанныхФормы и ее элементов. У вас есть подтверждения ваших слов про то, что СправочникОбъект живет на сервере пока открыта форма?
Коллеги, еще раз: из СправочникОбъект-а создается структура с такими же свойствами, заполняется данными из СправочникОбъект-а. Все, дальше в форме живет только эта структура.
Доказательство — ХранилищеЗначения в реквизитах объекта.
Домашнее задание — сделать управляемую форму справочника с реквизитом типа ХранилищеЗначения. В хранилище нужно записать файл, выбранный с диска.
(8)
Такое задание делал не раз на работе ))))
Работаю с УФ полгода и хотел бы вернуться к обычным. Часто занимаюсь конвертацией данных и сложными обменами между базам. Скорость разработки увеличилась. Нагрузка на сеть для меня не критична. Сложно организовать простой прогресс бар. Передавать файл через временное хранилище грустно. Но плюсы тоже есть, однако минусы их перекрывают.
(0) О Книжках:
«Разработка управляемого интерфейса» Ажеронок, Островерх, Радченко, Хрусталева — зеленая
«1C:Предприятие 8.2 Коротко о главном» Радченко — коричневая
(10) Oleg_nsk, поддержу в плане прогресс-бара. Точную индикацию прогресса организовать можно только извратившись. Однако, как мне кажется, для большинства прочих задач УФ намного удобнее.
а ещё хочется отметить, что не все методы работает на сервере —
например если база развернута на 64битном сервере, то поработать на нем, к примеру с XBase не получиться.
Спасибо. Уже почти год как вынужден был вернуться к обычным формам, кое-что по УФ начало забываться, благодаря публикации память рефрешнута.
(12) Oleg_nsk
Состояние (Status)
Синтаксис:
Состояние(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Параметры:
<ТекстСообщения> (необязательный)
Тип: Строка.
Строка, предназначенная для вывода в панель состояния. Если параметр не указан, возобновляется вывод системного текста в панель состояния.
<Прогресс> (необязательный)
Тип: Число.
Значение индикатора прогресса (от 1 до 100).
Если не задан, индикатор прогресса не отображается.
<Пояснение> (необязательный)
Тип: Строка.
Текст пояснения.
<Картинка> (необязательный)
Тип: Картинка.
Картинка.
Описание:
Выводит текст в панель состояния.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Примечание:
Для режима запуска ОбычноеПриложение используется только параметр <ТекстСообщения>, а вывод текста осуществляется в панель состояния.
Пример:
Состояние(«Выполняется обновление информационной базы»);
Показать
Частота исполнения строго на плечи программиста реализующего серверное решение.
очепятка во втором параметре (он должен быть без ковычек)
(15) xzorkiix, тут напрягает то, что нужно постоянно «выныривать» на уровень клиента. Логичнее решать проблему отображения хода вычислений через асинхронное фоновое задание.
Если этот код выполнять с клиента, то результат будет вовсе не таким, как написано.
(18) BH, это серверный код, выполнять надо в одной серверной процедуре. Кстати, результат, скорее всего, будет таким, как написано, однако, я там же говорил, что процесс хранения управляется платформой и она может сериализовать данные по своему усмотрению. Поэтому, в общем случае, поведение непредсказуемое.
(15) xzorkiix, да, а еще нужен реальный сервер, ибо в файловом режиме фоновые задания работают извращенскими методами и, де-факто, не применяются вовсе.
(20) Поторопился с примером, каюсь, метод выполняется строго на клиенте. Тут скорее в решении платформы должна быть реализация методов, которые бы работали с пользовательским интерфейсом без прерывания серверного кода, те клиент паралельно всегда должен ожидать каких либо откликов со стороны сервера. Тот же метод Состояние. Возможно, это будет реализовано так позже. Пока я сомневаюсь, что разработчики платформы настроены на реализацию асинхронного вызова силами 1С-программиста.
Статья понравилась и четким изложением «по пунктам», и содержанием. Эту информацию пришлось с полгода назад выискивать по разным источникам, в т.ч. в упоминаемой книге. Но и из статьи немало узнала, спасибо автору!
Однозначный «плюс», мне бы эту статью в начале работы с УФ 🙂
(10) Работаю с УФ три года и не хотел бы возвращаться к обычным на постоянную основу или на долгое время. Во-первых, больше престижа, во-вторых, достоинства УФ с лихвой перекрывают недостатки. Так что перестраивайте мышление.
С обычными формами работаю время от времени, но только по превеликой просьбе клиентов.
Франч, УТ 11, Розница 2, свои конфигурации.
Спасибо за публикацию, хоть освежил свою память поскольку редко работаю с уф.
(8) А что его делать? Справочник Файлы или регистри ХранимыеФайлыВерсий, ПрисоединенныеФайлы в любой типовой на БСП.
(25) Поручик, Помещать ДвоичныеДанные во временное хранилище формы, а в ДанныхФормы завести реквизит «АдресДвоичныхДанных».
Затем, в событии «ПередЗаписьюНаСервере» проверять, если по этому адресу что-то лежит, то засунуть эти данные в ТекущийОбъект.
Автору спасибо, сейчас начинаю плотно работать с УФ — приходится восстанавливать знания по ним после сдачи спеца.
С УФ работаю где-то полгода, некоторые моменты, описанные в статье, изучал методом тыка)
Как раз подхожу под
Данная статья ориентирована на разработчиков, которые волею судеб не успели плотно поработать с управляемыми формами. Если вы уже хорошо знаете, как работают УФ и вообще управляемый интерфейс приложения, то можете статью не читать, поскольку, вряд ли узнаете много нового.
Автору спасибо, буду ссылаться на Вашу статью)
Хорошо написано, еще много вопросов вызывает Условное оформление(особенно если строки надо подсветить), его программное добавление и т.п., отборы в списках
спасибо, закрепил
Спасибо автору — как всегда качественное изложение материала. До многого сам своими мозгами доходил, раньше бы на полгодика эту статью… Тем не менее еще раз спасибо, лишний раз утряслось все по полочкам.
(7) Извините, был не прав 🙁
Отличная статья!
Как раз статья кстати, вчера поставил в контору конфы 8.2 УТ и БП, бум разбираться. Еще раз спс за статью.
(23) Поручик, Перечислите пожалуйста достоинства УФ кроме «престижа», уменьшения сетевой нагрузки и простоты конструирования форм? У вас на самом деле уходит меньше времени на разработку? Какая специфика ваших задач? Вот сегодня например прилетела задача по УТ11 при заполнении установки цен на основании документа поступление заполнить свою цену ценой поставщика с НДС. Эта задача была оценена на полчаса. При попытки вникнуть в суть кода разработчиков чуть не поехала крыша. Создание временного хранилища со схемой скд, её извлечение, двойное перезаполнение и т.п. В общем задача заняла у меня 4 часа. На толстом клиенте на это ушло бы минут пять. Добавление внешних печатных форм отчетов и обработок стало каким-то муторным. Не говорю о том что отладка на клиент-сервере невозможна без флага -debug и приходится делать файловую копию большой базы. Знаю людей которым нравятся УФ, но не знаю никого, кто-бы работал с ними быстрее чем под толстым клиентом. Сам я проходил курсы по УФ и знаю все его основные особенности, читал спецлитру, мышление перестроил под него, однако, остаюсь при своем мнении, что разработка под толстым клиентом проще и быстрее. Если будет время согласен устроить соревнование — решение нескольких шаблонных задач на скорость параллельно в УФ и на толстом клиенте 🙂
(35) Oleg_nsk, и меня подпишите)
в высоконагруженых системах, считаю, без УФ никуда, в параллель с обязательным клиент-сервером.
вот вы привели, что толстые формы быстрее в разработке, так давайте вернемся к 77 где вообще все просто как 3 рубля.
не помню где читал про похожий холивар, «усложнение» мол разработки, но в конечном итоге ведь — все во благо! а по другому никак. прогресс так сказать.
(36) нормальный такой, В высоконагруженных, возможно. Однако, я работаю с небольшими фирмами. Переход с 77 на 8 проходил относительно безболезненно, т.к. 8 позволяла именно ускорить процесс разработки и давала новые возможности. Усложнение меня не пугает, однако, сама концепция реализации тонкого клиента увеличивает время разработки. У меня претензии к тому, что тонкий клиент давая преимущества в тех аспектах, которые для меня не важны усложнил жизнь в тех, которые составляли 90% моей работы. Теперь выгоднее стало уйти на крупное предприятие нежели работать со многими небольшими фирмами, т.к. завышение цены на услуги в 1.5-2 раза никому не нравится.
dgh
еб@нутый каталог.. хз чего я там поставил, + или минус ?
п..ц наступил, аутор, если че, я плюсую
Мне, как начинающему, понравилось. Основные принциы изложены кратко и доходчиво. Название «под капотом» четко дает понять что это не «руководство по экспуатации и ремону».
ЗЫ. Побежал читать Радченко
Спасибо автору! Отличная статья)
Статья отличная, рекомендую к прочтению.
Много нюансова разжевано.
(35) Oleg_nsk, Вы знаете, когда делал на обычных формах документ и в момент сдачи пользователи попросили добавить маленький реквизхит — просто текстовое поле типа комментария. Добавил вроде ничего такого не трогал, но как полетели у меня привязки — полчаса потом выравнивал((((((( в тот момент я подумал что УФ это рай на земле)
[QUOT]
Ключевые параметры определяют уникальность окна. В обычных формах был такой атрибут «Ключ уникальности». Если запрашивалась форма, то она сначала искалась в уже открытых. Ключ уникальности позволял варьировать условия при которых создавалась новая форма или возвращалась существующая. Ту же самую роль играют ключевые параметры. Если метод «ОткрытьФорму» вызван два раза подряд с одним и тем же значением ключевого параметра, то второй вызов не откроет новое окно, а активирует существующее.
[/QUOT]
Не совсем верно. Поиск по ключевым параметрам это поведение по умолчанию.
Но при этом у метода ОткрытьФорму есть параметр <Уникальность>, если его заполнить, то поиск среди открытых окон будет выполняться по нему.
(35) Oleg_nsk, кстати. на вскидку — преимущества уф — функциональные опции, которые позволяют скрывать ненужное от пользователя. «Самоформирующийся» интерфейс
(45) doxflow,
Но при этом у метода ОткрытьФорму есть параметр <Уникальность>, если его заполнить, то поиск среди открытых окон будет выполняться по нему.
Не знал. Думал, что они друг-друга дополняют. Спасибо.
(46) help1Ckr, Да. Плюс. Для разработчиков решений. Но я не разрабатываю конфигурации с нуля, а дорабатываю типовые в основном. Там таких проблем нет. С привязками ну было у меня пару раз что сбивались когда начинал на 8.0, потом понял как они работают и более затруднений не возникало.
» Все кто поработал с УФ более-менее плотно не хотят возвращаться назад, как в страшный кошмар.»
Ну ты за всех-то не расписуйся 🙂 После таких заявок так и хочется минус влепить.
«Один и тот же код работает и в браузере, и в родном клиенте.»
А это просто неправда.
Интересная и полезная информация. Все важное об управляемых форма в одной статье. Буду использовать в моей практике.
(50) bulpi, 🙂 Скажем так, в идеале, один и тот же код работает и там и там.
Понятно, что есть документированные особенности, как то «РасширениеРаботыСФайлами» и прочее…
А что именно неправда?
Код, отлаженный в тонком клиенте, вовсе не обязательно будет работать в веб-интерфейсе. У меня была куча странных ошибок в браузере. Помогали только танцы с бубнами.
(53) bulpi, это да, веб-клиент имеет недостатки. Но о них надо сообщать и скорее всего их будут править.
Проектная идеология подразумевает корректную работу кода в тонком и веб-клиентах.
(53) bulpi, и обратное тоже верно: код отлаженный в веб-клиенте не обязательно будет работать в тонком)
Cool
(48) Oleg_nsk, ну так речь была о разработке) ну и построение интерфейса с функциональными опциями это тоже плюшка для доработки типовых — сколько мне пришлось рабочих столов делать и отдельных интерфейсов для типовых потом у как каждый руководитель ларька считает что его информация обладает ценностью для пентагона и потому надо закрыть везде доступ.
Коллеги, а что за странная тенденция прикреплять картинки с аватарками? Это новая фича редизайна от Инфостарта? Особо везучие вместо своего поста публикуют аватарку крупного размера?
спасибо за статью, побольше бы таких. доходчивым языком для новичков основы.
Спасибо за статью, прояснила некоторые моменты. 🙂
Прочел статью. К самому написанию никаких вопросов — все довольно доходчиво изложено. Не понравилось только то, что автор безустанно «втирает» идею «УФ — ЭТО ЛУЧШЕЕ, ЧТО С НАМИ БЫЛО».
По мне так УФ это г***о полное. Я работал с УФ и плевался на всем протяжении работы. Если кто-то все-таки захочет поспорить на счет «быстроты разработки», то я тоже подписываюсь! Я вижу УФ только в качестве того случая, когда нужно разработать функционал под «веб» (т.е. для работы в браузере).
(36) нормальный такой, У меня есть заказчик, оптовая торговая фирма, 30 пользователей, 500 документов в день, включая субботу и воскресенье, работают на 7.7 самописная «примитивная» конфигурация, 15 документов, 5 регистров, и несколько сотен отчетов и обработок. Работают в терминале, файловая база. Они счастливы, довольны и скоростью и производительностью, и тем, что я им функционал под каждый чих, быстро дорабатываю. По функционалу, УТ 11 только сейчас придвинунась, к тем идеям, которые у них были реализованы еще 10 лет назад. Торговые представители через карманник, подключаются по терминалу к базе. Внешние клиенты также, у них урезанные интерфейсы, делают самостоятельно заказы. Один блок логистики, загрузки автомобилей, и доставки по районам чего стоит. Также блок производства и фасовки, со сдельными рассчетами зарплаты. Учет бонусов и откатов. Учет затрат и себестоимости, точки безубыточности. Обмен с БП 2.0 типовой конфигурацией реализован, аффилирование клиентов, как в УТ 11. Им УФ нафиг не нужны, и УТ 11 это кошмар, для их бизнеса — тормоза, и лишние затраты в ИТ инфраструктуру, а также расходы на программистов.
(62) rosinfo1, Дорогой мой! Я за Вас очень рад! правда!
В каждом конкретном случае ессесно свои решения, вот Вы нашли такой вот подход, и самое классное что он работает! Но если делать на УФ и можно таки вообще развернуть веб сервер и юзверя с «карманников» не будут подымать rdp и т.д!
Каждому своё, и вы правильно указали, 500 документов в день, у кого то их 5000 на 500 пользователей, и тут, простите, файловым вариантом не отделаться. Сразу начнете изучать управляемые блокировки и кластеризацию.
Впрочем не стоит раздувать этот бесконечный холивар коих на просторах тырнета не счесть.
Я учился с 8ки, с 77 тоже сталкивался и работал (но не разрабатывал с «нуля») и то что я успел потрогать мне не очень понравилось. Сейчас у нас уже 83 накатываем, и то что мы видим нам очень нра 🙂
Вопрос новичка в УФ. Все что здесь написано, относится к клиент-серверному варианту работы 1С? А с файловым вариантом можно писать как и раньше и не заморачиваться с &НаКлиенте и &НаСервере?
Спасибо. Кратко и понятно.
(64) yuraskas, нельзя.
(61) mzelensky, я тоже плевался поначалу. Когда поработаете подольше (будут ломки) то поймете преимущества.
Вброшу и пойду спать.
Короче говоря, кто плюётся от управляемых форм, просто неудачники, не умеющие осваивать новые технологии и перестраивать мышление. Мозг жиром заплыл.
Скажите, коллеги — фраза «Все кто поработал с УФ более-менее плотно не хотят возвращаться назад, как в страшный кошмар» только мне кажется недостоверной, или я отстал от прогресса и то, что делалось на НФ за час теперь можно делать за 15 минут?
[B]Evil Beaver[B], спасибо за статью — все четко изложил и доходчиво. Вот про то что ВременноеХранилище живет два серверных вызова даже не знал, точнее не сталкивался.
(64) yuraskas, С файловым все так же, надо разделять процедуры на серверные и клиентские.
(58) у меня в Хроме инфостарт вообще неадекватно работает… с редактированием сообщений полная фигня
(68) 1cSupport — третий, видимо, все-таки, кому как. Для всех моих знакомых эта фраза полностью достоверна. Да, на УФ я могу форму нарисовать намного быстрее, чем на обычных. Двигать элементы по пикселям уже просто противно. А уж если вставить что-то в середину существующей сложной обычной формы….
Спасибо за статью!
Спасибо за статью, очень полезно.
спасибо за труд.
«ОткрытьФорму(«Справочник.Контрагенты.ФормаСписка», «УсловияОтбора»);»
Передаешь все-таки текстовую строку или структуру?
Структуру. Опечатался автор, вон сколько букв. Ничего страшного, поправит.
На спор с одним товарищем делали красивую сложную форму — он на УФ, я на обычных. Обогнал его на полчаса и сделал гораздо более симпатичный дизайн. Имхо, УФ намного неудобнее в плане конструирования в конфигураторе. И да, я поработал с УФ и я хочу работать с обычными, они гибче и круче. Жаль, что будущее за уродством вроде «такси». Не понимаю, почему толковые и безусловно полезные меры по клиент-серверной оптимизации сопровождаются такими извратами внешнего вида и его разработки. Что, трудно было оставить прежние возможности нелюбимой автором «пиксельной» работы, а потом уже транслировать в отрисовываемую?..
(79) Yashazz, да блин, вот вы все прицепились к скорости! Нравится вам делать обычные — ради Бога, я что, запрещаю что-ли? 🙂 Или вам надо, чтобы я статью поменял? Ну сформулируйте тогда, что именно надо сказать, а я опубликую.
Спасибо автору за систематизацию информации для чайников… от чайника 🙂
(80) Да потому, что навязчивая, а зачастую оголтелая агитация за УФ (не от вас, а вообще) поднадоедает, вот и вышел крик души. Статья полезная, у кого нет Ажеронка-Островерха-Радченко-Хрусталёвой, тем и просто манна небесная. Хорошая статья. Не принимайте на свой счёт мои зубовные скрежеты )))
Спасибо за статью!
Спасибо! Без воды и для начинающих познавательно
Отличная статья! Спасибо автору.
Спасибо автору, реально получил ответы на многие вопросы. Недавно был случай. Заполнение таблицы формы на сервере выполнялось очень долго. Причем сам запрос отрабатывал за 3 сек, а переход с клиентской процедуры в серверную и обратно занимал порядка 20 сек. Причем если заставить исполняться весь код на клиенте с помощью директив и инструкций препроцессора в толстом клиенте весь код исполнялся да 3 сек. Т.е. запрос напрямую с клиента работает быстрее, чем запрос с сервера с последующей передачей результата на клиент!!! Я не понимал почему это происходит. Теперь понятно что в это «потерянное» время происходила сериализация таблицы. И скорость этого процесса упирается в мощность процессора.
Спасибо за статью.
Спасибо! Особенно за разъяснения некоторых особенностей поведения временного хранилища.
Так и как сохранять com-объекты, если их нельзя помещать во временное хранилище?
(89) Sirruf, а ответьте сами: есть кластер из 3-х серверов. 2 из них на Windows, третий на Linux.
Вызвали сервер, менеджер кластера передал вызов на машину с Windows, там создался ком объект. Предположим, что мы сможем его где-то сохранить.
Делаем другой вызов, менеджер кластера передает вызов на другую win-машину, где этот COM не создавался. Как его получить с первой машины?
Дальше-больше, третий вызов придет на машину с Linux, там вообще не бывает COM. Как вообще обеспечить работу такой информационной системы?
Ваша необходимость сохранять COM объекты между серверными вызовами, это архитектурный просчет и нужно менять само проектное решение.
(90) Таким образом, вариант решения данной проблемы предложенный в статьеhttp://kb.mista.ru/article.php?id=787 неверен. Тогда каким образом можно поменять проектное решение, если требуется хранить ком-объект долгое время, на протяжении работы всего сеанса, чтобы не создавать его каждый раз заново…
(91) Sirruf, решение предложенное в статье хоть и костыльное, но теоретически верное, т.к. тонкости создания объекта скрыты. Это как бы кеш, а не хранение состояния. Если жив объект, хорошо, а если нет, то фиг с ним, создадим заново.
Другой вопрос, если решается задача не кеширования объекта, а надежного хранения его состояния (состояния всех его внутренних переменных). В этом случае предложенное решение некорректно. В условиях нескольких серверов оно некорректно в принципе, даже если мы забудем про 1С и возьмем какую-то другую информационную систему.
(91) Sirruf, а что это за объект такой, если не секрет? Для чего он?
(93) у меня часто используется VBScript.RegExp. Я его хранил в параметрах сеанса так как описано в статье на мисте, но в 8.3 этот прием не прокатывает — ругается при помещении ком-объекта в хранилище 🙁
Вообще понятно, что ком-объеты лучше не использовать в принципе. Хочу реализовать через веб-сервисы, но это не так быстро сделать. Поэтому думаю как бы мне сейчас перейти на 8.3
(95) Sirruf, внешняя компонента, либо TRex от Орефкова (есть на Инфостарте)
(94) Sirruf,
А что если тебе использовать общий модуль с повторным использованием на сеанс? Тоже хороший вариант
(1) Поручик,
Некоторые только начинают учить… Книги — хорошо… Но потом, зачастую, нужна «шпаргалка» пока не «почувствуешь»… А в книге искать долго… Так, что на роль «шпаргалки» вполне тянет…
(35) Oleg_nsk,
Часто по работе встречаю «пятиминутные доработки», последствия которых проявляются не сразу.
Для «обычного приложения» при организации правильной работы трехзвенки, разработка не совсем тривиальна.
Политика 1С вполне ясна, большинство 1С специалистов имеют низкую квалификацию, переход на УФ заставит писать более менее грамотно. Это повысит общий уровень продукции.
(14) Тоже было любопытно почитать, освежить в памяти, так сказать =)
П.С. Работаю и с обычными, и с управляемыми формами, обычные все-таки попроще, хотя и для управляемых если знать основные моменты (открытие файлов, передачу ссылки для обработки на сервер и т.д., ну и что где работает конечно), то все не так страшно, как кажется вначале. Хотя и задачи бывают разные…
А за статью спасибо!
(36) Я работал с 77, не могу сказать, что там было проще. Мне показалось наоборот проще стало в 8, особенно с запросами.