Найти в Дзене
Заметки об 1с

Практическое пособие разработчика, занятие 6. (Радченко)

1. Для чего предназначен объект конфигурации "Регистр накопления"?
Официальное и скучное определение из книжки - Регистр накопления предназначен для описания структуры накопления данных.
Теперь немножко факультатива, потом дойдем и поговорим подробнее. Собирать информацию непосредственно из документов/справочников - это долго и непродуктивно. Поэтому разработчики вынесли регистры в отдельный механизм платформы, у которого есть свои фишечки для ускорения работы. Регистры нам в дальнейшем подарят возможность пользоваться виртуальными таблицами и расчетом итогов. То есть вот в книжке по примеру у нас регистр, который считает количество материалов на складе. И мы хотим узнать, а сколько и чего у нас вообще лежит - без регистра мы заставим компьютер сходить в документ 1, посчитать, сколько там нам привалило материалов, сходить в документ 2, посчитать, сколько там, потом не забыть сходить в документы, которые списывают материалы, и посчитать и их тоже... а механизм регистров будет считать ит

1. Для чего предназначен объект конфигурации "Регистр накопления"?
Официальное и скучное определение из книжки - Регистр накопления предназначен для описания структуры накопления данных.
Теперь немножко факультатива, потом дойдем и поговорим подробнее. Собирать информацию непосредственно из документов/справочников - это долго и непродуктивно. Поэтому разработчики вынесли регистры в отдельный механизм платформы, у которого есть свои фишечки для ускорения работы. Регистры нам в дальнейшем подарят возможность пользоваться виртуальными таблицами и расчетом итогов. То есть вот в книжке по примеру у нас регистр, который считает количество материалов на складе. И мы хотим узнать, а сколько и чего у нас вообще лежит - без регистра мы заставим компьютер сходить в документ 1, посчитать, сколько там нам привалило материалов, сходить в документ 2, посчитать, сколько там, потом не забыть сходить в документы, которые списывают материалы, и посчитать и их тоже... а механизм регистров будет считать итоги сам, без обращения ко всем документам

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

3. Для чего нужны измерения регистра, ресурсы и реквизиты?
Измерения -
в чем будем мерять - вернемся к детскому мультику, где животные меряли удава, и удав это два слоненка, пять мартышек и 38 попугаев. В нашем случае два измерения - Материалы и Склады.

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

-2

или только в разрезе "склады" (хотя в данном примере это бессмысленно)

-3

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

4. Что такое движение регистра и что такое регистратор?
Движение - это набор записей, помещенный в регистр. Регистратор - это объект, который инициировал создание этого набора записей. В понятиях 1с регистратором выступает документ. И как мы раньше говорили, не проведенный документ - это черновик, он еще не оказал воздействия на систему, а проведенный документ уже отражает факт наступившего реального события.

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

6. Как создать движение документа с помощью конструктора движений?
Правый клик по документу в дереве конфигурации - изменить - переходим на вкладку "Движения". Выбираем регистр, для которого будем формировать движения и жмем на кнопку "Конструктор движений":

-4

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

-5

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

7. Как с помощью встроенного языка обойти табличную часть документа и обратится к её данным?
В книжке нам на текущий момент рассказывают о цикле "Для Каждого... Из...". Есть и другие способы и циклы, но пока остановимся на этом.
Возьмем упрощенный пример и пройдем его по шагам.
Я взял документ
"Приходная накладная", и вот такой упрощенный код:

-6

Предположим, что этот код будет выполнятся на первом документе - вот на этом:

-7

Что есть в этом коде - Материалы - это собственно табличная часть документа:

-8

Код говорит нам - для каждой строки из этой табличной части делай какие-то действия, то есть ТекСтрокаМатериалы это и будет текущей строкой.
Вместо
ТекСтрокаМатериалы можно написать просто Строка (или даже Артем, именно это наименование не столь важно), только код придется немного переделать:

-9

Если мы переименуем "Материалы", то код работать не будет.
Итак, пойдем последовательно. Наша программа начинает цикл. И берет первую строку:

-10

Через точку (Строка.) можно обратится к любой колонке этой строки.
Строка.Количество
будет равно 10, Строка.Цена будет равно 270, Строка.Сумма будет равно 2700, Строка.Материал будет равно Строчный трансформатор GoldStar.
Если я напишу Строка.Склад - то программа выпадет в ошибку, потому что в данной таблице нет такой колонки.
Если мы вместо строки выше назвались Артемом, то код будет
Артем.Количество и т.д.
В следующей итерации цикла нам попадет вторая строка и так, пока не закончатся строки в таблице.

8. Как показать команды открытия списка регистра в интерфейсе конфигурации и в интерфейсе форм?

Для подсистем - правый клик мыши в дереве конфигурации по подсистеме, выбрать команду Открыть командный интерфейс, и проставить галочку:

-11
-12

Для документа - открыть в конфигураторе форму, перейти на вкладку "Командный интерфейс" и проставить галочку

-13

Если у вас на вкладке "Перейти" не появляется "Остатки материалов", сохранитесь, закройте конфигуратор и откройте заново.