Выброс пользователей из базы




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

72 Comments

  1. artbear

    Все-таки в чем отличие от оригинальной обработки?

    Из описания это непонятно, поясни.

    Reply
  2. markers

    (1) в основном изменения каснулись визуальной части, сделано ИМХО более удобней и наглядней, например имя приложения запущенное вместо 1СМ = Предприятие, Designer = Конфигуратор, …Job = Фоновое задание. и у каждого приложения свои иконки. У пользователя под которым запущена эта обработка значёк приложения в виде человечка означающая что это «я». Переставлены местами для удобства колонки. Отделено пользователь;ПолноеИмя по разным колонкам.

    Ну и исправлена проблема выгона пользователя из-за которой возникала ошибка у меня (при вызове функции авторизации на сервере передавались пустые логин/пас). Вроде всё.

    Reply
  3. coder1cv8

    За «красивости» плюс! Молодец! У меня как-то ни времени, ни желания не было все «причесать» данный проект…

    По поводу ужасной 🙂 ошибки из-за которой у тебя не работало, таки не понял… Это вот это что-ли?

    Агент.Authenticate(Кластер,»»,»»);

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

    Reply
  4. markers

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

    Reply
  5. coder1cv8

    +(3) У меня есть пожелание еще! 🙂

    В Висте net send не работает (я слышал), там какой-то другой, аналогичной командой заменили. Хотелось бы, что бы в зависимости от ОС админа, который отправляет сообщение, выбиралась правильная команда.

    Reply
  6. coder1cv8

    (4) А юзер/пароль админа кластера откуда берешь?… Просишь ввести?

    Reply
  7. markers

    Дыг он и так просится ввести один раз, у меня они совпадают, его же и подставляю

    Reply
  8. coder1cv8

    (7) Хм ) Ну далеко не факт, что у остальных админ кластера совпадает с администратором ИБ )

    Reply
  9. markers

    (8) Согласен, но так всё-же больше шансов 🙂

    Reply
  10. markers

    (5)

    На тему NetSend, он вообще ограниченый, прежде всего (и проще) сделать отправку сообщение через ЗадачиПользователям, а потом есть ещё команда msg виндовская, насколько она пашет в висте, без понятия.

    Reply
  11. coder1cv8

    (10) Какие-такие «Задачи»? ) Обработка должна работать в не типовой конфигурации, ИМХО.

    msg в Висте работает, вроде (проверить пока не могу).

    Reply
  12. vip

    (11) msg это для терминала.

    Виста тут при чем?

    Reply
  13. markers

    (12) Я не сказал ведь однозначно, я просто знаю что она есть и что она подойдёт для терминала.

    Да кстати счас проверил: msg /SERVER:Server * проверка отправляет всем

    Reply
  14. WellMaster

    Удобно было бы сделать еще следующие фишки:

    1. Кнопку «Прервать все, кроме выделенного» (кроме текущего, кроме себя… на выбор)

    2. Установку блокировки соединений (по аналогии с консолью серверов 1с)

    Reply
  15. markers

    (14)

    1) Сейчас при убийстве всех, себя не убивает. Насчёт кроче выбранного, если будет время, сделаю

    2) Её можно делать из предприятия, в УТ точно есть встроенно, подскажите есть ли данная обработка во всех конфах или её полностью интегрировать в эту обработку?

    Reply
  16. WellMaster

    (15) 2. Для универсальности решения имеет смысл реализовать в этой обработке. Было бы удобно сразу выставить блокировку, убить все сеансы кроме себя и спокойно заниматься монопольными вещами. Хотя на ваше усмотрение конечно.

    Reply
  17. ZERO_

    (15)

    Я, если честно, считаю пункт, который вышвыривает всех ненужным (чисто из практических соображений). Вместо него необходим пункт «вышвырнуть всех, кроме меня». Про блокировку установки соединений — очень удобная и нужная вещь!

    Reply
  18. Mortal

    Я в снеговике ноль, подскажите как исправить:

    //**********************

    {Форма.Форма(76)}: Поле объекта не обнаружено (ПиктограммаФайла_1С)

    ОформлениеСтроки.Ячейки.ИмяПриложения.УстановитьКартинку(БиблиотекаКартинок.ПиктограммаФайла_1С);

    //***********************

    В целом «+», работает, только ошибку эту выдает 🙁

    Reply
  19. coder1cv8

    (17) Сказали же уже! Даже в исходной обработке (моей) пункт «Прервать все» именно так и работает.

    Соглашусь с (16) кнопочки с «УстановитьБлокировкуУстановкиСоединений()» не хватает…

    Reply
  20. coder1cv8

    И нужно, конечно же, все используемые картинки поместить внутрь обработки, что бы не было ошибок, типа (18)!…

    Reply
  21. markers

    (20)

    Да нужно согласен! Пока ещё не дошли руки, много чего хочу ещё дореализовать. Потому пока-что предупредил в описании что если не будет работать замените иконки ну или закоментите! Позже сделаю всё!

    Reply
  22. markers

    Обновлена обработка! Подробности читай в описании!

    Reply
  23. coder1cv8

    (22) Иконки можно непосредственно в модуле сохранить, в виде base64-строки…

    Reply
  24. markers

    (23)

    Сделано! И в целом чуть-чуть обновлена обработка! Прольба прочитайте описание и выскажите своё мнение! Оно очень важно! Спасибо за вашу поддержку!

    Reply
  25. St_alker

    Подскажите, что это за крендель ???

    {Форма.Форма(168)}: Ошибка при вызове метода контекста (ConnectAgent): Произошла исключительная ситуация (V81.COMConnector.1): server_addr=tcp://:1540 descr=Ошибка сетевого доступа к серверу

    (Windows Sockets — 10061(0x0000274D). Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ) line=567 file=.srcDataExchangeTcpClientImpl.cpp

    и письма не шлёт ((

    Reply
  26. markers

    (25)

    Не похоже что у вас запущено через сервер 1С. а работает в файловом режиме.

    Не шлёт скорей-всего потому-что служба сообщений на компьютерах выключена

    Reply
  27. St_alker

    тыыык, со службой разобрался СПС(!), а с режимами подскажи (для дровосека) что делать ?

    Reply
  28. markers

    (28) «а с режимами подскажи (для дровосека) что делать ?» простите непонял?

    Reply
  29. markers

    Поделитесь плиз своими мнениями, впечатлениями! Плохие ли они иль хорошие, выскажите! Скажите что ещё хотели бы увидеть в обработке? с нетерпением жду ваших комментариев!

    Reply
  30. St_alker

    Тoбишь, что сделать чтобы заработала основная функция утилиты — завершение работы пользователей ?

    Reply
  31. markers

    (30) Чтобы заработала основная функция, нужно чтоб информационная база работала через сервер 1С предприятия, больше ни-как! Поищите есть вариант на данном сайте для файлового режима работы Информационной базы… Пойми, принцип данной обработки исключает работу кроме как через сервер 1С предприятия (Обработка подключается к серверу 1С предприятия и убивает там пользователей).

    Reply
  32. ZERO_

    (29) А почему убрали слово «Прочее» из колонки «Приложения»? Раньше было лучше — хоть какое-нибудь слово, а щас вообще ничего… И еще, можно ли какую-нибудь картинку поставить там где «Прочее»? (Все строки, как строки — красивые, а строки, например, с Com соединениями — беспонтовые) 🙂

    Reply
  33. markers

    (32) Убрал прочее чтоб выяснить в каком контексте появляется это прочее, чтоб добавить название своё. Если вы сделаете снимок и скажите что может скрыватся под пустотой я добавлю в код. Заранее спасибо!

    Reply
  34. ZERO_

    (33) Ну, в моем случае — «Прочее» — это Ком-соединение! (Кстати, в обработке от coder1cv8 писалось что-то типа «ComConnector» или «ComConnection») Так что… Дерзайте! 😉 Вот скрин: http://files.mail.ru/D6R2E1

    Reply
  35. markers

    (34)

    ок! В ближайшее время подправлю! Большушее спасибо! Кстати какой цвет для них поставить?

    Reply
  36. ZERO_

    (35) Пожалуйста! (Ну, не знаю… Светло-зеленый можно…? 🙂 )

    Reply
  37. markers

    (36) Попробую! Хотя 1С к цветам как-то странно относится, я ставил вообще по светлей цвета, а получились темней.

    Reply
  38. markers

    (36)

    Обновил обработку, сделал желаемые изменения! Проверь пожалуйста!

    Reply
  39. artbear

    (0) Получил ошибку:

    Скачал только последний вариант только,

    в нетиповой базе, работающей через сервер 1С, запускаю обработку, все нормально, пользователей вижу,

    но далее выбираю установку блокировки базы и получаю

    {Форма.УстановкаБлокировкиСоединений(50,7)}: Переменная не определена (УстановитьБлокировкуСоединений)

    Если <<?>>УстановитьБлокировкуСоединений Тогда

    {Форма.УстановкаБлокировкиСоединений(53,26)}: Переменная не определена (ОкончаниеБлокировки)

    Если ЗначениеЗаполнено(<<?>>ОкончаниеБлокировки) и НачалоБлокировки > ОкончаниеБлокировки Тогда

    {Форма.УстановкаБлокировкиСоединений(53,69)}: Переменная не определена (ОкончаниеБлокировки)

    Если ЗначениеЗаполнено(ОкончаниеБлокировки) и НачалоБлокировки > <<?>>ОкончаниеБлокировки Тогда

    {Форма.УстановкаБлокировкиСоединений(79,56)}: Переменная не определена (ОкончаниеБлокировки)

    НастройкаПериода.УстановитьПериод(НачалоБлокировки, ?(<<?>>ОкончаниеБлокировки = ‘0001-01-01’, ОкончаниеБлокировки, КонецДня(ОкончаниеБлокировки)));

    {Форма.УстановкаБлокировкиСоединений(79,92)}: Переменная не определена (ОкончаниеБлокировки)

    НастройкаПериода.УстановитьПериод(НачалоБлокировки, ?(ОкончаниеБлокировки = ‘0001-01-01’, <<?>>ОкончаниеБлокировки, КонецДня(ОкончаниеБлокировки)));

    {Форма.УстановкаБлокировкиСоединений(79,122)}: Переменная не определена (ОкончаниеБлокировки)

    НастройкаПериода.УстановитьПериод(НачалоБлокировки, ?(ОкончаниеБлокировки = ‘0001-01-01’, ОкончаниеБлокировки, КонецДня(<<?>>ОкончаниеБлокировки)));

    {Форма.УстановкаБлокировкиСоединений(53,50)}: Переменная не определена (НачалоБлокировки)

    Если ЗначениеЗаполнено(ОкончаниеБлокировки) и <<?>>НачалоБлокировки > ОкончаниеБлокировки Тогда

    {Форма.УстановкаБлокировкиСоединений(79,36)}: Переменная не определена (НачалоБлокировки)

    НастройкаПериода.УстановитьПериод(<<?>>НачалоБлокировки, ?(ОкончаниеБлокировки = ‘0001-01-01’, ОкончаниеБлокировки, КонецДня(ОкончаниеБлокировки)));

    {Форма.УстановкаБлокировкиСоединений(71,2)}: Процедура или функция с указанным именем не определена (УстановитьБлокировку)

    <<?>>УстановитьБлокировку();

    Reply
  40. markers

    (39) УПс, скоро проверю, исправлю!

    Reply
  41. markers

    (39, 40) Да, действительно если ошибки и серьёзные (Надо больше тестить)… Я обновил файл (версия таже), в связи с невозможностью проверить в боевых условий, убедительная просьба, скачайте файл и проверьте! Заранее спасибо!

    Reply
  42. sergey_garin

    Плюсанул

    Reply
  43. ZERO_

    (38) Проверил! Красиво! 😉

    Reply
  44. markers

    (43)

    Блокировка соединений реально ставится или нет?

    Reply
  45. victorustas

    спасибо, нужная вещь, но есть одно «но», появляющееся при попытке выкинуть пользователя:

    {Обработка.АктивныеПользователи.Форма.Форма(237)}: Ошибка при вызове метода контекста (GetInfoBaseConnections): Произошла исключительная ситуация: Недостаточно прав пользователя на информационную базу ari2009sql

    что бы это могло значить?

    Reply
  46. markers

    (45) А пользователя выкидывает??? Если нет, то введённый логин/пароль не имеет прав администрирования (роль). Если нету прав администрирования, ничем помочь не могу, т.к. обработка использует механизмы 1С для выброса пользователей которые (и правильно) требуют прав администрирования.

    Reply
  47. victorustas

    (46) пользователя не выкидывает. Права администрирования есть

    Reply
  48. victorustas

    может ли проблема быть связана с тем, что у нас MS SQL 2005 Express?

    Reply
  49. markers

    (45, 47, 48)

    Да вряд-ли из-за БД…. к сожалению проверить не могу. Есть одна мысль, проверьте пожалуйста оригинальную обработку http://infostart.ru/projects/1836/ ….

    Заранее спасибо!

    Reply
  50. victorustas

    markers

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

    Reply
  51. markers

    (50) Бывает 🙂

    Reply
  52. WKBAPKA

    {Форма.Форма(237)}: Помилка при виклику методу контексту (GetInfoBaseConnections): Відбулася виняткова ситуація: Недостатньо прав користувача на інформаційну базу IBOX_FIN_SQL

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

    Reply
  53. markers

    (52) «против лома нет приёма» (с)пёр.

    Коль прав нет, ничего не сделаешь, это даже дело не в комментировании проверки на права в коде моём/автора оригинала, а в том что обработка делает вызовы методов сервера 1С который в случае отсутствия прав обламывается с такой вот, как Вы написали, ошибкой.

    За хорошие слова, спасибо!

    Reply
  54. SerG_121

    МолодеЦ! Я уже сам хотел переделывать обработку и наткнулся на твою! однозначно плюс++++

    Reply
  55. crazycat

    Лучше обойтись без реквизитов обработки «УстановитьБлокировкуСоединений», «ОкончаниеБлокировки» и т.д., а просто всегда проверять блокировку функцией ПолучитьБлокировкуУстановкиСоединений(), так лучше и надежнее, не надо каждый раз привязываться к этим реквизитам.

    Reply
  56. PRoman

    (53) Так а все же какие права необходимо дать пользователю на выполнение метода «GetInfoBaseConnections» ?

    Reply
  57. Confucius

    Стоит sql 2008 когда выкидываю юзера он на его сеансе пишет ощибку: Рассогласование транспорта интерфейса. И перезапустить или закрыть приложение. Полагаю что так не должно быть, но где копать почему так не пойму пока. Может кто с талкивался с такой ошибкой?

    Reply
  58. cleaner_it

    (57) это не ошибка, так и должно быть. Такое происходит при разрыве соединения с сервером приложений 1С

    Reply
  59. sound

    Мелочь, конечно, но

    В момент подсоединения пользователя, то есть когда программу уже запустили, но она еще запустилась 🙂 ругается на строчку:

    НовСтр.Пользователь = Соединение.Пользователь.Имя;

    Reply
  60. smok1986

    крутотень!!! спасибо!

    Reply
  61. smok1986

    Подскажите что за ошибка

    {Форма.Форма(224)}: Ошибка при вызове метода контекста (ConnectAgent): Произошла исключительная ситуация (V81.COMConnector.1): descr=Сервер недоступен (Не отвечает, завершается аварийно или порт занят другим приложением) line=512 file=.srcRemoteCreatorImpl.cpp

    Reply
  62. smok1986

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

    Reply
  63. tonger

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

    Очень полезная обработка

    Reply
  64. Attest

    Да за ради такой обработки не грех и коммент оставить! Спасибо!

    Reply
  65. AruslanM

    Спасибо,взял на вооружение.

    Reply
  66. wwizard

    А Вы уверены что ИБ работает под сервером?

    Что это означает. ИБ лежит на сервери, пользуемся ей через удаленый рабочий стол

    Reply
  67. mihanov

    Часто юзаю, вещь более удобная в использовании чем «консоль администрирования 1с…».

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

    Reply
  68. dimakaster

    Так и не удалось воспользоваться.

    При блокировке:

    ———————

    {Форма.УстановкаБлокировкиСоединений.Форма(50,7)}: Переменная не определена (УстановитьБлокировкуСоединений)

    Если <<?>>УстановитьБлокировкуСоединений Тогда

    {Форма.УстановкаБлокировкиСоединений.Форма(53,26)}: Переменная не определена (ОкончаниеБлокировки)

    Если ЗначениеЗаполнено(<<?>>ОкончаниеБлокировки) и НачалоБлокировки > ОкончаниеБлокировки Тогда

    {Форма.УстановкаБлокировкиСоединений.Форма(53,69)}: Переменная не определена (ОкончаниеБлокировки)

    Если ЗначениеЗаполнено(ОкончаниеБлокировки) и НачалоБлокировки > <<?>>ОкончаниеБлокировки Тогда

    {Форма.УстановкаБлокировкиСоединений.Форма(79,56)}: Переменная не определена (ОкончаниеБлокировки)

    НастройкаПериода.УстановитьПериод(НачалоБлокировки, ?(<<?>>ОкончаниеБлокировки = ‘0001-01-01’, ОкончаниеБлокировки, КонецДня(ОкончаниеБлокировки)));
    {Форма.УстановкаБлокировкиСоединений.Форма(79,92)}: Переменная не определена (ОкончаниеБлокировки)

    НастройкаПериода.УстановитьПериод(НачалоБлокировки, ?(ОкончаниеБлокировки = ‘0001-01-01’, <<?>>ОкончаниеБлокировки, КонецДня(ОкончаниеБлокировки)));

    {Форма.УстановкаБлокировкиСоединений.Форма(79,122)}: Переменная не определена (ОкончаниеБлокировки)

    НастройкаПериода.УстановитьПериод(НачалоБлокировки, ?(ОкончаниеБлокировки = ‘0001-01-01’, ОкончаниеБлокировки, КонецДня(<<?>>ОкончаниеБлокировки)));

    {Форма.УстановкаБлокировкиСоединений.Форма(53,50)}: Переменная не определена (НачалоБлокировки)

    Если ЗначениеЗаполнено(ОкончаниеБлокировки) и <<?>>НачалоБлокировки > ОкончаниеБлокировки Тогда

    {Форма.УстановкаБлокировкиСоединений.Форма(79,36)}: Переменная не определена (НачалоБлокировки)

    НастройкаПериода.УстановитьПериод(<<?>>НачалоБлокировки, ?(ОкончаниеБлокировки = ‘0001-01-01’, ОкончаниеБлокировки, КонецДня(ОкончаниеБлокировки)));

    {Форма.УстановкаБлокировкиСоединений.Форма(71,2)}: Процедура или функция с указанным именем не определена (УстановитьБлокировку)

    <<?>>УстановитьБлокировку();

    ———————

    При попытке Прервать соединение(любое):

    ———————

    {Форма.Форма.Форма(220)}: Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса: Недопустимая строка с указанием класса

    ———————

    Что я делаю не так?

    Reply
  69. ybeleckii

    проверено работает всё как в описании сообщения в терминалке не пашут нужная обработка убивать непослушных юзеров:)

    Reply
  70. olegtymko

    неплохая публикация) понравилось)

    Reply
  71. nobuta

    Полезная штука.

    Reply
  72. ZergKRSK

    На 8.2 пашет? Запустил, сообщения не отсылает. Дальше даже смотреть не стал.

    Reply

Leave a Comment

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