Как быстро, при помощи расширений, доработать движения регламентированного учета в ERP 2.4 или KA 2

26.11.18

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

Для тех, кому предстоит поработать с отражением документов в регламентированном учете в конфигурациях ERP 2 и KA 2.

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

Возвращаясь к заголовку, в этой статье, на простом примере, я расскажу, как это можно сделать.

Сокращения:

РУ – регламентированный учет

УУ – управленческий учет

Итого что мы имеем:

  • конфигурация: ERP 2.4.5.24;
  • версия платформы 8.3.12.1616.

P.S. В конфигурации комплексная автоматизация 2 можно использовать такой же алгоритм, какой будет описан ниже.

Некое лирическое отступление:

Есть некоторые спорные моменты - как быть если нужно добавить некоторые объекты в систему? На проектах, команда разработчиков, частью которой я являюсь, договорилась, что все новые объекты конфигурации, мы добавляем именно в основную конфигурацию, а всю новую логику мы выносим в расширение. С чем это связано? С тем, что нет четкой уверенности, как поведет себя платформа, например, с данными новых реквизитов при отключении расширения. Есть мнение что им может прийти конец. Риск – дело благородное, но у клиента на этот счет может быть иное мнение. Плюс ко всему, новые объекты конфигурации не сильно осложняют последующие обновление конфигурации, да конфигурация «вскрыта», но сравнение и объединение пройдет быстро.

Постановка задачи:   

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

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

Решение:

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

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

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

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#КонецЕсли

Пример как это может выглядеть приведен ниже:

Здесь видно, что при помощи директивы «&Вместо» мы подменяем функции модуля менеджера основной конфигурации, на нужные нам (копируем код и правим).

Далее осталось только отредактировать запрос в нашей новой функции:      

///////////////////////////////////////////////////////////////////////////////////////////////
|	НЕОПРЕДЕЛЕНО КАК МестоУчетаДт,
|	Операция.ВалютаВзаиморасчетов КАК ВалютаДт,
//+ Некоторый комментарий
//  Операция.Подразделение КАК ПодразделениеДт,
|	РеализацияТоваровУслугТовары.ИС_Подразделение КАК ПодразделениеДт,
//- Некоторый комментраий
|	ЕСТЬNULL(Расчеты.НаправлениеДеятельности, Операция.НаправлениеДеятельности) КАК НаправлениеДеятельностиДт,
///////////////////////////////////////////////////////////////////////////////////////////////
	
///////////////////////////////////////////////////////////////////////////////////////////////
|	ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК МестоУчетаКт,
|	ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаКт,
//+ Некоторый комментарий
//  Операция.Подразделение КАК ПодразделениеКт,
|	РеализацияТоваровУслугТовары.ИС_Подразделение КАК ПодразделениеКт,
//- Некоторый комментарий
|	Операция.НаправлениеДеятельности КАК НаправлениеДеятельностиКт,
|	ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетКт,
///////////////////////////////////////////////////////////////////////////////////////////////

Теперь про движения по регистру бухгалтерии в целом. Тот маленький кусочек, который мы рассмотрели, это часть единого механизма отложенного отражения в РУ. В ERP движения по УУ и РУ разделены, это преследует разные цели в т.ч. производительность. При проведении документа, если это требуется, в регистре сведений «Документы к отражению в регламентированном учете» делается запись, которая является маркером, по которому определяется нужно отразить документ в РУ или нет. После этого обработка «Отражение документов в регламентированном учете», по запросу пользователя или регламентным заданием, опираясь на маркер, собирает сведения по отражению. Вот тут мы снова возвращаемся к модулю менеджера, где для каждого документа уже есть свой алгоритм формирования данных – запросы. Тут же мы можем не только дорабатывать существующие запросы, но и добавлять свои (можно скопировать запрос наиболее похожий на тот который мы в итоге хотим получить и дописать его). Все запросы в итоге объединяются в один, в процедуре которая указана ниже.

