Ректальное программирование: основы для практикующих 1С-программистов

19.12.18

Разработка - Математика и алгоритмы

Одной из самых популярных и зарекомендовавших себя методологий программирования в 1С является так называемое ректальное программирование. Редкий проект внедрения и сопровождения учётных систем на платформе 1С обходится без его использования. Зачастую без знания данной методологии программистам даже бывает сложно найти работу в сфере 1С, потому что работодатели, особенно фирмы-франчайзи, в основном отдают предпочтение классическим, зарекомендовавшим себя методикам, а не новомодным заграничным веяниям.

В тоже время данная тема освещена довольно скудно и программистам, даже опытным, приходится тратить тысячи часов на изучение ярких примеров ректального программирования. Иногда даже программисты со стажем затрудняются ответить на базовые вопросы, скажем - "Что лучше, запрос в цикле или получение данных через четыре точки"? Данный материал призван дать хотя бы базовое представление о методике ректального программирования и его успешного применения на проектах внедрения продуктов 1С любой сложности.

Что это?

Итак, прежде всего ответим на вопрос - что вообще есть ректальное программирование? Чем оно отличается от других методик? Какие преимущества даёт для программиста и его работодателя?

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

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

Несколько постулатов философии ректального программирования

 
 Главное, чтобы работало
 
 Код - это искусство
 
 Всё новое - хорошо забытое старое

Несколько базовых приёмов ректального программирования

Приведём несколько широкораспространённых приёмов ректального программирования, чтобы читатель имел общее представление о практическом применении данной методики.

 
 1. Комментарии в коде
 
 2. Через точку
 
 3. Копирование кода
 
 4. Форматирование
 
 5. Общие модули
 
 6. God object
 
 7. Попытки
 
 8. Загрузить-выгрузить
 
 9. Юзерфрендли
 
 10. Кэш
 
 11. Хардкодинг

Заключение

Итак, это было краткое введение в основы ректального программирования. Надеюсь, данный материал поможет программистам, особенно начинающим, влиться в ряды, начать успешную карьеру и стать своими в среде программистов 1С.

Вступайте в нашу телеграмм-группу Инфостарт

программирование практика успешный программист методика

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Математика и алгоритмы Разработчик 1С 8.3 Абонемент ($m)

Данная внешняя обработка для платформы 1С:Предприятие реализует усовершенствованный алгоритм Левенштейна для вычисления схожести строк с учетом различных лингвистических особенностей русского языка. В отличие от классической реализации, этот алгоритм учитывает фонетические, визуальные и контекстные особенности набора текста.

1 стартмани

07.11.2025    7001    18    InFlach    17    

27

Математика и алгоритмы Запросы Разработчик 1С:Предприятие 8 Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    9160    ivanov660    9    

24

Математика и алгоритмы Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    16970    stopa85    12    

44

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    25228    user1959478    57    

41

Математика и алгоритмы Разное 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    15716    maksa2005    8    

27

Математика и алгоритмы Инструментарий разработчика Разработчик 1С:Предприятие 8 Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    25518    11    SpaceOfMyHead    20    

65

Математика и алгоритмы Разработчик 1С:Предприятие 8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    17726    RustIG    10    

30

Механизмы платформы 1С Математика и алгоритмы Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

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

23.11.2022    16616    gzharkoj    17    

27
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kaaasteeen 19.12.18 17:49 Сейчас в теме
Это просто генитально!!!
kolessov_a; vld_dmn; rabid_otter; SaRana; Лис Р; myoker; gubanoff; Alexsur; Kinestetik; director04; Liris; ice-net; dbachinsky; Jimbo; Xatori111; miralisssa; IROKEZ91; stas1kbob; chebser; user598655_ilia-bers; Jeka44; nbondarenko; Aggressorak; Max27; rintik; PLAstic; wowik; AndrewZed; fancy; TreeDogNight; ben19791010; user811769; top_1c; madonov; LeXXeR; Bene_Valete; SamMix; orfos; fxmike; Zeskord; gd4ojhnng8se; vano-ekt; t.v.s.; echo77; bulpi; Artem-B; lunjio; Korolev; boln; arakelyan; for_sale; paybaseme; CyberCerber; +53 –1 Ответить
3. new_user 19.12.18 18:06 Сейчас в теме
(1) всё генитальное - просто!
Liris; Jimbo; miralisssa; TreeDogNight; lunjio; for_sale; +6 – Ответить
70. frkbvfnjh 825 20.12.18 07:05 Сейчас в теме
(3) Вкусно и просто!
Amadeus007; SuhoffGV; rovenko.n; dandykry; eternium; Jimbo; +6 – Ответить
72. top_1c 4198 20.12.18 07:26 Сейчас в теме
101. oleg-x 24 20.12.18 11:04 Сейчас в теме
(1) Под всеми (кроме одного 8) пунктами подписываюсь, но свои пять копеек все таки вставлю :-)
1) Комментарии - тут главное не переборщить, а то есть такие, кто "романы" пишут и пойди разберись что там в действительности творится.
2) Через точку - через точку писать плохо, даже в рекомендациях 1С это написано, но что то даже у 1С я встречаю такие конструкции (не такие длинные, но все же). А вообще все должно быть в пределах разумного, если код позволяет, то и через точку можно иногда обратиться, если это не влияет на производительность.
8) Выгрузить-Загрузить - а тут не просвятите чем плох этот метод? Ни разу не встречал, ничего плохого про него. На всякий случай провел тесты, вариант базы клиент-сервер, в запросе три выбранных реквизита. результат:
Тест1
Обход запроса: 9с. количество строк: 254 740
Выгрузка-загрузка: 3с. количество строк: 254 740
Тест2
Обход запроса: 192с. количество строк: 2 811 306
Выгрузка-загрузка: 130с. количество строк: 2 811 306
Как видим, выгрузка-загрузка выполняется быстро.
Возможно при
Представим, что у вас есть запрос, который получает миллиард строк из вашего богобъекта из п.6
таком количестве строк, результат будет другой. Но как часто попадаются такие данные, если не брать крупные проекты.
CepeLLlka; logos; Leon75; cheburashka; bestsader; roman8115; CodeNull; Serg O.; Асов; leonidt84; SPARTANIC; igo1; Kinestetik; MenZurKa; Lancelot-2M; Ria9; klinval; bajiepka; pm74; h00k; Jimbo; bulpi; miralisssa; regoff; romankoav; starik-2005; +26 – Ответить
103. starik-2005 3309 20.12.18 11:20 Сейчас в теме
(101)
Тест1
Обход запроса: 9с. количество строк: 254 740
Выгрузка-загрузка: 3с. количество строк: 254 740
Тест2
Обход запроса: 192с. количество строк: 2 811 306
Выгрузка-загрузка: 130с. количество строк: 2 811 306
Как видим, выгрузка-загрузка выполняется быстро.
Автор по наивности предполагает, что 99% случаев - это сервер с 1 ГиБ памяти и база с миллиардом строк, а остальной 1% случаев он не рассматривает. Жалко его немножечко: переработал, устал...
VKuser96190353; logos; bestsader; 1serger; Euroset1; Indgo; pbahushevich; Brawler; +8 –3 Ответить
127. TODD22 20 20.12.18 12:16 Сейчас в теме
(103)ну вы то же наивно полагаете что на компьютере 100гб ОЗУ и 10мб на жд. И примеры такие приводите. Однако то же упражняетесь в манипулировании.
G_112684701989778351436; MRAK; for_sale; o.nikolaev; lunjio; +5 – Ответить
184. TODD22 20 20.12.18 14:46 Сейчас в теме
(101)
8) Выгрузить-Загрузить - а тут не просвятите чем плох этот метод? Ни разу не встречал, ничего плохого про него. На всякий случай провел тесты, вариант базы клиент-сервер, в запросе три выбранных реквизита. результат:
Тест1
Обход запроса: 9с. количество строк: 254 740
Выгрузка-загрузка: 3с. количество строк: 254 740
Тест2
Обход запроса: 192с. количество строк: 2 811 306
Выгрузка-загрузка: 130с. количество строк: 2 811 306
Как видим, выгрузка-загрузка выполняется быстро.

Проблема этого метода не в скорости выполнения, а в потреблении памяти, о чём написано на ИТС.
Andreeei; vld_dmn; 1serger; RSConsulting; for_sale; Evg-Lylyk; +6 – Ответить
186. oleg-x 24 20.12.18 14:54 Сейчас в теме
(184) А можно ссылочку, а то не найти. Если проблема в потреблении памяти, то на сколько она велика? В какой момент один способ хуже другого.
189. TODD22 20 20.12.18 15:17 Сейчас в теме
(186)
В какой момент один способ хуже другого.

В тот самый момент когда система работает в много пользовательском режиме. И чем больше пользователей тем серьёзней проблема.
for_sale; +1 – Ответить
305. nvv1970 21.12.18 21:13 Сейчас в теме
(189) В целом посыл позиции 1С понятен и правильный.
Но часто бывает так:
Лишние, свободные 64 или 128 Гб мы отведем под рамдрайв, но будем экономить <10Мб и бомбить выборками файловую систему под 1с сервером.

А кто нибудь проводил анализ пожирания памяти скулем? На больших базах сразу гигабайты неоптимальных выборок кэшируются. По сравнению с 1С сервером - это вообще смех. Вот где нужно искать потребление озу!
portalUg; starik-2005; +2 – Ответить
187. json 3437 20.12.18 14:59 Сейчас в теме
(184)
вроде на ИТС речь об Обходе результата запроса. Лучше обходить результат запроса через выборку, а не через таблицу значений.

Но автор утверждает, что если нужно заполнить табличную часть, то необходимо использовать только выборку.
Иначе это ректальное программирование.
leonidt84; starik-2005; +2 – Ответить
188. TODD22 20 20.12.18 15:15 Сейчас в теме
(187)а я не про то что пишет автор. А про то что скорость выполнения не единственная характеристика. Ничего как бы нового или скорость или потребляемая память.
Либо уменьшаем время выполнения за счёт увеличения объёма памяти, либо на оборот.
for_sale; +1 – Ответить
190. oleg-x 24 20.12.18 15:20 Сейчас в теме
(188) Но современный тренд именно скорость в ущерб памяти. Ни кто особо не думает о ресурсах, когда разрабатывают продукт. Просто пишут минимальные и рекомендуемые требования. Пример те же браузеры и компьютерные игры.
191. TODD22 20 20.12.18 15:23 Сейчас в теме
(190)браузер это многопользовательская учётная система?
195. oleg-x 24 20.12.18 15:29 Сейчас в теме
(191) Ну к примеру все работают через тонкий клиент (имею ввиду компьютер) подключаются к серверу.
Хром допустим есть 200мб (150-250 мб за страницу в среднем) (мозила больше там до 500 может доходить).
Берем 10 пользователей, которые открывают по 5 страниц итого уже съедено 10000МБ памяти только браузером на сервере.
198. TODD22 20 20.12.18 15:32 Сейчас в теме
(195)так не ставьте браузер на сервер.
Ну а так что бы развивать демагогию можно много чего придумать.
194. TODD22 20 20.12.18 15:27 Сейчас в теме
(190)
Но современный тренд именно скорость в ущерб памяти

Платформа 1с поддерживает этот тренд?
Платформа это не игра и не браузер. Не очень правильно тащить подходы противоречащие идеологии платформы.
196. oleg-x 24 20.12.18 15:31 Сейчас в теме
(194) К сожалению да. Возьмите те же управляемые формы, они жрут больше чем ОФ, а все для того, что бы можно было открыть базу в браузере.
200. TODD22 20 20.12.18 15:37 Сейчас в теме
(196)читал рекомендацию про то что нужно следить за объёмом ОЗУ. Других не читал. Про тренд "давайте в многопользовательской системе не следить за ОЗУ" не читал. По этому не понятно с чего вы решили что этот тренд применим в 1с.
И в целом всегда надо руководствоваться разумным и не впадать в крайности.
193. json 3437 20.12.18 15:26 Сейчас в теме
(188)
А если мне, например, время выполнения критичнее, а память менее критична?

Если я такую операцию выполняю каждую минуту - то лучше делать через выборку,
Но если такая операция делается по запросу пользователя, например, по понедельникам несколько раз в день, то почему бы не сделать через Выгрузить-Загрузить.
Вот это логично.

Причем, если результате запроса заведомо мало данных, например заполнение услуг при заказе товаров в интернет магазине, то никакой разницы в производительности и памяти вообще не будет


А однозначно утверждать, что "Выгрузить-Загрузить всегда ректально" - неправильно.

Тут мы имеем дело с предпочтениями автора и не более того.

И ставить это в одну линейку с таким злом, как например "дублирование кода" - не справедливо.
ipoloskov; Гриффин; CodeNull; Асов; Enyel; ryzig; greenlist; +7 – Ответить
197. TODD22 20 20.12.18 15:31 Сейчас в теме
(193)ваше право следовать или нет рекомендациям 1с. Но сама рекомендация звучит как не стоит при разработке многопользовательской системы исходить из неограниченного объёма ОЗУ.
for_sale; +1 – Ответить
261. Pavel_Vladivostok 58 21.12.18 03:52 Сейчас в теме
(101)
анные, если

(101)
8) Выгрузить-Загрузить - а тут не просвятите чем плох этот метод? Ни разу не встречал, ничего плохого про него.


Как я понял автору не нравится непосредственно конструкция:
ТЧ.Загрузить(Запрос.Выполнить().Выгрузить());

и вместо этого, я уверен, он предложил бы что-то вроде:

ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
ТЧ.Загрузить(ТаблицаРезультат);
298. starik-2005 3309 21.12.18 17:56 Сейчас в теме
(261)
и вместо этого, я уверен, он предложил бы что-то вроде:
Нет, автор четко говорит о том, что нужно сначала получить результат запроса, потом проверить его, что он непустой, потом уже через выборку пройти по результату и поместить ее в ТЧ через ЗаполнитьЗначениеСаойств(ТабличнаяЧасть1.Добавить(), Выборка). И для очень большой выборки автор по всей видимости прав, ибо на его серверах памяти мало и диски медленные. Но если ориентироваться на то, что даже при 2кк строк скорость работы "Загрузить->Выгрузить" быстрее в разы, чем "Полка Выборка.Следующий()...", аргументы автора лично мне кажутся безосновательными. И если бы я пилил платформу, то для случая "Загрузить->Выгрузить" делал бы один обход на С++ (есть мнение, что так и есть).
300. boln 1044 21.12.18 18:41 Сейчас в теме
(298)
Только не надо о том, что "break label" - это не ГОТО
Это не goto. Он не способен создать "лапшу" из кода.
301. starik-2005 3309 21.12.18 20:45 Сейчас в теме
(300) лапшу из кода (интересно даже услышать определение) любители культа Карго "гото - это плохо" и без ГОТО с легкостью делают. И в языке 1с нет "прервать метка", так что приходится юзать ГОТО, а кто не умеет - его проблемы.
303. boln 1044 21.12.18 20:57 Сейчас в теме
(301)
лапшу из кода (интересно даже услышать определение)
Рисунок подойдет?



кто не умеет - его проблемы.
Просто не нужно. 1С - не система реального времени, чтобы экономить микросекунды.
CodeNull; +1 – Ответить
309. starik-2005 3309 22.12.18 10:38 Сейчас в теме
(303)
Просто не нужно.
Не нужно, или религия не позволяет? Сейчас докажу, что второе.

Вот есть код:
  ФлагЗавершения = Ложь;
  Для Каждого Х ИЗ Данные Цикл
    Для Каждого У ИЗ Х Цикл
      Если У = А Тогда
          ФлагЗавершения = Истина;
          Прервать;
      КонецЕсли;
    КонецЦикла;
    Если ФлагЗавершения Тогда
      Прервать
    КонецЕсли;
  КонецЦикла;
Показать


А теперь упростим:
  Для Каждого Х ИЗ Данные Цикл
    Для Каждого У ИЗ Х Цикл
      Если У = А Тогда
        Перейти ~ПослеЦикла
      КонецЕсли;
    КонецЦикла;
  КонецЦикла;
~ПослеЦикла:
И что нам мешает писать так, как во втором варианте?

Кстати, попытайтесь аргументированно доказать, что циклы - это хорошо. Ведь программу можно написать как без ГОТО, так и без использования циклов Зачем нам циклы тогда? Ведь по-сути в функциональной парадигме можно и на 1С писать отчасти (в той части, где нужны циклы - точно),
curdate; for_sale; json; boln; +4 – Ответить
311. boln 1044 22.12.18 11:04 Сейчас в теме
360. ipoloskov 165 12.09.20 11:18 Сейчас в теме
(309) Просто этот блок нужно вынести в отдельную процедуру, и использовать Возврат
361. spacecraft 12.09.20 17:19 Сейчас в теме
(360) и передавать в эту процедуру кучу переменных? сам по себе цикл не делают.
362. AnryMc 851 19.07.21 15:21 Сейчас в теме
(309) Да короче и читабельней...

Но где то в подкорке (ещё с детского садика наверно) сидит:
"Использовать безусловный переход - только в крайнем случае, если без него вообще никак..."
363. starik-2005 3309 19.07.21 20:35 Сейчас в теме
(362)
только в крайнем случае
Ну так тут стандартный "крайний случай" )))
Вообще, если относится без религиозности к разработке софта, то любой переход оправдан (например, если после выполнения итерации необходимо ее по какой-то причине повторить не меняя счетчика цикла, то это вполне вариант - не писать же в самом деле внутренний цикл "Для ДВА = 1 по 2" - такой код еще более диким выглядит, тем более, что необходимость повторного выполнения не возникает каждый раз).
364. AnryMc 851 20.07.21 14:05 Сейчас в теме
(363) Лично для меня это "шоры".

