gifts2017

Особенности написания обработок: в помощь начинающему

Опубликовал Damian (Damian) в раздел Программирование - Теория программирования

Часто бывает: скачал обработку с Инфостарта - хороша, все делает как надо, но вот если бы тут рюшечку добавить, было бы вообще чудесно. Открываем исходный код, и видим: ни реквизитов обработки, ни текста модуля объекта, все свалено в кучу в модуле формы.

Я своих молодых сотрудников приучаю сразу создавать объекты, максимально адаптированные к клиент-серверному варианту работы. К тому же это помогает при разборе функционала.

Приведу простой пример. Поставлена задача написать обработку (назовем ее "ОстаткиТоваров"), которая выведет в таблицу значений остатки товаров на складах на указанную дату.

Что делает начинающий?
Рисует форму, располагает на ней поле ввода с типом "Дата", таблицу значений и кнопку "Сформировать".
Что в результате имеем?
В обработчике КнопкаСформироватьНажатие() сначала у элемента формы "ДатаНачала" получаем значение, чуть ниже описываем текст запроса, передаем в него параметр, выполняем запрос и выгружаем его результат в таблицу значений. Вреде бы все работает, без проблем.

Но! Допустим, что для какой-то другой задачи (назовем ее "СуперЗадача") тоже необходимо получать остатки по товарам на складах. Можно, конечно, скопировать основной функционал обработки "ОстаткиТоваров" и вставить его в "СуперЗадачу", подкорректировав, где это необходимо. Но можно ведь и просто использовать "ОстаткиТоваров"!

Для этого у обработки "ОстаткиТоваров" достаточно создать реквизит "ДатаОстатков", который связать с элементом формы, а функцию формирования таблицы значений вынести в модуль объекта, сделав экспортной.

Что это дает?
1. Наглядная структура объекта. По реквизитам обработки сразу видны ключевые параметры. В модуле формы описаны интерфейсные функции и обработчики событий, а в модуле объекта - собственно сам функционал.
2. Доступ к необходимым параметрам из модуля формы и модуля объекта напрямую, без использования конструкции ЭлементыФормы.МойРеквизит.Значение и/или глобальных переменных объекта.
3. Доступ к функционалу объекта без необходимости получения его формы.
4. При запуске в клиент-серверном варианте в 90 случаях из 100 обработка будет корректно работать (про передачу мутабельных значений между сервером и клиентом расписывать не буду, это отдельная тема).

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

Так что, в принципе, можно считать это криком души :)

См. также

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

Комментарии

1. Vlad (kitminsk) 23.06.11 08:21
Система стандартов и методик разработки конфигураций для платформы «1СПредприятие 8.0» (версия 1.15) и такие же для 8.1 и8.2
Spacer; BonR; +2 Ответить 1
2. Александр Медведев (anig99) 23.06.11 08:47
Если я правильно всё понял, то в управляемом приложении (8.2) в модуле обработки писать - не оптимально с т.з. количества передаваемой информации. Вызов модуля обработки из модуля формы требует передачи копии всей обработки на сервер.
О.Ж; hulio; deadoralive; BigB; +4 Ответить 1
3. Иван (Spartan) 23.06.11 09:16
В целом согласен, только не представляю, зачем можно использовать конструкцию ЭлементыФормы.МойРеквизит.Значение, если по умолчанию новые элементы формы добавляются, связанные с соответствующими новыми реквизитами формы, обращаться к которым в контексте формы можно напрямую по имени. Но это так... оступление, конечно основные параметры нужно выносить в реквизиты обработки.
4. A A (Andrew0) 23.06.11 13:27
В современном мире дешевле докупить сервер, чем оплачивать оптимизацию ПО, т.к. время дороже всего. Оттого качество кода в принципе никого не волнует, лишь бы работало
AnryMc; BigB; Frodo.37; +3 1 Ответить 1
5. Роман Романов (romansun) 23.06.11 14:28
в некоторых случаях сервер не поможет и придётся лезть в код... :D
6. Иван (Spartan) 23.06.11 17:29
(4) А что мешает писать сразу "грамотно", а не оптимизировать потом?
7. Алексей Константинов (alexk-is) 24.06.11 14:53
(3) Имелось ввиду внешнее управление объектом
8. Иван (Spartan) 24.06.11 17:31
(7) Просто мне в голову не пришло, что можно так извратно управлять объектом извне, когда для этого есть его реквизиты... :D
9. Иван (Spartan) 24.06.11 20:11
(7) Хотя если на то пошло, в таком случае можно управлять опять же через реквизиты формы - Форма.МойРеквизит, через элементы вообще жесть какая-то...
10. Леван Иремадзе (IRLes) 25.06.11 00:04
Ох! Если уже вспомнить о невероятных кодах, расскажу случай :)
Для начала опишу рабочее место ОДНОГО сотрудника: стол на 10 персон, на столе 4 компьютера, рядом один стул на колёсиках, а на полу ... не побоюсь этого слова, КОЛЕЯ!
Так вот, работа этого сотрудника заключалась в том, что он на одном компьютере запускает отчет, "едет" к другому компьютеру и на нем что-то делает, потом к следующему и т.д. Оказалось, что это связано с очаровательным запросом в цикле и очаровательным запросом "ПриВывоеСтроки" - это больше всего поразило.
И как Вы думаете, что потом сказал этот сотрудник, когда все ошибки прошлого "кодера" были исправлены? А ЧТО МНЕ ТЕПЕРЬ ДЕЛАТЬ, я уже всю работу выполнил? :D
11. Damian (Damian) 25.06.11 02:31
(2) Не совсем верно. Предположим, что вам необходимо отобразить на форме таблицу, в которой будут содержаться данные о наличии товаров на складах + в отдельной колонке сколько этого товара находится в резерве.
Если вы попытаетесь в управляемой форме &НаКлиенте сформировать и выполнить запрос, будет ошибка. Если вы напишете процедуру/функцию, которая &НаСервере получит необходимые данные из регистров, проблем не будет.
В управляемых формах идет четкое разграничение функционала. В управляемых формах, по определению (насколько я понимаю), практически невозможно написать такой код, который будет работать в файловом варианте и будет выдавать ошибку в клиент-серверном, и наоборот (результаты выполнения кода пока рассматривать не будем :)
Однако для решения задачи по получению остатков гораздо правильнее из формы обработки вызвать функцию, описанную в модуле обработки (которая, как ни крути, будет исполняться на сервере (+скорость обработки данных, это ж сервер :)!)), которая вернет в качестве результата искомую таблицу.
12. Damian (Damian) 25.06.11 02:37
(3) А как вы сможете получить значение реквизита, который существует ТОЛЬКО на форме? Придется писать что-то типа этого:
Форма = МояОбработка.ПолучитьФорму("Форма");
НужноеЗначение = Форма.ЭлементыФормы.МойРеквизит.Значение;
Иначе, если элемент формы не связан с реквизитом обработки, вы до его значения из модуля, извне, и наконец, через COM-объект, не доберетесь.
13. Damian (Damian) 25.06.11 02:59
Немного отвлеченно от темы, но все же...
Мой коллега Dankos рассказал такую историю:
Один бывалый программист спросил у молодого:
- Ну, как, твоя программа работает под WinXP?
- Да! Потребляет ресурсов всего 16 МБ!
- А, ну-ну. А на Win98?
- А то! То же самое : 16 МБ и ни байтом больше.
- И чем ты гордишься? Если твоя программа не умеет подстраиваться под доступные ресурсы системы и отбирает у нее все, что ей необходимо, ей суждено быть однодневкой, которая работает нормально только под WinXP.
Ту же аналогию можно привести и под Win7
Что хочу сказать этим: оптимизация кода никогда не выйдет из моды (необходимости), поскольку платформы меняются, а нам, разработчикам, приходится под это дело подстраиваться...
А жаль... Лучше бы они подстраивались под требования разработчиков...
14. Роман Ложкин (webester) 25.06.11 04:52
(13)Какой откровенный бред, если программе нужно 16 мегабайт памяти, что теперь на win98 функционал отрубать? Или какие предложения?
>>Лучше бы они подстраивались под требования разработчиков...
Напоминает грустные просьбы юзеров а почему нельзя просто сделать чтоб работало...
15. Аркадий Кучер (Abadonna) 25.06.11 06:23
(0)
Потому что, когда я открываю чью-то разработку, мне первым делом интересен метод решения задачи, который (несомненно) описан в модуле объекта.

На вкус и цвет... Лично мне просто лень делать лишние телодвижения, чтобы открыть модуль объекта. А метод решения задачи мне интересен в соответствующих функциях процедурах того же модуля формы. А на кнопке Выполнить вообще ничего не должно быть, кроме вызова вышеупомянутых. На мой вкус...
А функции и процедуры, которые мне однозначно еще неоднократно понадобятся, я просто выношу в дополнительный общий модуль и не парюсь.
Куда как приятнее набрать МойМодуль, поставить точку, и получить в выпадающем списке ту же самую ОстаткиТоваров(
Кстати, вот что фирма недоделала: в настоящих языках после точки не только имя, но и необходимые параметры показывает
16. Иван (Spartan) 25.06.11 08:59
(12) С трудом представляю себе необходимость создать элемент формы, не связанный с данными (реквизитом объекта либо реквизитом формы). Извне в таком случае я доберусь так:
Форма = МояОбработка.ПолучитьФорму("Форма"); 
НужноеЗначение = Форма.МойРеквизит;

Ну да ладно - это не суть важно... Я-то как раз для управления объектом обработки как правило создаю реквизиты, если конечно обработка не разовая, когда нет желания париться такими вещами.
17. Альтаир (Altair777) 25.06.11 09:32
(13) фигня это - а сколько МБ сожрет такая подстройка? и на сколько усложниться код и увеличаться затраты при написании и последующей доработке?
вот это и будет однодневка, потому что мало кому захочется заниматься ее сопровождением если там будет много ненужного и непонятного функционала? ведь это системное программирование, а не прикладное
P.S.может нужно и под будущие платформы подстравиваться? :)
18. Александр Медведев (anig99) 25.06.11 10:43
(11) почитайте литература по написанию кода для управляемых приложений, посмотрите видеоуроки, погулите "управляемое приложение вызов модуля обработки", почитайте чем отличается &НаСервере и &НаСервереБезКонтекста
Вот стандартный код вызова процедуры модуля обработки из модуля формы.

&НаКлиенте
Процедура Сформировать(Команда)
сформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере(Команда)
НашОбъект = РеквизитФормыВЗначение("Объект").
НашОбъект.мВыполнить();
КонецПроцедуры

Как видно в любом случае нужна процедура в модуле формы с параметром &НаСервере, которая передает на сервер ВСЁ, что является неоптимальным с т.з. объема передаваемых данных.

НаСервереБезКонтекста более предпочтительно. Поэтому оптимальный код для управляемого приложения:


&НаКлиенте
Процедура Сформировать(Команда)
........;
АдресТаблицыОстатков = ПолучитьОстатки(СписокНоменклатуры,Дата);
........;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьОстатки(СписокНоменклатуры,Дата);
Запрос.....
КонецФункции
19. Александр Медведев (anig99) 25.06.11 11:29
(11) да. Единственная причина размещать процедуры в модуле обработки - использование процедур в нескольких разных формах.
20. Михаил Ражиков (tango) 25.06.11 11:41
по ходу в (0) важны не технические рекомендации, а отношение автора.
у тебя есть подчиненные, ты либо управляешь ими настолько неэффективно, что приходится лазить в их код, либо твой функционал настолько бесполезен, что тебе больше делать нечего.
имхо: подобные "крики" уместны были бы при разработке типовух. но, насколько видно по тем же типовым, именно "флагмана" это парит в последнюю очередь
и все эти "системы стандартов" (1) - не более чем надувание щек, типа ISO
Istur; vkr; +2 Ответить 2
21. Михаил Ражиков (tango) 25.06.11 11:52
+(20) перечитал пост, подумалось - не слишком ли резко отозвался? пошел смотреть коды автора, что же видим у гуру?
Перенумератор! улыбнуло так, что дальше смотрел уже без злости
как бы (12) появился не на пустом месте.
Коллега (0), вы где подвизаетесь на руководящей должности, не в БиТе ли?
Прикрепленные файлы:
22. Альтаир (Altair777) 25.06.11 11:56
(21) я тоже смотрел и тоже самое заметил :D
интуиция мне подсказывает что здесь фигня написана, но знаний по 8-ке у меня недостаточно чтобы с совсем чистой совестью минус поставить
23. Михаил Ражиков (tango) 25.06.11 12:06
(22) минуса заслуживает не содержание, а именно обращение как от гуру к начинающим, собственно крик
24. Альтаир (Altair777) 25.06.11 12:10
я свой минус поставил.... ;)
25. Михаил Ражиков (tango) 25.06.11 12:15
едем дальше.
загрузка екселя.
взята типовуха, добавлено решение коллеги wildhog, собрано 27 плюсов
как бы и не перенумератор, чего уж там... Но!
читаем коллегу wildhog:
"...большинство обработок - законченные решения выполняющие различные функции, а не только ПРОСТОЕ чтение файла. (искренний респект и уважение авторам) Я же предлагаю всего лишь функцию быстрого чтения файла Excel. Готовых обработок в этой области не выкладываю - дублировать существующие нет смысла, или они явно не дотягивают по функционалу до уже выложенных :)"

улыбнуло еще раз
26. Михаил Ражиков (tango) 25.06.11 12:37
дальше, "Корректный перенос остатков из другой базы через COM", 20 плюсов

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

имхо, слово "корректный" в заголовке смутило даже самого автора настолько, что он дважды в публикации оговаривается "ни-ни, это я так просто, поучить новичков..."
но заголовок не сменил, что, опять же достойно 1снега
27. Михаил Ражиков (tango) 25.06.11 13:04
дольше, "Для специалиста 1С : Работаем с АшиПками", 9 плюсов

семерка. доработка решения коллеги kompas-dm

ну, что же, это, видимо и есть опыт "боевого" программинга, работы "в поле" самого автора

разбирать не стоит - стоит просто почитать комменты к той публикации

ПС: короче, присоединяюсь к коллеге Altair777
28. Альтаир (Altair777) 25.06.11 13:22
автор, это еще хорошо что публикация бесполезная, а не вредная
иначе я бы ее просто удалил
29. Александр Медведев (anig99) 25.06.11 14:16
(28) ну почему же... для управляемых форм - вредная. Размещение процедур и функции в модуле объекта в случае управляемых форм - вынужденная и крайняя мера.
30. Яков Коган (Yashazz) 26.06.11 10:47
Идейно верная статья. Я тоже долго полагал всё это очевидным, и тоже всегда затачивал максимально под клиент-сервер, внешний вызов и всё такое, пока однажды не осознал, что это очевидно мне, но никак не вообще всем. Поэтому принципиально хорошо, что такие вещи озвучиваются и внимание на этом заостряется. Тонкий 8.2 - тоже отдельный момент, но хоть внимание привлечено.
31. Михаил Ражиков (tango) 26.06.11 12:13
(30) плохо вы еще читаете авторские материалы, коллега.
где там "тоже долго полагал всё это очевидным"?
во-первых, там совсем другое: "Я своих молодых сотрудников приучаю сразу"
во-вторых, сколько у автора "старых" сотрудников? казалось бы, научил один раз и спи спокойно :)
так нет же - криком исходит, а франь и есть франь
32. Яков Коган (Yashazz) 26.06.11 15:11
(31) Я не про "авторские материалы". Я про то, что вообще состоялся этот разговор. Ибо многие сидят по углам и думают, что всё понимают, а подобная ревизия полезна тем, что всколыхнёт и кой-чего заставит актуализировать, а то и пересмотреть кардинально. Что там писал автор - десятое дело, у каждого своя имха и стиль. Флагман же, как верно сказано, и сам не очень-то подаёт пример.
33. Александр Медведев (anig99) 26.06.11 18:14
Что тут говорить, если люди после института и пары лет работы не могут разумно разбивать код на процедуры и функции, структурно оформлять код и т.д. чему меня, например, ещё в школе учили.
34. Аркадий Кучер (Abadonna) 27.06.11 03:11
(25), (31) 2 tango
Напрасно ты про авторские обработки ;) В последнее время а на Инфостарте прям априори считается, что любой с нулевым или чуть поболее рейтингом, является скромным гением, которому просто плевать на рейтинг (и при чем тут рейтинг?). Удивляют плюсующие: вы что, не знали раньше, что желательно применять функции и процедуры? И это для вас божественное откровение? Или, наоборот, вам все это хорошо известно, но спасибо автору, что других дурачков просветил?
пока однажды не осознал, что это очевидно мне, но никак не вообще всем.

Правильно! Столько причин для смерти, зачем добавлять еще одну - от скромности? :D
41 плюс (на данный момент) НИ ЗА ЧТО.
35. Михаил Ражиков (tango) 27.06.11 09:57
(34) ну как бы общий уровень отражаит.
есть плюсы, есть минусы (я о состоянии рынка 1снегов)
36. Виталий (nafa) 27.06.11 10:06
Нормальная статья.
[quote]все свалено в кучу в модуле формы[/quote]
В типовых не лучше.
Разработчики платформы поленились сделать, чтобы при создании обработчиков из панельки со свойствами, эти обработчики вставлялись не в конец, а сортировались по реквизитам.
Насчет простоты статьи - половина компаний из списка 30 крупнейших в мире отнюдь не космическими технологиями занимается, вообще всякую примитивщину выпускает - бритвы (Gilette), булочки с мясом (McDonalds) и т.п. Так что вопрос не только в том, что сделать, но и как сделать. На этом сайте не диссертации защищают, а обмениваются практическим опытом. Чем проще и надежнее - тем лучше.
37. Михаил Ражиков (tango) 27.06.11 10:35
(36) "обмениваются практическим опытом"

об том и речь

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

а давать советы типа (0) может придти в голову только маленькому начальнику от айти
(именно давать советы типа чистить зубы по утрам)
я потому и запостил (21)-(27) : нету у автора практического опыта. ну, ладно, близкий к нулю. какой же уровень должен быть у тех, кто увидел полезность в сабже?
38. Виталий (nafa) 27.06.11 10:44
[quote]когда тебе надо при нулевом бюджете закрыть очередную хотелку... то ты просто ставишь реквизит дата в форму и все[/quote]
Причем здесь бюджет и реквизит в форме? Для того чтобы его разместить где положено, что сервер новый нужен или лицензии какие?
39. Александр Рытов (Арчибальд) 27.06.11 10:48
(38) При нулевом бюджете приветствуется нулевое качество :D
MaxDavid; +1 Ответить
40. Виталий (nafa) 27.06.11 10:54
[quote]я потому и запостил (21)-(27) : нету у автора практического опыта. ну, ладно, близкий к нулю[/quote]
Не усматриваю в простоте статей отсутствия практического опыта.
Вот еще пример: самый лучший интерфейс для файлового менеджера изобрела маленькая фирма (Norton Commander, помним?) 30 лет назад, и ни одна мегакорпорация (Microsoft, Apple, Google и т.п.) до сих пор ничего лучше не придумала, несмотря на все старания.
"+" - отражают ценность статьи, программы для пользователя (потребителя), а не сложность и затраты времени разработчика.
41. Михаил Ражиков (tango) 27.06.11 10:57
42. Михаил Ражиков (tango) 27.06.11 10:57
(38) ну, собственно, я именно об этом (см. (39) - доля шутки)
43. Альтаир (Altair777) 27.06.11 11:31
(40)
nafa пишет:
до сих пор ничего лучше не придумала, несмотря на все старания

Вы бы еще Тетрис вспомнили :D
Кто сейчас пользуется NC? Я вообще ничего не слышал о нем уже несколько лет. А все его клоны популярны потому, что от того древнего файлманагера только двухпанельность унаследована.. и все! Без плагинов они были бы ни чем не лучше проводника.
44. Михаил Ражиков (tango) 27.06.11 11:42
вот, впечатлимшись простотой, для новичков на ИС публикую:

в типовых можно встретить (например, в УПП при заполнении отчета комитенту)
в цикле выборки запроса вот такую бадью:
Код
КоличествоРеализованных = ?(Выборка.КоличествоРеализованных = NULL, 0, Выборка.КоличествоРеализованных);
Показать полностью


я долго думал, что это только типовые пишут такие тупые 1снеги, но, подумав уже, додумался, что раз за данную публикацию дают плюсы, то тем более мне плюсов накидают за простой совет:

используйте ISNULL тексте запроса
45. Михаил Ражиков (tango) 27.06.11 11:53
не, ну это вообще песня:
Код
   Пока Выборка.Следующий() Цикл
      КоличествоРеализованных = ?(Выборка.КоличествоРеализованных = NULL, 0, Выборка.КоличествоРеализованных);
      КоличествоПолученных    = ?(Выборка.КоличествоПолученных = NULL, 0, Выборка.КоличествоПолученных);
      Выручка                 = ?(Выборка.Выручка = NULL, 0, Выборка.Выручка);
      Количество              = Мин(КоличествоПолученных, КоличествоРеализованных);
Если Количество = 0 Тогда 
Продолжить;
КонецЕсли;


Показать полностью
46. Михаил Ражиков (tango) 27.06.11 11:57
то же, но уже для РАУЗа:

Код
   Пока Выборка.Следующий() Цикл
      КоличествоРеализованных = ?(Выборка.КоличествоРеализованных = NULL, 0, Выборка.КоличествоРеализованных);
      Если КоличествоРеализованных < 0 Тогда
         ОбщегоНазначения.СообщитьОбОшибке("Обнаружено отрицательное количество реализованных товаров "
         + Выборка.Номенклатура + " " + Выборка.ХарактеристикаНоменклатуры + " " + Выборка.СерияНоменклатуры);
         Продолжить;
      КонецЕсли;   
      КоличествоПолученных    = ?(Выборка.КоличествоПолученных = NULL, 0, Выборка.КоличествоПолученных);
      Если КоличествоПолученных < 0 Тогда
         ОбщегоНазначения.СообщитьОбОшибке("Обнаружено отрицательное количество полученных на комиссию товаров " 
         + Выборка.Номенклатура + " " + Выборка.ХарактеристикаНоменклатуры + " " + Выборка.СерияНоменклатуры);
         Продолжить;
      КонецЕсли;
      Выручка                 = ?(Выборка.Выручка = NULL, 0, Выборка.Выручка);
      Количество              = Мин(КоличествоПолученных, КоличествоРеализованных);

      мВалютаУправленческогоУчета = глЗначениеПеременной("ВалютаУправленческогоУчета");
      СтруктраКурса = МодульВалютногоУчета.ПолучитьКурсВалюты(мВалютаУправленческогоУчета,Дата);
      Выручка    = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(Выручка
                           ,мВалютаУправленческогоУчета,ДоговорКонтрагента.ВалютаВзаиморасчетов
                           ,СтруктраКурса.Курс, КурсВзаиморасчетов
                           ,СтруктраКурса.Кратность, КратностьВзаиморасчетов);
      Если Количество = 0 Тогда  Продолжить; КонецЕсли;

Показать полностью
47. Михаил Ражиков (tango) 27.06.11 12:04
полный текст шедевра от флагмана (как НЕ надо делать)
Прикрепленные файлы:
Новый1.txt
48. Виталий (nafa) 27.06.11 12:28
(43)
Altair777 пишет:
Кто сейчас пользуется NC...

Когда ДОСом пользоваться приходится тогда и используется. (У меня последний случай был 2 недели назад - надо было восстановить обнулившийся MAC адрес для встроенной сетевухи на материнке, а соответствующая утилита под виндой не живет).
А все его клоны популярны потому, что от того древнего файлманагера только двухпанельность унаследована.. и все!

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

Это вобще-то совсем другого рода вещи, чем статься. УПП у меня нет, и проанализировать полностью данный модуль я не могу. Также надо отметить, что в общем случае ISNULL не эквивалентен данной конструкции, так как для поля Выборка.КоличествоРеализованных может требоваться различать значения 0 и NULL. Значения типа NULL могут иметь особую обработку, например в СКД (пропуск группировок).
49. Михаил Ражиков (tango) 27.06.11 12:43
(48) "вообще-то" это как раз то же самое, только на уровне чуть больше "почистить зубы". именно поэтому, коллега, вместо того, чтобы тупо плюсануть, вы начинаете показывать, что вы тоже что-то знаете

"поля Выборка.КоличествоРеализованных может требоваться различать значения 0 и NULL" - если вдруг так, тем более это надо делать в запросе
50. Игорь Исхаков (Ish_2) 27.06.11 13:45
(46) Миша , твоё возмущение от непонимания.
Пока Выборка.Следующий() Цикл
КоличествоРеализованных = ?(Выборка.КоличествоРеализованных = NULL, 0, Выборка.КоличествоРеализованных);

Так как ты опустил текст предшествующий данному коду ,
то я могу допустить своё дополнение :
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл 
     КоличествоРеализованных = ?(Выборка.КоличествоРеализованных = NULL, 0, Выборка.КоличествоРеализованных); 
.....


Теперь предположим , что итоги по полю "КоличествоРеализованных" не рассчитываются.
Тогда "КоличествоРеализованных" на всех уровнях группировок кроме последнего будут содержать NULL.
Причем присутствие NULL в итоговых строках запроса никаким ISNULL это не устраняется.

Другими словами , твой обрезанный пример ничего не говорит о качестве кода.
Istur; tsd; MaxDavid; artbear; nafa; +5 Ответить 2
51. Аркадий Кучер (Abadonna) 27.06.11 13:47
52. Александр Рытов (Арчибальд) 27.06.11 14:06
53. Александр Синцов (Sintson) 27.06.11 15:04
Я так понимаю, автор призывает к модульности.
Хотя в данном конкретном примере, на мой взгляд процедуру получения остатков имеет смысл разместить в общем модуле,
для случая, когда отчет (обработка) ориентирован на конкретную конфигурацию и в теле самого отчета (обработки),
если планируется использовать на нескольких.
К тому же 1С - четко указывает на то как писать
и что где размещать в своих рекомендациях к разработчику.
54. Михаил Ражиков (tango) 27.06.11 15:07
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

откуда взято поГруппировкам?
55. Михаил Ражиков (tango) 27.06.11 15:08
+ нафа к 50 весьма красноречив
56. Сергей (Che) Коцюра (CheBurator) 27.06.11 15:19
Sintson пишет:
К тому же 1С - четко указывает на то как писатьи что где размещать в своих рекомендациях к разработчику.

- ссылочку, плиз!
57. Михаил Ражиков (tango) 27.06.11 15:24
(48) "Когда ДОСом пользоваться приходится тогда и используется. (У меня последний случай был 2 недели назад - надо было восстановить обнулившийся MAC адрес для встроенной сетевухи на материнке, а соответствующая утилита под виндой не живет)."

Вы, коллега, по ходу - "сисадмин со знанием 1с"
58. Альтаир (Altair777) 27.06.11 15:29
(48)
nafa пишет:
но и горячие клавиши и дополнительные функции (встроенный поиск файлов, просмотрщик, редактор, сортировка, работа с архивами)

теперь все понятно: эти детские восторги взялись от незнания мат.части - в проводнике это тоже все есть
59. Александр Синцов (Sintson) 27.06.11 15:34
(56)
Извольте:
На любом диске ИТС в разделе Технологическая поддержка/Документация/Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8.1
60. Михаил Ражиков (tango) 27.06.11 15:41
(59) Уважаемый коллега, не могли бы вы указать образец вашего личного следования оным "стандартам и методикам"?
ну, очень интересно.
мы ведь здесь, по сабжу, личным опытом делимся, нет?
61. Михаил Ражиков (tango) 27.06.11 15:43
62. Виталий (nafa) 27.06.11 16:26
(57)
Вы, коллега, по ходу - "сисадмин со знанием 1с"

Не зная броду, не суйся в воду. (с) Народная мудрость.
У ребенка в компе материнка на 754 сокете сдохла, новых не выпускают, купил бушную, а у нее MAC адрес нулевой. Перешил - заработало.
(58)
но и горячие клавиши и дополнительные функции (встроенный поиск файлов, просмотрщик, редактор, сортировка, работа с архивами)
теперь все понятно: эти детские восторги взялись от незнания мат.части - в проводнике это тоже все есть

Есть, неудобные до неработоспособности.
Вот пример простой: надо из каталога, в котором 100 файлов выделить произвольные 30, попутно просматривая содержимое? В Нортоне элементарно - F3 просматриваем, Ins отмечаем. Мышка не нужна. Как это в проводнике сделать (пусть даже с помощью мышки?) (Это я молчу про то, что проводник сделали лет через 15 после Нортона, а уж насколько больше было вбухано денег даже лучше и не думать).
63. Александр Синцов (Sintson) 28.06.11 11:29
(60) Не вижу повода для иронии.
64. vkr (vkr) 28.06.11 12:23
(43) Ну, все файлменеджеры класса FAR, TC и т.д. популярны, в первую очередь,
среди тех, кто умеет грамотно пользоваться клавиатурой.
Потому как скорость работы с файлами в разы выше, чем для мышки.
Эргономика, туды ее в качель... :)
Да и плугинов полезных тоже немеряно для них.

А если по теме - ну вот взяли бы все вместе (кто про обработки и 8.2 знает)
и написали некий FAQ - как НАДО делать и как НЕ НАДО делать...
И визгу было бы меньше...
З.Ы. И я бы тоже поучился у вас с удовольствием... :)
65. Алексей Константинов (alexk-is) 01.07.11 07:04
(64) Так есть же уже и кроме этого находится в непрерывном процессе улучшения. :)
Вот прямая ссылка: http://infostart.ru/
66. vkr (vkr) 01.07.11 09:24
(65) Ну да, ну да... А также DirectHands.sys и SmartHead.sys :)
67. Альтаир (Altair777) 01.07.11 10:13
(62)
nafa пишет:
В Нортоне элементарно - F3 просматриваем, Ins отмечаем. Мышка не нужна

мда.. совсем плохо

