❗ Новое, 🔥 Исправлено, ⭐ Расширено, 🌟 Оптимизировано, ❔ Тестовая версия
⭐ Модуль Statistics.bas
- ⭐ Функция
CostChanged
: сообщение с предложением обновить цены после изменения в файле с ценами - 🔥 Процедура
CostUpdate
: изменить условия завершения процедуры - 🔥 Процедура
SpecificationSheets
: небольшие изменения в форматировании ячеек; изменены условия выполнения процедурыSortSupplier
; переместить курсор на последнюю строку (ошибка #r400) - 🌟 Функция
CheckSupplier
: текст сообщения при изменении данных в колонке "Дата актуальности" - ❔ Процедура
ListCost
: изменить условия формирования списка - ❔ Функция
GetSuppRow
: изменить тип параметраPartDate
❗ Модуль Frame.bas
- ❗ Функция
ClearSpacesInText
: удалить непечатаемые символы и двойные пробелы - ⭐ Процедура
SendKeysCtrlV
: собрать данные из колонки в массив Get_Supp, затем перед вставкой нескольких строк на листеSUPP_
вернуть строки из массива кроме первой - ⭐ Процедура
SettingsStatistics
: скрыть лист с настройками - ⭐ Процедура
ErrCollection
: удалить сообщение об изменении в файле с ценами; добавить сообщение о попытке вставить диапазон ячеек
🔥 Класс cExcelEvents.cls
- 🔥 Процедура
App_SheetActivate
: не изменять значение переменнойPartNumRow
на листеARCH_
- 🔥 Процедура
App_SheetChange
: проверить данные из буфера обмена перед вставкой (отладка, выполняется в процедуреSendKeysCtrlV
); присвоитьClipboard_RangeAddress
значение новой строки (ошибка #r410)
⭐ Модуль AutoModuleRibbon.bas
- ⭐ Процедура
GetEnabledMacro
: изменить условия проверки - ⭐ Процедура
AutoOpenControls
: завершать выполнения процедуры при отсутствии объекта - 🔥 Процедура
ShowCosts
: добавить условия проверки в сообщение с ценами (ошибка #r410)
🔥 Модуль Statistics.bas
- ⭐ Процедура
Auto_Open
: сортировка данных из файла с ценами по возрастанию, т.к. таблицы могут быть не отсортированы - ⭐ Функция
CostChanged
: изменить условия проверки - ❔ Процедура
CostUpdate
: добавить временную переменнуюTEMP_COUNT
для смены номера колонки; исправить условия (ошибка #r390); добавить условия для новых листов - 🔥 Процедура
SpecificationSheets
: небольшие изменения в форматировании ячеек; добавить форматирование ячеек для новых листов - 🔥 Функция
CheckSupplier
: проверять массив SuppDiff целиком; проверка изменения данных в колонке "Дата актуальности" - 🔥 Функция
GetCosts
: добавить проверку подсчёта записей в коллекцию Cost (аналогично функцияGetDateAndCosts
)
🔥 Модуль Frame.bas
- 🔥 Свойство
Quit
: восстановить панель контекстного меню для строки перед проверкой - 🔥 Процедура
SettingsStatistics
: условия создания коллекции - ❔ Функция
GetSheetList
: методы делегированы процедуреGetSheetIndex
- ⭐ Процедура
ErrCollection
: сообщение об отсутствии таблицы в файле с ценами
🔥 Класс cExcelEvents.cls
- ⭐ Процедура
App_WorkbookActivate
: удалить панель в меню строки - 🔥 Процедура
App_SheetActivate
: исправить ошибки при работе с массивом SuppDiff - ❔ Процедура
App_SheetChange
: список листов заменен наSF_
иSB_
(отладка); ошибка присвоении переменнойClipboard_RangeAddress
при отсутствии записей (отладка) - ❔ Процедура
App_SheetSelectionChange
: список листов заменен наQT_
иQB_
(отладка); добавлены проверки для новых листов
🔥 Модуль AutoModuleRibbon.bas
- ❔ Процедура
AutoOpenControls
: установить таймер для обновления ленточного меню при открытии книги - 🔥 Процедура
ShowCosts
: выполнить функциюGetDateAndCosts
(ошибка #r400)
❗ Записать константы прописными буквами
⭐ Модуль Statistics.bas
- 🌟 Процедура
Auto_Open
: после открытия текущей книги присвоить статус "сохранено" - 🌟 Процедура
SpecificationSheets
: перед выполнением отключить события; переместить курсор на последнюю строку (возникает исключение при единственной записи) - 🌟 Функция
GetCosts
: перед выполнением отключить обновление экрана - ❔ Функция
GetDateAndCosts
: дополнительные проверки для выборки цен поставщика (отладка)
🔥 Модуль Frame.bas
- ⭐ Свойство
Quit
: разворачивать окно приложения (на весь экран) - ⭐ Процедура
SettingsStatistics
: добавить коллекциюK_List
для сбора данных о колонках листовSF_
иSB_
- ⭐ Процедура
ErrCollection
: сообщение о пустой таблице в файле с ценами
🔥 Класс cExcelEvents.cls
- 🔥 Процедура
App_WorkbookBeforeSave
: выполнить процедуруSpecificationSheets
(ошибка #r380) - 🔥 Процедура
App_SheetActivate
:Sh
заменить => наActiveSheet
(ошибка #r390) - ❔ Процедура
App_SheetBeforeDoubleClick
: дополнительные проверки индекса колонки и листа; отключить обновление экрана - 🔥 Процедура
App_SheetChange
: отобразить в сообщении листSF_
илиSB_
⭐ Модуль AutoModuleRibbon.bas
- ⭐ Процедура
RefreshRibbon
: защита от изменений листа в случае отказа макросов из-за ленточного меню - ❔ Процедура
ShowCosts
: сообщение с ценами больше нуля (отладка)
❗ Файл ленточного меню customUI14.xml: добавить Alt-клавиши и кнопку для просмотра цен поставщика
⭐ Колонки "Переходящих в Бюджет", "Направленных в Финансист"; переместить колонку "Кол-во поступивших материалов" <= перед "Направленных в БПК"
🔥 Модуль Statistics.bas
- ❗ Функция
GetDateAndCosts
: поиск цен поставщика и передача процедуреShowCosts
- 🔥 Процедура
CostUpdate
: проверка при пересчёте итоговых сумм - ❔ Процедура
SpecificationSheets
: добавить проверку для переходящих материалов; небольшие изменения в форматировании ячеек - 🔥 Функция
GetCosts
: если цена за предыдущей период, то нужно изменить переменныеSuppNumRow
иcnfRenew
; добавить цены для листаSB_
🔥 Модуль Frame.bas
- 🔥 Свойство
Quit
: восстановить панели перед проверкой - ⭐ Процедура
ErrCollection
: сообщение о невозможности создания новой партии
🔥 Класс cExcelEvents.cls
- ❔ Процедура
App_WorkbookBeforeClose
: отменить удаление объектаApp
- 🔥 Процедура
App_SheetActivate
:Sh
заменить => наActiveSheet
; очистить массив SuppDiff - ❔ Процедура
App_SheetBeforeDoubleClick
: отключать кнопки фильтров на листеARCH_
; курсор на первую ячейку - ⭐ Процедура
App_SheetChange
: сообщение с предложением перенести переходящие материалы в другой лист
❗ Модуль AutoModuleRibbon.bas
- ❗ Процедура
GetEnabledMacro
: активировать кнопку для просмотра цен поставщика - ❗ Процедура
ShowCosts
: сообщение с ценами поставщика
❗ Переименовать колонки "НУМ" => "Всего НУМ", "ИТОГО Финансист" => "ИТОГО КФ"
❗ Создать массив Get_Supp для отслеживания изменений данных поставщика
❗ Модуль Statistics.bas
- ❗ Функция
GetSuppRow
: поиск строки о поставщике по данным из массива Get_Supp - ⭐ Процедура
CostUpdate
: создать формулы в строке с поставщиком на листахSF_
иSB_
- ❔ Функция
SetFormula
: удалить, методы делегированы процедуреCostUpdate
- 🔥 Процедура
SpecificationSheets
: небольшие изменения в форматировании ячеек - 🌟 Функция
GetCosts
: добавить параметры; использовать массив Get_Supp для выборки данных о текущем поставщике - ❔ Процедура
GetSuppRow
: удалить, методы делегированы функцииGetSuppRow
🔥 Модуль Frame.bas
- 🔥 Процедура
SendKeyEnter
: объектWb
заменить => наActiveWorkbook
- ⭐ Функция
GetSheetList
: добавить проверку присутствия объектаThisWb
; добавить в коллекцию индекс листа с типом "байт" - 🌟 Процедура
SettingsStatistics
: добавить в коллекцию тип даты в местном формате
🔥 Класс cExcelEvents.cls
- ❔ Процедура
App_WorkbookBeforeClose
: удалить процедуруSpecificationSheets
- 🔥 Процедура
App_SheetSelectionChange
: удалить процедуруGetSuppRow
; удалить функциюSetFormula
; присвоить переменнойPartNumRow
номер строки до определения номера текущей колонки
❗ Глобальную переменную App_Wb
переименовать => в ThisWb
🔥 Модуль Statistics.bas
- 🔥 Процедура
SpecificationSheets
: исправить маску "ИНН"; проверка нового поставщика, запреть ввод существующего имени - ❔ Процедура
SendKeyEnter
: переместить в модуль Frame.bas (аналогично процедураSendKeysCtrlV
)
❗ Модуль Frame.bas
- ❗ Процедура
SendKeyEnter
: выполнить нажатие клавиши Enter только для текущей книги - ❗ Процедура
SendKeysCtrlV
: перехват клавиш Ctrl+V для вставки неформатированного текста только для текущей книги - ⭐ Свойство
Quit
: прятать "Параметры вставки" только для текущей книги - ⭐ Процедура
ErrCollection
: сообщение об исключении в формуле проверки данных
🔥 Класс cExcelEvents.cls
- 🔥 Процедура
App_WorkbookBeforeClose
: прятать "Параметры вставки" только для текущей книги - 🔥 Процедура
App_WorkbookDeactivate
: переменнаяCopyMode
контролирует скопированный диапазон ячеек; восстановить "Параметры вставки"
🔥 Модуль AutoModuleRibbon.bas
- 🔥 Процедура
SetFilter
: использовать активную ячейку вместо диапазона ячеек
❗ В список "Тип организации" добавить позицию "Ведомство (без подп.)"
🌟 Перемесить колонку "Дата актуальности" <= перед "Категория цены"
🔥 Модуль Statistics.bas
- ⭐ Процедура
SpecificationSheets
: переменнойLastRow
присвоить значение последней строки на листе; проверка дат на листахSF_
иSB_
; небольшие изменения в форматировании ячеек - 🔥 Процедура
RecordCells
: изменения в массиве SuppDiff и параметрах процедурыSortSupplier
из-за перестановки колонок - 🔥 Функция
CheckSupplier
: изменения в массиве SuppDiff из-за перестановки колонок - 🔥 Функция
ChangedBeforeSave
: изменения в массиве SuppDiff из-за перестановки колонок - 🔥 Процедура
ListCost
: небольшие изменения из-за перестановки колонок (аналогично процедураSuppNumRow
) - 🔥 Функция
GetCosts
: небольшие изменения из-за перестановки колонок - 🌟 Процедура
SendKeysCtrlV
: проверка наличия неформатированного текста в буфере
⭐ Модуль Frame.bas
- ⭐ Свойство
Quit
: отображать [Только для чтения] в заголовке - ⭐ Процедура
ErrCollection
: сообщение об исключении в формуле условного форматирования
🔥 Класс cExcelEvents.cls
- 🔥 Процедура
App_SheetBeforeRightClick
: небольшие изменения из-за перестановки колонок (аналогично процедураApp_SheetSelectionChange
) - ⭐ Процедура
App_SheetChange
: удалить все символы, кроме натуральных чисел; автопростановка "не оплач." в колонке "Дата перечислений"
🔥 Модуль Statistics.bas
- ❔ Функция
SetFormula
: создать формулы в строке с поставщиком на листахSF_
иSB_
- 🌟 Процедура
SpecificationSheets
: выполнить функциюErrCollection
в случае появления исключения; очистить границы ячеек; изменения в форматировании и группировки ячеек, переместить курсор на последнюю строку
⭐ Модуль Frame.bas
- ⭐ Процедура
ErrCollection
: сообщение о невозможности создания условного форматирования
🔥 Класс cExcelEvents.cls
- ❔ Процедура
App_SheetChange
: отдельно для каждого листа - 🌟 Процедура
App_SheetSelectionChange
: выполнить функциюSetFormula
; добавить выпадающий список
❗ Модуль Statistics.bas
- ❗ Функция
CostChanged
: проверить изменения файла с ценами - ❗ Процедура
CostUpdate
: пересчитать формулы для поставщика - ⭐ Процедура
Auto_Open
: цены "Бухонлайн" объединить с ценами "Кодекс"; добавить свойствоQuit
- 🔥 Процедура
SpecificationSheets
: небольшие изменения в форматировании ячеек - 🌟 Процедура
RecordCells
: выполнить процедуруCostUpdate
; добавить свойствоQuit
- ❔ Функция
GetCosts
: переменнуюOrgBody
вынести из параметров функции в локальную - 🌟 Процедура
GetSuppRow
: удалить проверку с сообщением об исключении
❗ Модуль Frame.bas
- ❗ Свойство
Quit
: изменить "Параметры вставки" для текущей книги - ⭐ Процедура
ErrCollection
: сообщение о изменении в файле с ценами; добавить свойствоQuit
- 🌟 Функция
GetSheetList
: добавить свойствоQuit
⭐ Класс cExcelEvents.cls
- ⭐ Процедура
App_SheetActivate
: на листах кромеSUPP_
иARCH_
присвоитьPartNumRow
- ⭐ Процедура
App_SheetSelectionChange
: на листахSF_
иSB_
изменить условия выпадающих списков - ⭐ Процедура
App_SheetSelectionChange
: выполнить функциюCostChanged
- 🌟 Процедура
App_WorkbookActivate
: добавить свойствоQuit
- 🌟 Процедура
App_WorkbookBeforeClose
: добавить свойствоQuit
- 🌟 Процедура
App_WorkbookBeforeSave
: добавить свойствоQuit
- 🌟 Процедура
App_WorkbookDeactivate
: добавить свойствоQuit
❗ Модуль Statistics.bas
- ❗ Процедура
SendKeysCtrlV
: перехват клавиш Ctrl+V - 🔥 Процедура
SpecificationSheets
: небольшие изменения в форматировании ячеек - 🌟 Процедура
Auto_Open
: проверка существования пути файла с ценами
❗ Модуль Frame.bas
- ❗ Процедура
SettingsStatistics
: сетевой путь в коллекцию с настройками - ⭐ Процедура
ErrCollection
: сообщение о необходимости выбрать поставщика
⭐ Класс cExcelEvents.cls
- ⭐ Процедура
Class_Initialize
: задать горячие клавиши процедуройSendKeysCtrlV
- 🌟 Процедура
App_WorkbookDeactivate
: копировать выделенный диапазон - ❔ Процедура
App_SheetSelectionChange
: на листахSF_
иSB_
изменить выпадающий список
❗ Модуль AutoModuleRibbon.bas
- ❗ Процедура
GetVisibleMenu
: отображать рабочую вкладку меню только для текущей книги - ❗ Процедура
SetFilter
: управлять кнопками фильтров на вкладке меню; удалить процедуруAddFilter
❗ Модуль управления меню AutoModuleRibbon.bas
❔ Файл ленточного меню customUI14.xml
⭐ Колонки "Дата материала", "Форма договора", "Кодекс" на листах SF_
и SB_
🌟 Переставить колонки "Дата акта" <=> "Номер акта", "Дата договора" <=> "Номер договора"
⭐ Модуль Statistics.bas
- ⭐ Функция
CheckSupplier
: обновить массив SuppDiff
⭐ Класс cExcelEvents.cls
- ⭐ Процедура
App_SheetActivate
: обновить массив SuppDiff - ⭐ Процедура
App_SheetSelectionChange
: для листаSUPP_
создать массив SuppDiff
❔ Шаблон книги blank r300.xlsx: тестирование производится на первых 5 листах
❗ Основной модуль Statistics.bas
- ❗ Процедура
Auto_Open
(автозапуск): создать системную таблицу и загрузить файл с ценами черезADODB
- ❔ Процедура
SpecificationSheets
: восстановить форматирование таблиц - ❗ Процедура
RecordCells
: записать на листARCH_
данные о поставщике из массива SuppDiff - ❗ Функция
CheckSupplier
: проверить изменения на листеSUPP_
в массиве SuppDiff - ❗ Функция
ChangedBeforeSave
: для класса cExcelEvents.cls - ❗ Процедура
ListCost
: создать список "Категория цен" - ❗ Функция
GetCosts
: вернуть цены на актуальную дату - ❗ Процедура
GetSuppRow
: поиск строки на листеARCH_
- ❔ Процедура
SendKeyEnter
: выполнить нажатие клавиши Enter
❗ Дополнительный модуль Frame.bas
- ❗ Свойство
GetUserName
: читать имя активного пользователя - ❗ Процедура
SettingsStatistics
: создать коллекцию с настройками - ❗ Функция
GetSheetList
: обновить коллекцию с индексами листов и вернуть индекс листа по имени - ❗ Процедура
ProtectSheet
: защитить лист от изменений - ❗ Функция
UnprotectSheet
: снять защиту с листа и вернуть сам объект - ❗ Процедура
SortSupplier
: выполнить сортировку по возрастанию по номеру колонки - ❗ Процедура
RemoveCollection
: удалить все строки в коллекции - ❗ Функция
MultidimArr
: заполнить одномерный массив из двумерного - ❗ Процедура
ErrCollection
: добавить сообщения об исключении по номеру и маркеру
❗ Класс событий книги cExcelEvents.cls
- ❗ Процедура
Class_Initialize
: объявить приложениеApp
; задать горячие клавиши процедуройSendKeyEnter
- ❗ Процедура
App_WorkbookOpen
: не используется - ❗ Процедура
App_WorkbookActivate
: направить перемещение курсора "вправо" - ❗ Процедура
App_WorkbookBeforeClose
: выполнить процедуруRecordCells
- ❗ Процедура
App_WorkbookBeforeSave
: выполнить процедурыRecordCells
иSpecificationSheets
- ❗ Процедура
App_WorkbookDeactivate
: направить перемещение курсора "вниз" и выполнить процедуруRecordCells
- ❗ Процедура
App_SheetDeactivate
: отдельно для каждого листа - ❗ Процедура
App_SheetActivate
: на листARCH_
- ❔ Процедура
App_SheetBeforeDoubleClick
: переключить с листаSUPP_
на листARCH_
- ❔ Процедура
App_SheetBeforeRightClick
: запретить удаление строк - ❗ Процедура
App_SheetSelectionChange
: отдельно для каждого листа
❗ Модуль DBCreateMDWSystem.bas: создаёт системную таблицу System.mdw если не установлен Access
❔ Разработана структура файла с ценами Cost.accdb