Просто бы не подумал...
367. Avatarzorro 82 14.03.25 08:21 Сейчас в теме
(363) для таких случаев придумали рекурсивный вызов. В случае 1с актуально для деревьев. Типо для функций дерево в таблицу
2. CyberCerber 905 19.12.18 17:51 Сейчас в теме
Ух, кажется, это одна из лучших, если не лучшая статья на ИС за последний год!
gubanoff; Kinestetik; rovenko.n; digital_julia; dandykry; Jimbo; IROKEZ91; chebser; user598655_ilia-bers; Plotks2017; kaaasteeen; h00k; PLAstic; wowik; sansys; TreeDogNight; ben19791010; top_1c; madonov; user779117; gd4ojhnng8se; accounting_cons; echo77; Grigoripal; bulpi; Sapiens_bru; lunjio; arakelyan; for_sale; d.mas; +30 –1 Ответить
4. boln 1044 19.12.18 18:22 Сейчас в теме
А оператор безусловного перехода?
А условие на измерение виртуальной таблицы РН в секции ГДЕ?
А соединение по Наименование?
. . . . . . .

Предлагаю выкладывать здесь в комментах примеры shit-кода.
Kinestetik; Dorosh; miralisssa; dock; vano-ekt; TreeDogNight; torbeev; bulpi; CyberCerber; for_sale; +10 – Ответить
9. for_sale 901 19.12.18 18:28 Сейчас в теме
(4)
Материал ознакомительный, так сказать, некоторые примеры базовых вещей, и конечно же, не призван охватить всю огромную палитру средств ректального программирования.
LeXXeR; user598655_ilia-bers; JohnyDeath; DSerg; top_1c; gd4ojhnng8se; +6 – Ответить
28. echo77 1944 19.12.18 19:10 Сейчас в теме
(4) Друг, Господа... я приоткрою вам кладезь примеров https://www.govnokod.ru/1c
Kinestetik; olegtymko; boln; Jimbo; miralisssa; salbey; TreeDogNight; +7 – Ответить
202. starik-2005 3309 20.12.18 15:52 Сейчас в теме
(4)
А оператор безусловного перехода?
А кто сказал, что ГОТО - это плохо? Есть ситуации, когда он вполне уместен. Я им пользуюсь раз в год, например.
pm74; Асов; Артано; wowik; for_sale; +5 –1 Ответить
207. TODD22 20 20.12.18 16:01 Сейчас в теме
(202)тем что при программировании в 1с не рекомендуется использовать. О чем написано в документации. Ну и в чем проблема им не пользоваться? Ну кроме разведения демагогии на форуме что раз в год он пригождается? Есть такой пример что задачу без него не решить в платформе 1с?
209. starik-2005 3309 20.12.18 16:04 Сейчас в теме
(207)
тем что при программировании в 1с не рекомендуется использовать. О чем написано в документации.
Отсюда как бы вытекает простой вопрос: а на куя разработчики платформы его в нее все-таки засунули. Вообще, история вопроса тут.
212. TODD22 20 20.12.18 16:10 Сейчас в теме
(209)историю вопроса я знаю. Ссылки на лурку мне не очень интересны. Я и спросил о практической необходимости при работе, кроме разведения демагогии?
А зачем включили это лучше у разработчика спросить.
213. starik-2005 3309 20.12.18 16:11 Сейчас в теме
(212)
Я и спросил о практической необходимости при работе, кроме разведения демагогии?
Так вот же:
(для PHP-быдла он, как правило, и не нужен, потому что там редко встретишь сколь-либо сложные алгоритмы).
Слово "PHP" нужно читать в соответствии с тематикой настоящего сайта.
215. TODD22 20 20.12.18 16:17 Сейчас в теме
(213)то что вы освоили регулярки чем гордитесь в интернете и иногда используете гото, "не быдлом" вас не делает.
К тому же вы так и не привели пример на 1с где без гото ну прям вообще никак.
ИНТЕГРА; +1 – Ответить
218. starik-2005 3309 20.12.18 16:21 Сейчас в теме
(215)
К тому же вы так и не привели пример на 1с где без гото ну прям вообще никак.
Вы путаете возможность написать без ГОТО с возможностью упростить с помощью ГОТО код. Это сложно понять, но, уверяю Вас, можно (как, собственно, и это, но и тут следует различать множественное число и персональное обращение).
223. TODD22 20 20.12.18 16:26 Сейчас в теме
(218)
Это сложно понять, но, уверяю Вас, можно

Я понимаю разницу. А так же то что для каждой системы есть свои правила и подходы. И если что то не рекомендуется использовать в конкретной платформе то спорить с этим можно долго. А можно просто не использовать.
но и тут следует различать множественное число и персональное обращение

С телефона пишу. Доступа на ИС нет.
246. boln 1044 20.12.18 18:40 Сейчас в теме
(212)
А зачем включили это лучше у разработчика спросить.
Видимо, потому что 1С изначально позиционировался как "язык для домохозяек", т. е. для не очень искушенной в кодировании публики. Далеко не все сегодня знают, что такое структурное программирование, что уже более 40 лет назад использование безусловного перехода в языках высокого уровня осуждалось как непрофессионализм специалистами с мировым авторитетом.

Олдскульные кодеры, понятно, читали книгу Хьюз и Мичтом "Структурный подход к программированию", а также книги Дейкстры и Йодана, издававшиеся в СССР. Но, очевидно, 1С-кодирование изначально не рассчитано на узкий круг снобов, а пролетариату куда же без goto, для пролетария послать кого-то - естественная потребность :)

В Java оператора goto нет. Понятно, на пролетариев умственного труда она не ориентирована изначально.
CodeNull; AzagTot; TODD22; +3 – Ответить
296. starik-2005 3309 21.12.18 17:40 Сейчас в теме
(246)
уже более 40 лет назад использование безусловного перехода в языках высокого уровня осуждалось как непрофессионализм специалистами с мировым авторитетом
А другие не менее талантливые профессионалы смеялись в голос над теми, кто "осуждал" использование безусловного перехода. А теперь этими баснями питаются придурки, которые программировать не умеют и учиться не хотят, т.к. для них это культ Карго.
В переносном смысле понятие культа карго используется, когда люди копируют внешнюю атрибутику какого-нибудь явления, совершенно не имея понятия о его внутренних движущих силах. Примеры:
В среде быдлокодеров — программирование методом копипаст из книжек «для чайников»: например (или вот)
297. starik-2005 3309 21.12.18 17:46 Сейчас в теме
(246)
В Java оператора goto нет. Понятно, на пролетариев умственного труда она не ориентирована изначально.
Это Вы от незнания, так что прощается:
Использование break как формы goto
В дополнение к применению в операторах switch и циклах break можно также использовать отдельно, в качестве "цивилизованной" формы оператора goto. Java не содержит оператора goto, потому что он выполняет переход произвольным и неструктурированным способом. Код, интенсивно использующий goto, обычно трудно понять и поддерживать. Он также отменяет некоторые оптимизации компилятора. Существует, однако, несколько мест в программе, где goto — ценная и законная конструкция управления потоком выполнения. Например, goto может быть полезен, когда вы выходите из глубоко вложенного набора циклов. Чтобы обрабатывать такие ситуации, Java определяет расширенную форму оператора break. Используя ее, вы можете выйти из одного или большего количества блоков кода. Этим блокам не нужно быть частью цикла или оператора switch. Это может быть любой блок. Далее, вы можете определить точно, где выполнение будет продолжено, потому что данная форма break работает с меткой и обеспечивает преимущества goto, минуя его проблемы. Оператор break с меткой имеет следующую общую форму:

break label;

Здесь label — имя метки, которая идентифицирует некоторый блок кода. Когда эта форма break выполняется, управление передается из именованного блока кода (чья метка указана в операторе break) на следующий за этим блоком оператор. Помеченный блок кода обязательно должен включать данный оператор break, но не требуется, чтобы это включение было непосредственным (т. е. break может включаться не прямо в блок со своей меткой, а во вложенный в него блок, возможно, тоже помеченный). Это означает, что вы можете использовать помеченный оператор break, чтобы выйти из набора вложенных блоков. Но вы не имеете возможности использовать break для передачи управления блоку кода, который не включает оператор break.

Только не надо о том, что "break label" - это не ГОТО. Это тот самый ГОТО, только для идиотов, которые не могут его правильно использовать..
ZDmitry83; Асов; for_sale; +3 – Ответить
210. starik-2005 3309 20.12.18 16:08 Сейчас в теме
(207)
тем что при программировании в 1с не рекомендуется использовать
А кто не рекомендует, кстати? Он в любом случае не умнее вот этого товарища:
Но, что интересно, оператор GOTO имеется в исходниках весьма популярных программ, вроде ядра линукса или гугловского «Андроида», более того, сам Линус одобряет использование GOTO в языках программирования не таких дурацких, как Pascal. Почему? Потому что существуют редкие случаи, когда его использование несколько упрощает код.
214. TODD22 20 20.12.18 16:14 Сейчас в теме
(210)это не ответ на мой вопрос, а разведение демагогии.
217. starik-2005 3309 20.12.18 16:18 Сейчас в теме
(214)
это не ответ
Так ответ в статье (или в (213)), которую Вы читать не хотите.

А вообще там можно сказать, что и рекурсия - зло и то самое ректальное программирование. Но это не от большого ума, а от наличия стереотипов, зацементировавшихся в сознании.
219. TODD22 20 20.12.18 16:21 Сейчас в теме
(217)я не увидел примера сложного алгоритма необходимого в 1с в 213. Там только попытки бросаться фекалиями и пытаться кого нибудь оскорбить. То же не признак ума.
221. starik-2005 3309 20.12.18 16:23 Сейчас в теме
(219)
Тоже не признак ума.
Так а где Вы видели умных 1С-ников?
224. TODD22 20 20.12.18 16:28 Сейчас в теме
(221)ну я думал что Вы из их числа. Но таки после того как Вы доказывали что 1с это платформа для не самых сообразительных то понимаю по какому критерию выбирали себе работу.
oleg-m; boln; acanta; +3 – Ответить
222. starik-2005 3309 20.12.18 16:25 Сейчас в теме
(219)
я не увидел примера
Я уже приводил на просторах инфостарта пример. Его можно через ректальное программирование написать без ГОТО, но с ГОТО получается лучше.
Артано; +1 –1 Ответить
299. boln 1044 21.12.18 18:33 Сейчас в теме
(210)
А кто не рекомендует, кстати? Он в любом случае не умнее вот этого товарища
Дейкстра:
http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htm

А тем, у кого ученый с мировым именем "не умнее" клоуна с лурки, читать басню Крылова "Осёл и Соловей".
302. starik-2005 3309 21.12.18 20:48 Сейчас в теме
(299) Дейкстра - не единственный ученый с мировым именем. Его критиковали другие ученые с мироввм именем Торвальдс - тоже ученый с мировым именем, и он такой фигни как Дейкстра не говорил. В функциональном программировании нет циклов, на нем программируют ученые с мировым именем. А такие лохи, как Вы, не могут без циклов - правильная аргументация?

И да, без циклов можно написать чтг угодно. Надо объявить все эти for, while, repeat, e.t.c. - плохим говнокодом.
304. boln 1044 21.12.18 21:08 Сейчас в теме
(302)
Торвальдс - тоже ученый с мировым именем
Если Торвальдс ученый, то Сталин "большой ученый"© :)

Торвальдс - практик, его никто не называл ученым. А Дейкстра, пожалуй, знал больше об эффективности алгоритмов, чем весь наш форум вместе взятый да еще в 10 степени. И если такой человек, как Дейкстра, говорил, что в языках высокого уровня можно обойтись без goto ВСЕГДА, то трудно это проигнорировать.

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

Вообще мы говорим, видимо, об одном и том же. Не собственно о goto, а о его неадекватном применении, приводящем к "лапше". Дейкстра предлагал, чтобы этого избежать, вообще не использовать безусловный переход. Радикально? Но приемлемо. Бо говнокодеры :)

Поэтому это уже просто холивар, как лет 30 назад между "сионистами" и "пасквилянтами", или между фанатами процедурной и объектной парадигмы.
starik-2005; +1 – Ответить
310. starik-2005 3309 22.12.18 10:43 Сейчас в теме
(304)
Если Торвальдс ученый, то Сталин "большой ученый"© :)
Ну понятно, что с религиозными взглядами сложно что-то сделать - они цементируют догматикой сознание, делая его малоподвижным, инертным и зависимым от идеологической надствройки разума...

Но все-же рискну...
Автор Minix, профессор Эндрю Таненбаум, неожиданно выступил с резкой критикой дизайна системы:

«Я по-прежнему считаю, что создавать монолитное ядро в 1991 году — фундаментальная ошибка. Скажите спасибо, что вы не мой студент: за такой дизайн я бы не поставил высокой оценки :-)» (из письма к Линусу Торвальдсу). Свой пост Таненбаум озаглавил «Linux устарел»[5].

Кроме монолитного ядра, Таненбаум критиковал Linux за отсутствие переносимости. Таненбаум предсказывал, что процессоры 80x86 в недалёком будущем исчезнут, уступив место архитектуре RISC.

Критика сильно задела Торвальдса. Таненбаум был знаменитым профессором, и его мнение имело значение. В данном вопросе, однако, он ошибался. Линус Торвальдс настаивал на своей правоте.
А теперь давайте ответим на простые вопросы: где сейчас MINIX, кто знал бы Таненбаума, если бы не Торвальдс и, конечно, почему в Linux сейчас есть и монолитное ядро, и микроядро, и перенесен он на все возможные платформы. Почему профессор с мировым именем оказался неправ, а студент (в то время) оказался куда умнее?

Ссылаться на авторитетов - моветон, а на устаревших авторитетов - вдвойне. Но даже пользуясь его постулатами о программировании можно однозначно сказать, что современные языки далеки от них, а современная практическая разработка даже близко не соотносится со следующим:
Помимо обсуждения специальных вопросов, в своих статьях и книгах Дейкстра последовательно отстаивал необходимость математического подхода к программированию, который предполагает предварительное точное, всестороннее математическое описание задачи и способа её решения, формальное доказательство правильности выбранного алгоритма и последующую реализацию алгоритма в виде максимально простой, структурированной программы, корректность которой должна быть формально доказа
Что-то ни в одном ТЗ не вижу ничего типа: Дано, Доказательство, Ч.Т.Д. Где это все? Осталось в груде запылившихся школьных тетрадей, которые отдельные отличники, зубрящие учебники, забыли в письменных столах родительского дома? А в голове собственные мысли о правильности бытия сформировались, или тоже были заучены в виде догматов?

Вы только ГОТО не юзаете из-за Дейкстры, или Вы и теорему доказываете каждый раз, когда пишите программу? <<Ведь кто сказал "не убий", сказал и "не укради". Если не убьешь, но украдешь - то также виновен перед законом>> (Древний эпос)
azard@inbox.ru; for_sale; +2 – Ответить
258. kondratevsergey1985 20.12.18 22:36 Сейчас в теме
(207)

Применяю GoTo, например, в случае когда используется вызов пользовательского кода, задаваемого в режиме предприятия.

Типа такого:

// Тут обычный код
…

// Тут выполняется пользовательский код, заданный в режиме предприятия
Выполнить(ПользовательскийКод); 

// Тут опять обычный код
…
Показать


Так вот, когда пишешь тот самый пользовательский код, GoTo очень помогает, например, в таком случае:

Основной код:
…
А = ПолучитьЗначениеА();
…
Выполнить(ПользовательскийКод);
…


Пользовательский код:
Если НЕ ЗначениеЗаполнено(А) Тогда
	Перейти ~Выход;
КонецЕсли;

…
~Выход:


То есть GoTo применяется для начальной проверки переменных контекста и прекращения выполнения кода, иначе получается большая вложенная конструкция Если…КонецЕсли.
unknown181538; +1 – Ответить
260. boln 1044 20.12.18 23:31 Сейчас в теме
(258) Гм... Интересно, эта возможность была и в Clipper. А там оператора безусловного перехода тоже нет :)
350. user775227 2 14.10.19 07:15 Сейчас в теме
Уважаемый, а Вы не пробовали в конфигурации 1с, к примеру УПП запустить глобальный поиск по по "Перейти ~"? Попробуйте, посмеемся... Кодеры не читали документацию?
5. arakelyan 401 19.12.18 18:23 Сейчас в теме
Богостатья)
Kinestetik; user828972; Jimbo; top_1c; Sottoz; CyberCerber; for_sale; +7 – Ответить
6. InsideIT 8 19.12.18 18:23 Сейчас в теме
Прямо первая глава настольной книги программиста фирмы-франчайзи!)))
Kinestetik; bulpi; miralisssa; Vladimir Litvinenko; chebser; Gluk_1C; wowik; seperblunt2; TreeDogNight; top_1c; accounting_cons; boln; CyberCerber; for_sale; +14 – Ответить
7. s22 23 19.12.18 18:24 Сейчас в теме
2. поясните чем лучше внутренее соединение.
8. lunjio 67 19.12.18 18:24 Сейчас в теме
Спасибо автору, за то что потратил время и написал такой генитальный шедевр)
Сначала было волосы дыбом встали, под вечер не въехав в название темы, начал читать первую часть и кровь закипала, т.к всегда пишу не для того чтобы работало, а ещё учесть что-то) но потом въехал, спохватился и долго смеялся ) оставлю ссылку на статью в комментариях в подобном коде, всем кто не полностью соблюдал принципы данной практики, пусть соблюдают все принципы ректального программирования)
miralisssa; TreeDogNight; bulpi; arakelyan; for_sale; +5 – Ответить
10. for_sale 901 19.12.18 18:28 Сейчас в теме
252. TimurD 6 20.12.18 19:28 Сейчас в теме
Работал я как-то в одной конторе лет 8 назад. FoxPro 2.6 (DOS). Начальник отдела - старый программист. В свое время на всякие конференции ездил по Стране и не только для разработчиков. Иногда писал он всякие обработки (процедурные файлы). А кто не писал. Чтобы перезаполнить какую-нибудь табличку(и). При этом он не ничего не выводил на экран. Т.е. понять примерно на каком этапе выполняется обработка, было нельзя (практически... Но это магия). Может зависла он. Его аргументы: Вывод на экран это процессорное время занимать, да и не барское это дело, скажем, рассчитывать процент выполнения, да и еще его выводить. Вот видишь сзади лампочки мигают, куда сетевой шнур вставлен, значить все работает, ничего не зависло.

З.Ы.: Да чуть не забыл. Поля даты (почти все) были типа Character(10). А почему бы и нет. Работает ведь. И бизнес доволен. Можно написать 30.02.2010 или 72 нояб. А можно слово на 3 буквы. Идеальная система)
bomber99544; +1 – Ответить
253. пользователь 20.12.18 19:32
Сообщение было скрыто модератором.
...
11. пользователь 19.12.18 18:35
Сообщение было скрыто модератором.
...
25. пользователь 19.12.18 18:59
Сообщение было скрыто модератором.
...
26. пользователь 19.12.18 19:05
Сообщение было скрыто модератором.
...
89. h00k 52 20.12.18 09:49 Сейчас в теме
(11)
Только боюсь, что победят разрабы типовых.


Не надо бояться - разрабы отраслевых ни кому не оставят ни шанса. И в этом их поддержит великий дух Франчайзи...
miralisssa; lunallena; +2 – Ответить
12. bulpi 219 19.12.18 18:40 Сейчас в теме
Отправил ссылку на статью своему директору с пожеланием, чтобы все мои "коллеги" (прости Господи) программисты, за которыми я потом подтираю, прочли.
TreeDogNight; top_1c; CyberCerber; for_sale; +4 – Ответить
87. vovan_victory 65 20.12.18 09:33 Сейчас в теме
(12)Боюсь, вы зря это сделали. Все Ваши ""коллеги" программисты, за которыми Вы потом подтираете", 100% примут эту статью как одобрение их стиля написания кода.
Автор, а может для таких "коллег" визуально проиллюстрировать эту методику?..
Ректальное программирование
for_sale; +1 – Ответить
13. kuld 248 19.12.18 18:42 Сейчас в теме
Смешно. Кейс №11 даже недавно видел собственными глазами. Так проверялся пользователь "Администратор", не то, что у него роль администратора, а то, что зовут его так. В тот момент было не смешно, а немного даже страшно.
А вот №2 это что-то явно эндемичное. В современных языках ООП всё представляется объектам, обращайся через точку к чему угодно, читаешь бывает с утра stackoverflow, там таких примеров вагон и маленькая тележка и для Java и для Python и для Kotlin.
miralisssa; +1 – Ответить
14. for_sale 901 19.12.18 18:45 Сейчас в теме
(13)
Так проверялся пользователь "Администратор"

Моё любимое и всегда первое место в рейтинге - это проверка на фамилию директора в коде.

таких примеров вагон и маленькая тележка и для Java и для Python и для Kotlin

у нас тут своя, 1С-атмосфера
ElStar; bulpi; miralisssa; h00k; top_1c; gd4ojhnng8se; CyberCerber; +7 – Ответить
16. boln 1044 19.12.18 18:50 Сейчас в теме
(13)
А вот №2 это что-то явно эндемичное. В современных языках ООП всё представляется объектам, обращайся через точку к чему угодно, читаешь бывает с утра stackoverflow, там таких примеров вагон и маленькая тележка и для Java и для Python и для Kotlin
Это не про об'ектную БД. Тут каждая точка - неявный запрос.
for_sale; +1 – Ответить
20. lunjio 67 19.12.18 18:55 Сейчас в теме
(15)
Автор указал, что касается запроса с миллионами строк, в случае когда строк очень много, выборка самый оптимальный выбор, т.к данные считываются не все сразу, в случае же с Таблица.Загрузить(РезультатЗапроса.Выгрузить()) можно получить ошибку недостаточно памяти или заметную деградацию выполнения, а в целом я часто пользуюсь Таблица.Загрузить(РезультатЗапроса.Выгрузить()) где точно знаю, что не может быть большое(от 1 тысячи) количество строк.
bulpi; Gluk_1C; TreeDogNight; +3 – Ответить
24. Sashares 35 19.12.18 18:59 Сейчас в теме
(20)
т.к данные считываются не все сразу
- заблуждение.
59. bugagashenka 206 20.12.18 05:22 Сейчас в теме
(24) может Вам на курсы походить?

С Запрос.Выполнить().Выгрузить() легко можно потечь по памяти и часто люди, привыкшие работать с мелкими базами на этом попадаются. Все меняется при работе с большими базами с миллиардами строк
for_sale; +1 – Ответить
99. starik-2005 3309 20.12.18 10:58 Сейчас в теме
(59)
Все меняется при работе с большими базами с миллиардами строк
Не надо в 1С тащить эти миллиарды строк в результат запроса. Это или проблема запросописателя, или проблема архитектуры. Но Вы всегда можете привести пример, когда весь этот "миллиард" строк нужно тащить запросом, а я, как архитектор, всегда могу указать на ошибку такого решения,и, разумеется, предложить верную альтернативу.
Артано; pm74; +2 – Ответить
104. bugagashenka 206 20.12.18 11:31 Сейчас в теме
(99) Предложите архитектуру решения. Необходимо получить остатки и продажи за последний месяц в разрезе номенклатуры, магазина, дня. Причем только для тех магазинов, в которые был приход с РЦ и только по той номенклатуре, для который в этот день была актуальная цена.
Входные параметры:
Количество номенклатуры порядка 14000;
Магазинов около 1500;
Количество дней - 30.
denismal; for_sale; +2 – Ответить
128. starik-2005 3309 20.12.18 12:19 Сейчас в теме
(104)
дложите архитектуру решения. Необходимо получить остатки и ...
Хорошая задача, интересная (с)

Но что тут сразу бросается в глаза? Это отчет, или эти данные нужно вставить в один результирующий документ? Если первое, то как оно относится к "Загрузить->Выгрузить"? И если это отчет, то какой идиот будет фильтровать его в Excel вместо того, чтобы отфильтровать выборку и не тянуть в рот все подряд, чтобы потом с этим мучиться в Excel (и какой Excel на какой машине откроет этого монстра)?

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

Давайте конкретизируем задачу, чтобы понять, что нужно пользователю (ведь именно для него все это задумывается, правда, а не чтобы потешить внутреннее "Я" - ну я надеюсь на это).
azard@inbox.ru; +1 – Ответить
152. bugagashenka 206 20.12.18 13:33 Сейчас в теме
(128) Это отчет. Таблица(Строки Номенклатура, Среднесуточные продажи по всем магазинам; Колонки: Магазин(Детали: Остаток на начало текущего дня; Среднесуточные продажи))
Для чего и удобство такого огромного массива данных опустим, это реальная задача.

как оно относится к "Загрузить->Выгрузить"?


Вопрос был в том, что
Не надо в 1С тащить эти миллиарды строк в результат запроса. Это или проблема запросописателя, или проблема архитектуры.


Про загрузить - Выгрузить. Все хорошо работает, пока данных мало. Но произошло накопление данных или резкий скачок, и база колом встала. Не всегда можно предугадать, что будет через год, сколько магазинов и РЦ откроется, сколько данных придется обрабатывать.

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

Как в данном случае построить логику? Как бы сделали Вы?
for_sale; starik-2005; +2 – Ответить
155. bugagashenka 206 20.12.18 13:38 Сейчас в теме
(128) дополнительно могу сказать, что физическая таблица остатков занимает порядка 150Гб, индексов 505Гб, продажи: 102 и 170 Гб соответственно
156. genayo 20.12.18 13:50 Сейчас в теме
(155) И всё это нужно для оперативной работы? Не верю...
h00k; starik-2005; Fox-trot; +3 –1 Ответить
263. bugagashenka 206 21.12.18 04:44 Сейчас в теме
(156) есть как бы сети больше двух киосков
for_sale; +1 – Ответить
264. genayo 21.12.18 05:26 Сейчас в теме
(263) И что? Это автоматически значит, что они работают оптимально?
266. bugagashenka 206 21.12.18 05:45 Сейчас в теме
(264) ну, можешь поучаствовать в обсуждении и предложить свое оптимальное решение. Если нет, то и писать в эту ветку не стоит больше.

П.С. большой объем данных в том числе история за пару лет это требование бизнеса, а не лень программистов
for_sale; +1 – Ответить
267. genayo 21.12.18 06:06 Сейчас в теме
(266) Требование бизнеса точно не такое- "лопатить при оперативной работе огромные массивы данных". Это архитекторы/программисты так реализовали. Оптимальное решение не предложу, конечно, не зная реальных требований бизнеса.
saandreev; starik-2005; +2 –1 Ответить
268. bugagashenka 206 21.12.18 06:14 Сейчас в теме
(267)именно такое.
С того и надо было начинать,
Оптимальное решение не предложу
а не разводить подъездную лавочку.
CodeNull; for_sale; +2 – Ответить
269. genayo 21.12.18 06:24 Сейчас в теме
(268) И вам доброе утро! Продолжайте решать свои проблемы "в лоб".
Гриффин; +1 –1 Ответить
270. bugagashenka 206 21.12.18 06:33 Сейчас в теме
(269)я же вынес на обсуждение реальную задачу. Описал количество данных и требование актера процесса. Предложил грамотным архитекторам обсудить самый оптимальный в данной задаче путь решения.
Вы же в свою очередь устроили балаган, не предложив ни одной светлой мысли.
На этом предлагаю разойтись краями и больше в эту ветку попрошу не писать
271. genayo 21.12.18 06:36 Сейчас в теме
(270) Уважаемый, ты мне не указывай, куда мне писать, а куда нет.
Гриффин; +1 –1 Ответить
273. bugagashenka 206 21.12.18 07:36 Сейчас в теме
(271) вот ты и показал из чего состоишь, Гена-джуниор, мечтающий стать экспертом =)
274. пользователь 21.12.18 07:40
Сообщение было скрыто модератором.
...
277. пользователь 21.12.18 08:41
Сообщение было скрыто модератором.
...
278. genayo 21.12.18 08:52 Сейчас в теме
(277) Во, сразу виден культурный и умный человек, уважаю...
unknown181538; Гриффин; saandreev; starik-2005; +4 –1 Ответить
106. for_sale 901 20.12.18 11:36 Сейчас в теме
(99)
Ректальное программирование - это не о производительности и не об архитектуре. Это об уверенности в том, что можно писать говно в одном случае и красиво в другом. Это о том, что "да ладно, тут же не миллиард строк, напишу вот так, а вот когда миллиард будет, тогда, конечно, напишу как надо!". Это о том, что вообще вместо того, чтобы просто писать правильно, без оглядки на фантазии о количестве, начинается философия и оценки средней температуры по больнице.

Даже на самом верхнем уровне логики, загрузить-выгрузить - это ДВА обхода, а выборка это ОДИН обход. Но адепты ректального программирования, конечно, будут и дальше использовать описанные в статье приёмы, потому что они не задумываются о таких мелочах, им неинтересно, что там внутри, для них 1С - это божий дар с кучей волшебных методов, которые просто превращают БД в ТЧ. Потому что:

Ректальное программирование - это путь состоявшегося программиста, уверенного в своём абсолютном превосходстве и компетенции, не нуждающегося в поучениях и не поддающегося стадному инстинкту постоянно обучаться.
109. json 3437 20.12.18 11:45 Сейчас в теме
(106)
Построчный обход в 1С и построчный обход на низкоуровневом языке - это не одно и то же.

Почему вы так уверены в своей гипотезе?
Можете предложить как ее проверить?
Spartan; bestsader; +2 – Ответить
113. for_sale 901 20.12.18 11:56 Сейчас в теме
(109)
У меня нет доступа к исходникам платформы, чтобы быть уверенным в методах. Но обычная логика говорит о том, что если я получаю таблицу, значит:
1. Результат запроса был уже обойдён той же самой выборкой (может, и не той, но примерно такой же).
2. Была создана таблица и сохранена в памяти (с метаданными, колонками и типами)
3. Эта таблица была обойдена (с созданием и хранением итератора в том числе) и помещена в ТЧ.

Как я уже выше написал, ректальное программирование не занимается такими проблемами. Ректальное программирование - это полёт творческой мысли, у которой нет времени на такие мелочи.
134. starik-2005 3309 20.12.18 12:29 Сейчас в теме
(113)
У меня нет доступа к исходникам платформы, чтобы быть уверенным в методах. Но обычная логика говорит о том, что
А вот в С++ обычная логика будет говорить совсем другое, ибо компилятор оптимизирует код. Я бы на месте 1С-ников точно бы проверял на эту самую "загрузку->выгрузку" и реализовал бы поведение механизма в один проход, как оптимизацию (предположу, что не совсем идиоты пилят платформу).
unknown181538; bestsader; +2 – Ответить
140. json 3437 20.12.18 12:45 Сейчас в теме
(113)

А вас не смущает, что в стандартах 1С об этом не прописано?

Вы не допускаете возможность, что в ваших рассуждениях может быть изъян, коль скоро вы не имеете доступа к исходникам платформы?
145. for_sale 901 20.12.18 13:15 Сейчас в теме
(140)
А вы не допускаете, что коль скоро у меня нет исходников, то я могу воспользоваться тем, что у меня остаётся - логикой. А не плодить сущности и изобретать оправдания тому, что я пишу Г-код.
151. json 3437 20.12.18 13:28 Сейчас в теме
(145)
А давайте добавим в ваши рассуждения недостающие переменные

При выборке на прикладном уровне В ЦИКЛЕ вызываются методы: Следующий(), Таблица.Добавить(),
ЗаполнитьЗначенияСвойств()

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

В итоге вы утверждаете, что совокупность методов при обходе выполняется эффективнее? При этом вы не знаете, какие дополнительные действия вызываются в перечисленных высокоуровневых методах по сравнению с низкоуровневыми
Spartan; Гриффин; CodeNull; klinval; h00k; w.r.; +6 –1 Ответить
154. w.r. 656 20.12.18 13:37 Сейчас в теме
(151) Я тоже думаю, что один платформенный вызов (Выгрузить->Загрузить) более оптимален, чем тысячи платформенных вызовов при обходе выхоборки и заполнения по одной стороке ТЧ
bestsader; +1 –1 Ответить
158. for_sale 901 20.12.18 13:56 Сейчас в теме
(151) Опустим такую мелочь, как то, что 1С вроде как компилируется на низкий уровень перед запуском, т.е. никакой компиляции на лету Следующий и т.п. не будет.

Всё бы хорошо, но вы, не зная реалий, предлагаете их допридумать и оправдать свой Г-код. А я предлагаю, не зная реалий, просто писать качественный продуманный код.

Потому что язык - это всего лишь инструмент. А вот умение писать качественный код - это важное умение, которое может помочь всегда и везде. Как и умение аналитически мыслить, интересоваться, что там, под капотом, может помочь не только в коде, но и иногда в самых неожиданных А не просто беспокоиться о своей зоне комфорта.
167. json 3437 20.12.18 14:03 Сейчас в теме
(158)
Я не пытаюсь оправдывать г-код.
Просто я вам не верю и хочу получить от вас более менее убедительную аргументацию вашего утверждения.
Пока вся ваша аргументация основана ТОЛЬКО НА ВАШИХ СОБСТВЕННЫХ ПРЕДПОЛОЖЕНИЯХ.

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

И еще - я не знаю какой вариант из двух работает оптимальнее: Выборка или Выгрузить-Загрузить.
И ваши предположения не являются основанием для признания такого метода г-кодом.
CodeNull; +1 – Ответить
172. for_sale 901 20.12.18 14:16 Сейчас в теме
(167)
Я, как грамотный специалист, проводил такие тесты. Как и тесты получения информации через точку и ещё много чего.

Логика, о которой я говорю уже в пятый, кажется, раз, и о которой вы не слышали или, видимо из за своей эмоциональной привязанности к каким-то, упомянутым в статье участкам кода, не хотите слышать, - так вот, логика, в случае отсутствия информации, говорит мне - у тебя есть два обхода или один, что ты выберешь? Я выбираю один. Вы выбираете то, что легче писать. Вот такая разница. Поэтому я и написал в статье, что это - "магические" методы. Потому что, например, вы, действительно верите, что можно из запроса получить данные вначале в таблицу, а потому и в ТЧ без обхода.
177. json 3437 20.12.18 14:29 Сейчас в теме
(172)
А где вы видели, чтобы я утверждал, что один метод лучше другого?
Я такого не утверждал. Как и не утверждал обратного.

Хотелось бы узнать результаты тестов, которые вы проводили.


Просто вы поймите, что просто одних ваших предположений - недостаточно.
Я, например, впервые слышу такое утверждение, и для меня ваши выводы неубедительны, также как для вас неубедительны мои аргументы.

Вы приведите результаты тестов: что при этом страдает производительность, память, процессор?
Я всего лишь хочу узнать, почему вам можно верить.
Вдруг вы действительно можете подтвердить свои слова на практике, а дело не в вашем ЧСВ, которое подталкивает вас отстаивать свою правоту.
unknown181538; Гриффин; +2 – Ответить
179. oleg-x 24 20.12.18 14:31 Сейчас в теме
(177)(172) Кстати, можно было бы даже отдельную маленькую статью оформить. Мне бы было бы интересно (хотя в ближайшие пару лет уж точно не пригодится).
181. for_sale 901 20.12.18 14:34 Сейчас в теме
(177)
Так там же выше я уже всё написал. Что и, главное, почему, из написанного мною и уже несколько раз скопированного, вам непонятно?
183. json 3437 20.12.18 14:42 Сейчас в теме
(181)
Я увидел только ваши рассуждения и предположения.

Ваши предположения - это просто слова.
Вы не тот авторитетный специалист в предположения которого можно верить просто на слово.
Вы просто "какой-то пользователь на инфостарте", также как и я.
Поэтому ваши предположения-рассуждения нужно подтвердить цифрами.

Какой именно пост(ы) вы имеете ввиду?
Есть конкретные замеры?
oleg-m; Гриффин; CodeNull; klinval; +4 – Ответить
192. starik-2005 3309 20.12.18 15:24 Сейчас в теме
(172)
Потому что, например, вы, действительно верите, что можно из запроса получить данные вначале в таблицу, а потому и в ТЧ без обхода.
Вот тут интересная фича приведена.
Без оптимизации -O0:
  400816:       ba 19 00 00 00          mov    $0x19,%edx
  40081b:       be 00 00 00 00          mov    $0x0,%esi
  400820:       48 89 c7                mov    %rax,%rdi
  400823:       e8 a8 fc ff ff          callq  4004d0 <memset@plt>


С оптимизацией -O3:
  4007f4:       48 c7 04 24 00 00 00 00    movq   $0x0,(%rsp)
  4007fc:       48 c7 44 24 08 00 00 00    movq   $0x0,0x8(%rsp)
  400805:       48 c7 44 24 10 00 00 00    movq   $0x0,0x10(%rsp)
  40080e:       c6 44 24 18 00             movb   $0x0,0x18(%rsp)
Фактически во втором случае нет вызова функции заполнения вообще - она заинлайнена.

К чему я это? К тому, что разработчики платформы 1С могли подумать и оптимизировать работу "Загрузить->Выгрузить", сделав один обход вместо двух за программиста 1С. Такая оптимизация языковых конструкций широко используется в языках программирования, и я не думаю, что разработчики платформы про это ничего не знают. А вот сделали они это или нет - вопрос интересный.
204. for_sale 901 20.12.18 15:56 Сейчас в теме
(192)
Всё так. Но я вспоминаю притчу из коммунистического детства - когда дети пошли в поход и никто не взял нитку с иголкой потому, что каждый подумал, что возьмёт другой.

Если я программирую участок, я за него отвечаю. Очень хорошо, если программисты платформы знают, что в 1С широко распространено ректальное программирование, поэтому сделали какие-то скрытые ускорения. Но всё же я свой код всё равно буду писать так, чтобы он оптимально работал в худшем случае, т.е. как если бы разработчики платформы ничего для меня не улучшили. Во всяком случае до тех пор, пока не будет документированных подтверждений тому, что надо обязательно пользоваться Загрузить-Выгрузить, потому что разработчики платформы гарантируют, что это быстрее.
Fox-trot; Артано; neikist; acanta; +4 –1 Ответить
206. starik-2005 3309 20.12.18 15:59 Сейчас в теме
(204)
Но всё же я свой код всё равно буду писать так, чтобы он оптимально работал в худшем случае, т.е. как если бы разработчики платформы ничего для меня не улучшили.
Т.е. если в 99% случаях код работает лучше, а в гипотетическом 1% случаев, когда результат запроса на столько огромен, что все встает колом, Вы все-равно попытаетесь через цикл это все ректально-отданное запросом обработать? ИМХО, пусть лучше rphost умрет сразу от out of memory, чем встанет колом на обработке такого большого результата.

НО! Не нужно такие большие результаты обрабатывать вообще. Их не должно быть в принципе. Ректальность тут как раз в запросе, а не в выгрузить->загрузить, который, повторюсь, может работать в один проход, если разработчики платформы немного подумали мозгом и используют best practices.
uncle_Vasya; CodeNull; klinval; ben19791010; Артано; +5 – Ответить
329. klinval 347 14.01.19 17:06 Сейчас в теме
(167)
Не знаю почему, но спорили на 300+ сообщений про Выгрузить/загрузить, говорили прямыми цитатами с ИТС, но так никто не кинул ссылку: https://its.1c.ru/db/v8std#content:-2145782922:hdoc

Если "потенциально неограниченных выборках данных из ИБ" в примере взят Справочник.Номенклатура, то получается неограниченные выборки это по сути всё что угодно. А такой схемы обработки данных в типовых я ни разу не видел....
for_sale; +1 – Ответить
110. oleg-x 24 20.12.18 11:47 Сейчас в теме
(106) А кроме двух обходов, какие еще аргументы против Загрузить(Выгрузить())?
Очень многие говорят о производительности, что бы код работал быстро, но это метод работает быстрее, нежели обхода. А огромные данные встречаются в основном в крупных проектах, где логика работы данных уже совсем другая.
По крайне мере, здесь я слышу об этом впервые и по результатам теста (выше), этот метод даже лучше.
112. for_sale 901 20.12.18 11:52 Сейчас в теме
(110)
А двойного обхода мало?)
114. neikist 20.12.18 11:58 Сейчас в теме
(110) Это ведь все равно по факту увеличение потребления памяти на 50%. (результат запроса + ТЗ в которую данные выгрузились + ТЧ или ТЗ в которую данные загрузили)
for_sale; +1 – Ответить
159. json 3437 20.12.18 13:56 Сейчас в теме
(106)
Ваш самый весомый аргумент, насколько я полагаю - это ДВА ОБХОДА.

Но вы не учитываете, что обход ВЫБОРКИ - это возможно в несколько раз более затратная операция, чем обход Таблицы.
При обходе выборки происходит переключение рекордсета + преобразование из примитивных типов данных в типы 1С.
При обходе таблицы - таких действий не происходит.

Таким образом соотношение Обход1:Обход2 по времени это не 50%:50%, а может значительно отличаться от этого соотношения.
Но адепты ректального программирования могут не учитывать этот факт, и считать, что Выборка.Следющий() по времени равно Для каждого СтрокаТаблицы из Таблица Цикл
Гриффин; +1 – Ответить
164. for_sale 901 20.12.18 14:00 Сейчас в теме
(159)
Я вам уже там в другом месте ответил. Ключевые слова - если не известно, что происходит, то можно или пользоваться логикой или оправдывать свой Г-код
228. Sashares 35 20.12.18 17:06 Сейчас в теме
(164)Что вы вашу логику суете везде =)
Ваша логика это только ваше представление о том как должно быть.
Совсем не очевидно, что реальность должна совпадать с вашими представлениями о ней.
Замер сделайте и проверьте.
ixijixi; CodeNull; Гриффин; Асов; +4 –2 Ответить
233. for_sale 901 20.12.18 17:44 Сейчас в теме
(228)
Простите, всё время забываю, что в ректальном программировании логика вредит конечному продукту)
238. Sashares 35 20.12.18 18:12 Сейчас в теме
(233)Не зная как работает платформа полагаться только на свои представления о ней... Да, с такой логикой в вашем ректальном программировании вы далеко пойдете)))
CodeNull; Гриффин; Асов; starik-2005; +4 –1 Ответить
369. Avatarzorro 82 14.03.25 08:59 Сейчас в теме
(99) пфф. в ут\ка2\erp типовам процедура расчета групп abc-xyz анализа постоянно течет по памяти, что приходится использовать внешние обработки или самописка
227. Sashares 35 20.12.18 16:57 Сейчас в теме
(59) Глупости. У вас все свалится еще на строке Запрос.Выполнить().
Albert_2008; +1 – Ответить
368. Avatarzorro 82 14.03.25 08:57 Сейчас в теме
(13) в 1с каждое обращение в формате "ссылка.реквизит" делает запрос к базе формата "sel ect * fr om table where id = id".

т.е. сделал
переменная1 = ссылка.реквизи1;
переменная2 = ссылка.реквизит2;

и получил 2 запроса к базе
15. starik-2005 3309 19.12.18 18:50 Сейчас в теме
А что не так с Загрузить->Выгрузить? Или Вы думаете, что результат запроса памяти не занимает? А по поводу "Найти" и запросов, то текущий объект может еще не быть сохранен, а что-то найти (например, в связанной табличной части) нужно. Хотя бы в той же УТ с установкой цен и их хитрым деревом.
bulpi; h00k; vano-ekt; +3 –1 Ответить
39. vano-ekt 146 19.12.18 20:17 Сейчас в теме
(15) не успел спросить) присоединюсь, ну и так и чем не угодило? Магия 1С порой быстрее работает, тот же метод ЗаполнитьЗначенияСвойств() сработает быстрее присваивания 50 реквизитам
370. Avatarzorro 82 14.03.25 09:10 Сейчас в теме
(39) нет. тесты показывают что по скорости все идет так "чем больше строк тем быстрее отработает выгрузить-загрузить". Вопрос лишь в памяти. Кто-то говорит что не влияет, кто-то говорит что влияет
42. for_sale 901 19.12.18 20:47 Сейчас в теме
(15)
А что не так с Загрузить->Выгрузить?

В статье и не написано, что что-то не так. Там наоборот сказано - отличный способ. Строки из запроса магическим способом оказываются внутри ТЧ. Это же 1С, тут нет никаких "о большое".
CodeNull; lunjio; bulpi; Vladimir Litvinenko; TreeDogNight; Крококот; neikist; gd4ojhnng8se; +8 – Ответить
45. leemuar 63 19.12.18 22:21 Сейчас в теме
(15) занимает, но при работе с курсором - меньше. При таком подходе помимо памяти на результат запроса на сервере СУБД будет дополнительно аллоцироваться память под выгрузку в таблицу и время на аллокацию и заполнение этой памяти на сервере 1С. Становится ощутимо при больших выборках (тысячи, десятки тысяч строк). Видимо в статье таким образом говорится о нежелании думать о работе с большим объемом данных (в т.ч. о росте объема данных в будущем)
h00k; TreeDogNight; lunjio; TODD22; for_sale; +5 – Ответить
48. for_sale 901 19.12.18 22:40 Сейчас в теме
(45)
и не будем забывать о двойном обходе
95. starik-2005 3309 20.12.18 10:32 Сейчас в теме
(45)
Видимо в статье таким образом говорится о нежелании думать о работе с большим объемом данных (в т.ч. о росте объема данных в будущем)
Большие объемы данных - это не для 1С. Она их только хранить может (и то не она, в СУБД, ибо файловая ограничена по размерам и назвать ее "большой" язык не поворачивается) и обрабатывать маленькими кусочками за бесконечное время. Поэтому Загрузить-выгрузить для маленьких кусочков данных маст хэв, а большие куски отдайте роботу на Java и не мучайтесь с Выборка.Следующий() до скончания веков.
125. leemuar 63 20.12.18 12:10 Сейчас в теме
(95) не знаю о чем вы говорите, я использую emacs
102. mpeg1989 135 20.12.18 11:07 Сейчас в теме
(45) А вы где видели документы с ТЧ на десятки тысяч строк? Даже в 1С рекомендуют документ разбить на несколько документов.
starik-2005; +1 – Ответить
124. leemuar 63 20.12.18 12:09 Сейчас в теме
(102) а где я писал про документы? ;)
108. w.r. 656 20.12.18 11:44 Сейчас в теме
Может быть имелось ввиду то, что при этом очищаются все данные, которые были до этого в табличной части
17. IvanovAV 172 19.12.18 18:50 Сейчас в теме
"Вася" - лучший продажник, "Васю" - любим мы все)
18. Perfolenta 207 19.12.18 18:53 Сейчас в теме
прикольно, все пункты по делу...

однако, "ГЛАВНОЕ ЧТО БЫ РАБОТАЛО" это спорный пункт... возможно он не входит в ректальное программирование...

Есть ведь и поклонники антиректального программирования, когда безумно красиво, стильно, стандартно, разложено по полочкам, отформатировано, откомментировано, всё в километровых запросах, НО не работает, глючит, вылетает и логика просто фантастическая...

Оператор GoTo обвиняли в том, что он производит код называемый "взрыв на макаронной фабрике", но запросы подчас выглядят много хуже, особенно если в них много вкраплений конструирующего их кода...

И почему только 1С? Этот стиль живет в любых средах и языках, он универсален и вечен...
unknown181538; +1 – Ответить
19. IvanovAV 172 19.12.18 18:53 Сейчас в теме
А че вы имеете против моего любимого цвета фуксии с зелено - красными кнопками? Ваша 1С с желто-мордым Такси ничего не понимает в истинном дизайне!
Асов; Gluk_1C; TreeDogNight; for_sale; +4 – Ответить
21. Sashares 35 19.12.18 18:56 Сейчас в теме
(0)
Представим, что у вас есть запрос, который получает миллиард строк из вашего богобъекта из п.6 и вам нужно их поместить в ТЧ объекта. Слабые духом скорее всего сделают выборку и будут построчно загонять в ТЧ. Но для чего, если можно просто написать:

ТЧ.Загрузить(Запрос.Выполнить().Выгрузить());


На строке Запрос.Выполнить() - весь результат запроса помещается в память. Вы напрасно думаете, что создание выборки и добавление в цикле даных в ТЧ будет хоть как-то оптимальнее. Это заблуждение.
Единственное отличие - кода будет выполнено больше на миллиард*количество строк кода цикла.
user774630; +1 – Ответить
27. lunjio 67 19.12.18 19:10 Сейчас в теме
(21) Да, в 1С про оптимальная порционная выборка это типа Справочники.Справочник.Выбрать(), а с результатом знал, что сразу помещается в память, но думаю что Выбрать() из результата, как-то оптимальное чем пока не утилизирован результат запроса, ещё создавать таблицу значений, которая такой же объем памяти занимать, как сам результат, согласитесь ?)
Артано; for_sale; +2 – Ответить
30. for_sale 901 19.12.18 19:21 Сейчас в теме
(21)
статья как раз об этом: один раз обойти миллиард строк = два раза обойти миллиард строк
top_1c; gd4ojhnng8se; +2 – Ответить
31. spacecraft 19.12.18 19:23 Сейчас в теме
(21) не совсем так. При выборке данные, если не хватает памяти, будут сохранены на диск и будут считываться с диска при Выборка.Следующий(). При Выгрузить() можно получить нехватку памяти.
h00k; for_sale; +2 – Ответить
33. starik-2005 3309 19.12.18 19:29 Сейчас в теме
(31) табличная часть ограничена 100к строк - это современным компам ниачом.
35. spacecraft 19.12.18 19:33 Сейчас в теме
(33) это тут причем? Вопрос был про механику.
Fox-trot; Vladimir Litvinenko; for_sale; +3 – Ответить
32. TODD22 20 19.12.18 19:25 Сейчас в теме
(21)
На строке Запрос.Выполнить() - весь результат запроса помещается в память.

На 32х битной платформе если памяти не достаточно то результат запроса помещается на диск и от туда считывается по средствам "Выборка.Следующий()".
gd4ojhnng8se; +1 – Ответить
34. starik-2005 3309 19.12.18 19:31 Сейчас в теме
(32) так и на диске может памяти нехватить. Но тут забыли указать в примерах выборку всей таблицы во временную, а ткм уже селекты из нее. Вот нафига так делать? Вот это истиный пример того самого терморектального криптоанализа
37. TODD22 20 19.12.18 19:50 Сейчас в теме
(34)
Но тут забыли указать в примерах выборку всей таблицы во временную, а ткм уже селекты из нее. Вот нафига так делать?

Выборку первым запросом таблицы в ВТ, а потом последующие выборки из ВТ что ли? Или что имеется ввиду?
TreeDogNight; gd4ojhnng8se; +2 – Ответить
36. Арчибальд 2712 19.12.18 19:36 Сейчас в теме
(32) (33) Статья-то не о запросах. И даже не о программировании 1С. Я увидел самоидентификацию Программиста.
56. Артано 803 20.12.18 02:40 Сейчас в теме
(21) Вы не правы. Затраты будут двойными. Больше или меньше чем выборка зависит от конкретного оборудования и объема данных. Поясню: Метод "Выгрузить" результата запроса, выполняет копирование одной таблицы в другую, с соответствующими издержками на обслуживание операции и хранение данных. При выборке вы парсите одну таблицу.

Использование выборки, по сравнению делает код более предсказуемым и гибким в своём поведении, независимо от объема данных. При этом нельзя отрицать, что в 99% процентов случаев выгрузка данных в таблицу ни к чему плохому не приведёт.
starik-2005; +1 – Ответить
22. IvanovAV 172 19.12.18 18:56 Сейчас в теме
Пункт №6 - это к разработчикам типовых конф, аля УГ11 чего только стоит справочник Номенклатура с больше сотни реквизитов Числитель_Вес_Заменатель_ЕГАИС_ГИС. И регистр накопления Себестоимости в котором живет все на свете.
portalUg; bulpi; for_sale; +3 – Ответить
23. vermouth 19.12.18 18:59 Сейчас в теме
Ух, так большинством этих базовых приемов я виртуозно владею!!! ) Приятно, что идешь в ногу со временем
uncle_Vasya; YaroslavHolovatiy; Дмитрий74Чел; denismal; bulpi; user598655_ilia-bers; Aggressorak; h00k; for_sale; +9 – Ответить
29. Арчибальд 2712 19.12.18 19:13 Сейчас в теме
Конечно же плюс. Хотя, насчет ректальности готов поспорить.
38. shard 293 19.12.18 19:59 Сейчас в теме
Встречал в одной конфе (для ЦБ, это вам не хухры-мухры!), разрабатываемой франчем, выполнение запроса в двойном(!) цикле - вот мастерство настоящих гуру. А мы, с нашими проверками на "Васю" - жалкие подражатели. Самое главное - исправить не дали, т.к. пострадал бы авторитет разработчика.
bulpi; user598655_ilia-bers; TreeDogNight; boln; for_sale; +5 – Ответить
41. boln 1044 19.12.18 20:34 Сейчас в теме
(38)
Встречал в одной конфе (для ЦБ, это вам не хухры-мухры!), разрабатываемой франчем
Интересно, нахрена им франчи? Я недавно проводил выездной курс для одинэсников ЦБ, у них там свои кадры и довольно неслабые. Уж точно запрос в цикле делать не будут.
51. shard 293 19.12.18 23:50 Сейчас в теме
(41) Полагаю бабло пилили. Либо свои эту ахинею не пожелали писать и крайними за внедрение быть.
andreypahov; +1 – Ответить
52. acanta 20.12.18 00:04 Сейчас в теме
(51) Во втором случае предметная область непонятна программисту и нет желания/времени осваивать.
40. vano-ekt 146 19.12.18 20:23 Сейчас в теме
6. God object
Так в загнивающей капиталистической литературе называют объект в системе, который хранит все данные и/или весь функционал.

в нашей литературе его назвали регистром бухгалтерии
unknown181538; mirco; FesenkoA; Albert_2008; ixijixi; mr.lynx; bulpi; user598655_ilia-bers; h00k; Max27; TreeDogNight; tulakin_s; kot30688; Dem1urg; user1113362; acanta; gd4ojhnng8se; for_sale; echo77; +19 – Ответить
43. Serg O. 337 19.12.18 20:49 Сейчас в теме
Всё в точку!
п.9 про вентилятор охлаждения ... супер! РжуНеМогу ( КаталсяПодСтолом )

"Шедевральность шедевра в его сложности" - надо в рамочку и на стену...
её даже можно попробовать измерить Анализ цикломатической сложности
если она больше 30-50 (а я встречал до 90 ! ) - надо рефакторить... т.е. переписывать заново

п.3 - любимое дело копи-пастить... его можно тоже попробовать измерить,
как раз недавно переделывал обработку КопиПастаМер v.2 ...

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

P.S. фото с ежегодной Премии - Рукожоп года... (HandAssMan) (см. youtube . com)
Прикрепленные файлы:
user598655_ilia-bers; A7758735; h00k; TreeDogNight; CyberCerber; user1113362; gd4ojhnng8se; for_sale; +8 – Ответить
74. TreeDogNight 22 20.12.18 07:40 Сейчас в теме
(43) Если руки золотые, то не важно откуда они растут :)
for_sale; +1 – Ответить
44. user779117 19.12.18 22:12 Сейчас в теме
Автор! Ты мой кумир теперь!
Завтра распечатаю и повешу в офисе на стену!
bulpi; TreeDogNight; for_sale; +3 – Ответить
47. for_sale 901 19.12.18 22:37 Сейчас в теме +5 $m
(44)
Спасибо)) на подходе ещё статьи из этого цикла
176. brr 184 20.12.18 14:28 Сейчас в теме
Про название метода которое не отражает, что он делает и про количество параметров было? Слабо раскрасить строку жирным с одиннадцатью параметрами?

ОформитьЖирнымСтрокуПоNew_НОВАЯ(ЛистПрайса_Excel, ТекИндСтр, КолВоКолонокПрайса, ЭтоNew, ЭтоСпецЗаказ, ПризнакАкцииПоТовару = Ложь, РезПримечание = "", ЭтоРаспродажныйТовар = Ложь, КраситьЦветомНовинкиРаспродажи = Ложь, КраситьЦветомСнижениеЦен = Ложь, КраситьМинУпаковку = Ложь)
46. acanta 19.12.18 22:31 Сейчас в теме
Премии программисты достойны, факт. Вопрос стоит так - если у этих программистов клиентов много, но только один из них имеет такую стильную конфигурацию-номинант, то в чем разница между этим клиентом и остальными?
Ведь ни один клиент как правило в код не лезет до расставания с программистом.
А в случае получения конкурентами такого клиента возникнет законное желание найти и спасти всех остальных пострадавших-т.е. получить всю клиентскую базу программиста.
49. RustIG 1990 19.12.18 22:44 Сейчас в теме
общий восторг не испытал, пройду мимо
Albert_2008; pm74; Stref75; +3 –1 Ответить
50. CyberCerber 905 19.12.18 23:45 Сейчас в теме
Единственный вопрос по пункту 5 про модули... Как я понял, я сам делаю их через одно место.
Потому что я не понимаю разницы между модулями Сервер и ВызовСервера. Точнее, я не вижу смысла в модуле Сервер, если есть ВызовСервера.
Можете пояснить?
TreeDogNight; +1 – Ответить
53. neikist 20.12.18 00:13 Сейчас в теме
(50) Могу ошибаться, так как целенаправленно вопрос не изучал и это просто мои выводы: далеко не все методы выполняющиеся на сервере нужны клиенту и логичнее их вызовы осуществлять контролируемо, иначе кто то раскопав протокол обмена между клиентом и сервером 1ски сможет делать что захочет.

Как пример, довольно абстрактный. Есть метод Перевести(Сумма, Источник, Приемник) Экспорт на сервере, без каких либо проверок внутри, просто метод использующийся в разных местах. Если у нас есть возможность вызывать этот метод напрямую - то раскопав протокол обмена можно будет дергать его с клиента прямо без всяких ограничений.
А вот если ВызовСервера у модуля не стоит, зато есть другой модуль с этим признаком который по обращению с клиента осуществляет проверки и только потом что то переводит - это уже другое дело. В таком случае у теоретического злоумышленника не получится без проверок что то перевести.
Или например у нас есть десяток экспортных процедур позволяющих разные действия, но с клиента должна вызываться только одна из них. Чтобы не делать злоумышленнику доступными все - заводим модуль прокси с ВызовСервера который пробрасывает вызов единственного нужного метода, а к остальному десятку доступа так и не будет.

P.S. Еще раз уточняю что это просто предположения и тоже интересно было бы послушать о причинах.
for_sale; +1 – Ответить
54. for_sale 901 20.12.18 00:19 Сейчас в теме
(53)
всё гораздо проще, хотя озвученный вариант мне тоже нравится.
Просто модуль Сервер компилируется только на сервере. А модуль с Вызовом сервера компилируется и там, и там. Т.е. увеличивается время компиляции на клиенте. Поэтому в него нужно помещать только методы, которые действительно надо вызывать с клиента.
bulpi; h00k; top_1c; lunjio; neikist; acanta; +6 – Ответить
55. neikist 20.12.18 00:21 Сейчас в теме
(54) Хм, просто я когда то слышал именно в контексте темы безопасности, но в чем именно опасность/безопасность так и не искал, вот и сделал предположение.
63. vano-ekt 146 20.12.18 06:36 Сейчас в теме
(55) физическая опасность для конкретного копрокодера невелика(особенно, если отдел разработки состоит из него одного), при этом возможность передать что-то мутабельное между к-с вполне себе реальна
[но мы то знаем, все методы тру-копро-кодера обернуты в попытку, поэтому всё норм]
TreeDogNight; for_sale; +2 – Ответить
121. CyberCerber 905 20.12.18 12:03 Сейчас в теме
(54) А можно подробнее про "компилируется"? Не слышал раньше об этом... И как может серверный модуль компилиться на клиенте? Ведь там в коде если объекты, которые не доступны на клиенте. И разве вообще что-то компилится в 1С? Ведь это интерпретируемый язык. Или вы говорите о создании индекса методов для вызова?
129. for_sale 901 20.12.18 12:20 Сейчас в теме
(121)
Как всегда, пути 1С неисповедимы и код платформы закрыт. Но рискну предположить что где-то на уровне ниже создаётся какая-то прослойка, которая доступна на клиенте и которая дёргает сервер. Но в любом случае, гугление постоянно даёт именно информацию о компиляции на клиенте этого серверного модуля. Чтобы это не значило.
118. CyberCerber 905 20.12.18 12:00 Сейчас в теме
(53) Тоже так подумал, плюс еще как защита от передачи объектов, которые не могут ходить с клиента на сервер, например, ТЗ.
Но просто помню примеры из типовых. Например, в УТ 11 есть модули ОбщегоНазначенияУТ и ОбщегоНазначенияУТВызовСервера. И там, и там есть очень полезная функция ЗначениеРеквизитаОбъекта (которая как раз работает по п.2). Так вот в ОбщегоНазначенияУТВызовСервера она просто вызывает ОбщегоНазначенияУТ! Какой в этом смысл?
130. for_sale 901 20.12.18 12:21 Сейчас в теме
(118)
В этом и смысл.
Представьте, что у вас есть серверный модуль с миллиардом функций. А одну из них вы хотите вызвать с клиента. Ректальное программирование говорит - сделай его с вызовом сервера и не парь себе мозг. Ну а программисты послабее духом возьмут и сделают отдельный модуль с вызовом сервера, где сделают эту одну функцию, но вызывать будут вот ту, в серверном.
131. CyberCerber 905 20.12.18 12:24 Сейчас в теме
(130) Да, в общем, понятно... Но почему бы тогда реализацию этой функции и не сделать в модуле ВызовСервера, чтобы избежать доп. вызова? Тогда возвращаемся к вопросу о компиляции?
57. TimoninD 20.12.18 02:46 Сейчас в теме
Автор постарался от души! Ждем продолжения..
for_sale; top_1c; +2 – Ответить
93. for_sale 901 20.12.18 10:24 Сейчас в теме
58. Артано 803 20.12.18 02:48 Сейчас в теме
Спасибо автору за прекрасный иллюстративный материал, у меня никогда бы не хватило душевных сил и времени чтобы так с огоньком описать, то с чем мне приходится бороться
TreeDogNight; for_sale; madonov; +3 – Ответить
60. AlexCherdakov 21 20.12.18 06:00 Сейчас в теме
Виртуозно владею тремя пунктами ректального программирования:
1 Копирование. Часто при изменении типовой конфигурации копирую куски кода дабы максимально следовать логике разработчиков, понимаю что можно было сделать по другому и возможно даже немного лучше но пусть будет так, в дальнейшем оправдывается. (Из текста этого пункта недостаточно явно следует о том что верх мастерства это повторяющиеся куски кода большого размера которые можно выделить в отдельные сущности, к сожалению этой ступени мастерства я еще не достиг)
2 Попытка. Попытка это изобретение дьявола, например последнее из моего творения: по тексту типового запроса в типовой конфигурации был уверен что теоретически может возникнуть ситуация когда запрос вернет не ноль а Null причем не этого значения группировки, делать две правки типового кода в совершенно разных местах... нет попытка и навыки "ректального" программиста мой выбор
3 Юзерфрендли. Да я считаю что придумаю интерфейс лучше чем пользователь и постараюсь не дать ему возможности "фантазировать" на эту тему, единственный свой минус я тут вижу в следовании общей концепции интерфейса даже если он ущербен изначально

Я достаточно развил свои навыки ректального программиста для того чтоб причислить себя к этому гениальному сообществу?

ЗЫ а вообще статься понравилась автору плюс
TreeDogNight; for_sale; user1114895; +3 –1 Ответить
65. vano-ekt 146 20.12.18 06:44 Сейчас в теме
(60)
Да я считаю что придумаю интерфейс лучше чем пользователь и постараюсь не дать ему возможности "фантазировать" на эту тему

подн**рал 1С тебе со своими уф в этом деле...
66. AlexCherdakov 21 20.12.18 06:46 Сейчас в теме
(65)сначала я его ненавидел, потом тихо презирал, а теперь... я похоже его даже люблю
61. al_zzz 325 20.12.18 06:01 Сейчас в теме
Когда устроился во франчайзи, дали мне клиента, которого до этого обслуживал фрилансер. Когда заглянул в код - волосы встали дыбом. Там присутствовали примеры почти из всех кейсов статьи. Спросил бухшу, кто им такую "красивость" написал? Сказала, что программист их обслуживал. Такой хороший, ну такой хороший! Но потом, к сожалению, уехал Москву автоматизировать...
bulpi; CyberCerber; TreeDogNight; TimoninD; user1114895; lunjio; top_1c; +7 – Ответить
78. &rew 55 20.12.18 08:49 Сейчас в теме
(61)Нарушен первый постулат 1С. Не "копрохвали" коллегу своего, ибо потом про тебя так же скажут. Именно из-за этого у 1С ников такая "слава".
79. al_zzz 325 20.12.18 08:54 Сейчас в теме
(78)Тут вроде все свои, нет?
80. &rew 55 20.12.18 09:02 Сейчас в теме
(61)
Спросил бухшу, кто им такую "красивость" написал?
96. vano-ekt 146 20.12.18 10:32 Сейчас в теме
(61) это хорошо, что в вашем франче принято переписывание чужого гамнокода (хоть и рабочего) за свой счет, а свой код проверять системным архитектором и покрывать тестами. Таким сотрудникам франчам надо платить все 34% вместо 33 от часа
62. nomadon 369 20.12.18 06:14 Сейчас в теме
ничиго не понял а что смешного
105. TreeDogNight 22 20.12.18 11:31 Сейчас в теме
(62) Это же очень тонкий сарказм)
64. user811769 17 20.12.18 06:37 Сейчас в теме
Так, нужно продолжение
bulpi; TreeDogNight; for_sale; +3 – Ответить
94. for_sale 901 20.12.18 10:24 Сейчас в теме
67. vano-ekt 146 20.12.18 06:53 Сейчас в теме
ещё один крутой прием в ректокодинге
Модифицируй при записи!
Пользователи обязательно должны чувствовать Силу Автоматизации, и знать что программист позаботился, чтобы скрытый с формы, но очень полезный служебный реквизит заполнился автоматически. Пусть при записи на форме, пусть ему, пользователю пришлось два раза записать объект. Но это лучше, чем бы это поле присутствовало на форме и пользователь сам вводил поле "датаизмслужеб" (тут и ошибиться и забыть можно в конце концов)
unknown181538; bulpi; CyberCerber; for_sale; user1114895; lunjio; fancy; +7 – Ответить
68. torbeev 20.12.18 06:54 Сейчас в теме
Не угадал автора по заголовку.
h00k; CyberCerber; +2 – Ответить
69. top_1c 4198 20.12.18 06:59 Сейчас в теме
Просто восхитительно всё собрано во едино!


for_sale; user1114895; lunjio; +3 – Ответить
71. user828972 20.12.18 07:15 Сейчас в теме
Сегодня вроде не 1 апреля
Degrement; +1 –5 Ответить
73. Hans 3 20.12.18 07:37 Сейчас в теме
Еще один тру кодер?
Degrement; +1 –6 Ответить
77. Degrement 126 20.12.18 08:41 Сейчас в теме
Напомнило старый анекдот:
Стадии развития программиста:
1) Ваш код гавно.
2) Мой код гавно.
3) Весь код гавно.
4) Жизнь гавно.
5) Выступает на конференции с темой: "Как структурировать гавно, чтобы оно не растекалось."

Автор похоже начинающий программист...
azard@inbox.ru; bomber99544; Sagat777; bulpi; elizarovs; rintik; Артано; forseil; Hans; +9 –3 Ответить
75. vano-ekt 146 20.12.18 08:02 Сейчас в теме
Каждому Праву по Роли!
Самым оптимальным и эффективным способом разделить права на просмотр, запись, редактирование реквизитов является проверка

РольДоступна("МожноОткрыватьЗаказФилиалСибирь") И Ответственный.реквподразделение.Наименование = "Сибирь"
или
РольДоступна("ВидимостьСкладаВТребованииНакладной")

Чего может быть проще? Добавил в ветку "Роли" нужное право и проверил нехитрым способом, в нужных методах поставив Отказ=Истина или Форма.Закрыть().
Не зря в современных конфигурациях разработчики вендора столько ролей придумали. Правда используют их не так эффективно, эРэЛэС-шмэрэлэс - непонятно, долго, да и тормозит систему, сами же говорили - противоречивые ребята
Еще есть какие-то ПВХ доп.права, но там надо копаться, опять в чужие стандартные методы лезть. То ли дело элегантный и лаконичный РольДоступна(), работающий в любой конфигурации. Делаешь больше ролей в УПП - приближаешь её к ERP
krollzlat; bulpi; Tangram; user828972; +4 –2 Ответить
76. artempo 20.12.18 08:31 Сейчас в теме
Автору большой плюс!
Теперь я знаю, как надо программировать)
Всё доходчиво, понятно и в одном месте)
for_sale; +1 – Ответить
81. Viktor_Ermakov 419 20.12.18 09:04 Сейчас в теме
Боюсь что новичок, прочтет эту статью, и примет за чистую монету. Нужно обозначить что так делать нельзя))
user1114895; lunjio; stepan_s; +3 – Ответить
83. artempo 20.12.18 09:15 Сейчас в теме
(81) а по каким материалам потом статьи писать?)
for_sale; +1 – Ответить
82. stepan_s 20.12.18 09:05 Сейчас в теме
Автор молодей! так точно "ни в бровь а в глаз" давно не видел попадания :) за каждой фразой прямо в памяти человек, и его умиленное собой лицо.... "я крут!!!"
for_sale; user1114895; +2 – Ответить
84. acanta 20.12.18 09:16 Сейчас в теме
Он умеет готовить кошек.
85. zqzq 25 20.12.18 09:25 Сейчас в теме
Не упомянут самый полезный оператор 1С:
Выполнить(Строка)

Настоящий Творец собирает программный код динамически, а потом элегантно и оптимально одной строкой кода его выполняет.
Albert_2008; Дмитрий74Чел; le0nid; bulpi; neuromancer_aza; for_sale; +6 – Ответить
216. Painted 49 20.12.18 16:17 Сейчас в теме
(85) Напомнило, 1С очень любит собирать текст запроса таким образом. И ведь точку останова не всегда поставишь, чтобы окончательный вариант посмотреть - часто запрос работает на сервере или в фоне.
user811769; +1 – Ответить
86. PLAstic 296 20.12.18 09:32 Сейчас в теме
Я робко напомню, что в среде антиректальных программистов говорят "функциональность". А "функционал" в приличном обществе вообще не произносят те, кто знает смысл этого слова.
88. user623969_dusa 20.12.18 09:40 Сейчас в теме
надо предупреждать что статья шутка - сидишь тут серьезный и тут ТАКОЕ
for_sale; +1 – Ответить
90. graphbuh 269 20.12.18 10:19 Сейчас в теме
Браво! Джеймс Хэрриот отдыхает )
for_sale; +1 – Ответить
91. molot 286 20.12.18 10:21 Сейчас в теме
Автор, не останавливайся, развивай тему! Ударим по буржуйскому agile отечественным 1aSSgile!
Vladimir Litvinenko; CyberCerber; for_sale; +3 – Ответить
92. iiceberg 91 20.12.18 10:22 Сейчас в теме
Вам смешно...., а нам наследие досталось... со всеми пунктами этого списка...

