Найти в Дзене

Типы данных в 1С для новичков: Как не перепутать соль с сахаром

"Марковка! Представь: у тебя на кухне есть разные полки: Тип данных — это как решить, на какую полку положить продукт. Нельзя молоко хранить на полке для круп — испортится!" plaintext ЧТО ЭТО: Цифры для вычислений
ПРИМЕРЫ: 100, 15.5, -3.14, 0
КАК В ЖИЗНИ: Вес муки (500г), цена (150.50 руб), температура (-5°C)
ХРАНИМ: На полке "Вычисления"
МОЖНО: Складывать, вычитать, умножать, делить
НЕЛЬЗЯ: Складывать с текстом (500 + "грамм" = ошибка!) Совет шефа: "Числа — как соль: точное количество. Не 'немного', а '5 грамм'. Для денег используй Число(15, 2) — 15 рублей 00 копеек." plaintext ЧТО ЭТО: Текст в кавычках
ПРИМЕРЫ: "Мука", "ИП Петров", "ул. Ленина, 15"
КАК В ЖИЗНИ: Названия, адреса, комментарии
ХРАНИМ: На полке "Тексты"
МОЖНО: Соединять ("Мука" + " высший сорт" = "Мука высший сорт")
НЕЛЬЗЯ: Делить или умножать Совет шефа: "Строки — как названия блюд. 'Борщ' и 'борщ' — это разные строки (регистр важен!). Для поиска используй ВРЕГ() — сделает нечувствительным к регистру." plaintext ЧТО Э
Оглавление

Шеф-повар Петрович о сортировке продуктов на кухне данных

🏷️ ЧТО ТАКОЕ ТИП ДАННЫХ?

"Марковка! Представь: у тебя на кухне есть разные полки:

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

Тип данных — это как решить, на какую полку положить продукт. Нельзя молоко хранить на полке для круп — испортится!"

📦 ОСНОВНЫЕ "ПОЛКИ" (ТИПЫ) В 1С

1. ЧИСЛО (Number) — "ВЕСЫ И МЕРНЫЕ СТАКАНЫ"

plaintext

ЧТО ЭТО: Цифры для вычислений
ПРИМЕРЫ: 100, 15.5, -3.14, 0
КАК В ЖИЗНИ: Вес муки (500г), цена (150.50 руб), температура (-5°C)

ХРАНИМ: На полке "Вычисления"
МОЖНО: Складывать, вычитать, умножать, делить
НЕЛЬЗЯ: Складывать с текстом (500 + "грамм" = ошибка!)

Совет шефа: "Числа — как соль: точное количество. Не 'немного', а '5 грамм'. Для денег используй Число(15, 2) — 15 рублей 00 копеек."

2. СТРОКА (String) — "ЭТИКЕТКИ И НАКЛЕЙКИ"

plaintext

ЧТО ЭТО: Текст в кавычках
ПРИМЕРЫ: "Мука", "ИП Петров", "ул. Ленина, 15"
КАК В ЖИЗНИ: Названия, адреса, комментарии

ХРАНИМ: На полке "Тексты"
МОЖНО: Соединять ("Мука" + " высший сорт" = "Мука высший сорт")
НЕЛЬЗЯ: Делить или умножать

Совет шефа: "Строки — как названия блюд. 'Борщ' и 'борщ' — это разные строки (регистр важен!). Для поиска используй ВРЕГ() — сделает нечувствительным к регистру."

3. ДАТА (Date) — "КАЛЕНДАРЬ КУХНИ"

plaintext

ЧТО ЭТО: Дата и время
ПРИМЕРЫ: '2024.01.15', '15.01.2024 14:30:00'
КАК В ЖИЗНИ: Срок годности, дата заказа, время доставки

ХРАНИМ: В "холодильнике времени"
МОЖНО: Сравнивать (раньше/позже), добавлять дни
НЕЛЬЗЯ: Умножать даты

Совет шефа: "Даты — как сроки годности. '01.01.2024' и '2024-01-01' — это одно и то же, но форматы разные. Всегда используй ТекущаяДата() для сегодняшней даты."

