Вход | Регистрация
    1  2  3  4   
1С:Предприятие :: 1С:Предприятие 8 общая

Аудит конфигурации 1с

Аудит конфигурации 1с
Я
   ВикторП
 
12.04.20 - 08:58
Вопрос по теме- досталась конфигурация с внесенными к типовой изменениями.

Есть ли структура, которой можно отдать конфигурацию на аудит , например , на соответствие стандартам разработки?
Интересуют сроки, стоимость.
   NorthWind
 
101 - 13.04.20 - 19:22
(95) крапотливая - это от слова "крап", что ли? Как крапленая карта? :)
   Конструктор1С
 
102 - 13.04.20 - 19:50
(98) вот как раз непонятно, какие тараканы бесились в голове у программиста, когда он данные из БД получал сильно загодя. Особенно умиляют менеджеры временных таблиц, протаскиваемые через 100500 процедур и функций. Перед использованием данные-то никак не получить, не-а. Нужно чтобы они в менеджере ВТ как следует потомились, и только потом их можно использовать
   vi0
 
103 - 13.04.20 - 20:05
(102) без конкретного примера можно что угодно осуждать, и не придерешься
   palsergeich
 
104 - 13.04.20 - 21:10
(33) Да без проблем.
Сделать как в БСП, с поставкой поставлять файл особенностей.
На самом деле сделать так что бы АПК не ругался очень просто, но это мало относится к качеству кода.
Я приводил нетленку к совместимо, несколько тысяч ошибок за 2 вечера поправил.
Но еще раз повторю - АПК и качество кода - разные вещи.
   palsergeich
 
105 - 13.04.20 - 21:39
Просто к чему спич выше - прописав требования к прохождению АПК - будь готов получить код, который проходит АПК.
Есть конечно BSL, но он еще только развивается.
Готового автоматизированного средства для проверки кода нет.
Только глазами.
Но это уже субъективная оценка, и в договор не всунешь.
Объективных на 100% метрик нет.
   Вуглускр1991
 
106 - 13.04.20 - 21:50
(51) ЭТО ТЫ СЕЙЧАС КОГО ПОСЛАЛ?
   WorkOut_Man
 
107 - 14.04.20 - 00:14
Ясно, в общем тема норм, слепой укажет всем дорогу.
   WorkOut_Man
 
108 - 14.04.20 - 00:14
Оказалось что наш аутдитор чуть смекалистее подавана, но гонору то гонору.
   WorkOut_Man
 
109 - 14.04.20 - 00:16
У меня вопрос, аудитор из (0) ты какими сертификатами обладаешь? Какие у тебя ордена? есть спец по платформе? Или эксперт? Может ты владеешь сертификатом 1с Эксплуататор?
   vi0
 
110 - 14.04.20 - 04:46
(105) "Есть конечно BSL"
Что такое сие?
   palsergeich
 
111 - 14.04.20 - 06:24
(110) https://github.com/1c-syntax/bsl-language-server
Погугли, ребята интересную штуку делают.
   quest
 
112 - 14.04.20 - 06:31
для тех кому джава не вставляет - https://github.com/lead-tools/bsparser
   quest
 
113 - 14.04.20 - 06:33
ну а для тех кому и 1С не вставляет - https://gitlab.com/wwall/styleguide - но там давно затишье
   palsergeich
 
114 - 14.04.20 - 07:16
(109) ну скажем так Эесплуататор и Эксперт это не про качество кода.
   WorkOut_Man
 
115 - 14.04.20 - 09:04
(114) Да я и не говорю про качество кода, у меня сомнения в комтенециях ТС. Совершает детскую ошибку, что то увидал, не понял, сразу ломать начал
   ВикторП
 
116 - 14.04.20 - 09:49
Провел еще одну проверку в конфигурации АПК

До этого я проверял только добавленные объекты 
Этих объектов 759 , ошибок было - 16349 
провел проверку всей конфы - объектов 50 729 , ошибок 33602

т.е. расклад такой -на примерно 50 тыс объектов у разработчиков 1с ошибок 33602-16349=17253 , т.е. примерно 17 тыс 
или примерно 1 ошибка на 3 объекта

у разработчика/ов допиленной конфигурации 16 тыс  ошибок на 700 объектов,
или примерно 23 ошибки на 1 объект конфигурации

т.е. разработчики типовой в десятки раз меньше делают ошибок по требованиям соответствия стандартам разработки

измерения проводил в демо-базе конфигурации автоматизированная проверка конфигураций редакция 1.2.5.30
   WorkOut_Man
 
117 - 14.04.20 - 10:14
(116) Отлично, т.е. теперь ты начал в кале разбираться. Этот калл значит хороший, этот калл плохой. Продолжайте самодеградацию и слепое превращение себя в человека с низкой социальной ответственностью.
   drcrasher
 
118 - 14.04.20 - 10:25
обожаю радость от АПК.
был опыт пиления отраслёвки. АПК в среднем давало 400-600 ошибкок, из которых 90% были синтаксическими (ну не знает АПК массы специфических терминов).
подтребовалось добавить БСП. добавили. совместимо само себя не сдаст, требуется отчет из АПК. прогнали, 18к ошибок в БСП.

наслаждайтесь качеством кода типовых, да.
   polosov
 
119 - 14.04.20 - 10:29
(102) Есть такая рекомендация при работе с БД - "По возможности получай все нужные данные за один запрос". За память переживать не стоит, не восьмидесятые года вроде на дворе.
   WorkOut_Man
 
120 - 14.04.20 - 10:33
(119) Дааааа, особенно в зупе 3.0, она как как при инфаркте, еле дышит со своими мегазапросами. Про ерп молчу, это вообще труп.
   ВикторП
 
121 - 14.04.20 - 10:51
(118) орфографических, наверное
   WorkOut_Man
 
122 - 14.04.20 - 11:01
(121) О какихОшибкахИдетРечьКогдаВ1С_ПишетсяВсеВОднуСтроку????
   ВикторП
 
123 - 14.04.20 - 11:11
контагент  , например считается орфографической ошибкой
   Йохохо
 
124 - 14.04.20 - 11:22
(123) а КонтАгент?
   WorkOut_Man
 
125 - 14.04.20 - 11:32
(123) МожноПисатьМатомГлавноеКаждоеСловоС_БольшойБуквыИБудетНормНоПродуктБудетФиговый
   palsergeich
 
126 - 14.04.20 - 11:41
(118) Когда это было? 2 года назад с файлом особенностей . который был в поставке АПК выдавал 0
   Bigbro
 
127 - 14.04.20 - 11:48
(119) то то при внедрении ЗУП 3.1 клиенты при расчете зп падали с нехваткой памяти ))))
а на 64х 2д коды не работали... эхъ
   WorkOut_Man
 
128 - 14.04.20 - 11:56
(127) Потому что ЗУП 3.1 рожден при обмороке с инфарктом.
   NeoVision
 
129 - 14.04.20 - 12:40
Зуп 3 - это топ тяжелых конфигураций 1с, никакой erp (его части без блока зуп) и близко не лежали
   WorkOut_Man
 
130 - 14.04.20 - 13:28
(129) Ну да, установка цен номенклатуры в ерп просто кладет базу если очень крепкий прайсик пригрузить
 
 Рекламное место пустует
   WorkOut_Man
 
131 - 14.04.20 - 13:34
А если пригружать в ЕРП хорошие файлики, да помногу, то работа в базе просто останавливается.
   Immortal
 
132 - 14.04.20 - 13:36
(130) ога, там в целом с РС проблемы, лучше отдельно текущие цены хранить
   Immortal
 
133 - 14.04.20 - 13:37
ну и ЗУП по архитектуре тупой отстой, да простят меня коллеги
   WorkOut_Man
 
134 - 14.04.20 - 13:38
(132) Да маза фака! Там лучше цены вообще не трогать, все делается через анус маркетинговых мероприятий, это такое очко! Это просто очеллО!!!!!! Зафакать того кто это вообще пустил в продакшн этот ерп
   WorkOut_Man
 
135 - 14.04.20 - 13:39
(133) Да все нормально брат. ЗУП 3.1 мера вынужденная, но тупая глупая и долгая. А в кишках вообще без пол литры не разобраться
   WorkOut_Man
 
136 - 14.04.20 - 13:43
А если надо быстро что то, то тут либо уже повторяющаяся ошибка, либо долгий полет по внутренностям.
   Конструктор1С
 
137 - 18.04.20 - 05:49
(119) рекомендация-то хорошая, только вот некоторые трактуют её по-своему. Под "одним запросом" фирма 1с, очевидно, имела ввиду однократное полученые данных из одной таблицы. А не получение одним запросом данные из 15-ти таблиц на будущее и на всякий случай

"За память переживать не стоит, не восьмидесятые года вроде на дворе"

Ну давай теперь будем бездумно разбрасываться ресурсами. А потом "чё это ваша 1с такая тормозная" и "чё это 1с сожрала всю память". Это ещё хорошо, что с разделением на клиент и сервер фирма 1с перекрыла кислород некоторым извращенцам. Менеджер временных таблиц не сериализуется и не сохраняется между серверными вызовами. Во времена ОФ неоднократно сталкивался с особым видом извращения - хранением менеджера ВТ в глобальной переменной
   Cyberhawk
 
138 - 18.04.20 - 09:09
(137) "Под "одним запросом" фирма 1с, очевидно, имела ввиду однократное полученые данных из одной таблицы. А не получение одним запросом данные из 15-ти таблиц на будущее и на всякий случай" // Ошибаешься
   acht
 
139 - 18.04.20 - 09:47
(137) > только вот некоторые трактуют её по-своему.
Бинго, толкователь.
   Конструктор1С
 
140 - 18.04.20 - 10:38
(138) поясни
   Конструктор1С
 
141 - 18.04.20 - 11:02
Что-то не так в этом королевстве. В любом букваре по программированию можно прочитать, что время жизни данных нужно минимизировать, "область видимости" данных нужно уменьшать. Но 1сники продолжают как родных детей защищать привычки говнокодинга
   Морзе
 
142 - 18.04.20 - 11:04
(141) Я так думаю, что они в конце концов придут к состоянию "безобразно, зато однообразно". Если уже не пришли.
   Лефмихалыч
 
143 - 18.04.20 - 11:16
(0) да я тебе не глядя скажу, что на стандарты разработки там сложен болт таких размеров, что даже в тигровую акулу не влезет.



Ветку не читал, но вангую, что заказчик про*бался с ТЗ, получил 10% того, о чем мечтал, и теперь пытается получить бесплатно остальные 90% того, о чем не сказал.

Старше этой истории - только первый анкдот про проститутку
   Конструктор1С
 
144 - 18.04.20 - 11:20
(142) пока что безобразность выглядит вот так:

Процедура ИзлюбленныйГовнокодинг()

  МногоТаблиц = ВытащитьИзБазыДлиннющимПакетнымЗапросомПятьГигабайтДанных();

  ПерваяПроцедураНаПолчаса(МногоТаблиц.ПерваяТаблица);// Все 5 Гб висят в памяти

  ВтораяПроцедураНаПолчаса(МногоТаблиц.ВтораяТаблица);// 5 Гб продолжают висеть в памяти

  ТретьяПроцедураНаПолчаса(МногоТаблиц.ТретьяТаблица);// 5 Гб по прежнему висят в памяти

  ЧетвертаяПроцедураНаПолчаса();// Данные уже давно не нужны, но пускай ещё повисят в памяти


КонецПроцедуры// фух, наконец-то память можно очистить


и мне продолжают доказывать, что это бэст практикс. Видимо у них что-то отвалится, если сделают хотя бы вот так (хотя это тоже безобразие):

Процедура УчимсяНеРазбазариватьВычислительныеРесурсы()

  ПорцияДанных = ВыполнитьПервыйЗапрос();// Получили только то, что требуется в данный момент

  ПерваяПроцедураНаПолчаса(ПорцияДанных);
  ПорцияДанных = Неопределено;// Удалили из памяти


  ПорцияДанных = ВыполнитьПервыйЗапрос();// Получили только то, что требуется в данный момент

  ПерваяПроцедураНаПолчаса(ПорцияДанных);
  ПорцияДанных = Неопределено;// Удалили из памяти


  ПорцияДанных = ВыполнитьВторойЗапрос();// Получили только то, что требуется в данный момент

  ВтораяПроцедураНаПолчаса(ПорцияДанных);
  ПорцияДанных = Неопределено;// Удалили из памяти


  ПорцияДанных = ВыполнитьТретийЗапрос();// Получили только то, что требуется в данный момент

  ТретьяПроцедураНаПолчаса(ПорцияДанных);
  ПорцияДанных = Неопределено;// Удалили из памяти


  ЧетвертаяПроцедураНаПолчаса();

КонецПроцедуры
   Cyberhawk
 
145 - 18.04.20 - 11:30
(140) В (139) тебе тоже говорят, что ты понял все наоборот
   Морзе
 
146 - 18.04.20 - 11:43
(145) Да вроде вполне очевидно, что в некоторых случаях лучше сразу вытащить все данные из БД, а в некоторых вытаскивать данные по месту. А вот как отличить одни случаи от других, 1С как-то не определилась :(
   Конструктор1С
 
147 - 18.04.20 - 11:44
(145) серьёзно? Ну ок, тогда поясни, у кого и что отвалится, если вот такой запрос превратится в три отдельных запроса. Каждый из которых выполнится там, где данные будут нужны, а не там, где разработчику приспичило сделать один длинный запрос

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Касса", Касса);
Запрос.Текст = 
"// Эти данные нужны сразу

|ВЫБРАТЬ
|    ДвижениеТоваровОбороты.Номенклатура КАК Номенклатура,
|    ДвижениеТоваровОбороты.Характеристика КАК Характеристика,
|    ДвижениеТоваровОбороты.ПланируемоеПоступлениеОборот КАК ПланируемоеПоступлениеОборот,
|    ДвижениеТоваровОбороты.ПланируемоеПоступлениеПодЗаказОборот КАК ПланируемоеПоступлениеПодЗаказОборот
|ИЗ
|    РегистрНакопления.ДвижениеТоваров.Обороты(, , , &Номенклатура) КАК ДвижениеТоваровОбороты
|;
|
////////////////////////////////////////////////////////////////////////////////

|// Эти данные понадобятся через 3 тысячи строк кода 

|ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
|    ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
|    ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
|    ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
|;
|
////////////////////////////////////////////////////////////////////////////////

|// Эти данные понадобятся через 7 тысяч строк кода

|ВЫБРАТЬ
|    ДенежныеСредстваНаличныеОстатки.СуммаОстаток КАК СуммаОстаток,
|    ДенежныеСредстваНаличныеОстатки.СуммаУпрОстаток КАК СуммаУпрОстаток,
|    ДенежныеСредстваНаличныеОстатки.СуммаРеглОстаток КАК СуммаРеглОстаток
|ИЗ
|    РегистрНакопления.ДенежныеСредстваНаличные.Остатки(, Касса = &Касса) КАК ДенежныеСредстваНаличныеОстатки";
Результат = Запрос.ВыполнитьПакет();
   Конструктор1С
 
148 - 18.04.20 - 11:48
(146) данные должны получаться по месту использования. Даже не вижу никаких оправданий манере получать данные сильно загодя и прозапас
   Морзе
 
149 - 18.04.20 - 13:41
(148) Я про то, что можно, например, получить цены на всю номенклатуру заказа одним запросом, а можно по запросу на каждую номенклатуру. И оба эти решения могут быть правильными в различных случаях.
   acht
 
150 - 18.04.20 - 14:30
(144) Весьма показательная упоротость разработчика-"оптимизатора", кстати. То, что обработка данных занимает 2 часа (4 x 0.5) - это похер, будем бороться за чистоту помыслов.
   acht
 
151 - 18.04.20 - 14:40
(148) Чуви, 1С - многопользовательская система. И когда ты полчаса в чем-то ковыряешься, у тебя данные базы могут изменится так, что тебе придется выбросить свои расчеты.
   ДенисЧ
 
152 - 18.04.20 - 14:57
(151) Транзакции с блокировками? Не, никогда не слышал...
   acht
 
153 - 18.04.20 - 15:01
(152) Ты ветку-то почитай
   vi0
 
154 - 18.04.20 - 15:33
(144) ты какие то куски кода в вакууме приводишь
приведи реальный код с замерами
   Морзе
 
155 - 18.04.20 - 15:39
(152) То-же, интересный вопрос - возьмём заказ на 1000 позиций, получаем цены на все 1000, и далее до конца наших хитрых расчетов блокируем любые изменения цен?
   ДенисЧ
 
156 - 18.04.20 - 15:49
(155) А зачем нам все цены сразу и держать их? Получать и сразу записать...
(153) Это не наш метод.
   Конструктор1С
 
157 - 18.04.20 - 16:24
(150) вообще-то это был лишь условный пример, чтобы до тебя дошло, что пока полученные одним запросом данные порожняком висят в памяти, может пройти значительное количество времен

(151) если ты такими способами борешься за чистоту данных, то тебе лучше уйти из 1с
   Конструктор1С
 
158 - 18.04.20 - 16:24
(154) нет под рукой. Но поверь, такое встречается частенько
   acht
 
159 - 18.04.20 - 16:33
(157) Да, сэр! Так точно, сэр! Разрешите не касаясь пола, сэр?
   vi0
 
160 - 18.04.20 - 17:00
(158) зачем мне верить или не верить, я отлично знаю как бывает, и что гкода хватает
ты с какой целью какие то абстрактные случаи гкода здесь приводишь и очень долго уже обсуждаешь?
 
 Рекламное место пустует
   vi0
 
161 - 18.04.20 - 17:02
(160) уже неделю почти обсасываешь эти запросы в вакууме
   Cyberhawk
 
162 - 18.04.20 - 17:54
(147) "поясни, у кого и что отвалится" // Замена единого запроса на несколько последовательных может повлечь нарушение исходной логики, т.е. полученный результат уже может отличаться от того, который был до разбиения
   Конструктор1С
 
163 - 18.04.20 - 17:59
(160) случаи не абстрактные. Проблем с производительностью полно, что в типовых, что в отраслёвках. Пока они работают на небольших объёмах данных, с небольшим количеством пользователей, всё нормально. Но стоит их попытаться запустить в крупном холдинге, сразу наступает веселье
   Конструктор1С
 
164 - 18.04.20 - 18:04
(162) если система так чувствительна к timestamp, то скорее всего проблема в архитектуре, или в организации работы. На моём предприятии все сложные и чувствительные к изменениям расчеты выполняются регламентными заданиями в ночное время
   acht
 
165 - 18.04.20 - 18:23
(164) >На моём предприятии все сложные и чувствительные к изменениям расчеты выполняются регламентными заданиями в ночное время

Что, в свою очередь, говорит о проблемах в архитектуре. Ну, или в организации работы.
   VladZ
 
166 - 18.04.20 - 18:40
(163) А кто сказал, что конфигурации разработаны для крупных компаний?
   Конструктор1С
 
167 - 18.04.20 - 18:50
(165) не-а. С архитектурой и организацией работы всё тип-топ. Фирма 1с сама рекомендует выносить сложные расчеты в незагруженные периоды
   Конструктор1С
 
168 - 18.04.20 - 18:51
(166) никто не говорил. Но фирма 1С позиционирует же свои типовые как "подходящие всем"
   Cyberhawk
 
169 - 18.04.20 - 18:54
(168) В хайлоаде свои правила, и чаще противоположные всяким официальным рекомендациям и стандартам разработки
   vi0
 
170 - 18.04.20 - 19:03
(163) что "наступает веселье"? приведи конкретные сценарии, где проявлялась неоптимальность конкретного кода
а так ты воду в ступе толчешь
   vi0
 
171 - 18.04.20 - 19:04
(168) нет такого позиционирования у 1с
   RayCon
 
172 - 18.04.20 - 19:37
(0)
>Есть ли структура, которой можно отдать конфигурацию на аудит,

Я делаю такой аудит в части РСБУ и МСФО.


>например , на соответствие стандартам разработки?

Но никогда не делаю аудит "на соответствие стандартам разработки" по той простой причине, что фирма 1С сама довольно фривольно относится к своим собственным стандартам. Я же смотрю, насколько софт отвечает требованиям бизнеса вообще и корпоративным стандартам в частности. Если хочешь, могу показать пример заключения с рекомендациями по исправлению обнаруженных проблем.


>Интересуют сроки, стоимость

Всё очень сильно зависит от анализируемого объёма. Могу сказать свои расценки, у коллег лучше узнать напрямую.
   RayCon
 
173 - 18.04.20 - 19:42
(16)
>Количество обнаруженных ошибок 16349 )

Так тебе нужен аудит кода. Извини за (172) - это не ко мне.

P.S. Имей в виду, что далеко не все из 16349 обнаруженных ошибок являются реальными ошибками. Более того, многие их них - порождение типовой конфигурации.
   Конструктор1С
 
174 - 18.04.20 - 20:00
(170) не могу найти, раньше на сайте у фирмы 1с был специальный раздел про крупные проекты. Там описывалось, как обвешавшись ЦУПами и APDEXами, франчи заставляли работать типовые с приемлемой для клиентов производительностью
   Конструктор1С
 
175 - 18.04.20 - 20:02
А, нашел)
https://v8.1c.ru/tekhnologii/tekhnologii-krupnykh-vnedreniy/vypolnennye-proekty-tsktp/

Там таких примеров - вагон и маленькая тележка
   acht
 
176 - 18.04.20 - 20:32
(174) > обвешавшись ЦУПами и APDEXами
Вот тебя в (83) про что спрашивали, оптимизатор с сабелькой?
   Конструктор1С
 
177 - 18.04.20 - 20:52
(176) оптимизатор без сабельки, а ты в курсе, что помимо производительности (под которой почему-то у многих принято считать только время выполнения кода), есть ещё масса аспектов качества программного продукта? И если ты до сих пор не понял, я веду речь не про оптимизацию, а просто про использование здравого смысла при разработке. Оптимизация, это когда есть узкое место в конфигурации, и ты переписываешь его, ради повышения производительности. А здравый смысл, это когда при разработке ты пишешь запросы сразу оптимально, с учетом индексов БД, менеджер ВТ закрываешь сразу после использования, переменные инициализируешь перед их использованием, а не хрен пойми где, ну и так далее...
   Конструктор1С
 
178 - 18.04.20 - 21:02
Ещё яркий пример распространеннейшего рукожопства:

ТаблицаНаСтоТыщСтрок = ПолучитьМассивнуюТаблицу();

// тысяча строк кода, не использующих таблицу

//...

// тысяча-первая строка кода, в которой наконец-то используется полученная таблица

Для Каждого СтрокаТаблицы Из ТаблицаНаСтоТыщСтрок Цикл

что помешало разработчику получить таблицу непосредственно перед использованием? На кой ляд нужно было так разлучать инициализацию переменной и её использование?
   vde69
 
179 - 18.04.20 - 21:11
(178) например наложение блокировки, а тысяча код кода критичны к изменению данных...
   Конструктор1С
 
180 - 18.04.20 - 21:20
(179) не-а. В том-то и дело, что у многих манера инициализировать переменные где попало и без объективных на то причин
   vde69
 
181 - 18.04.20 - 21:20
вот я например на текущей работе такую херню делаю (в плане учета просто жуть, не то, что без стакана не разберешься, еще на много хуже), и приходится все красиво обыгрывать и обвешивать...

простой пример, у меня в самописке примерно с десяток видов документов, у них сложные формы где в зависимости от статьиДР в табличной части меняются колонки доп данных (их может быть штук 20), я во всей конфе предусмотрел 2 режима первый в виде портянке, второй в виде дерева, куча кода, все работает, всех устраивает, и тут один документ мне тычут - сделай как в ТЗ, долго спорил, но пришлось сделать отдельную форму которая ну ни как не вписывается в стройную систему. И ради этого там подобного (178) просто море, а все по тому, что основную систему нельзя ломать ради кастомного решения...

и чего теперь? по идее это вышел говнодокумент, но переделывать его никто не будет, я не буду по причине "просили - вот вам кактус", заказчики не будут по тому как не признают своих ошибок. Так и будет говнодокумент болтатся в базе много лет...
   acht
 
