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

Публикация № 1475788 08.07.21

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

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

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

Исходные данные:

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

2. За данную транзакцию банк взял комиссию в размере 72,01

 

 

Задача заключается в распределении (удержании) комиссии банка с контрагента

Варианты решения:

1. Многие, в том числе и я до сие поры), сказал бы что надо просто  распределить пропорционально суммам (наивный алгоритм), давайте попробуем.

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

 

 

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

Хм... и это не проблема сказали мы, просто учтем разницу в определенной строке, к примеру в последней.

 

 

По цифрам вроде все красиво, задача решена, а решена ли?

Давайте посмотрим со стороны бизнеса и взаиморасчетов с клиентами.

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

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

2. Алгоритм Кэхэна

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

Получаем:

 

 

Сама формула в эксель выглядит следующим образом

=ОКРУГЛ(((B3+F3)*$D$2)-G3;2)

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

Чтоб было привычно и не чуждо 1сному глазу, приведу пример процедуры.

Процедура АлгоритРаспределенияКэхэна(МассивЗначений, СуммаЗаказа, СуммаКомиссии)
	ОбработаноЗаписейНакопительно = 0;
	РаспределеноЗаписейНакопительно = 0;
	КоэфРаспределения = СуммаКомиссии/СуммаЗаказа;
	Для каждого ЭлементМассива ИЗ  МассивЗначений Цикл
	СуммаРаспределения = ОКР(ЭлементМассива+ОбработаноЗаписейНакопительно)*КоэфРаспределения-РаспределеноЗаписейНакопительно,2);	
	ОбработаноЗаписейНакопительно = ОбработаноЗаписейНакопительно+ЭлементМассива;
	РаспределеноЗаписейНакопительно = РаспределеноЗаписейНакопительно+ СуммаРаспределения;
	КонецЦикла;
КонецПроцедуры

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

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

Ремарка после прочтения комментариев.

Разница в одну копейку в данном примере не так выразительна, и при такой вводной не так однозначно преимущество второго алгоритма и недостатки первого, на последнею запись или по весу.

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

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

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. TMV 14 08.07.21 07:08 Сейчас в теме
Обычно последнюю копейку учитывают в наибольшей сумме,а не в последней.
Да и клиентам всеравно каким алгоритмом вы обосновываете это "удержание/начисление" копейки.
И конечно же совершенно не понятно как понимать фразу
более правильным со стороны учета
как вы определили степень правильности?
wolfsoft; booksfill; Rustig; +3 Ответить
5. con-men 84 08.07.21 09:08 Сейчас в теме
(2)Понятно что за копейку в данном примере тебе не предъявят, но разница может и больше при других условиях, и то что эту разницу учтем не в последней строке а а в строке с большим весом принципиально ситуацию не изменит.
прочтите текст по ссылке, лучше мне не сказать. https://t.me/radio1c/117
3. vano-ekt 850 08.07.21 07:43 Сейчас в теме
(2) ТС, видимо, не решал базовую задачу распределения сумм списания в РасходнойНакладной из каркасной конфы) пора Спеца с авторов трясти 🤣 и да, если говорить о правильном распределении, то в примере из статьи, логичней отнести последнюю копейку на бОльшую базу, на Контрагента7, тогда относительное отклонение будет минимальным
4. AnryMc 804 08.07.21 08:46 Сейчас в теме
Встречал разные методы.

И хочу "напомнить" о методе которому не одна сотня лет (встречал названия: "старого еврея", "старого банкира", ...)

Суть метода крайне проста: если последнее число четное - округляется "вверх", нечетное - "вниз" (ну или наоборот)
т.к. от 0 до 9 четных и нечетных 50:50 то чем больше строк округляется тем выше статистическое "схождение"...
7. TMV 14 08.07.21 09:13 Сейчас в теме
(4) Зачем округлять, если последняя цифра 0? Соответственно от 1 до 9 нечетных числе больше, чем четных.
21. АртемВС 09.07.21 10:38 Сейчас в теме
(4)Если память не изменяет, в цифровой обработке сигналов используется нечто подобное. Правда не уверен, что этот метод годится для решения именно этой задачи. В ЦОС он позволяет избежать постоянного смещения при округлении.
6. Rustig 1833 08.07.21 09:11 Сейчас в теме
за публикацию спасибо.

это известная "задача копейки":
1) списание себе/стоим по ФИФО
2) распределение общего НДС по строкам позиций
3) расчет бонусов по строкам чекам - начисление и списание
и т.д.

ваш метод Кэхона не корректно использовать уже только потому , что в первом случае необоснованно снизили Контрагенту11 - своим методом распределения,
а потом в методе Кэхона необоснованно увел. Контр2 и снизили Контр3.
8. Rustig 1833 08.07.21 09:18 Сейчас в теме
в 1с стандартна ситуация проведения-перепроведения документа, затем через месяц еще раз перепровдение групповое за весь период, через год можно еще раз перепровести
тоже самое касаетс ярасчета- перерасчета- и т.д.
у вас всякий раз выборка по контрагентам должна быть одинаково отсортирована - чаще всего берут упорядочение по суммам или по кол-ву (или еще по какой величине) - тогда при перерасчетах, при перепроведениях - где бы не использовался этот механизм выборка будет постоянной в плане последовательности контрагентов - и уже на нее можно накладывать любые формулы...
Например, сажать копейку на служебного Контрагента0 - копить по нему копейки, и списывать комиссию банка на собственные затраты организации, а не сажать на контрагентов.
24. rovenko.n 15.07.21 08:22 Сейчас в теме
(8)
на собственные затраты организации,
вот это улыбнуло. Я вчера как раз у клиента был и финдир прямым текстом заявил, что он готов списывать эту копейку на убытки всегда. Потому что зарплата за время бухгалтера, который сводил эту "нехорошую" копейку несоизмерима с самой копейкой.
Но я не уверен, что вслух такое бухгалтерам смогу сказать :-)
25. Rustig 1833 15.07.21 08:57 Сейчас в теме
(24)вам кажется , что вас понимают, но я вас не понял.
26. rovenko.n 15.07.21 13:50 Сейчас в теме
(25)проблемы с копейками существовали всегда. Бухгалтер, чтобы закрыть эту копейку, тратит кучу своего рабочего времени, которое стоит денег. Мне финдиректор клиента сказал, что он готов эту копейку воспринимать как убыток чтобы не забивать бухгалтера бесполезной работой.
27. Rustig 1833 15.07.21 16:05 Сейчас в теме
(26) так я и предложил так же, как ваш финдир предложил.
а вы написали:
(24)
вот это улыбнуло.

что значит "улыбнуло" - такого слова в русском языке даже нет...
осталось непонятным - какая связь ваше "улыбнуло" с моим постом выше?
28. rovenko.n 15.07.21 16:35 Сейчас в теме
(27)немногие так как вы, я и этот финдир, понимают выгоду от сведения лишней копейки. "Улыбнуло" - это сленг. То есть я улыбнулся, потому что вспомнил момент, когда финдир, так же как и Вы проявил смекалку и понял, что это невыгодно.
9. Rustig 1833 08.07.21 09:20 Сейчас в теме
сам по себе алгоритм Кахэна - очень интересный, спасибо за поднятие темы! ознакомился, понравилась идея
rovenko.n; +1 Ответить
10. con-men 84 08.07.21 10:03 Сейчас в теме
(6) Если взять для примера
5,0149 5,01
10,015 10,02
5,0149 5,01
10,015 10,02

Сумма

4508,97 4509

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

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

Тот же ФИФО это тоже распределение копейки на последнею партию (если количество списания = количеству остатка списываем всю сумму)
11. Rustig 1833 08.07.21 10:20 Сейчас в теме
(10) охота вам голосом записать или позвонить...
писать не удобно

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

по ФИФО это исключено - там четко закреплена последовательность по дате прихода

у вас же выборка по контрагентам всегда меняется.... ну не по названию же вы список контрагентов формируете? - что тоже ошибочно с точки зрения методологии учета
12. con-men 84 08.07.21 10:22 Сейчас в теме
(11) В тексте публикации у меня сказано ,про порядок записей.

"Важно отметить что порядок распределения сумм зависит от порядка записей, чтоб нам обеспечить неизменность распределения при каждой попытке, порядок всегда должен быть идентичен."
13. Rustig 1833 08.07.21 10:24 Сейчас в теме
(12) какой принцип вы закладываете в свой порядок? это не очевидно....

уточните , пож-та
15. con-men 84 08.07.21 10:33 Сейчас в теме
(13)Задача была продемонстрировать алгоритм, и прописать вводные, думаю принцип сортировки в данном примере не так важен, пусть даже он будет по наименованию, главное обеспечить неизменный порядок. В итоге набор полей сортировки будет зависеть от конкретной задачи.
17. Rustig 1833 08.07.21 11:10 Сейчас в теме
(15) ладно, договорились, я понял
14. Rustig 1833 08.07.21 10:27 Сейчас в теме
(12) вы в любом случае кому -то снизите или увеличите копейку.
а вы сами назвали это необоснованным фактом - когда написали про первый случай.

то есть какой бы метод не использовали - вы всегда будете необоснованно кому-то дописывать копейку или убирать....
какая разница как это назвать - метод Кахэна или классический способ?
16. con-men 84 08.07.21 10:39 Сейчас в теме
(14)При моем примере согласен, надо было рассмотреть более выразительный случай, с большей разницей, для понимания.
Одну копейку, как я писал выше (10), так и так нужно будет пристроить от этого не уйти, а если разница будет уже в 10 копеек к примеру, тут уже думаю однозначно второй алгоритм предпочтительней
18. TMV 14 08.07.21 14:27 Сейчас в теме
(16) нет, не будет, т.к. не определены критерии "правильности."
19. DmitriyTih 08.07.21 14:33 Сейчас в теме
(16) Для начала спасибо, что познакомили с таким методом распределения, запомню, может где-то для какой-то исключительной задачи и пригодится его использовать. Мне кажется, суть комментариев сводится не к разбору работы методов на конкретном примере. Все проще - нет метода, который даст распределение во ВСЕХ случаях с нулевым остатком. А в учете "распределять пропорционально суммам" - все понимают как это работает (порядок следования сумм не важен, что упрощает понимание в разы)))), а если когда и возникают исключительные ситуации с распределением, то в дело включается эксперт в виде человека, заинтересованные лица общаются/договариваются/ если нужно делается корректировка - от чего собственно и метод Кэхэна не защищен.
Что касается примеров, вот вам вопрос: какой метод будет предпочтительнее при распределении суммы = 1 на три суммы 0.1, 0.1, 0.1 при распределении распределенную сумму округлять до целых?
20. con-men 84 08.07.21 15:24 Сейчас в теме
(19) в данному случае разницы принципиальной нет, если на входе только эти данные и нет других разрезов по которым возможна сортировка строк, в обоих случаях будет стабильный, неизменный результат.
0 0
0 1
1 0
Тут интересней вопрос, какой алгоритм будет более стабильным с наименьшей погрешностью в различных условиях? какой алгоритм легче сломать? Вот тут опять склоняюсь ко второму варианту.
22. vano-ekt 850 09.07.21 13:54 Сейчас в теме
да, как правило, задача эта про учет партий, или про затраты предприятия, или про распределение этапов оплаты в рамках отгрузки/заказа одного клиента, и о справедливости распределения последней копейки решать вам или внутреннему заказчику.
задача сферическая ведь, вы же комиссию банка не перевыставляете контрагентам?) списываете на затраты, распределяя на себестоимость или сумму продаж
23. vano-ekt 850 09.07.21 13:57 Сейчас в теме
ну, а если вы за справедливую справедливость, то не храните суммы в целых числах, храните дробями, главное договоритесь с клиентами 😅
rovenko.n; +1 Ответить
Оставьте свое сообщение

См. также

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

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

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

27.01.2016    82613    Serginio    113    

Лямбда-функции на встроенном языке 1С

Универсальные функции Практика программирования Бесплатно (free)

Анонимная функция средствами 1С. Пророчества грядущих функций первого класса и ООП. Другие смелые заявления.

28.06.2021    3860    AntonProgma    294    

Снежинка для запроса

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

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

21.06.2021    1326    kalyaka    5    

Полезные примеры СКД, ч.1

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

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021    9649    Neti    19    

Звуковое управление в 1С 8.3 Промо

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    5247    velemir    31    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    27581    rayastar    49    

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

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Статья 4. Эта статья посвящена причинам возникновения проблем с качеством кода и методикам их преодоления.

22.03.2021    1301    Артано    5    

Telegram бот на PHP

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

Сделаем простого Telegram бота на PHP.

01.03.2021    7410    John_d    10    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    6990    comol    31    

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

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

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

10.08.2020    3678    hobi    49    

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

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

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

04.08.2020    3015    Vaganov_Alexey    9    

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

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

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

29.06.2020    12050    WildHare    33    

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

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

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

10.12.2016    39739    unichkin    74    

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

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

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

22.06.2020    12337    WildHare    23    

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

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

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

15.06.2020    18920    WildHare    34    

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

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

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

25.05.2020    4321    Mishnov    17    

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

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

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

15.10.2018    34371    tormozit    106    

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

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

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

24.04.2020    4317    zhichkin    6    

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

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

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

22.04.2020    5060    mkalimulin    111    

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

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

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

02.03.2020    6560    ildarovich    8    

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

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

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

20.09.2012    81281    tormozit    131    

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

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

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

25.02.2020    4767    Repich    9    

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

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

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

18.02.2020    7731    Repich    17    

Программная работа с настройками СКД

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

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

27.01.2020    54077    ids79    26    

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

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

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

11.07.2007    52424    tormozit    51    

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    37950    John_d    22    

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

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

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

13.01.2020    8839    Scorpion4eg    8    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    30031    kuzyara    38    

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

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

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

10.09.2017    49050    tormozit    74    

Полезные процедуры и функции для программиста

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

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

07.10.2019    36878    HostHost    41    

Таблица значений. Нюансы

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

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

01.10.2019    48032    Yashazz    55    

СКД. Отчеты с картинками

Практика программирования Работа с интерфейсом v8::СКД 1cv8.cf Бесплатно (free)

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

25.09.2019    29590    YPermitin    54    

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

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

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

17.10.2018    24824    pashamak    64    

СКД не только для отчетов

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

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

18.09.2019    21119    YPermitin    36    

[Шпаргалка] Программное создание элементов формы

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

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

06.09.2019    86246    rpgshnik    71    

Агрегатные функции СКД, о которых мало кто знает

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

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    69083    ids79    55    

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

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

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

25.04.2019    17045    m-rv    3    

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

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

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

02.09.2019    6773    mkalimulin    140    

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

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

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

26.08.2019    9464    kirovsbis    28    

Отслеживание выполнения фонового задания

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

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

17.08.2019    41608    ids79    19    

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

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

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

16.04.2019    22092    m-rv    17    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

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

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    132417    ids79    75    

Фоновое выполнение кода в 1С - это просто

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

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

02.08.2019    53730    avalakh    26    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

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

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    93466    ids79    15    

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

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

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

01.06.2018    34866    m-rv    22    

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

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

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

25.07.2019    94582    AlbinaAAA    33    

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

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

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

24.07.2019    33855    skv_79    35    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

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

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    44495    ids79    27    

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

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

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

05.12.2017    29935    itriot11    34    

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

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

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

08.07.2019    10051    grumagargler    7    

"Меньше копипаста!", или как Вася универсальную процедуру писал

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

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    21459    SeiOkami    52