Добавлю 5 копеек. Пунктуация афтора сохранена.
Данные по ресурсной спецификации изделия хранить в виде дерева... выгруженного в файл на сервере.
// Вставить содержимое обработчика.
ЗначениеВФайл("\\srv1\spec\"+СокрЛП(СтрЗаменить(Оборудование.Наименование,"/"," ")),ТабличноеПоле1);

здесь даже без попытки....

и загружать обратно на форму:
       Попытка
       ПолученноеЗначение = ЗначениеИзФайла("\\srv1\spec\"+СокрЛП(СтрЗаменить(Оборудование.Наименование,"/"," ")));
       Если ТипЗнч(ПолученноеЗначение) = Тип("ДеревоЗначений") Тогда
		   
		ТабличноеПоле1=ПолученноеЗначение;   
	   КонецЕсли;
       Исключение
	   
       КонецПопытки;
	// Вставить содержимое обработчика.
Показать

без возможности редактировать состав изделия при запуске в производство....

А еще 2 года назад таким образом, ооооочень большая часть спецификаций, были зашифрованы... вирусом... (бэкапов не делалось... зачем?)
bulpi; CyberCerber; for_sale; +3 – Ответить
98. vano-ekt 146 20.12.18 10:36 Сейчас в теме
(92) ну вы не растерялись, поставили антивирус и настроили бэкапы? :-D
Гриффин; bulpi; +2 – Ответить
97. AtPups000 20.12.18 10:32 Сейчас в теме
Не ректальное , а анальное программирование)))
100. json 3437 20.12.18 11:03 Сейчас в теме
Таблица.Загрузить(Запрос.Выполнить().Выгрузить())

Откуда инфа, что это плохо?
Кто-нибудь проверял?
malina-da; w.r.; +2 – Ответить
116. vano-ekt 146 20.12.18 11:58 Сейчас в теме
(100) в 15м посте еще спрашивали )
203. acanta 20.12.18 15:54 Сейчас в теме
(100) Исходим из старого ограничения что при количестве строк свыше 500 скорость транзакции падает экспоненциально, и в принципе не применяем такую команду при значительно большем объеме данных (но можем применять запрос в цикле). Я помню совет очень авторитетного человека "учиться писать запросы вручную, а не через конструктор запросов".
205. starik-2005 3309 20.12.18 15:56 Сейчас в теме
(203) вот вроде бы всего два предложения, но продраться к смыслу не смог. Вы о чем?
208. acanta 20.12.18 16:03 Сейчас в теме
(205) "На танцующих утят быть похожими хотят все все все все" (с). Программисты не должны думать о том, что на их коде будут обрабатываться большие объемы. У них данные всегда ограничены демо базой "ООО Добро" с документами за 1999-2001 годы. Но написать требуется так, чтобы этот код подходил для всех hi load на всех платформах и всех клиентах.
for_sale; +1 – Ответить
230. json 3437 20.12.18 17:11 Сейчас в теме
(203)
Не совсем понял, при чем в нашем случае транзакция.

Тут дело даже не в производительности. Мы все любим стандарты и рекомендации от 1С.
Но когда приходит некий Вася и начинает предлагать свои стандарты.
И при этом пишет, что отклонение от его стандартов - ректально, то сразу возникают возражения.
232. acanta 20.12.18 17:41 Сейчас в теме
(230) Вы имеете ввиду другую транзакцию - количество накопленного качественного межличностного общения между двумя и более индивидуумами.
Некий Вася - мы его не знаем, он с нами в школе не учился, денег в долг не давал, по нашим обязательствам не поручился. В нашем успехе в общем случае не заинтересован, а заинтересован в получении а) денег, б) опыта, в) хороших рекомендаций для того чтобы получить со следующих клиентов еще больше денег.
Вот (в) это ТОЖЕ транзакция.
И то как он предлагает свои стандарты (не свои конечно же, а других клиентов, с которыми раньше работали 1с-ники) - тоже транзакция.
И то что он утвержает что если вы направите его изучать другие варианты в процессе исполнения проекта - то времени на освоение Васей новых вариантов может не хватить для того чтобы ваш проект хотя бы как то пошел и тогда непременно придется делать как-нибудь, что может привести к неожиданностям.
Представьте себе, что вам дали 2 минуты на то чтобы поговорить с генеральным директором. Что именно вы ему должны сказать, чтобы он купил сразу и именно у вас проект на внедрение ЕРП за 10 миллионов?
for_sale; +1 – Ответить
236. json 3437 20.12.18 17:58 Сейчас в теме
(232)
Просто некий Вася - может заблуждаться, но сам этого не понимать.
И если я ему поверю на слово, то могу получить не совсем тот результат, который я ожидал.

Вот раз предлагаешь стандарт, то нужно как минимум предложить его обоснование.
Причем не только в виде умозаключений через предположения, а в виде тестов, замеров и цифр.

Проблемы с памятью - какие конкретно? Сталкивался ли автор с этими проблемами? Пусть опишет. Если не сталкивался, так может проблем то и нет. И он их придумал.
Проблемы с производительностью - какие конкретно?
escape; starik-2005; Sashares; +3 –1 Ответить
237. for_sale 901 20.12.18 18:00 Сейчас в теме
(236)
... я уж не говорю, что статья - это вообще шутка)) И столкнувшиеся и подтирающие за такими "программистами", оценили и посмеялись, а "музы" на дыбы встали))
239. oleg-x 24 20.12.18 18:14 Сейчас в теме
(237) Есть много разных шуток, например как улучшить производительность айфона:
1) Возмите айфон
2) Положите в пакет.
3) Пакет положите в микроволновку.
4) Поставьте на 1 минуту
Все как минимум 10% прироста будет.

И ведь потом можно почитать гневные комментарии, что производительность не только не улучшилась, а еще и теперь не работает

P.S. Не увидел в статье, что это шутка.
241. for_sale 901 20.12.18 18:23 Сейчас в теме
(239)
Чччёрт, простите, пожалуйста! То, что вы не поняли шутки - это полностью моя вина, согласен. Как мне загладить свою вину? Назовите цифру нанесённого вам морального ущерба - возьму ипотеку, но выплачу))
Fox-trot; Артано; acanta; +3 – Ответить
242. oleg-x 24 20.12.18 18:25 Сейчас в теме
(241) Ок, объясните 8 пункт или дайте ссылку на ИТС. Пока только теории и слышал. И мы будем в расчете :-)
243. for_sale 901 20.12.18 18:29 Сейчас в теме
(242)
А разве там написано, что это плохо? Собраны качественные методики, способные улучшить и без того идеальное программирование))
244. Sashares 35 20.12.18 18:31 Сейчас в теме
(242)Логика ТС - срубить плюсов на устроенном сраче, зачем кому-то что-то доказывать))
starik-2005; +1 –1 Ответить
245. for_sale 901 20.12.18 18:35 Сейчас в теме
(244)
Нет, просто приходит тысяча обидившихся, узнавших себя программистов и каждый требует от автора объясниться)) Я объяснил одному-второму-третьему, но на всех меня не хватит. Если вам интересно лично моё мнение - читайте комменты, тут уже всё это было. Если вам интересно как оно всё "на самом деле" - ищите информацию, проводите тесты. спрашивайте у специалистов. Для этого и создаётся такой контент - чтобы "ректальные" программисты обижались, но не шли швыряться говном, а шли в гугл и искали-изучали-подтверждали-опровергали.

А я уже, пожалуй, пойду займусь делом, а то целый день тут обидки выслушиваю))
Fox-trot; acanta; boln; +3 – Ответить
247. Sashares 35 20.12.18 18:43 Сейчас в теме
(245) Добавить в говностатью 1 нормальную практику, которой пользуются все, и которая является говеной только по вашему ничем не подтвержденному мнению. И тем самым обосрать всех.
На комментарии с требованием пруфов - "отвечать я так вижу".
Нормальная практика. Что уж.

На ваше личное мнение всем глубоко насрать, вот серьезно.
Ну удачи вам в ваших делах.
249. for_sale 901 20.12.18 19:04 Сейчас в теме
(247)
Какая яркая реакция)) Ну не надо так расстраиваться! Ну написал кто-то про вас статью, вы можете просто тихонечко посидеть, тогда никто и не узнает, что это про вас))
Fox-trot; kirghoff; +2 – Ответить
250. for_sale 901 20.12.18 19:07 Сейчас в теме
(247)
Кстати, любой недовольный умник, который признал себя в ректальных программистах, может здесь же написать статью-опровержение, где доходчиво объяснит, что все - говно, а он - д'Артаньян))
kirghoff; Fox-trot; +2 – Ответить
281. artempo 21.12.18 09:17 Сейчас в теме
(245) Я говнокодер и горжусь этим!)))
За статью плюсую и всё подтвержадаю)
Кстати многое не знал, теперь добавлю в свой арсенал!
Жду продолжения)
bomber99544; kirghoff; +2 – Ответить
262. Артано 803 21.12.18 04:08 Сейчас в теме
(239) А Остера вообще под суд отдать за развращение малолетних детей!
254. json 3437 20.12.18 19:52 Сейчас в теме
(237)

Ах вон оно чо!

Мне просто сначала показалось, что вы разбираетесь в этом вопросе, поэтому и поинтересовался поподробнее.

А инфа оказывается непроверенная.
И вообще это все - шутка.

Ну тогда ладно
235. for_sale 901 20.12.18 17:57 Сейчас в теме
(230)
А потом приходит некий "гениальный" Вениамин, который в статье узнал себя, и начинает плеваться слюной и доказывать, что не он ректальный программист, это все вокруг - Васи))

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

Я пару лет назад статью про НайтиПо... писал - было примерно то же самое нашествие таких вот "ректальных гениев")) В мире даже слово такое есть - хардкодинг, в Андроиде даже систему борьбы с литералами в среду разработки встроили. Но местные ректальные пророки сказали, что КГ/АМ)) Так что сейчас я уже морально готов к вашей реакции и даже готов сделать дарственную подпись, когда вы мою статью распечатаете и сделаете официальным регламентом разработки у себя в организации))
Fox-trot; kirghoff; Артано; +3 – Ответить
272. json 3437 21.12.18 07:08 Сейчас в теме
(235)
Ну про то, что я применяю ректальные практики - это лишь ваши фантазии. На каком основании вы сделали такой вывод?

И не плевался я в вас слюной.
Мне не понятно откуда вы сделали такой вывод.
Я даже лайкнул статью, т.к. она очень даже удачная.

Я лишь попытался выяснить подробнее про пункт 8.
Но вы себе придумали гипотезу и поверили в нее.
И вместо того, чтобы её проверить, начинаете в ней убеждать других.
И более того, все факты, которые ей противоречат, воспринимаете как негатив.
Игнорируете тесты, проведенные другими, а также вас не смущает, что об этом нет упоминания на ИТС.
Гриффин; escape; starik-2005; +3 – Ответить
107. elizarovs 83 20.12.18 11:42 Сейчас в теме
Избегайте крайностей. По возможности. ;-)
111. w.r. 656 20.12.18 11:51 Сейчас в теме
"Главное чтобы работало"

Золотой постулат и зря автор начинает ерничать. Только "работает", это не в 10 случаях из 100 или даже в 90. Это в 100 случаях из 100. И если работает в 100 случаях из 100, то не важно как все там написано

Вообще, есть другая крайность у программистов, гораздо более губительная для решения задачи - перфекционизм. Оптимизировать код можно до бесконечности, только от этого задача не решается или решается крайне медленно. Поэтому самое лучшее - написать быстро чтобы работало, а потом, если будет время уже оптимизировать свой код
unknown181538; starik-2005; +2 –5 Ответить
115. for_sale 901 20.12.18 11:58 Сейчас в теме
(111)
А вот и адепты ректального программирования подтянулись почитать настольную книгу))
117. neikist 20.12.18 11:59 Сейчас в теме
(111) Вопрос в том что если поддерживать это "неважно как все там написано" стоит раз в 5 дороже чем хорошо написанный код - то это очень спорное решение.
bulpi; for_sale; +2 – Ответить
120. w.r. 656 20.12.18 12:03 Сейчас в теме
(117) дороже стоит не решать поставленную задачу в срок, оптимизируя свой код до бесконечности. Думать о будущем (котрого возможно и не случится) гораздо хуже, чем решать задачу здесь и сейчас
122. neikist 20.12.18 12:07 Сейчас в теме
(120) Нужен баланс. Понятно что не стоит до бесконечности сидеть над куском кода и вылизывать производительность, стилистику, искать крайние кейсы, и т.п. в случае если этот код будет выполняться раз в месяц одним пользователем и в случае ошибок можно перезапустить а при тормозах подождать. Но если можно сделать код более качественным за счет стат анализа, соблюдения простых правил, покрытия тестами ключевого функционала и т.п. а также за счет более качественного проектирования ключевых элементов системы - то это стоит делать.
unknown181538; bulpi; for_sale; +3 – Ответить
126. w.r. 656 20.12.18 12:15 Сейчас в теме
(122) это нужно делать только, если есть критичные проблемы. В остальных случаях - это трата времени, которое оплачивает работодатель/заказчик. Почему-то про это довольно многие программисты забывают, работая "для себя"
132. for_sale 901 20.12.18 12:25 Сейчас в теме
(126)
Вот именно! Поэтому нужно распечатать им настольную книгу настоящего, ректального программиста и пусть работают по ней)
Статью писал в шутку, но подозреваю, что многие её распечатают и будут использовать как регламент разработки))
ben19791010; bulpi; Vladimir Litvinenko; CyberCerber; w.r.; +5 – Ответить
135. artempo 20.12.18 12:30 Сейчас в теме
(132) Иван, это не ты случайно?)
146. for_sale 901 20.12.18 13:18 Сейчас в теме
265. ben19791010 21.12.18 05:28 Сейчас в теме
(132) смотрю не многие оценили Ваше ч.ю. )))
я вот иногда каюсь грешен постулатами адептов, но блин видно ж сразу где стёб
133. neikist 20.12.18 12:26 Сейчас в теме
(126) Видимо каждый останется при своем мнении.
143. for_sale 901 20.12.18 13:12 Сейчас в теме
(133)
Обычно эта фраза звучит от тех, кто эмоционально привязывается к своему мнению, считает его лучшим, потому что оно своё, и не желает слушать аргументацию.
137. starik-2005 3309 20.12.18 12:32 Сейчас в теме
(122)
а также за счет более качественного проектирования ключевых элементов системы
Вот это правильно. Остальное спорно.
unknown181538; Артано; +2 – Ответить
138. w.r. 656 20.12.18 12:37 Сейчас в теме
(137) да и здесь могут быть нюансы. Конечно, каждому хочется чтобы ему заранее подстелили соломку. Но человек, работавший до, решал свои задачи, а ты сейчас рашаешь свои
141. starik-2005 3309 20.12.18 12:46 Сейчас в теме
(138)
Но человек, работавший до, решал свои задачи, а ты сейчас рашаешь свои
Ну если я - владелец бизнеса, то да, я решаю свои задачи. А сотрудники, которые мной наняты, мне в этом помогают как могут. Если я бедный - на сотрудниках экономлю, получаю низкую квалификацию и не могу привлечь внешних экспертов, т.к. не заработал на них. Вот и получаю что-то работающее, обеспечивающее мои потребности, но при этом оно работает не мгновенно и приходится подождать, добавить памяти на "сервере" и пару жестких дисков. А если я богат, то могу и экспертов нанять, выбирать могу. А сделает ли эксперт лучше - вопрос, т.к. у меня-то памяти на сервере и так до этого самого ректального места, а уж дисков - и того больше.
unknown181538; +1 – Ответить
147. w.r. 656 20.12.18 13:18 Сейчас в теме
(141) если память на сервере стоит дешевле работы эксперта, то почему не решить проблему с быстродействием именно так. Это логично
148. for_sale 901 20.12.18 13:19 Сейчас в теме
(147)
Вы сейчас просто за меня пишете вторую часть этой статьи))
escape; ixijixi; ben19791010; Артано; EVKash; Octopus; TimurD; bulpi; +8 – Ответить
153. w.r. 656 20.12.18 13:34 Сейчас в теме
(148) давайте начем с того, что первично - курица или яйцо - программист работает на бизнес или бизнес работает на программиста
201. for_sale 901 20.12.18 15:47 Сейчас в теме
(153)
Вы всё ещё ничего не поняли. Ни статью, ни комментарии.
157. genayo 20.12.18 13:51 Сейчас в теме
(147) Не правильно, если работа стоит - надо добить памяти и вызвать эксперта.
starik-2005; +1 –1 Ответить
162. w.r. 656 20.12.18 13:59 Сейчас в теме
(157) при условии, что деньги на эксперта есть. Плашку на 64ГБ серверной памяти можно взять за 50 тыс. Работа эксперта обойдется гораздо дороже
163. genayo 20.12.18 13:59 Сейчас в теме
(162) А потом внезапно место в сервере под плашки кончится...
boln; Артано; for_sale; +3 – Ответить
165. oyti 107 20.12.18 14:02 Сейчас в теме
(162) это с ракурса "заткнуть дыру здесь и сейчас", но архитектурная ошибка может негативно сказаться на масштабировании, изменении в структурах, добавлении нового функционала. А в следующий раз 1Тб плашки может попросту не оказаться в природе. Утрирую конечно, но, думаю, вы поняли.
Артано; +1 – Ответить
169. w.r. 656 20.12.18 14:10 Сейчас в теме
(165) если такое масштабирование планируется. А если нет? Переплачивать за ненужный в будущем функционал как-то не очень умно. Мне кажется сразу понятно примерно на каком объеме данных будет функционировать система и перед вводом в эксплуатацию проводится нагрузочное тестирование, выявляющее все проблемы на требуемом объеме данных. Если конечно это система уровня Entreprise. А если объемы данных не будут существенно расти в будущем, проблему можно решить просто апгрейдом оборудования
170. neikist 20.12.18 14:13 Сейчас в теме
(169) А если вы пишете коробку которая неизвестно с какими данными и на каком железе будет запускаться?
171. oleg-x 24 20.12.18 14:15 Сейчас в теме
(170) Тогда сделаете как и фирма 1С (да я думаю не только она этим страдает), Как только кто ни будь пожалуется, зафиксируете ошибку и выпустите обновление.
starik-2005; +1 – Ответить
173. neikist 20.12.18 14:17 Сейчас в теме
(171) А если ошибки нет но системой просто неудобно пользоваться из за кривого интерфейса, тормозов, а также ее сложно дорабатывать из за плохо структурированного кода без тестов? А все потому что писалось "чтобы работало"
Артано; +1 – Ответить
174. oleg-x 24 20.12.18 14:25 Сейчас в теме
(173) Это уже тогда не система, а Меркурий какой-то (последний тренд, кто работает с ветеринарами, тот знает).
Все в принципе зависит от задач и целей.
Главное не допустить ошибок на стадии проектирования, остальное можно будет поправить.

Тут палка о двух концах, где то читал статью про хорошего и плохого программиста, суть такова:
Плохой программист написал свой корявый продукт и выпустил на рынок, и дорабатывал в процессе эксплотации и вылизывал код.
А хороший программист писал долго и тчательно свой продукт, но когда он закончил, то выйдя на рынок, он обнаружил, что ниша уже занята и его продукт не нужен.
Да там не так все хорошо, но оно работает, а вкладывать деньги в еще один продукт, уже мало кто будет.
Albert_2008; VladimirMelnychenko; oyti; w.r.; +4 – Ответить
180. w.r. 656 20.12.18 14:33 Сейчас в теме
(174)

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


MS Windows vs IBM OS/2 )

Windows сейчас наше все, а про OS/2 мало кто поминит
Adilgeriy; +1 – Ответить
182. neikist 20.12.18 14:37 Сейчас в теме
(174)Просто есть разница между не очень хорошо и кошмарно.)
uncle_Vasya; +1 – Ответить
307. profiprog1c 260 21.12.18 23:59 Сейчас в теме
(174) Все верно. Тут еще есть такой момент. Хороший программист долго вылизывал код и получил отличный продукт с функциями продукта, которые никому из пользователей не нужны, а хороший программист думал, что нужны. А плохой программист выпустил корявый продукт и функции его продукта оказались нужны многим. И самое интересное, но пользователи будут пользоваться плохим продуктом, но с нужными функциями, а вот хорошим продуктом, но с ненужными функциями пользоваться не будут. Проверенный факт и далеко не программистами 1С.
starik-2005; +1 – Ответить
175. w.r. 656 20.12.18 14:26 Сейчас в теме
(173) тогда не покупайте эту коробку. Если коробка продается - значит на нее есть спрос и не все такие привередливые
211. пользователь 20.12.18 16:09
Сообщение было скрыто модератором.
...
276. boln 1044 21.12.18 08:27 Сейчас в теме
(147)
если память на сервере стоит дешевле работы эксперта, то почему не решить проблему с быстродействием именно так. Это логично
А помните, что произошло с поросенком из сказки, который построил себе дом из соломы? Тоже вроде жить можно было... Но неожиданно пришел волк...
150. bulpi 219 20.12.18 13:27 Сейчас в теме
(120)
МОЛОДЕЦ!!!
Такие, как Вы, поставляют материал для автора этой замечательной статьи.
escape; for_sale; +2 – Ответить
119. oleg-x 24 20.12.18 12:00 Сейчас в теме
(111) Тут отчасти правда. но как всегда есть "но". Из недавнего опыта.
База УТ 10.3 хотели провести корректировку долга по одной организации и закрыть все задолженности по ней.
Всегда до этого делали корректировку долга и проблем не было, но тут не по конкретному контрагенту, а в целом по организации решили закрыть. И получилось что то около 12000 строк в двух таблица. И документ не моли провести, выдавало ошибку выполнения запроса, слишком много параметров. я не считал, но там за 1000 получилось.
Пришлось переписывать всю процедуру, а она не маленькая была. Ну и как это бывает, нужно срочно :-)
123. oyti 107 20.12.18 12:09 Сейчас в теме
Спасибо. Статья напомнила "Вредные советы".
Занимаюсь разработкой недавно и многие рассмотренные вопросы для меня актуальны.
Из написанного понятно "как не нужно делать". А где можно почитать про то, как нужно?
Ну вот также лаконично и доходчиво. И было бы совсем замечательно, если было бы разъяснение, почему вот так плохо.
Ведь только жопорукие программисты тешат свое тщеславие, что давно все знают, не нужно ни с кем делиться драгоценным опытом с форумов и вообще аргументы с комментариями для людей, которые не знают, куда потратить лишнее время.
denismal; CyberCerber; for_sale; +3 – Ответить
136. w.r. 656 20.12.18 12:30 Сейчас в теме
(123) все зависит от поставленной задачи и времени, которое дается на ее выполнение. Например, бухгалтеру нужно срочно сдать отчет, а у него дублируются строки. Правильно будет в итоговом запросе вставить ВЫБРАТЬ РАЗЛИЧНЫЕ и отдать бухгалтеру такой отчет, а дальше уже разбираться в каком месте,к примеру, не хватает соединений в таблицах или что-то еще не так
ixijixi; for_sale; +2 –1 Ответить
139. oyti 107 20.12.18 12:40 Сейчас в теме
(136) Согласен, что многое зависит от конкретной задачи: где-то нужно быстрее, где-то дешевле и т. д. и т. п.
У меня в университете был товарищ, ярый FreeBSDшник и ругающий HTTP - ужаснейший костыль. Он был шокирован моментами, когда обновления с сервера тянулись периодическими обращениями клиента. Однако в ряде систем поверх HTTP я наблюдаю сейчас именно такую картину. Учетные системы с громкими именами и большой долей на рынке.

Вот именно поэтому и хотелось бы видеть комментарии к рукожопому коду. й = 1 или итератор = 1? Где-то код по стандартам может быть избыточным, а где-то попросту необходим.

Лично мне по душе преодолевать собственную лень и нежелание учиться новому в угоду стремления улучшить навыки. Отчасти для того, чтобы люди не плевались, если увидят мой труд, отчасти из внутреннего стремления к структурированию, упорядочиванию и желанию "делать правильно", которое наверно сродни стремлению грамотно писать.
149. w.r. 656 20.12.18 13:25 Сейчас в теме
(139) мне кажется тут мухи с котлетами вместе. Обучение - это добро, но писать код ради кода - зло не меньшее, чем говнокод
161. oyti 107 20.12.18 13:57 Сейчас в теме
(149)
писать код ради кода
- это вы в моем комментарии где-то такое увидели?
Пытался поймать ваш ракурс, не вышло.
Нет, речь только о контексте, не более. Хотя не исключен контекст, в котором "код ради кода" может быть оправдан и востребован.
166. w.r. 656 20.12.18 14:02 Сейчас в теме
(161) это не про вас сказано было. Я считаю, что учиться - это добро. Это позволяет в итоге решать задачи быстрее и эффективнее
starik-2005; for_sale; oyti; +3 – Ответить
144. for_sale 901 20.12.18 13:14 Сейчас в теме
(136)
наконец-то зерно истины)
только обычно происходит так, как я недавно в коде видел:

// Петров 2009
// временная заплатка
168. TimurD 6 20.12.18 14:04 Сейчас в теме
(144) В догонку

				//--------------------------------------------------------------------------//
				//         "ПРИНУДИТЕЛЬНОЕ"    удаление    "минусовых"    позиций.          //
				// Код добавлен с 17.02.2014 года из-за "неустранимых" косяков диспетчеров. //
				//                                                                          //
				
				//----------//
				// 17.02.14 //
				//----------//
				
				//----------------------------------------------------------------------------
				СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110101_04 = Новый Структура;
				 СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110101_04.Вставить("ДокументЗапуска",	Документы.ЗапускДеталей.НайтиПоНомеру(102971));
				 СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110101_04.Вставить("Номенклатура",	Справочники.Номенклатура.НайтиПоКоду("939691"));
				 СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110101_04.Вставить("Количество",		(-1));
				
				МассивУдаляемых = ТЗ_Программы_ИменаDXF.НайтиСтроки(СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110101_04);
				
				Если МассивУдаляемых.Количество() = 1 Тогда
					ТЗ_Программы_ИменаDXF.Удалить(МассивУдаляемых[0]);
				КонецЕсли;
				
				//----------------------------------------------------------------------------
				СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110201_06 = Новый Структура;
				 СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110201_06.Вставить("ДокументЗапуска",	Документы.ЗапускДеталей.НайтиПоНомеру(102971));
				 СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110201_06.Вставить("Номенклатура",	Справочники.Номенклатура.НайтиПоКоду("939698"));
				 СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110201_06.Вставить("Количество",		(-1));
				
				МассивУдаляемых = ТЗ_Программы_ИменаDXF.НайтиСтроки(СтруктураПоиска_ЗапускДеталей_102971_Деталь_1010_110201_06);
				
				Если МассивУдаляемых.Количество() = 1 Тогда
					ТЗ_Программы_ИменаDXF.Удалить(МассивУдаляемых[0]);
				КонецЕсли;
				
				//----------------------------------------------------------------------------
Показать
for_sale; +1 – Ответить
178. TimurD 6 20.12.18 14:30 Сейчас в теме
(136) ТОЛЯ!!! Это ты???
for_sale; +1 – Ответить
142. vano-ekt 146 20.12.18 12:53 Сейчас в теме
160. user1115118 20.12.18 13:56 Сейчас в теме
185. herfis 525 20.12.18 14:51 Сейчас в теме
Больше всего порвало
"Что лучше, запрос в цикле или получение данных через четыре точки?"
"Программирование - это джунгли, слабых здесь затаптывают"
for_sale; +1 – Ответить
199. profiprog1c 260 20.12.18 15:32 Сейчас в теме
Я вот тоже раньше думал, зачем разработчики стандартных конфигураций пишут такой запутанный говнокод, с прыжками в коде по куче общих модулей, с запросами длиной, что их просто лень листать, не то что разбираться, а потом я понял, они это пишут, чтобы труднее было в этом разобраться ну и чтобы наверное конфа побольше весила в метрах))
229. TimurD 6 20.12.18 17:07 Сейчас в теме
(199) Это с какой стороны посмотреть. Если у человека мало знаний и опыта, то это все выглядеть как что-то сверхъестественное. Сам такой раньше был. Убивал часы изучая "СтандартныеПодсистемы" и др. Но со временем ты понимаешь всю задумку разработчиков и сложный пазл выстраивается в голове. Так что проблема , в большинстве случаев в Вас, а не в разработчиках типовых. Хотя и у них бывают промахи. Они ведь люди.
234. profiprog1c 260 20.12.18 17:54 Сейчас в теме
(229) Интересно и что же со временем у вас выстроилось в голове и какова была задумка?
220. comol 20.12.18 16:22 Сейчас в теме
(0) Гениально. Спасибо за труд
for_sale; +1 – Ответить
225. xman 90 20.12.18 16:48 Сейчас в теме
По форме подачи предполагается, что изжив ректальные методы, программист станет венцом творения, уверенным в своём абсолютном превосходстве и не нуждающимся в поучениях.

Кому не жалко тратить время, напишите статью, почему такие неректальные программисты могут быть хуже ректальных.
uncle_Vasya; w.r.; +2 –2 Ответить
226. xman 90 20.12.18 16:51 Сейчас в теме
Хотя не надо, лет десять назад уже было. Правила Ашманова.
...
Правило 5. Программист испытывает страсть к обобщению.
Программист всегда всеми силами стремится сделать работу наиболее общим способом, чтобы потом только настраивать и прилаживать готовую систему.
...
Поэтому программирование в наиболее общем виде нужно категорически запрещать.
...
Баланс между обобщением и текущими требованиями рынка достигается опытом и соображениями бизнеса. Программистам доверять здесь абсолютно бессмысленно, как бессмысленно обсуждать с пьяницей семейный бюджет...

Правило 6. Нельзя делать "по-хорошему".
Всякий программист свою страсть к обобщению оправдывает похвальным желанием наконец-то всё сделать по-хорошему...
Делать по-хорошему - теоретически неправильно и практически вредно для бизнеса. Нужно делать так, чтобы всё работало, удовлетворяло клиентов (ровно на уровне цены продукта) и бизнес развивался...
unknown181538; w.r.; +2 –1 Ответить
231. TimurD 6 20.12.18 17:35 Сейчас в теме
(226) Вот пример: Есть таблица с колонками контрагент (наименование), ИНН, номенклатура, цена и др. Это поступления. Задача - загрузить эту инфу в бухню, для каждого контрагента свой документ.
Суть реализации.

Для каждого ЭлементТЗ из ТаблицаВходная Цикл
    //Поиск документа по ИНН и еще как-нибудь.
    Если Нашли Тогда
        ДокументОбъект = Создать();
    Иначе
        ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
        // Заполнение шапки документа
    КонецЕсли;
    
    // Ищем товар в ТЧ, заполняем по входным данным ОДНУ строку.

    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
Показать


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

З.Ы: И вот еще, если у вас нет опыта и знаний, не нужно автоматизировать бизнес и решать (лично) его стратегические задачи. Учитесь, как учиться второй пилот.
w.r.; for_sale; +2 – Ответить
282. xman 90 21.12.18 09:26 Сейчас в теме
(231) Спасибо за пример к Правилу 8 Ашманова

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

Правило 8. Разработчик не интересуется бизнесом
Разработчик в среднем не стремится помочь организовать и развить бизнес...
... Низовой разработчик может не иметь даже и авторских амбиций, и интересоваться только работой и зарплатой. Успех продукта или компании в смысле роста прибыли интересует разработчика только опосредованно.
240. oleg-x 24 20.12.18 18:19 Сейчас в теме
А если серьезно, то все в целом согласились с Вашей статьей, просто каждый задал свои вопросы, кстати на некоторые так ответа и не дали. Типа делайте так, а почему, так потому.
starik-2005; +1 – Ответить
248. AzagTot 41 20.12.18 18:49 Сейчас в теме
Оригинально, смешно, стильно!
Буду ждать продолжения ;-)
wowik; for_sale; +2 – Ответить
251. AzagTot 41 20.12.18 19:16 Сейчас в теме
Про комментарии - в точку)))
Дурь это. Кому?
Ну разве если жена позвонила и попросила что-то купить... чтобы не забыть...

Для н = 1 По 1000000000000000 Цикл
// яйца, молоко, макароны...
Объект.Удалить(Истина);
// сметана
CyberCerber; for_sale; +2 – Ответить
255. пользователь 20.12.18 19:58
Сообщение было скрыто модератором.
...
256. user707374_exchang 20.12.18 20:54 Сейчас в теме
Автор, у тебя завышенная самооценка и скромный опыт в 1с, либо ты просто неудачник) Займись полезным, начни с себя! Но да будет тебе известно, все тобою описанное это библия 1с
259. for_sale 901 20.12.18 23:08 Сейчас в теме
(256)
ты, удачник, можешь распечатать эту библию и молиться на неё))
lunjio; boln; +2 – Ответить
257. director04 3667 20.12.18 21:42 Сейчас в теме
Сегодня дал почитать эту "нетленку" одному, с позволения сказать, "кодеру", с которого писалась эта статья.
Забавно. Он даже не узнал себя!
boln; lunjio; CyberCerber; for_sale; +4 – Ответить
275. Hateful72 5 21.12.18 07:51 Сейчас в теме
по поводу хардкодинга...Это конечно все понятно, но есть случаи когда сами 1сники вынуждают к этому прибегать. Пример: В 1с документооборот есть справочник "Виды внутренних документов" у которого просто нет кодов. И как спрашивается писать условия по виду внутреннего документа?Остается только по наименованию, потому что это единственный уникальный реквизит.
279. echo77 1944 21.12.18 09:12 Сейчас в теме
Предложения для следующей статьи:
1. Справку писать не надо - ее все равно никто не читает
2. Документация к программе не нужна - через пол года все будет по другому, и вспоминать как это работает не потребуется
3. Имена переменных - н, и, Таблица, Список - чем короче, тем лучше
boln; Fox-trot; +2 – Ответить
280. Йожкин Кот 1009 21.12.18 09:12 Сейчас в теме
283. artempo 21.12.18 09:33 Сейчас в теме
Интересная статья, но не менее интересно было посмотреть в комментариях на размер ЧСВ некоторых "настоящих" программистов)...
288. boln 1044 21.12.18 12:07 Сейчас в теме
(283)
Интересная статья, но не менее интересно было посмотреть в комментариях на размер ЧСВ некоторых "настоящих" программистов)...
А зачем чужое ЧСВ мерить? Надо собственное иметь :)
289. artempo 21.12.18 12:10 Сейчас в теме
(288) ну как же, мальчикам и не "померяться" размерами?))
290. boln 1044 21.12.18 12:15 Сейчас в теме
(289) Так последнее слово все равно за девочками будет :)
291. artempo 21.12.18 12:20 Сейчас в теме
(290) есть тут девочки, чтобы оценить спорящих?)
292. acanta 21.12.18 12:22 Сейчас в теме
(291) У девочек лучше 4 по 5 чем 1 по 20.
uncle_Vasya; for_sale; +2 – Ответить
293. artempo 21.12.18 12:26 Сейчас в теме
(292) то есть лучше 4 цикла с 5ю запросами внутри, чем 1 цикл с 20ю запросами внутри?)
for_sale; acanta; +2 – Ответить
295. acanta 21.12.18 13:07 Сейчас в теме
(293) 4 программиста по 5 тыс в месяц чем 1 за 20 тыс.в месяц.
308. profiprog1c 260 22.12.18 00:07 Сейчас в теме
(295) Хочется написать шутку про девочку, но промолчу)) Будет звучать пошловато
284. VSvintsov 2 21.12.18 09:50 Сейчас в теме
интересный спор - обход выборки или таблицы значений.

я , как уважаемые спорщики, так глубоко не копал, но однажды , будучи фрилансером, взялся ускорить некий отчет в сильно измененной УТ 10.3:
- первое что сделал:
воспользовался приемом "Ректального" программирования и заменил обходы выборок на обходы таблиц значений (все ТЗ получил в начале отчета). Скорость формирования отчета повысилась раз в 8 , на чем я работу сдал довольному заказчику и занялся другими делами. Этот отчет работает уже лет 8 и никаких проблем с памятью и прочим у заказчика нет и не было.

я это к тому написал, что хорошее качество - уверенность в собственной правоте, но отрицать реальность (преимущество выборки или ТЗ в конкретной ситуации) тоже не стоит.

цейнот тоже в некоторых ситуациях имеет решающее значение - поэтому Имя = "Вася" понятно откуда берется,
хранение больших кусков закомментированного старого кода тоже важно, т.к. бывают случаи что эти старые коды помогают подсказать заказчику "...что 2 года назад было так как ты сейчас хочешь, но год назад мы это дело по твоей же просьбе убрали.. - точно ли нужно то что ты сегодня хочешь ?"
переходы GoTo действительно экономят код, когда выполняются всякие не стандартные проверки …
на мой взгляд в некоторых случаях - в некоторых!! - прозрачность, читаемость кода важнее оптимизации
усталость программиста - это тоже серьезный стимул "здесь и сейчас" перейди на "ректальное" программирование.

в общем черно белого не бывает, хотя стремится к совершенству нужно :-)

в итоге пожелаю автору развить тему - первая статья получилась чуть провокационной, но во второй на эту же тему можно более серьезно разобрать типовые причины , по которым даже опытные программисты иногда выбирают не оптимальное решение - будет более интересно.
starik-2005; kuzev; +2 –2 Ответить
285. neikist 21.12.18 09:54 Сейчас в теме
(284)
хранение больших кусков закомментированного старого кода тоже важно

Может вместо этого все же системы контроля версий стоит использовать?
boln; for_sale; VSvintsov; +3 – Ответить
286. VSvintsov 2 21.12.18 10:06 Сейчас в теме
(285) если франч разрабатывает конфигурацию с самого начала для "вкусного" клиента, с которым работает многие годы - то предполагаю, что контроль и учет изменений есть.
но если начале пути у заказчика был 1 ПК + УТ 10.х в файловом варианте. И заказчик развивая бизнес уже вырастил БД до 1 ГБт . Плюс годами нанимает фрилансеров на разовые доработки. То закомментировать то что меняешь - это хороший тон в отношении будущего фрилансера , который возможно через год или более будет менять в этом месте что-то еще по очередному требованию заказчика.

хочу донести мысль - догма это всегда плохо.
starik-2005; +1 – Ответить
287. AlexZhukov 21.12.18 12:00 Сейчас в теме
Судя по комментариям многие ректальные программисты обиделись и не поняли сарказма.
for_sale; +1 – Ответить
294. sutygin 36 21.12.18 13:05 Сейчас в теме
5+

PS
Ушел писать заявление об увольнении...
for_sale; +1 – Ответить
306. Isakov_Artem 21.12.18 21:32 Сейчас в теме
Вступление - это шедевр сатиры.
for_sale; boln; +2 – Ответить
312. alexsey777 22.12.18 14:39 Сейчас в теме
А объясните пожалуйста 10 пункт. Стыдно конечно, но не совсем понял. В чем суть?
314. for_sale 901 22.12.18 15:18 Сейчас в теме
(312)
на подходе - статья с разъяснениями)
313. alexsey777 22.12.18 14:48 Сейчас в теме
По поводу Выгрузить() и Выбрать().
Предпочтение отдаю методу Выбрать(). Особенно при работе с большими выборками. Лучше, когда отчет будет работать дольше, но результат выдаст. При использовании Выгрузить() может просто не хватить памяти. И результат никакого пользователь не получит.

При малых выборках конечно это не критично. Выгрузить() использую только в тех ситуациях, когда точно знаю, что выборка будет небольшая.
315. starik-2005 3309 22.12.18 17:47 Сейчас в теме
(313) а зачем отчету "Выбрать"? Если только в качестве селекта в запросе, а остальное СКД сделает сама бещ нас.
316. Fox-trot 166 22.12.18 17:50 Сейчас в теме
(313)
Прикрепленные файлы:
317. starik-2005 3309 22.12.18 21:39 Сейчас в теме
(316) 43 раза в типовой - это или алес, или все-таки не так все плохо, как думается автору. К тому же код работает в дцать раз быстрее на небольших выборках и в два раза быстрее на очень больших. Так что автор тут, ИМХО, не подумавши ляпнул. Показалось - с кем не бывает...
318. spacecraft 23.12.18 00:32 Сейчас в теме
(317)
К тому же код работает в дцать раз быстрее на небольших выборках и в два раза быстрее на очень больших.

О каких "дцать" раз идет речь? Есть конкретная информация о разнице времени выполнения? Давайте тесты, а не выброс непроверенной информации.

Неполенился и провел тесты.
Результат = Запрос.Выполнить();
	МассивВремяЗаполненияВыбрать = Новый Массив;
	МассивВремяЗаполненияВыгрузить = Новый Массив;
	Выборка = Результат.Выбрать();
	Для н=1 По 10 Цикл
		Выборка.Сбросить();
		
		// выбрать
		ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
		Пока Выборка.Следующий() Цикл 		
			Стр = Объект.ТЧ.Добавить(); 		
			ЗаполнитьЗначенияСвойств(Стр, Выборка); 	
		КонецЦикла;
		ВремяОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();
		МассивВремяЗаполненияВыбрать.Добавить((ВремяОкончания - ВремяНачала)/1000);
		
		// выгрузить
		ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
		Объект.ТЧ.Загрузить(Результат.Выгрузить());
		ВремяОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();
		МассивВремяЗаполненияВыгрузить.Добавить((ВремяОкончания - ВремяНачала)/1000);
		
		Объект.ТЧ.Очистить();
	КонецЦикла;
Показать


Два тестовых случая заполнения табличной части. на 100 элементов и на 100000.
На 100 время выполнения практически одинаковое. Есть небольшая разница только на большой выборке.
Прикрепленные файлы:
Isakov_Artem; Fox-trot; for_sale; +3 – Ответить
320. starik-2005 3309 23.12.18 12:07 Сейчас в теме
(318)
Два тестовых случая заполнения табличной части. на 100 элементов и на 100000.
На 100 время выполнения практически одинаковое. Есть небольшая разница только на большой выборке.
А вот в (101) другая информация:
8) Выгрузить-Загрузить - а тут не просвятите чем плох этот метод? Ни разу не встречал, ничего плохого про него. На всякий случай провел тесты, вариант базы клиент-сервер, в запросе три выбранных реквизита. результат:
Тест1
Обход запроса: 9с. количество строк: 254 740
Выгрузка-загрузка: 3с. количество строк: 254 740
Тест2
Обход запроса: 192с. количество строк: 2 811 306
Выгрузка-загрузка: 130с. количество строк: 2 811 306
Как видим, выгрузка-загрузка выполняется быстро.
Возможно при

Сейчас сам интереса заради проверю...
321. starik-2005 3309 23.12.18 12:15 Сейчас в теме
(318) Проверил на серверной версии с количеством строк 10 000 по 10 000 раз каждого:

Итого времени: 595 820 мс
Из них:
Загрузить->Выгрузить: среднее 267,423 мс, лучшее: 248 мс
Выборка: среднее 328,306 мс, лучшее: 307 мс


Да, не в "дцать" - соглашусь, но быстрее (15-20%).

А по поводу использования памяти - никакого дополнительного выделения памяти процессу rphost не было при использовании загрузки и выгрузки (я на Linux запускап - тут есть хороший инструментарий для того, чтобы посмотреть, что и как у процесса происходит, платформа 8,3,12,1412).
SlavaKron; +1 – Ответить
319. zzzzz7 23.12.18 10:09 Сейчас в теме
322. user828972 24.12.18 09:35 Сейчас в теме
Для ректального программирования также не чужд принцип шифрования кода, то есть защита своих интеллектуальных прав. Мы же не хотим, чтобы посторонний программист раскопал код и начал использовать в своих целях? Поэтому код надо максимально запутать, особенно приветствуются конструкции типа:
МассивПериодовРаботы = Новый Структура;
СтруктураПериодовРаботы = Новый Массив;
ТоЛиМассивТоЛиСтруктура = Новый Таблица;
ЭтоНеГраница = Новый Граница;
ДиалогВыбораФайла = Новый ДиалогВыбораЦвета;
HTTPСоединение = Новый HTTPЗапрос;

И вишенка на торте:
ТаблицаЗначений = Новый ТабличноеПоле;

Мало кто вообще знает, чем таблица значений отличается от табличного поля, так давайте же внесем сюда дополнительную интригу
Daynestro07; ipoloskov; andreypahov; Winstoncuk; Isakov_Artem; wowik; artempo; +7 – Ответить
324. artempo 24.12.18 11:20 Сейчас в теме
(322) а вот это хорошее предупреждение, никогда бы не подумал, что могут писать такое, чтобы зашифроваться......
325. for_sale 901 24.12.18 11:38 Сейчас в теме
(324)
Такое могут писать и не только для того, чтобы зашифроваться) А просто потому что ректальное программирование)
323. herfis 525 24.12.18 10:17 Сейчас в теме
(0) Еще в копилку (если еще не было):
"Что писалось с трудом, должно читаться с трудом"
ipoloskov; Natalka_rus; wowik; +3 – Ответить
326. vihrov_av 26.12.18 09:07 Сейчас в теме
Это божественно. Автор вообще молодец. Хоть кто то под конец года смог настроение поднять)
for_sale; +1 – Ответить
327. пользователь 12.01.19 19:15
Сообщение было скрыто модератором.
...
328. пользователь 12.01.19 21:59
Сообщение было скрыто модератором.
...
330. anatoliy.kichuk 88 18.01.19 12:25 Сейчас в теме
О-о-о, знаком со сторонниками данной методики. :)
331. vpaoli 25 18.03.19 10:55 Сейчас в теме
Пункт 6 вообще полная чушня... но в качестве анекдота подойдет ))
332. for_sale 901 18.03.19 12:52 Сейчас в теме
(331)
Наконец-то эксперты подтянулись))
334. vpaoli 25 20.03.19 13:05 Сейчас в теме
(332) Вы уж хотя бы название изменили , с ректального программирования на фрактальное.
Задайте в Яндексе фразу "ректально это как" и получите ответ "через ж.пу". Ха,ха,ха ... Но не скрою, Вы добились своего - всем очень весело! ))
335. for_sale 901 20.03.19 13:35 Сейчас в теме
(334)
рукалицо
ipoloskov; herfis; neikist; Octopus; TODD22; +5 – Ответить
336. neikist 20.03.19 14:23 Сейчас в теме
(334) Все правильно же. Статья и есть о программировании через Ж. А причем тут фракталы?
for_sale; +1 – Ответить
337. vpaoli 25 26.03.19 13:42 Сейчас в теме
(336) но автору ведь фраза "через ж*пу" не понравилась. Фракталы - это для выпендрежа. Нанотехнологии откуда ? Все оттуда же - от выпиндрежа. Вы думаете нано, микро и т.п. физический мир стал известен только с появлением слова нанотехнологии ... увы нет. Ничего нового не изобретено, кроме выпендрежа.
338. herfis 525 26.03.19 14:03 Сейчас в теме
(337) Если вам пришлось какое-то слово искать в яндексе - это вовсе не означает, что остальные его тоже не знают и что оно используется для выпендрежа.
Возможно, стоит просто расширять свой кругозор и круг общения.
ben19791010; for_sale; +2 – Ответить
341. vpaoli 25 26.03.19 16:16 Сейчас в теме
(338) с чего вы взяли, что я не знаю вашего слова ?
343. spacecraft 26.03.19 16:29 Сейчас в теме
(341) судя по удивлению
Задайте в Яндексе фразу "ректально это как" и получите ответ "через ж.пу". Ха,ха,ха ...

Вы похоже это слово впервые в жизни видите. Но оно вполне обиходное и никакого прямого отношения к неприличному не имеет.
Посмотрите в том же Яндексе:
- ректальные свечи,
- ректальный градусник.

Вот вам и посоветовали расширить свой кругозор.
ben19791010; for_sale; herfis; +3 – Ответить
345. vpaoli 25 26.03.19 17:32 Сейчас в теме
(343) нет Вы не поняли. Это слово мне хорошо известно. А писал я это для автора. Он назвал свою работу таким прекрасным словом. Я предположил , что именно он не знает этого слова и предложил ему воспользоваться Яндексом. Там же четко написано (дана рекомендация автору) "Задайте в Яндексе фразу "ректально это как" . Так что читайте внимательнее и только потом делайте выводы.
346. spacecraft 26.03.19 18:03 Сейчас в теме
(345) судя по всему только вам лично показалось, что автор имел ввиду что-то другое, а не ректальное. Зачем-то даже посоветовали на фрактальное заменить. Тоже мало знакомое наименование? Остальные прекрасно все поняли с самого начала, о чем речь.
ben19791010; for_sale; +2 – Ответить
347. herfis 525 26.03.19 18:04 Сейчас в теме
(345) Эээээ... Вы предположили, что автор использовал слово не понимая его значения? Плюс вам это слово кажется неуместным в контексте статьи?
Все значительно хуже чем я думал. Недостаток эрудиции восстановить гораздо проще, чем недостаток здравого смысла и чувства юмора.
neikist; for_sale; +2 – Ответить
339. for_sale 901 26.03.19 14:48 Сейчас в теме
(337)
Почему-то вспомнилась фраза из КВН - "Мы несём людям чушь" :)
342. vpaoli 25 26.03.19 16:19 Сейчас в теме
(339) стремление к самооценке - великая вещь )) !
344. genayo 26.03.19 16:33 Сейчас в теме
(339) Кто-то несёт чушь, а кто-то в это время несёт тортик...
340. neikist 26.03.19 15:14 Сейчас в теме
(337) Но ведь "терморектальный криптоанализ" это баянистый баян из времен когда я наверно еще под стол ходил...
333. user1180228 20.03.19 11:28 Сейчас в теме
Мне статья понравилась. Чего греха таить, я сам начинающий и сам так пишу, когда циклы и условия загоняю в одну строку, почти всегда использую переходы и многое другое. И резон в этом есть, блоки кода выглядят как законченные и очень легко ориентироваться при отладке. Так как опыта у меня мало - меня очень удивляет структура функции или процедуры, например начало любой функции должно проверять передаваемые параметры и только в случае успеха выполнять тело функции, иначе каким то общим образом выдавать сообщение об ошибке.
for_sale; +1 – Ответить
348. user1190757 29.03.19 09:54 Сейчас в теме
Ахаха! Смешно!!! )))
for_sale; +1 – Ответить
349. dvsidelnikov 79 01.04.19 23:05 Сейчас в теме
Упс... Кто-то раздобыл мою методичку.
for_sale; +1 – Ответить
351. artms 50 06.11.19 09:26 Сейчас в теме
Было бы классно дополнить Кэш - магическими числами.
Например:
Если ПолеДва = 2 Тогда
	Коэф = 1;
ИначеЕсли ПолеДва= 7 Тогда
	Коэф = 1.2;
КонецЕсли;

Теперь уже никто кроме вас, этот код не изменит.
352. ИНТЕГРА 27 08.11.19 09:47 Сейчас в теме
Автор отлично раскрыл тему, уважение и почет!

Есть еще один не охваченный ректально-архитектурный момент, который часто продвигается поголовно фирмами франчайзи: необходимо на предприятии создавать как можно больше различных баз данных и обменов между ними, т.к. каждая задача - по своему уникальна и для нее нет места в единой системе с другими аналогичными задачами, т.к. "пути господни не исповедимы" и развитие должно идти у каждой системы независимое.
Отдельными базами решается сразу куча проблем: важнейшая - не надо настраивать права - можно (и нужно!) давать всем пользователям полные - для улучшения производительности, т.к. производительность и удобство пользователей - главное на что стоит обращать внимание при разработке любой системы.
К счастью есть такая конфигурация как "Конвертация данных" (КД). Ее необходимо использовать для любых проектов на постоянное использование обменов. Это очень удобно и соответствует освещенной автором важной концепции ректальной разработки и проектирования.
unknown181538; artbear; +2 – Ответить
353. bayce 49 09.06.20 18:59 Сейчас в теме
Меньше кода, быстрее бегает. Код в одну строчку самый быстрый
354. for_sale 901 10.06.20 09:59 Сейчас в теме
(353)
Хотел вас поприветствовать в мире ректального программирования, но, вижу, вы уже с опытом)
355. bayce 49 10.06.20 13:59 Сейчас в теме
(354)
как говориться, рыбак рыбака видет из далека))
Ректальный программист это либо очень не опытный, либо очень опытный программист. После многих лет понимаешь, что в начале не так все и плохо было.
ipoloskov; +1 – Ответить
356. for_sale 901 10.06.20 16:28 Сейчас в теме
(355) То есть ваше понимание, что многие годы прошли впустую и что из очень неопытного вы превратились в очень неопытного... с большим опытом неопытности, ещё впереди)) В какой-то мере даже завидую. Когда я это осознал, я из скучающего мэтра (которым я себя считал), которому уже ничего тут неинтересно, опять превратился в лихорадочного новичка, получающего новые знания каждый день.
357. bayce 49 10.06.20 17:28 Сейчас в теме
(356)
то что описано в статье не всегда есть не опытность. Это приходит с опытом.
358. herfis 525 11.06.20 09:38 Сейчас в теме
(357) Это должен быть очень специфический опыт. Одна из характеристик которого - "калечащий".
for_sale; +1 – Ответить
359. bayce 49 11.06.20 20:12 Сейчас в теме
(358)
Опыт приходит с годами.
365. user1318246 08.10.21 09:15 Сейчас в теме
А чем плохо копировать код? например у меня есть обработка загрузки данных с вайлдберриз а мне нужна загрузка с озона, что мне по новой писать все эти процедуры? гораздо эффективнее часть кода вынести в группу служебных и изменять только то куда должны вставать данные чем с нуля код писать.
366. Attya 13.06.23 10:01 Сейчас в теме
Это шедевр!
Полностью разобрать на крылатые выражения
Автор вдохновлялся творчеством Дугласа Адамса?
for_sale; +1 – Ответить
Для отправки сообщения требуется регистрация/авторизация