182 - 18.04.20 - 21:43
(181) Не спорь. Конструктору лучше знать. Кто мы такие на фоне это мощнейшего человечища? Он все всех знает, всех всему научит, у него регламентные по ночам работают!
   Конструктор1С
 
183 - 18.04.20 - 21:50
(183) заканчивай уже со своим пафосным троллингом
   Сияющий в темноте
 
184 - 18.04.20 - 22:06
почему все рекомендуется получать одним запросом:
во-перввх,предполагая параллельность исполнения,мы должны заблокировать все данные,которые получаем,сделать это ступенчато нельзя,так как это путь к взаимоблокировкам,то есть,хороший код,получающий данные,выставляет блокировку только один раз.
во-вторых,в 1с блокировка косвенно связана с работой sql,поэтому,отделять работу по выборке от блокировки не желательно.
в третьих,если данные потом не сохраняются,а выводятся пользователю,то после получения можно снять блокиовку и завершить транзакцию.

кроме того,не стоит забывать про повторное использование кода,которое само по себе враг оптимизации,но,если нам нужны какие-то данные для работы то,если есть уже готовая функция,которая получает наши данные плюс еще какие-то,то посему бы ее не использовать.
   Сияющий в темноте
 
185 - 18.04.20 - 22:45
и потом не забываем,что хорошим тоном считается сначала получить данные,а потом их обрабатывать
такой подход позволяет менять алгоритмы обрабртки,не меняя другие участки кода,а когда получение данных перемешано с их обработкой,то часто можно наступить на грабли получения одного и того же несколько раз,так как разные участки кода могут писать разные люди.
   Сияющий в темноте
 
186 - 18.04.20 - 22:51
и хранение параметров в структурах,как раз,любят из-за этого,что добавить параметр в структуру-это его вставить в одном месте и получить в другом и не нужно переписывать кучу функций,куда он передается.
но,тут все забывают о том,что параметры в структуре живут до тех пор,пока она не будет разрушена,то есть наблюдается очень большой перерасход памяти,так как никто их не удаляет-да и по сути-это делать нельзя,так как мы не знаем точно,где они используются,а где-нет.
   acht
 
187 - 18.04.20 - 22:52
Но как же... тысячи строк? Ярчайшие примеры? ;(
   Бертыш
 
188 - 18.04.20 - 22:55
Звонила давеча коллега с прошлой работы по поводу очередного обновления типового зупа 3. Не работает рсв. Полезли на сайт официальный, а там код который надо поправить указан в ошибках. Поправили. Всё равно вешает сервер и не работает. Коллега полез далее правки по коду, а там конструкция безупречная с точки зрения орфографии и наверное автоматическая проверка её бы даже ошибкой не стала бы считать. Что-то начинающееся с
Пока Истина Цикл

Пример другой. Привлекали к доработке ЗУП 2.5 для ФГУП Почта России. Внедрение на 13 тысяч+ рабочих мест. 1С овская рекомендация по использованию временных таблиц с таким числом пользователей показала что узким местом при таком количестве становится дисковая подсистема, то есть лаги возникают из-за обилия обращений туда-сюда к ней. Коллеги перекрутили весь типовой код запросов на работу без временных таблиц. Вероятнее всего тестирование такого перепахивания показало бы ошибок при тестировании овер много, но всё в отличии от безошибочного кода работало в высшей степени разумно.

При очной сдаче 1С специалиста ведь недаром существуют две части
1) изменение каркасной
2) защита своего решения преподавателю из разряда а почему сделаны такие то изменения

Я бы например по своему текущему опыту вместо тч документа делал бы регистры сведений отображаемые в форме, но я бы смог объяснить преподавателю почему я так сделал, по своему опыту

Викторы бы надо подсобрать то что он со своей компетенцией считает ошибками и предложить подрядчику либо исправить в рамках уже освоенного бюджета, либо как на экзамене обосновать те или иные свои решения, а далее по ситуации. Хотя на месте подрядчика я бы наверное десять раз подумал. В нулевые меня периодически дёргала бухгалтерия одного заказчика. То им надо было обновить семёрку, то бухгалтерия пару раз накосячила. Но шефу то своему свои косяки они решили выдавать за то что я однополовец им подлянки делаю. Когда же их шеф на эту их уловку повёлся, то я ему сразу обозначил свою позицию, а именно что вопрос доверия в сотрудничестве это вопрос номер один и что если нет ко мне доверия, то давайте растанемся. Так и расстались по обоюдному согласию
   Бертыш
 
