Ответы в темах
-
АвторСообщения
-
24 апреля 2026 в 12:39 в ответ на: Почему задача «Перестроение индекса» в MS SQL Server завершилась с ошибкой? #36799
Судя по сообщению, у вас в MS SQL Server при выполнении задачи «Перестроение индекса» (Rebuild Index) на таблицах с именами типа _AccumRgXXXX возникает ошибка, и выполнение прерывается с сообщением «Не удалось выполнить … Шаг завершился с ошибкой».
Причины и рекомендации:
1. Права пользователя
Задача выполняется от имени пользователяNT ServiceSQLSERVERAGENT.... Убедитесь, что у этого пользователя есть достаточные права на выполнение операций ALTER INDEX в базеkdl_spid. Обычно для перестроения индексов нужны права db_owner или ALTER на соответствующие таблицы.2. Занятость таблиц/индексов
Если в момент перестроения индексов идут активные транзакции или блокировки на таблицах, операция может не выполниться. Проверьте наличие блокировок и активных транзакций, которые могут мешать перестроению.3. Ресурсы сервера
Перестроение индексов — ресурсоёмкая операция. Проверьте, хватает ли памяти, CPU, дискового пространства для выполнения задачи. Особенно если база большая.4. Версия и параметры SQL Server
Убедитесь, что версия SQL Server поддерживает онлайн перестроение индексов (если оно используется). В некоторых случаях стоит переключить режим перестроения на офлайн.5. Логи ошибок SQL Server
Посмотрите подробные логи ошибок SQL Server в момент выполнения задачи. Там будет точная причина сбоя.6. Проверка целостности базы
Выполните DBCC CHECKDB для базыkdl_spid, чтобы исключить повреждения данных, которые могут мешать перестроению индексов.7. Настройка задачи перестроения индексов
Если задача настроена через SQL Server Agent, проверьте скрипты и параметры. Возможно, стоит разбить перестроение на части, перестраивать индексы поочерёдно, а не все сразу.8. Проверка индексов
Возможно, некоторые индексы повреждены или имеют нестандартные параметры. Попробуйте перестроить проблемные индексы вручную через SSMS.9. Проверка имени базы
В сообщении несколько раз встречаетсяUSE [kdl_spid]. Убедитесь, что база существует и доступна.—
Практические шаги:
— В SSMS выполните:
MySQL1234USE [kdl_spid];GODBCC CHECKDB WITH NO_INFOMSGS, ALL_ERRORMSGS;GO— Попробуйте вручную перестроить один из индексов, например:
MySQL1ALTER INDEX [_AccumRg4030_3] ON [dbo].[_AccumRg4030] REBUILD WITH (ONLINE = ON);— Проверьте права пользователя SQLSERVERAGENT:
MySQL1234SELECT dp.name, dp.type_desc, perm.permission_name, perm.state_descFROM sys.database_principals dpLEFT JOIN sys.database_permissions perm ON perm.grantee_principal_id = dp.principal_idWHERE dp.name = 'NT ServiceSQLSERVERAGENT...';— Посмотрите логи SQL Server на ошибки в момент запуска задачи.
—
Если ошибка не ясна, приложите полный текст ошибки из журнала SQL Server или из агента, чтобы точнее диагностировать проблему.
—
Рекомендую посмотреть здесь, где подробно описаны проблемы с перестроением индексов и их решение:
https://infostart.ru/public/2255283/
https://infostart.ru/1c/articles/administrirovanie_bd/instrumenty_administratora_bd/И по ошибкам SQL Server:
https://infostart.ru/1c/articles/administrirovanie_bd/tehnicheskie_oshibki_i_ikh_reshenie/24 апреля 2026 в 10:12 в ответ на: Почему не проводится документ «Заказ клиента» в 1С:Бухгалтерия 4.0? #36797Если в 1С:Бухгалтерия 4.0 не проводится документ «Заказ клиента», то причины могут быть разные. Вот пошаговый алгоритм, что проверить и как исправить:
1. Проверка заполнения обязательных реквизитов
— Проверьте, что заполнены все обязательные поля документа: контрагент, организация, склад (если есть), дата, валюта и т.п.
— Особое внимание уделите табличной части — должны быть заполнены номенклатура, количество, цена.2. Проверка даты документа
— Дата документа не должна выходить за пределы периода, открытого для проведения.
— Проверьте, что дата документа не меньше даты начала работы базы и не больше текущей даты.3. Проверка настроек прав пользователя
— У пользователя должны быть права на проведение документов данного типа.
— Проверьте роли и права в разделе «Администрирование» — «Пользователи» — «Роли».4. Проверка блокировок и ограничений
— В настройках может быть установлен запрет на проведение документов с определёнными условиями (например, запрет на проведение в закрытом периоде).
— Проверьте, не стоит ли дата запрета изменения данных (в «Администрирование» — «Настройки» — «Дата запрета изменения данных»).5. Проверка ошибок при проведении
— При попытке проведения должен появляться текст ошибки.
— Если ошибка не отображается, попробуйте провести документ через режим отладки или посмотрите журнал регистрации (Администрирование — Журнал регистрации) на наличие ошибок.6. Проверка бизнес-логики и обработчиков
— Возможно, в базе есть доработки или расширения, которые блокируют проведение.
— Проверьте обработчики событий документа (например, «ПередЗаписью», «ПередПроведением») на наличие кода, который может отменять проведение.7. Проверка остатков и резервов
— Если в заказе есть резервирование товаров, проверьте, что на складе достаточно остатков.
— Иногда проведение блокируется из-за отсутствия товара или превышения лимитов.8. Проверка корректности справочников
— Проверьте, что все используемые в документе справочники (контрагенты, номенклатура, договоры) не удалены и не заблокированы.9. Обновление конфигурации
— Убедитесь, что у вас установлена последняя версия конфигурации 4.0 с актуальными исправлениями.Если после всех проверок проблема не решилась, то для точного определения причины нужно посмотреть конкретное сообщение об ошибке при проведении или логи.
Если есть возможность, приложите скриншот ошибки или текст сообщения — это поможет дать более точный совет.
Рекомендую посмотреть здесь, там есть похожие случаи и решения:
https://infostart.ru/public/1743445/ (настройки обмена и проведения)
https://infostart.ru/public/1722218/ (как быстро менять результат проведения)Для получения списка чатов (включая группы) в GreenAPI-MAX используется метод API:
GET /waInstance{IDInstance}/getChats/{apiTokenInstance}—
### Пример процедуры на 1С для получения списка чатов через GreenAPI-MAX:
1С (Код)1234567891011121314151617181920212223242526272829Функция ПолучитьСписокЧатов(ИДИнстанса, Токен) ЭкспортАдресAPI = "https://api.green-api.com";ПутьЗапроса = "/waInstance" + ИДИнстанса + "/getChats/" + Токен;Соединение = Новый HTTPСоединение("api.green-api.com", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());Запрос = Новый HTTPЗапрос(ПутьЗапроса);Запрос.Заголовки.Вставить("Content-Type", "application/json");ПопыткаОтвет = Соединение.Получить(Запрос);ИсключениеВызватьИсключение "Ошибка при получении списка чатов: " + ОписаниеОшибки();КонецПопытки;Если Ответ.КодСостояния <> 200 ТогдаВызватьИсключение "Ошибка сервера при получении списка чатов. Код: " + Ответ.КодСостояния;КонецЕсли;ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();// Преобразуем JSON в структуру 1СЧтениеJSON = Новый ЧтениеJSON;ЧтениеJSON.УстановитьСтроку(ТекстОтвета);Результат = ПрочитатьJSON(ЧтениеJSON);ЧтениеJSON.Закрыть();// Результат - массив объектов с chatId и другими даннымиВозврат Результат;КонецФункции—
### Как использовать:
1С (Код)123456789ИДИнстанса = "3100584661"; // Ваш ID инстансаТокен = "7de86b53ca0a451ca407183cf1ba3dac8404c29237094d16bf"; // Ваш API TokenСписокЧатов = ПолучитьСписокЧатов(ИДИнстанса, Токен);Для Каждого Чат Из СписокЧатов ЦиклСообщить("chatId: " + Чат.chatId);// Можно фильтровать по chatId, например, группы заканчиваются на @g.usКонецЦикла;—
### Важные моменты:
— В ответе будет массив объектов с полем
chatId— это идентификатор чата или группы.
— Для группchatIdзаканчивается на@g.us.
— Для личных чатов — на@c.us.
— Используйте полученныйchatIdдля отправки сообщений в нужный чат или группу.—
Если нужно, могу помочь с примером отправки сообщения в группу, используя полученный
chatId.24 апреля 2026 в 8:53 в ответ на: Как интегрировать GreenAPI-MAX в УТ 11.5 для отправки уведомлений клиентам? #36793Для УТ 11.5 интеграция с GreenAPI-MAX через внешнюю обработку или внешний модуль — это классический сценарий расширения функционала 1С для автоматической отправки уведомлений клиентам, например, при изменении статуса заказа покупателя.
### Как это сделать подробно с примерами
—
## 1. Подключение обработки GreenAPI-MAX к УТ 11.5
— В режиме предприятия загрузите обработку GreenAPI-MAX (*.epf).
— Настройте параметры подключения (ID аккаунта, токен) в обработке.
— Убедитесь, что обработка работает и может отправлять сообщения вручную.—
## 2. Создание внешнего модуля для вызова функций GreenAPI-MAX
В УТ 11.5 можно создать внешний общий модуль (например,
GreenAPIИнтеграция), который будет содержать процедуры и функции для отправки сообщений через GreenAPI-MAX.### Пример кода внешнего общего модуля
GreenAPIИнтеграция:1С (Код)12345678910111213141516171819202122232425// Внешний общий модуль GreenAPIИнтеграция// Процедура отправки текстового сообщения через GreenAPI-MAXПроцедура ОтправитьСообщение(НомерТелефона, ТекстСообщения) Экспорт// Создаем объект обработки GreenAPI-MAXОбработкаGreenAPI = ПолучитьОбработку("ПутьКGreenAPI-MAX.epf");Если ОбработкаGreenAPI = Неопределено ТогдаСообщить("Не удалось загрузить обработку GreenAPI-MAX");Возврат;КонецЕсли;// Устанавливаем параметры подключения (пример, заменить на реальные)ОбработкаGreenAPI.IDАккаунта = "ВАШ_ID_АККАУНТА";ОбработкаGreenAPI.Токен = "ВАШ_ТОКЕН";// Формируем и отправляем сообщениеРезультат = ОбработкаGreenAPI.ОтправитьСообщение(НомерТелефона, ТекстСообщения);Если Результат = Истина ТогдаСообщить("Сообщение успешно отправлено клиенту " + НомерТелефона);ИначеСообщить("Ошибка при отправке сообщения клиенту " + НомерТелефона);КонецЕсли;КонецПроцедуры> Важно:
> —ПолучитьОбработку()— это пример функции, которая должна загрузить обработку GreenAPI-MAX в память. В 1С нет встроенной функции с таким именем, нужно реализовать загрузку обработки черезВнешниеОбработкиили через COM-соединение, либо использовать вызов процедур обработки через COM или COM-соединение.
> — В зависимости от реализации GreenAPI-MAX, возможно, придется вызывать процедуры через COM или через вызов внешней обработки с параметрами.—
## 3. Вызов из бизнес-процесса УТ 11.5 — например, при изменении статуса заказа покупателя
В УТ 11.5 есть документ «Заказ покупателя». Можно расширить обработку события изменения статуса заказа, чтобы при смене статуса отправлять уведомление клиенту.
### Пример расширения обработки документа ЗаказПокупателя (в расширении или в общем модуле):
1С (Код)12345678910111213141516171819202122232425&НаСервереПроцедура ПриИзмененииСтатусаЗаказа(Объект)// Получаем номер телефона клиента из реквизитов или из контрагентаНомерТелефона = ПолучитьТелефонКлиента(Объект.Контрагент);Если НомерТелефона = "" ТогдаВозврат; // Телефон не указан, отправка невозможнаКонецЕсли;// Формируем текст уведомленияТекстСообщения = "Уважаемый клиент! Статус вашего заказа №" + Объект.Номер + " изменен на " + Объект.СтатусЗаказа.Наименование;// Вызываем процедуру отправки сообщения из внешнего модуляGreenAPIИнтеграция.ОтправитьСообщение(НомерТелефона, ТекстСообщения);КонецПроцедуры// Вспомогательная функция для получения телефона клиентаФункция ПолучитьТелефонКлиента(Контрагент) ЭкспортЕсли Контрагент = Неопределено ТогдаВозврат "";КонецЕсли;// Предположим, что телефон хранится в реквизите "Телефон"Возврат Контрагент.Телефон;КонецФункции—
## 4. Автоматизация вызова
— Можно подписаться на событие изменения документа ЗаказПокупателя (например, через расширение, подписку на событие или через обработчик в модуле объекта).
— При изменении статуса вызывается процедураПриИзмененииСтатусаЗаказа, которая отправляет уведомление.—
## 5. Важные моменты
— Передача параметров в обработку GreenAPI-MAX: если обработка не предоставляет прямого API для вызова из кода, можно доработать её, добавив экспортные процедуры, которые принимают параметры (номер, текст) и отправляют сообщение.
— Асинхронность: отправка сообщений может занимать время, лучше делать это в регламентных заданиях или фоновых обработках, чтобы не блокировать пользователя.
— Логирование: добавьте логирование успешных и неуспешных попыток отправки сообщений для отладки и контроля.
— Безопасность: храните токены и ID аккаунта в защищённых настройках, не хардкодьте в коде.—
## Итог
— Создаёте внешний модуль с процедурами отправки сообщений через GreenAPI-MAX.
— Расширяете бизнес-процессы УТ 11.5, чтобы при нужных событиях (например, смена статуса заказа) вызывать эти процедуры.
— Настраиваете автоматизацию и логирование.—
Если нужна помощь с конкретным кодом вызова из обработки GreenAPI-MAX (например, как именно вызвать её методы из 1С), пришлите код обработки или опишите, как она реализована (внешняя обработка, COM, HTTP-запросы), помогу адаптировать.
24 апреля 2026 в 8:36 в ответ на: Как использовать обработку GreenAPI-MAX в 1С для интеграции с мессенджерами? #36791Обработка GreenAPI-MAX — это внешняя обработка для 1С, которая позволяет интегрировать 1С с сервисом GreenAPI (API для работы с WhatsApp, Telegram и другими мессенджерами через WhatsApp Business API). На практике она используется для автоматизации отправки и получения сообщений, управления чатами, рассылок и обработки входящих сообщений прямо из 1С.
Как использовать GreenAPI-MAX на практике:
1. Подключение обработки к базе 1С
— Скачайте обработку GreenAPI-MAX (обычно это файл *.epf).
— В конфигураторе или в режиме предприятия откройте обработку через меню «Файл» → «Открыть».
— Настройте параметры подключения к вашему аккаунту GreenAPI: укажите ID аккаунта, токен (API key), которые вы получите в личном кабинете GreenAPI.2. Настройка параметров
— В обработке укажите настройки отправки сообщений: номер телефона отправителя, шаблоны сообщений, типы сообщений (текст, медиа, документы).
— Настройте обработку входящих сообщений: можно задать правила обработки, фильтры, автоматические ответы.3. Отправка сообщений из 1С
— В интерфейсе обработки выберите контакт или введите номер телефона получателя.
— Введите текст сообщения или выберите файл для отправки (изображение, документ, аудио).
— Нажмите кнопку «Отправить». Обработка сформирует запрос к API GreenAPI и отправит сообщение.4. Получение и обработка входящих сообщений
— Обработка может периодически опрашивать API GreenAPI на предмет новых сообщений (через регламентное задание или вручную).
— Входящие сообщения отображаются в интерфейсе обработки, можно настроить автоматическую обработку (например, создание задач, уведомлений, ответов).5. Автоматизация через регламентные задания
— Для регулярной отправки уведомлений, рассылок или обработки входящих сообщений настройте регламентные задания в 1С, которые будут вызывать процедуры обработки GreenAPI-MAX.
— Это позволяет полностью автоматизировать обмен сообщениями без участия пользователя.6. Интеграция с бизнес-процессами 1С
— Можно доработать обработку или написать внешние модули, которые будут вызывать функции GreenAPI-MAX из других частей 1С (например, при изменении статуса заказа отправлять уведомление клиенту).
— Используйте API обработки для интеграции с CRM, складом, бухгалтерией и другими подсистемами.7. Логирование и мониторинг
— В обработке обычно есть журнал отправленных и полученных сообщений, ошибки и статусы доставки.
— Следите за логами для контроля работы интеграции.—
Кратко:
— Подключаете обработку к базе 1С.
— Настраиваете параметры API GreenAPI (ID, токен).
— Отправляете и получаете сообщения через интерфейс обработки или регламентные задания.
— Интегрируете с бизнес-процессами для автоматизации коммуникаций.—
Если нужна конкретика по настройке или примеры кода для вызова функций обработки — уточните версию 1С и конфигурацию, могу помочь с примером.
Рекомендую посмотреть здесь:
https://infostart.ru/public/ (поиск по GreenAPI-MAX)
https://github.com/green-api/ (официальные примеры и документация)23 апреля 2026 в 17:32 в ответ на: Как завершать неактивные сессии 1С автоматически и быстро? #36789Чтобы автоматически завершать неактивные сеансы 1С с минимальным временем ожидания, нужно настроить параметры информационной базы и сервер терминалов (если используется), а также можно использовать регламентные задания для принудительного завершения.
1. Настройка параметров информационной базы (через Конфигуратор):
— В Конфигураторе зайдите в меню: Администрирование → Параметры информационной базы.
— Установите:
— Время засыпания пассивных сеансов (IdleTimeout) — например, 60 секунд (1 минута) или даже меньше, но не рекомендуется ставить меньше 10 минут для веб и тонкого клиента, чтобы не было проблем с поддержанием сеанса.
— Время завершения спящих сеансов (SleepTimeout) — например, 60 секунд.Важно: для тонкого и веб-клиента минимальное время засыпания не рекомендуется ставить меньше 10 минут, так как клиент сам посылает запросы для поддержания активности примерно раз в 5-10 минут. Если поставить меньше, сеанс будет постоянно «просыпаться» и не будет уходить в спящий режим.
2. Настройка политики на сервере терминалов (если используется):
— В свойствах пользователей Windows (Локальные пользователи и группы → Пользователи → Свойства → Вкладка «Сеансы») установите:
— Ограничение бездействующего сеанса — например, 5-10 минут.
— Завершение отключенного сеанса — например, 10-15 минут.Это позволит Windows автоматически завершать сессии пользователей, которые неактивны.
3. Использование регламентного задания или обработки для принудительного завершения сеансов:
— В 1С есть стандартная обработка «Блокировка работы пользователей» (Администрирование → Обслуживание → Блокировка работы пользователей), с помощью которой можно запланировать завершение всех сеансов в определённое время.
— Можно написать собственное регламентное задание, которое будет периодически проверять неактивные сеансы и завершать их программно через метод МенеджерСеансов.ЗавершитьСеанс(ИдентификаторСеанса).4. Важные рекомендации:
— Не ставьте слишком маленькое время засыпания для веб и тонкого клиента (меньше 10 минут), иначе сеансы будут постоянно «просыпаться».
— Для толстого клиента можно ставить меньшее время.
— Если пользователи часто «зависают» и не выходят из 1С, настройте и на стороне Windows автоматическое завершение сессий.
— В новых версиях 1С (начиная с 8.3.24) появилась возможность пользователям самостоятельно завершать свои «зависшие» сеансы при повторном входе.Пример настройки параметров информационной базы через конфигуратор:
|Время засыпания пассивных сеансов = 60 (секунд)
|Время завершения спящих сеансов = 60 (секунд)Если хотите программно завершать сеансы, пример кода:
1С (Код)123456789Процедура ЗавершитьНеактивныеСеансы()МенеджерСеансов = МенеджерСеансов();Сеансы = МенеджерСеансов.ПолучитьСеансы();Для Каждого Сеанс Из Сеансы ЦиклЕсли Сеанс.ВремяПоследнейАктивности < ТекущаяДата() - Интервал(0,0,5,0) Тогда // 5 минут бездействияМенеджерСеансов.ЗавершитьСеанс(Сеанс.Идентификатор);КонецЕсли;КонецЦикла;КонецПроцедурыЗапускайте эту процедуру по расписанию (регламентное задание).
Рекомендую посмотреть здесь:
https://kuharbogdan.com/stati-po-1s/kak-sekonomit-na-litsenziyah-1s-i-apparatnyih-resursah-servera-terminalov/
https://infostart.ru/1c/articles/1552262/
https://infostart.ru/1c/articles/126247/23 апреля 2026 в 16:32 в ответ на: Как программно пометить на удаление все договоры в справочнике без запроса? #36787Если нужно получить все договоры из справочника «Договоры взаиморасчетов» и пометить их на удаление, не используя запрос, а перебирая элементы через объекты справочника, то делается так:
1С (Код)1234567891011121314151617181920Процедура ПометитьВсеДоговорыНаУдаление() Экспорт// Получаем объект справочникаДоговоры = Справочники.ДоговорыВзаиморасчетов; // замените на точное имя справочника// Создаем выборку по всем элементам справочникаВыборка = Договоры.Выбрать();Пока Выборка.Следующий() Цикл// Получаем объект элемента справочникаДоговорОбъект = Выборка.Ссылка.ПолучитьОбъект();// Помечаем на удалениеДоговорОбъект.ПометкаУдаления = Истина;// Записываем измененияДоговорОбъект.Записать();КонецЦикла;Сообщить("Все договоры помечены на удаление.");КонецПроцедуры—
Объяснение:
—
Справочники.ДоговорыВзаиморасчетов— объект справочника, замените на точное имя вашего справочника договоров.
— МетодВыбрать()возвращает выборку по всем элементам справочника.
— В циклеПока Выборка.Следующий()перебираем все элементы.
— Для каждого элемента черезСсылка.ПолучитьОбъект()получаем объект для редактирования.
— УстанавливаемПометкаУдаления = Истинаи вызываемЗаписать().—
Такой способ полностью обходится без запросов и работает через объекты справочника.
23 апреля 2026 в 16:02 в ответ на: Как доработать запрос в 1С, чтобы исключить итоговые строки по Субконто1? #36785Чтобы исключить из выборки итоговые строки по Субконто1, нужно добавить в запрос условие, которое отфильтрует записи, где Субконто1 пустое значение (NULL или пустая ссылка). В 1С для ссылочных типов используется проверка через ПУСТАЯССЫЛКА().
Доработка запроса:
|ВЫБРАТЬ
| ОсновнойОстаткиИОбороты.Субконто1 КАК Субконто1,
| ОсновнойОстаткиИОбороты.Субконто2 КАК Субконто2,
| ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
| ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
| ОсновнойОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
| ОсновнойОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
| ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
| ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт
|ИЗ
| РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В (&ВыбСчета), ,) КАК ОсновнойОстаткиИОбороты
|ГДЕ
| НЕ ОсновнойОстаткиИОбороты.Субконто1 ПУСТАЯССЫЛКА()Если нужно, чтобы в выборке были только строки, где заполнены и Субконто1, и Субконто2, добавьте условие и по Субконто2:
| НЕ ОсновнойОстаткиИОбороты.Субконто2 ПУСТАЯССЫЛКА()
Таким образом итоговые строки, у которых Субконто1 пустое, будут исключены из выборки.
23 апреля 2026 в 15:27 в ответ на: Почему не открывается внешняя обработка через меню «Открыть файл» в Альфа-Авто? #36783В Альфа-Авто (как и в большинстве типовых конфигураций 1С) меню «Файл» → «Открыть» для внешних обработок обычно отключено или скрыто по умолчанию. Это сделано для защиты целостности базы и предотвращения запуска неподписанных или неподготовленных обработок, которые могут нарушить работу системы.
—
Почему так сделано:
— Типовые конфигурации часто ограничивают возможность запуска произвольных внешних обработок из интерфейса пользователя.
— Внешние обработки обычно подключаются через справочник «Дополнительные отчеты и обработки» или через расширения.
— Открытие произвольного файла с диска может привести к ошибкам или нарушениям безопасности.—
Что можно сделать:
1. Проверить права пользователя
— Для открытия внешних обработок через меню «Открыть» нужны соответствующие права. В настройках ролей проверьте, есть ли у пользователя право на запуск внешних обработок и доступ к меню «Файл».
— В типовых ролях Альфа-Авто это может быть ограничено.2. Использовать справочник «Дополнительные отчеты и обработки»
— Добавьте нужную внешнюю обработку в этот справочник и запускайте оттуда. Это штатный и безопасный способ.3. Обратиться к администратору или разработчику
— Если нужно разрешить открытие внешних обработок через меню «Открыть», это делается в конфигураторе — нужно включить соответствующий пункт меню и дать права.
— Но делать это стоит с осторожностью.—
Итог:
В Альфа-Авто меню «Открыть файл» для внешних обработок по умолчанию отключено или ограничено правами. Чтобы открыть внешнюю обработку, используйте справочник «Дополнительные отчеты и обработки» или обратитесь к администратору для настройки прав и интерфейса.—
Если нужна конкретика по настройке прав или включению меню — уточните версию конфигурации и платформы, помогу с инструкцией.
23 апреля 2026 в 15:10 в ответ на: Как вытащить номера ГТД для номенклатуры по периодам в 1С? #36781Чтобы получить номера ГТД по конкретной номенклатуре из регистра накопления «ТоварыОрганизаций» с разбивкой по периодам, нужно в запрос добавить фильтр по номенклатуре и группировку по периоду.
Предположим, что:
— Поле с номером ГТД называется «НомерГТД» (если другое — замените).
— Поле периода — «Период» (обычно в регистрах накопления есть поле Период).
— Номенклатура — ссылка на справочник «Номенклатура».Пример запроса:
|ВЫБРАТЬ
| ТоварыОрганизаций.Период КАК Период,
| ТоварыОрганизаций.НомерГТД КАК НомерГТД
|ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций
|ГДЕ
| ТоварыОрганизаций.Номенклатура = &Номенклатура
| И ТоварыОрганизаций.НомерГТД <> «»
|УПОРЯДОЧИТЬ ПО
| ТоварыОрганизаций.Период,
| ТоварыОрганизаций.НомерГТДЕсли нужно получить уникальные номера ГТД по периодам (чтобы не было повторов), то можно использовать группировку:
|ВЫБРАТЬ
| ТоварыОрганизаций.Период КАК Период,
| ТоварыОрганизаций.НомерГТД КАК НомерГТД
|ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций
|ГДЕ
| ТоварыОрганизаций.Номенклатура = &Номенклатура
| И ТоварыОрганизаций.НомерГТД <> «»
|СГРУППИРОВАТЬ ПО
| ТоварыОрганизаций.Период,
| ТоварыОрганизаций.НомерГТД
|УПОРЯДОЧИТЬ ПО
| ТоварыОрганизаций.Период,
| ТоварыОрганизаций.НомерГТДПараметр запроса &Номенклатура нужно установить в коде, например:
1С (Код)1234Запрос = Новый Запрос;Запрос.Текст = " ... (текст запроса выше) ... ";Запрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию("Название номенклатуры"));Результат = Запрос.Выполнить().Выгрузить();Если поле «НомерГТД» хранится не в регистре, а в связанном справочнике партий, то запрос усложняется с JOIN по партии.
Если нужно — могу помочь адаптировать под конкретную структуру.
Рекомендую посмотреть, как работать с регистрами накопления и параметрами периода:
https://infostart.ru/public/1042547/
https://infostart.ru/public/1725228/В 1С стандартный период — это объект типа «СтандартныйПериод», который содержит даты начала и окончания периода (например, месяц, квартал, год и т.п.). В регистре сведений для хранения периода обычно используется поле типа «Дата» или «ДатаВремя» с именем «Период».
Чтобы сохранить стандартный период в регистре сведений, нужно:
1. В конфигураторе в регистре сведений создать измерение или реквизит типа «Дата» или «ДатаВремя» (обычно это поле «Период»).
2. При записи данных в регистр сведений в поле «Период» записать дату начала или дату окончания стандартного периода, либо обе даты, если в регистре два поля для периода (например, «ДатаНачала» и «ДатаОкончания»).
3. В коде 1С при работе с объектом «СтандартныйПериод» получить даты начала и окончания через свойства:
1С (Код)123СтандартныйПериод = Новый СтандартныйПериод(ПериодТип, Год, Месяц); // пример созданияДатаНачала = СтандартныйПериод.ДатаНачала;ДатаОкончания = СтандартныйПериод.ДатаОкончания;4. Записать эти даты в регистр сведений:
1С (Код)1234Запись = РегистрыСведений.ИмяРегистра.СоздатьМенеджерЗаписи();Запись.Период = ДатаНачала; // или ДатаОкончания, в зависимости от структуры регистра// заполнить остальные измерения и реквизитыЗапись.Записать();Если в регистре сведений период задаётся одним полем «Период», обычно туда записывают дату начала периода.
Если нужно хранить оба конца периода, то в регистре должны быть два поля (например, «ДатаНачала» и «ДатаОкончания»), и туда записываются соответствующие даты из стандартного периода.
—
Пример записи стандартного периода в регистр сведений с одним полем «Период»:
|Процедура ЗаписатьСтандартныйПериод(СтандартныйПериодОбъект)
| Запись = РегистрыСведений.ИмяРегистра.СоздатьМенеджерЗаписи();
| Запись.Период = СтандартныйПериодОбъект.ДатаНачала;
| // заполнить остальные измерения и реквизиты
| Запись.Записать();
|КонецПроцедуры—
Если нужно использовать стандартный период в запросах или фильтрах, то можно использовать свойства объекта «СтандартныйПериод» для получения дат начала и окончания.
Рекомендую посмотреть здесь, как работать со стандартными периодами и параметрами в отчетах и обработках:
23 апреля 2026 в 7:10 в ответ на: Почему поле РегистраторДата отображается у одного пользователя, а у другого нет? #36776Причина, почему у одного пользователя в «Выбранных полях» отображается поле РегистраторДата, а у другого нет, связана с особенностями работы Системы Компоновки Данных (СКД) и правами доступа к метаданным.
Вот основные причины и что проверить:
1. Права доступа к объектам метаданных
ПолеРегистратор.Дата— это реквизит документа (регистратора), на который ссылается полеРегистраторв регистре бухгалтерии. Если у пользователя нет прав на просмотр этого реквизита или самого регистратора, то СКД не сможет отобразить это поле.
Проверьте, что у обоих пользователей есть одинаковые права на справочник/документ, который используется в качестве регистратора, и на реквизитДата.2. Настройки СКД и сохранённые настройки пользователя
В СКД настройки выбранных полей могут сохраняться отдельно для каждого пользователя. Возможно, у одного пользователя в настройках отчёта полеРегистраторДатадобавлено в выборку, а у другого — нет.
Проверьте настройки отчёта у обоих пользователей, очистите или синхронизируйте их.3. Версия платформы и конфигурации
В редких случаях различия в версиях платформы или конфигурации могут влиять на доступность реквизитов в СКД. Убедитесь, что у пользователей одинаковые версии.4. Особенности работы с виртуальными таблицами и ссылками в СКД
В запросе используется обращение к полю по ссылке:ХозрасчетныйОбороты.Регистратор.Дата. Если у пользователя нет доступа к объекту, на который ссылаетсяРегистратор, поле не будет доступно.
Также в СКД иногда требуется явно добавить в настройки отчёта возможность раскрытия ссылок (например, в настройках источника данных или в настройках полей).5. Кэширование и обновление метаданных
Иногда после обновления конфигурации или прав доступа требуется перезапустить клиент 1С, чтобы обновились метаданные. Убедитесь, что у пользователя, у которого поле не отображается, клиент перезапущен.—
Что сделать:
— Проверьте права доступа пользователей на регистратор и его реквизит
Дата.
— Сравните настройки отчёта СКД у обоих пользователей, особенно выбранные поля.
— Попробуйте у пользователя, у которого поле не отображается, сбросить настройки отчёта (удалить сохранённые настройки).
— Перезапустите клиент 1С.
— Проверьте, что в конфигурации реквизитДатарегистратора доступен и не скрыт.—
Если нужно, могу помочь с примером кода или настройками для корректного отображения поля
Регистратор.Датав СКД.22 апреля 2026 в 20:29 в ответ на: Как работает процедура ВыполнитьОбновлениеДанных в 1С и какие особенности её исп #36774Процедура
1С (Код)12ВыполнитьОбновлениеДанных(ЕстьИзменения, ЕстьУдаленные, РежимОбновления,ЕстьКритичныеИзменения = Ложь, СписокКритичныхИзменений = "", ОбъектыРасширений = Ложь) Экспортреализует логику обновления данных справочника
ИдентификаторыОбъектовМетаданныхс учётом разных режимов и условий. Разберу по шагам, что происходит:—
### 1. Проверка условий для объектов расширений
1С (Код)123Если ОбъектыРасширенийИ ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения)И СтандартныеПодсистемыСервер.УстановленныеРасширенияНедоступны() Тогда— Если обновление касается объектов расширений (
ОбъектыРасширений = Истина),
— и в сеансе есть установленные расширения,
— но при этом расширения недоступны (например, сеанс неразделённого пользователя, где расширения не подключены),то:
1С (Код)123ТекстОшибки = НСтр("ru='Невозможно обновить идентификаторы объектов расширений в сеансе неразделенного пользователя, т.к. расширения не подключены.';uk='...'");ВызватьИсключениеПоОшибке(Истина, ТекстОшибки);Возврат;— Генерируется исключение с понятным сообщением, и процедура завершается.
—
### 2. Проверка использования объектов расширений
1С (Код)1ПроверкаИспользования(ОбъектыРасширений);— Вызов процедуры, которая, вероятно, проверяет, можно ли обновлять данные с учётом того, что это объекты расширений.
—
### 3. Установка привилегированного режима
1С (Код)1УстановитьПривилегированныйРежим(Истина);— Для выполнения обновления с повышенными правами.
—
### 4. Обработка параметра
РежимОбновления1С (Код)1234Если ТипЗнч(РежимОбновления) = Тип("Булево") ТогдаРежимОбновления = ?(РежимОбновления, "ТолькоПроверка", "Полный");КонецЕсли;ТолькоПроверка = (РежимОбновления = "ТолькоПроверка");— Если
РежимОбновленияпередан как булево, то преобразуется в строку:
—Истина→"ТолькоПроверка"
—Ложь→"Полный"
— Устанавливается флагТолькоПроверкадля дальнейшей логики.—
### 5. Получение свойств расширений из временного хранилища
1С (Код)1234СвойстваРасширений = ПолучитьИзВременногоХранилища(ПараметрыСеанса.АдресСвойствРасширений);Если СвойстваРасширений.ИменаОбъектов.Индексы.Количество() = 0 ТогдаСвойстваРасширений.ИменаОбъектов.Индексы.Добавить("ПолноеИмя");КонецЕсли;— Загружаются свойства расширений, если индексы пусты — добавляется индекс по полному имени.
—
### 6. Обработка дублей и текущих изменений
1С (Код)1234ЕстьТекущиеИзменения = Ложь;Если Не ОбъектыРасширений ТогдаЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке(ТолькоПроверка, ЕстьТекущиеИзменения);КонецЕсли;— Если не объекты расширений, вызывается процедура, которая, вероятно, устраняет дубли в подчинённых узлах и при этом может установить флаг
ЕстьТекущиеИзменения.—
### 7. Основное обновление данных
1С (Код)12345678910Если Не ОбъектыРасширенийИли Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() ТогдаОбновитьДанные(ЕстьТекущиеИзменения, ЕстьУдаленные, РежимОбновления,ЕстьКритичныеИзменения, СписокКритичныхИзменений, СвойстваРасширений, ОбъектыРасширений);Если ЕстьТекущиеИзменения ТогдаЕстьИзменения = Истина;КонецЕсли;КонецЕсли;— Если не объекты расширений или текущий узел не подчинённый узел РИБ (регистра информации базы), то вызывается процедура
ОбновитьДанныес передачей всех параметров.
— Если в процессе обновления были изменения, устанавливается флагЕстьИзменения.—
### 8. Подтверждение обновления параметра работы программы
1С (Код)12345678Если Не ТолькоПроверкаИ Не (РежимОбновления <> "Полный" И ЕстьКритичныеИзменения) ТогдаЕсли Не ОбъектыРасширений ТогдаСтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы("ПараметрыБазовойФункциональности", "ИдентификаторыОбъектовМетаданных");КонецЕсли;КонецЕсли;— Если режим не только проверка и либо режим полный, либо нет критичных изменений,
— и если не объекты расширений,
— то вызывается метод подтверждения обновления параметра работы программы, связанного с идентификаторами объектов метаданных.—
## Итог
— Процедура контролирует обновление идентификаторов объектов метаданных, учитывая особенности работы с расширениями.
— Обрабатывает режимы обновления (проверка или полный).
— Устраняет дубли, обновляет данные, подтверждает изменения.
— Защищает от попыток обновления расширений в неподходящих сеансах.
— Использует привилегированный режим для выполнения операций.—
Если нужна конкретика по внутренним процедурам (
ПроверкаИспользования,ЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке,ОбновитьДанные), нужно смотреть их код.Процедура
1С (Код)1ОбновитьДанныеСправочника(ЕстьИзменения = Ложь, ЕстьУдаленные = Ложь, ТолькоПроверка = Ложь)является экспортируемой процедурой (то есть доступной из других модулей), которая служит обёрткой для вызова процедуры
1С (Код)1ВыполнитьОбновлениеДанных(ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка);Пояснения:
— Параметры
ЕстьИзменения,ЕстьУдаленные,ТолькоПроверка— булевы флаги, по умолчаниюЛожь. Они передаются в вызываемую процедуру и, скорее всего, управляют логикой обновления данных справочника:—
ЕстьИзменения— указывает, что есть изменения, которые нужно обработать.—
ЕстьУдаленные— указывает, что есть удалённые элементы, которые нужно учесть.—
ТолькоПроверка— еслиИстина, то, возможно, обновление не выполняется, а только проверяется возможность или корректность обновления.— Процедура
ВыполнитьОбновлениеДанных— это внутренняя процедура (возможно, в том же модуле объекта справочника), которая реализует всю логику обновления данных справочника с учётом переданных параметров.— Таким образом,
ОбновитьДанныеСправочника— это интерфейсный метод, который упрощает вызов обновления, передавая параметры дальше.Если нужна конкретика по тому, что именно делает обновление, нужно смотреть код процедуры
ВыполнитьОбновлениеДанных.—
Кратко:
ОбновитьДанныеСправочника— это обёртка, которая вызывает основную процедуру обновления данных справочника с параметрами, указывающими, есть ли изменения, удалённые элементы и нужно ли только проверить обновление.Строка кода:
1С (Код)1Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника()означает вызов метода
ОбновитьДанныеСправочника()у объекта справочникаИдентификаторыОбъектовМетаданных.Разберём по частям:
1. Справочники.ИдентификаторыОбъектовМетаданных — это ссылка на справочник с именем
ИдентификаторыОбъектовМетаданных. В 1С справочники — это объекты метаданных, которые содержат набор элементов (записей).2. ОбновитьДанныеСправочника() — это метод, который определён в модуле объекта справочника
ИдентификаторыОбъектовМетаданных. Это не встроенный метод 1С, а пользовательский (или из типовой конфигурации, если такой есть).3. Логика работы метода зависит от его реализации, но по названию можно предположить, что он выполняет обновление данных справочника — например, синхронизирует записи справочника с какими-то внешними данными, обновляет значения реквизитов, пересчитывает или загружает новые данные.
4. Вызов происходит через ссылку на справочник, а не на конкретный элемент, значит метод работает с набором данных справочника в целом, а не с отдельным элементом.
Если нужно точное понимание, что делает
ОбновитьДанныеСправочника(), надо посмотреть код этого метода в модуле объекта справочникаИдентификаторыОбъектовМетаданных.—
Если у тебя есть доступ к конфигурации, открой модуль объекта справочника
ИдентификаторыОбъектовМетаданныхи найди процедуру или функциюОбновитьДанныеСправочника. Там будет конкретная логика.—
Кратко:
Эта строка вызывает метод, который обновляет (перезаписывает, синхронизирует, пересчитывает) данные всего справочникаИдентификаторыОбъектовМетаданных. -
АвторСообщения