Имя: Пароль:
1C
1С v8
Методология решения задач и написания кода
0 Explorer1c
 
26.01.15
14:44
Хай! Начал писать сложный отчет и столкнулся с проблемой того, что запутался в алгоритмах и процедурах.

Обычно я делал так- в уме представлял алгоритм решения и реализовывал его, иногда на бумаге пару таблиц рисовал. Затем писал функции и потом обращение к ним в процедурах, а как вы решаете запутанные задачи, как строите алгоритм и по какой схеме пишите код?
1 фобец
 
26.01.15
14:48
Если совсем запутался - начинай с нуля
2 Лефмихалыч
 
26.01.15
14:49
я распутываю запутанное и оно перестает быть запутанным. В уме.
3 Челбас
 
26.01.15
14:50
большинство отчетов сейчас вообще не требуют написания кода "в ручную"
4 nordbox
 
26.01.15
14:51
Начинается все с похода в магазин.
Потом пачку бумаги, можешь для удобства цветные ручки взять,
садишься за стол и начинаешь рисовать.
А если серьезно:
ТЗ, если нет, нуно четко нарисовать объяснить самому себе что ты хочешь.
В уме моно только мелочь всякую нарисовать, и то не факт.
5 Hans
 
26.01.15
14:53
Обычно пишу центальную процедуру в которой последовательно выполняются все действия.  Пишу имена планируемых процедур и фукнкций ы ней. Потом описываю каждую процедуру по порядку.

Ты судя повсему делаешь наоборот снизу вверх, я сверху вниз.
6 фобец
 
26.01.15
14:53
Вначале было кнопко..
7 Garykom
 
гуру
26.01.15
14:53
(0)(4) а может просто с детства мозги тренировать? ))

ексель/ворд универсальная фигня для написания ТЗ и рисования схем
8 фобец
 
26.01.15
14:56
(5) +1
Начинаешь писать основную процедуру.. Последовательно, реализацию функций можно вообще на конец оставить, имена то ты им уже придумал и знаешь что возвращают...
9 Fish
 
26.01.15
14:57
(0) Иногда для программирования полезным бывает иметь профильное образование, чтобы не путаться в алгоритмах и процедурах.
10 kumena
 
26.01.15
14:57
>> Начал писать сложный отчет и столкнулся с проблемой того, что запутался в алгоритмах и процедурах.

а я всегда полагал, что отчет это запрос.
11 kumena
 
26.01.15
14:58
+10 один запрос
12 фобец
 
26.01.15
14:59
(10) это всего лишь необязательная его часть..
13 kumena
 
26.01.15
15:00
>> большинство отчетов сейчас вообще не требуют написания кода "в ручную"

они и в 8.0 не требовали написания кода, построитель и конструктор отчетов никто не отменял.
14 piter3
 
26.01.15
15:01
(12)стесняюсь спросить,а что тогда?
15 Челбас
 
26.01.15
15:01
(13) кто-то против?
а если это отчет с фотографиями?
16 фобец
 
26.01.15
15:02
(14) для выборки запрос не обязателен
17 kumena
 
26.01.15
15:02
(12) кому как, для меня запрос это основной источник данных. он видимо табличной моделью пользуется.
(15) а что с фотками не так? в зупе есть отчеты с фотками.
18 piter3
 
26.01.15
15:04
(16)процентное соотношение все-таки за запросами
19 vde69
 
26.01.15
15:04
есть такой подход:


1. сначало пишутся в модуле глобальные коментарии,
2. потом под них пишется код
3. дооформляется мелкими коментариями
20 Челбас
 
26.01.15
15:05
(17) я не умею делать такие отчеты не написав код вручную
21 kumena
 
26.01.15
15:08
(20) я вообще не умею делать отчеты с фотками, но полагаю, если надо будет разберусь и думаю кода там дописать надо не много. за много лет ни разу не надо этого было, так что давайте оставим фотки как частный случай.
22 фобец
 
26.01.15
15:09
СКД - прекрасный и очень удобный инструмент для простых отчетов и печатных форм. Но там где нужно изголяться, скд не подойдет.. В декабре делал хитрый отчет один, 4 функции, 450 строк кода из них текст запроса тольо ~100 строк. Отчет с хитрыми колонтитулами, подвалом в нижней 1/3 последнего листа, печатается дуплексом, начиная с четной страницы (типа формата а3), расчет высоты строк второго листа в соответствии с первым, на первой нечетной оглавление с рассчетом страниц...
23 Garykom
 
гуру
26.01.15
15:10
(19) тогда проще сразу процедуры/функции - пустые заглушки писать вместо комментов (ну или с ними)
24 фобец
 
26.01.15
15:12
+22 и горизонтальное и вертикальное объединение некоторых колонок и строк
25 kumena
 
26.01.15
15:13
(22) отчет это информация, а то что вы написали это финтифлюшки для удобства.
26 Fish
 
26.01.15
15:15
(25) Т.е. ты за написание неудобных отчётов?
27 Timon1405
 
26.01.15
15:18
(0) как вариант, запутался: рисуй макет + запросы в цикле, чтобы уже была нужная инфа перед глазами. может, пока будешь писать, поймешь, как убрать циклы.
28 фобец
 
26.01.15
15:18
(25) нет, это некая унифицированная форма
29 Lama12
 
26.01.15
15:19
(0) Использую UML. Даже если отложить задачу на долго, то потом по диаграммам можно поднять память и понимание задачи и какую архитектуру закладывал.
30 kumena
 
26.01.15
15:19
(26) как вы это поняли?
31 kosts
 
26.01.15
15:20
(0) Этому за 5 минут не научишься.
Опыт+Обучение+Литература(методики)+Здравый смысл
32 PCcomCat
 
26.01.15
15:20
(26) Есть клиенты, которые сами рисуют на бумаге отчеты, и их не волнует, что предлагаешь ты - им нужно именно так, как они нарисовали. К сожалению, конструкторы в таких ситуациях бессильны (это чертовы разукрашечки), а клиент всегда прав, какой бы замороченный он не был.
33 Timon1405
 
26.01.15
15:23
(29) Не судите строго, но как UML поможет, скажем, в абстрактной задаче: нужно в запросе раскидать сумму по коэффициетнтам с точностью до целого?
34 kosts
 
26.01.15
15:25
(0) Раскладывай задачу на блоки.
Пиши самодокументирующийся код (т.е. функции и имена переменных, реквизиты должны отражать суть).
Раскладывай код на отдельные функции.
Не пиши универсальные функции без необходимости.
Не используй множественную вложенность.
Почитай на диске ИТС статьи с рекомендациями.
Вот полезная книга, но как теория http://www.books.ru/books/refaktoring-uluchshenie-sushchestvuyushchego-koda-fail-pdf-552092/?show=1
35 Fish
 
26.01.15
15:25
(30) Как правило, как раз на "финтифлюшки для удобства" и уходит больше всего времени и написания кода.
36 kosts
 
26.01.15
15:27
При получении данных используй запросы. Получается намного более простой код. Часто и быстрее работающий.
37 vi0
 
26.01.15
15:32
пиши псевдокод
38 Explorer1c
 
26.01.15
15:56
О, как много разных подходов-круто! Начну пользоваться каждым для оптимизации работы, потом скажу о результатах)
39 Explorer1c
 
27.01.15
08:25
Пишем еще примеры работы! например сегодня делал доработку и не перепроверил итоги, пользователь в панике был. Т.е даже если самы простой код добавляете не в свою разработку надо перепроверять тк там хз как че подвязано
40 VladZ
 
27.01.15
09:10
Тебе нужен алгоритм разработки алгоритмов? :)
41 Explorer1c
 
27.01.15
09:19
(40) В точку!)
42 MSOliver
 
27.01.15
09:29
(41) сколько показателей в отчете?
43 Адский плющ
 
27.01.15
09:31
Запутанных задач не бывает. Бывает го*но в голове, которое транслируется в код.
44 Explorer1c
 
27.01.15
09:33
(42) это отчет из 700 строк, для каждой практически свой расчет нужен
45 VladZ
 
27.01.15
09:34
(41)  По этой теме целые книги написаны. Ищи, читай.
Можно, конечно, примерный план накидать. Но всяко будут вопросы по ходу. Учитывая, что форум - это не всегда сообщения по теме, есть вероятность, что будет больше мусора чем важной инфы.
46 Explorer1c
 
27.01.15
09:35
Проблема в том что пишешь придумываешь алгоритмы , а когда их много путаешься что откуда растет, может написать систему расчета, зафиксировать в экселе  и дальше и тп
47 Explorer1c
 
27.01.15
09:35
(45) Книг много, а вот какую посоветуешь, лучшую?
48 VladZ
 
27.01.15
09:35
(44)  700 строк - это не так уж много. Было дело, на 7.7 ваял обработки более 3х тысяч строк.
49 VladZ
 
27.01.15
09:37
(47)  Эм... Пороюсь дома в архивах - чиркану.
50 Explorer1c
 
27.01.15
09:45
(49) спс!
51 MSOliver
 
27.01.15
09:51
(44) Вы не ответили про показатели. 700 показателей в отчете это бред.
52 MSOliver
 
27.01.15
09:52
Чё хотим в отчете в студию)
53 MSOliver
 
27.01.15
09:53
Либо не верная система хранения БД. Отчет должен собирать данные а не делать Мега-расчеты.
54 nordbox
 
27.01.15
09:54
(50) Я проходил эти грабли и не раз
Пункт первый и наверное единственный который ОООчень нужен я как правило его не соблюдаю: Когда что то пишешь пиши четкие и внятные коменты, время ни так много занимает, результата  дофига.
Когда сильно запутываюсь, тупо делаю распечатку всего что есть, раскладываю и обычной ручкой начинаю писать комены что и для чего я сделал.
55 nordbox
 
27.01.15
09:56
+54 незнаю у кого как, но распечатанный текст я более нормально воспринимаю чем с экрана
56 nordbox
 
27.01.15
09:58
MSOliver(53), ой не говори так, несогласен, расчетов оооочень много бывает.
в спор вступать не буду
57 nordbox
 
27.01.15
10:02
+56 для примера тебе
например: есть цена закуп, есть цена продажи(их несколько) менялись ручками.
Задача: Вывести в таблицу номенклатурe, цена закуп, цена продажи и процент наценки
Это самый простой пример
процент ты же ни где не хранишь и не знаешь, вот и считай.
58 MSOliver
 
27.01.15
10:08
(57) это сложно? В СКД делается без программирования в пользовательских полях...
59 Explorer1c
 
27.01.15
10:14
(58) Это типо баланса, но по каждому счету надо вытаскивать свои определенные данные , которые иногда с корсчетов подтягиваются, иногда с вида субконто(ГруппаОС, ВидНМА)+ еще есть условия, могу скинуть файлик
60 MSOliver
 
27.01.15
10:18
(59) Делал подобное для ЖКХ (там мудрёностей напридумывали) итог отчет есть - вводим тестовые данные он выдаёт контрольный результат - но отчётом ни кто пользоваться так и не научился - только табличных частей (настроек) одиннадцать штук. Итог: похоронили... Отчет не должен делать МЕГА-расчетов...
61 IШаман
 
27.01.15
10:20
(0) Да мы особо не креативим, пишем ТЗ далее по нему уже составляем план реализации.
62 IШаман
 
27.01.15
10:21
+(61) Кстати, вспомнив недавнюю ветку автора в которой все миром решали "мега задачу", думаю что не мудрено что он путается.
63 Адинэснег
 
27.01.15
10:23
(0) >запутался в алгоритмах и процедурах
витамины мож какие для памяти?))
64 Галахад
 
гуру
27.01.15
10:25
(0) Надо сделать над собой усилие.
Закрыть браузер и уделить работе хотя бы пару часов.
65 Trance_1C
 
27.01.15
10:45
(0) для проектирования запутанной логики с глубоким ветвлением хорошо подходят майнд-карты MindManager например
66 Explorer1c
 
27.01.15
10:48
благодаря этой ветктке уже сейчас такой подход использую- сначала прописываю условие потом дописываю текс, уже помогло кое-что распутать, в экселе тако текст

а) перебираем все строчки из шаблона, в колонке которых есть "ГруппаКорСубконто"

б) на каждую строку вызываем процедуру "ПолучитьТаблицуДляРасчетаПоКорСубконто"

в этой процедуре  ищем строки из шаблона в которых есть "КорСубконто" со счетом строки- группы

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

в) на выходе  выполняем запрос и выгружаем в ТЗ

г) при вывое строк ищем в ТЗ нужные строки, подставляем в выходнуюю форму
67 vi0
 
06.02.15
16:07
68 Добрый_фей
 
07.02.15
17:25
+60 согласен на все 100% простота и краткость - сестра таланта
69 PR
 
07.02.15
17:37
Удивительно, но правильный ответ только аж в (34) посте.
70 Explorer1c
 
07.02.15
20:21
+ Еще, как главное условие, хотел бы добавить- полную проработку решения. без участков. начнем а там получится, а то у меня получилось, что все сделал а для последней задачи думал походу решу, оказалось для последней задачи надо было переделать все предыдущие пункты