исправлено: :)
зачем F3 если есть Ctrl+Q? (в тотале)
68. vkr (vkr) 01.07.11 11:07
69. Damian (Damian) 03.07.11 23:09
C интересом наблюдал за комментариями, порадовали.
Спасибо всем, кто принял участие в обсуждении - и критикующим, и поддерживающим.
Поддерживающим мою точку зрения выражаю благодарность, а критикующим могу сказать следующее:
1. Я ни в коем случае не претендую на звание "гуру" и не являюсь руководителем никакого отдела.
2. Если вы, высокоуважаемые гуру Инфостарта, считаете мою публикацию бесполезной (а кое-кто и вредной), то вы вполне можете написать мне личное сообщение и я ее скрою/удалю (или, на крайний случай, вы можете воспользоваться своими правами модераторов, и удалить ее самостоятельно)
3. Если вы считаете, что на Инфостарте развелось чересчур много "велосипедов", вам пора внедрять систему жесткой премодерации. И, если новая публикация в чем то дублирует уже существующую, необходимо нещадно разить ее автора молниями великого Админа.
4. Я считаю, что этот ресурс был создан для того, чтобы люди обменивались опытом и наработками, независимо от объемов и сфер применения. К примеру, все дети рисуют солнце, и никто (заметьте высокоуважаемые гуру, никто!) не говорит им, что, мол "это солнце уже нарисовал твой сосед Вася, это баян, рисуй лучше синхрофазотрон, его еще никто из наших соседей не изображал" :)
5. Хочется вас спросить, уважаемые tango (основной критикан), Altair777, Арчибальд и, пожелавший оставить минус без комментария, almas, может выйдем на прямой диалог, в котором вы, как гуру Инфостарта, укажете мне на ошибки, в результате чего я смогу делать публикации более полезней для пользователей сайта.
Мы ведь за это боремся, не так ли?..
70. MaxDavid (MaxDavid) 04.07.11 01:40
все дети рисуют солнце

:?: :!: :idea:
71. Михаил Ражиков (tango) 04.07.11 09:08
Damian пишет,
1. Я ни в коем случае не претендую на звание "гуру" и не являюсь руководителем никакого отдела.

по (0) " Я своих молодых сотрудников приучаю "
72. Альтаир (Altair777) 04.07.11 10:19
(69)
Damian пишет:
укажете мне на ошибки

ошибка простая - Вы сбиваете с толку начинающих программистов, навязывая им свои спорные советы
73. Александр Рытов (Арчибальд) 04.07.11 10:49
(69) Вот вспомнилось...
Полковник Фридрих Краус фон Циллергут (Циллергут--
название деревушки в Зальцбурге, которую предки полковника
пропили еще в восемнадцатом столетии) был редкостный болван.
Рассказывая о самых обыденных вещах, он всегда спрашивал, все
ли его хорошо поняли, хотя дело шло о примитивнейших понятиях,
например: "Вот это, господа, окно. Да вы знаете, что такое
окно?" Или: "Дорога, по обеим сторонам которой тянутся канавы,
называется шоссе. Да-с, господа. Знаете ли вы, что такое
канава? Канава -- это выкопанное значительным числом рабочих
углубление. Да-с. Копают канавы при помощи кирок. Известно ли
вам, что такое кирка?"
Он страдал манией все объяснять и делал это с
воодушевлением, с каким изобретатель рассказывает о своем
изобретении.
"Книга, господа, это множество нарезанных в четвертку
листов бумаги разного формата, напечатанных и собранных вместе,
переплетенных и склеенных клейстером. Да-с. Знаете ли вы,
господа, что такое клейстер? Клейстер -- это клей"...
Благодаря приятельским отношениям с корпусным генералом и
другими не менее тупыми военными сановниками старой Австрии он
получал разные награды и ордена, которыми гордился чрезвычайно;
он считал себя лучшим солдатом под луной, лучшим теоретиком
стратегии и знатоком всех военных наук. На полковых смотрах он
любил поговорить с солдатами и всегда задавал им один и тот же
вопрос: почему введенные в армии винтовки называются
"манлихеровки"?
В полку о нем говорили с насмешкой: "Ну вот, развел свою
манлихеровину !"
Istur; Ish_2; MaxDavid; cool.vlad4; +4 Ответить 3
74. Ийон Тихий (cool.vlad4) 04.07.11 10:54
(73) чертовски классная книжка :D я в жизни таких людей встречал, начальников :D вспоминал Гашека и еле от смеха сдерживался....
75. Александр Медведев (anig99) 04.07.11 10:59
76. Ийон Тихий (cool.vlad4) 04.07.11 11:03
77. Ийон Тихий (cool.vlad4) 04.07.11 11:05
:D на лурке даже отрывок этот есть в статье К.О.
78. Сергей Троицкий (tsd) 04.07.11 13:51
(71) Наверное все же более корректно начинать критику статьи не с доказательств, что автор вовсе не "гуру", а "лох чилийский" потому как вот тут, тут и тут код кривоватый пишет, а с разбора самой статьи и ее полезности или вредности.

Кстати, по поводу стандартов в (20) не соглашусь. Использование стандартов сильно упрощает жизнь при разработке/доработке и особенно когда используешь различные нетленки (скачанные в том числе и с Инфостарта).

(69)
69.1 Любой пишущий статью на тему "а это делать лучше так", по сути, выступает в роли некоего гуру делящегося опытом.
69.2 Общение в личке не проходит, статья то публичная, соответственно и обсуждение должно быть публичным.


Лично мне первый абзац статьи даже очень понравился, ибо правильный он :D, а вот дальше как то не очень.

Все ниже написанное, да и выше тоже, является исключительно моим ИМХО никоим образом не претендующим на окончательную инстанцию и т.п.
Вы можете быть не согласны с любым изречением, но ежели доступно не растолкуете почему, то фиг с вами :D

Моя ложка дегтя:

А)
Поставлена задача написать обработку (назовем ее "ОстаткиТоваров"), которая выведет в таблицу значений остатки товаров на складах на указанную дату.

Звиняйте, но если мы пишем статью о правильном использовании объектов, реквизитов, размещении кода и т.п. наверное стоит правильно оперировать видами объектов? Давайте вспомним чем отличается отчет от обработки.
В приведенном примере, "ОстаткиТоваров" как объект метаданных является типичным отчетом и не надо обзывать его обработкой. Это далеко не мелочь, кому придет в голову искать отчет взаиморасчеты или ведомость по товарам на складах в обработках?

Б) Следующие 3 абзаца или часть кода из отчета "ОстаткиТоваров" используется некой другой суперзадачей (я так понимаю другим объектом метаданных).

Возможно просто приведен неудачный пример, но как говорится, что написано пером ...
Начали мы использовать часть кода из отчета "ОстаткиТоваров" в нашей "СуперЗадаче". Через полгода взяли да и хезанули "ОстаткиТоваров" (ну не нужен нам больше этот отчет) и что будет с "СуперЗадачей"?
Возможно стоит обратиться к "ленивому" Abadonne в (15) и вcпомнить предназначение общих модулей?

В) А про какого клиента мы говорим?
В 8.2 в зависимости от режима работы модули форм и объектов используются по разному.
судя по скриншоту и
ЭлементыФормы.МойРеквизит.Значение
разговор идет про толстого клиента и обычные формы (аля 8.1), в (11)говорим про управляемое приложение и тонкие формы.

Если про управляемое, то почему упущен момент разжеванный в (18)? Это концептуальный момент.
Какова ресурсоемкость оператора НашОбъект = РеквизитФормыВЗначение("Объект") для системы?
Что важнее: оптимизация количества кода и удобство его изменения ИЛИ снижение нагрузки на сервер при работе в тонком клиенте или уменьшение объема перегоняемых данных при использовании web интерфейса?

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


Как то очень безапелляционно и без объяснения почему так. А почему, например, не в модуле менеджера, если речь про управляемое приложение?
Из сабжа и всех постов самое логичное и лаконичное в (19).

На мой взгляд, пока минус. Возможно в результате прямого диалога автора с вышеобозначенными гуру мнение свое изменю :D
Ledokol-alt; +1 Ответить 1
79. Аркадий Кучер (Abadonna) 04.07.11 15:01
(73)
Вот вспомнилось...

Неправильная у тебя вспоминалка :D
Там есть гораздо лаконичнее:
Потом фельдкурат пустился в откровенность: рассказал, что он должен за верховые сапоги, за хлыст и седло, что несколько лет тому назад у него был триппер и он лечил его марганцовкой.
80. Виталий (nafa) 04.07.11 23:01
(78)
[quote]Звиняйте, но если мы пишем статью о правильном использовании объектов, реквизитов, размещении кода и т.п. наверное стоит правильно оперировать видами объектов? Давайте вспомним чем отличается отчет от обработки.[/quote]
Ну судя по тому, что вывод предполагается в таблицу значений, а не табличный документ
[quote]Поставлена задача написать обработку (назовем ее "ОстаткиТоваров"), которая выведет в таблицу значений остатки товаров на складах на указанную дату.[/quote]
то есть с ним видимо будут что-то делать, это скорее обработка, чем отчет.
[quote]Начали мы использовать часть кода из отчета "ОстаткиТоваров" в нашей "СуперЗадаче". Через полгода взяли да и хезанули "ОстаткиТоваров" (ну не нужен нам больше этот отчет) и что будет с "СуперЗадачей"?
Возможно стоит обратиться к "ленивому" Abadonne в (15) и вcпомнить предназначение общих модулей?[/quote]
1. А если общий модуль "хезануть", то что-то другое будет?
2. У общего модуля нет реквизитов.
[quote]Из сабжа и всех постов самое логичное и лаконичное в (19).[/quote]
Ну вообще-то еще бывает, что:
1. У обработки нет формы.
2. Необходимо вызывать функция/процедуру в режиме внешнего соединения
Вообще разделение кода между формой и модулем в 8.1/8.2 в нормальном режиме довольно логично. Очень похоже на "взрослые" среды программирования. В 8.2 в управляемом режиме почти все стянули в модуль формы, что реально неудобно.
81. Игорь Дзеса (Kamikadze) 04.07.11 23:03
Что тут сказать - прошел єтот етап по своих же граблях. Думаю, что начинающим сттья будет полезной.
82. Аркадий Кучер (Abadonna) 05.07.11 03:33
(80)
Ну вообще-то еще бывает, что:
1. У обработки нет формы.

Забыл еще один случай: вообще нет обработки :D
Спор ни о чем. Кто как хочет, так @@очит. Лично я полезу в модуль только в крайних случаях, ибо и так достала куча окошек в конфигураторе.
Подход автора не лучше и не хуже, просто один из возможных.
83. Алексей Северянин (Ledokol-alt) 07.07.11 16:23
А действительно, че, общие модуля в восьмерке отменили?

nafa пишет:
1. А если общий модуль "хезануть", то что-то другое будет?


Вобщето общий модуль предназначен, именно, для размещения общих процедур и функций.

nafa пишет:
2. У общего модуля нет реквизитов.


Но есть параметры...

Если же нужна некая форма для "суперзадачи" можно подумать про общие формы.
Уж если есть желание делать правильно, то не нужно делать наполовину правильно.
Нужно выбирать оптимальное решение (где-то модуль формы, где-то модуль объекта, где-то общий модуль и т.д.), а то получается другая крайность: - "новички пишите-ка вы в модуль объекта все, мне как вашему начальнику там удобнее читать".
В общем статья недоделаная что еще больше смутит "новичков". ИМХО.

P.S. Автор воспринимайте критику достойно, а не критикуйте критикующих.
84. Виталий (nafa) 08.07.11 22:07
(83)
1. Вопрос про "хезануть" касался не правильности размещения процедуры в модуле, а то что обработку можно случайно удалить. Так вот мой комментарий был в том, что общим модуль тоже можно случайно удалить. Еще проще. (На обработку могут быть ссылки, которые не дадут это сделать).
2. Про реквизиты и параметры (видимо имеются в виду параметры сеанса). Параметры сеанса как и глобальные переменные не являются заменой реквизитов объекта, так как существуют в единственном числе в то время, как "ОбработкаОбъект" может существовать во множественном числе и реквизиты у различных экземпляров объекта одного класса могут быть разными.
Если же нужна некая форма для "суперзадачи" можно подумать про общие формы.

Те же самые замечания, что и выше. У суперзадачи могут быть также несколько форм, или ни одной формы, но несколько макетов. И т.п. В определенных случаях (а в статье разбирается определенный случай, а не вообще) действительно удобна именно обработка. Пример - внешние печатные формы, обработки обслуживания торгового оборудования и т.п.
85. Сергей Троицкий (tsd) 08.07.11 22:46
(84)
Вопрос про "хезануть" касался не правильности размещения процедуры в модуле, а то что обработку можно случайно удалить

Да нет, как раз не случайно удалить/изменить, а сознательно. Например, по новым требованиям изменить логику работы отчета/обработки с изменением запроса и данных им возвращаемых.
Код расположенный в модулях объекта принадлежит объекту. Если есть некий универсальный код, который может использоваться несколькими объектами метаданных, welcome в общие модули.