189 - 18.04.20 - 23:04
(186) Верно всё говоришь. Плюс ты забыл упомянуть что разбиение процедур и функций по общим модулям с вменяемыми названиями делает добработку типовых, да той же ерп, более или менее комфортным. То есть после замера производительности при анализе где мы побывали более или менее понятно куда лезть и куда рыть
   Сияющий в темноте
 
190 - 18.04.20 - 23:05
просто,у 1с нет цикла do ... loop while/until вот и приходится писать.
кроме того,есть классическая модель выхода на конец,когда для выхода используется break внутри цикла с условием true и обязательным break перед концом цикла.
   Бертыш
 
191 - 18.04.20 - 23:07
(190) Это я помню и думаю что такое могло иметь место быть, но подозреваю что если история долетела от них до меня, то вероятнее всего там не было ни продолжить ни прервать
   Сияющий в темноте
 
192 - 18.04.20 - 23:07
что касается структур-это еще и модель обьектно-ориентированного подхода
когда структура хранит поля обьекта,а в коныигурации есть модуль с именем обьекта,где все функции типа
функция ИмяКласса_ИмяМетода(АналогThis,ДругиеПараметры)
   Бертыш
 
193 - 18.04.20 - 23:09
Я им кстати сказал что в контексте эпидемии это программный код из разряда
откуйте меня от батареи :)

то есть крик профессионала о помощи
   Сияющий в темноте
 
194 - 18.04.20 - 23:10
опять же,применяя автоматический сборщик кода можно код на ООП перевести в код 1с и даже разные функции разнести по разным модулям на основании фильра-а потом народ будет гадать,почему функуии из одного модуля в другой переехали ^_^
   Сияющий в темноте
 
195 - 19.04.20 - 00:22
есть еще одно решение-когда применяется пока истина цикл
если мы криво написали блокировку,то есть ставим ее каскадно,сначала на одно,а потом еще и еще,то есть высокая вероятность словить взаимоблокировку транзакций,тогда илм блокировать все и чихать на ппраллельность или повторять,пока не ввполнится успешно.
но это г.внокод высокого уровня.
   vi0
 
196 - 19.04.20 - 03:46
(175) ну и зачем мне эта ссылка?
   vi0
 
197 - 19.04.20 - 03:46
(178) я смотрю ты продолжаешь воду в ступе толочь
скажи, запрос в цикле это плохо?
   Конструктор1С
 
198 - 19.04.20 - 05:38
(185) в книге "Рефакторинг" Мартина Фаулера есть раздел про "запахи" в коде. Запахами называют как раз дурной тон при кодировании, который приводит к проблемам с доработкой программы. Одним из таких запахов является "стрельба дробью":
https://refactoring.guru/ru/smells/shotgun-surgery

это как раз тот случай, когда данные получаем "где-то там", а обрабатываем "где-то здесь"
   Конструктор1С
 
199 - 19.04.20 - 05:45
(186) вот тут правильно. А про блокировки не согласен. Множество алгоритмов не накладывают блокировок на данные. В большинстве случаев данные блокируются только на уровне СУБД и только на время чтения данных. Как только СУБД завершит запрос, блокировка будет снята. Если данные обрабатываются сразу же после запроса, то ещё есть шанс поработать с актуальными данными. А если данные были получены полчаса назад, то актуальными такие данные назвать нельзя
   Конструктор1С
 
200 - 19.04.20 - 05:52
(188) "1совская рекомендация по использованию временных таблиц с таким числом пользователей показала что узким местом при таком количестве становится дисковая подсистема"

Воот. Про подобное я выше тоже писал. Есть такая болезнь в нашей 1сной отрасли: где надо и где не надо использовать временные таблицы, и давать жить менеджеру ВТ пока не надоест... И вылазит это как раз при высоконагруженной работе системы.
  1  2  3  4   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.