4. БУЛЕВО (Boolean) — "ВКЛ/ВЫКЛ"

plaintext

ЧТО ЭТО: Логическое значение
ПРИМЕРЫ: Истина, Ложь
КАК В ЖИЗНИ: Проведён документ или нет, товар в наличии или нет

ХРАНИМ: На полке "Переключатели"
МОЖНО: Использовать в условиях (ЕСЛИ ... ТОГДА)
НЕЛЬЗЯ: Складывать с числами

Совет шефа: "Булевы значения — как выключатель света. Или горит (Истина), или не горит (Ложь). Не 'немного горит' — только два состояния."

5. ССЫЛКА (Reference) — "ЯРЛЫК НА ПОЛКУ"

plaintext

ЧТО ЭТО: Ссылка на объект в базе
ПРИМЕРЫ: Справочник.Товары.НайтиПоКоду("000001")
КАК В ЖИЗНИ: Накладная №123, товар "Мука", контрагент "ИП Иванов"

ХРАНИМ: В "сейфе ссылок"
МОЖНО: Получить свойства объекта (Ссылка.Наименование)
НЕЛЬЗЯ: Использовать как число или строку напрямую

Совет шефа: "Ссылка — как номер столика в ресторане. Не сам клиент, а указатель на него. По номеру столика 5 можешь найти, кто там сидит и что заказал."

⚠️ 5 ГЛАВНЫХ ПУТАНИЦ НОВИЧКОВ

ПУТАНИЦА 1: ЧИСЛО vs СТРОКА С ЦИФРАМИ

plaintext

ПРАВИЛЬНО (Число):
Цена = 100; // Можно: Цена * 2 = 200
Количество = 5; // Можно: Цена * Количество

НЕПРАВИЛЬНО (Строка):
Цена = "100"; // Нельзя: "100" * 2 = ошибка!
Количество = "5"; // Нельзя: "100" * "5" = ошибка!

ИСПРАВЛЕНИЕ:
Цена = Число("100"); // Преобразовали строку в число

Аналогия: "100 грамм муки" (строка) vs 100 (число) грамм. На весы можно положить только число!"

ПУТАНИЦА 2: ПУСТОТА vs НОЛЬ vs ПУСТАЯ СТРОКА

plaintext

НЕОПРЕДЕЛЕНО → Ничего нет (пустая коробка)
0 → Есть, но ноль (пустая пачка соли)
"" → Пустая строка (этикетка без текста)

ПРИМЕР:
Если Контрагент = Неопределено Тогда // Клиента ещё нет
Если Сумма = 0 Тогда // Заказ на 0 рублей
Если Комментарий = "" Тогда // Комментарий пустой

Анализируй: "Неопределено — продукта нет в поставке. 0 — продукт есть, но закончился. "" — продукт есть, но без названия."

ПУТАНИЦА 3: ДАТА vs СТРОКА С ДАТОЙ

plaintext

ДАТА (можно вычислять):
Дата1 = '2024.01.15';
Дата2 = Дата1 + 7; // Добавили 7 дней = '2024.01.22'

СТРОКА (нельзя вычислять):
Дата1 = "15.01.2024";
Дата2 = Дата1 + 7; // ОШИБКА! Нельзя сложить строку и число

Аналогия: "Календарь на стене (дата) vs фотография календаря (строка). На календаре можно отметить дни, на фотографии — нет."

ПУТАНИЦА 4: ССЫЛКА vs НАИМЕНОВАНИЕ

plaintext

ССЫЛКА (объект):
Товар = Справочник.Товары.НайтиПоКоду("000001");
Сообщить(Товар.Цена); // Можно получить все свойства

СТРОКА (только имя):
Товар = "Мука";
Сообщить(Товар.Цена); // ОШИБКА! У строки нет цены

Аналогия: "Повар Петя (ссылка) vs слово 'Петя' (строка). У повара Пети можно спросить рецепт, у слова 'Петя' — нет."

ПУТАНИЦА 5: МАССИВ vs ОДИНОЧНОЕ ЗНАЧЕНИЕ

plaintext

ОДИНОЧНОЕ (один товар):
Товар = Справочник.Товары.НайтиПоКоду("000001");

МАССИВ (несколько товаров):
Товары = Справочник.Товары.Выбрать(); // Много товаров
Для Каждого Т Из Товары Цикл // Перебираем каждый
Сообщить(Т.Наименование);
КонецЦикла;

Аналогия: "Одно яблоко vs корзина яблок. С одним яблоком работаешь напрямую, с корзиной — перебираешь по одному."

🛠️ ПРАКТИЧЕСКАЯ ЛАБОРАТОРИЯ: "РАСПРЕДЕЛЯЕМ ПРОДУКТЫ"

Задание 1: Создаём реквизиты для товара

plaintext

"Мука высший сорт"
1. Наименование = "Мука высший сорт" // Строка
2. Цена = 85.50 // Число (деньги)
3. Вес = 1000 // Число (граммы)
4. ЕстьВНаличии = Истина // Булево
5. ДатаПоступления = '2024.01.15' // Дата
6. Поставщик = СсылкаНаКонтрагента // Ссылка

Задание 2: Правильные сравнения

plaintext

ЕСЛИ Товар.Цена > 100 ТОГДА // Число с числом ✓
ЕСЛИ Товар.Наименование = "Мука" ТОГДА // Строка со строкой ✓
ЕСЛИ Товар.ДатаПоступления < ТекущаяДата() ТОГДА // Дата с датой ✓
ЕСЛИ Товар.ЕстьВНаличии ТОГДА // Булево проверяется просто ✓

// НЕПРАВИЛЬНО:
ЕСЛИ Товар.Цена > "100" ТОГДА // Число со строкой ✗
ЕСЛИ Товар.Наименование = 123 ТОГДА // Строка с числом ✗

Задание 3: Преобразования типов

plaintext

// Из строки в число:
Сумма = Число("150.50"); // "150.50" → 150.50

// Из числа в строку:
Текст = Строка(150.50) + " руб."; // 150.50 → "150.50 руб."

// Из строки в дату:
Дата = Дата("15.01.2024"); // "15.01.2024" → дата

// Из даты в строку:
ТекстДата = Формат(Дата, "ДФ=dd.MM.yyyy"); // Дата → "15.01.2024"

🔍 ДИАГНОСТИКА: "ПОЧЕМУ НЕ РАБОТАЕТ?"

Симптом: "Неверный тип данных"

plaintext

СИМПТОМ: Ошибка при выполнении кода
ПРИЧИНЫ:
1. Сравниваете число со строкой
2. Передаёте строку вместо числа в вычисления
3. Используете дату как строку
4. Работаете с ссылкой как с примитивом

ДИАГНОСТИКА:
Сообщить(ТипЗнч(Переменная)); // Покажет тип
// Возвращает: Тип("Число"), Тип("Строка") и т.д.

Симптом: "Неожиданный результат"

plaintext

ПРИМЕР:
А = "10"; Б = "5";
Результат = А + Б; // "105" (конкатенация строк), а не 15!

ИСПРАВЛЕНИЕ:
Результат = Число(А) + Число(Б); // 15

Симптом: "Пустое значение"

plaintext

ПРОВЕРКИ:
Если Переменная = Неопределено Тогда
Если ЗначениеЗаполнено(Переменная) Тогда
Если Не ПустаяСтрока(Переменная) Тогда // Для строк

🎯 ТРЕНИРОВОЧНЫЕ УПРАЖНЕНИЯ

Упражнение 1: "Угадай тип"

plaintext

1. "2024" // ? (Строка)
2. 2024 // ? (Число)
3. '2024.01.01' // ? (Дата)
4. Истина // ? (Булево)
5. Справочник.Товары // ? (Ссылка)
6. "" // ? (Строка)
7. 0 // ? (Число)
8. Неопределено // ? (Неопределено)

Упражнение 2: "Исправь ошибки"

plaintext

// Ошибочный код:
Цена = "150";
Количество = "3";
Итог = Цена * Количество; // Ошибка!

// Правильный код:
Цена = Число("150");
Количество = Число("3");
Итог = Цена * Количество; // 450

Упражнение 3: "Создай структуру"

plaintext

// Создай реквизиты для заказа:
Заказ = Новый Структура;
Заказ.Вставить("Номер", "000001"); // ?
Заказ.Вставить("Дата", ТекущаяДата()); // ?
Заказ.Вставить("Сумма", 1500.50); // ?
Заказ.Вставить("Оплачен", Истина); // ?
Заказ.Вставить("Клиент", СсылкаНаКлиента);// ?

🏁 ЗАКЛЮЧЕНИЕ ОТ ШЕФА ПЕТРОВИЧА:

"Марковка, запомни золотые правила типов данных:

1. КАЖДЫЙ ИНГРЕДИЕНТ — НА СВОЮ ПОЛКУ

  • Числа — для вычислений
  • Строки — для текста
  • Даты — для времени
  • Булево — для да/нет
  • Ссылки — для объектов

2. НЕ СМЕШИВАЙ РАЗНЫЕ ТИПЫ

  • Яблоки + апельсины ≠ фруктовый салат (в вычислениях)
  • Преобразуй явно: Число(), Строка(), Дата()

3. ПРОВЕРЯЙ ТИП, ЕСЛИ НЕ УВЕРЕН

  • ТипЗнч() — твой детектор
  • ЗначениеЗаполнено() — проверка на пустоту

4. НАЧИНАЙ С ПРОСТОГО

  • Сначала освой Число и Строку
  • Потом Булево и Дату
  • Потом Ссылки
  • Потом сложные типы (Массивы, Структуры, Таблицы значений)

5. ОШИБКИ С ТИПАМИ — САМЫЕ ЧАСТЫЕ

  • 80% ошибок новичков — из-за путаницы типов
  • Компилятор часто подсказывает: 'Ожидался тип X, получен Y'

И главное — не бойся экспериментировать!

Создай тестовую базу и пробуй:

plaintext

А = 5;
Б = "5";
Сообщить(А + Б); // Ошибка
Сообщить(А + Число(Б)); // Работает
Сообщить(Строка(А) + Б); // "55"

Типы данных — как специи на кухне:

  • Соль (Число) — для точности
  • Названия (Строка) — для идентификации
  • Сроки (Дата) — для своевременности
  • Флаги (Булево) — для состояний
  • Связи (Ссылки) — для отношений

Научись их различать — и твой код станет вкусным и полезным, как идеально приготовленное блюдо!

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

Удачи! И помни: даже лучшие программисты когда-то складывали строки вместо чисел!" 🧮📝

📌 ШПАРГАЛКА-НАПОМИНАЛКА:

plaintext

ЧИСЛО: Для вычислений, денег, количеств
СТРОКА: Для текста, названий, кодов
ДАТА: Для дат, времени, сроков
БУЛЕВО: Для флагов, состояний (Истина/Ложь)
ССЫЛКА: Для объектов базы данных
НЕОПРЕДЕЛЕНО: Для пустых значений
МАССИВ: Для наборов значений
СТРУКТУРА: Для наборов "ключ-значение"
ТАБЛИЦА ЗНАЧЕНИЙ: Для табличных данных

ПРЕОБРАЗОВАНИЯ:
Число("100") → 100
Строка(100) → "100"
Дата("15.01.2024") → дата
Формат(Дата, "ДФ=dd.MM.yyyy") → "15.01.2024"

ПРОВЕРКИ:
ТипЗнч(Переменная) // Узнать тип
ЗначениеЗаполнено(Переменная) // Не пусто?
ПустаяСтрока(Переменная) // Пустая строка?

P.S. Когда код не работает — первым делом спроси: 'А типы данных правильные?' Это как в кулинарии: сначала проверь, мука ли у тебя в руках, а не сахарная пудра! 🧁🔍