Про реквизиты и параметры (видимо имеются в виду параметры сеанса)

:D Извините, улыбнуло. Искренне надеюсь, что это влияние пятницы.
86. Роман Романов (romansun) 08.07.11 22:50
товарищи, не будьте категоричны

Соблюдайте меру - когда мне нужна тупо обработка с N тупыми кнопками и M не менее тупыми полями выбора, я не буду ничего писать ей в модуль объекта, это заставляет меня делать лишние клики, держать в уме два модуля и постоянно перетыкиваться между ними. И ради чего это?

Когда я пишу "объектно-ориентированный" код :), т.е. который будет, к примеру, работать без формы, то, конечно, вовсю задействуется модуль объекта.

Когда я пишу некую, скажем так, подсистему, то логично выносить что-то в общие модули, модули объектов и вся такая пижня таком духе.

Т.е. для разных задач разная реализация и разные трудозатраты.


Вообще, имхо, надо исходить в работе из наиболее оптимальной схемы телодвижений. В идеале. Лишние телодвижения в данный момент оправданы только будущим каким-либо профитом - опытом, масштабируемостью приложения, скоростью работы и т.д.
87. Алексей Северянин (Ledokol-alt) 20.07.11 13:57
(84)

nafa пишет:
Про реквизиты и параметры (видимо имеются в виду параметры сеанса).


Имелись в виду параметры процедур и функций, а не параметры сеанса :)
88. toshka (toshka) 15.09.11 15:20
4. Я считаю, что этот ресурс был создан для того, чтобы люди обменивались опытом и наработками, независимо от объемов и сфер применения. К примеру, все дети рисуют солнце, и никто (заметьте высокоуважаемые гуру, никто!) не говорит им, что, мол "это солнце уже нарисовал твой сосед Вася, это баян, рисуй лучше синхрофазотрон, его еще никто из наших соседей не изображал"


Полностью согласен с автором публикации!!! Ресурс всегда служил хорошим "учебником" для программистов
и очень жаль что в последнее время стало много критики "интелекта" авторов, а не реальных советов.
89. Алексей Потехин (trumanl) 28.02.12 17:21
Полезные советы в понятной форме всегда пригодятся) Спасибо.
90. Алина Сорокина (alina.sorok) 29.02.12 13:08
Эх, вот вам еще крик души - да, сделали управляемые формы, но как-то так топорно:
1. Почему в серверных методах недоступены методы самого объекта? Почему обязательно РеквизитФормыВЗначение() для основного реквизита вызывать надо?
2. И при этом РеквизитФормыВЗначение() не срабатывает для внешних отчетов-обработок. И как такое отлаживать?
3. А еще у внешних нет команд объекта, и менеджера значений. И как так работать можно?
4. Кстати, о менеджере. Почему было не предусмотреть простой синтаксис вызова его методов, например как статических методов объекта/формы, а не обязывать писать длинный путь. И еще, когда объект копируется - этот путь менять?
5. Почему передача значений типа ДанныеФормы*** въявную напрямую между клиентом и севером запрещена? Хотя спокойно выполняется системой при контекстной передаче? Ну вот почему нельзя без контекста прямо передать на сервер строку ТЧ, а надо оборачивать ее в структуру, а потом разворачивать обратно?
6. И, в конце концов, если уж они так пекутся о быстродействии - почему не сделали реквизитов, непередаваемых на сервер при контекстном вызове?

Итого: идеальным вариантом было бы, когда система сама подталкивала к объектному подходу и разделению фуккционала между обработкой и отображением. А на такое разделение и архитектура клиент-сервер влегкую ложится. Но на практике имеем: система наоборот, подталкивает к пиханию всего кода в форму, объектного подхода - никакого, клиент-серверность - да, есть, но от основного потока мышления "типичного 1Сника" где-то сбоку. Семерка возвращается!
91. Борис Моренко (BorisMor) 23.10.12 21:20
ИМХО автор прав.
Логика помещается в "модуль объекта". Код отвечающий за обработку действий пользователя в "модуль формы".
Если конфа своя, то поместить функцию в "модуль менеджера" регистра из которого извлекаем данные.
Общие модули использовать "Если функциональность невозможно однозначно отнести к тому или иному объекту метаданных" (с) ИТС
92. Виталий (nafa) 23.10.12 23:42
(91)
Общие модули использовать "Если функциональность невозможно однозначно отнести к тому или иному объекту метаданных" (с) ИТС

Эти деятели (ИТС) лучше бы свои ошибки пошустрее исправляли, а куда функции помещать мы и без них разберемся.
В общие модули код, относящийся к конкретному объкту помещать приходится очень часто. Например
- общие модули могут быть разные (клиент, сервер, переопределяемый, привелигированный и т.п.), а модули менеджеров такого не имеют
- функции/процедуры общих модулей можно использовать в СКД, подписке, меню (в нормальном (не управляемом) интерфейсе) (хотя может что из этого и из менеджеров брать сейчас можно, не знаю, но уверен, что не все).
- при использовании штатного средства коллективной разработки (хранилища) модуль объекта может редактировать только один разработчик, а если надо нескольким одновременно то как ?
- просто функциональность объекта такая, что надо растащить на несколько модулей для собственного же удобства
- и т.п.
И насчет модулей менеджеров. Во "взрослых" языках программирования типа С++ наличие у класса методов не использующих конкретный экземпляр объекта как ни странно, не требует отдельного модуля. У нас как всегда через одно место. И "модуль менеджера" - по моему дает больше путаницы чем порядка.
93. Борис Моренко (BorisMor) 24.10.12 10:16
(92)
Да в чем то вы правы. Общие модули с пометкой "привилегированные" действительно не вписываются в картину мироздания) Но зачастую использование таки модулей дело исключительное.

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

Тоже соглашусь. "модуль интерфейса" возможно и правда был лишним. Логично в "модулей объекта" помечать процедуры и функции как "статические", а не создавать новый модуль.
Но раз сделано так, а не по другому, то будем пользоваться "модулем интерфейсов".
94. Сергей Иванов (Lokon) 10.12.12 20:34
А я согласен целиком и полностью с автором.. Порядок в обработке = порядок в мозгах... Но ведь все люди разные, при этом не значит, что они плохие... как и обработки :-)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа