|
![]() |
#1 |
Участник
|
Сисой, всегда ли можно модифицировать объекты с сохранением поддержки? Я не разбираюсь в 1С, поэтому - что такое "код модулей"?
|
|
![]() |
#2 |
Administrator
|
Если грубо - то модуль - это набор исходных текстов методов класса (в понятии АХ), вынесеных в один общий текст. При этом - несвязанных между собой, без наследования. Модули бывают при форме и глобальные (т.е. с процедурами/функциями, доступными отовсюду). Собственно - модули эмм... это и есть весь код 1Са (все остальное - это дизайн).
У меня знания остались еще с 7.7. Поправьте меня - если что изменилось плиз...
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#3 |
Участник
|
![]() Цитата:
Сообщение от 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). |
![]() |
#4 |
Участник
|
Пример Hansa записывается еще короче:
X++: = .( ("Отметка, НомерЗаказа",,)); Чего нет в 1С, но и не может быть в силу ее объектных особенностей. Update recordset с SQL-синтаксисом. В 1С удобная фишка разыменования запросов. Запрос X++: Select Z.. From . as Z Также язык запросов 1С имеет интересное расширение Итоги (Total), Эта конструкция позволяет, сохранив первоначальный текст запроса, автоматически добавлять в результат итоги, посчитанные по заданным группировкам. Причем результат можно тут же выгрузить в дерево, узлами которого будут описанные итоги. |
|
![]() |
#5 |
Участник
|
Цитата:
Эта "удобная фикша" приводит к тому, что на запрос одной таблицы (справочника, регистра), платформа 1С может автоматически построить очень сложный запрос с кучей join'ов. А если запросить две таблицы, то легко можно получить запрос с несколькими десятками таблиц. И прощай всякая оптимизация. Хотя бы потому, что управлять или отключать такое разыменование невозможно. А, например, MS SQL перестает выполнять оптимизию запроса, если в нем указано больше 8 таблиц. Ни в коем случае! Цитата:
Сообщение от Сисой
![]() Также язык запросов 1С имеет интересное расширение Итоги (Total),
Эта конструкция позволяет, сохранив первоначальный текст запроса, автоматически добавлять в результат итоги, посчитанные по заданным группировкам. Причем результат можно тут же выгрузить в дерево, узлами которого будут описанные итоги. ![]() |
|
|
За это сообщение автора поблагодарили: Logger (6). |
![]() |
#6 |
Участник
|
Mazzy, ты отрицаешь очевидное. В 1С думающий программист точно так же, как и в стандартном SQL, построит запрос без разыменования, используя только inner и outer join. Более того, на этом настаивают специалисты УЦ 1С. Здесь вопрос риторический: а всегда ли нужно ставить оптимизацию по скорости запросов во главу угла, игнорируя качество работы программиста? Всегда ли нужно получать реквизиты по связи запросом, или можно написать:
X++: =..; Ответ в каждом конкретном случае разный. На курсах в УЦ 1С специалистов знакомят с правилами хорошего тона и оптимизацией кода по скорости. Но если я пишу небольшую сервисную обработку, для которой время исполнения некритично, я буду использовать "фишки 1С" даже в ущерб производительности. Чтобы через год проще было понять и модифицировать код. Чего точно нет в 1С, так это возможности использовать хинты в запросах. Тоже ведь палка о двух концах... |
|
![]() |
#7 |
Участник
|
Цитата:
![]() 1. Большинство запросов в типовых конфах УЖЕ написано с разыменованием ![]() 2. Даже если не делать разыменование в тексте запроса, а обратиться к "Запрос.Контрагент.ПолноеНаименование", то платформа 1С все равно сделает разыменование (скорее всего отдельным запросом). Давай поговорим о думающих программистах, когда типовые будут УЖЕ написаны таковыми. Сейчас думающим программистам приходится либо снимать с поддержки и править код по самые помидорки, либо махнуть рукой. Цитата:
![]() А теперь выясняется, что какие-то специалисты УЦ на чем-то настаивают. Так является ли преимуществом приведенный тобой пример с разыменованием? ![]() Это да. И не надо. По тем же соображениям. |
|
![]() |
#8 |
Участник
|
Да, изменилось. В 1С8 есть зачатки инкапсуляции. Каждый объект (справочник, документ, регистр и т.п.) имеет свой собственный модуль, в котором можно описывать как приватные, так и публичные (в терминологии 1С - экспортные) процедуры и функции. Кроме того, есть библиотека общих модулей (их может быть сколько угодно).
По вопросу FE: В мире 1С возможность редактирования того или иного объекта конфигурации определяет автор конфигурации: Цитата:
Настройка поставки заключается в указании правил поставщика на изменение конфигурации и включении/исключении в поставку исходных текстов модулей. Меню "Конфигурация" - "Поставка конфигурации" - "Настройка поставки...". Открывается иерархический список объектов конфигурации (окно "Настройка поставки").
Для каждого объекта можно указать правило изменения. Для группы объектов (например, "Справочники") это можно сделать кнопкой "Изменить подчинённые", а для одного объекта или нескольких объектов, выбранных с помощью щелчков при нажатом Ctrl - кнопкой "Изменить" (в списке возможен произвольный множественный выбор объектов). Открывается диалог "Настройка правил поставщика и текстов модулей", в котором выбирается правило изменения и находится флажок включения в поставку исходных текстов модулей (модуля). Если этот флажок снят, в поставку будет включён только скомпилированный текст. Варианты правила изменения: Изменения разрешены (по умолчанию). Изменения не рекомендуются - при выборе правила поддержки "Объект поставщика редактируется с сохранением поддержки" пользователь будет получать предупреждающее сообщение. Изменения запрещены - пользователь сможет обновлять объект, только не редактируя его ("Объект поставщика не редактируется"). При этом пользователь не сможет снять такой объект с поддержки, и для изменения такого объекта надо будет снять с поддержки всю конфигурацию. |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
Теги |
1c, платформа, сравнение систем |
|
|