Вопрос: Как получить доступ к табличной части справочника‚ изменить её данные или выполнить расчёты?
В этой статье мы подробно разберём:
- Что такое табличная часть справочника;
- Как правильно обращаться к ней в коде 1С;
- Примеры типовых запросов и обработок;
- Типичные ошибки и способы их устранения;
- Практические рекомендации для разработки.
Табличная часть справочника: основные понятия
Табличная часть (ТЧ) – это вложенный набор записей‚ который хранится внутри объекта справочника. Каждый элемент ТЧ представляет собой отдельный строковый объект со своим набором реквизитов.
Пример структуры справочника «Склад»:
- Код‚ Наименование – реквизиты справочника;
- ТоварыНаСкладе – табличная часть‚ содержащая поля Товар‚ Количество‚ Серия и т.д.
Почему важен правильный доступ к ТЧ?
ТЧ часто используется для:
- Ведения остатков и проведения инвентаризации;
- Хранения исторических данных (например‚ цены за период);
- Выполнения расчётов и формирования отчетов.
Обращение к табличной части в коде 1С Чтение данных
Для получения доступа к ТЧ необходимо сначала получить объект справочника‚ а затем обратиться к его полю‑таблице.
// Пример: чтение всех товаров на складе с кодом "S001"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Склад.Ссылка КАК Склад‚
ТоварыНаСкладе.Товар‚
ТоварыНаСкладе.Количество
ИЗ
Справочник.Склад КАК Склад
ЛЕВОЕ СОЕДИНЕНИЕ Склад.ТоварыНаСкладе КАК ТоварыНаСкладе
ПО Склад.Ссылка = ТоварыНаСкладе.Ссылка
ГДЕ
Склад.Код = &КодСклада";
Запрос.УстановитьПараметр("КодСклада"‚ "S001");
Результат = Запрос.Выполнить;
Для Каждого Строка Из Результат.Выбрать Цикл
Сообщить("Товар: " + Строка.Товар + "‚ Кол-во: " + Строка.Количество);
КонецЦикла;
Добавление и изменение строк
Для изменения ТЧ используется объект ТаблицаЗначений или метод Записать справочника.
// Добавление нового товара в ТЧ "ТоварыНаСкладе"
Склад = Справочники.Склад.НайтиПоКоду("S001");
Если Склад = Неопределено Тогда
Сообщить("Склад не найден");
Возврат;
КонецЕсли;
// Открываем форму в режиме редактирования (опционально)
Склад.ПолучитьОбъект.ТоварыНаСкладе.Добавить;
НоваяСтрока = Склад.ПолучитьОбъект.ТоварыНаСкладе[Склад.ПолучитьОбъект.ТоварыНаСкладе.Количество];
НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоКоду("N100");
НоваяСтрока.Количество = 25;
НоваяСтрока.Серия = "A12345";
// Сохраняем изменения
Склад.Записать;
Удаление строк // Удаляем все строки‚ где количество = 0
Склад = Справочники.Склад.НайтиПоКоду("S001");
Если Склад = Неопределено Тогда
Сообщить("Склад не найден");
Возврат;
КонецЕсли;
ТЧ = Склад.ПолучитьОбъект.ТоварыНаСкладе;
Для i = ТЧ.Количество По 1 Шаг -1 Цикл
Если ТЧ[i].Количество = 0 Тогда
ТЧ.Удалить(i);
КонецЕсли;
КонецЦикла;
Склад.Записать;
Использование Объект.Выбрать для перебора без запросов // Перебор всех строк ТЧ без SQL‑запроса
Склад = Справочники.Склад.НайтиПоКоду("S001");
Если Склад = Неопределено Тогда
Сообщить("Склад не найден");
Возврат;
КонецЕсли;
ТЧ = Склад.ПолучитьОбъект.ТоварыНаСкладе;
Для Каждого Строка ТЧ Цикл
Сообщить("Товар: " + Строка.Товар + "‚ Кол-во: " + Строка.Количество);
КонецЦикла;
Типичные ошибки и способы их устранения - Ошибка «Объект не найден» – проверьте‚ что справочник и код действительно существуют.
- Ошибка «Неверный тип данных» – убедитесь‚ что типы реквизитов ТЧ совпадают с типами полей (например‚ количество – Число).
- Ошибка «Таблица уже содержит запись с таким ключом» – в ТЧ могут быть уникальные индексы; перед добавлением проверьте наличие аналогичной строки.
- Ошибка «Запрос не выполнен: недопустимое имя колонки» – в запросах используйте точные имена реквизитов‚ а не их подписи.
Как отладить? - Включите Отладчик (Ctrl+Alt+F9) и пошагово пройдите код.
- Выведите в журнал
Сообщить значения переменных перед критическими операциями. - Проверьте структуру ТЧ через
Метаданные.Справочник.ИмяТабличнойЧасти.Колонки.
Практические рекомендации - Всегда работайте с объектом справочника через
ПолучитьОбъект‚ если планируете менять ТЧ. - Для массовых операций (добавление/удаление сотен строк) используйте ТаблицаЗначений и метод
Записать один раз – это ускорит процесс. - Если требуется подсчитать итог по колонке‚ используйте метод
Суммировать: - При работе с большими справочниками рекомендуется применять Запросы вместо перебора
Выбрать – это уменьшит нагрузку на сервер. - Не забывайте про транзакции (
НачатьТранзакцию; ... ЗафиксироватьТранзакцию;) при критически важных изменениях.
Контакты для обращений
// Удаляем все строки‚ где количество = 0
Склад = Справочники.Склад.НайтиПоКоду("S001");
Если Склад = Неопределено Тогда
Сообщить("Склад не найден");
Возврат;
КонецЕсли;
ТЧ = Склад.ПолучитьОбъект.ТоварыНаСкладе;
Для i = ТЧ.Количество По 1 Шаг -1 Цикл
Если ТЧ[i].Количество = 0 Тогда
ТЧ.Удалить(i);
КонецЕсли;
КонецЦикла;
Склад.Записать;
Объект.Выбрать для перебора без запросов // Перебор всех строк ТЧ без SQL‑запроса
Склад = Справочники.Склад.НайтиПоКоду("S001");
Если Склад = Неопределено Тогда
Сообщить("Склад не найден");
Возврат;
КонецЕсли;
ТЧ = Склад.ПолучитьОбъект.ТоварыНаСкладе;
Для Каждого Строка ТЧ Цикл
Сообщить("Товар: " + Строка.Товар + "‚ Кол-во: " + Строка.Количество);
КонецЦикла;
Типичные ошибки и способы их устранения - Ошибка «Объект не найден» – проверьте‚ что справочник и код действительно существуют.
- Ошибка «Неверный тип данных» – убедитесь‚ что типы реквизитов ТЧ совпадают с типами полей (например‚ количество – Число).
- Ошибка «Таблица уже содержит запись с таким ключом» – в ТЧ могут быть уникальные индексы; перед добавлением проверьте наличие аналогичной строки.
- Ошибка «Запрос не выполнен: недопустимое имя колонки» – в запросах используйте точные имена реквизитов‚ а не их подписи.
Как отладить? - Включите Отладчик (Ctrl+Alt+F9) и пошагово пройдите код.
- Выведите в журнал
Сообщить значения переменных перед критическими операциями. - Проверьте структуру ТЧ через
Метаданные.Справочник.ИмяТабличнойЧасти.Колонки.
Практические рекомендации - Всегда работайте с объектом справочника через
ПолучитьОбъект‚ если планируете менять ТЧ. - Для массовых операций (добавление/удаление сотен строк) используйте ТаблицаЗначений и метод
Записать один раз – это ускорит процесс. - Если требуется подсчитать итог по колонке‚ используйте метод
Суммировать: - При работе с большими справочниками рекомендуется применять Запросы вместо перебора
Выбрать – это уменьшит нагрузку на сервер. - Не забывайте про транзакции (
НачатьТранзакцию; ... ЗафиксироватьТранзакцию;) при критически важных изменениях.
Контакты для обращений
- Включите Отладчик (Ctrl+Alt+F9) и пошагово пройдите код.
- Выведите в журнал
Сообщитьзначения переменных перед критическими операциями. - Проверьте структуру ТЧ через
Метаданные.Справочник.ИмяТабличнойЧасти.Колонки.
Практические рекомендации - Всегда работайте с объектом справочника через
ПолучитьОбъект‚ если планируете менять ТЧ. - Для массовых операций (добавление/удаление сотен строк) используйте ТаблицаЗначений и метод
Записать один раз – это ускорит процесс. - Если требуется подсчитать итог по колонке‚ используйте метод
Суммировать: - При работе с большими справочниками рекомендуется применять Запросы вместо перебора
Выбрать – это уменьшит нагрузку на сервер. - Не забывайте про транзакции (
НачатьТранзакцию; ... ЗафиксироватьТранзакцию;) при критически важных изменениях.
Контакты для обращений
ПолучитьОбъект‚ если планируете менять ТЧ.Записать один раз – это ускорит процесс.Суммировать: Выбрать – это уменьшит нагрузку на сервер.НачатьТранзакцию; ... ЗафиксироватьТранзакцию;) при критически важных изменениях.Если после изучения материала у вас остались вопросы‚ вы можете связаться с нашей технической поддержкой. Ниже указаны все необходимые контактные данные.
Официальный сайт
https://www.example1c-support.ru
Горячая линия
Телефон (многоканальная): +7 (495) -23‑45‑67 (круглосуточно)
Номера телефонов - Техническая поддержка – +7 (495) -23‑45‑68 (рабочие часы 9:00–18:00 МСК)
- Отдел продаж – +7 (495) -23‑45‑69
- Служба обновлений – +7 (495) -23‑45‑70
Электронный адрес
support@example1c-support.ru
Личный кабинет
Для зарегистрированных пользователей доступен личный кабинет‚ где можно:
- Создавать и отслеживать заявки;
- Скачивать обновления и патчи;
- Получать персональные рекомендации.
Личный приём
При необходимости личного визита в офис‚ запишитесь заранее через форму записи на приём.
График приёма
| День недели | Время |
|---|---|
| Понедельник – Пятница | 09:00 – 18:00 |
| Суббота | 10:00 – 14:00 (по предварительной записи) |
| Воскресенье | Выходной |
Отделы - Отдел технической поддержки – решение проблем с 1С‚ работа с ТЧ‚ настройка запросов.
- Отдел внедрения – помощь в установке и адаптации системы под бизнес‑процессы.
- Отдел разработки – создание кастомных решений‚ доработок и расширений.
- Отдел обучения – проведение вебинаров и семинаров.
Руководство
Контактные лица руководства компании:
- Генеральный директор – Иванов И.И. (ivanov@example1c-support;ru‚ +7 (495) -23‑45‑71)
- Технический директор – Петров П.П. (petrov@example1c-support.ru‚ +7 (495) -23‑45‑72)
- Директор по продажам – Сидорова С.С. (sidorova@example1c-support.ru‚ +7 (495) -23‑45‑73)
Отзывы
Мы ценим обратную связь. Оставить отзыв можно в нескольких формах:
- Через онлайн‑форму на сайте.
- Отправив письмо на feedback@example1c-support.ru.
- Заполнив анкету в личном кабинете после закрытия заявки.
Ваши отзывы помогают нам улучшать сервис и предлагать новые функции.
Обращение к табличной части справочника – одна из базовых‚ но в то же время мощных возможностей 1С:Предприятие. Правильное использование методов ПолучитьОбъект‚ Выбрать‚ запросов и транзакций позволяет эффективно вести учёт‚ проводить инвентаризацию и автоматизировать бизнес‑процессы.
Если вы столкнётесь с трудностями‚ помните‚ что наша служба поддержки готова помочь в любое время – см. раздел Контакты для обращений выше.
Удачной разработки!