Тип значения списка значений 1с 8.3. Создание новой номенклатурной позиции

Статья продолжает цикл «Первые шаги в разработке на 1С».

В конфигурации на платформе «1С:Предприятие» при выводе информации наиболее часто используются таблицы, которые отображают различные информационные списки. Работа с такими списками может происходить как в форме списка, так и в форме элемента (обработки).

В этой статье мы познакомимся с этими возможностями настройки списков, а также рассмотрим и другие особенности настройки форм со стороны пользователя.

Применимость

В статье рассматривается Управляемый интерфейс в варианте «Версии 8.2» конфигурации, разработанной на платформе 1C 8.3.4.482.

Если вы работаете с конфигурациями, которые поддерживают данный интерфейс, то для вас информация актуальна и для текущих версий платформы.

Если же вы работаете в новом интерфейсе «Такси», то названия некоторых команд настройки, а также общая последовательность действий может несколько отличаться.

Кроме того, в актуальной версии платформы добавились новые возможности поиска в списках.

Настройка форм и возможности работы со списками

Для элементов управляемых форм существует возможность изменять видимость и некоторые другие свойства. Для этих целей в управляемой форме в меню Все действия служит пункт Изменить форму .

После нажатия данной команды появится окно «Настройка формы».

В появившемся окне с помощью галочек можно изменять видимость некоторых реквизитов. При этом форма автоматически масштабируется.

Можно изменять порядок реквизитов. Добавлять новую группу и помещать в нее некоторые реквизиты (элементы), определяя вариант их группировки (горизонтальная, вертикальная).

Реквизиты, входящие в состав группы будут размещены соответствующим образом. Кроме того, для элементов можно настраивать такие свойства, как ширина, высота, данные по заголовку.

Можно определять реквизит, который будет активизироваться при открытии формы.

Важным свойством является возможность добавления на форму новых полей. Это становится возможным через реквизиты ссылочного типа.

Например, имея на форме реквизит ссылочного типа Контрагент , можно добавить Контактное лицо , если данный реквизит присутствует в справочнике «Контрагенты».

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

Для возврата к стандартным настройкам в окне «Настройка формы» в меню Все действия следует выбрать пункт Установить стандартные настройки .

Кроме настройки форм в управляемом интерфейсе существует возможность настройки списков (элементов справочников, документов).

В форме списка в меню Все действия содержится специальная команда Настроить список .

Откроется окно «Настройка списка». В данном окне можно производить отбор, сортировку, определять условное оформление и группировку.

На рисунке представлена форма для редактирования отбора.

Отбор можно производить по нескольким полям. В этом случае по умолчанию отбор будет работать по условию И. Можно также использовать условия ИЛИ и НЕ.

Для использования условия ИЛИ (НЕ) нужно с помощью команды Сгруппировать условия добавить соответствующую группу (Группу ИЛИ, Группу НЕ).

На рисунке представлена форма для определения полей сортировки.

Возможна настройка группировки. На рисунке в качестве поля для группировки выбран Контрагент .

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

Можно произвольным образом раскрасить список или применить другие элементы условного оформления (выделение шрифтами, определенное форматирование) по заданному условию, а также выделить список оформляемых полей.

На рисунке представлен результат условного оформления фоном поля Сумма .
Когда сумма > 100000.

Следует отметить, что существует возможность просмотра справочников в режиме иерархии.

Иерархический просмотр справочников возможно настраивать через пункт Режим просмотра в меню Все действия . Можно выбрать один из вариантов: Иерархический список , Список , Дерево .

Также имеется возможность настраивать собственную группировку элементов справочников по некоторым реквизитам.

Например, можно сгруппировать номенклатуру по поставщику. Пример аналогичен тому, где мы рассматривали группировку документов «Реализация товаров и услуг» по контрагентам.

Удобная возможность – множественное выделение в списках с последующим выполнением групповых действий (проведение, отмена проведения, снятие пометки удаления).

Выделение объектов в списке осуществляется с удержанием клавиши Shift или Ctrl .

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

Для поиска по значению в текущей колонке достаточно спозиционировать курсор на нужной колонке и нажать на кнопку Найти в командной панели. Появится окно, в котором следует также нажать на кнопку Найти .

Для повышения конкретизации поиска можно использовать флажок Искать в найденном .

Осуществляя поиск по строке данных ссылочного типа (например, единицы измерения) следует выбирать соответствующий вариант поиска …(по строке) .

На этом заканчиваем со списками и способами их настройки. В следующей статье мы продолжим знакомиться с интерфейсом и рассмотрим удобный инструмент для информирования пользователя, о котором мы раньше не говорили. Что это за инструмент? :)

Здравствуйте, дорогие наши коллеги и партнеры. За последний месяц к нам поступило несколько вопросов от пользователей программы 1С Бухгалтерия 8.3 с просьбой помочь настроить в программе список номенклатуры так как было в 8.2. То есть в старой программе они могли видеть в списке номенклатуры артикул или код номенклатурной позиции. Это было очень удобно. А вот в 8.3 ничего не видно и непонятно. На самом деле все очень несложно настроить. Поэтому мы решили написать небольшую инструкцию по настройке справочников в программе 1С Бухгалтерия 8.3, но этот алгоритм применим в любой конфигурации 1С.

Итак, в разделе «Справочники» откроем справочник «Номенклатура».

В открывшемся списке мы видим название номенклатуры, в котором нет сведений об артикуле товара. Для того чтобы изменить представление справочника, воспользуемся настройкой его формы. Открыв по кнопке «Еще» список команд, в самом низу найдем «Изменить форму».

В открывшейся форме нам представлены все реквизиты справочника, которые можно вывести на экран.

Установив соответствующий флажок, например «Код» и «Артикул» мы получим список номенклатуры, в котором отображены и код и артикул.

Однако в таком виде некоторым пользователям справочник тоже не нравится. Они хотят видеть номер и артикул перед названием товара. Это тоже очень легко решается. Опять открываем форму настройки списка и с помощью синих стрелок на панели инструментов передвигаем реквизит вверх или вниз, в зависимости от того, как мы хотим видеть список. Также можно «перетаскивать» реквизиты при помощи левой кнопки мыши.

Вот теперь список номенклатуры такой, каким вы хотели его видеть.

Экспериментируйте с настройками списка. Не бойтесь. Все что я написала, можно использовать в любой конфигурации на управляемых формах и в любом справочнике, например, вывести на экран КПП в справочнике «Контрагенты» или номер договора в справочнике «Договоры». Не бойтесь, что вы что то «сломаете» в программе.

В крайнем случае, вас всегда спасет возможность «Установить стандартные настройки», которая находится в настройке формы в разделе «Еще»

И еще. Иногда звонят клиенты с таким вопросом: «Я на что-то нажала и у меня теперь наименования не по алфавиту. Верните все как у меня было». Этот вопрос тоже легко решается. В каждом справочнике в строке заголовка табличной части всегда есть «волшебная стрелочка», которая указывает столбец, по которому установлена сортировка и направление этой сортировки.

Изменить направление сортировки можно просто кликнув по этой стрелке и тогда список будет отсортирован, например, от Я до А. Если же мы хотим, чтобы сортировка товаров была по коду, то для этого надо кликнуть мышкой на названии соответствующего столбца «Код» и «волшебная стрелочка» переместится в другой столбец.

Ну вот и все. Надеюсь, мои советы помогут вам в работе с программами 1С. Работайте в 1С с удовольствием. Вступайте в наши группы в контакте и одноклассники и вы всегда первыми узнаете о наших новых статьях и изменениях в программах.

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

Возможности динамических списков в 1С

Предназначение данного типа заключается в отображении информации из любых таблиц БД, независимо от ее типа. Механизм был создан на основе СКД и обладает аналогичными возможностями. Но это не означает, что обязательно придется писать запрос на языке 1С, хотя эта возможность есть и ей нужно пользоваться. Вы можете просто указать таблицу, информация из которой вас интересует и 1С самостоятельно сформирует простейший запрос.

Чтобы посмотреть, как формируется динамический список и какие данные он показывает, необходимо открыть управляемые формы, где он расположен, в конфигураторе: в перечне реквизитов через контекстное меню открыть его свойства и обратить внимание на пункт «ПроизвольныйЗапрос». Если галка отсутствует, то параметр «Основная таблица» отражает таблицу БД, откуда берутся данные. В ином случае, динамический список отражает данные произвольного запроса, который можно увидеть, открыв настройку списка.

Намного чаще используется схема с произвольным запросом, так как это дает отличную возможность объединять и показывать самые разнообразные данные. Чаще всего этот механизм используется для отражения остатков на складах, цен номенклатуры, прихода, расхода или закупок. Пользоваться им нужно осторожно, так как быстродействие при сложных запросах может падать.

Еще одно полезное свойство динамического списка открывается при щелчке на надпись «Настройка списка». Это меню позволяет даже при использовании стандартного набора полей сделать информацию более доступной и понятной конечным пользователям. Вне зависимости от того, произвольный запрос или нет, вы увидите вкладку «Настройки», где сможете указать:

  • Отбор динамического списка;
  • Группировки;
  • Сортировку;
  • Оформление.

Использование параметров делает динамические списки универсальными и достаточно гибкими. Также вы можете связать их с реквизитами на управляемой форме, и данные будут меняться в зависимости от выбранных пользователем параметров. Использование этих механизмов можно понять и оценить при рассмотрении примеров реальных задач.

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

Для большей наглядности создадим отдельную внешнюю обработку и разместим на ней динамический список. Чтобы реализовать задуманное, таблицы с номенклатурой будет мало, поэтому нам необходимо разрешить произвольный запрос. В нем мы опишем левое соединение справочника с перечнем номенклатуры и регистра остатков и установим справочник в качестве основной таблицы. Такая схема позволит пользователям, работая с динамическим списком, добавлять или изменять номенклатуру.



ВЫБРАТЬ НоменклатураПеречень.Наименование КАК Наименование, ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток ИЗ Справочник.Номенклатура КАК НоменклатураПеречень ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекухцаяДата,) КАК ТоварыНаСкладахОстатки ПО НоменклатураПеречень.Ссылка = ТоварыНаСкладахОстатки.Номенклатура ГДЕ

Так как в нашем запросе использовался параметр «ТекущаяДата», то нам необходимо задать его значение перед тем, как пользоваться обработкой. Для этого в модуле формы в процедуре «ПриСозданииНаСервере» стандартной командой присвоим ему функцию «ТекущаяДатаСеанса». Также нам необходимо вывести динамический список на управляющую форму и изменить порядок полей для наглядности. Перетаскиваем реквизит «ОстаткиНоменклатуры» в элементы формы (левая верхняя часть) и синими стрелками изменяем порядок полей в таблице на форме.

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОстаткиНоменклатуры.Параметры.УстановитьЗначениеПараметра("ТекутаяДата",ТекущаяДатаСеанса()) КонецПроцедуры


Уже на этом этапе мы можем в 1С открыть нашу внешнюю обработку и увидеть, что динамический список работает. Мы можем смотреть остатки, создавать номенклатуру и группы, осуществлять поиск. Часто заказчики просят добавить возможность выбирать дату, на которую они будут видеть остатки. В случае формы с динамическим списком это обеспечивается за счет дополнительного поля и установки параметров с его помощью.

Добавляем реквизит «ДатаОстатков» типа «Дата» и переносим его в элементы формы. В событиях поля создаем событие «ПриИзменении» и прописываем код по установке параметра «ТекущаяДата», использующегося в динамическом запросе. Чтобы при открытии формы пользователь сразу понимал, на какую дату он видит остатки, внесем небольшие изменения в процедуру «ПриСозданииНаСервере».



&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ДатаОстатков = ТекущаяДатаСеанса(); ОстаткиНоменклатуры.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", ДатаОстатков); КонецПроцедуры &НаКлиенте Процедура ДатаОстатковПриИзменении(Элемент) ОстаткиНоменклатуры.Параметры.УстановитьЗначениеПараметра("ТекущаяДата",ДатаОстатков); КонецПроцедуры

В результате наша форма Динамический список может отражать остатки на любую дату.

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

  1. Подбора;
  2. Списков.

Чтобы получить динамический список и его запрос в типовых управляемых формах, разработчику необходимо в конфигураторе открыть нужную форму. В разделе реквизитов найти реквизит с типом данных «ДинамическийСписок» (чаще всего он выделен жирным шрифтом). В его свойствах находится текст запроса, отборы и другие настройки.

В данном юните мы познакомимся с новым типом данных языка 1С, который называется СпысокЗначений.

Список значений - это массив, но с большими возможностями. А раз так, то он тоже является коллекцией данных и в него можно поместить набор чисел:

// создали список значений

Список.Добавить(23);

Пока все очень похоже на массив, не правда ли? Но идем дальше. Чтобы теперь вывести эти числа пользователю, напишем:

// пробежимся циклом по каждому элементу списка Для Каждого Элемент Из Список Цикл Сообщить(Элемент.Значение);

// выводим значение элемента КонецЦикла;

А ют и первое отличие. Элементами обычного массива являются сами числа. А доступ к текущему значению элемента Списка мы получаем с помощью опции Значение , использовав конструкцию Элемент. Значение.

Рассмотрим некоторые дополнительные возможностиСяис/ся Значений.

Умеет сортировать

К, примеру, мы легко можем отсортировать список значений. Список это умеет делать сам:

Список.СортироватьПоЗначению(НаправлениеСортировки.Возр); В случае с обычным массивом нам пришлось бы реализовывать один из алгоритмов сортировки (например, "пузырек").

Умеет искать

Список значений умеет сам искать свои элементы. Пусть мы хотим выяснить, присутствует ли введенное пользователем число в нашем списке:

ВвестиЧисло(Число); // ввели число от пользователя НайденныйЭлемент = Список. НайтиПоЗначению(Число);

Если НайденныйЭлемент = Неопределено Тогда ОткрытьЗначение("Число " + Число + " в списке не найдено!"); Иначе

ОткрытьЗначение("Число " + Число + " присутствует в списке. Вот оно:" + НайденныйЭлемент.Значение);

КонецЕсли; СписокЗначений

Поддерживает вставку и удаление

Список значений, также как и массив, поддерживает вставку и удаление элементов:

Список. Вставить(0, 1000);

// вставляем тысячу в самое начало списка Список.Удалить(О); // и тут же удаляем ее из списка Список. Вставить(Список.Количество(), 13);

// вставляем 13 в конец списка Сообщить(Список[Список.Количество() - 1]);

// выводим последний элемент списка (13)

Поддерживает квадратные скобки

Как вы уже поняли, нумерация элементов списка также идет с нуля, и мы можем обратиться к любому элементу по его индексу, используя квадратные скобки:

Сообщить(Список.Значение); // вывели второй элемент списка Таким образом, мы можем пробежаться по всем элементам списка еще и так:

Для А = 0 По Список.Количество() - 1 Цикл Сообщить(Список[А].Значение);

КонецЦикла;

Умеет создавать свою копию

У списка значений есть просто шикарная возможность - он умеет сам создавать свою копию:

КопияСписка = Список.Скопировать();

// сделали копию списка // теперь можем смело менять КопияСписка // при этом исходный список меняться не будет КопияСписка. Значение = 123456;

Умеет превращаться в массив

Ну и, наконец, вы можете в любой момент легко выгрузить все элементы списка в массив:

МассивЧисел = Список. ВыгрузитьЗначения();

// выгрузили в массив

Для А = 0 По МассивЧисел.Количество() - 1 Цикл

Сообщить(МассивЧисел[А]); // не нужно указывать // опцию Значение

КонецЦикла;

Для отработки и закрепления материала данного юнита рекомендуется выполнить нижеследующее задание.

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

Решение

Список = Новый СписокЗначений;

// создали список значений Для А = 1 По 5 Цикл Число = 0;

ВвестиЧисло(Число); // введем число от пользователя Список.Добавить(Число); // и добавим его в список КонецЦикла; // и так 5 раз

// сделаем сортировку списка чисел

Список. Сортировать ПоЗначению(НаправлениеСортировки. Возр);

// после сортировки первый элемент списка - это и есть // наименьший элемент, а последний - наибольший ОткрытьЗначение("Самый маленький элемент" + Список +

", а самый большой " + Список[Список.Количество() - 1]);