1с 7 создать журнал как таблица значений
Создает объект агрегатного типа данных и возвращает ссылку на него.
Англоязычный синоним:
Строковое выражение, значение которого содержит имя агрегатного типа данных, объявленного в конфигураторе.
Возвращаемое значение:
Ссылка на созданный объект агрегатного типа данных.
Функция СоздатьОбъект создает объект агрегатного типа данных и возвращает ссылку на него. Данная функция обычно используется одновременно с неявным определением переменной и присвоением ей ссылки на объект агрегатного типа данных.
Замечание. Объекты, такие как документ и справочник, созданные при помощи функции СоздатьОбъект , изначально не определены, т. е. не содержат никакого значения. Чтобы начать с ними работать, их предварительно надо позиционировать (установить на конкретный документ или элемент справочника). Для документов позиционирование выполняется при помощи методов НайтиДокумент , НайтиПоНомеру , ПолучитьДокумент . Для справочников позиционирование выполняется при помощи методов НайтиЭлемент , НайтиПоКоду , ПолучитьЭлемент .
СтатусВозврата
Установить/определить статуса возврата предопределенной процедуры.
Англоязычный синоним:
Необязательный параметр. Числовое выражение. Если задано значение 1, то устанавливается статус возврата — Выполнить Действие. Если задано значение 0, то устанавливается статус возврата — Отменить Действие. Если параметр опущен, то статус возврата предопределенной процедуры не меняется.
Возвращаемое значение:
Число 1 — если статус возврата — Выполнить Действие;
Число 0 — если статус возврата — Отменить Действие.
Применять функцию СтатусВозврата имеет смысл только в теле предопределенных процедур. При помощи функции СтатусВозврата можно установить или прочитать текущее значение статуса возврата конкретной предопределенной процедуры, где была вызвана данная функция.
Значение статуса возврата предопределенной процедуры используется системой при завершении отработки любой предопределенной процедуры, чтобы определить, выполнять ли системно событие, которое вызвало данную предопределенную процедуру.
Замечание: Начальное значение статуса возврата предопределенной процедуры равно 1 (Выполнить Действие), которое устанавливается системой при вызове предопределенной процедуры.
В тексте программного модуля возможно использование данного оператора как процедуры или как функции. При использовании в качестве функции, возвращаемое значение соответствует текущему статусу возврата предопределенной процедуры, которое было до вызова данной функции. В данном случае параметр < Статус >можно опускать.
Если параметр < Статус >задан явно, то после выполнения данной функции статус возврата установится в заданное значение. Пример:
* Если в предопределенной процедуре ПриЗаписи установить статус возврата — 0 (например, если неверно заполнены реквизиты), то документ не будет записываться.
Если Клиент.Выбран() = 0 Тогда
Предупреждение("Запись отменена! Не задан клиент!");
* Если в предопределенной процедуре ВводНаОсновании установить статус возврата — 0, то ввод нового документа будет отменен и форма нового документа не откроется.
Если (ДокВид = "Счет") ИЛИ (ДокВид = "Счет_фактура")
ИЛИ (ДокВид = "РасходнаяКредит") ИЛИ (ДокВид = РасходнаяРеализ") Тогда
Основание = ДокВид + " № " + ДокОснование.НомерДок;
Предупреждение("Недопустимый вид документа основания!");
См. также: «Системные предопределенные процедуры»
ОткрытьФорму
Выполняет открытие формы из'встроенного языка.
Англоязычный синоним:
В зависимости от типа открываемой формы используется различные значения данного параметра.
Необязательный параметр. Имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр.
После исполнения данного метода система вернет в данную переменную контекст открытой формы (см. Передача контекста в качестве параметра). С помощью значения этого контекста можно затем произвольно манипулировать открытой формой, пока она открыта. Пока форма открыта, тип значения данного параметра равен 100 (см. ТипЗначения), если закрыта — 0.
В зависимости от типа открываемой формы используется различный состав и значения остальных параметров.
Возвращаемое значение:
Число 1 — если действие выполнено;
Число 0 — если действие не выполнено.
Функция ОткрытьФорму позволяет открыть форму документа, справочника, журнала документов, и других форм используемых в системе 1С:Предприятие.
Замечание. Метод ОткрытьФорму нельзя вызывать в «теле» глобального модуля (части глобального модуля, расположенной после последней процедуры). Для его вызова при старте программы следует размещать его в процедуре ПриНачалеРаботыСистемы .
Для открытия разных форм следует использовать разный синтаксис вызова данной функции:
Открытие формы существующего документа.
Значение типа «Документ».
Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.
Открытие формы нового документа
"Документ.ХХХХХ", где ХХХХХ — идентификатор вида документа;
Необязательный параметр. Выражение типа «документ», задающий документ-основание для открытия формы ввода нового документа в режиме ввода на основании.
Открытие формы журнала документов.
"Журнал . ХХХХХ. YYYYY", где ХХХХХ — идентификатор журнала документов; YYYYY — идентификатор формы журнала документов;
Кроме того, в качестве идентификатора журнала можно указывать идентификатор конкретного вида документа, тогда откроется журнал просмотра документов именно указанного вида, например:
Открытие формы журнала подчиненных документов.
Строковое выражение. "Журнал.Подчиненные";
Значение типа «документ», задающее документ, для которого будут выводиться подчиненные документы.
Открытие формы существующего элемента справочника.
Значение типа «Справочник».
Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.
Открытие формы нового элемента справочника.
"Элемент. ХХХХХ", где ХХХХХ — вид справочника;
Необязательный параметр. Выражение типа «справочник», задающий родительскую группу для открытия формы ввода нового элемента (группы) справочника.
Необязательный параметр. Числовое выражение, задающее форму ввода нового элемента (группы) справочника: 1 — ввод новой группы, 0 — ввод нового элемента. По умолчанию — 0.
Необязательный параметр. Выражение типа «справочник», задающий элемент справочника-владельца для открытия формы ввода нового элемента (группы) подчиненного справочника.
Открытие формы списка справочника.
"Справочник.ХХХХХ.YYYYY", где ХХХХХ — вид справочника, YYYYY — имя выбранной формы списка справочника;
Открытие формы отчета.
Строковое выражение. "Отчет. ХХХХХ" , где ХХХХХ — вид отчета;
Открытие формы обработки.
Строковое выражение. "Обработка.ХХХХХ", где ХХХХХ — вид обработки;
Открытие формы внешнего отчета.
Строковое выражение. "Отчет";
Строковое выражение — полное имя файла внешнего отчета.
Открытие формы журнала расчетов.
"ЖурналРасчетов. ХХХХХ", где ХХХХХ — вид журнала расчетов;
Открытие формы существующего счета.
Значение типа «Счет».
Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.
Открытие формы нового счета.
"Счет. ХХХХХ" , где ХХХХХ — идентификатор плана счетов;
Открытие формы списка счетов (плана счетов).
"ПланСчетов.ХХХХ.YYYY", где ХХХХХ — идентификатор плана счетов; YYYYY — идентификатор формы плана счетов.
Открытие формы существующей операции.
Строковое выражение. "Операция".
Значение типа «документ», операция которого будет открываться.
Необязательный параметр. Числовое выражение — номер проводки, на которую нужно позиционировать курсор при открытии операции.
Необязательный параметр. Числовое выражение — номер корреспонденции указанной проводки, на которую нужно позиционировать курсор при открытии операции.
Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.
Открытие формы ввода новой операции.
Строковое выражение. "Операция".
Необязательный параметр. Строковое выражение — наименование типовой операции, которую следует использовать при вводе новой операции. Если значение не задано или пустое, то ввод операции выполняется без использования типовой.
Открытие формы журнала операций.
"ЖурналОпераций.YYYYY", где YYYYY — идентификатор формы журнала операций;
Значение типа «документ», операция которого будет использована для первоначального позиционирования.
Номер проводки, которая будет использована для первоначального позиционирования курсора, если в журнале операций используется режим показа проводок.
Номер корреспонденции, которая будет использована для первоначального позиционирования курсора, если в журнале операций используется режим показа проводок.
Открытие формы журнала проводок.
"ЖурналПроводок.YYYYY", где YYYYY — идентификатор формы журнала проводок;
Значение типа «документ», операция которого будет использована для первоначального позиционирования.
Необязательный параметр. Числовое выражение — номер проводки операции, на которую нужно в начале позиционироваться.
Необязательный параметр. Числовое выражение — номер корреспонденции указанной проводки, на которую нужно в начале позиционироваться.
Открытие окна истории значений периодических констант, реквизитов справочников и счетов.
Идентификатор периодической константы, как он задан в конфигураторе.
Идентификатор справочника, как он задан в конфигураторе.
Идентификатор периодического реквизита справочника, как он задан в конфигураторе.
Элемент справочника, для периодического реквизита которого открывается окно истории значений.
Счет, для которого открывается окно истории значений.
Необязательный параметр. Дата, на которую нужно установить курсор при открытии окна.
ОткрытьФормуМодально
Выполняет открытие модальной формы из встроенного языка.
Англоязычный синоним:
Параметры: см. параметры метода ОткрытьФорму
Возвращаемое значение: см. метод ОткрытьФорму .
Функция ОткрытьФормуМодально позволяет открыть модальную форму документа, справочника, журнала документов, и других форм используемых в системе 1С:Предприятие. Синтаксис и описание см. метод ОткрытьФорму .
См. также: ОткрытьФорму
ТипЗначения
Получить тип значения данных.
Англоязычный синоним:
< 3начение >Выражение, тип данных значения которого надо определить.
Возвращаемое значение:
Функция возвращает числовое значение:
0 — неопределенный тип данных;
1 — числовой тип данных;
2 — строковый тип данных;
3 — тип данных — дата;
10 — агрегатный тип данных «Перечисление»;
11 — агрегатный тип данных «Справочник»;
12 — агрегатный тип данных «Документ»;
13 — агрегатный тип данных «Календарь»;
14 — агрегатный тип данных «ВидРасчета»;
15 — агрегатный тип данных «Счет»;
16 — агрегатный тип данных «ВидСубконто»;
17 — агрегатный тип данных «ПланСчетов»;
100 — так называемый внешний объект. В этот класс попадают все агрегатные объекты, не вошедшие в вышеперечисленный список, такие как «Текст», «Таблица», «Запрос», «ЖурналРасчетов» и т. п.
Функция ТипЗначения определяет, к какому типу данных принадлежит переданный параметр < 3начение >и возвращает числовой результат:
Если ТипЗначения(Код)<>1 Тогда
Предупреждение("Код имеет не числовой тип . ");
ТипЗначенияСтр
Получить строковое обозначение типа данных.
Англоязычный синоним:
< 3начение >Выражение, тип данных значения которого надо определить.
Возвращаемое значение:
Функция возвращает строковое значение в русскоязычном или в англоязычном написании — в зависимости от текущей установки основного языка конфигурации:
Форум
Создание таблицы значений
Таблица значений - это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
ТабЗнач.НоваяКолонка("Номер");
ТабЗнач.НоваяКолонка("Сотрудник");
ТабЗнач.НоваяКолонка("Должность");
ТабЗнач.НоваяКолонка("Оклад");
//можно указать тип данных каждой колонки
//если тип данных колонки не указан, то можно хранить данные любого типа
Синтаксис: НоваяКолонка(, , , , , , , )
ТабЗнач.НоваяКолонка("Номер","Число",10,0);
ТабЗнач.НоваяКолонка("Сотрудник","Справочник.Сотрудники");
ТабЗнач.НоваяКолонка("Должность","Справочник.Должности");
ТабЗнач.НоваяКолонка("Оклад","Число",10,2);
Добавление строк в таблицу значений
ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 1;
ТабЗнач.Сотрудник = "Иванов Иван Иванович"; //следите за типом колонки!
ТабЗнач.Должность = "Программист";
ТабЗнач.Оклад = 20000;
ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 2;
ТабЗнач.Сотрудник = "Петров Петр Петрович";
ТабЗнач.Должность = "Бухгалтер";
ТабЗнач.Оклад = 10000;
//обычно строки добавляются в цикле
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
. ТабЗнач.НоваяСтрока();
. ТабЗнач.Номер = СпрСотр.Код;
. ТабЗнач.Сотрудник = СпрСотр.ТекущийЭлемент(); //следите за типом колонки!
. ТабЗнач.Должность = СпрСотр.Должность;
. ТабЗнач.Оклад = СпрСотр.Оклад;
КонецЦикла;
Перебор строк таблицы значений
ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Сообщить(ТабЗнач.Сотрудник);
КонецЦикла;
2-й способ.
Для НомерСтроки = 1 По ТабЗнач.КоличествоСтрок() Цикл
. ТабЗнач.ПолучитьСтрокуПоНомеру(НомерСтроки);
. Сообщить(ТабЗнач.Сотрудник);
КонецЦикла;
Сортировка таблицы значений
//сортировать по должности по возрастанию
ТабЗнач.Сортировать("Должность+");
//сортировать по должности по возрастанию, а внутри должности по убыванию оклада
ТабЗнач.Сортировать("Должность+,Оклад-");
Поиск в таблице значений
Синтаксис: НайтиЗначение(,,)
Возвращает число: 0 - значение не найдено; 1 - значение найдено
Если указан параметр , то поиск производится только по заданной строке
Если указан параметр , то поиск производится только по заданной колонке
номстр = 0;
Если ТабЗнач.НайтиЗначение (10000, номстр, "Оклад") = 1 Тогда
. ТабЗнач.ПолучитьСтрокуПоНомеру(номстр);
. Сообщить(ТабЗнач.Сотрудник);
КонецЕсли;
Итоги и группировка таблицы значений
//получить итог по колонке можно методом Итог
ВсеОклады = ТабЗнач.Итог("Оклад")
//часто требуется группировать строки и подсчитывать итоги по группам,
//в этом случае применяется метод Свернуть
//проссумировать оклады по каждой должности
ТабЗнач.Свернуть("Должность","Оклад");
//Можно группировать и суммировать сразу по нескольким колонкам
ТабЗнач.Свернуть("Категория, Должность","Оклад,Налог");
Удаление строк и колонок из таблицы значений
ТабЗнач.Очистить(); //очистить таблицу значений и удалить колонки
ТабЗнач.УдалитьСтроки(); //удаляет все строки (колонки сохраняются)
ТабЗнач.УдалитьСтроку(); //удаляет текущую строку
ТабЗнач.УдалитьСтроку(3); //удаляет 3-ю строку
ТабЗнач.УдалитьКолонку("Оклад"); //удаляет колонку Оклад
ТабЗнач.УдалитьКолонку(2); //удаляет 2-ю колонку
ВНИМАНИЕ
Часто требуется удалить строки, удовлетворяющие определенному условию.
Так как при удалении строки из таблицы значений следующая строка становится текущей,
то указанная ниже программа может удалить НЕ ВСЕ необходимые строки.
//ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ .
ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Если Тогда
. ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей,
. КонецЕсли;
КонецЦикла;
В этом случае я рекомендую использовать следующий прием:
ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
~начало:
. Если Тогда
. ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей
. Если ТабЗнач.НомерСтроки<>0 Тогда
. Перейти ~начало;
. КонецЕсли;
. КонецЕсли;
КонецЦикла;
А вот еще один правильный алгоритм, предложенный Wlad:
ТабЗнач.выбратьстроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Пока () и (ТабЗнач.НомерСтроки<>0) Цикл
. ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей
. КонецЦикла;
КонецЦикла;
Таблица значений как элемент диалога
Таблица значений может использоваться в экранных формах как элемент диалога с пользователем.
//установить курсор на указанную колонку или можно узнать, где находится курсор
ТабЗнач.ТекущаяКолонка(НоваяКолонка,ТекКолонка);
//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = ТабЗнач.ТекущаяСтрока(НовСтрока);
ТабЗнач.ВидимостьКолонки("Оклад",0); //скрыть колонку Оклад
ТабЗнач.ВидимостьКолонки("Должность, Сотрудник",1); //показать колонки Должность и Сотрудник
ТабЗнач.ВидимостьКолонки("Оклад",1,1); //показать колонку Оклад в 1-й позиции
//можно зафиксировать верхние строки и левые колонки для удобства прокрутки таблицы значений в диалоге
ТабЗнач.Фиксировать(КолСтрок,КолКолонок);
Методы УстановитьЗначение и ПолучитьЗначение
Эти методы позволяют обращаться к данным в таблице значений для чтения и записи.
Они могут пригодиться в особых случаях при написании универсальных программ (мастеры отчетов и т.д.).
ТабЗнач.НоваяСтрока();
ТабЗнач.УстановитьЗначение(1,"Номер",100);
ТабЗнач.УстановитьЗначение(1,"Сотрудник","Иванов Иван Иванович");
ТабЗнач.УстановитьЗначение(1,3,10000); //обращение к 1-й строке и 3-й колонке ("Оклад")
Номер = ТабЗнач.ПолучитьЗначение(1,"Номер");
ФИО = ТабЗнач.ПолучитьЗначение(1,"Сотрудник");
Оклад = ТабЗнач.ПолучитьЗначение(1,3); //обращение к 1-й строке и 3-й колонке "Оклад"
Выгрузка таблицы значений
//выгрузить 10 сотрудников с наибольшими окладами в новую таблицу значений
ТабЗнач.Сортировать("Оклад-");
ТабЗнач.Выгрузить(НоваяТабЗнач,1,10,"Сотрудник,Оклад");
ТаблицаЗначений — это программный объект встроенного языка, позволяющий хранить произвольные данные в табличном виде. Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали.
Строки и колонки имеют последовательную целочисленную нумерацию. Кроме этого, колонкам можно присваивать строковые идентификаторы, удовлетворяющие требованиям, выдвигаемым к идентификаторам языка. Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом колонки. Если тип не задан, в ячейке можно хранить значения произвольного типа.
Таблица значений является полностью динамическим объектом, т.к. Вы можете манипулировать не только строками таблицы, добавляя и\или удаляя их, но и колонками.
Таблица значений используется в двух случаях:
- При работе с формами: при размещении на форме элемент управления типа ТаблицаЗначений , он автоматически связывается с одноименным объектом встроенного языка ТаблицаЗначений ;
- При работе с кодом: для хранения каких-либо многострочных списочных данных вы создаете нужное количество объектов типа ТаблицаЗначений ;
Создание таблицы значений
Как и все объекты агрегатного типа, таблица значений создается с помощью функции СоздатьОбъект() встроенного языка:
Инициализация таблицы значений
Инициализация объекта выполняется в три этапа:
- Добавление колонок
- Добавление строки
- Установка значений ячеек
Итак, прежде, чем начать работать с объектом ТаблицаЗначений , необходимо настроить колонки (задать имя и тип). Делается это с помощью метода НоваяКолонка() следующим образом:
Как Вы успели заметить, вместе с названием колонки задается и тип значений.
После того, как Вы добавили колонки, можно добавлять строки. Делается это с помощью метода НоваяСтрока():
Теперь переменная тз спозиционирована на добавленную строку и мы можем приступить к заполнению ячеек:
Как видите, имена ячеек текущей строки имеют то же название, что и колонки. Это делает использование объекта элементарным: достаточно указать через точку после имени объекта имя колонки.
Манипуляция значениями строк таблицы
Для получения значений, содержащихся в строках, необходимо перво-наперво спозиционировать объект на интересующей Вас строке. Для этого используются такие методы как: ПолучитьСтрокуПоНомеру() и ПолучитьСтроку():
Перебор строк таблицы значений
Для последовательного перебора (обхода) всех строк таблицы значений обычно используются методы ВыбратьСтроки() и ПолучитьСтроку() объекта:
Также можно организовать перебор с помощью оператора цикла Для, где в качестве ограничителя цикла используется количество строк таблицы, возвращаемое методом КоличествоСтрок():
Атрибуты объекта ТаблицаЗначений
НомерСтроки | атрибут содержит номер текущей строки таблицы |
атрибут содержит значение текущей ячейки таблицы |
Методы объекта ТаблицаЗначений
НоваяКолонка() | метод добавляет новую колонку в конец таблицы |
ВставитьКолонку() | метод вставляет новую колонку в указанное место в таблице |
УдалитьКолонку() | метод удаляет указанную колонку из таблицы |
КоличествоКолонок() | метод возвращает количество колонок в таблице |
НоваяСтрока() | метод добавляет новую строку в конец таблицы |
ВставитьСтроку() | метод вставляет новую строку в указанное место в таблице |
УдалитьСтроку() | метод удаляет указанную строку из таблицы |
КоличествоСтрок() | метод возвращает количество строк в таблице |
НайтиЗначение() | метод выполняет поиск значения в ячейках таблицы |
ВыбратьСтроки() | метод формирует последовательную выборку строк таблицы значений |
ПолучитьСтроку() | метод получает следующую строку из ранее сформированной выборки |
ПолучитьСтрокуПоНомеру() | метод позиционирует объект на указанной строке |
* — в таблице перечислены не все методы таблицы значений. |
Хочется отметить, что объекты типа ТаблицаЗначений не хранятся в информационной базе.
СписокЗначений — это программная коллекция элементов, содержащих значения произвольного типа и их строковые представления. Каждому элементу списка значений присваивается целочисленный номер — индекс, начинающийся с единицы. В отличие от массива, список значений является динамическим, т.е. элементы можно добавлять и удалять.
Список значений используется в двух случаях:
- При работе с формами: при размещении на форме элементов управления типа Список и ПолеСоСписком , они автоматически связываются с объектом типа СписокЗначений ;
- При работе с кодом: для хранения каких-либо расширяемых списочных данных вы создаете нужное количество объектов типа СписокЗначений ;
Хочется отметить, что объекты типа СписокЗначений не хранятся в информационной базе.
Создание списка значений
Как и все объекты агрегатного типа, список значений создается с помощью специальной функции СоздатьОбъект() встроенного языка:
Инициализация элементов списка значений
Каждый элемент списка значений характеризуется следующими свойствами:
- Значение — само значение;
- Представление — строковое представление значения;
- Пометка — числовое значение, означающее, что данный элемент отмечен в списке;
По умолчанию, список значений создается пустым. Для добавления нового элемента списка значений, используется метод ДобавитьЗначение() объекта:
Обратите внимание, что вместе со значением Вы можете указать его строковое представление.
Манипуляция элементами списка
Над элементами списка значений возможны различные действия, включая вставку новых элементов, сортировку, изменение и удаление существующих.
Вставка новых значений возможна в произвольное место списка. Для этого используется метод ВставитьЗначение():
Для получения значения элемента списка по номеру используется метод ПолучитьЗначение() объекта:
Удаление элементов списка производится с помощью метода УдалитьЗначение():
Интерактивные функции
Объект СписокЗначений имеет несколько методов, позволяющих взаимодействовать с пользователем. Например, с помощью метода ВыбратьЗначение() можно предложить пользователю выбрать одно из значений:
Также, можно предложить пользователю отметить одно или несколько элементов списка. Для этого используется метод ОтметитьЗначения(), который выводит список с пометками (checkboxes):
Найти все отмеченные пользователем значения можно, используя перебор элементов в цикле, и метод Пометка(), который возвращает статус пометки элемента:
Перебор элементов списка значений
Для перебора (обхода) всех элементов списка значений обычно используется оператор цикла Для:
Встала передо мной тут задачка одна - автоматизировать работу контролеров на рыке. Рынок поделен на торговые зоны.
Каждая зона разбита на ряды и на места. Трудность заключается в том, что в каждой зоне разное количество рядов, как и мест
в рядах. Нужно, чтобы контролер мог наглядно (схематически) видеть состояние той или иной зоны. Видеть занятые/свободные
места, для чего предназначено каждое место. Кроме того требуется сделать это все «динамически». Т.е. каждый месяц
количество рядов, мест и их назначение может меняться.
На первый взгляд задача не такая и трудная. Главное - как-то сохранить структуру зоны в 1С. Но как? Структура зоны
представляет собой не что иное, как обычную двумерную таблицу «шахматку». По вертикали места, по горизонтали ряды. Т.е.
оптимальный вариант – использование таблицы значений в 1С. Но, к сожалению, 1С не умеет хранить ТЗ в составе базы. Есть
несколько вариантов хранить ТЗ. Во-первых, во внешнем файле. Во-вторых, во внешнем dbf’е. В-третьих, создать справочник
(несколько справочников). И последний вариант – документ с табличными реквизитами.
Первый способ отметаем сразу, второй немного лучше первого, но все равно хранить что-то отдельно от базы не всегда
удачное решение, да и трудностей больше. Третий способ предлагали многие, но он мне не понравился. Представьте себе зону
100 на 100… Пусть даже справочник будет заполняться программно. Геморрой… А еще если учесть что реквизиты справочника
должны быть периодическими, то хочется плакать. Четвертый вариант – вот оно! То что нужно! Точнее, это единственный верный
вариант в данном случае.
Итак, для хранения ТЗ используем документ с реквизитом шапки – Зона и табличными реквизитами – ряд, место,
назначение. Зона – справочник «Структура торговой зоны», где указано количество рядов в зоне и максимальное количество мест
в ряду. Но как заполнять такой документ? Согласитесь, очень неудобно десять раз указать ряд, десять раз выбрать место, а
потом еще и назначение этого места. Утомительно и трудно для восприятия. Отсюда возможные ошибки. Вот тут и возникла идея -
заполнять документ, используя таблицу! Таким образом, табличные реквизиты вообще можно не выводить в документе…
После начала реализации, понял, а ведь это очень удобно использовать таблицу для ввода всевозможных данных в 1С.
Кроме того ее можно использовать не только для ввода, но и для вывода, в том числе и динамического. Да и еще кучу
применений можно придумать!Так родилась идея создания универсальной таблицы для ввода данных. На входе указываем количество
рядов и мест, на выходе получаем ТЗ…
Делаем таблицу…
В свойствах формы обработки/отчета выбираем использовать таблицу для ввода данных (Положение: любое).
Для начала нам надо сформировать таблицу…
Вот что у нас получилось (рядов 10, мест 10): рис. 1
Теперь надо сделать так, чтобы в ячейки можно было вносить какие-то данные, например из справочника. Замечу, что
ячейки таблицы в режиме ввода данных могут быть любого типа (по умолчанию у всех стоит тип «строка»). Т.е. если мы в
конфигураторе укажем заранее, что ячейка имеет тип Справочник.XXX. То при работе в эту ячейку можно вносить элементы из
указанного справочника. А саму таблицу потом выгружать в список значений методом Выгрузить(). Тут меня ждало первое
разочарование…
Поскольку заранее мы не знаем количество рядов/мест, то какие ячейки будут иметь нужный нам тип надо сделать
программно. Да и метод такой имеется УстановитьТип(). Но этот метод применим, если на этапе конфигурирования ячейке
назначен тип – «Неопределенный», а по умолчанию, как я уже писал, у всех ячеек тип «строка». Предположив, что на практике
вряд ли будет существовать зона 100 рядов на 100 мест, я, не долго думая, выделил в конфигураторе область 100 на 100 и
назначил всем ячейкам тип «Неопределенный». Сохранил отчет и … отчет стал весить 64(. ) Мегабайта….) Мда, так не пойдет… и
я придумал другой выход.
При открытии обработки формируем таблицу значений, которая по структуре идентична нашей таблице. Т.е. количество
строк будет равно количеству мест, а количество колонок – количеству рядов. Тип колонок выбираете произвольно, или
«неопределенный». Таким образом, эта ТЗ будет являться своего рода «подложкой» нашей таблицы и полностью дублировать ее. Эту ТЗ мы и передаем во внешний документ, вызвавший эту обработку.
Получаем вот такое меню: рис.2
Итоговый вид таблицы после заполнения оператором: рис.3
Демонстрационная обработка здесь -> //infostart.ru/projects/1299/
В демонстрационной обработке используются значения типа "Строка".
Рис.1
Рис. 2
Рис. 3
Читайте также: