Delete. удаление записей в таблице базы данных mysql

Порядок действий

  1. Делаем архив
  2. Составляем список удаляемых данных (самые большие таблицы, которые удалить стандартными средствами слишком долго / неудобно / не хочется разбираться с тем, что удаляемые данные зарегистрируются к обмену и «пойдут» куда не надо)
  3. Запускаем обработку, при желании сверху ставим отбор
  4. Выделяем в списке нужные виды документов (обязательно выделяем ОСНОВНЫЕ таблицы, то есть таблицы шапок, а не табличных частей)
    Можно сразу несколько с Ctrl-ом (доступно множественное выделение)
  5. Переходим на вторую закладку и выбираем нужный нам вариант удаления (например по дате)
  6. Нажимаем соответствующую кнопку по формированию скрипта
  7. Получаем в окне сообщений готовый скрипт на удаление данных на языке SQL
  8. Копируем в буфер, вставляем в SQL Management Studio
  9. При надобности корректируем. Например через замену (Ctrl+H) можно заменить «<» на «>=», и получится скрипт удаляющий данные документов не до указанной даты, а, наоборот, — начиная с неё. Либо отбор по дате можно заменить на пометку документа на удаления (_Marked = 1). Либо чтоб удалялись только непроведенные (_Posted = 0). 
  10. Запускаем на выполнение, дожидаемся завершения, наблюдаем за статусом на закладке Messages
  11. Проверяем результат в 1С
  12. Обязательно пересчитываем итоги затронутых регистров накопления и бухгалтерии, так как таблицы итогов не обрабатываются

При желании протестировать/посмотреть «что именно будет удаляться» предусмотрена соответствующая опция (галочка справа внизу), в этом случае скрипты будут формироваться с оператором SELECT, а не DELETE. Можно выделить нужный кусок, запустить на исполнение, посмотреть результаты, прежде чем запускать на удаление.

Управление увеличением размера файла журнала транзакций

Для управления увеличением файла журнала транзакций используйте инструкцию ALTER DATABASE (Transact-SQL) с параметрами для файлов и файловых групп. Следует отметить следующее.

  • Чтобы изменить текущий размер файла в КБ, МБ, ГБ и ТБ, используйте параметр .
  • Чтобы изменить шаг приращения размера, используйте параметр . Значение 0 указывает, что автоматическое приращение выключено и дополнительное пространство для файла не разрешено.
  • Чтобы установить максимальный размер файла журнала в КБ, МБ, ГБ и ТБ или задать неограниченный размер (UNLIMITED), используйте параметр .

Дополнительные сведения см. в разделе этой статьи.

Управление кучами

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

Чтобы удалить кучу, создайте кластеризованный индекс в ней.

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

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

Предупреждение

Создание или удаление кластеризованных индексов требует перезаписи всей таблицы. Если у таблицы есть некластеризованные индексы, то все они должны быть созданы повторно при каждом изменении кластеризованного индекса. Таким образом, для перехода с кучи на кластеризованный индекс и обратно может потребоваться продолжительное время и дополнительное место на диске — для переупорядочения данных в базе данных tempdb.

Массовое удаление таблиц в SQL Server

Через пол года можно уже без особого риска удалить таблицы, но предварительно лучше сделать бекап и положить его в безопасное место. Мало ли, что?!

Удаление одной таблицы:

Drop Table 

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

Можно воспользоваться, например, вот таким запросом:

SELECT 'DROP TABLE '
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'z_%'

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

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

Более продвинутый вариант использовать средства Server Management Studio.

Select Database -> Right Click -> Tasks -> Generate Scripts — Откроется мастер генерирования скриптов. Выбираем нужные таблиц и нажимаем на кнопку Advanced

И выбираем опцию  ‘Script DROP’. Выбираем куда поместить сгенерированный скрипт. В данном вопросе это не принципиально. Выбираю в новом окне.

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

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

Объекты

Удалить можно следующие объекты:

  • Справочники (+ТЧ, Подчиненные с их ТЧ, Подчиненные подчиненных и тд)
  • Документы (+Движения, Журналы, Последовательности, ТЧ)
  • Регистры сведений (только основная таблица)
  • Регистры накопления (только основная таблица)
  • Регистры бухгалтерии (только основная таблица, +Субконто)
  • Бизнес процессы (+ТЧ, Задачи с их ТЧ — не учитываются вложенные БП)
  • Задачи (+ТЧ)

Регистры расчета пока что не включены в этот список, буду уже смотреть по количеству желающих.

То что указано в скобках тоже удаляется вместе с основным объектом.

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

Почему ИНДЕКС/ПОИСКПОЗ лучше, чем ВПР?

Решая, какую формулу использовать для вертикального поиска, большинство гуру Excel считают, что ИНДЕКС/ПОИСКПОЗ намного лучше, чем ВПР. Однако, многие пользователи Excel по-прежнему прибегают к использованию ВПР, т.к. эта функция гораздо проще. Так происходит, потому что очень немногие люди до конца понимают все преимущества перехода с ВПР на связку ИНДЕКС и ПОИСКПОЗ, а тратить время на изучение более сложной формулы никто не хочет.

Далее я попробую изложить главные преимущества использования ПОИСКПОЗ и ИНДЕКС в Excel, а Вы решите – остаться с ВПР или переключиться на ИНДЕКС/ПОИСКПОЗ.

4 главных преимущества использования ПОИСКПОЗ/ИНДЕКС в Excel:

1. Поиск справа налево. Как известно любому грамотному пользователю Excel, ВПР не может смотреть влево, а это значит, что искомое значение должно обязательно находиться в крайнем левом столбце исследуемого диапазона. В случае с ПОИСКПОЗ/ИНДЕКС, столбец поиска может быть, как в левой, так и в правой части диапазона поиска. Пример: покажет эту возможность в действии.

2. Безопасное добавление или удаление столбцов. Формулы с функцией ВПР перестают работать или возвращают ошибочные значения, если удалить или добавить столбец в таблицу поиска. Для функции ВПР любой вставленный или удалённый столбец изменит результат формулы, поскольку требует указывать весь диапазон и конкретный номер столбца, из которого нужно извлечь данные.

Например, если у Вас есть таблица A1:C10, и требуется извлечь данные из столбца B, то нужно задать значение 2 для аргумента col_index_num (номер_столбца) функции ВПР, вот так:

Если позднее Вы вставите новый столбец между столбцами A и B, то значение аргумента придется изменить с 2 на 3, иначе формула возвратит результат из только что вставленного столбца.

Используя ПОИСКПОЗ/ИНДЕКС, Вы можете удалять или добавлять столбцы к исследуемому диапазону, не искажая результат, так как определен непосредственно столбец, содержащий нужное значение. Действительно, это большое преимущество, особенно когда работать приходится с большими объёмами данных. Вы можете добавлять и удалять столбцы, не беспокоясь о том, что нужно будет исправлять каждую используемую функцию ВПР.

3. Нет ограничения на размер искомого значения. Используя ВПР, помните об ограничении на длину искомого значения в 255 символов, иначе рискуете получить ошибку #VALUE! (#ЗНАЧ!). Итак, если таблица содержит длинные строки, единственное действующее решение – это использовать ИНДЕКС/ПОИСКПОЗ.

Предположим, Вы используете вот такую формулу с ВПР, которая ищет в ячейках от B5 до D10 значение, указанное в ячейке A2:

Формула не будет работать, если значение в ячейке A2 длиннее 255 символов. Вместо неё Вам нужно использовать аналогичную формулу ИНДЕКС/ПОИСКПОЗ:

4. Более высокая скорость работы. Если Вы работаете с небольшими таблицами, то разница в быстродействии Excel будет, скорее всего, не заметная, особенно в последних версиях. Если же Вы работаете с большими таблицами, которые содержат тысячи строк и сотни формул поиска, Excel будет работать значительно быстрее, при использовании ПОИСКПОЗ и ИНДЕКС вместо ВПР. В целом, такая замена увеличивает скорость работы Excel на 13%.

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

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

Удаление помеченных объектов, замена ссылок. Обычное и управляемое приложение. Не монопольно, включая рекурсивные ссылки, с отбором по метаданным и произвольным запросом Промо

Обработка удаления помеченных объектов с расширенным функционалом. Работает в обычном и управляемом приложении. Монопольный и разделенный режим работы. Отображение и отбор по структуре метаданных. Отборы данных произвольными запросами. Копирование и сохранение отборов. Удаление циклических ссылок (рекурсия). Представление циклических в виде дерева с отображением ключевых ссылок, не позволяющих удалить текущий объект информационной базы. Удаление записей связанных независимых регистров сведений. Групповая замена ссылок. Индикатор прогресса при поиске и контроле ссылочности.

10 стартмани

Разные значения против уникальных значений

Кажется, что это одно и то же, но это не так.

Ниже приведен пример со списком имен, в столбцах отдельно выделены уникальные и разные имена.

Разница между уникальным и разными значениями

Уникальные значения / имена — это те, которые встречаются только один раз. Это означает, что все имена, которые повторяются и имеют дубликаты, не являются уникальными. Уникальные имена перечислены в столбце D вышеупомянутого набора данных.

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

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

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою «копию» проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

Пустые поля NULL

Если выбрать все содержимое таблицы phone, то в последних двух строках будет не число, а какое странное NULL:

SELECT * FROM phone;

Результат

+---------+-----------+-----------+-----------+--------+
| phoneid | firstname | lastname  | phone     | cityid |
+---------+-----------+-----------+-----------+--------+
|       1 | John      | Doe       | 4144122   |      1 |
|       2 | Steve     | Doe       | 414124    |      1 |
|       3 | Johnatan  | Something | 4142947   |      2 |
|       4 | Donald    | Trump     | 414251123 |      2 |
|       5 | Alice     | Cooper    | 414254234 |      2 |
|       6 | Michael   | Jackson   | 4142544   |      3 |
|       7 | John      | Abama     | 414254422 |      3 |
|       8 | Andre     | Jackson   | 414254422 |      3 |
|       9 | Mark      | Oh        | 414254422 |   NULL |
|      10 | Charly    | Lownoise  | 414254422 |   NULL |
+---------+-----------+-----------+-----------+--------+

NULL – это не строка и не число, это отсутствующее значение, то есть в этих двух строках в колонке cityid отсутствует. NULL можно перевести как ноль, но правильнее все же переводить это слово как “несуществующий” или “недействительный”.

Если поле с числом равно 0, то это число, просто оно нулевое. А если поле с числом равно NULL, то это уже не число и не ноль, это значит, что там вообще числа нет, черная дыра, пробоина, все что угодно, но только не число.

Я только что ляпнул новое понятие – поле. Это пересечение колонки и строки. Это то, куда мы записываем значение какой-то колонки/строки.

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

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

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

Работа с нулевыми полями отличается, потому что если попробовать выполнить запрос:

select * from phone where cityid = null;

то ничего не вернется. Казалось бы, мы же сравниваем число символом сравнения с NULL, но это не работает. Дело в том, что сравнивать с помощью равенства нельзя, вместо этого нужно использовать слово is:

select * from phone where cityid is null;

А если мы хотим найти все строки, в которых поле не пустое, а имеет какое-то значение. Тут нужно использовать is not:

select * from phone where cityid is not null;

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

Вычисляемое поле. Алгоритм расчета

Для каждого месяца у нас есть только одно значение фактических продаж (столбец Продажи) и плана. Вычисляемое поле ПроцентВыполнения возвращает значение равное их отношению. Например, для января 2012 года – это 50,19% (продано было 36992,22, а план был 73697,76). 36992,22/73697,76=0,5019 (см. строку 10 на листе Исходная таблица).

Теперь проверим итоги по месяцам. За январь итоговым значением является 93,00%. Как это значение получилось?

Сначала программа вычислила СУММУ продаж за январь по всем годам, затем, вычислила СУММУ всех плановых значений. Разделив одно на другое, было получено 93,00%. В этом можно убедиться проделав вычисления самостоятельно (см. строку 10 на листе Сводная таблица, столбцы H:J).

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

Аналогично расчет ведется и для итогов по столбцам: находится сумма продаж и плана по годам, затем вычисляется их отношение.

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

Чтобы обойти данное ограничение и вычислить, например, средний % выполнения плана для всех январских месяцев, придется отказаться от Вычисляемого поля. Создайте в исходной таблице новый столбец – отношение продажи к плану для каждого месяца (см. лист Исходная таблица2). Затем, создайте на ее основе другую сводную таблицу. В окне параметров полей значений установите Среднее.

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

Настройте свои таблицы

Редактирование свойств таблицы

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

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

Перестановка столбцов и строк

Измените порядок следования таблиц с помощью перетаскивания в приложении на ПК или в браузере.

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

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

Развернуть содержимое ячейки

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

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

Вычисления

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

Наведите курсор под последней строкой вашей таблицы, затем нажмите на слово , которое появится под любым столбцом, о котором вы хотите узнать больше:

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

Таблицы в представлении временной шкалы

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

  • (Удалить): Удаляет строку из временной шкалы.
  • (Дубликат): Создает точную копию строки, расположенной ниже.
  • (Копировать ссылку): Копирует якорную ссылку на конкретную строку в буфер обмена.
  • (Переименовать): позволяет переименовать страницу в строке, не открывая ее.
  • (Переместить в): Позволяет переместить строку в другую рабочую область или страницу, где она будет вложена в качестве подстраницы.
  • (Редактировать свойство): Вызывает меню со всеми свойствами вашей временной шкалы. Щелкните нужное свойство, а затем выберите для него новое значение.

Комплекты TLS RSA шифров являются устаревшими

Начиная с 30 октября 2020 г. следующие комплекты шифров устарели с наших серверов.

  • «TLS_RSA_WITH_AES_256_GCM_SHA384»
  • «TLS_RSA_WITH_AES_128_GCM_SHA256»
  • «TLS_RSA_WITH_AES_256_CBC_SHA256»
  • «TLS_RSA_WITH_AES_128_CBC_SHA256»

Ниже перечислены поддерживаемые комплекты шифров.

  • «TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256»
  • «TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384»
  • «TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256»
  • «TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384»
  • «TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256»
  • «TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384»
  • «TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256»
  • «TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384»

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

Это наборы шифров, к которым подключен сервер должен поддерживать подключение из Power Query в сети или Power BI.

в Power Query Desktop (Power BI, Excel) мы не будем управлять комплектами шифров. если вы пытаетесь подключиться к платформе питания (например, к потокам данных платформы питания) или службе Power BI, вам потребуется один из этих комплектов шифров, включенных в ос. вы можете либо обновить Windows версию , либо обновить реестр Windows TLS , чтобы конечная точка сервера поддерживала один из этих шифров.

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

Клиенты должны обновить свои серверы до 1 марта 2021 г. Дополнительные сведения о настройке порядка комплектов шифров TLS см. в разделе Управление безопасностью транспортного уровня (TLS).

Сохранение сортировки

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

Например, если вы сортируете таблицу Sales так, чтобы в первую очередь отображались самые большие продажи магазина, вы можете ожидать, что выполнение операции «удалить дубликаты» возвратит только верхнюю продажу для каждого магазина. Эта операция, на самом деле, может работать. Однако такое поведение не гарантируется.

Из-за того, что Power Query оптимизирует определенные операции, включая их пропуски или разгрузку в источники данных (которые могут иметь собственное уникальное поведение порядка), порядок сортировки не гарантируется при статистической обработке (например ,), слиянии (например ,) или удаление дубликатов (например, ).

Это можно обойти несколькими способами. Ниже приведены два предложения.

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

Как сравнить две таблицы при помощи формулы ВПР.

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

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

Для наглядности расположим обе таблицы на одном листе.

Формула

берёт наименование товара из второго прайса, ищет его в первом, и в случае удачи извлекает соответствующую цену из первой таблицы. Она будет записана рядом с новой ценой в столбце H. Если поиск завершился неудачей, то есть такого товара ранее не было, то ставим 0. Таким образом, старая и новая цена оказываются рядом, и их легко сравнить простейшей операцией вычитания. Что и сделано в столбце I.

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

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

Разберём действия пошагово. Формула в ячейке J3 ищет наименование товара из первой позиции второй таблицы внутри первой. Если таковое найдено, извлекается соответствующая этому товару старая цена и сразу же сравнивается с новой. Если они одинаковы, то в ячейку записывается пустота «». 

Таким образом, в ячейке J3 будет указана старая цена, если ее удастся найти, а также если она не равна новой.

Далее если ячейка J3 не пустая, то в I3 будет указано наименование товара —  

а в K3 – его новая цена:  

Ну а далее в L3 просто найдем разность K3-J3.

Таким образом, в отчёте сравнения мы видим только несовпадения значений второй таблицы по сравнению с первой.

И еще один пример, который может быть полезен. Попытаемся сравнить в итоговой таблице оба прайс-листа с эталонным общим списком товаров.

В ячейке B2 запишем формулу

Так мы выясним, какие цены из второй таблицы встречаются в первой.

Для каждой цены из первого прайса проверяем, совпадает ли она с новыми данными  —

Эталонный список находится у нас в столбце A. В результате мы получили своего рода сводную таблицу цен – старых и новых.

Универсальное удаление выбранного объекта 8.2 — 8.3 на управляемых формах

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

1 стартмани

Считаем данные в массиве с пустыми ячейками

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

=СУММПРОИЗВ(1/СЧЁТЕСЛИ(диапазон>>диапазон &»»))

Легко заметить, что результат получился на 1 больше, чем в прошлом примере. Это потому, что формула посчитала и пустую ячейку, как уникальные данные. Чтобы этого не было, еще доработаем функцию:

=СУММПРОИЗВ((диапазон<>””)/СЧЁТЕСЛИ(диапазон>>диапазон &»»))

Теперь получили правильный результат без учёта пустот.

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

Отборы

Для настройки отборов в таблице есть специальная колонка, проваливаемся туда и получаем полноценный редактор отборов СКД:

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

Поддерживаются следующие виды сравнения:

  • Равно
  • Не равно
  • Больше
  • Больше или равно
  • Меньше
  • Меньше или равно
  • Соответствует шаблону
  • Не соответствует шаблону
  • В списке
  • Не в списке

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

Если кому то нужно сделать отборы «В группе», то для этого сделайте группу отборов «ИЛИ» и добавьте отборы вида Родитель.Родитель.Родитель и тд. Да, этот вариант будет не производительным как у 1С, да и я тут не стал особо заморачиваться с этим, но тем не менее для данной обработки в самый раз.

Способы решения задач по логике

Многие задачи можно решить, используя инструменты алгебры логики. Чтобы получить результат, можно пойти 3 путями:

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

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

Этапы решения логических задач:

  • Разобраться с условием на естественном языке, выделив простые высказывания, и дать им символьные обозначения (латиница).
  • Записать условие в виде формулы. Решить ее поэтапно, упрощая, учитывая приоритеты (( ), ¬, &, V).
  • Просчитать формулы строчно или при помощи таблиц истинности, учитывая законы алгебры логики.
  • Проверить, соответствует ли полученный результат условию задачи.

Создание таблицы в SQL

Для создания таблиц используется оператор CREATE TABLE.

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

Используем следующие правила:

  1. имя таблицы указывается после ключевого слова (если имя состоит из нескольких слов, то его следует заключить в одинарные кавычки);
  2. далее в круглых скобках следуют имена столбцов таблицы (полей), после которых указывается , которому будет принадлежать поле;
  3. не обязательно: затем указывается может ли поле содержать пустые значения (— может быть пустым или — обязательно для заполнения);
  4. одно из полей назначается первичным ключом ();
  5. поля отделяются запятыми.

Первая таблица называется , соответственно первая строка кода:

CREATE TABLE `teachers` ( ... )

Название таблицы может быть написано и без кавычек, так как состоит из одного слова.

Далее создаем поле , тип данных которого — целые числа (ограничим их одиннадцатью ), поле обязательно для заполнения, поэтому добавим :

`id` INT(11) NOT NULL,

Поле будет строковым, ограничим его в 25 символов (), поле тоже обязательно для заполнения, поэтому добавим :

`name` VARCHAR(25) NOT NULL,

Поле , тип данных которого — целые числа (ограничим их одиннадцатью ). То же самое касается поля :

`zarplata` INT(11),
`premia` INT(11),

После перечисления всех полей указываем ключевое поле:

PRIMARY KEY (`id`)

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

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

Получаем код создания таблицы :

CREATE TABLE `teachers` (
  `id` INT(11) NOT NULL,
  `name` VARCHAR(25) NOT NULL,
  `zarplata` INT(11),
  `premia` INT(11),
  PRIMARY KEY (`id`)
);

Проверить результат можно в сервисе онлайн визуализации схемы базы данных https://dbdesigner.net/, указания по работе с сервисом можно прочитать .

Для заполнения таблицы данными используется оператор INSERT языка SQL.

INSERT INTO teachers 
   VALUES (1, 'Иванов',1,10000,500), 
   (2, 'Петров',1,15000,1000) ,
   (3, 'Сидоров',1,14000,800), (4,'Боброва',1,11000,800);

SQL table 1. Аналогичным образом создайте таблицы базы данных и .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: