Программирование | Отладка | Web-технологии | Microsoft Office | Теор.информатика | Исслед-е операций | Операц. сис-мы | Новости |
Проектирование ИС | Исск. инт-т | Трансляторы | Об авторах | Карта сайта | Поиск |
Язык программирования Turbo Pascal |
Среда программирования Delphi 6 |
Язык программирования C++ |
Язык программирования C# |
Язык программирования Assembler |
Язык программирования Go |
Язык программирования Haskell |
Язык программирования Java |
Язык программирования Kotlin |
Язык программирования LISP |
Язык программирования Prolog |
Язык программирования Python |
Параллельные алгоритмы |
Сети Петри |
Начала |
Отладчик Turbo Debugger |
Основы HTML |
Технология Flash |
Язык программирования Perl |
Основы языка PHP |
Основы PhotoShop |
Основы JavaScript |
Основы CSS |
Основы CorelDRAW |
Библиотека jQuery |
Текстовый процессор Microsoft Word |
Электронные таблицы Microsoft Excel |
Система управления базами данных Microsoft Access |
Использование VBA в Microsoft Excel |
Место информатики в системе наук |
Общие сведения об информации |
Кодирование информации в теории Шеннона |
Основные понятия теории алгоритмов |
Классические формализации понятия 'алгоритм' |
Понятие рекурсии |
Сложность алгоритма |
Методы разработки алгоритмов |
Сложность задачи |
Информационное моделирование |
Основные понятия теории графов |
Алгоритмы поиска на графах |
Матроиды. 'Жадные' алгоритмы |
Динамическое программирование |
Алгоритмы |
UNIX и Linux |
Унифицированный язык моделирования UML |
Введение в машинное обучение с использованием Python |
Основы создания нейросети на Python |
Глубокое обучение на Python |
Начала |
Динамические структуры данных |
Библиотека RX |
Основные классы и события Delphi |
Основные компоненты Delphi |
Организация потоков |
Технология COM |
Язык программирования Object Pascal |
Локальные БД в Delphi |
Библиотека OWL |
Библиотека Qt |
Библиотека STL |
Библиотека шаблонов классов Borland |
Основы компьютерной графики |
Динамические структуры данных |
Начала |
Обработка исключительных ситуаций |
Оптимизация с помощью ассемблера |
Основы объектно-ориентированного программирования |
Потоки ввода-вывода |
Разное |
Редактор Resource Workshop |
Среда Visual C++ |
Программирование в Microsoft Visual C++ 2010 |
Технология CUDA |
Технология OLE |
Начала |
16-битное программирование |
32-битное программирование |
Основы логического программирования |
Динамические структуры данных |
Visual Prolog |
Библиотека PyQt5 |
Библиотека Tkinter |
Визуализация данных |
Начала |
Задачи ComputerScience |
Рекурсия |
Однострочники |
Вкладка RXControls |
Вкладка RXDBAware |
Вкладка RXTools |
Вкладка Standard |
Вкладка Additional |
Создание Internet-приложений |
Вкладка System |
Вкладка Win32 |
Вкладка Servers |
Технология ADO |
Вкладка QReport |
Вкладка InterBase |
Вкладка Dialogs |
Начала |
Среда программирования. Язык С/С++ |
На этом шаге мы приведем общие соображения по его формированию.
На рабочем листе КассаЖурнал находится табличная база данных для одновременной регистрации приходных и расходных кассовых документов (рисунок 1). По горизонтали рабочая область всей таблицы - столбцы А:N, по вертикали - с 1-й до 200-ой строки.
Рис.1. Рабочий лист КассаЖурнал для регистрации приходных и расходных кассовых ордеров
Рабочая область листа КассаЖурнал разделена на две части:
Область ввода в табличную базу данных можно условно разделить на четыре составляющих:
Если введенные данные в две последние области могут относиться как к приходным, так и расходным ордерам, то ввод данных в одной строке по первым двум областям должен быть взаимоисключен. То есть в одной строке в этих областях не могут быть одновременно введены данные по формированию приходного и расходного ордера.
Первый элемент автоматизации журнала регистрации - возможность раздельного присвоения ордерам порядкового номера. В прошлом примере номер просто увеличивался на единицу, учитывая максимальное значение номеров предыдущих строк. В этом же приложении надо учитывать, что в таблице две несмежных области ввода номеров. При этом определение номера в каждой из них должно производиться независимо от другой области. Следовательно, перед созданием алгоритма вычислений в формуле определения порядкового номера нужно задать некоторые условия, которым этот алгоритм должен удовлетворять.
Формирование порядкового номера ордеров должно выполняться, учитывая следующую последовательность:
Для выполнения всех этих условий создайте довольно простую формулу с использованием функций ЕСЛИ, ЕПУСТО и МАКС. В ячейке Е15, которая формирует порядковый номер расходных кассовых ордеров, формула:
=ЕСЛИ(ЕПУСТО(B15);ЕСЛИ(ЕПУСТО(F15);0;МАКС(E$11:E14)+1);0)
Функция ЕПУСТО в первом аргументе первой функции ЕСЛИ проверяет наличие даты в ячейке В15, которая относится к области ввода дат приходных кассовых ордеров. И если ячейка В15 заполнена, то тогда функция ЕСЛИ возвращает значение 0. Если ячейка В15 пуста, то формула переходит к решению второго аргумента первой функции ЕСЛИ.
Следующая функция ЕПУСТО в первом аргументе второй функции ЕСЛИ проверяет наличие какого-либо значения введенного в ячейку F15 (дата формирования расходного кассового ордера) и если дата отсутствует, то второй аргумент функции ЕСЛИ возвращает значение 0. Если же дата присутствует (или любое другое значение), то функция МАКС в третьем аргументе второй функции ЕСЛИ ищет максимальное значение порядкового номера в ячейках столбца Е расположенных выше и к этому значению добавляет единицу.
Проверка соседних ячеек с внесенными в них датами обоснована. Ведь если не будет этого условия (или ему подобного), то область журнала с формулами присвоения порядкового номера будет заполнена значениями, увеличивающимися на единицу в каждой нижней ячейке, независимо от того относится ли этот порядковый номер к приходным или расходным кассовым ордерам.
Или возможен другой случай - в одной строке могут находиться и заполненные области по приходному и по расходному ордеру, что может внести неоднозначное трактование записи на рабочих листах формирующих бланки приходных и расходных ордеров.
При возможных нарушениях по вводу данных в строки журнала, порядковый номер этого ордера не будет формироваться, и естественно, эти документы не будут генерироваться на рабочих листах по созданию приходного и расходного ордеров. А отсутствие документа, при заполненном журнале регистрации привлечет внимание пользователя.
Для того чтобы значение 0 не отражалось на экране, выполните команду Сервис | Параметры и в диалоговом окне Параметры на вкладке Вид в области Параметры окна щелчком мыши уберите галочку с опции Нулевые значения.
Наиболее оптимальное заполнение журнала регистрации предполагается копированием выбранной строки с наиболее удовлетворяющими данными, последующей ее вставкой в конец таблицы и редактированием содержимого ячеек, если в этом возникает необходимость. Эта операция позволит значительно увеличить быстродействие операции по заполнению журнала.
В ячейку А1 вводится наименование организации. Для контроля остатка денежных средств в кассе в ячейку А2 введите формулу:
=СУММ(C11:C200)-СУММ(G11:G200).
Если на предприятии установлен лимит кассы, то тогда размер этой суммы введите в ячейку L2 (или любую другую по усмотрению).
Для того, что видеть, не превышается ли лимит кассы, введите в ячейку F1 формулу, основанную на функции ЕСЛИ:
=ЕСЛИ(A2<L2;"";"Превышение лимита кассы!")
На следующем шаге мы продолжим изучение этого вопроса.