Ошибка номер пять. "Получение расчетных данных не из регистра"

Публикация № 174405

Разработка - Практика программирования

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

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

Если открыть описание ошибок при сдаче экзамена на сертификат «Специалист 1С», за которые начисляются штрафные баллы, то можно прочитать следующее: "Получение расчетных данных не из регистра" - 3 штрафных балла. Однако в своей практике мне часто встречаются люди,которые вроде бы имеют большой стаж программирования, продолжают делать отчет по движению товаров, создавая запрос по документам, и  удивляются, когда имговорят, что это не совсем правильно, приводя в ответ универсальную фразу, по которой сразу можно вычислить неквалифицированного программиста: «Но ведь это же работает, чего еще надо?».

На эту фразу у меня всегда есть ответ, что сейчас не последнее десятилетие прошлого века, а уже второе нынешнего,  и программировать, ориентируясь только на  то «чтобы работало», уже давно является признаком непрофессионализма. Программировать необходимо так, чтобы было правильно. А в условиях, когда только 20% процентов времени работы программиста уходит на написание нового кода, а оставшиеся 80% - на поддержание и модернизацию старого, «правильно» - означает гибко, чисто, прозрачно, доходчиво и максимально доступно для внесения изменений.

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

Итак, ответ первый: Многослойность и  многоуровневость. Это принцип, который, наверное, известен любому, кто знаком со словосочетанием «паттерны программирования»: разделение на слои позволяет вносить необходимые изменения в слой, не затрагивая другие слои. Рассмотрим простейшую схему – документ розничной продажи, регистр, учитывающий  эти продажи, и отчет по продажам. Предположим, что в организации решили торговать еще и по интернету, и операцию продажи фиксировать не стандартным документом, а новым, учитывающим специфику данного вида продаж.  Если бы отчет по продажам брал информацию из документов, то и его бы необходимо было переделать для учета нового документа.  Если же отчет делается из данных регистра, то нам достаточно корректно оформить движения нового документа по регистру – отчету «все равно», кто заполняет регистр. Эта схема очень простая, но представьте себе, что в компании не один, а пятнадцать отчетов – для каждого подразделения свой. Ладно бы просто будет потрачено время на переделку всех этих пятнадцати отчетов, так по известному закону подлости, будет еще шестнадцатый, о котором вспомнишь только после того, как генеральный директор месяц получал информацию по продажам без учета интернет-торговли. 

Относительно приведенной ситуации стоит еще раз упомянуть о особой важности изначально правильной архитектуры регистров учета – в учетной системе это должна быть самая «консервативная»  и самая обдумываемая на этапе проектирования часть.

Ответ второй: Эффективность. В этом аспекте все очень просто – считывая в запросе данные документа, пользователь почти всегда «тащит» в запрос  лишние данные из документа, тогда как при запросе по регистру, из базы делается выборка только по требуемой информации.

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

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

Обещал три ответа, получилось четыре. Хотя, по правде говоря,  ответов может быть еще больше – каждый может придумать на свой вкус.

Возникает вопрос – а бывают ли исключения? Конечно, бывают. Самый простой вариант исключения – когда просто отсутствует регистр учета. Или данные необходимы в тот момент, пока документ еще не проведен. Хотя, последний вариант, который недавно встретился в моей практике, был успешно решен введением дополнительного регистра учета, в который скидывалась необходимая информация от непроведенного документа и удалялась при его проведении. Через некоторое время, оказалось, что этот временный регистр с успехом можно применить еще в паре разделов учета, упростив его ведение. Это, на мой взгляд, один из признаков удачных и правильных решений – будучи придуманными для решения одних задач, они вдруг помогают и в решении других.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. glek 112 19.02.13 17:01 Сейчас в теме
1. В целом правильно. ТОлько есть еще один очень критичный вариант написания отчета по документам: решение находится на поддержке и снимать - совсем не хочется. В такой ситуации тоже отчет делается "неправильный".
2. "программировать, ориентируясь только на то «чтобы работало», уже давно является признаком непрофессионализма." Писать решения надо так, чтобы был удовлетворён заказчик. А не собственное эго (мол какой я афегительный программер, как я красиво написал). На заре своей карьеры (97-98 года прошлого века) я тоже считал, что решение должно быть красивым. Сегодня я 100% уверен, что решение должно работать. А как ты там сделал... сугубо твое дело.
5. Ivan_Yartsev 60 20.02.13 11:02 Сейчас в теме
(1)
"«правильно» - означает гибко, чисто, прозрачно, доходчиво и максимально доступно для внесения изменений."
Где в этом предложении слово "красиво"?
Ну и пару слов по поводу "Писать решения надо так, чтобы был удовлетворён заказчик". Типичная ситуация - приходит новый заказчик и просит что-то дописать под свои особенности. И Вы, конечно же, быстро справляетесь с этой просьбой - задание выполнено, заказчик заслуженно удовлетворен, Вы получили свои честно заработанные деньги.
А через месяц, а еще интереснее - через три месяца, у заказчика "внезапно" меняется бизнес-логика. Он помнит, что есть такой хороший человек, который быстро сделал так, как надо, и кончено же обращается к Вам с просьбой немножко переделать то, что уже и так работает, не бесплатно, разумеется.
Вы соглашаетесь, открываете модуль - а там одна функция на полторы тысячи строк, в которую засунуто все, что надо было на тот момент: писалось ведь за один день и по поводу "правильности" не замарачивались - "и так ведь все работает, заказчик доволен". И начинается игра в бирюльки - тут потянули, там упало. Здесь добавили в запрос левое соединение, в другом месте внезапно цифры задвоились, и узнал об этом, к сожалению, сам заказчик, когда отчет сделал. Но это, кстати, уже отдельная тема о давно испытываемой мною необходимости фреймвока модульного тестирования от 1С.
Жизнь меняется, бизнес-логика меняется. И программировать необходимо так, чтобы эти изменения в программу можно было вносить с минимальными затратами времени, нервов и денег.
Sibiryak; +1 Ответить
7. glek 112 20.02.13 11:23 Сейчас в теме
(5) Ivan_Yartsev,
Жизнь меняется, бизнес логика меняется. В следующий раз я возьму с клиента еще денег. Я не говорю, что надо писать циклами в 500 строк. Я всего лишь говорю, что красивость кода - не должно быть самоцелью. Получилось - хорошо. Не получилось - сдал работу и идешь дальше. Потребуется - перепишешь полностью код. И возьмешь за это деньги.
2. stagov 7 20.02.13 03:34 Сейчас в теме
Правильно на 100%.
Если в табличном поле добавлен левый (для базовой поставки)реквизит и критично важный для заказчика. Менять типовой регистр и потом вечный головняк при обновлении... Нет уж. Да здравствует нерациональный код.
3. bb1962 992 20.02.13 07:55 Сейчас в теме
Есть еще один очень критичный вариант написания отчета по документам:
в регистрах содержится неверная информация и исправить ее не представляется возможным.
Пример: задолженность по срокам в УТ10.3 и "наследниках".
6. TMV 14 20.02.13 11:21 Сейчас в теме
(3) bb1962, Может стОит сделать так, чтобы в регистре была верная информация? Иначе зачем он вообще нужен с такими-то данными?!
Sibiryak; +1 Ответить
8. bb1962 992 20.02.13 11:42 Сейчас в теме
(6) TMV, сделайте.
Если у Вас это получится, будете первым, кому это удалось.
4. sh_max 20.02.13 10:48 Сейчас в теме
Представим ситуацию: Есть заказчик которому необходим отчет использующий данные из документа. Допустим я и автор статьи предлагаем свои услуги заказчику, час работы у нас стоит одинаково. Я создам отчет за 1 час, автору потребуется ещё дополнительное время на то что-бы создать регистр (ну или доработать типовой) и так же доработать проведение документа (закрываем глаза на то что нужно снять с поддержки конфигурацию). Вопрос: кого выберет заказчик?
Мне кажется не нужно делать только так как предлагает автор и считать всех балбесами кто использует документы. Всё зависит от конкретной ситуации. Для бизнес-пользователе важен только результат, как выполнить задачу вы решаете только для себя.
VZhulanov; +1 Ответить
9. redgoll 20.02.13 12:37 Сейчас в теме
Не сорьтесь, господа, истина, как обычно, где-то посередине.
10. LexSeIch 208 20.02.13 13:52 Сейчас в теме
(9) redgoll,
Точно. В 80-х годах уже прошлого столетия мне как-то папался документ (еще на магнитной ленте) где были сформулированы правила оптимизации систем под общим заголовком Keep It Simple, Stupid! :

1. It’s easier to get a working system efficient then it is to get an efficient system working.

2. Optimaze a system only if it fails a performance test. It is futile to optimaze a system just for the fun of it, if that optimization brings no practical benefit.

3. Simplicity is a virtue that bears its own rewards.

4. Optimize only the parts of the system worth optimizing.
the1; svartemov; +2 Ответить
11. zqzq 21 20.02.13 14:36 Сейчас в теме
Ответ четвертый: Возможность заполнения регистра расчетными данными

Внезапно, есть такое понятие как устойчивость системы при перепроведении документов. Потому такие ситуации почти исключены в типовых, тот же курс валюты в документ записывается. Рачетные данные СНАЧАЛА попадают в документ при заполнении его.

+ В той же УПП 1.3 есть примеры документв без регистров (инвентаризаци, установка счетов учета номенклатуры), получение данных в отчетах из документов (регистратор.Проект).

В целом, конечно, согласен, запросы в циклах тоже не надо делать, но жизнь она разнобразная, та же конвертация данных сплошные запросы в цикле.
12. asved.ru 35 20.02.13 16:28 Сейчас в теме
Помнится, в случае, когда данные были необходимы еще ДО проведения документа, пришлось делать "эмуляцию проведения" - это проще, чем переделать отчет на нерегистровые данные.
13. Eugene_Life 3 20.02.13 17:44 Сейчас в теме
(12) asved.ru, Видимо, подразумевается прием с откатом транзакции?
14. Mell 20.02.13 18:07 Сейчас в теме
У нас из-за этого получилась великая проблема. Не знаю от куда повелось но ряд самописных отчетов, брал данные не из регистра, а из документов (документы тоже самописные) при этом в одном не очень важном отчете, которым пользовался только 1 сотрудник, в колонку которую он не смотрел, падали данные из регистра. В итоге было обнаружено, что данные по документам и регистру расходились на 750 000 000 000 руб. Из-за не правильного алгоритма проведения(. Брали бы в отчетах по регистрам нашли бы сразу.
19. ildarovich 7124 21.02.13 13:41 Сейчас в теме
Обсуждаемое правило напоминает мне заповедь, статья - проповедь, а комментарий (14) - притчу о том, что некто нарушил Заповедь и его ударила молния 750000000000 вольт. Без всякой иронии думаю, что все это нужно, поскольку с 1С работают программисты с очень разным бэкграундом.
А для агностиков могу предложить более приземленное (научное?) объяснения правила выборки отчетной информации не из документов, а из регистров. В основе этого правила лежит (на мой взгляд) единственная причина - достигаемая таким путем экономия вычислительных ресурсов.
Предположим, в конфигурации есть два типа документов, отвечающих за продажи, табличные части которых в точности повторяют колонки единственного отчета. Действуя по "фен-шую", мы решили дублировать информацию из табличных частей в регистре. Наши затраты будут: 1) разовые затраты времени на копирование таблиц при проведении документа; 2) разовые затраты времени на ожидание разрешения блокировки при записи в регистр; 3) постоянные затраты дисковой памяти на хранение дублированной информации. Достигаемым эффектом будет сокращение затрат времени на построения отчета за счет: 1) использования итогов регистра; 2) отсутствия необходимости объединения разных таблиц; 3) наличия подходящих индексов для выборки информации из регистра. Убрав разовые затраты, видим простую и давно известную формулу - размен скорости вычислений на занимаемую память. То есть если мы хотим иметь более простую и компактную структуру данных, получаем медленные отчеты, время выполнения которых будет еще замедляться при росте базы. При размещении базы в облаках (а все идет к тому) экономию легко перевести в деньги, которые берутся (или будут браться) за полезные такты процессора (а в конечном счете за электроэнергию) при удешевлении памяти.
Предлагаемое объяснение исключает всякую магию, а также позволяет время от времени осознанно нарушать обсуждаемое правило, делая отчетные выборки из документов, оперируя не соображениями общего порядка, а конкретными цифрами.
Sibiryak; vladir; Puk2; Азбука Морзе; Новиков; hogik; Mell; the1; +8 Ответить
23. Новиков 291 22.02.13 14:11 Сейчас в теме
15. serega_sun 21.02.13 04:18 Сейчас в теме
Фирма 1С пытается заставить нас программировать "правильно" по ее понятиям,
хотя далеко не всегда сама соблюдает свои правила.
И про принцип "нормализации данных" далеко не всегда вспоминает.
Гелла; philya; Sherlock_kmw; the1; mk1980; ManyakRus; svartemov; yuraos; +8 Ответить
16. yuraos 972 21.02.13 06:30 Сейчас в теме
(15) serega_sun,
я бы сказал почти всегда забывает.
---
PS: но кроме "получения данных не из регистра"
есть еще одна статья в "уголовном" кодексе 1С:
"регистр (накопления) должен закрываться по измерениям"
и она тоже частенько не соблюдается франчами.
---
18. ManyakRus 409 21.02.13 11:39 Сейчас в теме
(15) serega_sun,
Правильно, "Нормализация данных" это самое важное.
Первое правило нормализации:
"Нельзя одни и те же данные хранить два раза"
т.е. нельзя хранить одни и те же данные и в документе и в регистре.

Конечно данные надо брать из регистров для ускорения,
(а для большей правильности в идеальном случае надо брать из документа).
Например НДС всегда отличается на 1 копейку в документе и в регистре,
бухгалтер забивает все цифры из первичного документа в том числе НДС,
а 1С говорит что дураки вы все и заново пересчитывает и записывает в регистр на 1 копейку меньше :(
17. KroVladS 21.02.13 09:48 Сейчас в теме
(0)Для каждой задачи есть свои инструменты.

Иногда правильнее будет стоить запрос по регистру,
иногда по документу.
20. philya 83 21.02.13 21:25 Сейчас в теме
Гхм... на 7.7 в файловом варианте тупой перебор документов в цикле на порядок быстрее запроса бухгалтерских итогов. Беда...
22. Ivan_Yartsev 60 22.02.13 09:17 Сейчас в теме
(20) philya,
У меня на стареньком пентиуме "Сапер" выдает 200 FPS, а на новом компьютере "Баттлфилд" всего 40. Беда... :)
24. yuraos 972 22.02.13 17:58 Сейчас в теме
(22) Ivan_Yartsev,
как говорит один мой знакомый ОДМИН - болшой приколщик:

ЗАЧОТ !!!
21. Bukaska 133 21.02.13 21:57 Сейчас в теме
Я больше придерживаюсь мнения брать данные для отчета из регистров, а не из документов. Так как если в программу регулярно изо дня в день вносится куча новых документов, то программа будет "вешаться" при отчёте, лучше уж воспользоваться регистром.
Ещё напрашивается вопрос когда делаешь конфигурацию с нуля. Если делать регистр накопления, то ресурсы должны быть только типа число. Чаще всего это например: Цена, Количество, сумма.
Теперь вопрос: Мне заявил местный франч, что ресурс Цена в РН - это медленная и мучительная смерть в вашей базе.
Объясните мне как дурочке -в чём именно косяк? если этот косяк во всех типовых...
25. yuraos 972 22.02.13 18:02 Сейчас в теме
(21) Bukaska,

Если делать регистр накопления, то ресурсы должны быть только типа число.

обясните мне дураку "классическому" (то есть "древнему")
как ресурс в регистре (который не "сведений")
может быть типа не "число" ???
26. yuraos 972 22.02.13 19:02 Сейчас в теме
(21)(25) Bukaska, ну а если серьезно,
то, наверное, речь идет не о ресурсе, а о измерении регистра
и именно о измерении регистра остатков (ну может бухгалтерии).
---
И вопрос имеет прямое отношение ко второй "растрельной статье 1С" из поста (16)
за нее кстати вроде даже больше дают :)
суть которой заключается в том, что среднестатистически
регистр должен по любой комбинации значений измерений "закрываться"
или другими словами, за большой период приход всегда должен уравниваться расходом.
---
В противном итоговые таблицы регистра начинают "пухнуть" от незакрытых остатков,
так как они переносятся на каждый следующий месяц,
пока не закроются в "ноль" на конец текущего месяца.
В результате - катастрофический рост размера базы и падение производительности.
---
Особенно критичны в этом отношении измерения примитивных типов - число, строка и дата:
1. Из-за большого количества возможных значений измерения.
Например справочник из 10 000 элементов считается достаточно крупным.
А 100 000 элементов - это уже всяко крупный справочник, если не огромный.
Но по количеству возможных значений соответствует это соответствует всего лишь
не очень "большому" числовому типу - Число(6,0).
2. Из-за того, что пользователи с большей вероятностью могут создать "пересортицу"
значений измерений при вводе данных примитивных типов (особено строкового типа).
По указанным причинам регистр сложнее закрывать по таким измерениям.
Корректное закрытие остатков может потребовать больших ухищрений при проектировании
и как пить дать создаст неудобства для "священных коров" - манаггеров.
27. yuraos 972 22.02.13 19:14 Сейчас в теме
(26)
PS:
еще можно прочитать целую лекцию о том,
почему нежелательно использовать в регистрах (в принципе любых)
измерения составного типа в состав которых кроме ссылочных типов
входят еще и примитивные типы,
например:
{Строка(100),СправочникСсылка.Организации,СправочникСсылка.Контрагенты}
:)
К стати, за это "растрельной статьи" вроде бы нет.
28. han_kdz 11 23.02.13 19:15 Сейчас в теме
Поверьте, когда я сидел на ставке, тоже все делал правильно и "красиво". От этого сам получаешь удовольствие. К сожалению, работа у франча не предполагает качества. НИКАКОЙ КЛИЕНТ НЕ ГОТОВ ПЛАТИТЬ ЗА КАЧЕСТВО. Т.е. они, конечно, все говорят, что оно им надо, но никто не увеличит бюджет в разы, чтобы программный код был написал правильно, тщательно оттестирован и задокументирован. А еще разных надо привлекать прогов, на конкурентной основе, кто за меньшие деньги. Поэтому и превращаются программы в "лоскутное одеяло".
Статья, конечно, правильная, но отдает академическим образованием, а не жизнью...
29. yuraos 972 23.02.13 20:17 Сейчас в теме
(28) han_kdz,
Золотые слова! Правда-матка и прямо в точку!!!
Правда не хочется даже думать о том, чем отдает та самая жизнь...
...в которой все мотивации направлены
на извлечение максимально-возможного количества бабла.
-) -) -)
30. lsp71 14.05.13 13:53 Сейчас в теме
Недавно спорил на эту же тему с любителем брать данные из документа. Задача простая: в УТ10.2 (слегка доработанной) получить продажи. Его отчет получал данные неправильно из-за того, что документ РеализацияТоваровУслуг проводится по РН.Продажи не в дату документа, а в ДатуОтгрузки (которая на 1..2 дня позже). И из-за этого возникает отличие со стандартным отчетом Продажи, построенном на РН.Продажи.
Переубедить человека (чтобы он переписал свой отчет) не удалось. Даже несмотря на то, что его отчет выдавал неправильные данные. Пришлось самому переписать этот отчет на данные из РН.
А вообще, я думаю, вопрос как брать данные правильно (из документа или из регистра) не имеет однозначного ответа. Я, как программист на окладе, считаю, что лучше (не всегда, но почти всегда) брать данные из регистра. Из-за того, что в будущем меньше будет проблем (при модификации написанных отчетов, создании/модификации документов, двигающих регистры). А франчи и фрилансеры, наверное, выберут вариант побыстрее решить задачу заказчика, "а дальше хоть трава не расти", будет другая задача, другие сроки и другие деньги.
Согласен с мыслью, что за качество программирования заказчики не платят, т.к. их горизонт планирования в этой области не дальше текущей задачи. А как будут решаться задачи потом (за какие деньги и сроки) их сейчас не интересует.
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

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

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37611    unichkin    74    

«Варп-двигатель» для «среза последних»

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

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

10.08.2020    2870    hobi    45    

Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика

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

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

29.06.2020    9128    WildHare    33    

Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория

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

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

22.06.2020    10086    WildHare    23    

Вспомогательные инструкции в коде 1С Промо

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

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    30699    tormozit    100    

Не спеша, эффективно и правильно – путь разработки. Часть 1. Парадигма

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

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

15.06.2020    14404    WildHare    34    

JSON в запросах DaJet QL

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

Практические примеры работы с JSON непосредственно в языке запросов. Перенос курсов валют между УТ и БП. Требуется SQL Server 2016 и выше.

24.04.2020    3844    zhichkin    6    

Визионное программирование

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

Новый способ программирования и его практическая демонстрация.

22.04.2020    4582    mkalimulin    111    

Оформление и рефакторинг сложных логических выражений Промо

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

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

20.09.2012    78295    tormozit    131    

Использование машинного обучения для решения инцидентов. Практическое применение

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

Продолжаю (и заканчиваю) тему с автоматическим решением инцидентов. Перейдем от теории к практике.

25.02.2020    4253    Repich    9    

Использование машинного обучения для решения инцидентов

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

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

18.02.2020    6926    Repich    17    

Часовой на страже логов

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

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

13.01.2020    6909    Scorpion4eg    8    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

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

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    48770    tormozit    41    

Приватный блокчейн и 1С популярно

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

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

02.09.2019    6170    mkalimulin    140    

Как подготовиться и сдать экзамен ITIL 4 Foundation

Решение задач на 1С:Специалист Бесплатно (free)

ITIL — библиотека, описывающая лучшие из применяемых на практике способов организации работы подразделений или компаний, занимающихся предоставлением услуг в области информационных технологий. В начале этого года AXELOS выпустили 4 обновление библиотеки ITIL. Мне, как руководителю службы поддержки, стало интересно, что же там конкретно изменилось по сравнению с версией 3 и как эти изменения можно применить на практике. Мой интерес привёл меня к тому, что я решил закрепить свои знания и навыки по управлению ИТ подтверждающим сертификатом. Это статья о том, как успешно подготовиться к сдаче экзамена ITIL 4 Foundation. В русскоязычном интернете мало информации на эту тему, поэтому делюсь с сообществом своим личным опытом. Эта статья для тех, кто планирует получить сертификат и не знает, с чего начать.

27.08.2019    3254    Arsen1986    0    

Кодогенерация и метагенерация в 1С

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

В своем докладе на конференции INFOSTART EVENT 2018 EDUCATION Дмитрий Белозеров рассказал о разработке инструмента, позволяющего программно работать с метаданными 1С и писать скрипты для выполнения тех же действий, которые выполняет разработчик в конфигураторе –  с какими сложностями и нюансами пришлось столкнуться, и что получилось в итоге.

26.08.2019    9093    kirovsbis    28    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

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

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    45155    tormozit    74    

Интеграция сценарного тестирования в процесс разработки

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

Разработчик системы «Тестер» Дмитрий Решитко в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION показывает, что процесс тестирования можно очень плотно интегрировать в процесс разработки, что внедрение тестирования – это возможность развития программиста как такового, позволяющая ему упорядочивать ход мыслей и оставаться «в фокусе». Навыки построения процесса кодирования на стыке с тестированием сокращают время на концентрацию, освобождают от страха перед изменениями и улучшают память разработчика.

08.07.2019    9272    grumagargler    7    

Управляй качеством кода 1С с помощью SonarQube

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

Управляй техническом долгом проектов 1С с помощью SonarQube. В статье рассматривается пример применения SonarQube при разработке.

07.07.2019    40937    olegtymko    231    

Выгрузка документа по условию

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

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16147    m-rv    2    

Развитие 1С программиста Промо

Практика программирования Личная эффективность Бесплатно (free)

Делюсь своим опытом и видением развития 1С программиста.

17.10.2018    21190    pashamak    62    

Как прикрутить ГУИД к регистру сведений

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20437    m-rv    17    

О времени и 1С

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

Основы и особенности работы со временем в 1С. Как избавиться от боли при работе в разных часовых поясах. Что такое момент времени. И другое.

01.04.2019    36444    YPermitin    61    

Как сделать запрос на изменение данных Промо

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

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30981    m-rv    21    

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф")

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

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф"). Данная статья будет полезна интеграторам, программистам, тем кто работает (интегрирует, разрабатывает) различное ТО либо железки. Версия и релиз технологической платформы не имеет значения.

17.03.2019    6625    dmarenin    1    

Быстрее чем INSERT! BULK-операции и примеры использования

Производительность и оптимизация (HighLoad) Практика программирования Внешние источники данных Перенос данных из 1C8 в 1C8 Разработка Бесплатно (free)

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

09.03.2019    25007    YPermitin    40    

Как писать понятные коммиты

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

Как писать сообщения коммитов так, чтобы потом не было мучительно больно.

06.03.2019    12845    Scorpion4eg    35    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

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

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

05.12.2017    28384    itriot11    34    

Подготовка ребёнка к ЕГЭ по информатике. Часть шестнадцатая

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

Поиск выигрышной стратегии, завершающая статья.

22.02.2019    5777    vasilev2015    0    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    76814    Serginio    108    

Подготовка ребёнка к ЕГЭ по информатике. Часть тринадцатая

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

Исправление ошибок в программе, часть вторая.

20.02.2019    5797    vasilev2015    3    

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

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

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

10.11.2018    35321    ids79    40    

Тестер: частые вопросы Промо

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

Ошибкам бой - тесты норма жизни!

25.07.2018    29436    grumagargler    28    

Подготовка ребёнка к ЕГЭ по информатике. Часть восьмая

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

Шифрование и дешифрование информации. Закон Фано

05.02.2019    5642    vasilev2015    1    

Расширяем свой багаж

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

Алгоритм решения возможной нетиповой задачи на собеседовании.

29.01.2019    6398    scientes    15    

Подготовка ребёнка* к ЕГЭ по информатике. Часть четвертая

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

Решение систем логических уравнений повышенного уровня сложности.

25.01.2019    6292    vasilev2015    0    

Подготовка ребенка* к ЕГЭ по информатике. Часть третья

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

Алгоритмы рекурсии, логические задачи. Подготовка к ЕГЭ.

22.01.2019    7557    vasilev2015    0    

Разработка и сценарное тестирование с Vanessa-ADD. Установка инструментов. Запись действий пользователя и выполнение сценариев

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

Вторая часть цикла публикаций, посвященных Vanessa-ADD и автоматизации тестирования.

21.01.2019    35834    Vladimir Litvinenko    96    

Подготовка ребенка* к ЕГЭ по информатике. Часть вторая

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

Примеры на Паскале. Если сам родитель* - поддержи ! Если сам водила - посигналь !

19.01.2019    5909    vasilev2015    0    

Подготовка к ЕГЭ сына - школьника (по информатике)

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

Примеры на Паскале. Если сам отец - поддержи ! Если сам водила - посигналь !

17.01.2019    6667    vasilev2015    50