Строка

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

Внутри раздела ‘Строка’ можно создать следующие разделы:

image-1648649210622.png

  • Параметры – содержит описания параметров, переменных и выражений.
  • Классификация – содержит описание классов и типов строк.
  •  Формы – содержит описания форм для ввода строк.
  •  Выборки – содержит описания простых выборок, применяемых для отбора строк.
  •  Виды просмотра – содержит описания видов просмотра, работающих от контекста строки.
  •  Схемы копирования строк - содержит описания схем создания одной строки  на основе другой. Схемы применяются при описании методов и процедур.
  •  Процедуры – в данном разделе описываются процедуры, которые обрабатывают одну строку документа.
  • Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
  •  Доступные параметры – не используется.
  • Отчеты – содержит описания отчетов, обрабатывающих одну строку.

Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).

Рассмотрим описание строк на примере.

Пример описания строк

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

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

  • Параметры строк
  • Классы и типы для строк
  • Классы и типы для партионных строк
  • Формы ввода строк
  • Вид просмотра строк
  • Сценарии для форм, видов просмотра и контекстных меню

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

Рассмотрим возможный вариант действий автора проекта.

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

Обсуждение примера было начато в главе ‘Документ’ и будет продолжено в главе  ‘Проводка'.

Параметры строки

Описание базовых параметров строки находится в базовом разделе ‘Системная область’.

image-1648649291505.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648649307878.png

При выборе параметра необходимо обращать внимание на тип данных.

На этом этапе можно провести еще одно исследование.

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

image-1648649328272.png

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

Классификация строк

Базовый класс строки описан в базовом разделе ‘Системная область’.

image-1648649353829.png

В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы строк.

Классы строк ссылаются на базовый класс. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’ и ‘Права на выполнение действий над объектом’.

image-1648649373826.png

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

image-1648649389776.png

  • Наследование – условие наследования от данного класса.
  • HFle definition – используется программистами.
  • Доступные параметры – не используется.
  • Структура (Состав, Содержание) – содержит список классов и типов. Наследников строк данного класса можно создавать только таких типов, которые перечислены в указанном списке.
  • Методы – содержит описания базовых алгоритмов обработки строк.

            Можно указать следующие методы обработки: 

image-1648649407504.png

      • Акцепт. Предварительная проверка (до проведения расчетов) – действия, выполняемые на этапе проверки перед акцептом.
      • Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок – действия, выполняемые на этапе перед расчетом проводок.
      • Акцепт. Действия после всех расчетов и собственно акцепта – действия, выполняемые на последнем этапе акцепта.
      • Пре-Деакцепт – действия, выполняемые на этапе перед деакцептом.
      • Деакцепт – действия, выполняемые на этапе деакцепта.
      • Пост-Деакцепт – действия, выполняемые на этапе после деакцепта
      • Короткий акцепт – действия, выполняемые в режиме короткого акцепта.
      • Короткий деакцепт – действия, выполняемые в режиме короткого деакцепта.
      • Удаление – действия, выполняемые при удалении строки.
      • Действия после изменения и сохранения объекта (в транзакции) – действия, выполняемые после сохранения строки.

Методы создаются программистами и системными администраторами проекта. Авторы проектов имеют возможность указать в методах необходимые им процедуры.

  • Процедуры – содержит список процедур для методов.
  • Форма ввода объекта – задает форму ввода для строк данного класса.
  • Сценарий – для описания контекстного меню строки, вызываемого при нажатии правой кнопки мыши.
  • Проводки – для описания правил формирования проводок в процедуре акцепта строки. Проводки указываются отдельно для каждого плана счетов.
  • Удалять вместе с родителями – при установленном признаке строка данного класса будет удалена в момент удаления родителя объекта. Другими словами, строка данного класса должна присутствовать в БД только вместе со своим родителем.
  • Права на выполнение действий над объектом – определяет условия выполнения основных действий с записью строки.

image-1648649427261.png

      • Создание – список условий, при выполнении которых разрешается создать новую запись строки.
      • Изменение – список условий, при выполнении которых разрешается изменить запись строки.
      • Удаление – список условий, при выполнении которых разрешается удалить запись строки.
      • Акцепт – не используется.
      • Деакцепт – не используется.

Типы строк созданы на основе классов.

image-1648649442888.png

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

В предыдущей главе при описании документов были выбраны типы строк для рассматриваемого примера. Для документов типа ‘Приход товаров’ был выбран тип строки ‘Приход товаров от поставщика’, а для документов типа ‘Реализация за наличный расчет’ – тип строки ‘Реализация (продажа) товара через кассу’.

Посмотрим на описание атрибутов у этих типов.

image-1648649460207.png

Для данного типа строки заданы форма, методы, сценарий и правила формирования проводок по двум планам счетов.

image-1648649476454.png

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

Подробнее о настройке проводок написано в главе ‘Проводки’.

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

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

Учет по партиям

Учет товаров по партиям означает полную идентификацию каждой поставки товаров. При оформлении очередной поставки создается новый партионный товар, в котором записываются характеристики поставки. В дальнейшем учитываются все возможные перемещения товаров данной партии, в том числе реализация. Такой подход позволяет в любое время получить информацию о состоянии дел с товарами из конкретной поставки: местонахождение товаров, количество и цены проданных товаров, прибыль от реализации товаров и пр.

На уровне строк документа партионный учет реализуется следующим образом.

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

Строка называется партионной, поскольку в нее записывается ссылка на партию товара.

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

image-1648649497237.png

image-1648649505003.png

Для типов строк указаны формы, признак удаления строки при удалении родителя и правила формирования проводок по двум планам счетов.

Форма строки

Для ввода четырех выбранных типов строк необходимо описать формы ввода. Рассмотрим подробнее те формы, которые заданы в описаниях типов.

Все формы находятся в библиотеке ‘# Товародвижение’, раздел ‘Строка’, раздел ‘Форма’.

image-1648649523143.png

image-1648649531121.png

image-1648649538786.png

image-1648649546881.png

Для форм указан только атрибут ‘Список полей формы’. Поскольку подстановки перечисленных форм в проекте не заданы, то описания других атрибутов следует искать у форм-родителей.

image-1648649561803.png

image-1648649568924.png

От родителей будут наследованы значения атрибута ‘Сценарий’ и признак ‘Добавление нескольких объектов в цикле’.

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

  • Можно создать подстановку данной формы и изменить значение атрибута ‘Список полей формы’.
  • Можно создать новую форму и новую подстановку типа строки. В подстановке потребуется указать ссылку на созданную форму.

Вид просмотра строк

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

Такие виды просмотра могут быть расположены в разделе ‘Виды просмотра’ раздела ‘Документы’.

Ранее, при описании формы документа, упоминались виды просмотра строк ‘Строки приходного документа от поставщика’ и ‘Строки расходного документа’. Рассмотрим эти виды просмотра подробнее

Вид просмотра ‘Строки приходного документа от поставщика’

В библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Виды просмотра’ находится вид просмотра ‘Строки приходного документа от поставщика’.

image-1648649590104.png

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

  • Вид просмотра отображает строки типа ‘Приход товара от поставщика’.
  • При работе с видом просмотра разрешено создавать строки типа ‘Приход товара от поставщика’.
  • Для просмотра наследников строки (т.е. партионных строк) применяется вид просмотра ‘Строки партионного распределения (с закупочной ценой)’.
  • В указанный список полей вида просмотра добавляются поля из родителя вида просмотра.
  • Описание сценария разберем позже.

Родитель данного вида просмотра содержит описание итогов.

image-1648649605449.png

Указан расчет пяти величин по строкам документа: общее число строк, общее количество товара, суммы по двум ценам, сумма НДС.

Вид просмотра ‘Строки расходного документа

Данный вид просмотра находится в библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Виды просмотра’.

Изучим описание самого вида просмотра и описание родителей. Если бы существовали подстановки у этих видов просмотра, то необходимо было бы учесть изменение значений атрибутов в подстановках. 

image-1648649624059.png

image-1648649630568.png

image-1648649638061.png

Результат исследования показывает наличие следующих атрибутов у рассматриваемого вида просмотра:

  • В указанный список полей вида просмотра добавляются поля из дальнего родителя вида просмотра (вид просмотра ‘Строки товарного документа’).
  • Для просмотра партионных строк применяется вид просмотра ‘Строки партионного распределения’.
  • Вид просмотра отображает строки любых типов, не имеющие родителей. Т.е. партионные строки отображены не будут.
  • Указан расчет трех итоговых величин.
  • Описание сценария разберем позже.

Теперь изучим виды просмотра партионных строк.

Вид просмотра ‘Строки партионного распределения (с закупочной ценой)’

Данный вид просмотра вызывается из вида просмотра ‘Строки приходного документа от поставщика’ и применяется для просмотра сформированных партионных строк.

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

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

От родителя вид просмотра наследует описание двух итоговых величин.

image-1648649657089.png

image-1648649664831.png

Вид просмотра ‘Строки партионного распределения’

Данный вид просмотра вызывается из вида просмотра ‘Строки расходного документа’ и применяется для просмотра сформированных партионных строк.

image-1648649681962.png

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

Следует отметить, что если какие-либо значения атрибутов не соответствуют нашим требованиям, то можно либо создать новый вид просмотра, либо применить подстановку вида просмотра для изменения значений атрибутов.

Сценарии для строк

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

Контекстное меню

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

Для типов строк ‘Приход товара от поставщика’ и ‘Реализация (продажа) товара через кассу’ сценарии указаны в подстановках этих типов.

image-1648649701692.png

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

image-1648649717011.png

Сценарий для типа строки ‘Реализация (продажа) товара через кассу’ содержит всего один пункт.

image-1648649732046.png

Сценарии для видов просмотра

Теперь разберем указание сценария в видах просмотра строк. Сценарий в виде просмотре определяет панель инструментов.

Первый вид просмотра, который нас интересует, - это ‘Строки приходного документа от поставщика’.

image-1648649749406.png

Наследуемые пункты следует искать у родителей данного сценария. Поскольку для вида просмотра ‘Строки товарного документа (Итоги по закупочной цене)’ сценарий не указан, то продолжаем поиск у следующего родителя.

Сценарий имеется у вида просмотра ‘Строки товарного документа’.

image-1648649765251.png

Переходим ко второму виду просмотра - ‘Строки расходного документа’.

Для этого вида просмотра сценарий не задан, поэтому по правилу наследования будет применен сценарий из того вида просмотра – родителя, у которого сценарий имеется.

Таким видом просмотра является ‘Строки товарного документа’.

Теперь рассмотрим виды просмотра партионных строк. Здесь все просто – имеются сценарии с полным описанием.

image-1648649781011.png

image-1648649787705.png

Сценарии для форм

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

Ни одна из рассматриваемых форм (‘Приход от поставщика’, ‘Приход от поставщика (партия)’, ‘Расход (Реализация) через кассу’, ‘Расход (Реализация) (партия)’) не содержит описание сценария. Последовательно просматриваем родителей форм. В описании одного из родителей (оказалось, что найденная форма является дальним родителем для всех форм) сценарий имеется.

image-1648649803113.png

Этот сценарий будет применен во всех формах.

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

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

Этапы выполнения акцепта строки

В продолжении темы, начатой в предыдущей главе ‘Документ’, необходимо привести алгоритмы выполнения акцепта строки.

Акцепт строки является составной частью акцепта документа и приводит строку в акцептованное состояние. 

Этапы выполнения акцепта строки и связанные с ними методы
  1. Проверка допустимости акцепта по условиям, заданным в методе ‘Акцепт. Предварительная проверка (до проведения расчетов)’. Если строка акцептуется внутри акцепта документа, то данный этап выполняется одновременно для всех строк.
  2. Проверка того, что указанная строка не акцептована. Если строка  уже акцептована, то процедура акцепта прерывается.
  3. Открытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
  4. Выполнение действий, указанных в методе  ‘Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок’.
  5. Расчет проводок.
  6. Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
  7. Закрытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
  8. Выполнение действий, указанных в методе ‘Акцепт.Действия после всех расчетов и собственно акцепта’.  Если строка акцептуется внутри акцепта документа, то данный этап выполняется одновременно для всех строк.

При акцепте строки не проверяется допустимость акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’. Отсутствие проверки вызвано требованием уменьшить время выполнения акцепта.

Для изменения состояния строки (‘акцептована’) необходимо в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’ указать вызов процедуры ‘МЕТОД. Стандартный (базовый) акцепт строки’.

Этапы выполнения короткого акцепта строки и связанные с ними методы
  1. Проверка того, что указанная строка не акцептована. Если строка  уже акцептована, то процедура акцепта прерывается.
  2. Открытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
  3. Выполнение действий, указанных в методе  ‘Короткий Акцепт’.
  4. Расчет проводок.
  5. Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
  6. Закрытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
Этапы выполнения деакцепта строки и связанные с ними методы
  1. Проверка того, что указанная строка акцептована. Если строка  уже деакцептована, то процедура деакцепта прерывается.
  2. Выполнение действий, указанных в методе  ‘Пре-деакцепт’. Если действия завершаются с ошибкой, то процедура деакцепта прерывается. Если строка деакцептуется внутри деакцепта документа, то данный этап выполняется одновременно для всех строк.
  3. Открытие транзакции.
  4. Выполнение действий, указанных в методе  ‘Деакцепт’.
  5. Закрытие транзакции.
  6. Выполнение действий, указанных в методе  ‘Пост-деакцепт’. Если строка деакцептуется внутри деакцепта документа, то данный этап выполняется одновременно для всех строк.
Этапы выполнения короткого деакцепта строки и связанные с ними методы
  1. Проверка того, что указанная строка акцептована. Если строка  уже деакцептована, то процедура деакцепта прерывается.
  2. Открытие транзакции.
  3. Выполнение действий, указанных в методе  ‘Короткий Деакцепт’.
  4. Закрытие транзакции.

Процедуры для акцепта и деакцепта строк

При описании методов используются процедуры-методы из раздела ‘Процедуры’ верхнего уровня библиотеки или из раздела ‘Процедуры’ внутри раздела ‘Строка’.

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

image-1648649828354.png

image-1648649836998.png