gifts2017

Мухи и котлеты

Опубликовал Михаил Семенов (Shaman100M) в раздел Программирование - Практика программирования

"Мухи - отдельно, котлеты - отдельно". Статья и внешняя обработка 7.7

   С чем может ассоциироваться название статьи?
   Ну, наверно, мухи - насекомые - жуки - ошибки программы; котлеты, соответственно, еда, пища, - наполнение - сама программа.
   А можно и так: мухи - это код, котлеты - данные. Код сидит на данных, и зачастую очень сильно с ними перемешан. :)))                     

   Значит, будем заниматься "дезинфекцией", отделять код и данные, изменяя их общую дислокацию.

   Этим мы достигаем несколько целей:

- "Чистый (от данных) код".
- Унифицирование, исключение повторов описаний в коде.
- Собранность постоянной информации в одном месте, наглядность ее представления.
- Как недостаток, получение данных хранимых не в коде может замедлить работу программы, поэтому стараемся процедуру получения данных использовать за пределами больших циклов,  при инициализации локальных переменных и структур данных.

   Код, понятное дело, оставим на его родной закладке "Модуль". А вот данные (постоянные), описанные в коде, как то: строковые, числовые, типа "дата" "константы", вспомогательные и на форме диалога списки значений, таблицы значений, описания их структур можно вынести в другое место,  куда нибудь, совсем недалеко, по-соседству, например, на закладку "Диалог" в определенный слой формы.
Или, нет... как-то там проблематично хранить сами данные, только если зарезервировать под это сохранение настройки отчета, или всё хранить в реквизитах формы типа "Текст". Ну, тогда пойдем другим путем, направо. А справа у нас таблицы-макеты. Тут, вроде, все наглядно и удобно.  
   Таблица-макет доступна в любом исполняемом контексте: ГлобальныйМодуль - общие таблицы,
локальные модули - встроенные макеты-таблицы.
   Границы использования хранимых данных расширяются до границ текущего контекста, без объявления дополнительных общих переменных, - в любой процедуре (насколько это возможно без ущерба производительности) обращаемся к таблице-макету и получаем их заново.
   Также, встроенную таблицу-макет можно легко скрыть с глаз долой, во внешний файл, без ущерба для ее использования, - это, м.б. определенным способом  защиты (с натяжкой, конечно) кода, который, при этом остается открытым, доступным для изменений, но который без прилагаемой таблицы-макета работать не будет.

   Итак, мы будем хранить в таблице-макете постоянную информацию:
константы простейших типов (числовые, строковые, типа "дата"); списки значений с представлением, пометкой; описания структур таблиц значений и их (если это необходимо) содержание.

   Для хранения данных используем атрибут ячеек таблицы-макета "Текст", для адресации ячеек удобным текстовым представлением - наименованиями областей и секций. Можно было бы использовать  метод Расшифровка(), который бОльше подходит для хранения сложных типов данных, однако, в большинстве своем, атрибута "Текст" хватит (с преобразованием чисел и дат) и на описания структур и на начальную постоянную информацию.
 
   В прилагаемой к статье обработке-примере за получение данных отвечает претендующая на универсальность процедура ПолучитьДанныеИзТаблицы(), адресация и способ хранения данных с примерами описан в таблице-макете "Котлета". :)
 
   Замечание. Встроенные таблицы-макеты м.б. недоступны в теле функций  и процедур, вызываемых из формул диалога, т.е. метод ИсходнаяТаблица() их может и не увидеть. Варианты решения этой проблемы: использовать общие таблицы, использовать внешние макеты, использовать встроенные макеты с ложным закрытием формы, встроенные макеты определить заранее. 

Изменения от 12.03.2009

Теперь в таблице можно хранить объекты ИБ. Добавлены обработка для формирования таких таблиц и еще одна, -  "Журналы документа" родившаяся в результате отладки.

Успехов в реализации Ваших идей!

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
FliesAndCutletsSeparately
.1235753210 33,00Kb
25.09.09
95
.1235753210 33,00Kb 95 Скачать
Подбор объектов ИБ в таблицу в режиме ВД
.1236877775 28,50Kb
25.09.09
23
.1236877775 28,50Kb 23 Скачать
В качестве бонуса. Журналы документа
.1236877851 12,50Kb
25.09.09
29
.1236877851 12,50Kb 29 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сhe Burashka (CheBurator) 27.02.09 23:04
1. правилно так: Хелло воРЛд!
2. такой подход кое-где используется в типовых конфигах на 7.7
2. Сhe Burashka (CheBurator) 27.02.09 23:05
Прямо хоть организуй "зоопарк": см. http://infostart.ru/projects/1969/
;-)
3. Александр Шишкин (Шёпот теней) 27.02.09 23:57
ради искусства или ради пользы... такая шаманская идея возникла...
в чём практическая ценность...

воОотвопрОс...
4. Михаил Семенов (Shaman100M) 02.03.09 10:12
(3) Такая идея возникла от желания "причесать" большой объем кода.
С точки зрения того, что код был уже отлажен, ее можно отнести к искусству. :)

80% внешних отчетов и обработок, если брать пределы модуля, (не говоря уже о пределах процедур и функций) используют 2-3 списка или таблицы значений, особого смысла их выносить в Таблицу и добавлять еще пару сотен строк кода, - нет. Остаются большие внешние, а также, конфы в целом, если ... не лень. Вот тогда появится практическая ценность.

(2) Ну пока что не зоопарк, а так, корм для обитателей террариума. :)

(1) Олбанцы в наступлении, перешли Ла-Манш.
5. Епрст (Ёпрст) 02.03.09 10:20
(0) велосипед.. см. комплексную, к примеру, как заполняется справочник хоз. операций/движение регистров/Проводки хоз операций...
7. Михаил Семенов (Shaman100M) 02.03.09 11:01
(6) Да, там это смотрится как необходимость - 70т значений в код не уложишь.
8. Александр Рытов (Арчибальд) 03.03.09 02:40
Вообще-то программирование в современном смысле началось тогда, когда алгоритм (в виде кода) стал частью обрабатываемых компьютером данных.
А в 80-х годах был "японский вызов": шестое поколение - компьютеры, управляемые данными. В прошлом году нечто подобное Мелкософт с Интелом анонсировали.
Так что котлеты изготавливаются из мух, предварительно откормленных котлетами...
10. Михаил Семенов (Shaman100M) 03.03.09 08:52
... тогда что же появилось раньше? ;)
11. Александр Рытов (Арчибальд) 05.03.09 08:57
Комментировал текст. Поразбирался с кодом теперь.
Общее впечатление хорошее. Много программеров работают больше руками, чем головой. А тут, может, кто-то мозги включит: хотя ничего нового, зато это известное обозначено=названо (первый шаг в научном подходе) и неким образом классифицировано (второй шаг).
Плюс за подход.
12. Михаил Семенов (Shaman100M) 12.03.09 20:19
Обновились до коммента (8).
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа