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

Публикация № 966234 19.12.18

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

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

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

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

Что это?

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

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

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

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

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

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

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

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

Заключение

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

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kaaasteeen 19.12.18 17:49 Сейчас в теме
Это просто генитально!!!
vld_dmn; oleganatolievich; 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; rpgshnik; 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; +52 1 Ответить
3. new_user 19.12.18 18:06 Сейчас в теме
(1) всё генитальное - просто!
Liris; Jimbo; miralisssa; TreeDogNight; lunjio; for_sale; +6 Ответить
70. frkbvfnjh 625 20.12.18 07:05 Сейчас в теме
(3) Вкусно и просто!
Amadeus007; SuhoffGV; rovenko.n; dandykry; eternium; Jimbo; +6 Ответить
72. rpgshnik 2732 20.12.18 07:26 Сейчас в теме
101. oleg-x 17 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 2527 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% случаев он не рассматривает. Жалко его немножечко: переработал, устал...
logos; bestsader; 1serger; Euroset1; Indgo; pbahushevich; Brawler; +7 3 Ответить
127. TODD22 18 20.12.18 12:16 Сейчас в теме
(103)ну вы то же наивно полагаете что на компьютере 100гб ОЗУ и 10мб на жд. И примеры такие приводите. Однако то же упражняетесь в манипулировании.
MRAK; for_sale; o.nikolaev; lunjio; +4 Ответить
184. TODD22 18 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 17 20.12.18 14:54 Сейчас в теме
(184) А можно ссылочку, а то не найти. Если проблема в потреблении памяти, то на сколько она велика? В какой момент один способ хуже другого.
189. TODD22 18 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 2971 20.12.18 14:59 Сейчас в теме
(184)
вроде на ИТС речь об Обходе результата запроса. Лучше обходить результат запроса через выборку, а не через таблицу значений.

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

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

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

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


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

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

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

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


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

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

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



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

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


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

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

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

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

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

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

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

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

В Java оператора goto нет. Понятно, на пролетариев умственного труда она не ориентирована изначально.
CodeNull; AzagTot; TODD22; +3 Ответить
296. starik-2005 2527 21.12.18 17:40 Сейчас в теме
(246)
уже более 40 лет назад использование безусловного перехода в языках высокого уровня осуждалось как непрофессионализм специалистами с мировым авторитетом
А другие не менее талантливые профессионалы смеялись в голос над теми, кто "осуждал" использование безусловного перехода. А теперь этими баснями питаются придурки, которые программировать не умеют и учиться не хотят, т.к. для них это культ Карго.
В переносном смысле понятие культа карго используется, когда люди копируют внешнюю атрибутику какого-нибудь явления, совершенно не имея понятия о его внутренних движущих силах. Примеры:
В среде быдлокодеров — программирование методом копипаст из книжек «для чайников»: например (или вот)
297. starik-2005 2527 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" - это не ГОТО. Это тот самый ГОТО, только для идиотов, которые не могут его правильно использовать..
ZhiharevDmitriy; Асов; for_sale; +3 Ответить
210. starik-2005 2527 20.12.18 16:08 Сейчас в теме
(207)
тем что при программировании в 1с не рекомендуется использовать
А кто не рекомендует, кстати? Он в любом случае не умнее вот этого товарища:
Но, что интересно, оператор GOTO имеется в исходниках весьма популярных программ, вроде ядра линукса или гугловского «Андроида», более того, сам Линус одобряет использование GOTO в языках программирования не таких дурацких, как Pascal. Почему? Потому что существуют редкие случаи, когда его использование несколько упрощает код.
214. TODD22 18 20.12.18 16:14 Сейчас в теме
(210)это не ответ на мой вопрос, а разведение демагогии.
217. starik-2005 2527 20.12.18 16:18 Сейчас в теме
(214)
это не ответ
Так ответ в статье (или в (213)), которую Вы читать не хотите.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Типа такого:

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

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

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


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

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


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

…
~Выход:


То есть GoTo применяется для начальной проверки переменных контекста и прекращения выполнения кода, иначе получается большая вложенная конструкция Если…КонецЕсли.
unknown181538; +1 Ответить
260. boln 1033 20.12.18 23:31 Сейчас в теме
(258) Гм... Интересно, эта возможность была и в Clipper. А там оператора безусловного перехода тоже нет :)
350. user775227 2 14.10.19 07:15 Сейчас в теме
Уважаемый, а Вы не пробовали в конфигурации 1с, к примеру УПП запустить глобальный поиск по по "Перейти ~"? Попробуйте, посмеемся... Кодеры не читали документацию?
5. arakelyan 425 19.12.18 18:23 Сейчас в теме
Богостатья)
Kinestetik; user828972; Jimbo; rpgshnik; Sottoz; CyberCerber; for_sale; +7 Ответить
6. InsideIT 1 19.12.18 18:23 Сейчас в теме
Прямо первая глава настольной книги программиста фирмы-франчайзи!)))
Kinestetik; bulpi; miralisssa; Vladimir Litvinenko; chebser; Gluk_1C; wowik; seperblunt2; TreeDogNight; rpgshnik; accounting_cons; boln; CyberCerber; for_sale; +14 Ответить
7. s22 19 19.12.18 18:24 Сейчас в теме
2. поясните чем лучше внутренее соединение.
8. lunjio 64 19.12.18 18:24 Сейчас в теме
Спасибо автору, за то что потратил время и написал такой генитальный шедевр)
Сначала было волосы дыбом встали, под вечер не въехав в название темы, начал читать первую часть и кровь закипала, т.к всегда пишу не для того чтобы работало, а ещё учесть что-то) но потом въехал, спохватился и долго смеялся ) оставлю ссылку на статью в комментариях в подобном коде, всем кто не полностью соблюдал принципы данной практики, пусть соблюдают все принципы ректального программирования)
miralisssa; TreeDogNight; bulpi; arakelyan; for_sale; +5 Ответить
10. for_sale 860 19.12.18 18:28 Сейчас в теме
252. TimurD 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 49 20.12.18 09:49 Сейчас в теме
(11)
Только боюсь, что победят разрабы типовых.


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

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

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

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

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

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

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

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

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


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


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

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

Как в данном случае построить логику? Как бы сделали Вы?
for_sale; starik-2005; +2 Ответить
155. buganov 185 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. buganov 185 21.12.18 04:44 Сейчас в теме
(156) есть как бы сети больше двух киосков
for_sale; +1 Ответить
264. genayo 21.12.18 05:26 Сейчас в теме
(263) И что? Это автоматически значит, что они работают оптимально?
266. buganov 185 21.12.18 05:45 Сейчас в теме
(264) ну, можешь поучаствовать в обсуждении и предложить свое оптимальное решение. Если нет, то и писать в эту ветку не стоит больше.

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

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    45286    ids79    46    

Что за ? в коде, или Секретный оператор в 1С

Математика и алгоритмы v8 Платформа 1C v8.2 Платформа 1С v8.1 1cv8.cf Бесплатно (free)

Инкремент, модуль и прочая магия, которая скрыта под символом "?"

21.10.2021    8694    SeiOkami    41    

Интересная задача на Yandex cup 2021

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

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    3803    John_d    71    

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета v8 v8::DataMining Бесплатно (free)

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

31.08.2021    2179    dusha0020    8    

Как работает серверный вызов в 1С Промо

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

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    67967    pahich    84    

Алгоритмы распределения сумм (наивная методика, Алгоритм Кэхэна)

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

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

08.07.2021    2823    con-men    31    

Распределенные алгоритмы РИБ 1С

Распределенная БД (УРИБ, УРБД) Математика и алгоритмы v8 Бесплатно (free)

Небольшое исследование на тему применимости классических распределённых алгоритмов репликации и синхронизации данных между узлами обмена РИБ 1С.

02.07.2021    1285    zhichkin    1    

Чем воспользоваться для распознавания котиков в 1С?

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

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    3478    comol    10    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Математика и алгоритмы Оптовая торговля Оптовая торговля Практика программирования v8 1cv8.cf УУ Бесплатно (free)

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

24.03.2014    46862    ildarovich    117    

Рекурсия для начинающих

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

Рассмотрен подход к пониманию рекурсий. Приведены примеры из реальной практики.

10.02.2021    2691    szv    5    

1С: Документооборот, Data Science и Python

Документооборот и делопроизводство Математика и алгоритмы ДО Бесплатно (free)

В статье рассказывается о создании и обучении модели Data Science на языке Python и интеграции с системой 1С: Документооборот

04.08.2020    3472    Vaganov_Alexey    9    

Есть ли жизнь после внедрения, или упрощаем работу в сопровождении

Методология Бесплатно (free)

Из-за отсутствия грамотных правил разработки на этапе внедрения сильно усложняется работа по поддержке и развитию типовых доработанных конфигураций. О некоторых правилах и подходах в разработке, которые помогут специалистам сопровождать внедренное решение, на конференции Infostart Event 2019 Inception рассказал разработчик компании «Инвестиционная группа Абсолют» Алексей Степаненко.

08.06.2020    6060    stepan96    12    

Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок Промо

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

Одной из наиболее важных задач каждого предприятия, осуществляющего доставку грузов в крупных населенных пунктах, является сокращение издержек. Возможное решение данной проблемы заключается в сокращении пробега автотранспорта и, как следствие, уменьшении расхода ГСМ. Появляются такие вопросы ... - СКОЛЬКО НУЖНО МАШИН ДЛЯ РАЗВОЗКИ КОНКРЕТНОГО ОБЪЕМА ГРУЗА ПО АДРЕСАМ ДОСТАВКИ ? - КАК РАЗБИТЬ ТОЧКИ ДОСТАВКИ НА ОПТИМАЛЬНЫЕ ПО ПРОБЕГУ И ЗАГРУЗКЕ МАШИН МАРШРУТЫ ? ... В этой статье Вы найдете один из многих способов получить ответ на эти вопросы.

10.02.2016    66417    mi1man    22    

Применение математических достижений в решении сложных задач бизнеса

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

Как правило, самые сложные задачи решаются с точки зрения математики очень легко. Но чтобы найти правильное решение, важно понять бизнес-цель, которую достигает эта задача. О практическом применении математических достижений для эффективного решения сложных задач бизнеса на конференции Infostart Event 2019 Inception рассказал Дмитрий Мишнов.

25.05.2020    4699    Mishnov    17    

Партионный учет по двум количественным показателям

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

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

26.03.2020    4541    lastcontra    5    

Улучшение пооперационного планирования в 1С:ERP 2.4 внешними средствами

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

Задача построения оптимального производственного расписания требует сравнения тысяч и десятков тысяч вариантов. Выполнять такие вычисления средствами платформы 1С Предприятие нецелесообразно. Как реализовать пооперационное планирование с использованием генетических алгоритмов и параллельных вычислений в докладе на конференции Infostart Event 2019 Inception рассказал генеральный директор компании «ИНТЕХ» Сергей Сафаров.

02.03.2020    7128    ildarovich    8    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    71493    tormozit    29    

Получение значений всех полей в иерархии структуры отчета

Математика и алгоритмы Практика программирования v8::СКД Россия Бесплатно (free)

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

28.02.2020    2568    real_MaxA    1    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

18.02.2020    6567    randomus    20    

[После]Новогодние задачи

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

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    3427    Alxby    23    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    332292    Evil Beaver    184    

Agile в проектах 1С: где-то между невозможно и неизбежно. Часть вторая

Методология Agile (XP, SCRUM, Канбан) Бесплатно (free)

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

06.09.2019    6766    MariaTemchina    10    

Регистры бухгалтерии. Общая информация

Математика и алгоритмы Практика программирования v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    47406    YPermitin    25    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Инструментарий разработчика Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.09.2019    10739    SeiOkami    35    

Самоучитель языка запросов 1С. Промо

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

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    115553    bpc222    327    

Иерархия без "В ИЕРАРХИИ"

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

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    15183    ildarovich    24    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Математика и алгоритмы Перенос данных из 1C8 в 1C8 Инструментарий разработчика Практика программирования v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    18842    ids79    8    

Запрос SQL для нахождения самого большого простого числа меньше заданного

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

Данный запрос MS SQL демонстрирует некоторые возможности MS SQL Server, о которых часто неизвестно большинству программистов 1С. В тексте постараюсь объяснить интерес данного запроса (или скрипта).

16.08.2019    2307    alex_bitti    18    

Предметно-ориентированное проектирование (3D) в 1С. Виртуальная машина. Промо

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

Проектирование программного обеспечения - это постоянная битва за простоту.

03.06.2014    41462    Evgen.Ponomarenko    91    

Обработчики событий при записи объектов. Зачем и что за чем?

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

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    115470    AlbinaAAA    49    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Инструментарий разработчика Практика программирования v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    37030    skv_79    37    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

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

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    6075    vandalsvq    19    

Решение транспортной задачи запросом Промо

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

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    36116    bforce    22    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода SonarQube EDT v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    19656    Stepa86    40    

Что делает "В ИЕРАРХИИ" в запросе?

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

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    47813    YPermitin    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    77238    ids79    28    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

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

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

1 стартмани

04.12.2013    31313    juntatalor    49    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

24.06.2019    16542    RonX01    66    

Почему вообще работает мой запрос? или Ещё раз о планах запросов

Математика и алгоритмы Инструментарий разработчика Практика программирования v8::Запросы Бесплатно (free)

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

10.06.2019    10307    DataReducer    12    

Вычисление 200 тысяч знаков числа pi

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

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    9378    Oleg_nsk    97    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    51330    bpc222    54    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Математика и алгоритмы Инструментарий разработчика Практика программирования v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    46950    YPermitin    8    

Выдержки из книги Чистый код

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

Недавно я прочитал книгу "Чистый код" Роберта Мартина (Robert Cecil Martin). В ней описываются принципы организации и форматирование исходного кода программы так, чтобы в дальнейшем было легко поддерживать такой код. Эта книга является библией для многих программистов, но вот в среде программистов 1С, к сожалению, не очень распространено чтение подобной фундаментальной литературы. Книга более 400 страниц и так много порой лениво читать, да и времени всегда не хватает. По этому я решил выделить в виде цитирования по разделам самые важные моменты. А также снабдил текст своими примерами кода.

16.05.2019    14316    FreeArcher    108    

Даем названия переменным: как префиксы экономят наше время

Математика и алгоритмы Инструментарий разработчика Практика программирования v8 Бесплатно (free)

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

06.05.2019    9154    Designer1C    81    

Внутреннее качество разработки конфигураций 1С Промо

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

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

21.06.2013    38562    ig1082    50    

Что такое алгоритм?

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

Как ответить на этот вопрос и не попасть пальцем в небо.

25.02.2019    16945    mkalimulin    274    

Криптовалюты, а также иные взгляды на природу денег в терминах 1С

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

Это отчасти полемическая статья. Я задумал написать ее как ответ на другую хорошую статью о криптовалютах. Хотелось поспорить с некоторыми утверждениями автора, а ещё больше с некоторыми комментариями. А чтобы текст был более понятным для местной аудитории, я решил использовать, где только возможно, терминологию и практику 1С.

28.01.2019    6482    mkalimulin    89    

Как писать код? Технологии древних цивилизаций, или все новое - это хорошо забытое старое

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

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

23.01.2019    12135    starik-2005    43    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    38791    MarSeN    57    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    14516    IVC_goal    16    

Роберт Мартин: "Будущее программирования" / Robert Martin: "The Future of Programming"

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

Перевод-транскрибация выступления.

14.01.2019    17473    Vladimir Litvinenko    38    

Многоязычное программирование: создание систем с использованием нескольких языков

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

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

09.01.2019    17824    kalyaka    36