Функция ТекстОтраженияВРеглУчете() Экспорт
	
	ТекстыОтражения = Новый Массив;
	
	//////////////////////////////////////////////////////////////
	ТекстыОтражения.Добавить(ТекстПередачаНаКомиссию());
	//+ Некоторый комментарий
	ТекстыОтражения.Добавить(ТекстНашНовыйЗапрос());
	//- Некоторый комментарий
	//////////////////////////////////////////////////////////////
	
	Возврат СтрСоединить(ТекстыОтражения, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
	
КонецФункции

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

ERP KA расширение

См. также

Ценовая власть. Выносим из цикла схему СКД

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

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

1 стартмани

11.04.2024    481    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

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

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

10 стартмани

11.04.2024    367    tango    5    

3

Ценовая власть. Второй сезон

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

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

08.04.2024    564    tango    0    

2

Ценовая власть (УТ 11.5) - 2

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

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    442    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

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

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    523    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

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

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

07.02.2024    2576    YA_418728146    11    

42

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1126    8    2ncom    3    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4953    mrXoxot    11    

100
Отзывы
10. Vladimir Litvinenko 2872 26.11.18 18:56 Сейчас в теме
(9)
Тогда после обновления в отчете мы увидим какие из таких "опасных" процедур были изменены.

В этом правиле нужно будет учесть возможность переименования метода в исходной конфигурации. Либо продумать несколько этапов автоматической проверки, где только один из них - это АПК.

Идея для автоматизации конечно классная, если АПК уже умеет работать с расширениями. Хотелось бы увидеть пример реализации ))
A.ts; +1
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. karshev 26.11.18 15:00 Сейчас в теме
Хорошая статья, актуальная
+
2. KVIKS 399 26.11.18 15:30 Сейчас в теме
Пора вкуривать расширения
+
3. acsent 1200 26.11.18 16:08 Сейчас в теме
полностью выносить процедуру в расширение - обернется потом проблемой, что вы не будете знать когда основной код поменяется, а в вашей доработке нет.
И еще хорошо, если сразу упадет, а если просто данные будут не те выдавться
Trucker; tricolor; RustIG; ZOMI; Red_Devil; sank84; Sintson; Vladimir Litvinenko; +8
4. katenok86 246 26.11.18 16:10 Сейчас в теме
(3)Да за это не люблю использовать в расширении конструкцию вместо. Лучше пусть ух будет не совсем типовое обновление, зато при обновлении видно ляжет ли корректно доработка в типовой релиз
tricolor; artfa; +2
18. artfa 58 28.11.18 12:59 Сейчас в теме
(4) и я того же мнения, если расширение, то при каждом обновлении нужно будет отслеживать изменения в коде конфы, тогда как если изменения в самой конфе, при обновлении их сразу увидишь.
Расширение, очень любят клиенты, мол конфа на поддержке, обновим сами, ага, обрадовались, как только изменения коснутся расширения, то база либо упадет, либо ещё хуже, расширение будет работать, но не правильно.
+
5. logarifm 1119 26.11.18 16:16 Сейчас в теме
Чушь. Куда и что упадет. Для этого делается ОДНО расширение в конфигурации - с типом "Исправление". Например ИсправлениеШтатногоФункционала и только в такие расширения пихать блоки ВМЕСТО. И при обновлении учитывать такие блоки!!!
d4rkmesa; BuriyLesha; Shmell; +3
6. nomadon 367 26.11.18 16:27 Сейчас в теме
(5)
упадет с красной ошибкой
13. SanchoD 301 27.11.18 10:06 Сейчас в теме
(6) У меня расширения просто игнорируются при запуске базы, если в них какие-то рассогласования с новым релизом. Ни разу база не падала. Максимум появлялась ошибка при каких-либо манипуляциях с объектом, функционал по которому вынесен в расширение.
+
7. Shmell 535 26.11.18 16:36 Сейчас в теме
(5) добавлю - даже если разработчиков несколько - можно сделать хранилище расширения с таким типом...
+
8. Vladimir Litvinenko 2872 26.11.18 18:15 Сейчас в теме
(5)
При переходе на новый релиз сложнее увидеть что изменилось и требует адаптации. Нужно именно отдельно "учитывать такие блоки", то есть самостоятельно сравнивать тексты методов.

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

Иными словами автоматика в этом случае не помогает выполнить процесс обновления. Когда измененных методов немного, то это не проблема, но если доработки серьезные, то риск учесть не все изменения сильно повышается. Проблема возникает и при изменении сигнатур методов, даже платформенная проверка конфигурации на некорректные вызовы не отлавливает все ошибки, в то время как при проверке основной конфигурации отрабатывает корректно. Сталкивался с этим при переходе с ERP 2.2 на 2.4 c обновлением БСП.
+
9. kozlov.alians 118 26.11.18 18:29 Сейчас в теме
Да, механизм расширений имеет некоторые недостатки, но в любом из таких случаев мы можем поступить двумя методами:
- отказаться от использования;
- что-нибудь придумать.

Не плохой вариант использовать АПК (автоматическая проверка конфигураций). Для каждой такой доработки создать правило, по которому можно проверить контрольную сумму исходной и обновленной процедуры/функции. Для скорости определить настройки проверки, где указать только нужные объекты конфигурации и только нужные правила. Тогда после обновления в отчете мы увидим какие из таких "опасных" процедур были изменены.

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

P.S. Расширения динамично развиваются, так что есть вероятность, что и этот недуг будет скоро побежден. Думаю отличный повод написать на партнерский форум.
G.Shatrov; +1
10. Vladimir Litvinenko 2872 26.11.18 18:56 Сейчас в теме
(9)
Тогда после обновления в отчете мы увидим какие из таких "опасных" процедур были изменены.

В этом правиле нужно будет учесть возможность переименования метода в исходной конфигурации. Либо продумать несколько этапов автоматической проверки, где только один из них - это АПК.

Идея для автоматизации конечно классная, если АПК уже умеет работать с расширениями. Хотелось бы увидеть пример реализации ))
A.ts; +1
11. kozlov.alians 118 26.11.18 19:03 Сейчас в теме
(10)
если АПК уже умеет работать с расширениями
умеет.

Хотелось бы увидеть пример реализации ))
Почему бы и нет, думаю тема будет интересной, можно написать статью. :)
Vladimir Litvinenko; +1
12. HAMMER_59 245 27.11.18 07:22 Сейчас в теме

//+ Некоторый комментарий
// Операция.Подразделение КАК ПодразделениеДт,
| Операция.Подразделение КАК ПодразделениеДт,
//- Некоторый комментраий
| РеализацияТоваровУслугТовары.ИС_Подразделение КАК ПодразделениеДт,


Какой интересный запрос.
SanchoD; +1
14. kozlov.alians 118 27.11.18 10:15 Сейчас в теме
15. ixijixi 1794 27.11.18 11:51 Сейчас в теме
Я в таких случаях использую конструкцию &После (вместо &Вместо))))

Пусть конфигурация сделает все по-своему, а уж расширение что-то доделает по-своему, а что-то переиначит в результатах работы конфигурации. Да, производительность пострадает, зато совместимость выиграет.
+
16. Tavalik 3358 27.11.18 14:30 Сейчас в теме
А потом вы обновляетесь на 2.4.6 и внезапно обнаруживаете, что тексты движения запросов в регистры поменялись чуть более, чем полностью, а текстов запросов для формирования проводок больше НЕТ в модуле менеджера документа. Вам, по ходу, это еще предстоит пройти )

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

Поэтому, мы все же делаем вставки в типовой код, хоть это и ведет к усложнению обновления.

Но за статью спасибо.
artfa; Vladimir Litvinenko; o.egorova.omsu; +3
19. katenok86 246 28.11.18 13:03 Сейчас в теме
(16)А куда они делись? Еще не обновляли ни кого на 2.4.6
+
20. Tavalik 3358 28.11.18 15:16 Сейчас в теме
(19)
Вынесли в общие модули.
+
21. ikolegov 29.11.18 09:38 Сейчас в теме
(16) Только что с превеликим трудом почти перешли с 2.1 на 2.4.5 (конфа сильно переписана). Хотите сказать, что и переход на 2.4.6 будет мучительным?
+
22. Alexjas25 12.12.18 15:11 Сейчас в теме
(16)Виталий, ну комментарий Ивана про АПК и отдельное правило для данной функции как раз об этом. После обновления автоматическая проверка сразу оповестит, что "что-то пошло не так".
Без АПК, конечно, это будет сложно отловить.
+
17. Lukich66 82 28.11.18 09:53 Сейчас в теме
Только начал осваивать Ка2 и чем дальше,тем интереснее. А тут сразу доработать движения регламентированного учета? Т.е фирма 1с уже все новые вещи выпускает недоделанными, а для тех кому хоцтса- расширения? М-да-а-а.
+
23. user619273_alevtina 30.12.18 18:15 Сейчас в теме
Хорошая статья, актуальная
+
24. TimurD 6 02.04.19 14:29 Сейчас в теме
Использование расширений вещь соблазнительная, но не без изъянов. По моему мнению, гемора с расширениями меньше, чем с доработки на живой базе. Вот пару пунктов при обновлении:
1. Найти и сравнить все &Вместо (а если Вы ведете тех. документацию по изменениям... Вы человек?) через тот же KDiff 3 или другие приложения. CTRL+V CTRL+C.
2. С формами сложнее. Сам недавно столкнулся в УТ 11, что форма была взята из основной конфы (на расширение забило). Но все же. Если требуется ДОБАВИТЬ новые элементы формы, то лучше это сделать через МодификацииКонфигурации. А обработчики элементов описать в расширяемой форме (а когда можно будет указывать Общий клиентский модуль в действии, в качестве источника процедуры (как ОписаниеОповещения), тогда форму в расширении не будет нужды заимствовать). Да, я сам так еще не делал, но при случае обязательно так сделаю). Если у нас не предусматривается особых обработчиков элементов, тогда и заимствовать форму не нужно.

P.S.: Как-то в одной организации (при переходе с ПУБ 7.7 на Бух 3.0) рабочий коллектив отказался использовать расширения (вообще). Я написал по собственному.
+
25. ellavs 1027 02.04.19 15:09 Сейчас в теме
Давно начали пользоваться механизмом расширений. Штука крайне удобная для дополнения логики типовой конфигурации. Однако иногда требует доработки при обновлении конфигурации (но не всегда, а при существенных изменениях в расширяемых компонентах).
Одно замечание: к Вашему лирическому отступлению добавила бы: не вносить изменения непосредственно в конструкторе форм, а делать это только в коде. Т.е. если надо добавить что-то на форму, добавлять не через конструктор - типа "добавить группу/надпись/...", а коде (например, при открытии формы).
Поясню, почему мы пришли к такому правилу. При обновлении конфигурации несколько раз сталкивались с ситуацией, когда разработчики так меняли форму, что автообновление не срабатывало и приходилось воссоздавать расширение "с нуля" на новом релизе. Когда у Вас в расширении только код - это делается за пару минут, а когда надо еще воссоздать элементы на форме в конструкторе - это уже ведет к вероятным ошибкам - можно что-то забыть/пропустить. Или же нужно заранее это подробно документировать, чтобы можно было легко воспроизвести.
sayan; АлександрВладимирович; Сурикат; vc88; +4
Внимание! Тема сдана в архив