Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)

10.01.21

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

Покажу точки входа для доработки "типового" проведения документов в ERP для регистров оперативного учета. Рассмотрим три основные ситуации: нужно изменить имеющееся проведение документа; нужно сделать записи в существующие регистры; нужно с нуля описать алгоритм проведения в добавленный регистр. Пример реализован на 1С:ERP Управление предприятием 2 (2.5.4.120)

1. Необходимо изменить имеющееся проведение документа.

Рассмотрим на примере документа "Заказ клиента". Допустим в документе изменен алгоритм определения Назначения: в шапку документа добавлен дополнительный реквизит "допНазначение" с типом СправочникСсылка.Назначения. Если этот реквизит заполнен, то в движение регистра накопления "Обеспечение заказов" должно подставляться его значение, иначе должен выполняться типовой механизм документа.

Для начала следует отметить, что для всех документов в ERP сам алгоритм Обработки проведения вынесен в общий модуль "ПроведениеДокументов".

 
 Модуль объекта документа ЗаказКлиента

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

 
 Модуль менеджера документа ЗаказКлиента

В рамках нашей задачи, нас будут интересовать функция "ТекстЗапросаТаблицаОбеспечениеЗаказов" и процедура "ЗаполнитьПараметрыИнициализации".

Функция "ТекстЗапросаТаблицаО

Вступайте в нашу телеграмм-группу Инфостарт

ERP ЕРП Проведение Движения Регистр накопления сведений

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С 8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данное расширение — это механизм, сделанный при помощи двух модулей из БСП (3.1.11.415), который позволяет динамически добавлять команды (кнопки и не только при желании) на формы управляемого приложения без изменения конфигурации. На примере данного механизма удобно рассмотреть некоторые возможности для расширения функционала объектов, которые подключены к механизму библиотеки стандартных подсистем.

1 стартмани

20.03.2026    3907    InFlach    0    

5

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

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

12.03.2026    5491    AlexeyPROSTO_1C    4    

20

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

Как в ЗУП работает механизм расстановки времени в регистрах сведений с помощью подписки на события?Рассматривается логика сдвигов для разных типов документов (прием, увольнение, отпуск) и дается инструкция по подключению нового регистра к этому механизму.

03.03.2026    3459    YA_1100893639    1    

8

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

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

11.08.2025    11426    user1988284    0    

25
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Shmell 668 10.01.21 12:59 Сейчас в теме
Алексей, для какой версии ERP данный гайд подходит? т.к. от версии к версии (вернее к редакции) - механизмы меняются слегка...
2. BLshhh 612 11.01.21 04:49 Сейчас в теме
(1)да, соглашусь. конкретный пример реализован на версии 1С:ERP Управление предприятием 2 (2.5.4.120). Но механизм работает и на 2.4.*
Дмитрий74Чел; Shmell; +2 Ответить
3. user705698_bursev 11.01.21 09:27 Сейчас в теме
(2) В версии 2.4.11.88 общего модуля ПроведениеДокументов просто нет. Видимо, Ваш гайд все же больше касается новых версий.
4. BLshhh 612 11.01.21 12:00 Сейчас в теме
(3)да, на версии 2.4.11.* проведение реализовано еще "по старому"
5. sm.artem 16 12.01.21 05:32 Сейчас в теме
Спасибо за статью! Полезный материал. Да, один в один механизм подходит для версий 2.5, в 2.4 - несколько отличается, но в целом этапы подготовки к проведению похожи
6. Hatson 540 14.01.21 10:32 Сейчас в теме
По сути дела нет смысла разбираться во всём этом, т.к. в следующем релизе всё снова переделают. Необходимо применять обычный говнокод.
user705393_den; vba201; Arte_; user1485340; vad7; payta; triviumfan; d4rkmesa; +8 6 Ответить
7. BLshhh 612 14.01.21 10:59 Сейчас в теме
(6) предыдущий механизм проведения продержался несколько лет :) так что, думаю потребность у людей возникать будет еще долго.

Необходимо применять обычный говнокод.

не понял, к чему эта фраза относится?
8. user1515313 21.02.21 19:08 Сейчас в теме
(7) Для полноты статьи не хватает описания такого варианта: Необходимо дополнить проведение имеющееся документа ещё по одному регистру.
Общий модуль
vba201; krlexa; Дмитрий74Чел; top_1c; Donat; +5 Ответить
9. BLshhh 612 25.02.21 10:39 Сейчас в теме
(8)думаю это частный случай второй части статьи: там я добавил как новый документ, так и новые регистры.
Но спасибо Вам за предоставленный код, он может кому-нибудь пригодиться ;)
10. skv_79 393 12.08.21 12:46 Сейчас в теме
Раньше была похожая статья, но ее писал на базе ERP 2.4 https://infostart.ru/1c/articles/1097936/
11. Hatson 540 18.05.22 14:20 Сейчас в теме
Не читал, но одобряю!
12. user728106 02.06.22 11:06 Сейчас в теме
Подскажите, как лучше сделать, если по условию нужно не делать движения по части регистров?
13. BLshhh 612 02.06.22 12:41 Сейчас в теме
(12)данные для движений получаются запросами. поэтому вы можете в самих запросах эти условия и прописать.
14. user1485340 03.08.22 10:32 Сейчас в теме
Спасибо большое за статью! хотелось бы посмотреть саму базу, на которой создавали новый документ
15. BLshhh 612 03.08.22 11:36 Сейчас в теме
(14) база уже давно удалена :)
все внесенные изменения описаны в "спойлерах" в примере кода.
возможно интересует что-то конкретное?
16. user1485340 03.08.22 11:51 Сейчас в теме
(15) Для удаления записей при отмене проведения для независимых регистров надо что-то отдельно писать?
17. BLshhh 612 03.08.22 16:25 Сейчас в теме
(16) да, независимые регистры на то и независимые :)
user1485340; +1 Ответить
18. user1485340 03.08.22 16:32 Сейчас в теме
19. Aleksandr_Kotelnikov_mmc 18.10.22 17:20 Сейчас в теме
Спасибо за примеры, нужно было добавить в 2.5. новый документ с регистром, благодаря вашей статье все получилось сделать.
20. LomayaZakat 04.04.24 16:09 Сейчас в теме
Отличная статья. Очень помогла.
21. BLshhh 612 05.04.24 12:09 Сейчас в теме
(20)приятно, что даже спустя столько лет, статья все еще приносит пользу :)
22. andrew.ab 267 28.05.24 13:54 Сейчас в теме
а как сделать такое поведение: есть записи в независимом регистре сведений сформированные документ "ОтражениеВРег1", где несколько реквизитов не заполнены. Надо документом "ОтражениеВРег2" при проведении найти эти записи и до заполнить их.
23. BLshhh 612 28.05.24 14:12 Сейчас в теме
(22) отражение движений для каждого документа выполняется в отдельной транзакции. поэтому одновременно вы эти данные все равно не поменяете. поэтому для каждого документа пишете свою логику для записи в независимый регистр, которая будет отрабатывать независимо от действий другого документа.
либо пишите регламентное задание, которое будет периодически смотреть на этот регистр и дополнять необходимыми данными
24. andrew.ab 267 28.05.24 14:16 Сейчас в теме
(23) так одновременно и не надо. Один документ записал, другой потом скорректировал записи.
26. BLshhh 612 28.05.24 14:54 Сейчас в теме
(24) вы когда описываете движения в регистр сведений, то указываете отборы, по которым будет происходить запись набора записей.
набор записей по указанным отборам можно прочитать, изменить и записать заново.
условно у вас для документа ОтражениеВРег2 будет:

НаборЗаписей = РегистрыСведений.РС1.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Измерение1.Установить(Значение1);
НаборЗаписей.Прочитать();

Для каждого Запись Из НаборЗаписей Цикл
Запись.Измерение2 = Значение2;
КонецЦикла;

НаборЗаписей.Записать(Истина);
25. andrew.ab 267 28.05.24 14:17 Сейчас в теме
(23)
регламентное задание, которое будет периодически смотреть на этот регистр и дополнять необходимыми данными
- не подходит, другой документ должен вносить корректировки в записи.
27. andrew.ab 267 28.05.24 15:14 Сейчас в теме
нашел, в менеджере записи регистра сведений функция по обновлению записи по разделителю

// Записывает в регистр данные по переданному разделителю записи.
//
// Параметры:
//  ТаблицыДляДвижений		 - Структура - содержит по ключу ТаблицыДляДвижений структуру
//  	имеющую ключ ТаблицаРасшифровкаДокументаПланирования (ТаблицаЗначений).
//  РазделительЗаписи		 - Строка - измерение, по которому необходимо выполнить запись
//  ЗамещатьЗаписи			 - Булево - определяет режим замещения существующих записей разделителя. Истина - перед записью существующие
//		записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям.
//
Процедура ЗаписатьДанныеРазделителя(ТаблицыДляДвижений, РазделительЗаписи, ЗамещатьЗаписи = Истина) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	Набор = РегистрыСведений.РасшифровкаДокументаПланирования.СоздатьНаборЗаписей();
	Набор.Отбор.РазделительЗаписи.Установить(РазделительЗаписи);
	Набор.ЗагрузитьСОбработкой(ТаблицыДляДвижений["Таблица" + "РасшифровкаДокументаПланирования"]);
	Набор.Записать(ЗамещатьЗаписи);
	
	УстановитьПривилегированныйРежим(Ложь);
	
КонецПроцедуры
Показать
28. BLshhh 612 28.05.24 15:52 Сейчас в теме
(27) попробуйте глобальным поиском найти механизмы, которые используют независимые РС, например, так:
Параметры.НезависимыеРегистры.Добавить(

и в этих модулях посмотрите как реализован алгоритм в процедурах ЗаписатьДанные
29. Somebody1 68 23.08.24 11:36 Сейчас в теме
Доброго дня! Кто-то может посоветовать, как организовать в данном механизме контроль отрицательных остатков перед записью движений (по т.н. "старой методике")?
SagittariusA; axsebur; +2 Ответить
31. Jopastik 18.08.26 22:06 Сейчас в теме
Статья резко обрывается:( Поправьте, пожалуйста
Для отправки сообщения требуется регистрация/авторизация