Ответы в темах
-
АвторЗаписи
-
10 ноября 2026 в 16:36 в ответ на: Как определить права редактирования периметров в «1С:Свод отчетности»? #39001
В «1С:Свод отчетности» это нужно проверять в двух местах:
1. в пользовательском режиме, где настроены пользователи, группы доступа и сами периметры;
2. в конфигураторе, где видно структуру объекта «Состав периметров консолидации» и уже установленные ограничения RLS.Ниже порядок проверки.
# 1. Сначала определите, где хранятся сами периметры
В режиме «1С:Предприятие»:
1. Откройте раздел, связанный с консолидацией.
2. Найдите команду:
— Периметры консолидации;
— Состав периметров консолидации;
— либо отчет/список с похожим названием.
3. Откройте несколько периметров.
4. Посмотрите, какие реквизиты и табличные части у них заполнены.В первую очередь нужно найти следующие поля:
— Организация;
— Участник консолидации;
— Ответственный;
— Владелец;
— Пользователь;
— Группа доступа;
— Рабочая группа;
— Вид отчета;
— Сценарий;
— Период;
— Подразделение.Если в карточке периметра есть только наименование, код и состав организаций, то наиболее вероятно, что доступ определяется:
— составом организаций;
— группами доступа;
— отдельным регистром настроек доступа.Если есть реквизит Ответственный, Владелец или Пользователь, возможно ограничение можно строить по ответственному.
—
# 2. Как проверить, разрешены ли пользователю конкретные периметры
## Вариант 1. Через карточку пользователя
Откройте:
НСИ и администрирование → Настройка пользователей и прав → Пользователи
В некоторых версиях путь может называться:
Администрирование → Настройка пользователей и прав
1. Откройте нужного пользователя.
2. Найдите ссылку или команду:
— Права доступа;
— Группы доступа;
— Настройка доступа;
— Профиль доступа;
— Доступ к организациям;
— Доступ к объектам.
3. Проверьте, есть ли отдельный список:
— Периметры консолидации;
— Разрешенные периметры;
— Доступные периметры.Если у пользователя непосредственно указан список периметров, например:
| Пользователь | Периметр |
|—|—|
| Иванов И.И. | Периметр «Холдинг» |
| Иванов И.И. | Периметр «Розница» |то ограничение нужно строить по конкретным периметрам.
В таком случае признак доступа:
> Пользователь имеет право редактировать записи объекта «Состав периметров консолидации», если периметр записи входит в список периметров, назначенных пользователю.
## Вариант 2. Через группы доступа
Если в карточке пользователя нет списка конкретных периметров, проверьте назначенные ему группы доступа.
В карточке пользователя откройте:
Группы доступа пользователя
или:
Права доступа → Группы доступа
Запишите все группы, назначенные пользователю, например:
— Бухгалтерия холдинга;
— Консолидация филиалов;
— Ответственные за отчетность;
— Центральный аппарат;
— Пользователи периметра «Розница».После этого откройте сами группы доступа:
НСИ и администрирование → Настройка пользователей и прав → Группы доступа
или:
Администрирование → Настройка доступа → Группы доступа
Проверьте, есть ли в группе отдельный список доступных периметров.
Если внутри группы указано:
| Группа доступа | Разрешенный периметр |
|—|—|
| Консолидация филиалов | Периметр «Филиалы» |
| Консолидация филиалов | Периметр «Дочерние общества» |то доступ определяется группой, а не индивидуальной настройкой пользователя.
В этом случае ограничение нужно строить по пользователю, входящему в соответствующую группу доступа, либо по ключам доступа, которые формируются для этой группы.
—
# 3. Как проверить, связаны ли права с организациями
Откройте карточки периметров консолидации и проверьте их состав.
Обычно это можно сделать следующим образом:
1. Открыть список Периметры консолидации.
2. Открыть периметр.
3. Перейти на вкладку:
— Состав;
— Организации;
— Участники;
— Организации периметра.
4. Посмотреть, какие организации входят в периметр.Пример:
| Периметр | Организации |
|—|—|
| Периметр «Холдинг» | ООО «Альфа», ООО «Бета» |
| Периметр «Розница» | ООО «Гамма» |
| Периметр «Производство» | ООО «Дельта» |После этого нужно проверить доступ пользователя к организациям.
Откройте карточку пользователя и найдите:
— Организации пользователя;
— Доступные организации;
— Область доступа;
— Права на организации;
— Группы доступа;
— Настройки ограничения доступа.Возможный результат:
| Пользователь | Доступная организация |
|—|—|
| Иванов И.И. | ООО «Альфа» |
| Иванов И.И. | ООО «Бета» |Если пользователь имеет доступ к организациям ООО «Альфа» и ООО «Бета», а периметр «Холдинг» состоит именно из этих организаций, это указывает на ограничение по организациям.
Однако необходимо проверить правило доступа:
— разрешается периметр, если пользователь имеет доступ хотя бы к одной организации;
— разрешается только периметр, если пользователь имеет доступ ко всем организациям;
— разрешение определяется не составом периметра, а отдельной настройкой.Само наличие организаций в периметре еще не доказывает, что права определяются по организациям. Нужно проверить фактические ограничения в роли и настройках доступа.
—
# 4. Как проверить группы доступа в конфигураторе
Если в пользовательском режиме неясно, по какому признаку формируется доступ, откройте конфигурацию в режиме Конфигуратор.
## Шаг 1. Найдите объект «Состав периметров консолидации»
1. Откройте конфигурацию.
2. Нажмите Конфигурация → Открыть конфигурацию.
3. В дереве конфигурации найдите объект с названием:
— СоставПериметровКонсолидации;
— либо объект с похожим синонимом.
4. Посмотрите его тип.Это может быть:
— справочник;
— регистр сведений;
— документ;
— регистр накопления;
— табличная часть другого объекта.Если объект не находится по синониму, выполните поиск по конфигурации:
Правка → Найти
И ищите отдельно по словам:
—
Периметр;
—Консолидац;
—Состав;
—Рабочий процесс.## Шаг 2. Посмотрите реквизиты объекта
Откройте найденный объект и проверьте реквизиты.
Особенно важны реквизиты с названиями:
— Периметр;
— ПериметрКонсолидации;
— Организация;
— Пользователь;
— Ответственный;
— Владелец;
— ГруппаДоступа;
— КлючДоступа;
— ОбластьДоступа;
— ВидДоступа;
— РабочаяГруппа.Пример структуры:
1С (Код)1234СоставПериметровКонсолидацииПериметрКонсолидацииОрганизацияОтветственныйВ таком случае потенциально можно ограничивать доступ:
— по периметру;
— по организации;
— по ответственному.Если реквизитов пользователя, организации и группы доступа нет, это означает, что ограничение, скорее всего, строится через связанные объекты или регистры.
—
# 5. Как найти уже существующее ограничение доступа
В конфигураторе откройте роль:
Общие → Роли → РедактированиеРабочихПроцессов
Найдите объект:
Состав периметров консолидации
Проверьте права:
— Чтение;
— Изменение;
— Добавление;
— Удаление;
— Интерактивное изменение;
— Интерактивное добавление;
— Интерактивное удаление.Если рядом с правом есть настройка ограничения, откройте ее.
В ограничении ищите следующие признаки.
## Ограничение по конкретному периметру
В тексте будут встречаться поля и таблицы, похожие на:
1С (Код)1ПериметрКонсолидацииили:
1С (Код)1ПериметрыПользователейили:
1С (Код)1РазрешенныеПериметрыПризнак:
1С (Код)1ПолеПериметра В РазрешенныеПериметрыЭто означает, что пользователю разрешаются конкретные периметры.
## Ограничение по организациям
В тексте будут встречаться:
1С (Код)1Организацияили:
1С (Код)1ДоступныеОрганизацииили:
1С (Код)1ОрганизацииПользователяПризнак:
1С (Код)1СоставПериметровКонсолидации.Организация В ДоступныеОрганизацииЛибо будет проверяться организация периметра через связанный справочник.
## Ограничение по группе доступа
В тексте могут встречаться:
1С (Код)1ГруппаДоступа1С (Код)1ПользователиГруппДоступа1С (Код)1КлючДоступа1С (Код)1ВидыДоступа1С (Код)1ГруппыДоступаПользователейВ типовых конфигурациях ограничение часто не содержит прямого отбора по названию группы. Вместо этого используется служебный механизм ключей доступа.
Например, запись объекта может быть связана с ключом доступа, а пользователь получает такой же ключ через группу доступа.
Внешне это может выглядеть так:
1С (Код)1КлючДоступа = КлючДоступаПользователяили через проверку принадлежности текущего пользователя к набору ключей доступа.
## Ограничение по ответственному или владельцу
В тексте ограничения будут встречаться поля:
1С (Код)1Ответственный1С (Код)1Владелец1С (Код)1ПользовательПример логики:
1С (Код)1Ответственный = ТекущийПользовательлибо:
1С (Код)1Владелец В СписокОтветственныхПользователяЭто означает, что редактировать можно только записи, где пользователь указан владельцем или ответственным.
—
# 6. Как понять, какой пользователь определяется как текущий
В ограничениях доступа текущий пользователь может определяться не напрямую по имени пользователя.
В зависимости от конфигурации используются:
— пользователь информационной базы;
— пользователь программы;
— физическое лицо;
— сотрудник;
— субъект доступа;
— текущий пользователь из параметров сеанса.Поэтому при проверке нужно установить, с чем сравнивается поле пользователя в ограничении.
Возможные варианты:
| Поле в данных | С чем сравнивается |
|—|—|
| Пользователь | Пользователь информационной базы |
| Ответственный | Пользователь |
| Сотрудник | Физическое лицо или сотрудник |
| Владелец | Пользователь или сотрудник |
| Ключ доступа | Ключ доступа текущего пользователя |Нельзя автоматически считать, что поле Ответственный хранит именно пользователя 1С. Это может быть элемент справочника Физические лица или Сотрудники.
Проверить тип поля можно в конфигураторе:
1. Откройте объект.
2. Откройте вкладку Реквизиты.
3. Посмотрите колонку Тип значения.Например:
1С (Код)1СправочникСсылка.Пользователиозначает пользователя программы.
А:
1С (Код)1СправочникСсылка.Сотрудникиозначает сотрудника, который может быть связан с пользователем отдельно.
—
# 7. Как проверить эффективные права пользователя
Важно проверить не только роль «Редактирование рабочих процессов», но и все роли пользователя.
Один пользователь может получить право изменения из нескольких ролей. Если хотя бы одна роль дает полное право на изменение объекта, ограничение другой роли может не дать нужного результата.
В пользовательском режиме:
1. Откройте карточку пользователя.
2. Перейдите на вкладку Права доступа или Роли.
3. Запишите все назначенные профили и роли.
4. Найдите среди них роли, связанные с:
— рабочими процессами;
— консолидацией;
— администрированием;
— полным доступом;
— настройкой отчетности.В конфигураторе откройте каждую соответствующую роль и проверьте объект:
Состав периметров консолидации
Нужно убедиться, что нигде нет:
1С (Код)1Изменение = Разрешено без ограниченияили:
1С (Код)1Интерактивное изменение = Разрешено без ограниченияТакже нужно проверить наличие роли:
— Полные права;
— Администратор;
— роли разработчика;
— роли администратора данных;
— роли администратора подсистемы.Такие роли могут полностью обходить установленное ограничение.
—
# 8. Как определить признак по фактическому результату
Если структура конфигурации непонятна, можно выполнить проверку практическим способом.
Создайте или выберите тестового пользователя и подготовьте данные:
| Тест | Пользователь | Периметр | Организация | Ответственный |
|—|—|—|—|—|
| 1 | Пользователь А | Периметр 1 | Организация 1 | Пользователь А |
| 2 | Пользователь А | Периметр 2 | Организация 2 | Пользователь Б |
| 3 | Пользователь Б | Периметр 3 | Организация 1 | Пользователь Б |Затем поочередно меняйте только один признак:
1. добавьте пользователю конкретный периметр;
2. уберите этот периметр;
3. добавьте пользователю организацию;
4. уберите организацию;
5. измените ответственного;
6. добавьте пользователя в группу доступа;
7. удалите пользователя из группы доступа.После каждого изменения входите под тестовым пользователем и проверяйте возможность изменения.
Результаты фиксируйте в таблице:
| Изменение настройки | Периметр 1 | Периметр 2 | Периметр 3 |
|—|—:|—:|—:|
| Пользователь получил периметр 1 | Можно | Нельзя | Нельзя |
| Пользователь получил организацию 1 | Можно | Нельзя | Можно |
| Пользователь назначен ответственным | Можно | Нельзя | Нельзя |
| Пользователь добавлен в группу | Можно | Можно | Нельзя |По результату будет видно, какой признак реально используется.
## Как интерпретировать результат
### Разрешение изменилось после назначения конкретного периметра
Используется доступ по конкретным периметрам.
### Разрешение изменилось после назначения организации
Используется доступ по организациям либо состав организаций входит в ключ доступа.
### Разрешение изменилось после включения в группу
Используется механизм групп доступа.
### Разрешение изменилось после назначения ответственным
Используется ограничение по владельцу или ответственному.
### Ничего не изменилось
Возможные причины:
— у пользователя есть другая роль без ограничения;
— доступ проверяется не по этому объекту;
— ограничение установлено только на чтение;
— ограничение не установлено на право «Изменение»;
— пользователь работает с привилегированным кодом;
— данные доступны через другой объект или регистр;
— требуется обновление прав доступа.—
# 9. Где проверить состав групп доступа и ключи доступа
Если используется БСП, обычно проверяют:
1. карточку пользователя;
2. назначенные группы доступа;
3. состав каждой группы;
4. виды доступа;
5. значения доступа;
6. ключи доступа.В группе доступа обратите внимание на поля:
— Вид доступа;
— Значения доступа;
— Пользователи;
— Профиль группы доступа;
— Область доступа.Пример:
| Вид доступа | Значение |
|—|—|
| Организации | ООО «Альфа» |
| Виды отчетности | Консолидированная отчетность |
| Периметры | Периметр «Холдинг» |Если для группы указано значение Периметр «Холдинг», это прямой признак ограничения по периметрам.
Если указано значение ООО «Альфа», нужно проверить, входит ли эта организация в периметр.
Если группа содержит только профиль с ролью Редактирование рабочих процессов, это еще не означает, что группа ограничивает данные. Профиль может давать только функциональное право, а область данных задается отдельно.
—
# 10. Что нужно зафиксировать перед созданием ограничения
Перед настройкой ограничения заполните следующие сведения:
| Что проверить | Что записать |
|—|—|
| Метаданные объекта | Точное имя объекта |
| Тип объекта | Справочник, регистр, документ или табличная часть |
| Поле периметра | Точное имя реквизита |
| Связь с организацией | Прямое поле или связанный объект |
| Поле пользователя | Пользователь, сотрудник или физическое лицо |
| Ответственный | Есть ли такой реквизит |
| Группа доступа | Есть ли отдельное поле или механизм ключей доступа |
| Хранилище разрешений | Регистр, справочник, группа доступа или другой объект |
| Роль | РедактированиеРабочихПроцессов |
| Права | Изменение и Интерактивное изменение |
| Другие роли пользователя | Есть ли неограниченный доступ |Главное, что необходимо получить в конфигураторе, это точная связка:
1С (Код)1234Запись состава периметра→ Периметр→ Организация или группа доступа→ ПользовательПока эта связка не установлена, создавать ограничение по одному предположительному полю нельзя. Иначе можно либо полностью запретить редактирование, либо оставить пользователю доступ ко всем периметрам.
10 ноября 2026 в 16:26 в ответ на: Как учитывать документы в регламентированном учете в 1С:Комплексная автоматизаци #38999В 1С:Комплексная автоматизация 2 документы обычно не формируют проводки по бухгалтерскому и налоговому учету непосредственно при проведении оперативного документа. Сначала документ проводится в оперативном учете, затем его данные передаются в механизм «Отражение документов в регламентированном учете».
## Общая схема
1. Настроить организацию и учетную политику.
2. Провести оперативный документ.
3. Зарегистрировать его к отражению в регламентированном учете.
4. Выполнить обработку отражения.
5. Проверить сформированные проводки в регламентированном учете.Например, по реализации:
1С (Код)1234567Реализация товаров и услуг↓Проведение в оперативном учете↓Отражение документов в регламентированном учете↓Формирование проводок по счетам бухгалтерского и налогового учета## 1. Настройте регламентированный учет
Проверьте следующие разделы:
1С (Код)123НСИ и администрирование→ Настройка НСИ и разделов→ Регламентированный учетВ зависимости от версии конфигурации нужные настройки могут находиться в разделах:
1С (Код)1234НСИ и администрирование→ Настройка НСИ и разделов→ Предприятие→ Организацииили:
1С (Код)123НСИ и администрирование→ Регламентированный учет→ Настройки отражения документовНеобходимо заполнить:
— организацию;
— дату начала ведения учета;
— валюту регламентированного учета;
— учетную политику;
— рабочий план счетов;
— способы учета номенклатуры;
— счета учета товаров;
— счета учета затрат;
— счета расчетов с контрагентами;
— правила отражения документов.## 2. Заполните учетную политику
Обычно используется раздел:
1С (Код)12Регламентированный учет→ Учетная политикаЛибо:
1С (Код)123НСИ и администрирование→ Учетная политика и настройки→ Учетная политикаДля организации должны быть настроены:
— система налогообложения;
— метод оценки запасов;
— порядок учета НДС;
— способы учета доходов и расходов;
— параметры учета затрат;
— счета учета товаров и материалов;
— счета учета расчетов с контрагентами;
— порядок признания выручки;
— правила формирования себестоимости.Если учетная политика не заполнена или действует не на дату документа, отражение может завершиться ошибками.
## 3. Настройте правила отражения документов
В КА используются правила отражения документов в регламентированном учете.
Обычно их можно найти через:
1С (Код)123НСИ и администрирование→ Регламентированный учет→ Настройки отражения документовВ отдельных версиях путь может выглядеть так:
1С (Код)1234НСИ и администрирование→ Настройка НСИ и разделов→ Регламентированный учет→ Способы отражения документовДля разных операций задаются разные способы отражения:
— приобретение товаров;
— реализация товаров;
— поступление услуг;
— реализация услуг;
— возврат товаров;
— банковские операции;
— кассовые операции;
— начисление заработной платы;
— производство;
— расходы будущих периодов;
— основные средства;
— НДС.Например, для реализации может быть настроено:
1С (Код)12Дебет 62Кредит 90.01Для списания себестоимости:
1С (Код)12Дебет 90.02Кредит 41Для НДС:
1С (Код)12Дебет 90.03Кредит 68.02Конкретные счета зависят от учетной политики, вида операции и настроек организации.
## 4. Проведите оперативный документ
Например:
1С (Код)12Продажи→ Реализация товаров и услугПосле заполнения документа нажмите:
1С (Код)1ПровестиНа этом этапе документ может сформировать движения по оперативным регистрам:
— товары на складах;
— товары организаций;
— взаиморасчеты;
— себестоимость;
— заказы;
— НДС оперативного учета;
— другие регистры КА.Но бухгалтерские проводки могут еще не появиться. Это нормально, если в базе используется отложенное отражение в регламентированном учете.
## 5. Зарегистрируйте документ к отражению
Для этого используется обработка:
1С (Код)123Финансовый результат и контроллинг→ Регламентированный учет→ Отражение документов в регламентированном учетеВ некоторых версиях путь может быть таким:
1С (Код)12Регламентированный учет→ Отражение документов в регламентированном учетеВ обработке задайте:
— организацию;
— период;
— вид операции;
— подразделение, если используется;
— отбор по документам.Затем нажмите:
1С (Код)1Заполнитьили:
1С (Код)1СформироватьВ результате документы должны появиться со статусом, например:
1С (Код)1К отражениюДалее выполните команду:
1С (Код)1Отразитьили:
1С (Код)1Выполнить отражениеПосле успешной обработки статус обычно изменяется на:
1С (Код)1Отражен## 6. Проверьте проводки
Проводки можно посмотреть непосредственно из документа:
1С (Код)12Еще→ Движения документаНо для бухгалтерских проводок лучше открыть:
1С (Код)123Регламентированный учет→ Отчеты→ Оборотно-сальдовая ведомостьили:
1С (Код)123Регламентированный учет→ Отчеты→ Анализ субконтоТакже могут использоваться:
1С (Код)1234Оборотно-сальдовая ведомость по счетуКарточка счетаАнализ счетаОбороты счетаЕсли документ отражен, но проводок нет, проверьте именно регистр бухгалтерии и дату отражения, а не только оперативные движения документа.
## Автоматическое отражение
В КА можно настроить автоматическое отражение документов в регламентированном учете. Обычно это делается в настройках раздела:
1С (Код)123НСИ и администрирование→ Настройка НСИ и разделов→ Регламентированный учетИли в форме:
1С (Код)1Отражение документов в регламентированном учетеВозможные варианты:
— отражать документы вручную;
— отражать документы при проведении;
— отражать документы регламентным заданием;
— отражать документы по расписанию;
— отражать только после проверки ответственным пользователем.Для большого объема документов обычно используют отражение по расписанию. Для небольших баз можно выполнять обработку вручную после закрытия операционного дня или месяца.
## Если документ не появляется в отражении
Проверьте следующее.
### Документ не проведен
Документ должен быть проведен:
1С (Код)1Состояние документа = ПроведенНепроведенный документ обычно не регистрируется к отражению.
### Не указана организация
Проверьте реквизит:
1С (Код)1ОрганизацияЕсли организация не заполнена или не ведется регламентированный учет по этой организации, документ не сформирует бухгалтерские данные.
### Не настроена функциональная опция
Проверьте, включен ли регламентированный учет:
1С (Код)123НСИ и администрирование→ Настройка НСИ и разделов→ Регламентированный учет### Нет правила отражения
Для вида документа или операции может отсутствовать настройка отражения. В этом случае документ часто попадает в список с ошибкой:
1С (Код)1Не найден способ отраженияНужно заполнить способ отражения для соответствующей операции.
### Документ уже отражен
Если документ уже обработан, он может не отображаться в списке документов к отражению. Установите отбор:
1С (Код)1Все документыи проверьте статус.
### Неверный период
Проверьте:
— дату документа;
— дату запрета изменения;
— период закрытия месяца;
— дату начала ведения учета;
— дату действия учетной политики.### Не заполнены счета учета
Частая причина ошибок, когда не указаны счета:
— товары;
— услуги;
— затраты;
— доходы;
— расчеты с контрагентами;
— НДС;
— касса;
— банк;
— основные средства.Счета могут определяться из:
— вида номенклатуры;
— группы финансового учета;
— организации;
— склада;
— подразделения;
— статьи расходов;
— статьи доходов;
— договора;
— вида операции;
— способа отражения.## Пример по реализации товаров
Для документа реализации должна быть настроена цепочка:
1С (Код)12345Номенклатура→ Вид номенклатуры→ Группа финансового учета→ Счета учета номенклатуры→ Способ отражения реализацииВ документе обычно должны быть заполнены:
— организация;
— склад;
— контрагент;
— договор;
— соглашение;
— номенклатура;
— количество;
— цена;
— ставка НДС;
— подразделение;
— статья доходов, если используется;
— статья расходов для себестоимости.После отражения проверяются как минимум следующие проводки:
1С (Код)1Дт 62 Кт 90.01Отражение выручки.
1С (Код)1Дт 90.02 Кт 41Списание себестоимости товаров.
1С (Код)1Дт 90.03 Кт 68.02Начисление НДС с реализации.
В конкретной базе счета могут отличаться. Например, для услуг вместо счета 41 может использоваться счет затрат, а для отдельных видов деятельности может применяться другая схема.
## Если нужно отражать документ сразу при проведении
В современных версиях КА настройка зависит от конкретной версии и функциональности базы. В общем случае необходимо:
1. Открыть настройки регламентированного учета.
2. Включить регистрацию документов к отражению.
3. Установить автоматическое отражение или отражение при проведении.
4. Проверить, что для нужного документа есть правило отражения.
5. Перепровести документ.
6. Проверить его статус в обработке отражения.Даже при автоматическом режиме документы могут не отражаться сразу, если:
— отсутствуют счета учета;
— не заполнена учетная политика;
— нет способа отражения;
— нарушена дата запрета;
— закрыт период;
— не определена организация;
— не заполнены финансовые аналитики.## Если речь идет о программном проведении
Для типовой КА не стоит самостоятельно записывать проводки в регистр бухгалтерии из модуля документа. Типовой механизм должен формировать регламентированный учет через механизм отражения документов.
Неправильный подход:
1С (Код)12// Не следует напрямую добавлять проводки в типовой регистр бухгалтерииДвижения.Хозрасчетный.Добавить();Правильный подход для типовой КА:
— настроить способ отражения;
— зарегистрировать документ к отражению;
— вызвать штатный механизм отражения;
— использовать расширение только для изменения данных или логики через предусмотренные точки расширения.В типовых конфигурациях проводки часто формируются не непосредственно в
ОбработкаПроведения, а через общий механизм отражения документов. Поэтому изменение движений оперативного регистра, напримерРасчетыСПокупателями, само по себе еще не гарантирует правильного формирования проводок в регламентированном учете. Нужно также проверить, как этот регистр и реквизиты документа участвуют в правилах отражения.10 ноября 2026 в 15:21 в ответ на: Как ограничить права на редактирование периметра консолидации в 1С? #38997# Инструкция по ограничению прав доступа на редактирование периметров консолидации в «1С:Свод отчетности»
## 1. Назначение настройки
Настройка предназначена для ограничения возможности пользователей изменять состав периметров консолидации.
Пользователь с ролью «Редактирование рабочих процессов» должен иметь возможность редактировать только те записи объекта метаданных «Состав периметров консолидации», которые входят в разрешенный ему перечень периметров.
Ограничение необходимо установить для права:
— Изменение;
— Интерактивное изменение, если в конфигурации оно отображается отдельно как право «Редактирование».Важно: ограничение должно применяться именно к правам изменения, а не только к просмотру. Иначе пользователь сможет видеть все периметры, но при этом также сможет изменять записи, к которым у него не должно быть доступа.
—
# 2. Что необходимо определить до настройки
Перед созданием ограничения необходимо определить, по какому признаку пользователю разрешается редактировать периметры.
На практике обычно используется один из вариантов:
1. пользователю разрешены конкретные периметры консолидации;
2. пользователю разрешены периметры, связанные с определенными организациями;
3. пользователю разрешены периметры, соответствующие его группе доступа;
4. пользователь может редактировать только периметры, владельцем или ответственным за которые он является.Для настройки необходимо проверить структуру объекта «Состав периметров консолидации» в конфигураторе:
— является ли объект справочником, регистром сведений или табличной частью;
— как называется поле, содержащее ссылку на периметр;
— есть ли в объекте поле «Организация»;
— есть ли реквизит пользователя, ответственного или владельца;
— где хранится перечень разрешенных периметров для пользователя.Точный текст ограничения зависит от этих имен. Имена полей нельзя определять только по отображаемому заголовку в пользовательском режиме.
—
# 3. Создание или изменение роли
1. Открыть конфигурацию в режиме Конфигуратор.
2. В дереве конфигурации открыть раздел Общие.
3. Открыть объект Роли.
4. Найти роль:РедактированиеРабочихПроцессов
5. Открыть роль.
6. В списке объектов найти объект метаданных:СоставПериметровКонсолидации
В пользовательском режиме он может отображаться как:
Состав периметров консолидации
7. Проверить установленные права для объекта.
Для роли должны быть установлены права:
| Право | Настройка |
|—|—|
| Чтение | Разрешено при необходимости |
| Изменение | Разрешено с ограничением |
| Интерактивное изменение / Редактирование | Разрешено с тем же ограничением |
| Добавление | Определяется требованиями к работе |
| Удаление | Определяется требованиями к работе |Если пользователю требуется только изменять существующий состав периметров, рекомендуется:
— оставить право Изменение с ограничением;
— оставить право Интерактивное изменение с ограничением;
— право Добавление отключить либо также ограничить;
— право Удаление отключить либо ограничить отдельно.—
# 4. Установка ограничения на право «Изменение»
В настройках роли необходимо установить ограничение на право Изменение объекта «Состав периметров консолидации».
Порядок действий:
1. В строке объекта СоставПериметровКонсолидации установить право Изменение.
2. Открыть команду настройки ограничения права.
3. В поле ограничения выбрать вариант задания условия на языке ограничений доступа к данным.
4. Указать условие, при котором запись доступна пользователю для изменения.
5. Сохранить роль.Условие должно проверять не сам факт наличия права на объект, а принадлежность конкретной записи разрешенному пользователю периметру.
—
# 5. Пример ограничения по разрешенным периметрам
Если в объекте СоставПериметровКонсолидации есть реквизит ПериметрКонсолидации, а разрешенные пользователю периметры хранятся в регистре сведений, условие может выглядеть следующим образом:
|СоставПериметровКонсолидации.ПериметрКонсолидации В
| (ВЫБРАТЬ
| РазрешенныеПериметры.ПериметрКонсолидации
| ИЗ
| РегистрСведений.РазрешенныеПериметрыПользователей КАК РазрешенныеПериметры
| ГДЕ
| РазрешенныеПериметры.Пользователь = &ТекущийПользователь)В приведенном примере:
—
СоставПериметровКонсолидации.ПериметрКонсолидацииявляется полем объекта, к которому применяется ограничение;
—РегистрСведений.РазрешенныеПериметрыПользователейявляется регистром, где хранится настройка доступа;
—РазрешенныеПериметры.ПериметрКонсолидацииявляется разрешенным периметром;
—&ТекущийПользовательявляется параметром текущего пользователя.Фактические имена регистра, полей и параметров необходимо заменить на имена, используемые в конфигурации «1С:Свод отчетности».
—
# 6. Пример ограничения через организации
Если доступ определяется организациями, условие может быть построено по организации, указанной в составе периметра.
Например, если в объекте есть реквизит Организация, а доступные организации хранятся в регистре сведений, условие может иметь следующий вид:
|СоставПериметровКонсолидации.Организация В
| (ВЫБРАТЬ
| ДоступныеОрганизации.Организация
| ИЗ
| РегистрСведений.ДоступныеОрганизацииПользователей КАК ДоступныеОрганизации
| ГДЕ
| ДоступныеОрганизации.Пользователь = &ТекущийПользователь)Такое ограничение разрешит изменение только записей, относящихся к организациям, доступным текущему пользователю.
Если реквизит «Организация» находится не непосредственно в объекте СоставПериметровКонсолидации, а в связанном объекте, условие нужно строить через соединение или вложенный запрос.
Например:
|СоставПериметровКонсолидации.ПериметрКонсолидации В
| (ВЫБРАТЬ
| Периметры.ПериметрКонсолидации
| ИЗ
| Справочник.ПериметрыКонсолидации КАК Периметры
| ГДЕ
| Периметры.Организация В
| (ВЫБРАТЬ
| ДоступныеОрганизации.Организация
| ИЗ
| РегистрСведений.ДоступныеОрганизацииПользователей КАК ДоступныеОрганизации
| ГДЕ
| ДоступныеОрганизации.Пользователь = &ТекущийПользователь))—
# 7. Если в конфигурации используется стандартный механизм групп доступа
В типовых решениях на базе БСП доступ может определяться не отдельным регистром разрешенных периметров, а механизмом групп доступа.
В этом случае не следует создавать собственную проверку пользователя, если в конфигурации уже имеется стандартный механизм ограничения доступа.
Необходимо:
1. определить вид доступа, используемый для периметров консолидации;
2. определить, в каком регистре или наборе ключей доступа хранятся права пользователя;
3. использовать тот же механизм, который применяется в других объектах конфигурации;
4. включить объект СоставПериметровКонсолидации в список объектов, к которым применяется ограничение;
5. установить ограничение на права Изменение и Интерактивное изменение.При использовании производительного режима RLS необходимо дополнительно проверить:
— включен ли объект в список объектов с ограничением доступа;
— включено ли поле периметра в ключи доступа;
— заполнены ли ключи доступа для существующих записей;
— выполняется ли обновление прав после изменения состава групп доступа.В БСП для проверки внедрения механизма ограничений рекомендуется использовать отчет «Проверка внедрения БСП» с отбором по подсистеме «Управление доступом».
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1908621/—
# 8. Настройка права «Редактирование»
В некоторых версиях конфигурации право, отображаемое пользователю как «Редактирование», технически соответствует праву «Интерактивное изменение».
Необходимо проверить это в конфигураторе:
1. Открыть роль РедактированиеРабочихПроцессов.
2. Найти объект СоставПериметровКонсолидации.
3. Проверить состав прав объекта.
4. Если присутствуют оба права:
— Изменение;
— Интерактивное изменение,ограничение установить на оба права.
Недостаточно ограничить только интерактивное изменение. Право Изменение является основным правом доступа к изменению данных. Интерактивное изменение является уточнением возможности изменения через пользовательский интерфейс.
Рекомендуемая настройка:
| Право | Значение |
|—|—|
| Изменение | Разрешено с ограничением |
| Интерактивное изменение | Разрешено с тем же ограничением |
| Просмотр / Чтение | Разрешено согласно требованиям |
| Интерактивное добавление | Запрещено, если добавление не требуется |
| Интерактивное удаление | Запрещено, если удаление не требуется |—
# 9. Ограничение добавления и удаления
Если требуется запретить пользователю создание и удаление строк состава периметра, права необходимо настроить отдельно.
## Запрет добавления
В роли снять:
— Добавление;
— Интерактивное добавление.Если пользователь должен добавлять строки только в разрешенные периметры, право Добавление также необходимо ограничить условием доступа.
При добавлении новой записи система может проверять значение периметра после заполнения реквизитов. Поэтому дополнительно следует проверить, что форма объекта не позволяет обойти ограничение через команду массового добавления или обработку заполнения.
## Запрет удаления
Если удаление пользователю не требуется, снять:
— Удаление;
— Интерактивное удаление.Если удаление необходимо только для доступных периметров, на право Удаление необходимо установить такое же ограничение, как на право Изменение.
—
# 10. Настройка роли пользователя
После изменения роли необходимо проверить, какие пользователи имеют эту роль.
1. Открыть справочник пользователей информационной базы.
2. Найти пользователя, которому требуется ограничение.
3. Проверить назначенные роли.
4. Убедиться, что роль РедактированиеРабочихПроцессов назначена пользователю.
5. Убедиться, что у пользователя нет другой роли, предоставляющей неограниченное изменение объекта СоставПериметровКонсолидации.Это важный момент. Если пользователю назначена другая роль с полным правом Изменение без ограничения, ограничение роли РедактированиеРабочихПроцессов фактически не обеспечит защиту данных.
Нужно проверить все роли пользователя, в которых присутствует объект:
СоставПериметровКонсолидации
Если хотя бы одна роль предоставляет неограниченное право изменения, пользователь сможет изменять все записи объекта.
—
# 11. Проверка настройки
Проверку необходимо выполнять под тестовым пользователем, которому назначена только роль Редактирование рабочих процессов и необходимые базовые роли.
## Тест 1. Просмотр разрешенного периметра
1. Войти под тестовым пользователем.
2. Открыть состав разрешенного периметра.
3. Изменить значение.
4. Записать изменения.Ожидаемый результат:
— запись успешно изменяется;
— изменения сохраняются.## Тест 2. Изменение запрещенного периметра
1. Открыть состав другого периметра, не включенного в область доступа пользователя.
2. Попытаться изменить реквизит.
3. Записать изменения.Ожидаемый результат:
— запись недоступна для изменения;
— при попытке записи система выдает сообщение об отсутствии прав либо объект не включается в доступный набор данных;
— изменения не сохраняются.## Тест 3. Проверка списка
Открыть список Состав периметров консолидации.
Необходимо проверить, какой вариант реализован в конфигурации:
— пользователь видит только разрешенные записи;
— пользователь видит все записи, но изменять может только разрешенные;
— пользователь видит все записи, но запрещенные доступны только для чтения.Если задача состоит именно в ограничении редактирования, а не просмотра, допустим второй или третий вариант. Если требуется скрыть запрещенные периметры полностью, аналогичное ограничение необходимо установить также на право Чтение.
## Тест 4. Проверка других способов изменения
Необходимо проверить изменение данных через:
— форму списка;
— форму элемента;
— команды подбора;
— обработку заполнения;
— массовое редактирование;
— внешние обработки;
— фоновые задания;
— обмены данными;
— регламентные задания.RLS ограничивает доступ к данным при обращении к ним с правами пользователя, но программный код, выполняемый с привилегированным режимом, может работать без обычных ограничений доступа. Поэтому критичные серверные процедуры также необходимо проверить отдельно.
—
# 12. Рекомендуемая итоговая настройка роли
Для роли РедактированиеРабочихПроцессов по объекту СоставПериметровКонсолидации рекомендуется установить следующую схему:
| Право | Рекомендуемая настройка |
|—|—|
| Чтение | Разрешить, с ограничением или без ограничения согласно требованиям |
| Изменение | Разрешить с ограничением по доступным периметрам |
| Интерактивное изменение / Редактирование | Разрешить с тем же ограничением |
| Добавление | Запретить, если добавление не требуется |
| Интерактивное добавление | Запретить |
| Удаление | Запретить, если удаление не требуется |
| Интерактивное удаление | Запретить |Ключевое условие должно использовать один и тот же критерий доступа для прав:
— Изменение;
— Интерактивное изменение;
— при необходимости Добавление;
— при необходимости Удаление.После настройки требуется обновить конфигурацию базы данных и проверить права под тестовым пользователем.
10 ноября 2026 в 8:55 в ответ на: Почему база 1С на SQL 25ГБ тормозит, если логи регулярно чистятся? #3899525 ГБ для базы 1С на SQL Server не является большим размером. Сам по себе размер базы обычно не объясняет сильные тормоза. В вашем случае в первую очередь нужно проверить:
1. Не переполняется ли журнал транзакций.
2. Какая модель восстановления установлена.
3. Выполняются ли резервные копии журнала.
4. Не запускается ли раз в неделю тяжелая очистка или уменьшение журнала.
5. Нет ли блокировок, фрагментации индексов и устаревшей статистики.
6. Хватает ли места на дисках и оперативной памяти.## 1. Сначала определить причину роста журнала
Выполните в SQL Server Management Studio:
MySQL123456SELECTname,recovery_model_desc,log_reuse_wait_descFROM sys.databasesWHERE name = N'ИмяБазы1С';Вместо
ИмяБазы1Сукажите фактическое имя базы.Возможные результаты
log_reuse_wait_desc:—
NOTHING, журнал может использоваться повторно, проблема не в невозможности очистки;
—LOG_BACKUP, для базы в модели FULL не выполняются резервные копии журнала;
—ACTIVE_TRANSACTION, есть незавершенная или зависшая транзакция;
—DATABASE_MIRRORING, проблема связана с зеркалированием;
—AVAILABILITY_REPLICA, проблема связана с Always On;
—REPLICATION, журнал удерживается репликацией;
—ACTIVE_BACKUP_OR_RESTORE, идет резервное копирование или восстановление;
—OLDEST_PAGE, старая версия данных удерживается активной транзакцией.Также проверьте фактическое заполнение журнала:
MySQL123USE [ИмяБазы1С];DBCC SQLPERF(LOGSPACE);Более современный вариант:
MySQL1234567USE [ИмяБазы1С];SELECTtotal_log_size_in_bytes / 1024.0 / 1024 AS TotalLogSizeMB,used_log_space_in_bytes / 1024.0 / 1024 AS UsedLogSizeMB,used_log_space_in_percent AS UsedPercentFROM sys.dm_db_log_space_usage;## 2. Проверьте модель восстановления
MySQL12345SELECTname,recovery_model_descFROM sys.databasesWHERE name = N'ИмяБазы1С';### Если установлена модель FULL
В этом случае журнал транзакций не будет освобождаться просто от обычного полного резервного копирования базы. Необходимо регулярно делать резервные копии журнала.
Обычно для базы 1С достаточно выполнять их каждые 15 минут, 30 минут или 1 час, в зависимости от требований к восстановлению.
Пример резервной копии журнала:
MySQL123456BACKUP LOG [ИмяБазы1С]TO DISK = N'D:SQLBackupИмяБазы1С_log.trn'WITHINIT,COMPRESSION,STATS = 10;Важно: файл резервной копии журнала не нужно каждый раз перезаписывать через
INIT, если вы хотите хранить цепочку резервных копий. Обычно используются разные имена файлов или настроенный SQL Server Agent.После настройки резервного копирования журнала его физический размер сам по себе может остаться большим. Это нормально. Главное, чтобы внутри него освобождалось место для повторного использования.
### Если резервные копии журнала не нужны
Для большинства обычных баз 1С можно использовать модель
SIMPLE:MySQL12ALTER DATABASE [ИмяБазы1С]SET RECOVERY SIMPLE;После переключения модель восстановления сама по себе может не уменьшить физический файл журнала. Если журнал уже раздулся, его можно один раз уменьшить до разумного размера.
Сначала определите логическое имя файла:
MySQL12345678USE [ИмяБазы1С];SELECTname,type_desc,size * 8 / 1024 AS SizeMB,physical_nameFROM sys.database_files;Затем однократно:
MySQL123USE [ИмяБазы1С];DBCC SHRINKFILE (N'ИмяЛогическогоФайлаЛога', 2048);Здесь
2048означает 2 ГБ. Это только пример. Размер нужно выбирать по фактической нагрузке.Не рекомендуется выполнять
SHRINKFILEкаждую неделю. После уменьшения SQL Server будет снова увеличивать журнал, что приводит к дополнительным паузам, фрагментации и тормозам.## 3. Не путайте очистку журнала с уменьшением файла
Есть две разные операции:
1. Освободить занятые внутри журнала участки для повторного использования.
2. Уменьшить физический файл.ldf.Регулярное уменьшение
.ldfобычно является ошибкой. Правильная схема:— для
FULLнастроить резервное копирование журнала;
— дляSIMPLEне уменьшать журнал постоянно;
— один раз подобрать размер журнала с запасом;
— настроить нормальный шаг авторасширения, например 512 МБ или 1 ГБ;
— не использовать авторасширение в процентах.Проверить параметры файлов можно так:
MySQL12345678910SELECTDB_NAME(database_id) AS DatabaseName,name,type_desc,size * 8 / 1024 AS SizeMB,growth,is_percent_growth,physical_nameFROM sys.master_filesWHERE database_id = DB_ID(N'ИмяБазы1С');Если
is_percent_growth = 1, лучше заменить процентное увеличение на фиксированное:MySQL123456ALTER DATABASE [ИмяБазы1С]MODIFY FILE(NAME = N'ИмяЛогическогоФайлаЛога',FILEGROWTH = 512MB);## 4. Проверьте, не тормозит ли база во время еженедельной процедуры
Если тормоза появляются примерно в один и тот же день или время, очень вероятно, что запускается одно из заданий:
— уменьшение файлов базы;
— перестроение всех индексов;
— обновление статистики всей базы;
— проверка целостности;
— полное резервное копирование;
— резервное копирование журнала;
— обслуживание баз сразу нескольких информационных баз;
— удаление данных в 1С;
— очистка регистра сведений;
— регламентное задание 1С;
— обновление полнотекстового индекса;
— обработка копий базы данных или 1С:Аналитики.Проверьте задания SQL Server Agent и регламентные задания в 1С.
Особенно подозрительны задания, в которых присутствуют команды:
MySQL12345DBCC SHRINKDATABASEDBCC SHRINKFILEALTER INDEX ... REBUILDUPDATE STATISTICSDBCC CHECKDBDBCC CHECKDBсам по себе полезен, но на рабочей базе объемом 25 ГБ он может создавать заметную нагрузку. Его лучше запускать ночью и не одновременно с резервным копированием или регламентными заданиями 1С.## 5. Проверьте активные блокировки
Во время тормозов выполните:
MySQL1234567891011121314SELECTr.session_id,r.blocking_session_id,r.status,r.command,r.wait_type,r.wait_time,r.cpu_time,r.total_elapsed_time,DB_NAME(r.database_id) AS DatabaseName,t.text AS SqlTextFROM sys.dm_exec_requests AS rCROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS tWHERE r.database_id = DB_ID(N'ИмяБазы1С');Если
blocking_session_idне равен0, один сеанс блокирует другой.Для просмотра открытых транзакций:
MySQL1DBCC OPENTRAN (N'ИмяБазы1С');Если найдена очень старая активная транзакция, она может не давать SQL Server переиспользовать журнал. Причиной может быть:
— зависший сеанс 1С;
— длительная обработка;
— незавершенная транзакция в расширении;
— массовое проведение документов;
— удаление большого объема данных;
— зависшая фоновая задача.Нельзя без проверки сразу завершать сеанс командой
KILL. Сначала нужно определить, что это за пользователь, что он выполняет и не идет ли важная операция.## 6. Проверьте индексы и статистику
На базе 1С не стоит бездумно перестраивать абсолютно все индексы каждый день. Но если база давно не обслуживалась, фрагментация может влиять на скорость.
Проверка фрагментации:
MySQL123456789101112131415161718192021222324USE [ИмяБазы1С];SELECTOBJECT_SCHEMA_NAME(ips.object_id) AS SchemaName,OBJECT_NAME(ips.object_id) AS TableName,i.name AS IndexName,ips.index_type_desc,ips.avg_fragmentation_in_percent,ips.page_countFROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'LIMITED') AS ipsINNER JOIN sys.indexes AS iON ips.object_id = i.object_idAND ips.index_id = i.index_idWHERE ips.database_id = DB_ID()AND ips.index_id > 0AND ips.page_count > 1000ORDER BY ips.avg_fragmentation_in_percent DESC;Ориентировочно:
— до 10% , ничего не делать;
— от 10 до 30% , обычноREORGANIZE;
— более 30% , возможноREBUILD, но лучше не выполнять это в рабочее время.Пример:
MySQL123ALTER INDEX [ИмяИндекса]ON [dbo].[ИмяТаблицы]REORGANIZE;или:
MySQL123ALTER INDEX [ИмяИндекса]ON [dbo].[ИмяТаблицы]REBUILD;При
REBUILDсущественно увеличивается нагрузка и может резко вырасти журнал транзакций. Если база работает в моделиFULL, перед таким обслуживанием особенно важно, чтобы резервные копии журнала выполнялись штатно.Обновить статистику можно так:
MySQL123USE [ИмяБазы1С];EXEC sys.sp_updatestats;Но на рабочей базе это также может дать нагрузку. Запускайте ночью и предварительно сделайте резервную копию.
## 7. Проверьте крупные таблицы базы
Размер базы 25 ГБ нужно разложить на данные и индексы:
MySQL1234567891011121314151617USE [ИмяБазы1С];SELECTt.name AS TableName,SUM(a.total_pages) * 8 / 1024 AS TotalMB,SUM(a.used_pages) * 8 / 1024 AS UsedMB,SUM(a.data_pages) * 8 / 1024 AS DataMBFROM sys.tables AS tINNER JOIN sys.indexes AS iON t.object_id = i.object_idINNER JOIN sys.partitions AS pON i.object_id = p.object_idAND i.index_id = p.index_idINNER JOIN sys.allocation_units AS aON p.partition_id = a.container_idGROUP BY t.nameORDER BY TotalMB DESC;Если среди крупнейших объектов находятся таблицы:
—
_DbCopiesTrLogs;
—_DbCopiesTrTables;
—_DbCopiesTrChanges;
—_DbCopiesTrChObj;
—_DbCopiesInitialLast;
—_DbCopiesUpdates;то в базе может накапливаться механизм «Копии баз данных», который используется, в том числе, 1С:Аналитикой. Такие таблицы иногда становятся причиной существенного роста базы.
Удалять данные напрямую из таблиц 1С через SQL нельзя без понимания структуры и резервной копии. Сначала нужно отключать ненужные копии базы штатными средствами 1С и проверять результат. Прямое удаление из таблиц 1С может повредить логическую целостность базы.
## 8. Проверьте свободное место
Нужно проверить свободное место минимум на следующих дисках:
— диск с файлами данных
.mdfи.ndf;
— диск с журналом.ldf;
— диск для временной базыtempdb;
— диск для резервных копий.Если файл журнала растет, а на диске мало свободного места, 1С может начать выдавать ошибки и сильно замедляться.
Рекомендуется размещать отдельно:
— файлы данных;
— файл журнала;
—tempdb;
— резервные копии.Для небольшой базы это не всегда обязательно, но при постоянных тормозах разделение дисков помогает определить узкое место.
## 9. Проверьте настройки SQL Server и 1С
Для SQL Server стоит проверить:
— разрядность SQL Server, желательно 64 bit;
— достаточный объем оперативной памяти;
— ограничение максимальной памяти SQL Server;
— наличие свободной памяти на сервере;
— загрузку дисков;
— размерtempdb;
— число файловtempdb;
— включенную автостатистику;
— отсутствие запуска тяжелых заданий в рабочее время.Если SQL Server забирает всю память сервера, оставляя недостаточно памяти операционной системе и серверу 1С, работа также будет замедляться.
Проверьте параметры памяти:
MySQL123456789SELECTname,value_in_useFROM sys.configurationsWHERE name IN('max server memory (MB)','min server memory (MB)');Для сервера, где одновременно работают SQL Server и сервер 1С, нельзя отдавать SQL Server всю оперативную память. Нужно оставить запас для Windows,
rphost,rmngr, антивируса и других служб.## Что исправить в первую очередь
Практический порядок действий такой:
1. Узнать
recovery_model_descиlog_reuse_wait_desc.
2. Проверить фактический размер и заполнение.ldf.
3. Если модельFULL, настроить резервное копирование журнала каждые 15 минут, 30 минут или 1 час.
4. Если модельSIMPLE, не выполнять еженедельныйSHRINK.
5. Один раз уменьшить чрезмерно раздутый журнал после устранения причины роста.
6. Найти еженедельное задание, во время которого начинаются тормоза.
7. Проверить блокировки и активные транзакции именно в момент тормозов.
8. Проверить фрагментацию индексов и статистику.
9. Найти самые крупные таблицы.
10. Проверить свободное место, память,tempdbи нагрузку на диски.Наиболее вероятные причины при вашем описании:
— журнал не резервируется, а раз в неделю принудительно уменьшается;
— раз в неделю выполняется тяжелыйREBUILDилиSHRINK;
— зависает длительная транзакция;
— база работает вFULL, но резервные копии журнала не настроены;
— накопились таблицы механизма «Копии баз данных»;
— тормоза вызываются регламентным заданием 1С, а не размером самой базы.9 ноября 2026 в 22:50 в ответ на: Как завершить проверку конфигурации в 1С, если она запущена? #38993Если запущена именно проверка конфигурации в конфигураторе 1С, отменить ее можно так:
1. Посмотрите внизу окна конфигуратора или в окне состояния выполнения.
2. Нажмите кнопку:1С (Код)1Остановитьили значок с красным квадратом.
3. Если отдельного окна нет, попробуйте нажать:
1С (Код)1EscИногда помогает:
1С (Код)1Ctrl + BreakПосле остановки дождитесь сообщения о завершении операции или возврата управления конфигуратору.
Если конфигуратор не реагирует:
1. Подождите несколько минут, особенно если база большая.
2. Проверьте, не выполняется ли проверка на сервере.
3. Если окно полностью зависло, откройте диспетчер задач Windows и завершите процесс:1С (Код)11cv8.exeили:
1С (Код)11cv8c.exeВ зависимости от режима запуска.
После принудительного завершения запустите конфигуратор заново. Если появится предложение восстановить сеанс, откажитесь и откройте базу обычным способом.
Обычная проверка конфигурации не должна изменять данные информационной базы. Она анализирует конфигурацию и модули. Поэтому принудительное завершение обычно не приводит к потере данных, но несохраненные изменения в конфигураторе могут быть потеряны.
Не путайте с операцией:
1С (Код)1Администрирование → Тестирование и исправлениеВот ее прерывать во время исправления базы нежелательно. Если запущено именно тестирование и исправление, лучше сначала дождаться завершения или использовать штатную кнопку остановки.
9 ноября 2026 в 22:46 в ответ на: Как устранить ошибку изменения метода «ОбработкаПроведения» в 1С? #38991Ошибка означает не ошибку в коде движений, а конфликт расширения с изменившимся типовым методом.
В расширении
OSM_Sborkaиспользуется изменение метода:1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")Платформа запомнила текст типовой процедуры
ОбработкаПроведенияна момент создания расширения. Сейчас текст этой процедуры в основной конфигурации отличается. Поэтому 1С запрещает применить расширение и сообщает:1С (Код)1Текст модуля для метода "ОбработкаПроведения" изменилсяТакое обычно появляется после:
— обновления УНФ;
— изменения типовой конфигурации;
— установки другого расширения;
— ручной правки основной конфигурации;
— изменения типового метода в конфигурации поставщика.## Что сделать
### 1. Сделайте резервную копию
Перед изменением расширения сохраните:
— резервную копию информационной базы;
— файл расширения.cfe, если он есть;
— текущий вариант кода расширения.—
### 2. Проверьте типовой метод
Откройте конфигуратор и найдите в основной конфигурации:
1С (Код)1234ДокументыКорректировкаРеализацииМодуль объектаОбработкаПроведенияПосмотрите, существует ли процедура:
1С (Код)12345Процедура ОбработкаПроведения(Отказ, РежимПроведения)// типовой кодКонецПроцедурыЗапомните ее текущую сигнатуру и содержимое.
Затем откройте в расширении:
1С (Код)12345Расширения конфигурацииOSM_SborkaДокументыКорректировкаРеализацииМодуль объектаТам находится ваша процедура с аннотацией:
1С (Код)12&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ...—
## Вариант 1. Пересоздать изменение метода в расширении
Это основной способ исправления.
### Шаг 1. Сохраните свой код
Скопируйте код из процедуры расширения в текстовый файл.
Например:
1С (Код)123456789101112131415&ИзменениеИКонтроль("ОбработкаПроведения")Процедура OSM_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Ваше заполнение движенийКонецПроцедуры### Шаг 2. Удалите изменяемый метод из расширения
В расширении удалите именно процедуру, которая помечена:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")Не удаляйте весь документ из расширения. Нужно удалить только изменяемый метод или содержимое модуля объекта расширения, если там находится только этот код.
### Шаг 3. Запишите расширение
Нажмите:
1С (Код)1Конфигурация → ПроверитьЗатем:
1С (Код)1Конфигурация → Обновить конфигурацию базы данныхЕсли база не дает обновить конфигурацию из-за активного расширения, временно снимите его активность в режиме 1С:Предприятие или удалите расширение только после сохранения файла
.cfe.### Шаг 4. Создайте изменение заново
В объектном модуле документа расширения снова добавьте процедуру:
1С (Код)123456789101112131415&ИзменениеИКонтроль("ОбработкаПроведения")Процедура OSM_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Ваш код формирования движенийКонецПроцедурыПосле этого платформа заново запомнит текущую версию типового метода.
### Шаг 5. Обновите базу
Выполните:
1С (Код)1Конфигурация → Проверить конфигурациюЗатем:
1С (Код)1Конфигурация → Обновить конфигурацию базы данныхПосле обновления запустите базу и снова проверьте проведение документа.
—
# Вариант 2. Использовать
&Послевместо&ИзменениеИКонтрольДля вашей задачи это обычно более подходящий вариант.
Вам нужно:
1. дать типовой процедуре сформировать движения;
2. очистить типовые движения;
3. добавить свои движения.Для этого не обязательно использовать
&ИзменениеИКонтроль. Можно выполнить свой код после типовой процедуры через&После.Код будет выглядеть так:
1С (Код)1234567891011121314&После("ОбработкаПроведения")Процедура OSM_ПослеОбработкаПроведения(Отказ, РежимПроведения)Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Здесь добавляется ваша логикаКонецПроцедурыВ этом варианте не нужно писать:
1С (Код)1ПродолжитьВызов(Отказ, РежимПроведения);Типовая процедура будет вызвана платформой автоматически, а ваша процедура выполнится после нее.
## Почему для вашей задачи лучше
&ПослеВы не хотите полностью заменить типовое проведение. Вам нужно только изменить результат движений регистра.
Поэтому схема:
1С (Код)12345Типовое проведение↓Очистка типовых движений↓Формирование собственных движенийхорошо соответствует аннотации:
1С (Код)1&После("ОбработкаПроведения")Кроме того, такой вариант обычно меньше зависит от изменений текста типового метода.
&ИзменениеИКонтрольспециально контролирует неизменность исходной процедуры, поэтому после обновления конфигурации чаще появляется именно такая ошибка.—
# Рекомендуемый код для вашего случая
В расширении документа
КорректировкаРеализациизамените текущую процедуру с&ИзменениеИКонтрольна:1С (Код)1234567891011121314151617181920&После("ОбработкаПроведения")Процедура OSM_ПослеОбработкаПроведения(Отказ, РежимПроведения)Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;// Удаляем движения, сформированные типовой процедуройДвижения.РасчетыСПокупателями.Очистить();// Добавляем собственные движения// Пример://// Движение = Движения.РасчетыСПокупателями.Добавить();// Движение.Период = Дата;// Движение.Сумма = НужнаяСумма;КонецПроцедурыЕсли платформа сообщает, что процедура с аннотацией не найдена, проверьте точное имя типового метода. Оно должно быть именно таким:
1С (Код)1&После("ОбработкаПроведения")А не:
1С (Код)1&После("Проведение")или:
1С (Код)1&После("ОбработкаПроведенияДокумента")—
# Когда все-таки оставлять
&ИзменениеИКонтрольОставляйте:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")если вам нужно управлять полным порядком выполнения типового метода, например:
1С (Код)12345678910111213141516171819&ИзменениеИКонтроль("ОбработкаПроведения")Процедура OSM_ОбработкаПроведения(Отказ, РежимПроведения)// Проверка до типового проведенияЕсли Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Не заполнена организация.");Возврат;КонецЕсли;ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;// Код после типового проведенияКонецПроцедурыНо после каждого обновления типовой конфигурации придется проверять, не изменился ли метод
ОбработкаПроведения.Для изменения движений регистра в вашем случае достаточно:
1С (Код)1&После("ОбработкаПроведения")—
# Если ошибка остается после пересоздания метода
Проверьте следующие места.
## 1. Остались две процедуры с одной аннотацией
В модуле расширения может остаться старый метод:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")и новый метод:
1С (Код)1&После("ОбработкаПроведения")Старую процедуру нужно удалить полностью.
—
## 2. Другое расширение изменяет тот же метод
Откройте список расширений и проверьте, нет ли еще одного расширения, которое изменяет:
1С (Код)1Документ.КорректировкаРеализации.МодульОбъектаОсобенно ищите аннотации:
1С (Код)1234&Вместо("ОбработкаПроведения")&ИзменениеИКонтроль("ОбработкаПроведения")&Перед("ОбработкаПроведения")&После("ОбработкаПроведения")Несколько расширений могут менять один и тот же метод. В таком случае проверьте порядок применения расширений и временно отключите другие расширения.
—
## 3. Изменения не записаны
После исправления выполните:
1С (Код)1Конфигурация → Проверить конфигурациюЗатем сохраните конфигурацию и обновите конфигурацию базы данных.
После этого полностью перезапустите клиент 1С.
—
## 4. Остался старый кэш
Если расширение уже пересоздавалось, а ошибка продолжает появляться:
1. Закройте все сеансы 1С.
2. Завершите работу конфигуратора.
3. Очистите пользовательский кэш 1С.
4. Запустите конфигуратор снова.
5. Проверьте расширение и обновите конфигурацию базы данных.—
Для данной задачи практически лучше оставить расширение в таком виде:
1С (Код)12345678910111213&После("ОбработкаПроведения")Процедура OSM_ПослеОбработкаПроведения(Отказ, РежимПроведения)Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Формирование собственных движенийКонецПроцедурыОшибка исчезнет после удаления старой модификации с
&ИзменениеИКонтрольи повторной записи расширения.9 ноября 2026 в 22:42 в ответ на: Как изменить движения регистра «Расчёты с покупателями» в УНФ через расширение? #38989В УНФ 3.0.12.253 это можно сделать через расширение конфигурации, не изменяя типовую конфигурацию.
Правильная схема такая:
1. Типовая процедура
ОбработкаПроведениясначала выполняется.
2. Типовые движения регистраРасчетыСПокупателямиочищаются.
3. В регистр добавляются ваши движения.
4. При записи документа платформа записывает уже измененный набор движений.Используйте аннотацию
&ИзменениеИКонтроль, потому что здесь нужно выполнить код после типового проведения.## 1. Создайте расширение
В конфигураторе:
1С (Код)123КонфигурацияРасширения конфигурацииДобавитьНапример, назовите расширение:
1С (Код)1ИзменениеРасчетовСПокупателямиДобавьте в расширение документ:
1С (Код)1Документы → КорректировкаРеализацийОткройте его:
1С (Код)1Модуль объектаЕсли регистра
РасчетыСПокупателямине видно в объектном модуле расширения, добавьте его в состав движений документа через расширение.Обычно это делается так:
1С (Код)123Документ КорректировкаРеализацийДвиженияРасчетыСПокупателямиУ регистра должна быть включена возможность использования документом как регистратора.
—
## 2. Базовый шаблон кода
В модуле объекта документа
КорректировкаРеализацийрасширения напишите:1С (Код)123456789101112131415161718192021&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)// Сначала выполняем типовое проведение документаПродолжитьВызов(Отказ, РежимПроведения);// Если типовое проведение завершилось с отказом,// свои движения изменять не нужноЕсли Отказ ТогдаВозврат;КонецЕсли;// Включаем запись движений по региструДвижения.РасчетыСПокупателями.Записывать = Истина;// Удаляем движения, сформированные типовой процедуройДвижения.РасчетыСПокупателями.Очистить();// Здесь добавляем свои движенияКонецПроцедурыКлючевая строка:
1С (Код)1Движения.РасчетыСПокупателями.Очистить();Она удаляет из набора движений движения, которые сформировала типовая процедура.
После этого вы добавляете свои записи:
1С (Код)123456Движение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.Контрагент = Контрагент;Движение.Договор = Договор;Движение.Сумма = СуммаДокумента;Но конкретные имена полей нужно проверить именно в вашей базе. В регистре могут использоваться, например:
—
Контрагент;
—Партнер;
—Договор;
—Организация;
—РасчетныйДокумент;
—Сумма;
—Валюта;
—Курс;
—Кратность;
—Сделка;
—ЗаказКлиента;
—ВидДвижения.Нельзя заранее гарантировать точные имена измерений и ресурсов без просмотра структуры регистра в вашей конфигурации.
—
# 3. Как посмотреть правильные имена полей
В конфигураторе откройте:
1С (Код)12Регистры накопленияРасчетыСПокупателямиПосмотрите вкладки:
1С (Код)123ИзмеренияРесурсыРеквизитыНапример, если структура регистра выглядит так:
1С (Код)123456789Измерения:ОрганизацияПартнерДоговорДокументРасчетовРесурсы:СуммаСуммаРеглто движение нужно создавать так:
1С (Код)123456789Движение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.Организация = Организация;Движение.Партнер = Партнер;Движение.Договор = Договор;Движение.ДокументРасчетов = Ссылка;Движение.Сумма = СуммаДокумента;Движение.СуммаРегл = СуммаДокумента;Если регистр остаточный, у него дополнительно будет поле:
1С (Код)1Движение.ВидДвижения = ВидДвиженияНакопления.Приход;или:
1С (Код)1Движение.ВидДвижения = ВидДвиженияНакопления.Расход;Если регистр оборотный, свойства
ВидДвиженияу него не будет.—
# 4. Пример с одной собственной записью
Допустим, вы хотите полностью удалить типовые движения и создать одну запись по текущему документу.
Пример:
1С (Код)1234567891011121314151617181920212223&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)// Выполняем штатное проведениеПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;// Очищаем типовые движенияДвижения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Формируем свое движениеДвижение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.Контрагент = Контрагент;Движение.Договор = Договор;Движение.Сумма = СуммаДокумента;КонецПроцедурыЕсли документ не имеет реквизита
Договор, а договор находится в табличной части или в другом реквизите, этот код нужно изменить.—
# 5. Пример с движением по строкам документа
Если в
КорректировкаРеализацийесть табличная часть, напримерТовары, и по каждой строке нужно сформировать свое движение:1С (Код)1234567891011121314151617181920212223242526&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();Для Каждого СтрокаТовара Из Товары ЦиклДвижение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.Контрагент = Контрагент;Движение.Договор = Договор;Движение.Номенклатура = СтрокаТовара.Номенклатура;Движение.Сумма = СтрокаТовара.Сумма;КонецЦикла;КонецПроцедурыНо
Номенклатураобычно не является измерением регистра расчетов с покупателями. Поэтому добавлять это поле можно только если оно действительно есть в регистре.Чаще расчетный регистр заполняется не по каждой номенклатуре, а по документу расчетов, партнеру, договору и сумме.
—
# 6. Как определить, приход или расход нужно ставить
Если
РасчетыСПокупателямиявляется регистром остатков, у него есть полеВидДвижения.Для увеличения задолженности покупателя обычно используется один вид движения, для уменьшения задолженности, другой.
В типовом коде документа нужно посмотреть, что делает сама конфигурация.
Откройте движения документа:
1. Откройте документ
Корректировка реализации.
2. Нажмите:1С (Код)1Еще → Движения документа3. Выберите регистр
Расчеты с покупателями.
4. Посмотрите типовые строки.
5. Сравните:
— вид движения;
— сумму;
— контрагента;
— договор;
— документ расчетов;
— организацию;
— валюту;
— дату.Можно также временно включить регистрацию движений и посмотреть результат после проведения.
Пример движения с видом движения:
1С (Код)1234567Движение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.ВидДвижения = ВидДвиженияНакопления.Приход;Движение.Контрагент = Контрагент;Движение.Договор = Договор;Движение.Сумма = СуммаДокумента;Важный момент: нельзя автоматически считать, что для уменьшения задолженности всегда нужно указывать
Расход. Это зависит от назначения конкретного регистра и логики УНФ. Сначала нужно посмотреть типовую запись в движениях.—
# 7. Более надежный способ: скопировать типовое движение и изменить только нужные поля
Если типовая конфигурация заполняет много обязательных реквизитов, безопаснее не создавать движение полностью вручную, а:
1. Выполнить типовое проведение.
2. Получить типовую запись.
3. Изменить нужные значения.
4. Оставить остальные заполненные поля.Например, если после типового проведения в регистре всегда создается одна строка:
1С (Код)12345678910111213141516171819202122&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Если Движения.РасчетыСПокупателями.Количество() = 0 ТогдаВозврат;КонецЕсли;Движение = Движения.РасчетыСПокупателями[0];// Изменяем только нужные значенияДвижение.Сумма = НужнаяСумма;Движение.Период = НужнаяДата;КонецПроцедурыТакой вариант удобен, если нужно изменить только сумму, дату или документ расчетов.
Но если типовая процедура создает несколько движений, нужно понимать, какую именно строку вы изменяете.
—
# 8. Если нужно удалить типовые движения и создать несколько своих
1С (Код)1234567891011121314151617181920212223242526272829&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Первое движениеДвижение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.Контрагент = Контрагент;Движение.Договор = Договор;Движение.Сумма = Сумма1;// Второе движениеДвижение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.Контрагент = Контрагент;Движение.Договор = Договор;Движение.Сумма = Сумма2;КонецПроцедурыЕсли регистр остаточный и нужно сделать расходное движение:
1С (Код)1Движение.ВидДвижения = ВидДвиженияНакопления.Расход;Если приходное:
1С (Код)1Движение.ВидДвижения = ВидДвиженияНакопления.Приход;—
# 9. Почему не нужно использовать
Записать()вручнуюВ обработке проведения не нужно писать:
1С (Код)1Движения.РасчетыСПокупателями.Записать();Движения документа записываются платформой автоматически после выполнения
ОбработкаПроведения.Правильно:
1С (Код)1234Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();Движение = Движения.РасчетыСПокупателями.Добавить();Неправильно:
1С (Код)1Движения.РасчетыСПокупателями.Записать();Ручная запись внутри проведения может привести к проблемам с транзакцией и повторной записью регистра.
—
# 10. Если после
ПродолжитьВызовдвижения нельзя изменитьВозможны две причины.
## Причина 1. Регистр не включен в движения документа
Проверьте, что в расширении у документа есть регистр:
1С (Код)1Документы → КорректировкаРеализаций → Движенияи там указан:
1С (Код)1РасчетыСПокупателямиЕсли регистра нет, платформа может выдать ошибку при обращении к:
1С (Код)1Движения.РасчетыСПокупателямиили движение не будет записываться.
## Причина 2. Документ не является регистратором регистра
Откройте регистр накопления и проверьте, входит ли документ
КорректировкаРеализацийв список регистраторов.Если документ не является регистратором, штатным способом через
Движениязаписать этот регистр нельзя. Тогда нужно либо:— добавить документ в регистраторы регистра в расширении, если конфигурация это позволяет;
— использовать предусмотренный типовой механизм корректировки;
— изменять движения регистра через специальный документКорректировка регистров, если он предусмотрен в УНФ;
— не записывать регистр напрямую в произвольной серверной процедуре.Для регистра расчетов это особенно важно, поскольку в типовых конфигурациях взаиморасчеты могут пересчитываться специальными обработками.
—
# 11. Практический вариант для начала
Сначала поставьте такой диагностический код:
1С (Код)1234567891011121314151617&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Сообщить("Количество типовых движений: "+ Строка(Движения.РасчетыСПокупателями.Количество()));КонецПроцедурыПроведите документ и посмотрите количество движений.
Если количество больше нуля, можно временно посмотреть значения конкретного движения:
1С (Код)123456789101112131415161718192021&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Для Каждого Движение Из Движения.РасчетыСПокупателями ЦиклСообщить("Период: " + Строка(Движение.Период));Сообщить("Сумма: " + Строка(Движение.Сумма));Сообщить("Контрагент: " + Строка(Движение.Контрагент));Сообщить("Договор: " + Строка(Движение.Договор));КонецЦикла;КонецПроцедурыПоля в этом диагностическом примере должны существовать в вашем регистре. Если какого-то поля нет, строку с ним нужно удалить или заменить на фактическое имя.
После проверки замените код на рабочий:
1С (Код)1234567891011121314151617181920&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ИзменениеРасчетов_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();Движение = Движения.РасчетыСПокупателями.Добавить();Движение.Период = Дата;Движение.Контрагент = Контрагент;Движение.Договор = Договор;Движение.Сумма = НужнаяСумма;КонецПроцедурыПеред использованием на рабочей базе сделайте резервную копию и проверьте результат в копии базы на нескольких вариантах документа:
— корректировка увеличивает сумму;
— корректировка уменьшает сумму;
— документ полностью сторнируется;
— документ проводится повторно;
— документ сначала распроводится, затем проводится снова;
— меняются контрагент, договор или документ расчетов.Самое важное в вашем случае: сначала выполнить
ПродолжитьВызов, затем очиститьДвижения.РасчетыСПокупателями, после этого добавить свои записи с полным набором измерений и ресурсов регистра.9 ноября 2026 в 21:06 в ответ на: Как использовать &ИзменениеИКонтроль(«ОбработкаПроведения») в 1С? #38987## Что делает
&ИзменениеИКонтроль("ОбработкаПроведения")Это аннотация для расширений конфигурации 1С.
Она позволяет изменить типовую процедуру
ОбработкаПроведения, не редактируя основной объект конфигурации.Обычно используется, когда нужно:
— добавить свою проверку перед проведением;
— запретить проведение документа при определенных условиях;
— дополнить движения по регистрам;
— выполнить свой код до или после типового проведения;
— изменить поведение типовой процедуры через расширение.Основной принцип:
1С (Код)12345678910&ИзменениеИКонтроль("ИмяТиповогоМетода")Процедура ИмяМетодаРасширения(...)// Ваш код до типового методаПродолжитьВызов(...);// Ваш код после типового методаКонецПроцедурыВ вашем случае:
1С (Код)12345678910&ИзменениеИКонтроль("ОбработкаПроведения")Процедура Расширение_ОбработкаПроведения(Отказ, РежимПроведения)// Ваш код до типового проведенияПродолжитьВызов(Отказ, РежимПроведения);// Ваш код после типового проведенияКонецПроцедуры—
# 1. Где находится
ОбработкаПроведенияУ документа обычно есть объектный модуль. В нем находится процедура:
1С (Код)12345Процедура ОбработкаПроведения(Отказ, РежимПроведения)// Типовой код проведения документаКонецПроцедурыНапример, в типовой конфигурации процедура может выглядеть примерно так:
1С (Код)123456789101112131415Процедура ОбработкаПроведения(Отказ, РежимПроведения)Движения.ТоварыНаСкладах.Записывать = Истина;Для Каждого ТекущаяСтрока Из Товары ЦиклДвижение = Движения.ТоварыНаСкладах.Добавить();Движение.Период = Дата;Движение.Номенклатура = ТекущаяСтрока.Номенклатура;Движение.Склад = Склад;Движение.Количество = ТекущаяСтрока.Количество;КонецЦикла;КонецПроцедурыРедактировать эту процедуру в основной конфигурации нежелательно, особенно если конфигурация типовая и регулярно обновляется.
Вместо этого создается расширение.
—
# 2. Что означает
ИзменениеИКонтрольВ расширениях 1С есть несколько способов изменить типовой код:
—
&Перед, выполнить код перед типовой процедурой;
—&После, выполнить код после типовой процедуры;
—&Вместо, полностью заменить типовую процедуру;
—&ИзменениеИКонтроль, изменить типовую процедуру и самостоятельно управлять вызовом типового кода.Аннотация:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")говорит платформе:
> Эта процедура расширения изменяет типовую процедуру
ОбработкаПроведения. Разработчик сам решает, вызывать ли типовую процедуру черезПродолжитьВызов.Именно поэтому внутри обычно присутствует:
1С (Код)1ПродолжитьВызов(Отказ, РежимПроведения);Если не вызвать
ПродолжитьВызов, типовой кодОбработкаПроведениявыполнен не будет.—
# 3. Как создать это на практике
## Шаг 1. Создайте расширение
В конфигураторе:
1. Откройте конфигурацию.
2. Выберите пункт:1С (Код)1Конфигурация → Расширения конфигурации3. Создайте новое расширение.
4. Задайте имя, например:1С (Код)1КонтрольПроведенияДокументов5. Установите расширение в режим использования.
—
## Шаг 2. Добавьте документ в расширение
В дереве расширения:
1. Откройте раздел
Документы.
2. Добавьте нужный документ из основной конфигурации.
3. Например:1С (Код)1РеализацияТоваровУслуг4. Откройте объектный модуль документа в расширении.
Важно: процедура
ОбработкаПроведенияобычно находится именно в объектном модуле документа, а не в модуле формы.—
## Шаг 3. Создайте процедуру с аннотацией
В объектном модуле расширения напишите:
1С (Код)123456&ИзменениеИКонтроль("ОбработкаПроведения")Процедура КонтрольПроведения_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедурыИмя процедуры расширения должно отличаться от имени типовой процедуры.
Правильно:
1С (Код)1Процедура КонтрольПроведения_ОбработкаПроведения(...)Нежелательно писать:
1С (Код)1Процедура ОбработкаПроведения(...)В расширении лучше использовать уникальный префикс:
1С (Код)123КонтрольПроведения_ОбработкаПроведенияРасширениеФирмы_ОбработкаПроведенияМояПроверка_ОбработкаПроведения—
# 4. Пример: запретить проведение документа
Допустим, нужно запретить проведение, если в документе не заполнен склад.
Код расширения:
1С (Код)12345678910111213141516&ИзменениеИКонтроль("ОбработкаПроведения")Процедура КонтрольПроведения_ОбработкаПроведения(Отказ, РежимПроведения)Если Не ЗначениеЗаполнено(Склад) ТогдаОтказ = Истина;Сообщить("Проведение документа невозможно. Не заполнен склад.");Возврат;КонецЕсли;ПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедурыКак это работает:
1. Пользователь нажимает
Провести.
2. Вызывается процедура расширения.
3. Проверяется реквизитСклад.
4. Если склад не заполнен:
— устанавливаетсяОтказ = Истина;
— выводится сообщение;
— выполняетсяВозврат;
— типовая процедура не вызывается.
5. Если склад заполнен, выполняется:1С (Код)1ПродолжитьВызов(Отказ, РежимПроведения);После этого работает типовое проведение документа.
—
# 5. Пример: проверка табличной части
Допустим, нужно запретить проведение, если в документе есть строка с нулевым количеством.
1С (Код)12345678910111213141516171819202122232425&ИзменениеИКонтроль("ОбработкаПроведения")Процедура КонтрольПроведения_ОбработкаПроведения(Отказ, РежимПроведения)Для Каждого СтрокаТовара Из Товары ЦиклЕсли СтрокаТовара.Количество <= 0 ТогдаОтказ = Истина;Сообщить("Проведение невозможно. "+ "У товара """+ СтрокаТовара.Номенклатура+ """ указано некорректное количество.");Возврат;КонецЕсли;КонецЦикла;ПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедурыЗдесь
Товары, это имя табличной части документа.Если табличная часть называется
Материалы, нужно использовать:1С (Код)1Для Каждого СтрокаМатериала Из Материалы ЦиклИмена реквизитов и табличных частей должны точно соответствовать вашей конфигурации.
—
# 6. Пример: выполнить код после типового проведения
Иногда требуется сначала выполнить типовое проведение, а затем добавить свою логику.
1С (Код)123456789101112&ИзменениеИКонтроль("ОбработкаПроведения")Процедура КонтрольПроведения_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Сообщить("Типовое проведение документа выполнено.");КонецПроцедурыПроверка:
1С (Код)123Если Отказ ТогдаВозврат;КонецЕсли;нужна для того, чтобы ваша дополнительная логика не выполнялась, если типовая процедура сама запретила проведение.
—
# 7. Пример: добавить свои движения после типового проведения
Предположим, типовой документ уже формирует движения, а вам нужно добавить движение в собственный регистр накопления.
В расширении должен быть доступен нужный регистр и его движения документа.
Пример:
1С (Код)12345678910111213141516171819&ИзменениеИКонтроль("ОбработкаПроведения")Процедура КонтрольПроведения_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.МойРегистр.Записывать = Истина;Движение = Движения.МойРегистр.Добавить();Движение.Период = Дата;Движение.Регистратор = Ссылка;Движение.Организация = Организация;Движение.Сумма = СуммаДокумента;КонецПроцедурыНо здесь есть важный момент: регистр должен быть связан с документом как с регистратором. Если документ не является регистратором этого регистра, запись через
Движения.МойРегистрможет быть невозможна.В таком случае необходимо отдельно настраивать состав регистров документа в расширении.
—
# 8. Важный порядок вызовов
## Вариант 1. Проверка до типового проведения
Используйте, если нужно предотвратить проведение:
1С (Код)1234567891011121314&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)Если Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Не заполнена организация.");Возврат;КонецЕсли;ПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедурыСхема:
1С (Код)12345Ваша проверка↓Если ошибка, отказ и выход↓Типовое проведение—
## Вариант 2. Дополнительный код после типового проведения
Используйте, если нужно дополнить результат:
1С (Код)123456789101112&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;// Дополнительный код после типового проведенияКонецПроцедурыСхема:
1С (Код)12345Типовое проведение↓Проверка результата↓Ваш дополнительный код—
## Вариант 3. Код до и после типовой процедуры
1С (Код)1234567891011121314&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)// Код до типовой процедурыСообщить("Начало дополнительной проверки.");ПродолжитьВызов(Отказ, РежимПроведения);// Код после типовой процедурыЕсли Не Отказ ТогдаСообщить("Типовое проведение завершено успешно.");КонецЕсли;КонецПроцедуры—
# 9. Что будет, если не написать
ПродолжитьВызовНапример:
1С (Код)123456&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)Сообщить("Проверка выполнена.");КонецПроцедурыТиповая процедура
ОбработкаПроведенияне будет вызвана.В результате:
— типовые движения могут не сформироваться;
— документ может не провести остатки;
— не будут выполнены стандартные проверки;
— могут нарушиться учетные механизмы конфигурации.Поэтому в большинстве случаев нужно обязательно писать:
1С (Код)1ПродолжитьВызов(Отказ, РежимПроведения);Исключение, когда вызов намеренно не выполняется:
1С (Код)1234567Если Не РазрешеноПроведение ТогдаОтказ = Истина;Сообщить("Проведение запрещено.");Возврат;КонецЕсли;—
# 10. Нельзя вызывать
ПродолжитьВызовдва разаНеправильно:
1С (Код)12345678&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);ПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедурыТиповая процедура должна вызываться один раз.
Правильно:
1С (Код)1234567891011&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)Если УсловиеЗапрета ТогдаОтказ = Истина;Возврат;КонецЕсли;ПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедуры—
# 11. Параметры должны совпадать
Типовая процедура обычно имеет сигнатуру:
1С (Код)1Процедура ОбработкаПроведения(Отказ, РежимПроведения)Значит, в расширении нужно написать:
1С (Код)123456&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедурыЕсли написать неправильные параметры:
1С (Код)123456&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения()ПродолжитьВызов();КонецПроцедурымогут возникнуть ошибки при проверке или выполнении.
Всегда сначала откройте типовой объект и посмотрите фактическую сигнатуру процедуры.
В разных конфигурациях она может отличаться, например:
1С (Код)1Процедура ОбработкаПроведения(Отказ, РежимПроведения)или:
1С (Код)1Процедура ОбработкаПроведения(Отказ, РежимПроведения, ДополнительныеПараметры)В расширении нужно использовать те же параметры.
—
# 12. Где писать код: объектный модуль или модуль формы
Если типовая процедура находится в объектном модуле документа, код расширения должен находиться в объектном модуле расширения документа.
То есть правильно:
1С (Код)1234РасширениеДокументыРеализацияТоваровУслугМодуль объектаНе нужно помещать этот код в модуль формы, если вы изменяете именно объектную процедуру
ОбработкаПроведения.Модуль формы используется для событий формы:
1С (Код)1234ОбработкаРасшифровкиРасшифровкиПередОткрытиемПриИзмененииОбработкаВыбораА
ОбработкаПроведенияотносится к объекту документа и выполняется на сервере.—
# 13. Пример с серверной процедурой
В объектном модуле специальная директива обычно не требуется:
1С (Код)123456789&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)// Код объектного модуля документа// Выполняется на сервереПродолжитьВызов(Отказ, РежимПроведения);КонецПроцедурыНе нужно добавлять:
1С (Код)1&НаКлиентеДля проведения документа это будет неправильно, поскольку проведение выполняется на сервере в транзакции.
—
# 14. Полный практический пример
Задача:
1. Запретить проведение, если не заполнена организация.
2. Запретить проведение при пустой табличной части.
3. После типового проведения вывести сообщение.1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071&ИзменениеИКонтроль("ОбработкаПроведения")Процедура КонтрольДокумента_ОбработкаПроведения(Отказ, РежимПроведения)Если Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Документ нельзя провести. "+ "Не заполнена организация.");Возврат;КонецЕсли;Если Товары.Количество() = 0 ТогдаОтказ = Истина;Сообщить("Документ нельзя провести. "+ "Не заполнена табличная часть Товары.");Возврат;КонецЕсли;Для Каждого СтрокаТовара Из Товары ЦиклЕсли Не ЗначениеЗаполнено(СтрокаТовара.Номенклатура) ТогдаОтказ = Истина;Сообщить("В табличной части есть строка "+ "без номенклатуры.");Возврат;КонецЕсли;Если СтрокаТовара.Количество <= 0 ТогдаОтказ = Истина;Сообщить("Количество должно быть больше нуля.");Возврат;КонецЕсли;КонецЦикла;// Если все проверки пройдены,// запускаем типовое проведение документаПродолжитьВызов(Отказ, РежимПроведения);// Если типовая процедура запретила проведение,// дополнительный код выполнять не нужноЕсли Отказ ТогдаВозврат;КонецЕсли;Сообщить("Дополнительный контроль проведения выполнен.");КонецПроцедуры—
# 15. Разница между
&ИзменениеИКонтрольи&ПослеЕсли нужно просто выполнить проверку до проведения и при необходимости установить отказ, удобнее использовать
&Перед:1С (Код)123456789&Перед("ОбработкаПроведения")Процедура МоеРасширение_ПередОбработкаПроведения(Отказ, РежимПроведения)Если Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Не заполнена организация.");КонецЕсли;КонецПроцедурыЗдесь не нужно вызывать:
1С (Код)1ПродолжитьВызов();Платформа сама продолжит выполнение типового метода, если обработка не была прервана.
&ИзменениеИКонтрольприменяйте, когда нужно самостоятельно управлять порядком выполнения:1С (Код)12345678910&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)// Код до типового методаПродолжитьВызов(Отказ, РежимПроведения);// Код после типового методаКонецПроцедурыУпрощенно:
| Задача | Подход |
|—|—|
| Просто проверить данные перед проведением |&Перед|
| Выполнить код после типового проведения |&После|
| Полностью заменить типовое проведение |&Вместо|
| Управлять типовым вызовом, выполнять код до и после |&ИзменениеИКонтроль|—
# 16. Частые ошибки
## Ошибка 1. Аннотация указывает несуществующий метод
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведенияДокумента")Если в типовом объекте метод называется
ОбработкаПроведения, будет ошибка.Нужно указывать точное имя:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")—
## Ошибка 2. Код находится в модуле формы
Если типовой метод расположен в объектном модуле, расширять его нужно в объектном модуле.
—
## Ошибка 3. Не вызван типовой метод
1С (Код)123456&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)Сообщить("Мой код.");КонецПроцедурыТак типовое проведение не выполнится.
—
## Ошибка 4. После
Отказ = Истинапродолжается проведениеНеправильно:
1С (Код)123456Если Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Не заполнена организация.");КонецЕсли;ПродолжитьВызов(Отказ, РежимПроведения);В некоторых сценариях платформа не продолжит проведение из-за
Отказ, но безопаснее явно завершить процедуру:1С (Код)12345Если Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Не заполнена организация.");Возврат;КонецЕсли;—
## Ошибка 5. Дополнительный код выполняется при отказе типовой процедуры
Правильно:
1С (Код)1234567ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;// Код только при успешном проведении—
## Ошибка 6. В расширении используется другое имя реквизита
Например, в документе реквизит называется
Организация, а в коде написано:1С (Код)1Если Не ЗначениеЗаполнено(Компания) ТогдаИмя должно совпадать с метаданными документа.
—
# 17. Минимальный рабочий шаблон
Для большинства задач можно начинать с такого шаблона:
1С (Код)123456789101112131415161718192021222324&ИзменениеИКонтроль("ОбработкаПроведения")Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)// Проверки до типового проведенияЕсли Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Не заполнена организация.");Возврат;КонецЕсли;// Вызов стандартной логики документаПродолжитьВызов(Отказ, РежимПроведения);// Проверяем результат типового проведенияЕсли Отказ ТогдаВозврат;КонецЕсли;// Дополнительная логика после типового проведенияКонецПроцедурыГлавное правило для этой аннотации:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")должно указывать имя типовой процедуры, а внутри расширенной процедуры нужно осознанно решить:
— вызывать ли типовую процедуру;
— когда именно ее вызывать;
— что делать до вызова;
— что делать после вызова;
— что делать, если установленОтказ.9 ноября 2026 в 15:56 в ответ на: Как получить детальную информацию об ошибках при проверке конфигурации расширени #38985Такие сообщения в проверке конфигурации являются агрегированными. Число в скобках означает количество найденных ссылок, но платформа обычно не выводит, какое именно свойство формы содержит ошибочную ссылку.
В вашем случае нужно проверять форму:
1С (Код)12Документ.ВерсияСоглашенияКоммерческийДоговорФорма.ФормаДокумента## Что означают ошибки
### 1. Неразрешимые ссылки на объекты метаданных (2)
В форме есть две ссылки на объекты конфигурации, которые платформа не может найти. Обычно это:
— удаленный объект метаданных;
— объект, переименованный или перемещенный в расширение;
— ссылка из расширения на объект, которого нет в основной конфигурации;
— ссылка на объект другого расширения;
— удаленная команда документа;
— удаленный реквизит или табличная часть;
— ссылка на картинку, стиль, общий реквизит или другой объект;
— настройка динамического списка с несуществующим объектом;
— параметр выбора или описание значения, ссылающееся на удаленный объект.### 2. Неразрешимые ссылки на типы (3)
В форме есть три описания типов, содержащие типы, которые недоступны в текущей конфигурации. Чаще всего это:
— реквизит формы имеет тип удаленного объекта;
— параметр формы содержит ссылку на удаленный тип;
— реквизит таблицы формы содержит недоступный тип;
— в настройках динамического списка остался старый тип;
— в описании параметра выбора осталась ссылка на удаленный объект;
— после удаления объекта из расширения не были очищены реквизиты формы.## Как найти конкретные свойства формы
Откройте форму в конфигураторе:
1С (Код)1234ДокументыВерсияСоглашенияКоммерческийДоговорФормыФормаДокументаПроверяйте форму последовательно в следующем порядке.
### 1. Реквизиты формы
В редакторе формы откройте узел:
1С (Код)1РеквизитыДля каждого реквизита проверьте свойство:
1С (Код)1ТипОсобенно подозрительны типы:
1С (Код)12345СправочникСсылка.ИмяСправочникаДокументСсылка.ИмяДокументаРегистрСведенийСсылка.ИмяРегистраПланВидовХарактеристикСсылка.ИмяПланаВидовХарактеристикПеречислениеСсылка.ИмяПеречисленияПопробуйте открыть редактор типа каждого реквизита. Если в составе типа отображается пустое значение, неизвестный тип или объект, которого нет в дереве конфигурации, это одна из трех неразрешимых ссылок на тип.
Также проверьте составные типы, например:
1С (Код)123СтрокаСправочникСсылка.НоменклатураДокументСсылка.ЗаказКлиентаИногда ошибочным является только один тип внутри составного типа.
### 2. Параметры формы
Откройте узел:
1С (Код)1ПараметрыПроверьте свойство
Типу каждого параметра.Особое внимание уделите стандартным и добавленным параметрам, например:
1С (Код)1234ПараметрФормыПараметрВыбораПараметрОтбораТекущаяСтрокаЕсли параметр был создан для объекта, который впоследствии удалили или заменили, его тип часто остается в форме.
### 3. Реквизиты элементов формы
В дереве элементов формы проверьте элементы:
— Поле формы;
— Таблица формы;
— Поле картинки;
— Поле текста;
— Поле выбора;
— Таблица значений.У каждого элемента проверьте:
1С (Код)1ПутьКДаннымПуть к данным должен указывать на реально существующий реквизит формы или реквизит объекта.
Например, ошибочным будет путь:
1С (Код)1СтарыйРеквизит.СтарыйПараметресли
СтарыйРеквизитилиСтарыйПараметруже удален.Для табличных полей отдельно проверьте колонки. У колонки также может остаться путь к удаленному реквизиту.
### 4. Команды формы
Откройте узел:
1С (Код)1КомандыПроверьте:
— команды, добавленные в расширении;
— команды, связанные с удаленными объектами;
— обработчики команд;
— команды, размещенные в элементах формы;
— команды, которых уже нет у документа или у расширяемого объекта.Если команда отображается в форме, но отсутствует в списке доступных команд документа, ее следует удалить из формы и при необходимости добавить заново.
### 5. Элементы формы, связанные с командами
Для групп команд, кнопок и командных панелей проверьте:
1С (Код)12ИмяКомандыКомандаВ расширениях часто остается кнопка, ссылающаяся на команду, удаленную из основной конфигурации или из самого расширения.
Удалите подозрительную кнопку из формы и проверьте конфигурацию повторно. Если количество ошибок уменьшилось, причина найдена.
### 6. Динамические списки
Если на форме есть динамический список, проверьте:
— основную таблицу;
— произвольный запрос;
— параметры запроса;
— настройки отбора;
— настройки условного оформления;
— настройки выбора;
— типы параметров динамического списка.В произвольном запросе могли остаться ссылки на удаленные объекты. Например, в тексте запроса или настройках списка может использоваться удаленный регистр, справочник или реквизит.
Также проверьте типы параметров динамического списка. Они часто не видны непосредственно в дереве элементов формы.
### 7. Условное оформление и настройки списка
У таблиц формы проверьте:
1С (Код)1234567Условное оформлениеНастройки спискаНастройки пользователяПоляОтборСортировкаГруппировкаВ условном оформлении часто остаются пути к удаленным реквизитам. Например:
1С (Код)12Объект.СтарыйРеквизитТекущаяСтрока.СтараяКолонкаТакая ссылка может давать ошибку на объект метаданных, хотя визуально сама форма открывается нормально.
### 8. Картинки, стили, шрифты и рамки
Для ошибки на объект метаданных проверьте свойства формы и элементов:
1С (Код)1234567КартинкаКартинкаШапкиКартинкиСтрокКартинкаПодвалаСтильШрифтРамкаЕсли объект был скопирован из другой конфигурации или из старой версии формы, ссылка на картинку или стиль могла стать недействительной.
Подозрительное свойство можно временно очистить, записать форму и повторить проверку.
## Практический способ локализации
Так как платформа показывает только количество ошибок, удобно использовать метод последовательного исключения.
1. Сделайте копию расширения.
2. Откройте формуФормаДокумента.
3. Запишите список элементов формы.
4. Временно удалите подозрительные элементы группами:
— дополнительные реквизиты;
— дополнительные параметры;
— динамические списки;
— кнопки и команды;
— условное оформление;
— недавно добавленные поля.
5. Сохраните расширение.
6. Выполните проверку конфигурации.
7. Если количество ошибок уменьшилось, восстановите часть удаленных элементов и проверяйте их по одному.Например:
— было
Неразрешимые ссылки на объекты метаданных (2);
— после удаления одной группы элементов стало(1);
— значит, проблемная ссылка находится в удаленной группе;
— возвращаете элементы по одному до повторного появления ошибки.Для двух ссылок на объекты и трех ссылок на типы этот способ обычно быстрее, чем ручная проверка всей формы.
## Более точный способ через выгрузку формы в XML
Если визуальная проверка не помогает, сохраните расширение в файлы и найдите форму в выгруженных XML-файлах.
В конфигураторе используйте команду, связанную с выгрузкой конфигурации в файлы. В выгрузке найдите каталог, соответствующий документу и форме:
1С (Код)1234ДокументыВерсияСоглашенияКоммерческийДоговорФормыФормаДокументаВ XML формы выполните поиск по:
1С (Код)12345678TypeTypeDescriptionValueTypeChoiceParameterDataPathCommandObjectMetadataИщите:
— имена удаленных справочников;
— имена удаленных документов;
— старые имена реквизитов;
— идентификаторы объектов;
— ссылки на объекты из другого расширения;
— пустые или неполные описания типов.В зависимости от версии платформы XML может иметь разные имена элементов, поэтому ориентироваться лучше не только на название XML-узла, но и на значения, содержащие имена объектов конфигурации.
Например, если в форме обнаружено описание типа, содержащее:
1С (Код)1СправочникСсылка.СтарыеПроектыа справочника
СтарыеПроектынет ни в основной конфигурации, ни в расширении, нужно заменить тип или очистить это описание.После ручного редактирования XML напрямую загружать его в рабочую конфигурацию без резервной копии не рекомендуется. Надежнее найти соответствующий реквизит или параметр в конфигураторе и исправить его там.
## Проверка именно особенностей расширения
Для расширения отдельно проверьте следующие случаи.
### Ссылка на объект основной конфигурации
В расширении может остаться ссылка на объект основной конфигурации, который был переименован или удален.
Проверяйте ссылки на:
— реквизиты документа;
— табличные части;
— реквизиты табличных частей;
— команды;
— общие реквизиты;
— определяемые типы;
— общие формы;
— общие картинки;
— общие макеты.### Ссылка на объект другого расширения
Объекты одного расширения не всегда могут использоваться другим расширением напрямую. Если форма из расширения ссылается на объект, который находится в другом расширении, при проверке может появиться ошибка о неразрешимом объекте или типе.
В этом случае нужно:
— перенести объект в текущее расширение;
— использовать объект основной конфигурации;
— заменить тип на доступный;
— удалить зависимость от другого расширения.### Удаленный объект расширения
Если объект был удален из расширения, но форма его использовала, удаление объекта не всегда автоматически очищает все ссылки.
Типичный пример:
1. В расширении был добавлен справочник.
2. В форме документа был создан реквизит типаСправочникСсылка.ДобавленныйСправочник.
3. Справочник удалили.
4. Реквизит формы и параметр выбора остались.
5. Проверка показывает ошибку о неразрешимом типе.В таком случае нужно удалить или изменить сам реквизит формы, параметр, элемент выбора и связанные настройки.
## Что проверить в первую очередь в вашей форме
Для указанной формы я бы проверял в таком порядке:
1. Реквизиты формы и их типы.
2. Параметры формы и их типы.
3. Дополнительные реквизиты, созданные в расширении.
4. Поля формы сПутемКДанным.
5. Команды и кнопки.
6. Реквизиты табличных частей.
7. Динамические списки.
8. Условное оформление.
9. Параметры выбора и настройки списка.
10. Картинки и стили.На практике ошибки с формулировками:
1С (Код)12Неразрешимые ссылки на объекты метаданныхНеразрешимые ссылки на типычаще всего находятся в реквизитах формы, параметрах формы или настройках динамического списка, а не в модуле формы. Исправление кода модуля формы обычно не устраняет такие ошибки.
9 ноября 2026 в 12:09 в ответ на: Насколько безопасно создание веб-сервиса 1С для интеграции с чат-ботом или прило #38983Создавать веб-сервис 1С для выдачи информации через чат-бот или приложение можно достаточно безопасно. Основной риск возникает не из-за самого веб-сервиса, а из-за неправильной архитектуры: публикации базы напрямую в Интернет, отсутствия авторизации, выдачи лишних данных и серверных методов без проверки полномочий.
## Насколько безопасны разные варианты
### 1. Прямо опубликовать 1С в Интернет
Например:
1С (Код)1https://1c.company.ru/Accounting/hs/api/...и разрешить внешним пользователям обращаться к опубликованному HTTP-сервису 1С.
Без дополнительных мер это рискованный вариант.
Проблемы:
— 1С становится доступна из внешней сети;
— злоумышленник может подбирать адреса методов;
— любой найденный метод можно вызывать не только из вашего приложения;
— нельзя полагаться на то, что клиентское приложение скрывает какие-то функции;
— при ошибке в серверном коде можно выдать лишние данные;
— возможны перебор идентификаторов, повтор запросов и нагрузка на сервер;
— при использовании общих модулей с флагом «Вызов сервера» можно случайно открыть лишние серверные функции;
— стандартная авторизация пользователя 1С не всегда подходит для внешних клиентов.Сам факт, что URL неизвестен пользователям, безопасностью не является. Адреса сервисов можно обнаружить по исходному коду приложения, журналам, документации, сообщениям об ошибках или перебором.
### 2. 1С через обратный прокси
Более безопасная схема:
1С (Код)1234567Чат-бот или приложение|HTTPS|NGINX / API Gateway / DMZ|HTTP-сервис 1СПромежуточный сервер может выполнять:
— проверку токена;
— ограничение количества запросов;
— блокировку подозрительных IP;
— журналирование обращений;
— проверку размера запроса;
— фильтрацию URL;
— проверку заголовков;
— маршрутизацию только к разрешенным методам.В этом случае сама 1С не должна быть полностью открыта в Интернет. Желательно, чтобы к ней мог обращаться только прокси-сервер по внутреннему адресу или через VPN.
### 3. Микросервис между внешними клиентами и 1С
Для серьезных систем предпочтительнее:
1С (Код)1234567Чат-бот / мобильное приложение|API-сервис|Очередь или БД обмена|1СВнешний сервис принимает запросы, проверяет пользователя, ограничивает доступ и хранит минимальный набор данных. 1С периодически забирает разрешенные данные или получает запросы через защищенный внутренний канал.
Преимущество такого подхода в том, что базу 1С можно вообще не публиковать наружу. Это особенно важно, если через приложение работают клиенты, поставщики или сотрудники с личных устройств.
## Что обязательно должно быть в HTTP-сервисе 1С
### 1. Авторизация каждого запроса
Нельзя ограничиваться проверкой вида:
1С (Код)1Если Пользователь = "Менеджер" Тогдаили передавать логин и пароль в параметрах URL.
Плохо:
1С (Код)1https://site.ru/hs/api/client?token=123456Параметры URL попадают в:
— журналы веб-сервера;
— историю браузера;
— прокси;
— системы мониторинга;
— рефереры;
— логи приложения.Лучше передавать токен в заголовке:
1С (Код)1Authorization: Bearer <токен>Либо использовать подписанный запрос.
Для небольшого внутреннего приложения подойдет индивидуальный токен для каждого пользователя или устройства. Для полноценного мобильного приложения лучше применять короткоживущие access-токены и refresh-токены через отдельный сервер авторизации.
### 2. Привязка пользователя бота к данным 1С
Для чат-бота нельзя доверять переданному клиентом идентификатору контрагента.
Небезопасно:
1С (Код)1GET /client/balance?counterparty=00000000-0000-0000-0000-000000000001Пользователь может заменить идентификатор и получить данные другого контрагента.
Правильная логика:
1. Бот получает идентификатор пользователя Telegram, VK, WhatsApp или другого канала.
2. 1С находит по нему зарегистрированного пользователя.
3. В 1С хранится связь:1С (Код)123456Идентификатор мессенджераКонтрагентФизическое лицоРазрешенные операцииДата регистрацииСтатус блокировки4. Контрагент определяется на сервере по токену или идентификатору пользователя.
5. Из запроса не принимается произвольныйКонтрагент.То есть пользователь должен запрашивать:
1С (Код)1GET /client/balanceа не:
1С (Код)1GET /client/balance?clientId=чужой идентификатор### 3. Проверка полномочий на сервере
Проверка должна выполняться внутри серверного обработчика 1С до получения данных.
Например, если бот предоставляет:
— баланс;
— задолженность;
— статусы заказов;
— документы;
— персональные данные;
— возможность создать заказ;
— возможность изменить реквизиты,то для каждой операции должны быть отдельные проверки.
Нельзя делать один универсальный метод:
1С (Код)1ВыполнитьКоманду(ТекстКоманды, Параметры)или тем более передавать из приложения текст запроса 1С.
Особенно опасные варианты:
1С (Код)1Выполнить(Код)1С (Код)1Запрос.Текст = ЗапросИзHTTP;1С (Код)1ВыполнитьЗапрос(ПроизвольныйТекстЗапроса);Внешний клиент должен передавать только строго определенные параметры. Например:
JavaScript123{"orderNumber": "00001234"}А сам список доступных действий должен быть зафиксирован в коде 1С.
### 4. Минимальный набор данных
Через чат-бот обычно не нужно отдавать:
— полные паспортные данные;
— внутренние комментарии менеджеров;
— себестоимость;
— закупочные цены;
— полные банковские реквизиты;
— технические идентификаторы объектов;
— служебные пометки;
— лишние контактные данные сотрудников.Следует создавать отдельные DTO-структуры или структуры ответа, содержащие только необходимые поля.
Например, для клиента:
JavaScript123456{"orderNumber": "00001234","date": "2026-11-09","status": "Готов к выдаче","amount": 12500}А не возвращать всю структуру документа 1С или объект документа целиком.
### 5. HTTPS
Обмен должен выполняться только по HTTPS с корректным сертификатом.
Нельзя использовать:
1С (Код)1http://example.ruдля передачи:
— токенов;
— персональных данных;
— заказов;
— балансов;
— файлов;
— реквизитов клиентов.Если используется Telegram webhook, HTTPS обязателен. При этом необходимо проверять, что webhook принимает только ожидаемые запросы, а токен бота не хранится в открытом виде в коде или настройках, доступных пользователям.
### 6. Защита от перебора
Даже при наличии авторизации злоумышленник может отправлять тысячи запросов.
Нужно предусмотреть:
— ограничение количества запросов от одного токена;
— ограничение количества запросов от одного IP;
— временную блокировку после большого числа ошибок;
— ограничение размера тела запроса;
— ограничение количества строк в ответе;
— постраничную выдачу;
— журналирование подозрительной активности;
— запрет слишком частого повторения одной операции.Особенно важно для методов:
— проверки баланса;
— поиска заказов;
— отправки SMS;
— загрузки файлов;
— создания документов;
— отправки сообщений;
— формирования отчетов.## Безопасность чат-бота
У чат-ботов есть отдельная проблема: сам пользователь мессенджера не всегда однозначно идентифицирован.
Например, если клиент просто знает номер телефона или переслал ссылку, этого недостаточно для выдачи персональных данных.
Для привязки клиента можно использовать:
1. Идентификатор пользователя мессенджера.
2. Одноразовый код из SMS или электронной почты.
3. Ссылку с одноразовым токеном.
4. Подтверждение номера телефона.
5. Ручное подтверждение менеджером.
6. Связку с личным кабинетом.Пример безопасной регистрации:
1С (Код)1234567891011Пользователь открывает бот|Вводит номер телефона|Получает одноразовый код|Вводит код в боте|1С находит контрагента|Telegram ID связывается с контрагентомПосле регистрации запрос «Показать задолженность» должен использовать уже сохраненную связь Telegram ID с контрагентом.
Нельзя считать подтвержденным пользователя только потому, что он знает номер договора. Номер договора может быть известен нескольким сотрудникам или попасть в переписку.
## Безопасность мобильного приложения
Не следует хранить в мобильном приложении:
— постоянный пароль к 1С;
— общий токен компании;
— учетные данные администратора;
— адреса внутренних серверов;
— секретный ключ подписи в открытом виде;
— полномочия, которые должны проверяться на сервере.Все, что находится в мобильном приложении, потенциально может быть извлечено. Поэтому приложение нельзя считать доверенной стороной.
Правильный принцип:
1С (Код)12Приложение только запрашивает операцию1С или API-сервис самостоятельно проверяет праваПроверка роли пользователя только в мобильном приложении не защищает данные. Пользователь может изменить приложение, перехватить запрос или отправить его вручную.
## Если используется веб-сервис SOAP
Веб-сервис 1С можно использовать, но для новых интеграций чаще удобнее HTTP-сервис с JSON.
SOAP сам по себе не делает систему безопасной. Необходимо отдельно настроить:
— HTTPS;
— аутентификацию;
— авторизацию операций;
— ограничение доступных методов;
— проверку входных XML;
— ограничение размера XML;
— защиту от повторной отправки;
— журналирование.Не стоит публиковать наружу универсальный веб-сервис с большим количеством экспортных методов только потому, что он уже существует в конфигурации.
## Настройки публикации
Для рабочей системы желательно:
— публиковать только конкретный HTTP-сервис;
— не публиковать всю информационную базу без необходимости;
— не включать OData для внешних клиентов без строгой необходимости;
— не открывать стандартные административные интерфейсы;
— использовать отдельный URL для API;
— ограничить доступ к публикации по IP, если это возможно;
— вынести публикацию за reverse proxy;
— отключить подробные сообщения об ошибках во внешнем контуре;
— не возвращать клиенту тексты исключений 1С и трассировки.Внешнему пользователю нельзя отдавать такие ответы:
1С (Код)1Ошибка в модуле ОбщийМодуль.СерверныйМодуль, строка 145Это может раскрыть структуру конфигурации и внутренние имена объектов.
Лучше возвращать нейтральный ответ:
JavaScript1234{"error": "internal_error","message": "Временная ошибка сервиса"}А подробности записывать в защищенный журнал.
## Разделяйте методы по назначению
Вместо одного большого API лучше сделать несколько узких операций:
1С (Код)123456GET /profileGET /ordersGET /orders/{id}GET /balancePOST /support/requestPOST /ordersДля каждого метода отдельно определить:
— кто может его вызвать;
— какие параметры разрешены;
— какие данные возвращаются;
— какие действия выполняются;
— нужна ли дополнительная проверка;
— можно ли повторно выполнять операцию.Особое внимание нужно уделить POST-операциям. Если запрос создает документ, платеж, заявку или заказ, повторная отправка может создать дубликат. Для таких операций нужен идентификатор идемпотентности, например
requestId.## Нужна ли отдельная учетная запись 1С
Если внешний сервис подключается к 1С под пользователем, лучше создать отдельного технического пользователя:
1С (Код)123API_ChatBotAPI_MobileAppAPI_IntegrationДля каждого интеграционного направления желательно использовать отдельную учетную запись.
Права должны быть минимальными:
— только необходимые справочники;
— только необходимые документы;
— без административных ролей;
— без интерактивной работы;
— без доступа к лишним данным;
— без права изменения настроек;
— без доступа к администрированию пользователей.Но важно понимать: одних ролей пользователя 1С недостаточно. Серверная логика все равно должна самостоятельно проверять, какие данные разрешено отдавать конкретному клиенту.
## Нужен ли режим привилегированных действий
Если HTTP-сервис работает в привилегированном режиме, это существенно увеличивает последствия ошибки.
Не следует включать привилегированный режим для всего обработчика. Если он действительно нужен, нужно:
— минимизировать участок кода;
— перед ним проверить токен и полномочия;
— не использовать входные параметры напрямую;
— не выполнять произвольные запросы;
— не возвращать объекты целиком;
— отдельно проверять принадлежность данных пользователю.Опасная схема:
1С (Код)1234Проверили токенВключили привилегированный режимПолучили любые данные по переданному идентификаторуВернули результатЕсли злоумышленник сможет подобрать идентификатор, он получит данные вне обычной системы прав.
## Рекомендуемая архитектура для чат-бота
Для большинства задач подходит следующая схема:
1С (Код)1234567Telegram / VK / приложение|HTTPS|Reverse Proxy или API-сервис|HTTP-сервис 1С во внутренней сетиВ 1С:
1. Таблица зарегистрированных внешних пользователей.
2. Индивидуальный токен или серверная проверка токена.
3. Связь внешнего пользователя с контрагентом или физическим лицом.
4. Набор фиксированных HTTP-методов.
5. Проверка полномочий в каждом методе.
6. Ограниченный состав ответа.
7. Журнал обращений.
8. Ограничение частоты запросов.
9. Отдельный технический пользователь.
10. Отсутствие произвольных запросов и выполнения кода.Для небольшого внутреннего проекта можно начать с прямого HTTP-сервиса 1С, но даже тогда его следует закрыть HTTPS, токенами, ограничением методов и reverse proxy. Для внешних клиентов безопаснее разместить API-шлюз или промежуточный сервис в DMZ, а 1С оставить во внутренней сети.
Рекомендую посмотреть здесь:
— https://infostart.ru/1c/articles/1615125/
— https://infostart.ru/1c/articles/2517789/
— https://infostart.ru/1c/articles/1368626/9 ноября 2026 в 5:25 в ответ на: Из каких материалов состоит банковская карта и её компоненты? #38981Банковская карта обычно состоит из нескольких слоёв:
— Пластиковая основа, чаще всего из поливинилхлорида, или ПВХ. Иногда используют более прочные материалы, например поликарбонат.
— Микрочип. В нём хранятся данные для проведения операций и криптографической защиты платежей.
— Магнитная полоса, если она предусмотрена картой. Сейчас используется реже, так как операции по чипу и бесконтактной технологии безопаснее.
— Антенна NFC для бесконтактной оплаты. Она представляет собой тонкую металлическую проводящую дорожку внутри карты.
— Печать и защитные элементы: номер карты, имя держателя, срок действия, логотип платёжной системы, голограмма, УФ-метки и другие элементы.
— Защитный слой, который предохраняет изображение и поверхность карты от повреждений.Внутри бесконтактной карты обычно нет батарейки. Энергию для работы чип получает от терминала через электромагнитное поле.
9 ноября 2026 в 3:39 в ответ на: Как в 1С:КА автоматизировать установку статуса расходного ордера «Отгружён»? #38979В 1С:КА 2.5 статус расходного ордера «Отгружен» обычно не устанавливается автоматически при проведении документа «Реализация товаров и услуг». Это разные этапы:
1. Расходный ордер на товары подтверждает фактическую отгрузку со склада.
2. Реализация товаров и услуг отражает продажу и списание товара.
3. Статус расходного ордера меняется либо кладовщиком вручную, либо программно до или после проведения реализации.## Штатный вариант
Рекомендуемая последовательность в КА:
1. Создать заказ клиента.
2. Создать на его основании расходный ордер на товары.
3. В расходном ордере установить статус «Отгружен».
4. Провести расходный ордер.
5. Создать реализацию товаров и услуг на основании заказа или распоряжения.
6. Провести реализацию.Если реализация уже проведена, а расходный ордер остался в статусе «К отгрузке», его можно открыть и вручную изменить статус на «Отгружен», если это соответствует фактической операции.
## Важный момент
Не рекомендуется менять статус расходного ордера непосредственно из формы реализации в клиентском обработчике. Пользователь может провести реализацию:
— из списка документов;
— регламентным заданием;
— групповым проведением;
— через обмен;
— программно серверным кодом.Поэтому автоматизацию лучше делать через расширение конфигурации и обработчик записи или проведения документа «Реализация товаров и услуг».
## Общий алгоритм доработки
При проведении реализации нужно:
1. Найти связанные расходные ордера.
2. Проверить, что реализация проведена.
3. Проверить, что расходный ордер относится к этой реализации или к тому же заказу клиента.
4. Установить статус расходного ордера:Перечисления.СтатусыРасходныхОрдеров.Отгружен5. Записать или перепровести расходный ордер.
6. Не выполнять повторную обработку, если ордер уже имеет статус «Отгружен».Упрощенный пример серверной процедуры:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546&НаСервереПроцедура УстановитьСтатусРасходныхОрдеров(РеализацияСсылка) ЭкспортЕсли Не ЗначениеЗаполнено(РеализацияСсылка) ТогдаВозврат;КонецЕсли;РеализацияОбъект = РеализацияСсылка.ПолучитьОбъект();Если Не РеализацияОбъект.Проведен ТогдаВозврат;КонецЕсли;// Далее необходимо получить расходные ордера,// связанные с данной реализацией.//// Конкретный способ поиска зависит от версии КА 2.5:// через распоряжение, заказ клиента или связь документов.Для Каждого РасходныйОрдерСсылка Из ПолучитьРасходныеОрдера(РеализацияСсылка) ЦиклЕсли Не ЗначениеЗаполнено(РасходныйОрдерСсылка) ТогдаПродолжить;КонецЕсли;РасходныйОрдерОбъект = РасходныйОрдерСсылка.ПолучитьОбъект();Если РасходныйОрдерОбъект.Статус<> Перечисления.СтатусыРасходныхОрдеров.Отгружен ТогдаРасходныйОрдерОбъект.Статус =Перечисления.СтатусыРасходныхОрдеров.Отгружен;Если РасходныйОрдерОбъект.Проведен ТогдаРасходныйОрдерОбъект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);ИначеРасходныйОрдерОбъект.Записать();КонецЕсли;КонецЕсли;КонецЦикла;КонецПроцедурыПроцедура
ПолучитьРасходныеОрдера()в данном примере условная. Ее нужно реализовать с учетом структуры конкретной версии КА.## Поиск связанных расходных ордеров
В КА связь может быть организована по-разному:
— через заказ клиента;
— через документ реализации товаров и услуг;
— через распоряжение на отгрузку;
— через табличную часть расходного ордера «Товары по распоряжениям»;
— через документ основания;
— через складскую схему с ордерами.Часто надежнее искать расходные ордера не напрямую по реализации, а по заказу клиента:
1С (Код)123Если ТипЗнч(Распоряжение) = Тип("ДокументСсылка.ЗаказКлиента") Тогда// Расходный ордер связан с заказом клиентаКонецЕсли;После этого выбираются расходные ордера, в табличной части которых есть соответствующий заказ клиента.
## Пример поиска через запрос
Ниже приведен общий вариант. Названия полей необходимо проверить в конфигураторе, поскольку они могут отличаться в зависимости от релиза КА 2.5.
1С (Код)12345678910111213141516171819Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ РАЗРЕШЕННЫЕ| РасходныеОрдера.Ссылка|ИЗ| Документ.РасходныйОрдерНаТовары КАК РасходныеОрдера| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК ТоварыПоРаспоряжениям| ПО ТоварыПоРаспоряжениям.Ссылка = РасходныеОрдера.Ссылка|ГДЕ| РасходныеОрдера.Проведен| И ТоварыПоРаспоряжениям.Распоряжение = &Распоряжение| И РасходныеОрдера.Статус <> &СтатусОтгружен|;Запрос.УстановитьПараметр("Распоряжение", Распоряжение);Запрос.УстановитьПараметр(| "СтатусОтгружен",| Перечисления.СтатусыРасходныхОрдеров.Отгружен);Результат = Запрос.Выполнить();В конкретной базе могут использоваться другие имена:
—
РасходныйОрдерНаТовары;
—РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям;
—РаспоряжениеНаОтгрузку;
—ДокументОснование;
—ЗаказКлиента.Это нужно проверить в конфигураторе по объекту документа и его табличным частям.
## Где размещать доработку
Оптимальный вариант:
1. Создать расширение конфигурации.
2. Добавить подписку на событие записи документа «Реализация товаров и услуг» либо расширить его серверную логику.
3. Выполнять обработку только при проведении.
4. После успешной записи реализации устанавливать статус связанных расходных ордеров.Если используется управляемое приложение, обработку нужно выполнять на сервере. Обработчик формы подходит только как временное решение.
## Что нужно учесть
Автоматически устанавливать статус «Отгружен» можно только если:
— реализация действительно означает физическую отгрузку;
— все товары по расходному ордеру отгружены;
— количество в реализации не меньше количества в ордере;
— не используется частичная отгрузка;
— не требуется подтверждение кладовщика;
— реализация не является предварительным документом или корректировкой.При частичной отгрузке устанавливать статус «Отгружен» по одному факту проведения реализации неправильно. В таком случае расходный ордер должен оставаться в промежуточном статусе, а строки заказа или ордера нужно корректировать отдельно.
Также следует учитывать, что при записи расходного ордера с проведением могут выполняться проверки остатков, доступности товаров и складских распоряжений. Поэтому простое присваивание статуса без проверки может привести к ошибкам или нарушению складской логики.
Для типовой КА правильнее использовать схему:
Расходный ордер переведен в статус «Отгружен» → затем проводится реализация.
Если же требуется обратная схема, то это уже отдельная доработка через расширение, причем необходимо точно определить связь между реализацией и расходным ордером в конкретном релизе КА.
7 ноября 2026 в 20:03 в ответ на: Как устранить проблему, если установлено ПО HASP, но лицензия не видна в 1С? #38977Если драйвер HASP уже установлен, проверьте следующий уровень: видит ли сам менеджер лицензий подключенный ключ.
## 1. Проверьте ключ через браузер
На компьютере, куда физически подключен USB-ключ, откройте:
1С (Код)1http://localhost:1947Перейдите в раздел:
1С (Код)1Sentinel Keys### Возможные результаты
#### Ключ отображается
Значит:
— USB-порт работает;
— драйвер установлен;
— служба менеджера лицензий работает;
— проблема, скорее всего, в сетевом доступе или настройках 1С.#### Ключ не отображается
Тогда проблема не в 1С. Проверьте:
1. Видит ли ключ Windows в «Диспетчере устройств».
2. Горит ли индикатор на ключе.
3. Запущена ли служба:1С (Код)1services.mscИщите:
1С (Код)1Sentinel LDK License Managerили:
1С (Код)1HASP License ManagerСлужба должна быть запущена. Если остановлена, запустите ее и установите автоматический запуск.
Также попробуйте:
— вынуть ключ;
— перезагрузить компьютер;
— вставить ключ в другой USB-порт;
— не использовать USB-разветвитель;
— проверить ключ на другом компьютере.## 2. Если ключ подключен к серверу, а 1С запускается на другом компьютере
На клиентском компьютере или сервере 1С проверьте доступность компьютера с ключом.
Порт менеджера HASP:
1С (Код)1475Проверка из PowerShell:
PowerShell1Test-NetConnection 192.168.1.10 -Port 475Вместо
192.168.1.10укажите IP компьютера, где установлен ключ.Если результат:
1С (Код)1TcpTestSucceeded : Falseнужно проверить:
— брандмауэр Windows на компьютере с ключом;
— сетевой экран;
— антивирус;
— доступность компьютера по сети;
— запущенную службу Sentinel/HASP License Manager.В брандмауэре разрешите входящие подключения для HASP License Manager или откройте TCP/UDP-порт 475.
## 3. Пропишите адрес компьютера с ключом
Если ключ сетевой, создайте или измените файл:
1С (Код)1C:Program Files1cv8confnethasp.iniСодержимое минимального файла:
1С (Код)12345[NH_COMMON]NH_USE_BROADCAST = Disabled[NH_TCPIP]NH_SERVER_ADDR = 192.168.1.10192.168.1.10замените на IP-адрес компьютера, где установлен USB-ключ.Если 1С запускается через конкретную версию платформы, файл может потребоваться разместить также в каталоге:
1С (Код)1C:Program Files1cv88.3.XX.XXXXbinconfНапример:
1С (Код)1C:Program Files1cv88.3.25.1250binconfnethasp.iniВажно проверить именно ту версию платформы, которая запускается у пользователя.
После изменения файла:
1. Закройте 1С.
2. Если используется сервер 1С, перезапустите службу сервера 1С.
3. Запустите 1С снова.## 4. Если 1С работает через терминальный сервер
В этом случае драйвер HASP должен быть установлен не только на компьютере пользователя, а менеджер лицензий должен быть доступен с терминального сервера.
Обычно схема должна быть такой:
1С (Код)123456Компьютер с USB-ключомHASP/Sentinel License ManagerТерминальный сервер1Сnethasp.ini с IP компьютера с ключомПроверку
http://localhost:1947нужно выполнять:— на компьютере с физическим ключом;
— отдельно на терминальном сервере.На компьютере с ключом ключ может отображаться, а на терминальном сервере нет. Это нормально, если не настроен сетевой доступ.
## 5. Проверьте, что установлен именно Runtime-драйвер
Иногда в Windows присутствует драйвер USB-устройства, но отсутствует полноценный Sentinel HASP Runtime. В результате USB-ключ виден в диспетчере устройств, но не отображается на странице:
1С (Код)1http://localhost:1947В таком случае удалите текущий драйвер HASP, перезагрузите компьютер и установите актуальный Runtime-драйвер из комплекта платформы 1С.
Для Windows в комплекте 1С обычно используется программа:
1С (Код)1haspdinst.exeУстановка выполняется из командной строки от имени администратора:
1С (Код)1haspdinst.exe -iУдаление драйвера:
1С (Код)1haspdinst.exe -rUSB-ключ во время удаления и повторной установки лучше отключить. После установки перезагрузите компьютер и подключите ключ снова.
## 6. Если используется локальный ключ
Если USB-ключ вставлен непосредственно в компьютер пользователя, а
http://localhost:1947показывает ключ, проверьте:1. Запускается ли 1С под тем же пользователем, который устанавливал платформу.
2. Не запускается ли 1С в другой операционной системе или через RDP.
3. Не блокирует ли антивирус1cv8.exeили Sentinel License Manager.
4. Нет ли нескольких установленных версий платформы.
5. Не требуется ли ключ другого типа для данной конфигурации или количества пользователей.Если
Sentinel Keysпоказывает ключ, но 1С все равно пишет, что лицензия не найдена, наиболее вероятны:— ключ не предназначен для этой версии продукта;
— все лицензии ключа заняты;
— 1С обращается не к тому компьютеру;
— используется неправильныйnethasp.ini;
— заблокирован порт 475;
— служба сервера 1С не имеет доступа к компьютеру с ключом.Основная проверка сейчас: открывается ли
http://localhost:1947и отображается ли ключ в разделеSentinel Keys.Если 1С не видит аппаратный USB-ключ HASP, проверяйте по порядку. Сначала нужно определить, где установлен ключ:
— локально на компьютере пользователя;
— на сервере в сети;
— на сервере терминалов/RDP;
— на сервере 1С:Предприятия.## 1. Проверьте, видит ли ключ сама Windows
Подключите ключ и откройте:
Диспетчер устройств → USB-контроллеры
Обычно ключ отображается как:
— HASP HL;
— Sentinel HASP;
— USB ключ защиты;
— неизвестное USB-устройство, если не установлен драйвер.Если индикатор на ключе не горит:
1. Переподключите ключ в другой USB-порт.
2. Не используйте USB-разветвитель.
3. Проверьте ключ на другом компьютере.
4. Установите драйвер HASP/Sentinel с правами администратора.
5. Перезагрузите компьютер.Если ключ не определяется ни на одном компьютере, вероятна неисправность самого ключа.
## 2. Установите или переустановите драйвер HASP
Для аппаратного ключа должен быть установлен драйвер защиты HASP/Sentinel. Устанавливать его нужно именно на том компьютере, где физически находится USB-ключ.
После установки проверьте службу:
1С (Код)1services.mscВ списке служб ищите что-либо похожее на:
1С (Код)123Sentinel LDK License ManagerHASP License ManagerHASP LoaderСлужба должна быть запущена и иметь тип запуска «Автоматически».
Также можно проверить веб-интерфейс менеджера лицензий:
1С (Код)1http://localhost:1947Если страница открывается, перейдите в раздел:
1С (Код)1Sentinel KeysТам должен отображаться ваш ключ.
Если ключ не отображается в
http://localhost:1947, проблема еще не связана с 1С. Нужно сначала исправить драйвер, USB-подключение или службу менеджера лицензий.## 3. Если ключ установлен локально
Если USB-ключ подключен непосредственно к компьютеру пользователя:
1. Установите драйвер HASP.
2. Убедитесь, что ключ виден вhttp://localhost:1947.
3. Полностью закройте 1С.
4. Запустите 1С снова.Для локального однопользовательского ключа сетевой менеджер лицензий обычно не требуется. Главное, чтобы ключ определялся операционной системой и драйвером.
## 4. Если ключ установлен на другом компьютере в сети
На компьютере, где установлен USB-ключ, должны быть:
— установлен драйвер HASP;
— запущена служба HASP License Manager или Sentinel LDK License Manager;
— разрешены сетевые подключения;
— открыт порт 475.На компьютере пользователя нужно указать адрес сервера с ключом в файле:
1С (Код)1C:Program Files1cv8confnethasp.iniВ файле найдите параметр:
1С (Код)1NH_SERVER_ADDRУкажите IP-адрес компьютера, где установлен ключ:
1С (Код)1NH_SERVER_ADDR = 192.168.1.10Вместо IP можно использовать имя компьютера:
1С (Код)1NH_SERVER_ADDR = SERVER1После изменения
nethasp.iniполностью перезапустите 1С. Если используется сервер 1С:Предприятия, перезапустите также службу сервера 1С.Проверьте, что с компьютера пользователя доступен порт 475. Например, в PowerShell:
PowerShell1Test-NetConnection 192.168.1.10 -Port 475Если результат:
1С (Код)1TcpTestSucceeded : Falseпроверьте:
— брандмауэр Windows на компьютере с ключом;
— сторонний антивирус;
— сетевой экран;
— доступность компьютера по IP;
— запущенную службу HASP License Manager.В брандмауэре обычно нужно разрешить входящие подключения для менеджера лицензий либо открыть TCP/UDP-порт 475.
## 5. Если работа выполняется через RDP или терминальный сервер
Не устанавливайте USB-ключ непосредственно на терминальный сервер, где работают пользователи через RDP. Это часто приводит к тому, что ключ не виден из терминальных сеансов.
Рекомендуемая схема:
1С (Код)1234567Отдельный компьютер в сети└── USB-ключ HASP└── HASP License ManagerТерминальный сервер└── 1С└── nethasp.ini с IP компьютера с ключомВ
nethasp.iniна терминальном сервере:1С (Код)1NH_SERVER_ADDR = 192.168.1.10Файл нужно разместить в каталоге той версии платформы 1С, которая реально запускается. Например:
1С (Код)1C:Program Files1cv88.3.XX.XXXXbinconfnethasp.iniили:
1С (Код)1C:Program Files1cv8confnethasp.iniЕсли установлено несколько версий 1С, проверьте, какую именно версию запускает пользователь. Иногда файл изменяют в одном каталоге, а терминальный ярлык запускает другую платформу.
## 6. Если используется сервер 1С
При клиент-серверной работе важно понимать, кто получает лицензию:
— клиентское приложение;
— сервер 1С;
— менеджер лицензий HASP;
— сервер терминалов.Если аппаратный многопользовательский ключ находится в сети, сервер 1С также должен иметь доступ к компьютеру с ключом.
После изменения
nethasp.iniнужно перезапустить службу сервера 1С:1С (Код)1Администрирование → СлужбыНазвание службы обычно выглядит примерно так:
1С (Код)11C:Enterprise 8.3 Server Agentили содержит номер версии платформы.
Если используется кластер 1С из нескольких рабочих серверов, доступ к ключу должен быть у каждого рабочего сервера, который может обслуживать сеансы.
## 7. Проверьте тип ключа
Возможны разные аппаратные ключи:
— локальный однопользовательский;
— сетевой многопользовательский;
— серверный ключ 1С;
— ключ конфигурации;
— ключ для другой версии или редакции продукта.Один ключ не всегда заменяет другой. Например, наличие серверного ключа не обязательно означает наличие пользовательских лицензий для запуска клиентских сеансов.
Также на одном компьютере могут возникать конфликты, если установлены несколько ключей одной серии.
## 8. Очистите сохраненный кэш лицензий 1С
Иногда платформа сохраняет некорректную информацию о подключении к лицензии. Перед удалением убедитесь, что все сеансы 1С закрыты.
Можно очистить файл подключения:
1С (Код)1%ProgramData%1C1cv81cv8conn*.pflДля этого:
1. Закройте все окна 1С.
2. Остановите службы сервера 1С, если проблема на сервере.
3. Удалите файлы1cv8conn*.pfl.
4. Запустите службы и 1С повторно.Удалять все файлы лицензий
.licбез необходимости не следует. Это может привести к повторной активации программных лицензий.## 9. Наиболее частые варианты ошибок
### Ошибка
HASP not found (-3),Error 7,H0007Обычно означает:
— ключ не подключен;
— не установлен драйвер;
— не запущен менеджер лицензий;
— клиент не может обратиться к компьютеру с ключом;
— заблокирован порт 475;
— неверно указан адрес вnethasp.ini.### «Не обнаружен ключ защиты программы»
Проверьте:
1. Ключ отображается в
http://localhost:1947.
2. Запущена служба лицензий.
3. Правильно указанNH_SERVER_ADDR.
4. Открыт порт 475.
5. Изменения внесены в нужный каталогconf.
6. После изменения перезапущены 1С и служба сервера 1С.### «Не обнаружена свободная лицензия»
В этом случае ключ может быть исправен, но все лицензии уже заняты. Проверьте число активных пользователей и подключений к менеджеру лицензий.
Для большого количества пользователей иногда помогает увеличение параметров в
nethasp.ini:1С (Код)123NH_SESSION = 5NH_SEND_RCV = 4NH_USE_BROADCAST = DisabledПосле изменения файла нужно перезапустить 1С. Если ключ получает сервер 1С, перезапустите и службу сервера 1С.
Самая быстрая диагностика такая:
1. На компьютере с USB-ключом открыть
http://localhost:1947.
2. Убедиться, что ключ отображается в разделеSentinel Keys.
3. Проверить службу License Manager.
4. С клиента проверить порт 475.
5. Прописать IP сервера вnethasp.ini.
6. Перезапустить 1С и службы 1С.6 ноября 2026 в 4:51 в ответ на: Как настроить регламентное задание 1С для Telegram Bot API без Webhook? #38973Да, если не использовать Webhook, то в УНФ 3 создается регламентное задание, которое периодически обращается к Telegram Bot API методом
getUpdates, получает новые сообщения и передает их в обработчик.Но есть два разных варианта.
## Вариант 1. Обычный короткий опрос
Регламентное задание запускается, например, раз в 5 или 10 секунд:
1С (Код)1запрос getUpdates → обработка сообщений → завершениеПлюсы:
— проще понять и отладить;
— легко реализовать в небольшой обработке.Минусы:
— постоянные обращения к Telegram;
— лишняя нагрузка на сервер 1С;
— возможны накладки при параллельном запуске;
— при интервале 1 минута бот может отвечать с задержкой до минуты;
— при файловой базе такой вариант особенно нежелателен.Для рабочего бота я бы не рекомендовал запускать отдельное регламентное задание каждые 5 секунд.
## Вариант 2. Long polling
Это предпочтительный вариант, если Webhook организовать нельзя.
Регламентное задание запускается, например, раз в минуту, но внутри выполняет несколько последовательных запросов с параметром
timeout.Схема:
1С (Код)123456789Регламентное задание стартовало↓getUpdates(timeout=30)↓Есть сообщения? Обработать↓Снова getUpdates(timeout=30)↓По истечении общего времени завершить заданиеПримерный режим:
— регламентное задание: раз в 1 минуту;
— таймаут Telegram: 25 или 30 секунд;
— длительность одного запуска задания: не более 50 секунд;
— ключ задания: один и тот же, чтобы параллельные экземпляры не запускались;
—offset: хранится в регистре сведений и увеличивается после успешной обработки обновления.При наличии сообщения Telegram обычно отвечает сразу, поэтому бот реагирует почти мгновенно. Если сообщений нет, Telegram удерживает HTTP-соединение до окончания таймаута.
## Рекомендуемый вариант для УНФ 3
Для серверной базы:
1С (Код)1234Период регламентного задания: 1 минутаTimeout метода getUpdates: 25-30 секундМаксимальное время работы одного запуска: 45-50 секундКлюч регламентного задания: TelegramBotPollingВажно, чтобы таймаут HTTP-соединения был больше, чем
timeout, передаваемый Telegram. Например:1С (Код)12timeout Telegram: 30 секундtimeout HTTP-соединения 1С: 40-45 секундИначе 1С может закрыть соединение раньше Telegram.
## Почему задание должно завершаться
Не стоит делать бесконечный цикл в регламентном задании:
1С (Код)123Пока Истина ЦиклПолучитьОбновления();КонецЦикла;Такой вариант может занять рабочий процесс сервера навсегда и мешать обновлению конфигурации, остановке фоновых заданий и администрированию базы.
Лучше ограничить время работы:
1С (Код)1234567ВремяНачала = ТекущаяДата();Пока ТекущаяДата() - ВремяНачала < 45 ЦиклПолучитьИОбработатьОбновления();КонецЦикла;На практике нужно учитывать, что
ТекущаяДата()имеет секундную точность, а длительность самого HTTP-запроса может быть до 30 секунд.## Пример общей логики регламентного задания
Ниже приведен BSL-код общей схемы. Процедуры получения обновлений и записи состояния являются условными, их нужно реализовать в общем модуле.
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142Процедура ПолучитьСообщенияTelegram() ЭкспортВремяНачала = ТекущаяДата();// Задание работает не более 45 секунд.Пока ТекущаяДата() - ВремяНачала < 45 ЦиклПопыткаОбновления = ПолучитьОбновленияTelegram(30,ПолучитьПоследнийUpdateID() + 1);Если Обновления = Неопределено ТогдаПродолжить;КонецЕсли;Для Каждого Обновление Из Обновления ЦиклОбработатьОбновлениеTelegram(Обновление);Если Обновление.Свойство("update_id") ТогдаЗаписатьПоследнийUpdateID(Обновление.update_id);КонецЕсли;КонецЦикла;ИсключениеЗаписатьОшибкуTelegram(ОписаниеОшибки());// При сетевой ошибке выходим.// Следующий запуск задания повторит обращение.Прервать;КонецПопытки;КонецЦикла;КонецПроцедурыСмысл параметров:
1С (Код)12timeout = 30offset = последний обработанный update_id + 1## Как правильно сохранять offset
У Telegram каждое обновление имеет
update_id.Например, пришли обновления:
1С (Код)123update_id = 100update_id = 101update_id = 102После успешной обработки нужно записать:
1С (Код)1ПоследнийUpdateID = 102При следующем запросе передается:
1С (Код)1offset = 103Тогда Telegram вернет только новые обновления.
Для хранения можно создать регистр сведений:
1С (Код)1НастройкиTelegramИзмерение:
1С (Код)1ИмяНастройкиРесурс:
1С (Код)1ЗначениеЗапись:
1С (Код)12ИмяНастройки = ПоследнийUpdateIDЗначение = 102Лучше хранить
offsetотдельно для каждого бота, если в базе будет несколько ботов.## Когда записывать offset
Надежный вариант:
1. получить обновление;
2. обработать сообщение;
3. если обработка завершилась успешно, записатьupdate_id;
4. перейти к следующему сообщению.Если сначала записать
offset, а потом при обработке произойдет ошибка, сообщение будет потеряно.Однако есть нюанс. Если обработка заказа успела создать документ, а ошибка произошла при записи
offset, Telegram-сообщение может прийти повторно. Поэтому обработчик должен быть идемпотентным.Например, каждое обработанное обновление можно записывать в регистр:
1С (Код)1TelegramОбработанныеОбновленияИзмерение:
1С (Код)1UpdateIDПеред обработкой проверять, не обрабатывалось ли оно ранее.
## Параметры регламентного задания
В конфигураторе для задания можно указать:
1С (Код)12345678Наименование:Получение сообщений TelegramРасписание:Периодически, каждые 60 секундКлюч:TelegramBotPollingКлюч особенно важен. Он не позволит запустить несколько одинаковых обработчиков параллельно.
Если используется серверная база, можно поставить интервал запуска 1 минуту. Если требуется реакция быстрее, например для оформления заказов, можно использовать запуск каждые 30 секунд, но само задание все равно должно завершаться примерно за 20-25 секунд.
Пример:
1С (Код)123Период запуска: 30 секундtimeout getUpdates: 15 секундмаксимальная работа одного запуска: 20 секундНо для большинства внутренних задач УНФ достаточно:
1С (Код)12Период запуска: 1 минутаtimeout: 30 секундФактическая задержка будет обычно меньше секунды при наличии нового сообщения, а не равна одной минуте, потому что используется long polling.
## Для файловой базы
С файловой базой long polling внутри регламентного задания может быть неудобен:
— длительно работающее задание может мешать другим фоновым заданиям;
— возможны блокировки;
— обработка тяжелых отчетов и заказов будет конкурировать с другими операциями.Для файловой базы лучше один из вариантов:
1. отдельная внешняя программа или сервис, который получает сообщения от Telegram;
2. Webhook через опубликованный HTTP-сервис;
3. отдельная серверная информационная база для Telegram-интеграции;
4. короткий опрос раз в 30-60 секунд, если требований к скорости нет.## Webhook вместо регламентного задания
Если база опубликована через HTTPS, лучше использовать Webhook:
1С (Код)1Telegram → HTTP-сервис 1С → обработка сообщенияВ этом случае Telegram сам отправляет POST-запрос при каждом событии. Регламентное задание для получения сообщений не нужно.
Для Webhook потребуются:
— опубликованный HTTP-сервис;
— доступный извне HTTPS-адрес;
— SSL-сертификат;
— настройкаsetWebhook;
— обработчик POST-запроса;
— защита URL или проверка секретного заголовка.Для УНФ 3 я бы выбирал так:
| Условия | Вариант |
|—|—|
| Есть сервер 1С и нет возможности публиковать HTTP-сервис | Регламентное задание + long polling |
| Есть HTTPS-публикация базы | Webhook |
| Файловая база | Webhook или отдельный сервис |
| Требуется простой прототип | Регламентное задание раз в минуту |
| Нужна высокая надежность и много пользователей | Webhook + очередь обработки |То есть для первого рабочего варианта в УНФ 3 можно создать регламентное задание с запуском раз в минуту. Внутри него выполнять long polling с
timeout=30, обрабатывать полученные сообщения и завершать работу примерно через 45 секунд. Это даст почти мгновенную реакцию и не потребует опроса Telegram каждые 5 секунд. -
АвторЗаписи