- Организация подборов в табличную часть документа
- Одиночный подбор
- Множественный подбор
- Подбор с использованием множественного выбора
- Множественный подбор с использованием множественного выбора
- Использование метода ОповеститьОВыборе()
- Справка
- ТабличноеПоле.ДобавитьСтроку()
- ДанныеФормыКоллекция.Добавить()
- Подбор слагаемых под сумму
- Данная функция является частью надстройки MulTEx
Организация подборов в табличную часть документа
Для иллюстрации механизма подбора информации в форме будем использовать задачу подбора элементов справочника Номенклатура в табличную часть документа ПриходнаяНакладная как наиболее распространенную. Поскольку механизм подбора реализован на уровне форм, то в других случаях просто будут задействованы иные прикладные объекты. Сама механика подбора не изменится.
Для организации подбора в форму документа следует открыть форму справочника как подчиненную форме документа в целом либо одному из элементов формы. Способ получения формы справочника может быть любым, также как и сама форма справочника, которая будет использована. Важно лишь то, что эта форма должна быть открыта как подчиненная.
Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:
- когда в форме справочника будет выполнен интерактивный выбор;
- когда в форме справочника будет вызван метод ОповеститьОВыборе .
Одиночный подбор
При одиночном подборе форма справочника будет закрываться сразу после выбора элемента. Для выбора следующего элемента необходимо будет снова инициировать подбор.
Откроем форму документа ПриходнаяНакладная , создадим команду Подбор и назначим для нее обработчик:
В этой процедуре мы открываем форму выбора для справочника Номенклатура , указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная ( Элементы.Материалы ). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы , так как она является владельцем открытой формы выбора.
Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора :
В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение .
Множественный подбор
При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть() .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Подбор с использованием множественного выбора
Еще одним способом организации подбора является возможность выделения в списке сразу нескольких строк. Режим множественного выделения в списке устанавливается, как правило, во всех формах списков по умолчанию. Однако возможность выбрать сразу несколько элементов из списка по умолчанию, как правило, отключена.
Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора :
Множественный подбор с использованием множественного выбора
Последний способ подбора сочетает в себе оба рассмотренных ранее способа. Мы будем отмечать сразу несколько элементов справочника и подбирать их в документ без закрытия формы выбора. Затем снова отмечать несколько элементов справочника и подбирать их в документ. Для этого нам будет необходимо при открытии формы выбора установить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Использование метода ОповеститьОВыборе()
Метод формы ОповеститьОВыборе() используется в тех случаях, когда алгоритм формирования данных подбора сложен и кроме собственно выбора элемента справочника от пользователя требуется указание некоторой дополнительной информации. В этом случае метод ОповеститьОВыборе() вызывается тогда, когда вся необходимая информация подбора сформирована.
Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.
Также метод ОповеститьОВыборе() может использоваться в тех случаях, когда требуется передать в форму документа не только выбранный элемент справочника (или массив элементов), а некоторую произвольную структуру данных.
Справка
ТабличноеПоле.ДобавитьСтроку()
Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».
- Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
- Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
- Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).
Доступность: Толстый клиент.
ДанныеФормыКоллекция.Добавить()
Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции .
Доступность: тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Источник
КОМБИНАТОРИКА
Комбинаторика – раздел математики, который изучает задачи выбора и расположения элементов из некоторого основного множества в соответствии с заданными правилами. Формулы и принципы комбинаторики используются в теории вероятностей для подсчета вероятности случайных событий и, соответственно, получения законов распределения случайных величин. Это, в свою очередь, позволяет исследовать закономерности массовых случайных явлений, что является весьма важным для правильного понимания статистических закономерностей, проявляющихся в природе и технике.
Правила сложения и умножения в комбинаторике
Правило суммы. Если два действия А и В взаимно исключают друг друга, причем действие А можно выполнить m способами, а В – n способами, то выполнить одно любое из этих действий (либо А, либо В) можно n + m способами.
Пример 1.
В классе учится 16 мальчиков и 10 девочек. Сколькими способами можно назначить одного дежурного?
Дежурным можно назначить либо мальчика, либо девочку, т.е. дежурным может быть любой из 16 мальчиков, либо любая из 10 девочек.
По правилу суммы получаем, что одного дежурного можно назначить 16+10=26 способами.
Правило произведения. Пусть требуется выполнить последовательно k действий. Если первое действие можно выполнить n1 способами, второе действие n2 способами, третье – n3 способами и так до k-го действия, которое можно выполнить nk способами, то все k действий вместе могут быть выполнены:
Пример 2.
В классе учится 16 мальчиков и 10 девочек. Сколькими способами можно назначить двух дежурных?
Первым дежурным можно назначить либо мальчика, либо девочку. Т.к. в классе учится 16 мальчиков и 10 девочек, то назначить первого дежурного можно 16+10=26 способами.
После того, как мы выбрали первого дежурного, второго мы можем выбрать из оставшихся 25 человек, т.е. 25-ю способами.
По теореме умножения двое дежурных могут быть выбраны 26*25=650 способами.
Сочетания без повторений. Сочетания с повторениями
Классической задачей комбинаторики является задача о числе сочетаний без повторений, содержание которой можно выразить вопросом: сколькими способами можно выбрать m из n различных предметов ?
Пример 3.
Необходимо выбрать в подарок 4 из 10 имеющихся различных книг. Сколькими способами можно это сделать?
Нам из 10 книг нужно выбрать 4, причем порядок выбора не имеет значения. Таким образом, нужно найти число сочетаний из 10 элементов по 4:
.
Рассмотрим задачу о числе сочетаний с повторениями: имеется по r одинаковых предметов каждого из n различных типов; сколькими способами можно выбрать m () из этих (n*r) предметов?
.
Пример 4.
В кондитерском магазине продавались 4 сорта пирожных: наполеоны, эклеры, песочные и слоеные. Сколькими способами можно купить 7 пирожных?
Т.к. среди 7 пирожных могут быть пирожные одного сорта, то число способов, которыми можно купить 7 пирожных, определяется числом сочетаний с повторениями из 7 по 4.
.
Размещения без повторений. Размещения с повторениями
Классической задачей комбинаторики является задача о числе размещений без повторений, содержание которой можно выразить вопросом: сколькими способами можно выбрать и разместить по m различным местам m из n различных предметов?
Пример 5.
В некоторой газете 12 страниц. Необходимо на страницах этой газеты поместить четыре фотографии. Сколькими способами можно это сделать, если ни одна страница газеты не должна содержать более одной фотографии?
В данной задаче мы не просто выбираем фотографии, а размещаем их на определенных страницах газеты, причем каждая страница газеты должна содержать не более одной фотографии. Таким образом, задача сводится к классической задаче об определении числа размещений без повторений из 12 элементов по 4 элемента:
Таким образом, 4 фотографии на 12 страницах можно расположить 11880 способами.
Также классической задачей комбинаторики является задача о числе размещений с повторениями, содержание которой можно выразить вопросом: сколькими способами можно выбрать и разместить по m различным местам m из n предметов, среди которых есть одинаковые?
Пример 6.
У мальчика остались от набора для настольной игры штампы с цифрами 1, 3 и 7. Он решил с помощью этих штампов нанести на все книги пятизначные номера– составить каталог. Сколько различных пятизначных номеров может составить мальчик?
Можно считать, что опыт состоит в 5-кратном выборе с возращением одной из 3 цифр (1, 3, 7). Таким образом, число пятизначных номеров определяется числом размещений с повторениями из 3 элементов по 5:
.
Перестановки без повторений. Перестановки с повторениями
Классической задачей комбинаторики является задача о числе перестановок без повторения, содержание которой можно выразить вопросом: сколькими способами можно разместить n различных предметов на n различных местах?
Пример 7.
Сколько можно составить четырехбуквенных «слов» из букв слова«брак»?
Генеральной совокупностью являются 4 буквы слова «брак» (б, р, а, к). Число «слов» определяется перестановками этих 4 букв, т. е.
Для случая, когда среди выбираемых n элементов есть одинаковые (выборка с возвращением), задачу о числе перестановок с повторениями можно выразить вопросом: сколькими способами можно переставить n предметов, расположенных на n различных местах, если среди n предметов имеются k различных типов (k
Пример 8.
Сколько разных буквосочетаний можно сделать из букв слова «Миссисипи»?
Здесь 1 буква «м», 4 буквы «и», 3 буквы «c» и 1 буква «п», всего 9 букв. Следовательно, число перестановок с повторениями равно
ОПОРНЫЙ КОНСПЕКТ ПО РАЗДЕЛУ «КОМБИНАТОРИКА»
Источник
Подбор слагаемых под сумму
Данная функция является частью надстройки MulTEx
|
Вызов команды:
MulTEx -группа Специальные —Особые возможности —Подбор слагаемых под сумму
Команда подбирает различные комбинации известных чисел так, чтобы они составили заданную сумму. Когда это может пригодиться? Можно привести несколько примеров:
- подобрать из каталога подарочных товаров те, общая сумма которых будет равна сумме подарочного сертификата. В дальнейшем различные варианты товаров можно рассылать клиентам в качестве идей для использования сертификата
- заказ был оплачен в разные периоды несколькими накладными и необходимо собрать из имеющихся накладных те, которые в сумме дают сумму этого заказа
- для распределения грузов по машинам/контейнерам. К примеру, в один контейнер необходимо разместить 9 или 10 ящиков, общий вес которых не превышает 32 тонны, плюс-минус 150кг.
- так же можно применить и для обратной ситуации: есть общая сумма и перечень транзакций. Но общая сумма транзакций больше и необходимо понять, какая транзакция лишняя. Просто вычисляем те, которые могут составлять известную сумму, а оставшиеся скорее всего и есть лишние.
Собрать сумму — указывается сумма, которую необходимо подобрать. Допускается вписать сумму руками или указать ячейку с суммой из ячейки на листе: выделяем поле, переходим на лист и выделяем на листе ячейку с суммой. Сумма будет занесена в поле. Руками сумма должна вписываться без пробелов и лишних знаков.
Просматривая числа в ячейках — указываются ячейки, в которых расположены суммы для подбора суммы. Ячейки могут располагаться на любом листе любой открытой книги.
Комбинация — набор чисел, дающих при сложении нужную сумму. Например, задана сумма: 200.
Её могут дать комбинации из трех чисел:
= 20 + 30 + 150
= 50 + 70 + 80
Или из четырех:
= 20 + 30 + 50 + 100
= 50 + 70 + 60 + 20
И множество других комбинаций с различным количеством слагаемых.
Комбинация подходит, если:
- Количество слагаемых не менее: комбинация будет считаться подобранной, если она состоит минимум из указанного количества слагаемых
- и не более: комбинация будет считаться подобранной, если она состоит не более чем из указанного количества слагаемых. Этот число не может быть меньше чем указано в пункте не менее.
Команда Подбор слагаемых под сумму позволяет использовать от 1 до 150 слагаемых для подбора комбинаций. Чем больше диапазон, тем больше вероятность подбора нужной суммы.
При подборе округлять числа до указанного количества знаков после запятой: указывается, необходимо ли округлять каждое число и сумму при подборе общей суммы. Необходимо в случаях с подбором по целым числам или в финансовых задачах, когда более двух знаков после запятой практически не используется, однако ячейки могут содержать числа с большим знаком после запятой, хоть и отображаются форматом с округлением.
допустимое отклонение — указывается, подбирать ли примерное совпадение. Например, для подбора суммы 200 можно указать отклонение 1. Тогда сумма чисел 20+30+149 (равно как и 20+30+151 ) будет считаться подходящей комбинацией.
Разберем возможные результаты на примере таблицы накладных:
Исходные суммы записаны в ячейках C5:C25 — именно из них будут составляться различные комбинации. Переходим на вкладку MulTEx -группа Специальные —Особые возможности —Подбор слагаемых под сумму, указываем следующие параметры:
- Собрать сумму: щелкаем по ячейке D2 (сумма появится в поле) или вручную вводим 51200 .
Просматривая числа в ячейках: указываем диапазон C5:C25 .
Комбинация подходит, если:
- Количество слагаемых не менее: 3
и не более: 10
Указываем округлять до 2-х знаков после запятой, а допустимую погрешность выставляем равной 0.
Отобразить результат как:
- Первую подходящую комбинацию чисел, начиная с ячейки: указывается ячейка на листе, начиная с которой последовательно будут записаны все числа, из которых складывается указанная сумма. Результат будет примерно такой(без заливки ячеек красным):
- Первые N комбинаций, начиная с ячейки
программа позволяет подобрать до 20 различных комбинаций чисел, которые дадут при сложении нужную сумму. При помощи этих параметров можно выбрать сколько комбинаций выводить и как именно их отображать. Если общее количество комбинаций будет меньше заданного, то будут записаны все доступные комбинации.
Для демонстрации работы программы приводятся решения с подбором 3-х комбинаций.
- формулой со ссылками на числа — начиная с указанной ячейки будет записано указанное количество комбинаций. Каждая комбинация будет записана в отдельную ячейку в виде формулы со ссылками на те ячейки, которые при сложении дадут нужную сумму:
- формулой из чисел — начиная с указанной ячейки будет записано указанное количество комбинаций. Каждая комбинация будет записана в отдельную ячейку в виде статичной формулы из чисел, которые при сложении дадут нужную сумму:
- текстом, записав слагаемые с разделителем — сначала в поле указывается разделитель. После нажатия Ок, начиная с указанной ячейки будет записано указанное количество комбинаций. Каждая комбинация будет записана в отдельную ячейку в виде текста, в котором через указанный разделитель будут записаны все числа, дающие при сложении нужную сумму:
После нажатия Ок ячейки в столбцах будут окрашены в указанные цвета:
Это даст возможность визуально быстро сравнить и подобрать наиболее выгодную и подходящую под требования комбинацию. Так же это может пригодиться, если нужно знать не только суммы, но и номера накладных.
Закрасить можно не более 5-ти комбинаций.
Если сумма может быть подобрана — она будет подобрана. Если программа не сможет подобрать сумму из указанных чисел, появится сообщение.
Это означает, что из указанных чисел при заданных ограничениях сумма просто не может быть составлена. В этом случае рекомендуется изменить параметры(вместе или по отдельности):
- увеличить диапазон количества слагаемых(например, вместо от 3 до 10 задать от 2 до 15)
- уменьшить количество знаков после запятой
- увеличить допустимое отклонение
Источник