КолонкаТаблицыЗначений.Имя

Свойства · Name

Тип: Строка. Содержит строку с именем колонки.

Полное описание, параметры и ограничения

КолонкаТаблицыЗначений.Имя (ValueTableColumn.Name)

КолонкаТаблицыЗначений (ValueTableColumn)

Имя (Name)

Доступен, начиная с версии 8.0.

Использование:
Чтение и запись.
Описание:
Тип: Строка.
Содержит строку с именем колонки.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

В своей транзакции получить остаток и два вида оборотов по проводкам 800

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

Где и как запускать

Полный серверный общий модуль собственной конфигурации УчебнаяБухгалтерия85. Нет работы с регистрами БП/КА2.

Подготовка

  1. Создайте НОВУЮ пустую файловую базу с именем корневой конфигурации УчебнаяБухгалтерия85, управляемым режимом блокировок. Это отдельный стенд, не УТ/КА2/УНФ/БП и не копия с рабочими данными.

  2. Планы счетов → УчебныеСчета85: код Строка 20, Максимальное количество субконто 0, без флагов учёта. Создайте два предопределённых негрупповых счёта: УчебныйАктив, код DEMO-A, вид Активный; УчебныйПассив, код DEMO-P, вид Пассивный. Оба не забалансовые. Не создавайте счёт 41/60 и не называйте опыт реальным планом бухучёта.

  3. Документы → УчебнаяОперация85: номер Строка 40, автонумерация выключена. Без пользовательских реквизитов, проведения, обработчиков, подписок, планов обмена и внешних вызовов.

  4. Регистры бухгалтерии → УчебныеПроводки85: план УчебныеСчета85, Корреспонденция включена. Единственное измерение МеткаОперации: Строка 80, Балансовый включён, проверка заполнения Показывать ошибку. Единственный ресурс Сумма: Число 15,2, Балансовый включён. Реквизитов нет. Длина уточнения периода 3.

  5. Создайте второй регистр УчебныеОдносторонние85 с теми же планом, измерением, ресурсом и длиной уточнения периода, но Корреспонденция выключена. У обоих единственный регистратор УчебнаяОперация85. Модули наборов и документа пустые, кроме отдельной экспортной учебной процедуры в последнем уроке.

  6. Обновите конфигурацию базы данных и убедитесь, что предопределённые счета созданы как данные. Создайте серверный общий модуль УчебнаяБухгалтерияПримеры с флагом Сервер. Вставьте весь модуль одного урока, вызовите УчебнаяБухгалтерияПримеры.ВыполнитьПример() из серверной команды своей обработки.

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

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

  9. В обоих собственных регистрах использование итогов включено. Для урока выборки по метке у измерения МеткаОперации включите Индексировать, затем обновите конфигурацию базы данных.

  10. Метка каждой задачи содержит новый UUID. Не подставляйте DEMO-BOOK или метку другого опыта: отчёт должен читать только собственные временные проводки.

  11. План без субконто: фактические вызовы Остатки имеют четыре аргумента, Обороты и ОборотыДтКт — пять. В плане с субконто набор аргументов будет другим.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Документы.Количество() <> 1
        ИЛИ Метаданные.ПланыСчетов.Количество() <> 1
        ИЛИ Метаданные.РегистрыБухгалтерии.Количество() <> 2
        ИЛИ Метаданные.Документы.Найти("УчебнаяОперация85") = Неопределено
        ИЛИ Метаданные.ПланыСчетов.Найти("УчебныеСчета85") = Неопределено Тогда
        ВызватьИсключение "Разрешены только собственные документ, план счетов и два регистра";
    КонецЕсли;
    Если Метаданные.ПланыСчетов.УчебныеСчета85.МаксКоличествоСубконто <> 0 Тогда
        ВызватьИсключение "В этом опыте план счетов без субконто";
    КонецЕсли;
    Для Каждого ИмяРегистра Из СтрРазделить("УчебныеПроводки85,УчебныеОдносторонние85", ",") Цикл
        Описание = Метаданные.РегистрыБухгалтерии.Найти(ИмяРегистра);
        Если Описание = Неопределено Тогда
            ВызватьИсключение "Не найден собственный регистр " + ИмяРегистра;
        КонецЕсли;
        Если Описание.Корреспонденция <> (ИмяРегистра = "УчебныеПроводки85")
            ИЛИ Описание.ПланСчетов.Имя <> "УчебныеСчета85"
            ИЛИ Описание.Измерения.Количество() <> 1
            ИЛИ Описание.Ресурсы.Количество() <> 1
            ИЛИ Описание.Реквизиты.Количество() <> 0
            ИЛИ Описание.Измерения.Найти("МеткаОперации") = Неопределено
            ИЛИ Описание.Ресурсы.Найти("Сумма") = Неопределено
            ИЛИ Описание.ДлинаУточненияПериода <> 3 Тогда
            ВызватьИсключение "Схема собственного регистра отличается от учебной";
        КонецЕсли;
    КонецЦикла;
    СчетДебета = ПланыСчетов.УчебныеСчета85.УчебныйАктив;
    СчетКредита = ПланыСчетов.УчебныеСчета85.УчебныйПассив;
    Если СчетДебета.Пустая() ИЛИ СчетКредита.Пустая() Тогда
        ВызватьИсключение "Нужны два собственных предопределённых счёта";
    КонецЕсли;
    Если СчетДебета.ПолучитьОбъект() = Неопределено ИЛИ СчетКредита.ПолучитьОбъект() = Неопределено Тогда
        ВызватьИсключение "Данные собственных счетов не созданы";
    КонецЕсли;
    Менеджер = РегистрыБухгалтерии.УчебныеПроводки85;
    Если НЕ Менеджер.ПолучитьИспользованиеИтогов() Тогда
        ВызватьИсключение "У собственного регистра должны быть включены итоги; урок их автоматически не включает";
    КонецЕсли;
    Начало = Дата(2026, 9, 15, 0, 0, 0);
    Конец = Дата(2026, 9, 16, 0, 0, 0);
    СвояМетка = "REPORT-" + Строка(Новый УникальныйИдентификатор);
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Урок нельзя запускать внутри чужой транзакции";
    КонецЕсли;
    НачатьТранзакцию();
    Попытка
        Документ = Документы.УчебнаяОперация85.СоздатьДокумент();
        Документ.Дата = Дата(2026, 9, 15, 10, 0, 0);
        Документ.Номер = "R-" + Строка(Новый УникальныйИдентификатор);
        Документ.Записать();
        СвояСсылка = Документ.Ссылка;
        Набор = СвойНаборПроводок(СвояСсылка, СчетДебета, СчетКредита);
        Для Каждого Запись Из Набор Цикл
            Запись.МеткаОперации = СвояМетка;
        КонецЦикла;
        Набор.Записать(Истина);
        ОтборОстатка = Новый Структура("Счет,МеткаОперации", СчетДебета, СвояМетка);
        ОтборПар = Новый Структура("СчетДт,СчетКт,МеткаОперации", СчетДебета, СчетКредита, СвояМетка);
        НаНачалоДня = Менеджер.Остатки(Дата(2026, 9, 15, 11, 0, 0), ОтборОстатка, "Счет,МеткаОперации", "Сумма");
        НаСледующийДень = Менеджер.Остатки(Конец, ОтборОстатка, "Счет,МеткаОперации", "Сумма");
        Обороты = Менеджер.Обороты(Начало, Конец, ОтборОстатка, "Счет,МеткаОперации", "Сумма");
        Пары = Менеджер.ОборотыДтКт(Начало, Конец, ОтборПар, "СчетДт,СчетКт,МеткаОперации", "Сумма");
        Сообщить(НаНачалоДня.Количество() = 0);
        Сообщить(НаСледующийДень.Количество() = 1);
        Сообщить(Обороты.Количество() = 1);
        Сообщить(Пары.Количество() = 1);
        Сообщить(ЕстьСвоеЧислоВТаблице(НаСледующийДень, 800));
        Сообщить(ЕстьСвоеЧислоВТаблице(Обороты, 800));
        Сообщить(ЕстьСвоеЧислоВТаблице(Пары, 800));
        ПоказатьСвоюТаблицу("Остаток активного счёта", НаСледующийДень);
        ПоказатьСвоюТаблицу("Обороты счёта", Обороты);
        ПоказатьСвоюТаблицу("Обороты пары Дт/Кт", Пары);
        ОтменитьТранзакцию();
    Исключение
        Если ТранзакцияАктивна() Тогда
            ОтменитьТранзакцию();
        КонецЕсли;
        ВызватьИсключение;
    КонецПопытки;
    После = Менеджер.СоздатьНаборЗаписей();
    После.Отбор.Регистратор.Установить(СвояСсылка);
    После.Прочитать();
    Сообщить(После.Количество() = 0);
    Сообщить(СвояСсылка.ПолучитьОбъект() = Неопределено);
КонецПроцедуры

Функция СвойНаборПроводок(СвояСсылка, СчетДебета, СчетКредита)
    Набор = РегистрыБухгалтерии.УчебныеПроводки85.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(СвояСсылка);
    Для Каждого СуммаСтроки Из СтрРазделить("750,50", ",") Цикл
        Запись = Набор.Добавить();
        ЗаполнитьСвоюПроводку(Запись, СвояСсылка, СчетДебета, СчетКредита, Число(СуммаСтроки));
    КонецЦикла;
    Возврат Набор;
КонецФункции

Процедура ЗаполнитьСвоюПроводку(Запись, СвояСсылка, СчетДебета, СчетКредита, СуммаСтроки)
    Запись.Период = Дата(2026, 9, 15, 10, 0, 0);
    Запись.Регистратор = СвояСсылка;
    Запись.Активность = Истина;
    Запись.СчетДт = СчетДебета;
    Запись.СчетКт = СчетКредита;
    Запись.МеткаОперации = "DEMO-BOOK";
    Запись.Сумма = СуммаСтроки;
КонецПроцедуры

Процедура ПоказатьСвоюТаблицу(Заголовок, Таблица)
    Сообщить(Заголовок + ": строк " + Строка(Таблица.Количество()));
    Для Каждого СтрокаТаблицы Из Таблица Цикл
        Для Каждого Колонка Из Таблица.Колонки Цикл
            Сообщить(Колонка.Имя + " = " + Строка(СтрокаТаблицы[Колонка.Имя]));
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Функция ЕстьСвоеЧислоВТаблице(Таблица, Ожидаемое)
    Для Каждого СтрокаТаблицы Из Таблица Цикл
        Для Каждого Колонка Из Таблица.Колонки Цикл
            Значение = СтрокаТаблицы[Колонка.Имя];
            Если ТипЗнч(Значение) = Тип("Число") Тогда
                Если Значение = Ожидаемое Тогда
                    Возврат Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    Возврат Ложь;
КонецФункции

Разбор по шагам

  1. Записать только новый собственный документ и две собственные проводки с уникальной меткой внутри своей транзакции.

  2. Получить Остатки на Дата(...15 сентября,11 часов): для параметра типа Дата это начало дня, движения 10 часов туда ещё не входят.

  3. Получить Остатки на следующий день и два вида оборотов за период. Отбор задаёт собственную метку и необходимые стороны счетов.

  4. Проверить одну итоговую строку каждого отчёта и наличие собственного числового результата 800.

  5. Обойти фактические колонки результата и вывести реальные имена. Не называть суффиксы колонок метода именами виртуальной таблицы запроса по памяти.

  6. Отменить свою транзакцию и повторно проверить отсутствие собственного документа и его движений.

Как проверить результат

  1. Первые семь булевых сообщений Истина: пустое начало дня, по одной строке трёх отчётов и собственная сумма 800 в них.

  2. После вывода фактических колонок последние две проверки Истина: документ и движения отменены.

Ожидаемый результат

Реальная связь даты, записи и табличных результатов разобрана на собственном активном счёте.

На что обратить внимание

  1. Дата с временем в Остатки не означает срез до указанного часа: здесь метод трактует Дата как начало дня.

  2. Возвращённые колонки необходимо изучать по фактической схеме; суффиксы виртуальных таблиц запроса нельзя автоматически переносить на менеджерские методы.

  3. Числовая проверка 800 относится только к этому одному ресурсу и паре учебных счетов, не универсальному бухгалтерскому отчёту.

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

Посчитать регионы и отличить моду от средней суммы

У трёх вымышленных заказов регион Север, у одного Юг. Читаем частоты и доли, не выдумывая порядок строк таблицы результата.

Где и как запускать

Полный модуль управляемой формы собственной внешней обработки, только толстый клиент Windows.

Подготовка

  1. Собственная учебная база 8.5.1.1343, толстый клиент Windows. Создайте внешнюю обработку с управляемой формой, командой Выполнить и её кнопкой. Вставьте весь модуль выбранного урока.

  2. Методы построителя отчёта доступны только толстому клиенту, хотя сам тип упомянут и в других контекстах. Не переносите этот полный модуль в тонкий/веб-клиент или серверный обработчик.

  3. Для отдельного урока АнализДанных без построителя используется собственный серверный общий модуль УчебнаяСтатистика с флагом Сервер и вызов УчебнаяСтатистика.ВыполнитьПример() из серверной команды.

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

  5. Это учебный расчёт на маленьком наборе. Он не даёт основания прогнозировать реальные продажи или принимать бизнес-решения без проверки качества исходных данных.

&НаКлиенте
Процедура Выполнить(Команда)
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Таблица.Колонки.Добавить("Регион", Новый ОписаниеТипов("Строка"));
    Таблица.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    Для Номер = 1 По 4 Цикл
        СтрокаТаблицы = Таблица.Добавить();
        СтрокаТаблицы.Код = "guide-order-" + Строка(Номер);
        СтрокаТаблицы.Регион = ?(Номер = 4, "Юг", "Север");
        СтрокаТаблицы.Сумма = Номер * 100;
    КонецЦикла;
    Построитель = Новый ПостроительОтчетаАнализаДанных;
    Построитель.ТипАнализа = Тип("АнализДанныхОбщаяСтатистика");
    Построитель.ИсточникДанных = Таблица;
    Построитель.ОтображатьСостояние = Ложь;
    Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
    Анализатор = Построитель.ПолучитьАнализ();
    Если ТипЗнч(Анализатор) <> Тип("АнализДанных") Тогда
        ВызватьИсключение "Ожидался документированный анализатор построителя";
    КонецЕсли;
    Настройки = Построитель.НастройкаКолонок;
    Код = Настройки.Найти("Код");
    Регион = Настройки.Найти("Регион");
    Сумма = Настройки.Найти("Сумма");
    Если Код = Неопределено ИЛИ Регион = Неопределено ИЛИ Сумма = Неопределено Тогда
        ВызватьИсключение "Анализатор не создал ожидаемые три настройки собственных колонок";
    КонецЕсли;
    Код.ТипКолонки = ТипКолонкиАнализаДанныхОбщаяСтатистика.Неиспользуемая;
    Регион.ТипКолонки = ТипКолонкиАнализаДанныхОбщаяСтатистика.Входная;
    Регион.ВидДанных = ВидДанныхАнализа.Дискретные;
    Сумма.ТипКолонки = ТипКолонкиАнализаДанныхОбщаяСтатистика.Входная;
    Сумма.ВидДанных = ВидДанныхАнализа.Непрерывные;
    Построитель.Выполнить();
    Результат = Построитель.Результат;
    Если ТипЗнч(Результат) <> Тип("РезультатАнализаДанныхОбщаяСтатистика") Тогда
        ВызватьИсключение "Ожидался результат общей статистики";
    КонецЕсли;
    ПолеРегиона = Неопределено;
    Для Каждого Поле Из Результат.ДискретныеПоля Цикл
        Если Поле.Имя = "Регион" Тогда
            ПолеРегиона = Поле;
        КонецЕсли;
    КонецЦикла;
    Если ПолеРегиона = Неопределено Тогда
        ВызватьИсключение "Регион не попал в дискретные поля";
    КонецЕсли;
    Сообщить(ПолеРегиона.Количество = 4);
    Сообщить(ПолеРегиона.КоличествоУникальных = 2);
    Сообщить(ПолеРегиона.Мода = "Север");
    Частоты = ПолеРегиона.ТаблицаЧастот;
    Сообщить(Частоты.Количество() = 2);
    ИмяЗначения = ИмяУчебнойКолонки(Частоты, "Значение", "Value");
    ИмяЧастоты = ИмяУчебнойКолонки(Частоты, "Частота", "Frequency");
    ИмяОтносительной = ИмяУчебнойКолонки(Частоты, "ОтносительнаяЧастота", "RelativeFrequency");
    ИмяНакопленной = ИмяУчебнойКолонки(Частоты, "НакопленнаяЧастота", "CumulativeFrequency");
    ИмяНакопленнойОтносительной = ИмяУчебнойКолонки(Частоты, "НакопленнаяОтносительнаяЧастота", "CumulativeRelativeFrequency");
    СуммаЧастот = 0;
    СуммаДолей = 0;
    Для Каждого СтрокаЧастоты Из Частоты Цикл
        Категория = СтрокаЧастоты[ИмяЗначения];
        Частота = СтрокаЧастоты[ИмяЧастоты];
        Доля = СтрокаЧастоты[ИмяОтносительной];
        Если Категория = "Север" Тогда
            Сообщить(Частота = 3 И Доля = 0.75);
        ИначеЕсли Категория = "Юг" Тогда
            Сообщить(Частота = 1 И Доля = 0.25);
        Иначе
            ВызватьИсключение "Неожиданная категория собственной таблицы";
        КонецЕсли;
        СуммаЧастот = СуммаЧастот + Частота;
        СуммаДолей = СуммаДолей + Доля;
        Сообщить(СтрШаблон("%1: накоплено=%2; накопленная доля=%3", Категория, СтрокаЧастоты[ИмяНакопленной], СтрокаЧастоты[ИмяНакопленнойОтносительной]));
    КонецЦикла;
    Сообщить(СуммаЧастот = 4);
    Сообщить(СуммаДолей = 1);
КонецПроцедуры

&НаКлиенте
Функция ИмяУчебнойКолонки(Таблица, Русское, Английское)
    Колонка = Таблица.Колонки.Найти(Русское);
    Если Колонка = Неопределено Тогда
        Колонка = Таблица.Колонки.Найти(Английское);
    КонецЕсли;
    Если Колонка = Неопределено Тогда
        ВызватьИсключение "В документированной таблице частот нет колонки " + Русское;
    КонецЕсли;
    Возврат Колонка.Имя;
КонецФункции

Разбор по шагам

  1. ДискретныеПоля содержат описания категориальных колонок. Ищем Регион по имени, не по случайному индексу результата.

  2. Количество значений=4, уникальных регионов=2, мода=Север. Для этих данных максимум частоты единственный, поэтому нет неоднозначной моды.

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

  4. Север имеет частоту 3 и долю 0.75, Юг — 1 и 0.25. Сумма частот=4, сумма обычных долей=1.

  5. Накопленные частоты выводятся в фактическом порядке платформы. Их не складываем как обычные частоты и не обещаем, какой регион окажется первым.

Как проверить результат

  1. Восемь сравнений ожидаются Истина; две подписанные строки накопленных значений диагностические.

  2. В итоговом отчёте частоты 3/1, доли 75%/25%. Мода региона не является средним арифметическим сумм.

Ожидаемый результат

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

На что обратить внимание

  1. Не складывать накопленные частоты, чтобы получить общее число строк: тогда возникает двойной счёт.

  2. При равной максимальной частоте нескольких категорий требуется отдельно проверить контракт моды; этот набор выбран без такой неоднозначности.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.