- Таблица значений в 1С 8.3
- Создание таблицы значений
- Типы колонок таблицы значений
- Работа с колонками таблицы значений
- Изменение значений в существующих строках
- Перебор строк таблицы значений
- Удаление строк
- Колонка таблицы значений в строку + представление номеров накладных с экономией места в строке. Делалось для печатной формы ТТН.
- Специальные предложения
- См. также
- Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо
- Что за ? в коде, или Секретный оператор в 1С
- Полезные примеры СКД, ч.2
- Обзор полезных методов БСП 3.1.4
- Использование классов .Net в 1С для новичков Промо
- Звуковое управление в 1С 8.3
- Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions
- Базовые вещи БСП, которые облегчат жизнь программисту 1С
- Использование программных перечислений, ч.1: строковые константы Промо
- Форма выбора (подбор) в управляемых формах
- Программная работа с настройками СКД
- [СКД] Программное создание схемы компоновки данных
- Вспомогательные инструкции в коде 1С Промо
- Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения
- Сходство Джаро — Винклера. Нечеткое сравнение строк
- Полезные процедуры и функции для программиста
- Оформление и рефакторинг сложных логических выражений Промо
- Таблица значений. Нюансы
- [Шпаргалка] Программное создание элементов формы
- Агрегатные функции СКД, о которых мало кто знает
- Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо
- Регистры бухгалтерии. Общая информация
- Три костыля. Сказ про фокусы в коде
- Иерархия без «В ИЕРАРХИИ»
- Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо
- Отслеживание выполнения фонового задания
- Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив
- Фоновое выполнение кода в 1С — это просто
- Выгрузка документа по условию Промо
- СКД — наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты
- Обработчики событий при записи объектов. Зачем и что за чем?
Таблица значений в 1С 8.3
Таблица значений — это универсальная коллекция 1С, которая предназначена для хранения данных в табличном виде. Таблица значений хранит ссылки на объекты СтрокаТаблицыЗначений. Помимо строк у таблицы есть колонки. Таблицу значений нельзя создать на клиенте и нельзя передавать между клиентом и сервером.
Создание таблицы значений
Для создания таблицы значений используются конструктор:
В данной таблице не будет ни одной колонки и добавление в нее строк бессмысленно. Для добавления колонок нужно использовать свойство Колонки таблицы значений:
Теперь в таблицу можно добавить несколько строк. Добавление строк выполняется методом Добавить. Данный метод вернет строку таблицу значений. К именам колонок таблицы значений можно обращаться как к свойствам строки:
Типы колонок таблицы значений
В таблицу было добавлено 2 колонки. Тип не был определен и поэтому в эту колонку можно поместить любой тип данных, тип будет определяться в зависимости от типа данных значения в колонке. В примере выше тип колонки Товар — строка, а колонки Цена — число. Если добавить еще одну строку с другим типом, то тип колонки станет составным:
Тип можно указать при добавлении новой колонки, тогда в нее можно будет помещать значения только данного типа, для всех остальных значений будет выполняться преобразование типа:
Работа с колонками таблицы значений
Для проверки наличия необходимой колонки в таблице можно выполнить поиск в коллекции колонок. Если такой колонки нет, то метод Найти вернет Неопределено:
Колонку можно переименовать. При этом, значения в данной колонке сохранятся. Изменить тип колонки нельзя.
Колонки можно удалять, соответственно будут удалены и все значения в данной колонке:
Изменение значений в существующих строках
К строкам таблицы значений можно обращаться через оператор индексации [ ]. Индексация строк начинается с нуля, чтобы изменить значение в первой строке нужно использовать индекс 0:
Перебор строк таблицы значений
Перебрать все строки таблицы значений можно с помощью циклов Для Каждого и Для. При необходимости на каждой итерации цикла можно изменить значения колонок строки.
Удаление строк
Удалить строку из таблицы можно методом Удалить. Параметром можно передать индекс строки или саму строку. Для удаления всех строк таблицы можно воспользоваться методом Очистить.
Иногда нужно удалить несколько строк из таблицы по условию. Например, все строки, где цена меньше 100. На первый взгляд это можно сделать так:
Однако после удаления линейка осталась в таблице, хотя ее цена равна 80. Почему так произошло? При удалении строки, таблица как бы сжимается. То есть на первой итерации цикла мы получили первую строку с диваном, его цена больше 100, поэтому строка осталась. Получаем вторую строку с ручкой за 50. Так как цена меньше 100, строка была удалена. И после удаления все строки сдвинулись, третья строка переместилась на вторую позицию, четвертая на третью и т.д. На следующей итерации мы получаем третью строку, а там уже кресло за 2000. Линейка была пропущена, цикл даже не проверял ее цену.
Поэтому правильно удалять строки с конца таблицы. При удалении строки цикл может несколько раз пройти по одной строке, но точно не пропустит ни одну строку:
Источник
Колонка таблицы значений в строку + представление номеров накладных с экономией места в строке. Делалось для печатной формы ТТН.
Запрос = Новый Запрос;
|ПутевойЛистРеестрДокументов.ДополнительныйНомер2 КАК ДополнительныйНомер2
|Документ.ПутевойЛист.РеестрДокументов КАК ПутевойЛистРеестрДокументов
ТЗСДопНомерами2 = Новый ТаблицаЗначений;
ТЗСДопНомерами2.Колонки.Добавить(«ДопНом2»,,Новый ОписаниеТипов(«Число»,Новый КвалификаторыЧисла(10, 0, Знак)));
Если Не (Результат.Пустой()) Тогда
Пока Выборка.Следующий() Цикл
СледующийЭлемент = Число(Выборка.ДополнительныйНомер2) + 1;
Для Каждого СтрТЧ Из ТЗСДопНомерами2 Цикл
Если (Число(ТекущийЭлемент) <> Число(СледующийЭлемент)) И ПервыйПроход Тогда
ФормируемаяСтрока = ФормируемаяСтрока + ТекущийЭлемент;
Если (Число(ТекущийЭлемент) = Число(СледующийЭлемент)) И ПервыйПроход Тогда
ФормируемаяСтрока = ФормируемаяСтрока + ТекущийЭлемент;
Если (Число(ТекущийЭлемент) = Число(СледующийЭлемент)) И (Не ПервыйПроход) Тогда
Если ЦиклТолькоНачался И Не ПропуститьЧисло Тогда
Счетчик = Счетчик + 1;
Счетчик = Счетчик + 1;
Если (Число(ТекущийЭлемент) <> Число(СледующийЭлемент)) И (Не ПервыйПроход) Тогда
Если Не ЦиклТолькоНачался И ПропуститьЧисло Тогда
ФормируемаяСтрока = ФормируемаяСтрока + ПоследнийЭлемент;
ИначеЕсли Не ЦиклТолькоНачался И Не ПропуститьЧисло И Счетчик = 1 Тогда
ФормируемаяСтрока = ФормируемаяСтрока + ПоследнийЭлемент;
ФормируемаяСтрока = ФормируемаяСтрока + «, » + ТекущийЭлемент;
СледующийЭлемент = Число(ТекущийЭлемент) + 1;
Если Счетчик <> 0 Тогда
ФормируемаяСтрока = ФормируемаяСтрока + СамыйПоследнийЭлемет;
Специальные предложения
Обновление 06.03.11 10:09
Код открыт Не указано
См. также
Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо
В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.
12.12.2020 4342 Eugen-S 23
Что за ? в коде, или Секретный оператор в 1С
Инкремент, модуль и прочая магия, которая скрыта под символом «?»
21.10.2021 7265 SeiOkami 39
Полезные примеры СКД, ч.2
Еще несколько примеров решения задач в СКД.
06.04.2021 10515 Neti 8
Обзор полезных методов БСП 3.1.4
Библиотека стандартных подсистем (далее — БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.
25.03.2021 39566 rayastar 51
Использование классов .Net в 1С для новичков Промо
Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)
27.01.2016 85540 Serginio 115
Звуковое управление в 1С 8.3
В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.
16.03.2021 7099 velemir 33
Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions
«Я не могу просто взять и скопировать код с гитхаба», «у нас 1С микросервисами окружена», «возможностей мало» — частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще — берём и используем.
28.12.2020 8807 comol 31
Базовые вещи БСП, которые облегчат жизнь программисту 1С
В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.
30.08.2020 19966 quazare 34
Использование программных перечислений, ч.1: строковые константы Промо
Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?
10.12.2016 41059 unichkin 74
Форма выбора (подбор) в управляемых формах
Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.
08.05.2020 76566 user5300 19
Программная работа с настройками СКД
Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.
27.01.2020 64843 ids79 26
[СКД] Программное создание схемы компоновки данных
Сделаем отчет на СКД полностью программно, без использования макета «схема компоновки данных».
15.01.2020 43268 John_d 22
Вспомогательные инструкции в коде 1С Промо
Помогаем редактору кода 1С помогать нам писать и анализировать код.
15.10.2018 36045 tormozit 106
Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения
Собрал информацию о событиях/подписках/расширениях в одном месте.
30.12.2019 34937 kuzyara 38
Сходство Джаро — Винклера. Нечеткое сравнение строк
В области информатики и статистики сходство Джаро — Винклера представляет собой меру схожести строк для измерения расстояния между двумя последовательностями символов. В публикации рассмотрены некоторые особенности алгоритма, и представлен вариант его реализации на языке 1С.
25.12.2019 8406 brooho 19
Полезные процедуры и функции для программиста
Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.
07.10.2019 39507 HostHost 41
Оформление и рефакторинг сложных логических выражений Промо
В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.
20.09.2012 82783 tormozit 131
Таблица значений. Нюансы
Обзор некоторых аспектов использования общеизвестного инструмента 1С.
01.10.2019 52665 Yashazz 56
[Шпаргалка] Программное создание элементов формы
Программное создание практически всех популярных элементов формы.
06.09.2019 100978 rpgshnik 75
Агрегатные функции СКД, о которых мало кто знает
Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.
05.09.2019 77044 ids79 56
Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо
Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.
11.07.2007 54312 tormozit 51
Регистры бухгалтерии. Общая информация
Общая информация о внутреннем устройстве регистров бухгалтерии.
05.09.2019 46256 YPermitin 25
Три костыля. Сказ про фокусы в коде
Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.
03.09.2019 30144 YPermitin 81
Иерархия без «В ИЕРАРХИИ»
Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи «Уровни, глубина, прародители, циклы и аналоги запросом» [https://infostart.ru/public/160707/].
22.08.2019 14986 ildarovich 24
Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо
Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки
10.09.2017 51087 tormozit 74
Отслеживание выполнения фонового задания
Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.
17.08.2019 44969 ids79 22
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив
Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.
08.08.2019 150487 ids79 75
Фоновое выполнение кода в 1С — это просто
Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.
02.08.2019 60206 avalakh 26
Выгрузка документа по условию Промо
Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий. А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.
25.04.2019 17987 m-rv 3
СКД — наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты
Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.
26.07.2019 104625 ids79 17
Обработчики событий при записи объектов. Зачем и что за чем?
Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта. Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.
Источник