Получить значение 1с 7

Обновлено: 07.07.2024

При формировании пользовательского интерфейса прикладной задачи довольно часто возникают ситуации, когда для удобства работы пользователя необходимо дать ему возможность выбирать какое-либо значение из заранее подготовленного списка. Возможности работы со справочниками, журналами и перечислениями предоставляют достаточно мощные средства выбора этих объектов. Однако, существует также необходимость в выборе значений из списков, сформированных и отсортированных нестандарнным образом, которые невозможно или неудобно получать непосредственно при работе со стандартными визуальными представлениями журналов, справочников или перечислений. Для этого в системе 1С:Предприятие используется специальный агрегатный тип данных — «СписокЗначений» и специальные элементы форм диалога: «Список» и «Поле со списком».

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

Контекст работы со Списком Значений

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

Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после имени объекта.

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

Иногда надо получить "Тип.Вид" неизвестного значения в виде "Справочник.Сотрудники" или "Документ.Реализация", но надо учитывать, что, возможно, попадётся "Строка", для которой "Вид()" неприменим.
Ставить кучу "Если ТипЗначенияСтр()=" или "Попытка" некрасиво. Поступим иначе:

спзн.ПолучитьЗначение(1) - Тип
спзн.ПолучитьЗначение(2) - Вид (если есть)

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Зачем такой огород городить?
ТипВид=ТипЗначенияСтр(текЗначение)+?(ТипЗначения(текЗначение) > 3, "."+текЗначение.Вид(), "");

Споткнётся на таких вещах:
текЗначение = ВидРасчета.Авторские;
текЗначение = Перечисление.ТипыЧасов;
текЗначение = глВзятьКонтекст(контекст);

Но идея тоже красивая!

Ну хорошо ;). Если сделать вот так
ТипВид=ТипЗначенияСтр(текЗначение)+?(ТипЗначения(текЗначение)%14 > 3, "."+текЗначение.Вид(), "");
то 1. вернет тоже, что и твой код
2.НеизвестныйОбъект против твоей пустой строки
3. ГрупповойКонтекст против твоей пустой строки

Отлично! Можешь написать статью, я дам ссылку отсюда.

А вообще я использовал "ЗначениеВСтроку" потому что потом, с помощью "ЗначениеВСтрокуВнутр", достаю ID объекта.

Так вроде уже добавлено - в обсуждении.
Илья "баткович", как вас по фамилии? а не проще через
Попытка
Вид=ТекЗначение.Вид()
Исключение
Сообщить("нету вида");
КонецПопытки Чтобы удостовериться, что вы не робот, пожалуйста введите код защиты:
Я не робот!

Просмотры 9780

Загрузки 0

Рейтинг 10

Создание 12.10.06 00:00

Обновление 12.10.06 00:00

№ Публикации 16911

Тип файла Нет файла

Конфигурация Конфигурации 1cv7

Операционная система Не имеет значения

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Бесплатно (free)

Код открыт Не указано

- Специальная оценка - Медицинские осмотры - Спецодежда и СИЗ - Инструктажи, обучение, проверка знаний - Расследование несчастных случаев - Допуски к работам с повышенной опасностью - Компенсации, дополнительные дни отдыха, ЛПП - Предписания и мероприятия Охрана труда и промышленная безопасность для 1С:Предприятия 8

См. также

27.01.2016 85835 Serginio 116

Печать таблицы значений в 1С 7.7 при отладке

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021 1402 Zoltan_Black 11

Расчет страховых взносов в 1С 7.7 "Учет и отчетность предпринимателя, ред. 1.2" с апреля 2020

В этой статье описано, какие небольшие изменения можно внести в модуль документа Начисление налогов с ФОТ, чтобы правильно рассчитывались страховые взносы с 1 апреля 2020 г.

09.04.2020 13900 Юджин58 39

Дистрибьюция 7.7. Часть 1. Жизненный цикл заявки покупателя. Одна заявка покупателя, много адресов доставки.

Описан способ работы с учетом расписания с приоритетными покупателями - торговыми сетями (основными покупателями) в торговой или комплексной учетной системе на 1С 7.7. Множественная заявка покупателя на несколько торговых точек.

14.10.2019 5140 ksnik 14

1С:Предприятие 7.7. Оптимизация. Промо

Разгоняем 1С:Предприятие 7.7. Выжимаем последние соки.

31.01.2009 49399 alexk-is 110

Заполнение реквизитов документов из предыдущего документа

Функция для автоматического заполнения реквизитов документов.

04.02.2019 5632 drevilo 2

Проверка часового пояса

При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.

16.05.2016 11549 kudenzov 3

[ПОЛЕЗНЯШКА, 7.7] Как посчитать итоги по документам черным запросом с изподвывертом?

Мелкая полезняшка, считает запросом итоговую сумму документов и количество документов.

12.03.2016 20274 CheBurator 18

Как уменьшить количество заблокированных объектов Промо

История о том как я решил пересобрать форму справочника клиентов и чем это все закончилось.

12.01.2012 15782 ShEvOvIcH 18

09.03.2016 33554 Serginio 22

Экспорт нескольких MXL таблиц в один XLS файл, на отдельные листы. Простой алгоритм

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015 17865 etmarket 14

12.11.2015 48159 Serginio 36

Технология обновления нетиповых конфигураций 1С:Предприятия 7.7 Промо

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

12.12.2008 64153 alexk-is 25

Процедура расшифровки ячейки таблицы в отчетах 1С 7.7

Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.

Форум

Создание объекта СписокЗначений

Список значений - это аналог одномерного массива в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Объект "Список значений" имеет множество полезных возможностей и работает очень быстро. Следует учитывать, что в языке 1С есть и одномерные массивы в том смысле, как это принято в других языках программирования (Перем мас[10]). Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.

Добавление значений в список

//у каждого значения в СпискеЗначений есть экранное представление
//если оно не указано, то используется стандартное строковое представление объекта

СписокЗнач.ДобавитьЗначение("Иванов Иван Иванович");
СписокЗнач.ДобавитьЗначение(Сотрудник);
СписокЗнач.ДобавитьЗначение(1,"Значение №1");

СписокЗнач.УстановитьЗначение(3,3,"Значение №3"); //установить новое значение и представление 3-й позиции

Перебор списка значений

стр = "";
Для Номер = 1 По СписокЗнач.РазмерСписка() Цикл
. значение = СписокЗнач.ПолучитьЗначение(Номер, стр); //получить значение и представление
. Сообщить(значение + ", " + стр);
КонецЦикла;

Сортировка списка значений

//сортировать по значению
СписокЗнач.Сортировать(); //по возрастанию
СписокЗнач.Сортировать(1); //по убыванию

//сортировать по представлению
СписокЗнач.СортироватьПоПредставлению(); //по возрастанию
СписокЗнач.СортироватьПоПредставлению(1); //по убыванию

Поиск значения в списке

//поиск по значению
Синтаксис: НайтиЗначение(<Знач>)
Возвращает номер позиции списка, в которой найдено значение или 0, если не найдено

номстр = СписокЗнач.НайтиЗначение (Сотрудник);

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

Если СписокЗнач.Принадлежит(Сотрудник)=1 Тогда
. <действия>
КонецЕсли;

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

СписокЗнач.УдалитьВсе(); //очистить список значений

//удаляет значения из указанной позиции
СписокЗнач.УдалитьЗначение(откуда, [сколько]);

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

//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = СписокЗнач.ТекущаяСтрока(НовСтрока);

//список значений в диалоге может иметь пометки (флажки)

пометка = СписокЗнач.Пометка(Позиция); //прочитать пометку у значения списка
СписокЗнач.Пометка(Позиция,1); //установить пометку у значения списка
СписокЗнач.Пометка(Позиция,0); //снять пометку у значения списка

Выгрузка и загрузка списка значений

//выгрузка в другой список значений или таблицу значений
Синтаксис: Выгрузить(<Знач>,<НачПоз>,<Колич>)
СписокЗнач.Выгрузить(НовыйСписок,1,10); //выгрузить первые 10 значений

//выгрузка списка значений в строку с разделителями
стр = СписокЗнач.ВСтрокуСРазделителями(); //возвращает строку: 10,12,"Иванов","Петров"

//загрузка списка значений из строки с разделителями
//обратите внимание на двойные кавычки для строковых значений
СписокЗнач.ИзСтрокиСРазделителями("10,12,""Иванов"",""Петров""");

Electronic Software Distribution

смотрю функцию ПолучитьСписокРеквизитовСправочника и не совсем понимаю почему всегда добавляется "код" и "наименование" к списку возвращаемых реквизитов. разве "код" и "наименование" всегда присутствуют в справочнике?
хотя если учитывать п. (5), то отношение автора к моему минусу становится ясным. кстати, кому надо тот может и сам написать, а не дорабатывать. если здесь главное "идея", то изложи только идею, например:
"
// Возвращает список реквизитов справочника
// параметры: СпрВид - вид справочника
Функция ПолучитьСписокРеквизитовСправочника(знач СпрВид)
сзРеквизиты = СоздатьОбъект("СписокЗначений");
/////////////тута надо заполнить список значенией (сзРеквизиты) соответствующими
/////////////значениями метаданных относительно переданного параметра
Возврат сзРеквизиты;
КонецФункции
"

ибо самое главное в жизни это идеи, а их реализация - это дело десятое.

Abadonna прав - разработок использующих эту идею много
а вот "методических пособий" мало
сменил свое мнение - на практический пример с описанием не тянет

в типовых вроде подобное есть, в процедурах работы с контекстом документа,
в любом случае ни о чем.

если-бы это было в блогах, я-бы еще понял, но в "программах" - тянет на минус

Автор: чёта я не понял: вроде доброе дело сделал, а они минусами закидали. Мне что, теперь не делиться своими наработками? (11) Полезно читать документацию, например, als по метаданным от Пита. написанное эдак еще годков 8 назад(или раньше, не помню ужо), перед написанием своих нетленок. Всё ужо придумано до нас.
(11)>Мне что, теперь не делиться своими наработками?
Я тебе минус не ставил, но неужели ты на самом деле считаешь, что это НАРАБОТКА? Уж извиняйте, но просто не сдержался.
Идея? Обалдеть. Любой нормальный программер напишет для своих нужд такую "идею" уже через 2-а месяца изучения 1С. Давайте писать более конструктивно, например: в строке N возникает ошибка, код в строках N-NN можно было бы написать лучше. А докапываться до слов не надо, так как у каждого из нас разное воспитание и уровень снобизма тоже. И чего вы все так жестоко?
Согласен, что это баян, что даже если и размещать, то надо было не в разделе программ, а в блогах.
Но минусы то зачем ставить? за компанию? так уж тут заведено?
Если не видите ценности данной "обработки" - просто проигнорируйте, а минус надо ставить за не рабочий код.
Компенисрую. Справочник может иметь как код и наименование, как что-либо одно из них (код или наименование), так и ни кода ни наименования. Соответственно как говорится "Тема сисек не раскрыта". За это и минусовали

Просмотры 23575

Загрузки 137

Рейтинг 3

Создание 16.11.08 06:55

Обновление 16.11.08 06:56

№ Публикации 16755

Конфигурация Конфигурации 1cv7

Операционная система Не имеет значения

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Не указано


См. также

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 Промо

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

Читайте также: