Сергей

5450
Рейтинг

Сергей
ildarovich



  •   Регистрация: 19.04.2008 (9 лет назад)

  •   Был(а) на сайте: 18.01.2018


Группы

Профессиональный разработчик

Рейтинг 5450

Простой способ индексирования интервалов 152

v8 Абонемент ($m)

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

1 стартмани

28.09.2016    14413    22    

Простая и быстрая эмуляция операций с битовыми строками 61

v8 Бесплатно (free)

Битовые строки могли бы упростить реализацию некоторых алгоритмов на языке платформы «1С: Предприятие 8». Но пока в платформе операций с битовыми строками нет. В то же время уже сделанные попытки смоделировать эти операции преобразованиями над числами опираются на циклы обработки отдельных битов, что плохо сказывается на скорости их работы. Предлагается новое простое решение, основанное на представлении битовых строк строками символов «0» и «1». Приводится примеры кода выполнения основных логических операций AND, OR, XOR, NO без использования циклов. В качестве прикладной задачи рассмотрено получение последовательных значений кода Грэя, который можно использовать для ускорения перебора вариантов.

22.06.2016    13712    14    

Настраиваемый генератор числовой последовательности для запроса 43

v8 Бесплатно (free)

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

08.05.2016    8256    6    

Еще один способ расчета остатков на каждый день в запросе 120

v8 Абонемент ($m)

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

1 стартмани

24.04.2016    16072    32    21    

Минимализмы 2 290

v8 Бесплатно (free)

Следующая серия "минимализмов" [http://infostart.ru/public/306536/]. Также, как и в предыдущей статье, здесь приведена подборка коротких оригинальных решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

23.02.2016    27986    78    

Поиск пропусков в нумерации документов запросом 30

v8 1cv8.cf Абонемент ($m)

Предлагается отчет на основе системы компоновки данных для выявления нарушений последовательности нумерации документов. Применяются методы из статей "Выразить строку как число и строку как дату в запросе" [http://infostart.ru/public/170336/] и "Быстрое определение интервалов в запросе" [http://infostart.ru/public/402534/]. Это позволяет решить задачу быстро и непосредственно в запросе.

1 стартмани

24.12.2015    10542    25    10    

Быстрое определение интервалов в запросе 161

v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    22407    29    34    

Расчет хэш-функции в запросе 130

v8 1cv8.cf Бесплатно (free)

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

20.03.2015    35948    39    

Выразить число как строку и дату как строку в запросе 277

v8 1cv8.cf Бесплатно (free)

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

22.02.2015    59700    44    

Лучшие методы сравнения таблиц значений 262

v8 1cv8.cf Абонемент ($m)

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

1 стартмани

02.02.2015    52886    37    44    

Минимализмы 523

v8 1cv8.cf Бесплатно (free)

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

08.10.2014    51300    79    

Расчет вероятностей запросом 58

v8 1cv8.cf Абонемент ($m)

Предлагается метод расчета вероятностей сложных событий с использованием языка запросов. Метод иллюстрируется примерами решения трех задач: расчет вероятности сдачи теста «1С: Профессионал», расчет вероятности отказа дискового массива RAID-10, расчет вероятности критического превышения сроков выполнения проекта. Все описанные решения можно протестировать с помощью прилагаемого отчета.

1 стартмани

20.09.2014    11673    5    8    

Запрос – комбинатор 43

v8 Абонемент ($m)

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

1 стартмани

07.08.2014    13603    23    16    

КопиПастаМер 157

v8 1cv8.cf Абонемент ($m)

Предлагается отчет, который за приемлемое время находит и показывает ВСЕ повторяющиеся фрагменты в текстах программных модулей анализируемой конфигурации. Приводятся подробности реализации отчета, основанного на алгоритме Манбера и Майерса построения суффиксного массива и на алгоритме Касаи построения LCP-массива. В данной реализации поиск повторов ведется до уровня строк. Отчет можно применять для определения повторяющихся последовательностей строк и в любых других текстах.

1 стартмани

30.07.2014    23473    153    71    

Компаратор оборотов в информационных базах 57

v8 1cv8.cf Абонемент ($m)

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

1 стартмани

04.05.2014    15515    135    38    

Наш ответ американским лекторам 40

v8 1cv8.cf Абонемент ($m)

Это спойлер к замечательной публикации «Алгоритмы. Часть 1.1. Динамические соединения». Здесь описывается гораздо более быстрый способ решения задачи динамического связывания при отсутствии ограничений на используемые структуры данных

1 стартмани

11.04.2014    13705    7    36    

Определение кратчайших путей, критических путей одним запросом 94

v8 1cv8.cf Абонемент ($m)

Еще два примера применения алгоритма каскадного матричного умножения, впервые описанного в статье «Транзитивное замыкание запросом» http://infostart.ru/public/158512/

1 стартмани

07.04.2014    22300    54    30    

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

v8 1cv8.cf УУ Оптовая торговля Бесплатно (free)

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

24.03.2014    28183    113    

Неоплаченные долги при распределении оплаты по правилу ФИФО одним запросом и намного быстрее, чем Вы думали 207

v8 v8::СКД КА1 УТ10 УПП1 УУ Дебиторская и кредиторская задолженность Абонемент ($m)

Предлагается метод для быстрого нахождения неоплаченных долгов при распределении оплаты по правилу ФИФО, основанный на дихотомии. Описывается реализация метода в виде достаточно простого запроса, решающего за линейное время указанную задачу, считавшуюся ранее существенно более трудоемкой. Приводятся примеры использования запроса в отчетах на СКД для конфигураций УТ, КА, УПП.

1 стартмани

28.02.2014    40937    90    

"Возраст" остатков номенклатуры 18

v8 УТ10 УПП1 УУ Оптовая торговля Учет ТМЦ Абонемент ($m)

Отчет показывает остатки номенклатуры с дополнительным делением по длительности нахождения ("возрасту") номенклатуры на складе. Отчет построен на основе СКД и предназначен для конфигураций, содержащих регистр накопления "ТоварыНаСкладах" (УТ10.3, УПП 1.3 и т.п.).

1 стартмани

27.01.2014    13127    130    6    

Баттерфляй - метод быстрого расчета нарастающего итога в запросе 200

Абонемент ($m)

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

1 стартмани

20.09.2013    43439    47    

Агрегатное суммирование строк в запросе – сложно, но не невозможно 98

v8 Абонемент ($m)

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

1 стартмани

09.09.2013    44349    53    

Рефакторинг без тормозов (десять приемов в одной задаче) 44

v8 Абонемент ($m)

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

1 стартмани

06.09.2013    12505    50    

Как нарисовать граф на 1С 342

v8 Абонемент ($m)

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

1 стартмани

09.08.2013    41710    110    

Выразить строку как число и строку как дату в запросе 215

v8 1cv8.cf Абонемент ($m)

Приведены и прокомментированы запросы, помогающие решать указанные задачи в составе пакетных запросов. Отличием от других известных решений является простая структура, относительная компактность, высокие быстродействие и устойчивость к ошибкам исходных данных. Применяется техника искусственных таблиц, изначально упомянутая в статье "Порождающий запрос" [http://infostart.ru/public/90367/].

1 стартмани

24.01.2013    56290    51    

Новый запрос и новая таблица значений как функции 155

v8 Абонемент ($m)

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

1 стартмани

27.11.2012    28700    46    

Опять двойка! 55

Абонемент ($m)

Продолжение тем, связанных с использованием степеней двойки «Порождающий запрос» [http://infostart.ru/public/90367/], «Транзитивное замыкание запросом» [http://infostart.ru/public/158512/]. На этот раз речь пойдет об операциях со строками.

1 стартмани

26.11.2012    19256    30    

Уровни, глубина, прародители, циклы и аналоги запросом 329

v8 1cv8.cf Абонемент ($m)

В продолжение публикации «Транзитивное замыкание запросом» [http://infostart.ru/public/158512/] добавлены другие варианты использования того же приема. Приведены запросы для быстрого определения уровней всех элементов справочника, максимальной глубины справочника, прародителей произвольных элементов справочника, запрос для быстрого определения циклов (на примере справочника спецификаций «1С:Управление производственным предприятием») и определения множеств аналогов номенклатуры (также на примере конфигурации «1С:Управление производственным предприятием»).

1 стартмани

13.11.2012    74408    93    

Транзитивное замыкание запросом 272

v8 1cv8.cf Абонемент ($m)

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

1 стартмани

29.10.2012    51734    109    

Расчет средних по периодам в запросе - это элементарно! 140

v8 1cv8.cf Россия Абонемент ($m)

Распространено мнение, что расчет средних по периодам в запросе - это сложно. В статье приводится прием, позволяющий опровергнуть это заблуждение. Приводится описание метода, его обоснование и ограничения использования. Как примеры прилагаются два практичных отчета на СКД: для расчета среднедневных остатков товаров и для расчета среднедневной задолжности контрагентов. Отчеты созданы на платформе 8.1 для конфигурации УТ10.3 .

1 стартмани

29.09.2011    40255    148    31    

Игра "Жизнь" в одном запросе 81

v8 1cv8.cf Россия Абонемент ($m)

В статье приводится запрос, одного которого достаточно, чтобы реализовать всю механику игры "Жизнь" (http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) на бесконечном поле. Запрос основан на технике искусственных таблиц, применяемой также в примерах из http://infostart.ru/public/90367/. Приведен отчет-игра "Эволюция", реализующий игровой процесс на основе рассматриваемого запроса. Отчет не привязан к метаданным и должен работать в любой конфигурации.

1 стартмани

24.09.2011    11147    71    12    

Порождающий запрос 236

v8 1cv8.cf Абонемент ($m)

Иногда в запросе необходимо получить искусственную таблицу заданного размера, не связанную с данными информационной базы. Эта получаемая «из воздуха» таблица может быть заполнена, например, числами натурального ряда или функционально связанными с ними значениями. Такая таблица может пригодится как временная таблица в запросе для соединения с реальными таблицами. Другой вариант – быстрое получение таблиц значений заданного размера, списков, массивов и прочее. В последних версиях MS-SQL есть возможности непроцедурной генерации таблиц посредством специального «итеративного» описания. Ну а для 1С пригодится следующее решение:

1 стартмани

15.09.2011    43090    148    85    

Эффективная обработка данных в оперативной памяти за счет использования коллекции "соответствие" 231

v8 1cv8.cf Россия Абонемент ($m)

Разработчики, перешедшие с 7-ки на 8-ку по привычке продолжают использовать универсальные коллекции "список значений", "таблица значений" в задачах, которые в 8-ке существенно быстрее решаются с использованием новой коллекции "соответствие". Эта статья для тех, кто еще не оценил всех преимуществ новой структуры данных. Статья позволит создавать Вам максимально быстрые программы. Приведено несколько примеров, в том числе, решение для задач на графах.

1 стартмани

11.12.2010    31940    38    

Как не «попасть на миллион», решая задачу разузлования 45

v8 1cv8.cf Россия Абонемент ($m)

Часто, столкнувшись с долгим временем выполнения какого-либо фрагмента кода, мы начинаем искать технологические программные решения: переносить вычисления в СУБД, либо в оперативную память, устранять неявные запросы в циклах, применять другие известные приемы оптимизации или просто ругать платформу. Хотя на самом деле проблема может быть всего лишь в неверно выбранном алгоритме. В статье рассказывается об одном таком случае, возникшем при решении задачи «разузлования». Надеюсь, прочитав эту статью и ознакомившись с текстом варианта программы, построенной по давно известному алгоритму, Вы избежите подобных ошибок. Тем более программа получилась совсем небольшой.

1 стартмани

21.11.2010    20353    173    52    

Еще один взгляд на проблему «жизнь без последовательностей». Часть вторая (практическая) 61

v8 КА1 БП2.0 УТ10 Розница УПП1 УНФ Россия Абонемент ($m)

В [1 - http://infostart.ru/public/62938/] был предложен метод корректировки списаний по партиям при изменении документов задним числом. Использование данного метода позволяет контролировать остатки при неоперативном проведении и поддерживать учет по партиям всегда в актуальном состоянии, то есть обходиться без механизма последовательности документов. Собственно метод заключался в решении задачи правильного списания по партиям как задачи линейного программирования. В доказательство работоспособности метода приводится следующая «каркасная» конфигурация «Полигон», в которой этот метод реализован.

1 стартмани

19.08.2010    16642    164    35    

Отбор по ОКАТО для ЗУП для документа "Сведения о доходах физлиц" 8

v8 ЗУП2.5 Зарплата Абонемент ($m)

Эта микрообработка оставляет в табличной части документа "Сведения о доходах физлиц" только физлиц с выбранным ОКАТО. Подключается как внешняя обработка заполнения табличных частей.

1 стартмани

10.02.2010    10758    81    8    

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

Россия Бесплатно (free)

Предлагаю свой взгляд на решение проблемы "документы без последовательности". Решение навеяно обсуждениями http://infostart.ru/public/62785/ и http://infostart.ru/forum/forum11/topic28666/. Даже попытался описать его там (152). Теперь думаю, что оно может быть опубликовано и самостоятельно. Я считаю это решение теоретически исчерпывающим и готовым к практическому воплощению, а что скажете Вы?

21.12.2009    10372    23    

Бухгалтерские проводки в программе "Управление торговлей" 32

v8 УТ10 Россия БУ Абонемент ($m)

При внедрении связки УТ и БП часто приходится слышать вопрос пользователей УТ: "Где можно посмотреть бухгалтерские проводки?". Выслушав объяснения, что теперь проводки только в БП, пользователи делают простой вывод: "В УТ нет проводок! Нам недодали! В ТиС77 проводки были!". В этом свете крутизна УТ несколько меркнет. Однако в случае обмена УТ и БП через прямое подключение существует простой выход: получить проводки из БП через COM-соединение. При автоматическом обмене это выглядит особенно эффектно. Пользователи просто видят проводки там, где хотели! Прилагаемая внешняя печатная форма реализует предложенный подход.

1 стартмани

03.10.2009    15617    277    14    

Комментарии

DevОформление и рефакторинг сложных логических выражений#115 25.12.17 22:43
Я бы разделил выводы статьи на две части:
1) Условия в предложении ЕСЛИ должны записываться в дизъюнктивной нормальной форме;
2) Для придания красивости можно записывать их в виде дерева, для обозначения узлов которого можно использовать незначащие ЛОЖЬ и ИСТИНУ.

По поводу п.2, мне кажется, что это дело вкуса или привычки. Если кому не нравится, я бы настаивать не стал.

А вот по первому пункту есть надежное обоснование. Оно вытекает из теории вычислительной сложности. Читая условие, компьютер у нас в голове "решает" уравнение f(x1, ..., хk) = true, где f - логическая функция, чтобы определить случаи срабатывания этого условия. То есть решает задачу SAT.
Если функция записана, например, в КНФ, то сложность решения уравнения высока, более того, в общем случае она равна NP! А запись функции в ДНФ по сути и является решением, то есть по такой записи легко определить наборы значения переменных, при которых будет срабатывать условие.

Другое дело, что преобразование в ДНФ при всей простоте правил Де Моргана в общем случае может оказаться проблемой.
Попробуйте, например, представить в рекомендованном виде вот такое условие:
Код
Если (Условие1 ИЛИ Условие2 ИЛИ Условие3) И (Условие4 ИЛИ Условие5 ИЛИ Условие6) 
И (Условие7 ИЛИ Условие8 ИЛИ Условие9) И (Условие1 ИЛИ Условие4 ИЛИ Условие7) Тогда
Будем надеяться, что такие случаи встречаются редко?
Dev"Вывернуть" периоды в запросе#6 12.12.17 13:46
Вот один из вариантов:
Код
ВЫБРАТЬ
   &ДатаНачалаОсновная КАК Дата
ПОМЕСТИТЬ Даты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(Дано.ДатаНачалаИсключения, ДЕНЬ, -1)
ИЗ
   Дано КАК Дано
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(Дано.ДатаОкончанияИсключения, ДЕНЬ, 1)
ИЗ
   Дано КАК Дано
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
   &ДатаОкончанияОсновная
;
ВЫБРАТЬ
   МИНИМУМ(Даты.Дата) КАК ДатаНачала,
   МАКСИМУМ(Даты.Дата) КАК ДатаОкончания
ИЗ
   (ВЫБРАТЬ
      КОЛИЧЕСТВО(Раньше.Дата) КАК Номер,
      Даты.Дата КАК Дата
   ИЗ
      Даты КАК Раньше
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ Даты КАК Даты
         ПО Раньше.Дата <= Даты.Дата
   СГРУППИРОВАТЬ ПО
      Даты.Дата) КАК Даты
СГРУППИРОВАТЬ ПО
   ВЫРАЗИТЬ(Даты.Номер / 2 КАК ЧИСЛО(10, 0))
Чтобы проверить в консоли вариант со вводом тестовых данных:
Код
ВЫБРАТЬ
   ДАТАВРЕМЯ(2017, 3, 13) КАК ДатаНачалаИсключения,
   ДАТАВРЕМЯ(2017, 3, 18) КАК ДатаОкончанияИсключения
ПОМЕСТИТЬ Дано

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   ДАТАВРЕМЯ(2017, 5, 21),
   ДАТАВРЕМЯ(2017, 7, 8)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   ДАТАВРЕМЯ(2017, 9, 3),
   ДАТАВРЕМЯ(2017, 11, 12)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   &ДатаНачалаОсновная КАК Дата
ПОМЕСТИТЬ Даты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(Дано.ДатаНачалаИсключения, ДЕНЬ, -1)
ИЗ
   Дано КАК Дано

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(Дано.ДатаОкончанияИсключения, ДЕНЬ, 1)
ИЗ
   Дано КАК Дано

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   &ДатаОкончанияОсновная
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   МИНИМУМ(Даты.Дата) КАК ДатаНачала,
   МАКСИМУМ(Даты.Дата) КАК ДатаОкончания
ИЗ
   (ВЫБРАТЬ
      КОЛИЧЕСТВО(Раньше.Дата) КАК Номер,
      Даты.Дата КАК Дата
   ИЗ
      Даты КАК Раньше
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ Даты КАК Даты
         ПО Раньше.Дата <= Даты.Дата
   
   СГРУППИРОВАТЬ ПО
      Даты.Дата) КАК Даты

СГРУППИРОВАТЬ ПО
   ВЫРАЗИТЬ(Даты.Номер / 2 КАК ЧИСЛО(10, 0))
DevЗапрос на разность множеств#9 07.12.17 13:08
(8) Вот эта конструкция
Код
ВЫБОР
        КОГДА Док1.Номенклатура ЕСТЬ NULL 
            ТОГДА Док2.Номенклатура
        ИНАЧЕ Док1.Номенклатура
    КОНЕЦ КАК Номенклатура
эквивалентна этой
Код
ЕСТЬNULL(Док1.Номенклатура, Док2.Номенклатура) КАК Номенклатура
DevЗапрос на разность множеств#6 07.12.17 10:55
(5) В вашем случае быстрее должно быть запросом, поскольку данные уже находятся в СУБД.
БСППомогите пожалуйста реализовать вычисление рабочих дней#11 05.12.17 12:26
Вот тут https://infostart.ru/public/166349/ рассказывается как сделать это в запросе. И это не единственный способ.
DevПрименение нейронных сетей в прикладных решениях на платформе 1С#45 04.12.17 19:26
+(44) Промоделировал. Работает достаточно хорошо. Если 14 вопросов, у каждого 50 вариантов, у каждого вопроса теста - выбор из 5-ти вариантов ответа, то обучение требует прохождения порядка 2000 тестов. Главное, что энтропия (неопределенность выбора ответов) постоянно практически равномерно снижается.

Прикрепленные файлы:

УгадайкаКриваяОбучения.png
DevКак получить список простых чисел в запросе#32 04.12.17 13:26
(31) Да, но и с секундами будет когда-нибудь ругаться. Там предел 2^32 - 1 или 2^31 - 1. Это примерно миллиард. Надеюсь, никто не додумается из миллиарда простые числа в запросе определять. Так как будет уже не с временем (оно почти линейно растет, поэтому миллиард за 16000 секунд должен посчитаться), а с памятью проблемы.
DevПрименение нейронных сетей в прикладных решениях на платформе 1С#44 04.12.17 1:22
(38) Можно примерно так:
Для каждого вопроса заводится массив вероятностей ответов.
Изначально ответы равновероятны.
Получили тест, решили, узнали процент, определили количество правильных ответов.
Теперь переберем все комбинации на какие вопросы могли быть даны правильные ответы.
Например: 0 - правильных ответов - 1 комбинация; 1 - правильный ответ - 14 комбинаций; 2 - правильных ответа - 91 комбинация; .... 14 правильных ответов - снова одна комбинация.
Считаем вероятность каждой комбинации исходя из заданных вероятностей правильности ВЫБРАННЫХ ответов.
Складываем вероятности всех комбинаций в СУММУ.
Рассчитываем условную вероятность правильности ответа каждого вопроса в тесте как сумму вероятностей комбинаций где этот ответ правильный деленную на СУММУ.
Теперь вероятность ответов на каждый вопрос теста пересчитываем: на выбранный вопрос вероятность принимаем равной условной, остальные вероятности делим на их сумму и умножаем на (1 - условная) ,то есть нормализуем.
И так далее. Пока на все вопросы вероятности ответов не станут иметь единственную единицу, соответствующую правильному ответу.

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

Например, процент 0%. Сразу вычеркиваются все ВЫБРАННЫЕ ответы. Их вероятности этим алгоритмом обнуляются.
Или, процент 100%. Все выбранные ответы получат вероятность, равную единице.

Кстати, перебор комбинаций ответов на тест реализован в виде запроса в статье https://infostart.ru/public/295343/.
DevКак получить список простых чисел в запросе#29 03.12.17 23:40
(28) "конструкций ..." - что-то здесь пропущено
DevПрименение нейронных сетей в прикладных решениях на платформе 1С#36 03.12.17 23:36
(33) Посмотрел по диагонали ваши предложения. Может, для какой-то другой задачи они и подойдут, но не для этой. Здесь (как я понял) речь об экзамене 1С:Профессионал. Случайным образом задаются 14 вопросов, принимаются ответы и сообщается только процент правильных. Сами себе вопросы выбирать мы не можем. Максим хочет автоматизировать определение правильных ответов, написав бота.
Можно изобретать и изобретать всякие "проценты уверенности", бустинги, функции потерь, но самый быстрый и естественный способ здесь - формула условной вероятности Байеса.