|
![]() |
#1 |
Участник
|
![]() Цитата:
Сообщение от sukhanchik
![]() Если грубо - то модуль - это набор исходных текстов методов класса (в понятии АХ), вынесеных в один общий текст. При этом - несвязанных между собой, без наследования. Модули бывают при форме и глобальные (т.е. с процедурами/функциями, доступными отовсюду). Собственно - модули эмм... это и есть весь код 1Са (все остальное - это дизайн).
У меня знания остались еще с 7.7. Поправьте меня - если что изменилось плиз... ![]() По сравнению с семеркой, восьмерка научилась многому, но до Аксапты не дотягивает (с 2005 года работаю с MS Dynamics Ax 3 и 4), это мое мнение как разработчика относительно инструмента разрабтчика, не имею в виду различные доработанные конфигурации для 1С, в которых бухгалтерский учет и налоговый (для РФ) реализован лучше. В данный момент плотно работаю с 1с 8.1 Управление торговлей и ЗУП, сейчас в 1С нет такой большой ямы с кучей несвязанного кода, глобальный модуль, как это было в семерке, есть УЗЕЛ в МЕТАДАННЫХ называемый Общие модули. Там все процедуры и функции сгруппированы по назначению (см. рисунок http://files.mail.ru/5TSULP?t=1 ). Как пример, функции и процедуры работы с диалогом вынесены в один модуль "Работа с Диалогом", "РаботаСФайлами" и т.д.Это очень удобно с точки зрения разработчика. Вызов этих процедур и функций происходит автоматически, после того как в коде пишешь "РаботаСДиалогом." и ставишь точку выходят все доступные функции и процедуры для этого модуля. Чем то похоже на Аксапту с ее методами доступными для класса. У модуля есть возможность установки где выполнять код на сервере или на клиенте (есть свои ограничения, но это не важно), опять же аналогия на АОС. Ввели такой термин как подсистема, с возможностью устанавливать у каждого объекта конфигурации признак какой подсистеме он принадлежит (Денежные Средства, Налоговый учет и т.д.). Очень удобно работать с регистрами сведений (теперь нет объекта периодический, а есть периодический регистр сведений) и накоплений ("НДСсАвансов", "РеализацияУслуг" и т.д.), аналогия на кубы OLAP (в нужных Измерениях и по нужным ресурсам хранятся сведения которые создаются так называемыми регистраторами, документами), с помощью отборов инфа быстро сортируется. Улучшили возможность работы с таблицой значений (многомерный массив), как пример, для поиска нужных строк, достаточно передать в новый тип данных структура (опять же аналогия с аксаптой) нужные значения для колонок и массив отбирает нужные значения. X++: = ("Отметка, НомерЗаказа");
. = ;
. = .;
= .();
__________________
Denkt dran, dass jeder eurer Schritte auch durch die unsichtbare Welt fuehrt, und tut ihn so, dass ihr ihn bestehen koennt. Последний раз редактировалось Hans; 01.12.2009 в 11:04. |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
![]() |
#2 |
Участник
|
Пример Hansa записывается еще короче:
X++: = .( ("Отметка, НомерЗаказа",,)); Чего нет в 1С, но и не может быть в силу ее объектных особенностей. Update recordset с SQL-синтаксисом. В 1С удобная фишка разыменования запросов. Запрос X++: Select Z.. From . as Z Также язык запросов 1С имеет интересное расширение Итоги (Total), Эта конструкция позволяет, сохранив первоначальный текст запроса, автоматически добавлять в результат итоги, посчитанные по заданным группировкам. Причем результат можно тут же выгрузить в дерево, узлами которого будут описанные итоги. |
|
![]() |
#3 |
Участник
|
Цитата:
Эта "удобная фикша" приводит к тому, что на запрос одной таблицы (справочника, регистра), платформа 1С может автоматически построить очень сложный запрос с кучей join'ов. А если запросить две таблицы, то легко можно получить запрос с несколькими десятками таблиц. И прощай всякая оптимизация. Хотя бы потому, что управлять или отключать такое разыменование невозможно. А, например, MS SQL перестает выполнять оптимизию запроса, если в нем указано больше 8 таблиц. Ни в коем случае! Цитата:
Сообщение от Сисой
![]() Также язык запросов 1С имеет интересное расширение Итоги (Total),
Эта конструкция позволяет, сохранив первоначальный текст запроса, автоматически добавлять в результат итоги, посчитанные по заданным группировкам. Причем результат можно тут же выгрузить в дерево, узлами которого будут описанные итоги. ![]() |
|
|
За это сообщение автора поблагодарили: Logger (6). |
![]() |
#4 |
Участник
|
Mazzy, ты отрицаешь очевидное. В 1С думающий программист точно так же, как и в стандартном SQL, построит запрос без разыменования, используя только inner и outer join. Более того, на этом настаивают специалисты УЦ 1С. Здесь вопрос риторический: а всегда ли нужно ставить оптимизацию по скорости запросов во главу угла, игнорируя качество работы программиста? Всегда ли нужно получать реквизиты по связи запросом, или можно написать:
X++: =..; Ответ в каждом конкретном случае разный. На курсах в УЦ 1С специалистов знакомят с правилами хорошего тона и оптимизацией кода по скорости. Но если я пишу небольшую сервисную обработку, для которой время исполнения некритично, я буду использовать "фишки 1С" даже в ущерб производительности. Чтобы через год проще было понять и модифицировать код. Чего точно нет в 1С, так это возможности использовать хинты в запросах. Тоже ведь палка о двух концах... |
|
![]() |
#5 |
Участник
|
Цитата:
![]() 1. Большинство запросов в типовых конфах УЖЕ написано с разыменованием ![]() 2. Даже если не делать разыменование в тексте запроса, а обратиться к "Запрос.Контрагент.ПолноеНаименование", то платформа 1С все равно сделает разыменование (скорее всего отдельным запросом). Давай поговорим о думающих программистах, когда типовые будут УЖЕ написаны таковыми. Сейчас думающим программистам приходится либо снимать с поддержки и править код по самые помидорки, либо махнуть рукой. Цитата:
![]() А теперь выясняется, что какие-то специалисты УЦ на чем-то настаивают. Так является ли преимуществом приведенный тобой пример с разыменованием? ![]() Это да. И не надо. По тем же соображениям. |
|
Теги |
1c, платформа, сравнение систем |
|
|