Модуль менеджера или статические методы класса?




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

    И не знаю , что скажут наши «гуру».

    Как начинающий скажу :

    Статья хорошо написана. Кратко , точно, изящно.

    Reply ↓
  2. zfilin

    Спасибо.

    Reply ↓
  3. leosoft

    Полезная статья, спасибо! Пишите еще! 🙂

    Reply ↓
  4. mirco

    Спасибо, хорошо описан материал.

    Reply ↓
  5. script

    Молодец ❗

    Reply ↓
  6. rasswet

    для полного завершения не хватает примера, как проверить на заполненность реквизит такой-то.

    Reply ↓
  7. CheBurator

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

    — атата!

    .

    лично мне кажется, что разобраться в логике работы или что-нибудь найти — в 8-ке будет посложнее… так что наезды на 7.7-ые подходы — совершенно излишни..

    Reply ↓
  8. zfilin

    (6) На самом деле в прилагаемом файле проверяются реквизиты, просто я не стал об этом упоминать в статье, чтобы оставить в ней только главное (на мой взгляд).

    Reply ↓
  9. Ish_2

    (7) По-человечески понятно.

    Что только не придумаешь , чтобы самооправдать непереход на 8.

    Reply ↓
  10. zfilin

    (7) Все субъективно, на самом деле. Я совсем не против того, что можно очень упорядочено и организовано вести глобальный модуль 7.7, комментировать, может быть писать сопровождающие спецификации и тогда любые восьмерки становятся слишком громоздкими и неудобными по сравнению с простой 7.7

    Но мне почему-то чаще встречаются конфигурации «закрученные» настолько, что их просто неудобно читать, реже такие, что и логика начинает теряться в нагромождениях функций. Что очень печально.

    Reply ↓
  11. CheBurator

    (9) не надо гнать волну… 😉 8-ке — свое место, 7-ке — свое… Переход на 8-ку должен быть обоснован, а если необходимости нет — то на нет и суда нет.. сижу пока что потихоньку 8-ку осваиваю…

    Reply ↓
  12. zfilin

    (9) =(

    Reply ↓
  13. CheBurator

    (10) да, конечно…

    Reply ↓
  14. zfilin

    (7) (10) Не-не-не, я совсем не против, что в 8-ке тоже можно ТАКОГО сделать, что просто ужас.

    Reply ↓
  15. coach

    В 8.2 МОЖНО обращаться к экспортным методам объекта, не записывая его. Даже из модуля формы.

    См. функцию глобального контекста ДанныеФормыВЗначение().

    Reply ↓
  16. zfilin

    (15) Спасибо, действительно можно.

    А в ваших видеоуроках (во всяком случае в начале, 12-я часть 1-го бонуса) говорится, что нельзя.

    Статью поправлю.

    Reply ↓
  17. coach

    (16) Да, сейчас прослушал видео-урок, действительно его нужно расширить.

    Эти видео-уроки писались достаточно давно, и сейчас требуют переработки.

    Поставил замечание в туду 🙂

    Reply ↓
  18. Rusmus

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

    Reply ↓
  19. Трактор

    (17)

    Поставил замечание в туду

    Не в туду, а в сюду.

    Reply ↓
  20. Асисяй

    (19)

    Не в туду, а в сюду.

    В туду значит «в TODO»

    Reply ↓
  21. akama2001

    спОбязателньыеРеквизиты = Документы.Заказ.ПолучитьСписокОбязательныхРеквизитов(Объект.ВидЗаказа);

    вот это жесть написана!!! Объект = Это же заказ!!! т.е. объект уже создан зачем нужно вызывать статический метод класса и передавать туда экземпляр класса то бишь объект…

    Reply ↓
  22. zfilin

    (21) Да, не совсем удачный пример. На самом деле бывает же, что вид заказа есть, а объекта нет.

    Reply ↓
  23. i132

    В таком модуле можно написать погашение заказа несколькими документами, например для заказа: отмена заказа или накладная (или в наборе записей, если регистр один)

    Reply ↓
  24. a-novoselov

    Модуль менеджера объекта (только платформа 8.2)

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

    http://www.lessons1c.ru/articles/55-moduly82.html

    можете по поводу обработки выбора что-то пояснить?

    Reply ↓
  25. zfilin

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

    Почитайте в синтакс-помощнике, там толково написано.

    Reply ↓
  26. naf2000

    Нашел единственное отличие методов модуля менеджера от статических:

    В методе объекта можно просто по имени вызывать такой статический метод (без упоминания самого класса): Печать(Чтото);

    Для метода менеджера все таки надо написать побольше: Документы.ЗаказПокупателя.Печать(Чтото);

    И да: даешь модуль ссылки!

    Reply ↓
  27. dandrontiy
    Reply ↓
  28. zfilin

    Спасибо, читал эту публикацию и даже сам не ее ссылался. =)

    Reply ↓
  29. Sunhare

    Спасибо, написано доходчиво )

    Reply ↓
  30. AlexO

    (27) dandrontiy,

    ПО сначала Sun, а потом и IBM

    и много он там ПРИКЛАДНЫХ приложений написал?

    Другой крупный критик ООП — это известный специалист по программированию — Александр Степанов, который работая в Bell Labs участвовал в создании C++ вместе c Бьерном Страуструпом, а впоследствии, уже по приглашению в HP Labs, написал Standard Template Library (STL).

    Т.е. хаял то, что впервые ввели в С++ — объекты и классы? А потом, продолжая хаять, еще и учавствовал в создании библиотек классов?? Он кем там работал — уборщицей? И так же что-ли шипел вслед разработчикам про их «дурацкий ООП, грязь от него одна да песок»? :))

    Все-таки, более вероятно, что в статье многое переврано.

    Ричард Столлман:

    можно считать C# в .NET 3.5 с более чем 50,000 реализованных классов „венцом эволюции“. Добавить в следующей версии .NET ещё миллион классов — что может быть более правильным и более вожделенным, с точки зрения ООП-программиста?

    И где Столлман нес такую чепуху? И где Степанов нес подорбную ахинею про программирование и математику? Что-то ссылки дают только более полный текст этой самой статьи, которая, судя по дальнейшим фразам «парни, не путайте генеалогию с гинекологией!», «Ни в каком моделировании наследования не существует — ни в электронике, ни в бухгалтерии, ни в политике, ни где бы то ни было еще.» написана отнюдь не для разбора проблем, а для какого-то околокомпьютерного журнала для подростков.

    Для незнающих, куда причислили и Степанова — про математику:

    Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств…. Т.е. в математике вы заканчиваете аксиомой

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

    Да и сам автор, — если это был действительно он, — пытается оправдаться за безграмоность «отсутствием времени» и «в статье не ставились цели что-то доказать», а только «эта статья – чисто исторический обзор двух известных выступлений “Почему ООП провалилась“ и “Почему ООП не провалилась“.

    неразберихи в ООП так популярен рефакторинг

    — рефакторинг как никогда популярен у 1с, которая ни разу ни ООП. Но, конечно же, это говорит только о том, что рефакторинг — это неотъемлемая часть ООП… Вот оно, доказательство (нет, не аксимоам — у нас же аксиома идет после доказательства): 1С — это 100%-ое ООП! 🙂

    Reply ↓
  31. AlexO
    Reply ↓
  32. AlexO

    zfilin, рад, что не спите в столь позднее время, а следите за своими статьями 🙂

    Reply ↓
  33. AlexO

    (21) akama2001,

    спОбязателньыеРеквизиты = Документы.Заказ.ПолучитьСписокОбязательныхРеквизитов(Объект.ВидЗаказа);

    вот это жесть написана!!! Объект = Это же заказ!!! т.е. объект уже создан зачем нужно вызывать статический метод класса

    Т.е. вас смущает, что в «объект» передается сам же объект (часть его)? А меня вот не смущает — т.к. я знаю, где ООП, а где 1С, где объекты ООП, и «объекты» 1С 🙂

    и передавать туда экземпляр класса то бишь объект…

    ну вот, о чем и говорил — уже нашли и классы, и ООП… и вообще, «курят» 1с не как я — затягиваются :))

    Reply ↓
  34. AlexO

    (24) a-novoselov,

    Вызов экспортных методов менеджера не требует создания самого объекта.

    только вот что-то нет примеров применения модуля менеджера не из самого — уже созданного, — объекта для получения доступа к данным формы/процедуре модуля этого же объекта, а вызова функции в этом «модуле менеджера» другого, не текущего объекта.

    Везде требуется — передача «указателя» (см. пост (31) ) на «объект». Который должен быть создан для получения этого «указателя».

    Т.е. требует создания, требует.

    И никак иначе.

    Посмотрел внимательно этот «урок» — что-то дурной он какой-то. В частности, по модулю менеджера:

    Основное предназначение данного модуля – это переопределение стандартного события выбора, которое возникает в момент ввода по строке и расширение функционала менеджера

    Ввод по строке в 8.2 — вообще вещь неуправляемая, и каким боком тут модуль менеджера — непонятно.

    Модуль компилируется на стороне сервера.

    это верно. Собственно, это определется его (модулем менеджера) предназначением — исполняться на сервере, и быть привязанным к объекту, чтобы «светить» процедурами вовне.

    А вот про модуль команды не указано, что он компилируется — и виден, — только на клиенте и исполняется только по «кнопке»-владельцу, и больше ниоткуда.

    Reply ↓
  35. zfilin

    (33) AlexO, Спасибо за интерес к статье, но вот прямо сейчас я, право слово, не готов даже прочесть ваш весьма развернутый комментарий. Поддался минутной слабости и шлепнул коньячку. Боюсь, что сейчас вам «наотвечаю». =)

    Но непременно посмотрю и отвечу по-делу. Наверняка вы неравнодушны к вопросу ООП в 1С, раз так подробно изложили своем мнение, а значит в какой-то степени мы с вами единомышленники, даже если и оппоненты.

    Reply ↓
  36. AlexO

    (18) Rusmus,

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

    что вы пониматете под «модуль ссылки»? какие функции он должен нести?

    А где вы вообще в 1С8 нашли хоть какой-то контекст объектов — форм, документов, табличных частей? А тем более — в полном запрете в 8.2 использования какого-либо «контекста» объектов при разделении на Клиента и Сервер, требующего принудительной передачи «туда-сюда» данных.

    Если же вы хотите получать ДАННЫЕ ТЧ, вкладки, поля и т.д., то в 8.2 ССЫЛКА на «объект» сама по себе имеет отдаленное отношение к данные этого объекта. Т.к. — см. выше: ссылку-то с динамической формы на сервере мы видим, а вот данные — нет.

    И, боюсь, у 1С в этом случае (при уже созданной кошмарной системе УФ 8.3) останется только один вариант: делать модуль ТЧ, модуль ПоляВвода, модуль Вкладки…

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

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

    Reply ↓
  37. AlexO

    (35)

    значит в какой-то степени мы с вами единомышленники, даже если и оппоненты.

    я только за то, чтобы вы, как человек, знакомый с ООП, не подменяли термины, следуя «1С-стайл», и путались сами 🙂

    Reply ↓
  38. AlexO

    Еще про «ООП в 1С» — я вот тут развернуто про «объекты 1С» написал:

    Запутался в менеджерах и терминологии 1с

    Reply ↓
  39. hogik

    (31)

    «… вопрос: ЗАЧЕМ и для кого эта система придумана? «©

    AlexO.

    1) Для кого.

    Для программистов, которые рассматривают «любую систему сугубо под углом RAD»(с).

    2) Зачем.

    Думаю, надо для начала ответить на вопрос — «почему?».

    «…классическая реляционная модель не имеет готовых средств для поддержки иерархии данных и ее реализация всегда требует кропотливой работы.»(с) [ http://v8.1c.ru/metod/architecture/ ]

    И при этом разработчики 1С-а путают модель СУБД с её ЯМД. 😉

    На мой взгляд, вся суть «развития» 1С-продуктов — это попытка приспособить SQL для задач предметной области, где требуется «иерархия данных».

    Reply ↓
  40. AlexO

    (39) hogik,

    под углом RAD

    про RAD — вот здесь я уже написал свое мнение:

    «RAD — это среда быстрой разработки приложений. ПРИЛОЖЕНИЙ. Любых. Универсальных и не очень. Простых и сложных. Гибких и дубовых.

    А не тюнинг 1с-базы под нужды пользователя с параллельным изучением текущих взглядов на мир Бориса Нуралиева.»

    Для программистов

    для каких программистов? для кодеров — может быть. Для программистов — что-то не вижу ни смысла, ни цели. Одни палки в колеса.

    Мелкие исправления-поблажки с 8.2.14 — не перетягивают болото УФ.

    Reply ↓
  41. AlexO
    Reply ↓
  42. hogik

    (40)(41)

    … (AlexO).

    Извините, давая ссылку на статью, я не предполагал её чтения Вами.

    Просто, обязан был дать ссылку на первоисточник. 😉

    А, вот, на цитате про RAD забыл дать ссылку. 😉

    Reply ↓
  43. AlexO

    (42) hogik,

    да я еще в 2003, когда там стали появляться «базовые» статейки — забросил с их чтением: ничего путного и практичсекого, только время теряешь 🙂

    Reply ↓
  44. hogik

    (41)(43)

    … (AlexO).

    Вы действительно считаете, что попытка «что-то путное приспособить»(с) в лице SQL — не является корнем (причиной), критикуемых Вами, «решений» от 1С-а?

    Reply ↓
  45. AlexO

    (44) hogik,

    ну давайте не будем опять 🙂 …

    я уже лет пять назад устал доказывать — курица или яйцо, т.е. кто на что влияет — SQL, который сам по себе самодостаточная СУБД, но возможности которой используюся 1С процентов на 10. Или 1С, которая вдруг взяла — и выбрала MS SQL для хранения своих таблиц.

    Как один их «дешевых» из платных. И не таких сложных.

    Reply ↓
  46. hogik

    (45)

    «ну давайте не будем опять 🙂 … я уже лет пять назад устал доказывать»(с)

    … (AlexO).

    Лично, мне — Вы ничего не доказывали. 🙂

    Надеюсь в фразе «SQL, который сам по себе самодостаточная СУБД,»(с) Вы описались.

    Я Вас не спрашивал почему 1С-ы выбрали ту или иную СУБД.

    Я Вас спрашивал про SQL, как — ЯМД. И его «особенности» при работе с «иерархическими данными». На коих стоит вся наша около-1С-овая деятельность. Которую Вы охарактеризовали как: «ничего нет из реального мира хранения данных, а есть каша из ссылок и вообще свалка и бардак.»(с).

    Reply ↓
  47. a-novoselov

    (34)

    Предопределенная процедура из модуля менеджера объекта:

    ОбработкаПолученияДанныхВыбора (ChoiceDataGetProcessing)

    Синтаксис:

    ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)

    Описание:

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

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

    Далее.

    Насчет обращения к методам объекта без создания самого объекта. В типовых конфигурациях, например, уже давно процедуры печати перенесены из модуля объекта в модуль менеджера. Зачем? Поясню. У нас есть ссылка на документ (скажем ОрдерСсылка), мы хотим его напечатать. Если экспортная процедура печати расположена в модуле объекта, то для печати документа нам нужно будет вызвать ее следующим образом: ОрдерСсылка.ПолучитьОбъект.Печать();

    Если же процедура расположена в модуле менеджера, то нам ее нужно будет вызывать как: Документы.Ордер.Печать(ОрдерСсылка);

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

    Reply ↓
  48. AlexO

    (46) hogik,

    И его «особенности» при работе с «иерархическими данными».

    1С вольна сама разрабатывать представление как угодно. И выбран далеко не самый лучший вариант — в плане обработки и целостности данных.

    Лично, мне — Вы ничего не доказывали. 🙂

    эти споры поднимаются постоянно 🙂

    Особенно — когда новое поколение студентов подкатывает.

    Которую Вы охарактеризовали как:

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

    SQL-то к этой 1с-ой кухне какое отношение имеет? Хорошо, раз не понимаете — другими словами, что мешало 1С выбрать более «подходящую» СУБД? Или более качественно проработать свою систему представления и хранения? Чтобы она как можно ближе ложилась на реляционные таблицы SQL? Или вообще — разработать такой 1с-сервер, который бы дублировал функции СУБД по записи, хранению, контролю, оптимизации, извлечении, анализу записей данных?

    Т.е. придумали фигню, кое-как всунули ящик, фигня там скомканная и неоптимизированная, но виноват — ящик, в который положили?

    Ну право слово, Вы уж сами-то подумайте, о чем мы тут можем спорить?

    А то все «Я Вас спрашивал про SQL, как — ЯМД», «…в лице SQL — не является корнем…», слова всякие умные 🙂

    Reply ↓
  49. AlexO

    (47) a-novoselov,

    Насчет обращения к методам объекта без создания самого объекта.

    вот именно, обращения к методам объекта БЕЗ ПЕРЕДАЧИ ИНФО ОБ УЖЕ СОЗДАННОМ ОБЪЕКТЕ.

    Приходится писать крупно, потому что вы, как тру-1сник, уводите меня в сторону 🙂

    Причем тут МодульМенеджера и печать, когда туда (в начале обработки печати) передается этот самый созданный объект, и — вау! — вы вызываете МодульМенеджера обрабатываемого в данный момент объекта, данные о котором в полном объеме (для УФ 8.2) присутствуют и кочуют из одного общего модуля в другой, пока не дойдет это все до МодульМенеджер объекта, данные из которого и выводится на печать.

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

    И обсудим.

    И почему же ввод по строке вещь неуправляемая?

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

    А также — возможность его отключить 🙂

    Или что вы понимаете под «ввод по строке»?

    Reply ↓
  50. zfilin

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

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

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

    Reply ↓
  51. AlexO

    (50)

    какую статью по «ООП в 1С» вы хотите? «Отсутствие ООП в 1С»?

    уже была масса тем, где это обсуждалось — в том числе, в последних и с вами. Берете оттуда примеры «почему ООП» или «почему не ООП» — и статья готова 🙂

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

    Reply ↓
  52. a-novoselov

    (50) Либо очень тонкий тролль, либо неадекват… В любом случае дискуссия не будет продуктивной.

    Reply ↓
  53. AlexO

    (50)

    мне сложно понять

    я не понимаю, почему вам сложно — я всегда пытаюсь найти и вытащить конкретные моменты несоответствия 1с парадигмам ООП.

    А не обсуждать агитки 1с.

    Но вы не хотите обсудить конкретные вопросы (например, почему «если такая ООП — такой бардак в Запутался я в терминологии 1С), а пытаетесь несуществующие, — на мой взгляд, — декларативные функции 1С обсудить в рамках «генерального сражения» — в одном месте, всеми силами, основные армии, статья противников — против агиток 1С 🙂

    Reply ↓
  54. AlexO

    (52) a-novoselov,

    все дискуссии надменных «тру1с-ников» без агиток 1с-а сводятся к одному:

    «сам вы неадекват».

    Неужели ничего ни за собой нет, ни в голове, что без 1с-ового вранья — ничего больше нельзя сказать?!

    Reply ↓
  55. AlexO

    Я вот — благодаря вашей «объектной модели 1С», которую вы так рьяно защищете без каких-либо доказательств, — даже не могу программно поменять тип данных у реквизита или ПоляВвода, связанного с ним, потому как для уже созданного «объекта» свойство резко стало «ТолькоДляЧтения».

    Ну, кто готов обсудить данную конкретную проблему «ООП в 1С»- почему это так, что делать, и где тут «объекты ООП»???

    Ну, кому это интересно? Или агитки интереснее читать, а потом сыпать «да вы тролль, да неадекват, да наша 1с самая-пресамая!»??

    Но только деградация вокруг да ветер пустоты…

    Reply ↓
  56. a-novoselov

    (54) С 1С работаю около трех лет, до этого C++, PL/SQL, Oracle, базы данных на 10 000 пользователей. Согласен, что 1С не самая лучшая система, 100 пользователей кое-как тянет с жутким скрипом. Но как может адекватный человек задать вопрос «что вы понимаете под «ввод по строке»?»… Как ни странно, понимаю «Ввод по строке», но отвечать на такие вопросы бессмысленно.

    Reply ↓
  57. zfilin

    (52) a-novoselov, Угу. Не кормите, не надо.

    Reply ↓
  58. AlexO

    (56) a-novoselov,

    Как ни странно, понимаю «Ввод по строке»,

    ответ настоящего 1с-ника. Гордитесь.

    (57)

    Угу. Не кормите, не надо.

    а что еще может предложить тру-1сник? еще и a-novoselov подскажите в черный список занести — верно, я сильно буду переживать 🙂

    Reply ↓
  59. AlexO

    (56) a-novoselov,

    до этого C++, PL/SQL, Oracle, базы данных на 10 000 пользователей.

    значит, впрок не пошло. Мимо пролетело.

    А меня — так вот уже достает, что ни новый проект на 1с — так куча ограничений, и часами придумывать новые и новые пути обхода 1с-ного кошмара.

    А потом на форумах 1с — видеть решения «да все нормально», «да все хорошо», «ООП в 1С!» и «наши в футбол выйграют?»

    Reply ↓
  60. hogik

    (48)

    «Ну право слово, Вы уж сами-то подумайте, о чем мы тут можем спорить?»

    … (AlexO).

    Я, вроде, с Вами и не спорю. 😉

    Пытаюсь Вам подсунуть информацию для размышления на тему: «ЗАЧЕМ ВСЯ ЭТА ЗАТЕЯ?!»(с). Намекнул Вам о причине… Действительно — «виноват — ящик»(с).

    Но, чувствую после такого бреда с Вашей стороны: «на реляционные таблицы SQL»(с) разговаривать с Вами бесполезно. Т.е. если «студент» ставить знак равенство между моделью СУБД и ЯМД, то ему следует повторить школьную программу. 🙂

    Reply ↓
  61. AlexO

    (60) hogik,

    знак равенство между моделью СУБД и ЯМД

    где СУБД и где SQL в 1С?

    Из чего состоит трехзвенная архитектура 1с?

    Как они взаимодействуют?

    Я-то давно знаю, что пробелы в заниях 1с-ников — массовые и зияющие. Что в 1с, что в СУБД.

    Не обижайтесь, а лучше разберитесь, и разгребите кашу по поводу СУБД и 1С 🙂

    Reply ↓
  62. AlexO

    (60) hogik,

    и забудьте вы про свой «ЯМД» — выдрав ЯМД из СУБД, вы обозвали так весь SQL, запутались, и наворачиваете на это новые навороты 🙂

    Reply ↓
  63. hogik

    (61)(62)

    … (AlexO).

    У меня такое впечатление, что Вы все мои высказывания пропускаете через «сито 1С» и свое понимание «объектности» как только методологию программирования.

    Для справки:

    1) Я не использую и не собираюсь использовать продукты 1С.

    2) Использую СУБД и варюсь в этой сфере с начала 70-х годов.

    Еще раз повторяю специально для Вас:

    «вся суть «развития» 1С-продуктов — это попытка приспособить SQL для задач предметной области, где требуется «иерархия данных».

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

    Reply ↓
  64. saiten

    (49)

    Причем тут МодульМенеджера и печать, когда туда (в начале обработки печати) передается этот самый созданный объект, и — вау! — вы вызываете МодульМенеджера обрабатываемого в данный момент объекта, данные о котором в полном объеме (для УФ 8.2) присутствуют и кочуют из одного общего модуля в другой, пока не дойдет это все до МодульМенеджер объекта, данные из которого и выводится на печать.

    В (47), в общем-то, всё достаточно подробно расписано. Без создания объекта — чтобы не тащить в память из БД все реквизиты и таблицы объекта: в функцию модуля передаётся ссылка, по ссылке запросом берём только то, что нужно для печати. И никакого тягания объекта из модуля в модуль. А почему в модуле менеджера, а не в общем модуле — об этом как раз публикация.

    Кстати, обвинять эту статью в притягивании за уши парадигм ООП к 1С — это, даже не знаю, паранойя что ли… Скорее, это демонстрация людям, знакомым с ООП, концепции использования модуля менеджера через аналогию со статическими методами класса. Аналогию, кстати, весьма удачную, на мой взгляд: по сути, прочитал название — и сразу всё понятно.

    Reply ↓
  65. saiten

    И, да простит меня автор за оффтоп, но заинтересовало вот это: (48)

    1С вольна сама разрабатывать представление как угодно. И выбран далеко не самый лучший вариант — в плане обработки и целостности данных.

    Раз выбран не лучший вариант — значит вы знаете другие? Не поделитесь знаниями, хотя бы в виде ссылок? Это не совсем праздный интерес: когда 1С стремительно начала хоронить себя в нише автоматизации торговли (УТ11, РТ2, заявление о прекращении поддержки УТ10) появилась шальная мысль — создать своё, и пока 1С не очухается и выйдет из комы пометь какой-никакой профит. Собственно, идея заглохла как только начали продумывать интерфейс библиотеки управления данными: получалось, почти один в один, как 1С:77. Что заставило крепко задуматься: то ли 1С настолько основательно разъел мозг, то ли по-другому действительно никак.

    Reply ↓
  66. zfilin

    (64) saiten, Спасибо большое, как вы ловко всё пояснили. Я про свою статью лучше бы не сказал. =)

    Reply ↓
  67. hogik

    (48)

    … (AlexO).

    Очень сильно 😉 присоединяюсь к вопросу из (65) сообщения, в части:

    «…вы знаете другие? Не поделитесь знаниями, …?»(с)

    P.S. И я приношу извинения автору темы «за оффтоп»(с).

    Reply ↓
  68. AlexO

    (68) hogik,

    (65) saiten,

    Раз выбран не лучший вариант — значит вы знаете другие?

    Мне страшно становится — если вы не знаете про:

    MS SQL, немного объектный реляционный ORACLE…

    Reply ↓
  69. yuraos

    Такс опять склоки насчет того нужен ООП или нет.

    Уже как то скучно … ну не нравится ООП 1с-овцам

    и не когда они его не реализуют в платформе!!!

    Хотя могли бы это и сделать…

    Для меня довольно очевидным, что сама платформа 1С

    была «списана» с MS Visual Basic for Application

    что рулит приложениями Оффиса.

    А там поддержка классов была с самого начала.

    Хочешь — пользуйся, хочешь — нет

    Reply ↓
  70. yuraos

    (70)

    Другой вопросик меня интерисует:

    Модуль объекта и Модуль менеджера объекта

    фактичкски являются средством инкапсуляции и

    повторного использования функционала, связанного с объектом (или классом объектов).

    Покрайней мере я привык его так использовать … в обычном приложении.

    Но вот в управляемом приложении на платформе <= 8.2.14

    столкнулся с такой бедой:

    На стороне клиента не доступны

    (как КЛАСС — извинят меня противники ООП)

    ни сам Объект ни его Менеджер

    Соответственно не доступен и функционал, инкапсулированный в них.

    Изменилось ли что-нибудь по этой части в >= 8.2.15 и 8.3.х ???

    Reply ↓
  71. AlexO

    (71) yuraos,

    ни сам Объектни его Менеджер

    В УФ они никогда и не были доступны. Только контекст самой формы, который надо передавать на сервер, там обрабатывать, и возвращать обратно в форму, т.к. контекст формы — недоступен напрямую на сервере.

    Ни в 8.2.14, ни в каких других 8.2. Ни в 8.3.

    Это — управляемое приложение, поделка от 1С, в которой ценности — на грош, зато понтов и мусора — на грузовик.

    А в толстом клиенте все так и осталось — объекты доступны в контексте формы.

    Только клтиента нет как такового.

    А в УФ и клиента не сделали нормального, и перлопатили и извратили все так, что все приходится делать через одно место сервер на клиента, и с клиента — на сервер.

    Reply ↓
  72. AlexO

    (70) yuraos,

    что сама платформа 1С

    была «списана» с MS Visual Basic for Application

    и близко не стояла.

    То, что вам кажется, будто АВТОМАТИЗАЦИЯ (rapid app dev) в чем-то похожа — то и тут ничего подобного: MS идет от задач программирования (если пишет СРЕДСТВО ПРОГРАММИРОВАНИЯ), а 1С — от содержания плевка, упавшего с потолка, и оставленного там неизвестно кем неизвестно когда.

    Reply ↓
  73. yuraos

    (72)(73) AlexO,

    — УРА! МЫ НАУЧИЛИСЬ ВЫРЕЗАТЬ ГЛАНДЫ!!!

    — ФУУУУУУ!!!

    — Через ЖЖЖЖЖЖЖЖЖЖЖЖЖ!!!!

    — УУУУУУУ!!!

    —

    Нелюбовь к ООП, переросшая уже на клиент-серверный уровнь !!!

    Reply ↓
  74. yuraos

    (72) AlexO,

    самое забавное во всем этом клиент-серверном мракобесии,

    что не всегда для работы формы

    ей нужно обращаться

    к базе занных и следовательно к серверу.

    —

    на этот случай наверное в свойствах

    корня конфигурации добавили галку

    «Использовать обычные формы в управляемом приложении»

    Reply ↓
  75. Lacrimosa0000

    Обсуждение не менее интересное и познавательное, чем статья. Спасибо, уважаемые комментаторы.)

    Reply ↓
  76. yuraos

    (76) Lacrimosa0000, ага, пожалуста!

    —

    многие тут узнают, что это за зверь ООП

    …

    и что некоторые заслуженные товарищи ЕГО за что-то невзлюбили.

    Reply ↓
  77. Alex1Cnic

    Объясняется просто и понятно… ПЛЮССС

    Reply ↓
  78. awk

    А что такое ООП? ООП на PHP5 это эмуляция классов через модули. На JavaScript ООП реализовано через прототипы и классов там нет и в помине. В джаве, с++ и т.п. классы определены как синтаксис, но в двоичном коде отсутствуют.

    Так кто сказал, что ООП — это классы?

    ООП Это инкапсуляция, наследование (прототипирование) и полиморфизм.

    Как реализовать полиморфизм в 1С — я знаю. (Причем, спецификация на уровне платформы не поддерживается — ковыряйся программист)

    Как реализовать на 1С инкапсуляцию? Ответа — нет.

    Как реализовать на 1С наследование (прототипирование)? Ответа — нет. Тот что есть — крив.

    Reply ↓
  79. tindir

    Блин. статья интересна. теперь наверное во всех крупных решениях количество общих модулей уменьшится и все они уйдут в менеджеры,и УРА! опять переписывать все не типовые ВПФ и Отчеты! А тка идея очень хорошая и удобная. все методы для отдельных объектов будут только храниться в объекте (по идее должны)

    Reply ↓
  80. LexSeIch

    Мир этому дому! Статья интересная. Коротко и ясно.

    Reply ↓
  81. yuraos

    (80) tindir,

    все будет так хорошо и красиво только в обычном приложении

    …

    а в управляемом приложении не все так, как бы хотелось

    с учетом замечаний в (71)

    —

    сам недавно для совместимости с управляемыми извращениями

    часть функционала перетягивал из модуля объекта и модуля менеджера объекта

    в те самые общие модули

    Reply ↓
  82. sound

    Мне вот тоже кажется, что очень уж много тупизны (ну или неразберихи, сложностей, всего того, о чем так рьяно пишет в каментах AlexO) они для этих управляемых форм понаворотили. Еще не знаю, что окажется сложнее для разработчика: переход с 7-ки на 8-ку, или переход с обычных форм на управляемые.

    Вообще рассуждая на тему «Зачем они это сделали» на ум приходит две мысли:

    1) Или пока не доделали, и как обычно дали сырой инструмент.

    2) Или просто философия фирмы 1С направлена на какое-то запутывание чтоли, чтоб уж если ты специалист по 1С (не

    в смысле сдал их же тупой экзамен на спеца), то уж точно никто другой, кроме таких же «собратьев 1С», пришедший в «отрасль 1С» «из других языков и программ» не смог бы сходу разобраться в логике работы прикладного решения, и не смог бы «вот тут мне добавить колонку» или «слегка подправить отчетик» — дайте новичку разобраться с логикой работы оборотно-сальдовой ведомости в бухгалтерии или с регламентированным отчетом. И чтобы без этого спеца было НуНиКакНеОбойтись, а что, вполне себе и франчам нормальное обеспечение куска хлеба. То бишь, сводится все это к какой-то банальной наживе чтоли, хотя может и не очень удачное выражение. Нет, я не против того, что любой труд должен быть оплачен, но получается у 1С все как-то через одно место.

    По теме: статья, несмотря на всю критику 1С, в принципе, полезная 🙂

    Reply ↓
  83. zfilin

    (83) sound, А вы посмотрите видео с четвертой встречи клуба — http://club-1c.zfilin.org.ua/2013/03/blog-post.html

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

    Reply ↓
  84. sound

    (84) Не смог посмотреть это видео, что-то со звуком, не исключаю что глюки с моей стороны.

    Может быть в общую идею управляемые формы и вписываются органично, но вот в мой мозг однозначно нет :). Если же под «неприятными деталями» подразумевается постоянный «перегон» данных с клиента на сервер, и запутывание разработчика, то это имхо маразмом попахивает, хотели сделать просто и удобно, а получилось сложно и запутанно, зато органично. Ну не знаю, не знаю, время все рассудит =)

    Reply ↓
  85. zfilin

    (85) sound, Нет, перегон данных между клиентом и сервером это как раз одна из лучших фишек управляемых форм.

    Жаль, что со звуком не получилось, собственно, доклад изначально рассчитан на то, чтобы «уложить управляемые формы в голову разработчику». Это его главная тема.

    Reply ↓
  86. sound

    Прошу прощения у автора за оффтоп!

    (86) посмотрел таки видео, не до конца правда, досмотрел до 10-й минуты 3-й части, утомило: во-первых, качество видео плохое, не видно что там на доске. Во-вторых, без обид, доклад так себе: докладчик путается в терминологии, доклад не структурирован, логика очень плохо просматривается, может быть я, как человек закончивший физмат, предъявляю слишком высокие требования к бесплатному видео? :). В-третьих, пока не увидел каких-то практических доводов, одна теория, похожая, кстати, на какие-то агитки от фирмы 1С (выражаясь языком AlexO), чувствуется какая-то заинтересованность в том, чтобы все не ломали, не украли, и под УФ писали, и наверное только у вас все 1С-ное покупали 🙂

    Так что «уложить управляемые формы в голову разработчику», во всяком случае в мою голову, таким видео точно не удастся, ну либо я просто не разработчик вовсе, чего я собственно не исключаю 🙂

    Ну и в-четвертых, признаюсь честно, не слишком-то много я в принципе знаком с этими управляемыми формами, поэтому сильно спорить и доказывать свою правоту не стану. Но с другой стороны, говоря о типовых конфигурациях фирмы 1С, так сказать о венце творения, что-то не заметил я тех дико функциональных конфигураций, которые бы враз затмили собой все те типовые, которые написаны под обычные формы, как 8-ка не затмила 7-ку.

    Вот есть у меня типовой «Документооборот», по тупости начальства внедряли не сами, а услугами франчей, заплатили как обычно просто гигантскую сумму денег. «Документооборот» на управляемых формах, вот фигня фигней, других слов нету! И ладно бы он прям ЛЕТАЛ, а то ведь тупит, даже не так, ТУПИТ страшно. Может «тупить» от слова «типовой»? 🙂 Весь функционал свелся к переписке служебками «чтоб история была», кароче можно было просто почту нормальную сделать, или сделать гораздо функциональнее и чтоб летало на 1С 7.7.

    Да, наверно закупив еще сервачок на пару лямов все завертится, но что-то мне подсказывает что дело-то было не в бабине. Вот когда фирма 1С перепишет все типовые (или уже?) на УФ, и своим веским словом в одночасье перестанет обновлять типовые на обычных формах, как она обычно это делает (это бизнес, детка!), вот тогда я задумаюсь о серьезном изучении УФ, может заодно за это время жизнь изменится к лучшему 🙂

    Reply ↓
  87. zfilin

    (87) sound, Что ж, в любом случае желаю вам все-таки «разобраться и уложить», когда возникнет такая необходимость.

    Reply ↓
  88. yuraos

    (87) sound,


    Вот есть у меня типовой «Документооборот», по тупости начальства внедряли не сами, а услугами франчей, заплатили как обычно просто гигантскую сумму денег. «Документооборот» на управляемых формах, вот фигня фигней, других слов нету! И ладно бы он прям ЛЕТАЛ, а то ведь тупит, даже не так, ТУПИТ страшно.

    Это, я бы сказал, художественная правда жызни!

    Reply ↓
  89. yuraos

    (89)

    ЗЫ

    —

    А еще те, у кого «Документооборот» в клиент-серверном варианте работает

    (так сказать в родной для управляемого приложения обстановке)

    те наверное знают об ошибках времени исполнения,

    связанных с передачей мутабельных типов с клиента на сервер…

    Reply ↓
  90. yuraos

    (90)

    ЗЫ

    ЗЫ

    —

    таких ошибок по идее недолжно быть,

    если разработчики тестировали свою конфу для клиент-серверной базы!

    Reply ↓
  91. batlerrett

    Хорошая годная статья по практическому применению.

    Жаль что переросла в холивор на тему 1С — это плохо/хорошо.

    1С изначально придумана для решения конкретных проблем.

    Думаю размышления к какой области относится 1С, должны волновать «бородатых» теоретиков),

    а у нас конкретные задачи учета.

    Reply ↓
  92. vvirus

    Модуль Менеджера — мощьная идея.

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

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

    ЭлементПеречисления.метаданные().Получить(ЭлементПеречисления.метаданные().Индекс)).Комментарий;

    убрать функции в общих модулях и переложить их в модуль менеджера

    а в части иммитатора ООП

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

    Reply ↓
  93. talych

    Спасибо за статью. Всё расписано чётко. Насчет холивара, согласен что УФ в 1С через одно место. Вместо упрощения программирования получили нечто монстрообразное ((

    Reply ↓
  94. Патриот

    (0) +

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

    (93) vvirus,

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

    абсолютно согласен — у обработки есть свойства (реквизиты и экспортные переменные модуля объекта) и методы (экспортные процедуры и функции модуля объекта), есть конструктор экземпляра объекта

    ОбработкаОбъект = ВнешниеОбработки.Создать(«полный путь к файлу»);

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

    ОбработкаОбъект.Инициализировать(куча параметров);

    , где «Инициализировать» это заранее прописанный программистом метод обработки, выполняющий доконструирование объекта (первоначальную инициализацию, в зависимости от переданных параметров). А теперь вопрос, а почему только об обработках речь? Вышеописанные характеристики присущи даже формам объектов, не говоря уже о документах и справочниках. Форму можно создать, не создавая при этом объект, в ней есть всё те же импровизированные свойства методы и конструктор с деструктором. Кстати, если мы хотим нагрузить деструктор какими-то более сложными действиями, чем убийство объекта, то в можно как и в случае с методом «Инициализировать» написать метод «ДеИнициализировать». А в случае с формой так вообще можно использовать событие «ПриЗакрытии», если до этого было событие «ПриОткрытии».

    Reply ↓
  95. zfilin

    (95) Патриот, Спасибо.

    Reply ↓
  96. perepetulichka
    Но нужно помнить, что в 8.2 нельзя просто так обратиться к методам модуля объекта (без записаного объекта …

    То есть получается, что обращение совершенно нового незаписанного объекта к процедуре модуля объекта «ПередЗаписью» невозможно 🙂

    Основное назначение процедуры одной фразой отправлено в хлам.

    Reply ↓
  97. zfilin

    (97) Да, слово «записанного» в этой фразе можно убрать. Поскольку речь шла о доступе к модулю объекта извне (не из контекста самого объекта), то в этом смысле нужен какой-то существующий в базе объект (записанный).

    Однако, на самом деле не обязательно. Можно создать объект, держать его в памяти, обращаться к его методам модуля, а потом спокойно его обнулить не записывая в базу. Но объект все-равно нужен.

    Reply ↓

Leave a Comment

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