Типовые операции в 1С: БГУ 2. Часть 3

10.09.21

Разработка - Механизмы типовых конфигураций

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

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

 

 

Колонка 1 - пометка отключения. Проводка с пометкой отключения не будет формироваться даже если условие формирования выполнено.

Колонка 2 - пометка предопределенности. В скопированных операциях ее не будет.

Колонка 3 - установлено условие. Эта колонка говорит нам о том, что проводка формируется при достижении определенного условия.

Колонка 4 "Наименование" - Чисто служебное наименование. Его стоит заполнять осознанно, как и наименование типовой операции.

Колонка 5 "Источник данных" - Место, откуда будут тянуться данные используемые в проводке. Если вы видите надпись "(доп. источник)" в конце, значит используется источник данных, автоматически формируемый самой программой (3 вкладка "Источники данных"). Они заведомо прописаны, и ничего с них вы не получите и не измените без вмешательства в код. Если же вы не видите надписи про дополнительный источник - значит, проводка берет данные из одноименной таблицы в документе.

Колонка 6 "Код" - Служебный код операции. Не будет нас интересовать.

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

Для чего это нужно? Например, отделить определенную группу проводок от другой. Сейчас если я опишу, вряд ли это будет доступно, поэтому коснемся этого чуть позже. Сейчас вам нужно знать только то, что проводки в группе будут проводиться от наименьшего к большему и так пока не закончатся источники проведения, далее алгоритм проведения перейдет к новой группе. 

 

 

Перейдем наконец внутрь операции

Группа и Номер в группе - только что разобрали, далее будем смотреть на практике

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

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

Иерархия операндов формул - это то, из чего мы будем компоновать операцию

Справа видим три вкладки:

Общие реквизиты проводки - реквизиты проводки, которые не принадлежат конкретно дебету или кредиту, а принадлежат строке проводки непосредственно

Реквизиты дебета и Реквизиты кредита - как понятно после написанного выше - реквизиты, принадлежащие либо кредиту, либо дебету.

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

 

 

Возвращаемся к источникам данных.

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

Давайте представим, что мы хотим с вами делать проводку по приемке МЗ. Что нам для этого нужно?

Попытаемся прикинуть проводки, для начала на глаз:
ДТ                                   КТ
105.36                           302.34
Тоесть уже 2 счета. 

11030000000000000    11030000000000244
*Допустим, мы будем спортивным учреждением (поэтому код главы 1103)*
По инструкции ведения бухгалтерского учета нам понадобятся 2 КПС, в данном случае оба КРБ

346                                  73*
2 КОСГУ (КЭК), один из которых оборотный

Один КФО
Одна сумма
Одно количество
Одно наименование первичного документа
Один номер и одна дата первичного документа
Один номер ЖО
Возможно характеристика движения

Но однозначно, еще субконто от счетов. В моем случае субконто от счета 105.36:

Номенклатура
ЦМО
И субконто от счета 302.34
Контрагент
Договор

 

 

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

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

Так вот, где же взять все эти позиции?

Для начала рассмотрим документ. У нас есть сразу счет расчетов, и КПС к нему, контрагент с договором и получатель (ЦМО). Если покопаемся во вкладках, то найдем во вкладке дополнительно еще и информацию о документе поставщика. Не хватает только номенклатуры с ее реквизитами.

Если мы внимательно посмотрим, то очень удобно в табличной части у нас расположилось множество строчек и как раз наш вариант. На каждой строке есть КФО, КПС , счет дебета, номенклатура, количество, сумма, а это уже почти половина.

 

 

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

 

 

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

 


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

У вас уже, наверное, назрел вопрос, а что если мне будет необходимо формировать одну проводку используя 2 таблицы одновременно? Этот вопрос меня тоже мучал первое время, но потом, проанализировав, как собираются проводки в типовой операции, я пришел к выводу, что это невозможно, и единственное правильное здесь решение то, что сделали разработчики 1С. Объяснять почему - не буду. Давайте перейдем к более интересным вещам. Просто запомните - ТОЛЬКО ОДНА ТАБЛИЧНАЯ ЧАСТЬ МОЖЕТ УЧАСТВОВАТЬ В ПРОВОДКЕ.

 

 

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

 

 

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

 

 

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

 

 

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

Ну и собственно раздел ТекущаяПроводка позволяет нам использовать значения уже заполненных реквизитов проводки (удобно, чтобы не переписывать формулы и не дублировать их в других окнах)

 

 

Давайте сейчас еще вкратце рассмотрим с вами пример окна реквизитов дебета.

Как вы видите, у нас есть окна с формулами заполнения и есть поля, в которых мы можем заполнить операции вручную. Так вот, сразу хочу сказать, понравится вам это или нет, но если вы хотите писать типовые операции, которые будут универсальные, которые не отломятся после обновления, которые буду импортироваться-экспортироваться без глобального переписывания - вы ДОЛЖНЫ вытаскивать все реквизиты по формулам. У нас не должно быть ни единого реквизита, заполненного вручную. Только формулы и дополнительные реквизиты! Другого быть не должно! В зависимости от ситуации могут быть совершенно редкие исключения, но поверьте, шанс того, что у вас именно то самое исключение, стремится к нулю!

Все формулы в окошке для формул - есть ничто иное как интерпретация языка СКД с дополнительными функциями из модуля. Именно на языке (чем-то схожем на язык запросов) СКД мы будем с вам направлять нашу типовую операцию.

Теперь стоит поговорить немного о теории программирования. Так как СКД имеет своеобразный язык, мы должны понимать, что мы можем сделать, что мы можем ему дать. Об этом рекомендую почитать у вас в конфигурации. Для этого зайдите в F1 - > Поиск -> В поле поиска вводим "Язык выражений системы компоновки данных". Именно так, как там и описано, мы будем взаимодействовать с СКД. Скажу честно, я начал писать и написал почти половину всего этого в статье, а потом понял, что всем будет удобнее, если вы научитесь пользоваться тем, что у вас под рукой, поэтому научитесь пользоваться поисковиком. Если у вас возникнут какие-либо вопросы по прочтению - можете смело писать комментарии, но в перспективе я покажу все варианты применения (ну или большую их часть) и распишу вам их.

Сразу заострю ваше внимание на том, что я сам заметил на сразу. В самом низу статьи "Язык выражений системы компоновки данных" есть тип ЗНАЧЕНИЕ() и работает он только с перечислениями и предопределенными данными. Если то, что я написал, непонятно - мы это будем рассматривать в следующей части статьи. 

 

Типовые операции в 1С: БГУ 2. Часть 1

Типовые операции в 1С: БГУ 2. Часть 2

Типовые операции в 1С: БГУ 2. Часть 4. Заключение

См. также

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

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

20.08.2024    1852    PROSTO-1C    0    

18

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    1892    Vidz    0    

11

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Очень часто в написании кода требуется обращаться к предопределённым значениям. Если идёт обращение к типовым предопределённым значениям, то проблем не возникает.

24.06.2024    1164    olja-ljaaa    0    

3

Механизмы типовых конфигураций Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

06.05.2024    1272    It-digit    1    

2

Механизмы типовых конфигураций Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

11.04.2024    1114    tango    5    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 08.03.23 18:25
Сообщение было скрыто модератором.
...
2. пользователь 25.06.23 19:34
Сообщение было скрыто модератором.
...
3. user861072 30.11.23 23:21 Сейчас в теме
Здравствуйте!
Я хотела в типовую операцию добавить дополнительную проводку, которая отрабатывала бы только при установке любой валюты в РКО, кроме USD (код у нее 840). Пробовала в условии формирования проводки написать
НЕ Документ.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("840")
- не работает, пишет Ожидается ) ")"
НЕ Документ.ВалютаДокумента = Справочник.Валюты.Код("840")
- не работает, пишет Ожидается ) ")"

Пыталась воспользоваться операндами формул и написала
НЕ Документ.ВалютаДокумента.Код("840") - не работает. Всё также пишет

[ОшибкаНастроекКомпоновкиДанных]
по причине: Ожидается ) ")"

Подскажите, пожалуйста, как можно написать условие на валюту документа. И можно ли вообще?
Оставьте свое сообщение