6. Объектная модель прикладного решения
#24

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

При доработке автозаполнения документа «Ведомость в кассу» в 1С (например, в расширении или обработке) с какого числа начинается индекс у элементов коллекций, таких как строки табличной части ведомости?

С нуля: первая строка коллекции имеет индекс 0
Правильно: в объектной модели 1С элементы коллекций (например, массив, коллекция строк таблицы значений, строки табличной части документа) индексируются с 0. Поэтому первая строка табличной части «Ведомости в кассу» при обращении по индексу - это элемент с индексом 0, а последний индекс равен «Количество() - 1».
С единицы: первый элемент имеет индекс 1
Неправильно: для коллекций встроенного языка 1С используется нулевая индексация. Если начать обращаться с 1, то вы пропустите первый элемент (индекс 0) и рискуете получить ошибку выхода за границы при обращении к последнему элементу.
Индекс задает программист при создании коллекции (можно начинать с любого числа)
Неправильно: стандартные коллекции 1С (включая массивы и коллекции строк) имеют фиксированное правило индексации - с нуля. Начальный индекс «по желанию программиста» для таких коллекций не задается.
Индексации нет: к элементам коллекций нельзя обращаться по номеру
Неправильно: у коллекций 1С предусмотрено обращение к элементам по индексу (например, к строкам по номеру), а также типовые методы для работы с количеством и поиском.

Пояснение

Автозаполнение «Ведомости в кассу» обычно выполняют через кнопку «Заполнить» в документе: программа подбирает сотрудников и суммы к выплате по данным учета и настройкам выплаты (например, сотрудник должен быть настроен на получение наличными через кассу, а в шапке ведомости должны быть верно указаны вид выплаты и месяц/период). Если требуется доработка после автозаполнения (например, проверить суммы, проставить дополнительные реквизиты, удалить строки по условию, сгруппировать сотрудников), это часто делают программно, проходя по строкам табличной части как по коллекции. Ключевой момент: индексация в 1С начинается с 0. - Первая строка: индекс 0. - Последняя строка: индекс «Количество() - 1». Практические примеры, где это важно: 1) Нужно получить первую строку ведомости после заполнения: обращаются к элементу с индексом 0. Если попытаться взять индекс 1, вы фактически получите вторую строку. 2) Нужно обработать все строки ведомости циклом по индексам: корректный диапазон - от 0 до «Количество() - 1». Если ошибочно идти до «Количество()», на последней итерации возникнет обращение за пределы коллекции. 3) Нужно удалить строки по условию: безопаснее идти в обратном порядке - от «Количество() - 1» до 0, чтобы не «съезжали» индексы после удаления. Полезные проверки, если ведомость заполнилась не полностью или пусто: - У сотрудника должен совпадать способ (место) выплаты с типом ведомости (для кассы - выплата через кассу). - В шапке документа должны быть правильно выбраны вид выплаты и месяц/период. - По сотруднику должна быть сумма к выплате (если уже есть ведомость за тот же период/вид выплаты, остаток может быть нулевым). Итого: после нажатия «Заполнить» строки табличной части - это коллекция, и любая работа со строками по индексам начинается с 0.