Как поменять типовые условия в 1с
В данной статье автор расскажет, что такое типовые операции в конфигурации бухгалтерии для госсектора, установит стандарты качества написания типовых операций Часть 1. Знакомство с типовыми операциями. Разбор первой страницы формы типовой операции, корректное создание (копирование), создание правильного и удобного наименования, написание комментария.
Для начала я бы хотел написать, что в принципе сподвигло меня на написание данной статьи, а именно, отсутствие в принципе какой либо информации (во всяком случае в моем информационном поле) касательно темы написания типовых операций для БГУ 2. У меня есть подозрение, что написав такой шикарный адекватный механизм в новой версии (по сравнению с которым БГУ 1 нервно курит в сторонке), методисты расслабились, программисты ушли на перекур, а комьюнити осталось абсолютно обделенным. Приходя во многие учреждения, каких только операций я не видел. Отсутствующие реквизиты в проводках, поголовно все реквизиты вынесенные в дополнительные, на каждом шагу внутри прописаные реквизиты вручную, остатки копи-пасты в виде корявых описаний, а сверху, вишенкой на торте, красуются кривые ЖО, бессмысленные субконто, и не дай бог конечно (если у уникума был доступ к конфигуратору) снятый с поддержки релиз. Эта статья зрела 3 года внутри меня, и наконец-то получила шанс реализоваться.
Что такое типовая операция? Типовая операция это механизм формирования бухгалтерских проводок в конфигурации БГУ 2 (БГУ 1 касаться не будем). На этом моменте колени внедренцев ERP начинают нервно дрожать, ведь аналогичный механизм по хорошему сильно облегчил бы им жизнь во внедрении, но увы и ах, такая прерогатива доступна только госсектору, с его перегруженым учетом. Давайте разберемся для начала, почему для нас никогда не хватит стандартных типовых операций, которые идут из коробки? А дело все в том, что стандартные операции не покрывают наши потребности полностью. Если мы с вами заглянем под капот конфигурации, то обнаружим, что у многих механизмов до сих пор нет оптимального решения, из-за чего каждый раз, когда приходишь туда, где тебя не было (или был, но давно) приходится разгребать громадную свалку.
Как типовые операции могут помочь нам вести учет? Начиная с того, чтобы сделать дополнительные проводки по счетам бухгалтерского учета, заканчивая механизмами, позволяющими нам расставить дополнительную аналитику на счетах буквально за 10 минут. Тоесть это может быть не только мощным механизмом для ведения учета, но и исправления ошибок (которых всегда в достатке). Особенно это актуально при работе во фреше, где вы сильно зажаты рамками.
Итак, приступим. В принципе, для написания мало-мальских операций, вам хватит статьи на ИТС (при наличии подписки ИТС статью вы можете найти по запросу < Настройка типовых операций в редакции 2 "1С:Бухгалтерии государственного учреждения 8" >). Но мы же не за этим здесь собрались, чтобы просто сидеть и читать ИТС, верно?
Начнем мы с того, что рассмотрим, из каких разделов состоят типовые операции. Открыв любую типовую мы с вами увидим:
1) Окно состояния поддержки. Здесь можно изменить состояние поддержки операции. В скопированной операции данное окно заменится ссылкой на типовую операцию оригинал (родитель)
2) Сравнить с поставляемой операцией. С помощью этой кнопки удобно сравнивать скопированные операции с операцией оригиналом (родителем)
3) Галочка "Не используется". Очень полезная штука, особенно когда вы переделываете операции за кем-то, и старье нужно куда-то скрыть с глаз бухгалтеров. Если вы нажимаете данную галочку, то операция перестанет показываться в списках типовых операций. Можно вернуть зайдя в справочник типовых и увидеть их (они будут выделены темно серым цветом)
4) Наименование типовой операции.
5) Документ к которому привязана типовая операция (без этой привязки ее существование невозможно)
6) Условие использования. Грубо говоря это условие отбора, при котором будет показываться операция в списке.
7) Используется внешняя процедура. Эта галочка скажет, что функцию формирования типовой возьмет на себя внешняя процедура.
8) Вкладки разделов типовой операции
9) Галочка устанавливать блокировку. Необходима в документах, где вычисляется стоимость чего-то, например перемещение-списание МЗ.
10) Формула получения организации для проводок
11) Формула получения даты для проводок
12) Условие формирования операции
13) Описание функции (если будете щелкать в разделе бухгалтерские операции в окошечке выше - покажет вам описание функций от разработчиков)
14) Текст при ошибке (напишется, если в проводке не будет соблюдено условие из поля 12
15) Настроить доступ для пользователей
Также наверху вы можете увидеть кнопку "Скопировать операцию", которая была намерено проигнорирована. Сейчас мы с нее как раз и начнем. Формат будет таким: мы рассмотрим составление операции от начала и до конца, в каждом пункте, я буду делать полезные заметки, которые помогут вам, вашим коллегам и вашим бухгалтерам комфортно работать. Так-же я приверженец автоматического импорта/экспорта типовых операций, в следствии чего вы научитесь как писать операции, которые вы сможете потом просто экспортировать в файлик и установить необходимые скопом вашему клиенту меньше чем за минуту (в том числе во фреш).
Сейчас я набросаю подобие задачи, которую мы будем решать в процессе этой статьи:
В нашем учреждении 2 лицевых счета. По одному на каждый КФО (вид средств). Соответственно у нас проблема. При поступлении от поставщика партии, оплаченой единовременно по КФО 2 и КФО 4, денежные обязательства (санкционирование необходимости оплаты) встают сугубо на один раздел лицевого счета. А мы хотим, чтобы мало того, что раздел лицевого счета подтягивался в проводку, но и чтобы он определял сам, какой и где потребуется.
Давайте сразу возьмем за правило, что мы никогда не будем изменять состояние поддержки операции, так как никаких плюсов от этого вы не получите. Просто примите это как аксиому.
Предлагаю изначально не создавать пустую типовую операцию с нуля. Давайте скопируем ту, которая у нас уже есть. В данном случае это "Поступление по договорам купли-продажи, договорам поставки, другим аналогичным договорам" из документа "Поступление МЗ". Чтобы скопировать операцию нажмем на кнопку вверху "Скопировать операцию". На выбор мы увидим три пункта:
1) Установить связь с копируемой операцией
Этот пункт свяжет нашу операцию с оригиналом (родителем). Это даст нам возможность отслеживать изменения в типовой операции. Это очень полезная функция, так как синтаксис типовых операций изменяется и эволюционирует благодаря разработчикам. Без этой связи будет очень легко потеряться. Даже если вы не будете ее использовать - ничего страшного вы все равно не сможете сделать связывая свою операцию с оригиналом, поэтому используйте этот пункт всегда.
2) Установить связь, как у копируемой операции
Этот пункт свяжет нашу операцию с оригиналом (родителем) той операции, которую мы копируем (если он у нее есть). Данный пункт стоит выбирать, если вы будете копировать уже измененную типовую операцию у которой была связь.
3) Не устанавливать связь с операцией
Все логично. Абсолютно бессмысленный пункт по моему мнению. Если вы знаете что-то, чего не знаю я - пожалуйста напишите в комментариях.
Итак, мы выбрали первый пункт и получили новую операцию. Сразу скажу, что типовая операция скопировалась и уже записалась в справочник. Программа не ждет вашего нажатия записи (как обычно), поэтому неопытные пользователи могут насоздавать множество типовых закрывая их и забывая, поэтому будьте внимательны! От оригинала ее отличает отсутствие предопределенности и слово "Копия" перед названием.
Перейдем к формированию названия. Для себя хорошим тоном в написании операции, я считаю необходимость зафиксировать в названии оригинал типовой операции и дописать к ней своеобразный тег. При таком принципе наименования мы сразу с вами поймем, на базе чего строилась операция, какие проводки в теории она будет делать и по тегу мы можем предположить какой у нее смысл. Например, данную операцию я назову "Поступление по договорам купли-продажи, договорам поставки, другим аналогичным договорам \\ АВТО РАЗДЕЛ Л/С //". Сразу возникает вопрос, что я добавил в конце. Таким образом я выделяю свои теги. Вы можете использовать свои варианты с любыми символами. Например, я видел попытки помечать измененные операции плюсами, звездочками и прочим, но мне нравится данный вариант, потому что его никто не использует, он бросается в глаза бухгалтеру, да и встретить 2 слеша или 2 бекслеша в наименовании типовой - это надо постараться конечно (за счет этого я очень быстро нахожу свои операции в справочнике типовых). Написание тега так-же должно быть полностью осознанным. Не пытайтесь писать там проводки или счета корреспонденты. Очень часто я вижу теги из разряда *401.10 дир доп аналитика* в этот момент в голове происходит взрыв. И даже не потому, что из данного описания ничего не понятно, а потому, что сам автор уже забыл, что это и как это. Если кто-то хочет узнать, почему мое наименование более емкое в данном случае - объясняю. У этой операции есть только 1 проводка, которая будет использовать раздел лицевого счета, в данном случае это проводка 502.11 - 502.12. Предполагая, какие операции будут в данной типовой (мы же оставили оригинальное наименование), я могу понять, что здесь будет какая то автоматическая выборка раздела лицевого счета по определенным закономерностям.
Думаю, с наименованием мы разобрались, пойдем дальше. Условие использования трогать не будем. Меня полностью устраивает, что эта типовая возникнет именно в этом разделе и именно с данными отборами (скажу честно, это условие еще и багнутое, поэтому я крайне не рекомендую его изменять).
Последнее, что я бы хотел сделать на этой вкладке, это задать комментарий. И вы можете мне сказать, что его негде оставлять, и вы будете совершенно правы! Господа из 1С, если вы читаете эту статью, пожалуйста, сделайте еще одну вкладку с информацией о типовой операции. Вы можете даже ее не заполнять, она не для вас, она для нас. А теперь к делу. У нас с вами есть огромное бессмысленное поле с условием, в котором мы можем написать с вами послание потомкам или самому себе в будущее (которое позволит вам уже расшифровать ваш тег подробнее). Я предлагаю написать условие, которое точно всегда будет осуществимо.
Что-то вроде такого (сейчас это слабо похоже на то, что должно быть в результате, просто потому, что я пока не уверен в том, через какой механизм я буду это реализовывать, перепишем наш комментарий в перспективе).
Запишем нашу типовую операцию, и на этом пока закончим. В следующий раз я по максимуму постараюсь пройтись по следующим вкладкам. Думаю, будет смысл рассматривать эту статью в комплексе. Пока можете написать, если что-то не так.
Учет зарплаты в программе 1С: Бухгалтерия предприятия ред. 3.0 имеет ограниченный функционал. Многие операции приходится делать вручную. Вот и в вопросах удержания алиментов без таких операций не обойтись. Ранее мы рассматривали вопрос «Как прекратить начисления по исполнительному листу в 1С: Бухгалтерии предприятия ред. 3.0?». Но иногда может возникнуть ситуация, когда нужно не просто отменить, а изменить способ расчета или размер удержания по исполнительному листу. Это может быть, как изменение суммы удержания, так и его процента. В этой публикации об этом и поговорим.
В программе 1С: ЗУП ред. 3.1 есть возможность типовым способом изменять условия исполнительного листа.
К сожалению, в 1С: Бухгалтерии предприятия ред. 3.0 такой возможности нет.
Первичный исполнительный лист тоже исправлять нельзя, иначе при закрытии месяца у нас слетит ранее начисленная зарплата.
Поэтому прибегнем к ручным операциям.
Итак, на сотрудника Сидорченко И.С. пришел исполнительный лист, в котором сказано об удержании алиментов с 01.09.2021 г. в пользу бывшей супруги 50% с суммы начисленной зарплаты. Оклад сотрудника составляет 50 тысяч рублей. Также в письме указано, что с 01.11.2021 г. необходимо уменьшить размер удержаний с 50% до 35%.
Введем данный исполнительный лист в разделе «Зарплата» - «Исполнительный лист».
Начислим заработную плату за сентябрь, убедимся, что удержание произошло.
Проверим расчет: 50000 * 13% = 6500 рублей – это сумма НДФЛ.
50000 – 6500 = 43500 рублей к выплате.
Рассчитаем алименты: 43500 * 50% = 21750 рублей.
Программа все сделала верно.
За октябрь также верно рассчиталась зарплата и алименты.
Далее с 01 ноября нам необходимо изменить условия удержания алиментов.
Для этого в разделе «Операции» выберем пункт «Операции, введенные вручную».
Введем дату 01 ноября.
Далее по кнопке «Еще» активируем команду «Выбор регистров».
В открывшемся окне на вкладке «Регистры сведений» установим галочку «Условия удержания по исполнительному документу».
В нашей операции появился этот регистр.
Введем данные по нему: выберем наш первичный исполнительный лист от 01.09.2021 г., и изменим размер процента с 50% на 35%.
Изменить можно таким способом не только размер удержания, но и способ расчета:
Так, если удержание производится в процентах – то пользователь может изменить и размер этого процента.
Нажмем кнопку «Записать и закрыть» и сделаем начисление зарплаты за ноябрь:
50000 * 13% = 6500 рублей – это сумма НДФЛ.
50000 – 6500 = 43500 рублей к выплате.
Рассчитаем алименты: 43500 * 35% = 15225 рублей.
Программа сделала новый верный расчет.
Только таким способом можно изменить условия удержаний по исполнительным документам в 1С: Бухгалтерии предприятия ред. 3.0.
Документы, которые отражают финансово-хозяйственную деятельность учреждения, могут формировать бухгалтерский проводки. Чтобы упростить работу и автоматизировать этот процесс,в программе 1С:Бухгалтерия государственного учреждения 8 редакции 2.0 существует механизм бухгалтерских операций (совокупность всех проводок, которые формирует один документ). Этот механизм позволяет уменьшить временные затраты. А так как большинство операций носят массовый характер и одинаковы с точки зрения проводок, существует целый справочник типовых операций. О них мы и поговорим в статье.
Найти справочник можно:
Он представляет собой сборник типовых операций, в каждую из которых включены настройки по формированию тех или иных проводок. Обратите внимание, что они в обязательном порядке принадлежат какому-либо документу:
Формируя и заполняя тот или иной документ в программе 1С: БГУ 8 редакции 2.0, обратите внимание на вкладку «Бухгалтерская операция». Это вкладка как раз отвечает за выбор операции и других дополнительных реквизитов. Для примера рассмотрим формирование документа «Заявка на кассовый расход»:
Заполним документ необходимыми данными:
И перейдем на вкладку «Бухгалтерская операция»:
Данная вкладка содержит строку выбора бухгалтерской операции из справочника типовых операций:
Причем открываются только те операции, которые принадлежат текущему документу. Те операции, которые в списке помечены желтой точкой, являются предопределенными данными (то есть, они созданы компанией 1С в соответствии с инструкциями для государственных учреждений, поставляются вместе с программой и периодически обновляются при возникновении необходимости):
После выбора операции форма видоизменяется, и становятся доступны для заполнения дополнительные реквизиты операции:
В списке нашего примера также имеется операция, не помеченная желтой точкой. Такие операции создаются пользователем, если нужны какие-либо коррективы в формировании бухгалтерский проводок:
Рассмотрим создание типовой операции для документа «Заявка на кассовый расход». Удобнее всего это делать на основании имеющейся операции, но с внесением корректировок по нашему желанию.
Рекомендую копировать типовые операции, а не изменять существующие, так как типовые операции, как и вся конфигурация, периодически обновляется, и в случае, когда операция перестанет работать илиначнет работать некорректно – можно сравнить с актуальной операцией от разработчиков 1С и увидеть, какие произошли изменения.
Перейдем снова в справочник типовых операций. В списке документов найдем интересующий нас:
После выбора операции необходимо скопировать эту строку для изменения. Воспользуемся специальной кнопкой:
После нажатия на кнопку появляется диалоговое окно подтверждения:
После подтверждения открывается окно редактирования новой типовой операции:
Первое, что необходимо сделать – изменить наименование.Это важный момент, так как в списке типовых операций отличать их нужно будет по наименованию:
Рассмотрим последовательно основные реквизиты этой формы.
1. Документ – в этом реквизите указывается принадлежность к документу. Редактировать этот реквизит нежелательно.Если нужно создать типовую операцию для другого документа, то лучше скопировать операцию от поставщика, принадлежащую именно тому документу. Это связано с тем, что настройки операции часто привязаны к индивидуальным реквизитам документа, и при изменении документа типовая операция попросту работать не будет.
2. Условие использования – в этом реквизите можно указать условие, по которому будет срабатывать данная типовая операция. Для настройки открывается дополнительное окно:
Теперь рассмотрим вкладки формы.
Вкладка «Формулы»
Эта вкладка разделена на 2 части:
- в левой части в виде дерева перечислены все доступные для формул поля документа (здесь можно выбирать поля; если они ссылочного типа, то доступные поля также раскрываются в новое ответвление дерева);
- в правой части описываются формулы для заполнения реквизитов бухгалтерской операции.
В правой части также имеется реквизит «Устанавливать блокировку в начале вычислений». Он обычно устанавливается в тех операциях, которые подразумевают вычисление остатков. При установке флажка на период вычисления информационная база заблокирует остатки, необходимые для проведения расчета (например, если производится вычисление остатков по основным средствам, то провести перемещение, списание и другие операции по изменению остатков будет нельзя). Вычисление обычно занимает доли секунды, поэтому на работе даже в многопользовательском режиме это сказывается совсем незначительно.
Два стандартных реквизита – «Организация» и «Дата», по умолчанию, берутся из документа.
Следующий реквизит этой закладки – «Условие». Предназначен для назначения условия, по которому будет формироваться операция (в случае положительного результата условия). При создании условия возможно использование функций и процедур, которые описаны в конфигураторе разработчиками 1С.
Вкладка «Дополнительные реквизиты»
На этой вкладке расположены реквизиты операции, отсутствующие в документе, но необходимые для бухгалтерской проводки.
Здесь для наглядности реквизиты можно группировать по папкам. Для каждого реквизита задается признак обязательности (при попытке провести документ без заполненного реквизита, у которого установлен признак обязательности, программа выдаст ошибку и проведение не будет осуществлено). Также на данной вкладке указывается имя для формулы (обратите внимание, что имя формируется в соответствии с правилами имен на встроенном языке 1С: без пробелов, каждое следующее слово в имени - с большой буквы) и тип реквизита (то, какие значения может принимать этот реквизит, например, элемент справочника «Классификационные признаки счетов»).
На этой кладке имеется кнопка «Предварительный просмотр» - удобный инструмент, чтобы увидеть, как будет выглядеть форма с операцией и дополнительными реквизитами в документе:
Дополнительные реквизиты на форме будут сгруппированы именно так, как были сгруппированы нами в папках:
Также на форме имеется реквизит по настройке прав доступа к этой операции (для ограничения доступа, например,специалистам с ролью «Пользователь»):
После рассмотрения титульной формы операции, перейдем к проводкам типовой операции:
Форма представляет собой список проводок, которые формируются в результате типовой операции:
Реквизит «Откл.» - признак активности проводки. Если мы укажем положительное значение в данном столбце, программа никогда (ни при каких условиях) не будет формировать эту проводку:
Реквизит «Усл.» - признак наличия условия.При отсутствии флажка в этом реквизите проводка будет формироваться всегда, независимо от условий. При наличии – только при положительном исходе проверки условия (проводка будет формироваться, если выполняется условие):
Каждую из проводок можно рассмотреть отдельно:
В целом, форма состоит из двух частей: с левой стороны – источники и реквизиты документа для формул; справа – сами формулы.
Рассмотрение начнем с важного реквизита - «Источник данных»:
В этом поле необходимо указать, откуда программа будет брать данные – непосредственно из табличной части документа (в нашем примере – это «Расшифровка платежа» или «Реквизиты документа основания») или из дополнительных источников данных (в нашем примере – это «Таблица расчетов с погашением задолженности» или «Оплата поставщику УСН»). Подчеркну, что выбрать можно только один источник данных: например, при выбранном источнике данных «Расшифровка платежа» реквизиты дополнительных источников недоступны:
Также в левой части среди операнд формул перечислены «Агрегатные функции» и «Функции общего модуля» - это различные варианты вычисления значений, которые могут использоваться при необходимости. Они представлены довольно большим списком от разработчиков 1С, изучив данный список, можно создавать довольно сложные вычисляемые проводки.
Как вы уже поняли, с правой стороны описываются непосредственно формулы для каждой составляющей проводки. Проводка делится на общие реквизиты и реквизиты дебета и кредита. Простым перетаскиванием из левой части в правую операнды из интересующего нас источника данных переносятся в формулы.
И напоследок хотела бы отметить, что также в формулах используется стандартная конструкция:
Представляет собой условие, которое указывается после служебного слова «КОГДА».Далее описываются варианты развития событий: если результат срабатывания условия положительный, используется конструкция после служебного слова «ТОГДА», в противном случае – конструкция после слова «ИНАЧЕ».
На этом рассмотрение создания и изменения типовых операций можно считать оконченным. Напоследок хотелось бы сказать, что изменение типовых операций под ваши требования сильно облегчает непростую задачу ведения учета и, освоив этот механизм, можно упростить многие задачи бухгалтера!
Чтобы подписать договор с контрагентом, о нем нужно иметь такие сведения как ИНН и КПП, адрес, реквизиты банковских счетов и фамилии уполномоченных лиц. Не так давно в «1С:Бухгалтерии 8» появилась возможность формировать все необходимые реквизиты организации для вывода на печать или для отправки в электронной форме. Но это не все способы использования реквизитов контрагентов. Релиз 3.0.37.21 позволяет формировать тексты договоров непосредственно в «1С:Бухгалтерии 8» ред. 3.0 с использованием имеющихся реквизитов организации. О том, как работает новая возможность, читайте в материале экспертов 1С.
Для просмотра и редактирования уже имеющихся шаблонов необходимо открыть их список в разделе Справочники и группе Покупки и продажи (рис. 1).
Рис. 1. Шаблоны договоров в разделе Справочники
В типовой поставке присутствуют шаблоны трех видов договоров (рис. 2).
Рис. 2. Три вида договоров
Открыв любой из шаблонов, вы попадаете в конструктор текста (рис. 3). В нем можно редактировать уже имеющийся текст, для чего в командной панели есть все привычные пиктограммы текстовых редакторов. Кроме того, в тексте желтым цветом выделены шаблоны, позволяющие получать нужные значения из данных, содержащихся в программе – таких, например, как Полное наименование Организации и т.п. Такие конструкции могут быть вставлены в нужные места шаблона – с помощью кнопки Вставить в текст (рис. 4), или заменить уже имеющиеся.
Рис. 3. Редактирование шаблона договора поставки
Рис. 4. Добавление в текст имеющихся реквизитов с помощью кнопки Вставить в текст
Шаблоны можно не только редактировать, но и создавать новые, в том числе, взяв за основу уже имеющиеся. Для этого нужно лишь щелкнуть по кнопке Создать и выбрать в качестве основания один из трех имеющихся шаблонов и внести необходимые изменения в текст, либо создать свой шаблон с нуля.
Каким образом используется шаблон договора? К нему можно обратиться из формы элемента справочника Договоры, который в свою очередь открывается обычным путем (рис. 5,6).
Рис. 5. Справочник «Контрагенты»
Рис. 6. Справочник Договоры
Таким образом, создание печатной формы нового типового договора облегчается в разы и становится удобным как для бухгалтера, так и для руководителя: достаточно урегулировать с юристами текст договора, ввести его в список шаблонов, после чего добавить нового контрагента, его реквизиты, номер и дату договора, а затем сформировать текст для вывода на печать и сохранения в электронной форме. При необходимости ввести в список авторизованных пользователей информационной базы можно юриста организации или сотрудника коммерческого отдела, предоставив доступ только к пакету необходимых объектов для создания договоров.
На момент написания данного материала возможность работы с шаблонами договоров добавлена в типовую конфигурацию «1С:Бухгалтерия 8» версии КОРП, в версии ПРОФ она появится с выходом очередного релиза.
Сегодня мы рассмотрим одну из самых частых задач, с которой сталкиваются специалисты по 1С – доработку отчета типовой конфигурации.
О чем эта статья
В статье рассмотрен пример доработки типового отчета «Расчетный листок» в конфигурации «Зарплату и Управление Персоналом 3.0». На данном примере показываются общие шаги разработчика, в случае если он слабо знаком с конкретной реализацией конкретного типового отчета на базе СКД.
Применимость
В материалах статьи в качестве примера используется конфигурация, «Зарплата и Управление Персоналом», редакции 3 3.0.25.122. Но от этого примеры доработки, продемонстрированные в видео, не стали устаревшими, т.к. акцент сделал именно на логике рассуждений разработчика перед которым поставлена подобного рода задача. Смело смотрите видео, это must have!
В качестве конфигурации выбрали “Зарплату и Управление Персоналом 3.0” – в силу следующих причин:
- Отчеты из ЗУП традиционно считаются сложными
- Иногда даже задача – понять, откуда берутся данные в отчет – вызывает у специалистов сложности.
Что конкретно мы будем делать
Это реальная задача из Мастер-группы – доработаем отчет “Расчетный листок” так, чтобы в шапке выводилась информация о дате приема сотрудника на работу.
Очень простая задача :)
Но есть одна сложность – информацию о дате приема типовой отчет не содержит, её нужно получать с помощью отдельного запроса.
И запрос этот нужно интегрировать в типовой отчет…
А параллельно мы разберем и приемы работы с СКД:
- Анализ программного кода типового отчета – определение точек минимального воздействия на конфигурацию
- Использование расширения языка запросов для системы компоновки данных – выражения в фигурных скобках
- Программное формирование отчета на СКД – доработку процедуры ПриКомпоновкеРезультата
- Вывод результата компоновки в коллекцию – дерево значений
- Доработку текста запроса типового отчета – получение связанной информации
- Работу с настройками компоновки – определение структуры, использование нескольких группировочных полей в одной группировке
- Использование макета – табличного документа при выводе отчета на СКД
- Отладку типового отчета, запущенного в фоновом режиме
Итак, поехали! 21 минута видео :)
Видео 1: Как за 10 минут понять логику формирования типового отчета
В этом уроке приступаем к решению задачи по модификации Расчетного листка в ЗУП 3.0.
Суть задачи состоит в том, чтобы вывести в отчет связанную информацию из других объектов – необходимо запросом получать дополнительные данные.
Но прежде, чем писать код, нужно найти точки минимального воздействия – чтобы внести в конфигурацию как можно меньше изменений.
В данном уроке мы показываем, как понять логику формирования типового отчета на СКД с программным заполнением полей и ручным выводом данных в табличный документ.
Видео 2: Как с помощью 2 строк кода изменить заполнение отчета
В уроке показано, как найти, где хранятся требуемые пользователю данные – это могут быть различные объекты системы. В этой задаче очень помогает умение читать объемные запросы.
В итоге задача решается с минимальными изменениями:
- Новая строка в макете
- Левое соединение в запросе
- Две строки в программном коде.
Также из видео Вы узнаете, для чего в запросе может использоваться конструкция “Выбрать Первые 0”.
Эта тема детально раскрыта в курсе:
Поддержка – 2 месяца. Объем курса – 34 учебных часа.
Не откладывайте свое обучение!
Комментарии / обсуждение (65):
Добрый день! Вопрос по УТ 11. В типовых отчётах добавляются доп. реквизиты. Вопрос: как их исключить из отчетов?
Подробнее.
Существует, примерно, 100 видов номенклатуры, к каждому из которых привязан свой набор доп. реквизитов от 5 до 10).
При изменении варианта отчета, где используется номенклатура, при раскрытии её, вываливается список всех доп. реквизитов. Жуткий тормоз. Можно ли сделать так, чтобы при отборе или добавлении поля, не выводились эти доп. реквизиты?
Добрый день!
Нет, поскольку это платформенный механизм – для справочника Номенклатура в конфигураторе настроены характеристики на уровне объектов метаданных. Поэтому они будут добавляться в список полей номенклатуры при работе с отчетами, динамическими списками, т.е. в механизмах, базирующихся на системе компоновки данных.
Рассмотрите вариант переноса доп. реквизитов в обычные реквизиты справочника Номенклатура. Это должно увеличить производительность описанных действий.
Раньше, помнится, надо было настраивать в СКД на закладке “Характеристики”, а сейчас, выходит, на Табл. часть “Доп. реквизиты” программист повлиять не может?
В УТ 11 не требуется заполнять закладку Характеристики в тексте запроса набора данных.
Дело в том, что в этой конфигурации настроены характеристики на уровне объектов метаданных. Например, можно в конфигураторе обратиться к справочнику Номенклатура, в контекстном меню выбрать пункт Характеристики:
Здесь указано, откуда система будет получать перечень характеристик и их значения.
СКД учитывает эту настройку, поэтому дополнительно прописывать характеристики в запросе не нужно.
По поводу переноса в обычне реквизиты. Дело в том, что у каждого вида номенклатуры свои доп. реквизиты и они не пересекаются. Это сколько же их будет?!
Можно на копии базы сделать тестовый пример, проверить производительность и все остальные аспекты, принять решение, стоит ли выполнять такие действия на рабочей базе.
Добрый день! Прошу помощи подскажите пожалуйста?
Клиент попросил доработать типовой отчет в БП 3.0 , конфигурация на поддержке. Было принято решение сделать отчет внешним, но столкнулся с проблемой…
Сохраняю отчет как внешний и пытаюсь открыть его через файл открыть и тут же выдается ошибка “не известный тип объекта метаданных, ВнешнийОтчет.ЗадолженностьПокупателейПоСрокамДолга”. Как победить эту ошибку? В УТ 11.4 таких проблем не возникало.
Добрый день!
Причина ошибки заключается в том, что у внешнего отчета или обработки в принципе нет модуля менеджера. А у отчета или обработки из конфигурации такой модуль присутствует.
В БП в модуле менеджера отчетов есть программный код, а в УТ – нет. Этим объясняется разница в поведении конфигураций.
При сохранении отчета или обработки во внешний файл модуль менеджера будет потерян. Поэтому нужно учесть этот момент, доработать внешний отчет, например, добавив нужные процедуры в модуль объекта.
Альтернативный вариант – создать расширение, в котором реализовать новый отчет, модуль менеджера в таком случае будет доступен.
>> Также из видео Вы узнаете, для чего в запросе может использоваться конструкция “Выбрать Первые 0”
А я так и не понял для чего используется такая конструкция?
Ведь на выходе такой запрос будет возвращать пустую таблицу с колонками.
А как тогда выбираются данные для этой таблицы?
Добрый день!
Этот текст запроса программно при компоновке отчета будет заменен на сложный запрос, который действительно извлекает данные из базы, а нем уже не будет конструкции ВЫБРАТЬ ПЕРВЫЕ 0.
Текст такого запроса формируется программно из отдельных кусочков, временных таблиц, зависит от различных условий, поэтому указать его непосредственно в отчете не получится.
Но в то же самое время нужно определить, какие поля набора данных должны быть в отчете. Для этого создается фиктивный текст запроса в наборе данных отчета. Он не будет выполняться, единственная его задача – описать поля отчета, а также типы данных этих полей.
Благодарю за ответ.
То, что это не запрос, а его “набросок” – это понятно.
Но не понятно назначение конструкции “ВЫБРАТЬ ПЕРВЫЕ 0”. Ведь если ее убрать (заменить на “ВЫБРАТЬ”), то ничего не изменится, т.к. этот запрос все равно не исполняется, а модифицируется из кода.
Да, конечно, не изменится. Но можно выделить 2 способа использования именно такой конструкции:
1. Она обеспечивает формирование пустого результата запроса с набором колонок нужного типа. Если использовать просто ВЫБРАТЬ, то в результате будут данные (одна строка с пустыми значениями).
2. Это может быть удобным маркером, признаком, что именно этот запрос нужно подменить. Потому что в обычном запросе для получения данных из базы такая конструкция точно не будет применяться.
Да. Действительно. Для получения пустой таблицы, указанного пользователем формата – весьма интересный прием.
Благодарю за ответы.
Пожалуйста. Обращайтесь:)
И приходите к нам на курс по СКД. В Мастер-группе отвечаем на Ваши вопросы по СКД.
Процедура Печать(ТабДок, Ссылка) Экспорт
// Макет = Документы.РасчетСтипендии.ПолучитьМакет(“Печать”);
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| РасчетСтипендии.Дата КАК Дата,
| РасчетСтипендии.Номер КАК Номер,
| РасчетСтипендииСтуденты.Студент КАК Студент,
| РасчетСтипендииСтуденты.Группа КАК Группа,
| РасчетСтипендииСтуденты.ТипСтипендии КАК ТипСтипендии,
| РасчетСтипендииСтуденты.НомерСеместра КАК НомерСеместра
|ИЗ
| Документ.РасчетСтипендии.Студенты КАК РасчетСтипендииСтуденты
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасчетСтипендии КАК РасчетСтипендии
| ПО РасчетСтипендииСтуденты.Ссылка = РасчетСтипендии.Ссылка
|ГДЕ
| РасчетСтипендии.Ссылка В(&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РасчетСтипендииРезультатыСдачи.НомерСтроки КАК НомерСтроки,
| РасчетСтипендииРезультатыСдачи.Предмет КАК Предмет,
| РасчетСтипендииРезультатыСдачи.РезультатСдачи КАК РезультатСдачи,
| РасчетСтипендииРезультатыСдачи.Студент КАК Студент
|ИЗ
| Документ.РасчетСтипендии.РезультатыСдачи КАК РасчетСтипендииРезультатыСдачи
|ГДЕ
| РасчетСтипендииРезультатыСдачи.Ссылка В(&Ссылка)”;
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса[0].Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть(“Заголовок”);
ОбластьИнформацияСтудента = Макет.ПолучитьОбласть(“ИнформацияСтудента”);
ОбластьРезультат = Макет.ПолучитьОбласть(“Результат”);
ОбластьРезультатыСдачиШапка = Макет.ПолучитьОбласть(“РезультатыСдачиШапка”);
ОбластьРезультатыСдачи = Макет.ПолучитьОбласть(“РезультатыСдачи”);
ОбластьЗаголовок.Параметры.Заполнить(Выборка);
ОбластьЗаголовок.Параметры.Дата = Формат(Выборка.Дата, “ДФ=dd.MM.yyyy”);
ТабДок.Вывести(ОбластьЗаголовок);
//ТабДок.Вывести(ОбластьРезультаты);
ОбластьИнформацияСтудента.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьИнформацияСтудента, Выборка.Уровень());
ТабДок.Вывести(ОбластьРезультат);
ТабДок.Вывести(ОбластьРезультатыСдачиШапка);
//Выборка = Выборка.РезультатыСдачи.Выбрать();
//Каждому студенту свои предметы
Выборка2.Следующий();
ОбластьРезультатыСдачи.Параметры.Заполнить(Выборка2);
ТабДок.Вывести(ОбластьРезультатыСдачи, Выборка2.Уровень());
Читайте также: