Ihads.ru

Все про недвижимость
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Программирование в 1С для всех

Изучаем список значений 1С 8.3 (8.2).

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

Работать со списком значений (создавать, заполнять и т.д.) можно и в тонком, и в толстом клиенте.

Программно в конфигураторе 1С создать список значений необходимо при помощи конструктора Новый.

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

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

Цикл «Для…»

Оператор цикла Для предназначен для циклического повторения операторов, в конструкции Цикл – КонецЦикла. Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.

  • Переменная является счетчиком и при каждом повторении цикла автоматически увеличивается на 1. Иначе говоря, это счетчик цикла.
  • Знач1 число, которое задает начальное значение счетчику цикла.
  • Знач2 число, которое задает максимальное значение счетчику цикла. Если значение счетчика цикла становится больше чем Знач2 цикл прекращается.

Пример 1 — Простой обход циклом с счетчиком

На данном примере счетчик цикла Сч при каждом входе в цикл увеличится на единицу, и пока не достигнет значению 11, цикл будет продолжаться.

Пример 2 — Обход с увеличением

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

Рассмотрим конкретный пример в котором попробуем счетчику цикла задать шаг ровной к 5-и:

Пример 3 — С выходом из цикла «Прервать» (проверка на вечный цикл)

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Приведем пример, где Сч, Счетчик, Сдвиг, Шаг, КоличествоСообщений являются переменными. Во избежание вхождения программы в вечный цикл, проводиться проверка и при необходимости цикл прерывается:

*Данный пример мы привели во внешней обработке.

Как установить счетчик Google Analytics на сайт

Установив диспетчер тегов, можно теперь с его помощью установить счетчик. Чтобы это сделать, нужно его для начала получить.

Как получить код счетчика Google Analytics

Чтобы получит код счетчика переходим в Гугл Аналитику и регистрируемся. Затем начинаем создание аккаунта, указывая название, выбирая «веб-сайт» и переходя к следующим настройкам:

Создание аккаунта

Указав требуемую информацию, жмем «Создать», подтверждаем ознакомление с правилами и указываем, какие сообщения о событиях хотели бы получать. Закончив с этим, можно переходить непосредственно к установке кода Google аналитики.

Как установить код Google Analytics через Google Tag Manager

Закончив вышеописанные действия, пользователь получит код, который выглядит так:

Код Google Analytics

Теперь его следует установить на сайт, поместив в шапку между двумя тегами <head></head>.

Читайте так же:
Установка счетчиков учета энергоресурсов

Ну а поскольку у нас уже есть Google Tag Manager, то не будем непосредственно вставлять счетчик в код сайта, а воспользуемся возможностями Диспетчера тегов. Для этого заходим в Tag Manager, выбираем «Контейнер» и жмем на кнопку «Добавить новый тег»:

Диспетчер тегов

Придумываем понятное название для тега и в перечне «Выбор продукта» жмем на Google Analytics:

Диспетчер тегов -2

Затем выбираем тип тега, указывая Universal Analytics, т. к. он предлагает больше разных функций по сравнению с классическим:

Выбираем тип тега

Затем вводим идентификатор счетчика с форматом UA-xxxxxxx-x:

Идентификатор счетчика

Этот идентификатор берут с главной страницы Google Analytics:

Идентификатор счетчика - 2

Указав идентификатор, переходим к следующему пункту «Условия активации», где выбираем «Все страницы» и нажимаем «Создать тег».

Условия активации

Закончив создание тега, содержащего код счетчика Гугл Аналитики, публикуем его. Для этого в правой верхней части выбираем «Опубликовать», и в появившемся окошке жмем «Опубликовать сейчас».

Публикуем тег

На этом установка счетчика окончена, а информация о посещаемости сайта от него станет поступать в сервис Google Analytics в течение следующих 24 часов.

Стань SEO-специалистом и получи новую профессию!

SEO-шников много, профессионалов — единицы. Научитесь технической и поведенческой оптимизации, создавайте семантические ядра и продвигайте проекты в ТОП!

Получить скидку →

Что такое регистр сведений

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

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

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

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

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

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

Свойства регистра сведений. Основные настройки

Основные свойства регистра сведений, уникальные только для этого объекта метаданных — это Периодичность и Режим записи. Рассмотрим создание и настройку регистра сведений на примере хранения тарифов работников.

Периодичность регистра сведений

Данное свойство отвечает за доступность стандартного реквизита Период. Периодичность может быть

  • В пределах секунды
  • В пределах дня
  • В пределах месяца
  • В пределах квартала
  • В пределах года

В случае, если регистр сведений подчинен регистратору (см. ниже), становится доступным еще один вариант периода — по позиции регистратора.

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

Читайте так же:
Нева счетчик 124 программирование
Режим записи регистра сведений 1С

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

Что такое ведущее измерение и основной отбор?

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

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

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

Проектирование структуры регистра сведений

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

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

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

Например, мы хотим знать, какие материально ответственные лица закреплены за тем или иным складским помещением. Если таких МОЛ более одного человека, то правильная архитектура регистра будет такая:

Измерения: МОЛ
Ресурсы: Склад

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

Счетчик просмотров страницы на PHP + cookie

недавно я публиковал материал на тему создания счетчика просмотров страниц. Но там он считает общее количество просмотров всеми посетителями. Здесь же мы сделаем некую индивидуальность и покажем сколько раз каждый их юзеров был на этой странице. Благо делается он очень просто. Вот его код:

Читайте так же:
Функции сброса счетчиков предоставлены только для специальных условий

setcookie(‘name’, »); setcookie(‘name’, ‘$value’, time()-86400);

Потом просто выводим на странице переменную count. Протестировать и посмотреть пример работы PHP cookie можно на этой странице:

Делаем Счетчик более полезным

Вы можете использовать Счетчик таким образом, чтобы пользователь мог вводить значения на листе простым нажатием кнопки, вместо ввода вручную с клавиатуры. Вероятно, у Вас возникает вопрос: как быть, если значения, которые должен ввести пользователь не целые числа в диапазоне от 0 до 30000?

Решение есть – используйте промежуточную ячейку для вычисления нужного Вам значения. Например, если Вы хотите, чтобы пользователь вводил значения между 0% и 5% с шагом 0,1%, нужно масштабировать значение, которое дает счетчик, чтобы получить результат от до 0,05 с шагом 0,001.

Есть множество вариантов, как это можно реализовать математически и, если Ваше решение работает, то не имеет значения, как Вы это сделали. Вот одно из возможных решений: кликните по счетчику правой кнопкой мыши, выберите Format Control (Формат объекта) и установите Minimum Value (Минимальное значение) = 0, Maximum Value (Максимальное значение) = 500 и Incremental Change (Шаг изменения) = 10. Установите связь с ячейкой A1. Далее в ячейке A2 запишите формулу =A1/10000 и примените к ней процентный числовой формат с одним десятичным знаком.

Теперь, нажимая на кнопки счетчика, Вы получите в ячейке A2 именно тот результат, который необходим – значение процента между 0% и 5% с шагом 0,1%. Значение в ячейке A1 создано счетчиком, но нас больше интересует значение в ячейке A2.

Всегда, когда нужно получить значение более сложное, чем целое число, используйте подобное решение: масштабируйте результат, полученный от счетчика, и превращайте его в нужное значение.

Интерактивные элементы в Excel

Срез последних

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

Добавим в регистр еще несколько записей:

Срез последних

Получим срез на 15 апреля:

Будет получена следующая таблица значений:

ПериодТоварТипЦенЦена
10.04.2021ТумбочкаОптовая20
10.04.2021ШкафОптовая200

Алгоритм выполнения данного метода следующий:

  • Получается выборка из регистра сведений, у которых поле Период <= параметру дата. Если был передан отбор, то добавляется условие по переданным значениям отбора.
  • Полученная выборка сворачивается по всем комбинациям измерений, а для поля период применяется агрегатная функция МАКСИМУМ.
  • Полученная таблица соединяется с основной таблицей регистра по всем измерениям и периоду.
  • Из того что получилось выбираются нужные поля.

Запрос, который выполняет СУБД для получения среза последних выглядит следующим образом:

На практике метод СрезПоследних почти не применяется, потому что гораздо удобней пользоваться виртуальной таблицей СрезПоследних. Данная таблица называется виртуальной, потому что она не хранится физически в СУБД, а формируется непосредственно при выполнении запроса. Запрос, который выполняется для получения данной таблицы такой же как для метода СрезПоследних. Также у виртуальной таблицы есть два параметра: дата и отбор. Состав полей виртуальной таблицы совпадает с составом полей основной таблицы регистра.

Рассмотрим использование данной таблицы на примере:

В параметрах можно использовать произвольные отборы по любым измерениям, реквизитам и ресурсам:

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

Также отбор через параметры виртуальной таблицы и в предложении ГДЕ может приводить к разным результатам запроса. Например, нужно получить все товары, на которые когда либо была установлена цена в 100 рублей. Если установить отбор в параметрах виртуальной таблицы:

То в результате будет получен Шкаф, на который была установлена цена в 100 рублей 1 апреля:

Срез последних

А если установить отбор в предложении ГДЕ:

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

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

Опубликовано 13 сентября 2011

таблица значений 1С

(Эта статья относится к циклу статей 1С с нуля; программирование 1с с нуля; таблица значений 1с)

В прошлой статье я рассказывал о создании таблицы значений 1с и способам обращения к данным, которые в ней содержатся.

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

1. Перебор строк таблицы значений при помощи индексов строк (номеров строк)

Метод ТаблицаЗначений.Количество() — возвращает количество строк в таблице значений.

Напоминаю, что если метод ТаблицаЗначений.Количество() показал, что в таблице 5 строк, то индексы(номера) этих строк такие: 0, 1, 2, 3, 4.

Предположим, что мы имеем таблицу значений 1С с колонкой «ФамилияКлиента»

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

Обратите внимание, что счетчик цикла мы наращиваем до значения, равного числу строк таблицы минус один: НашаТаблица.Количество() — 1

Давайте выясним, что означает код: НашаТаблица[НомерСтроки]. Это и есть обращение к конкретной строке таблицы значений по ее индексу (номеру).

В следующем примере я покажу, как НашаТаблица[НомерСтроки] возвращает нам объект, который имеет тип «СтрокаТаблицыЗначений» .
В дополнительную переменную я помещаю результат обращение к строке по номеру: СтрокаТаблицы = НашаТаблица[НомерСтроки]

Далее, получив объект — одну строку таблицы значений в виде переменной СтрокаТаблицы, мы можем работать отдельно с этим объектом-строкой. Пример ниже делает тоже самое, что и пример выше, только в нижнем примере использована «лишняя» переменная СтрокаТаблицы

Если внутри цикла мы напишем такой код: Сообщить(СтрокаТаблицы) — этот код НЕ выведет на экран данные из текущей строки таблицы значений (например фамилию клиента и прочее).

Все правильно, потому что переменная СтрокаТаблицы представляет собой объект и доступ к данным осуществляется через свойства и методы этого объекта — а если написать Сообщить(СтрокаТаблицы), то на экран будет выведена информация о типе переменной СтрокаТаблицы: СтрокаТаблицыЗначений.

Например, код СтрокаТаблицы.ФамилияКлиента как раз означает доступ к данным, хранящимся в колонке «ФамилияКлиента» у текущей строки-объекта. Чем мы и воспользовались в примере, чтобы вывести фамилии всех клиентов, хранящиеся в таблице значений. Перебирая все строки и выводя на экран по очереди эти самые фамилии.

2. Перебор строк таблицы значений при помощи цикла перебора коллекции «Для Каждого. «

Для перебора строк таблицы значений 1С мы можем воспользоваться другим вариантом цикла. Это специальный цикл для перебора элементов объектов-коллекций. Таблица значений 1с представляет из себя так называемую коллекцию. В данном случае — коллекцию строк.

А любую коллекцию в 1С можно перебрать при помощи цикла:

Выведем все фамилии клиентов из всех строк таблицы, при помощи перебора коллекции строк таблицы значений:

При переборе коллекции нам не понадобился счетчик номеров строк (индексов). Специальная форма цикла помогла обойтись без счетчика. В произвольную переменную СтрокаТаблицы при каждом проходе цикла автоматически присваивается объект-строка таблицы значений.

Таким образом в СтрокаТаблицы по мере выполнения цикла, подряд попадают все строки нашей таблицы значений. А мы только и делаем, что у каждой переданной нам строки выводим на экран содержимое колонки «ФамилияКлиента» с помощью конструкции Сообщить(СтрокаТаблицы.ФамилияКлиента);

3.А сейчас: повторение материала.

Итак, таблица значений 1С является коллекцией строк. Кто-то коллекционировал строки, складывал их в кучу, и получилась целая такая коллекция строк — которую назвали — таблицей значений.

Только это коллекция не просто обычных текстовых строк. Это коллекция объектов типа СтрокаТаблицыЗначений. И этот отдельный объект-строка хранит в себе данные для каждой колонки в текущей строке. Он хранит фамилию клиента, рост клиента или что-то там еще, что было нужно.

Получить доступ к строке таблицы значений можно по ее индексу, который начинается с нуля. При помощи кода МояЧетвертаяСтрока = МояТаблица[3] — мы получаем четвертую строку таблицы значений, так как нумерация строк начинается с нуля: 0, 1, 2, 3.

Число строк мы определяем методом МояТаблица.Количество(). Скобки в конце не забываем, так как мы вызываем метод без параметров.

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

Последнее: При переборе коллекции, как получить номер строки таблицы значений?
Получить номер текущей строки можно вызовом метода Индекс() для таблицы значений, в который мы передаем объект-строку.

Пример ниже выведет на экран номера всех строк в таблице значений 1С:

Продолжение материалов будет в следующих статьях.

Как научиться программировать в 1С с нуля?

Как работать программистом 1С и получать до 150 000 рублей в месяц?

ЗАПИШИСЬ НА БЕСПЛАТНЫЙ

«ПРОГРАММИРОВАНИЕ в 1С ДЛЯ НОВИЧКОВ»

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector