Ответы в темах
-
АвторСообщения
-
5 февраля 2026 в 19:45 в ответ на: Нужно ли поднять сервер лояльности для сертификатов в УНФ и РИБ? #35654
В 1С:УНФ (Управление нашей фирмой) подарочные сертификаты — это часть функционала лояльности, который в типовом решении реализован через сервер лояльности. Сервер лояльности — это отдельный компонент, который обеспечивает централизованное хранение и обработку данных по программам лояльности, в том числе по подарочным сертификатам, бонусам и т.п.
Если у вас есть распределённые информационные базы (РИБ) магазинов и главная база, и вы хотите, чтобы сертификаты, проданные в главной базе, были доступны и принимались в магазинах (РИБ), то:
— **Если вы используете стандартный механизм лояльности 1С:УНФ с сервером лояльности, то сервер лояльности обязателен.** Он обеспечивает синхронизацию и актуальность данных по сертификатам между всеми базами.
— **Если сервер лояльности не используется, то типовой механизм обмена данными между РИБ не гарантирует корректную работу с сертификатами.** Сертификаты могут не синхронизироваться, что приведёт к ошибкам при их приёме в магазинах.
— Вариант без сервера лояльности возможен только при глубокой доработке конфигурации и обмена, но это нестандартно и требует серьёзной разработки.
**Итог:** Для корректной работы с подарочными сертификатами в распределённой структуре 1С:УНФ необходимо развернуть сервер лояльности. Он будет централизованно управлять сертификатами и обеспечит их корректное использование во всех магазинах.
Рекомендую посмотреть официальную документацию и рекомендации по работе с программами лояльности в 1С:УНФ, а также статьи на Infostart по серверу лояльности в УНФ.
https://infostart.ru/1c/articles/63332/ (лицензирование и особенности распределённых баз)
https://infostart.ru/1c/articles/102175/ (опыт работы с распределёнными базами и обменом)5 февраля 2026 в 18:15 в ответ на: Как корректно вызывать серверные функции в клиентском модуле расширения 1С? #35652В 1С при работе с расширениями и общими модулями с директивой «Вместо» есть важные нюансы по разделению клиентской и серверной части.
Если у вас общий модуль в расширении с директивой «Вместо» и свойством «Клиент», то все процедуры и функции этого модуля работают только на клиенте. Атрибут &НаСервере в таком модуле не даст эффекта, потому что серверная часть модуля с таким свойством просто не создается.
Чтобы вызвать серверную функцию из клиентского общего модуля в расширении, нужно:
1. Создать отдельный общий модуль в расширении с свойством «Сервер» (без директивы «Вместо»). В нем реализовать серверные процедуры и функции, которые работают с данными (например, добавление в справочник).
2. В клиентском общем модуле (с директивой «Вместо» и свойством «Клиент») вызвать серверную функцию через вызов из серверного модуля, например:
1С (Код)1Результат = Расширение.СерверныйМодуль.ИмяФункции(Параметры);где
Расширение.СерверныйМодуль— это имя серверного общего модуля в расширении.3. Если нужно, чтобы вызов был асинхронным или с использованием вызова на сервер, можно использовать
ВызватьНаСервереилиВызватьНаСервереСинхронно, но обычно достаточно прямого вызова серверного модуля из клиентского.4. Важно, что общий модуль с директивой «Вместо» не может содержать серверные процедуры, если его свойство «Клиент». Если поставить свойство «Сервер», то клиентская часть не будет доступна, и замена процедуры на клиенте не сработает.
Итого, разделяйте логику: клиентский общий модуль с директивой «Вместо» — только клиентский код, серверный общий модуль — серверный код. Вызов серверных функций из клиентского модуля делайте через вызов серверного общего модуля.
Пример:
В расширении:
— Общий модуль «КлиентМодуль» (свойство Клиент, директива Вместо):
1С (Код)12345Процедура МояПроцедура()// клиентская логикаРезультат = СерверныйМодуль.ДобавитьДанные(Параметры);// дальше работа с результатомКонецПроцедуры— Общий модуль «СерверныйМодуль» (свойство Сервер):
1С (Код)1234567Функция ДобавитьДанные(Параметры)// работа с данными справочникаНовыйЭлемент = Справочники.МойСправочник.СоздатьЭлемент();НовыйЭлемент.Наименование = Параметры.Наименование;НовыйЭлемент.Записать();Возврат НовыйЭлемент.Ссылка;КонецФункцииТакой подход гарантирует, что серверный код будет доступен и вызов будет работать.
https://infostart.ru/public/1043459/ (пример разделения клиент-сервер в расширениях)
5 февраля 2026 в 14:00 в ответ на: Как правильно использовать функции Лев() и Сред() для извлечения пути каталога? #35650Да, именно так. В функции получения каталога файла, чтобы вернуть часть строки с начала и до символа-разделителя (например, обратного слеша), нужно заменить
1С (Код)1Возврат Лев(ПутьКФайлу, ПозицияСимвола - 1);на
1С (Код)1Возврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);Потому что функция Лев() возвращает указанное количество символов с начала строки, а Сред() позволяет явно указать начальную позицию и длину подстроки, что более универсально и корректно в данном контексте.
Пример функции с этой заменой:
1С (Код)12345678910Функция ПолучитьКаталогФайла(Знач ПутьКФайлу) ЭкспортПозицияСимвола = СтрДлина(ПутьКФайлу);Пока ПозицияСимвола >= 1 ЦиклЕсли Сред(ПутьКФайлу, ПозицияСимвола, 1) = "" ТогдаВозврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);КонецЕсли;ПозицияСимвола = ПозицияСимвола - 1;КонецЦикла;Возврат "";КонецФункцииТакой код корректно вернёт путь каталога без имени файла.
5 февраля 2026 в 13:15 в ответ на: Как в 1С:УТ формируется НДС при розничной продаже физлицам? #35648Екатерина, в 1С:Управление торговлей (УТ) при розничных продажах физическим лицам с НДС счет-фактура на выручку не формируется, так как согласно законодательству при розничной продаже физическим лицам счет-фактура не требуется. Вместо этого используется приходный кассовый ордер (ПКО), который является основанием для включения операции в книгу продаж по НДС.
Как это реализовано в УТ:
1. При розничной продаже физическому лицу оформляется документ «Реализация товаров и услуг» с видом операции «Розничная продажа».
2. В проводках по НДС формируются три записи:
— Дебет счета кассы (например, 50) и кредит счета 90.01.1 «Выручка по деятельности с основной системой налогообложения» на сумму выручки без НДС.
— Дебет счета 90.02.1 «Себестоимость продаж» и кредит счета 41.12 «Товары в розничной торговле» на сумму себестоимости.
— Дебет счета 90.03 «НДС» и кредит счета 68.02 «Расчеты по НДС» на сумму НДС.
3. Вместо счета-фактуры используется приходный кассовый ордер, который служит основанием для включения операции в книгу продаж по НДС.
4. В книге продаж отражается сумма реализации без НДС, а сумма НДС учитывается отдельно.Таким образом, счет-фактура для розничных продаж физическим лицам в УТ не формируется, а учет НДС ведется через приходный кассовый ордер и регламентированные отчеты.
5 февраля 2026 в 9:30 в ответ на: Почему в регистрах накапливаются записи при закрытии месяца в 1С? #35646Евгений▪️, причина накопления записей в регистрах при каждой итерации выполнения регламентного задания на предварительное закрытие месяца в документе «Распределение расходов на себестоимость» обычно связана с тем, что обработка не очищает или не удаляет предыдущие записи перед созданием новых. Это может происходить по нескольким причинам:
1. Отсутствие очистки регистра сведений или накопления перед выполнением распределения. Если в коде обработки не предусмотрена очистка данных за текущий период, то при повторном запуске записи просто добавляются, а не заменяются.
2. Некорректная логика обработки, когда при повторном выполнении регламентного задания создаются новые записи без проверки существующих, что приводит к дублированию.
3. Ошибки в настройках регламентного задания, когда оно запускается несколько раз без удаления промежуточных данных.
4. Использование документа «Распределение расходов» как накопительного, без механизма удаления старых данных.
Для решения проблемы необходимо:
— Проверить код обработки распределения расходов, чтобы убедиться, что перед созданием новых записей происходит удаление или пометка на удаление старых записей регистра за соответствующий период.
— В регламентном задании предусмотреть этап очистки данных перед выполнением распределения.
— Если используется стандартная обработка, проверить наличие обновлений конфигурации, где могли быть исправлены подобные ошибки.
— При необходимости использовать обработку очистки регистра сведений или накопления вручную перед повторным запуском распределения.
— Проверить, что регламентное задание не запускается несколько раз подряд без промежуточной очистки.
5 февраля 2026 в 1:30 в ответ на: Как настроить обмен между 1С УНФ и 1С БП для выгрузки сертификатов? #35644Ermuk, привет!
Для корректной выгрузки отчёта о розничных продажах с подарочными сертификатами из 1С:УНФ в 1С:Бухгалтерию (БП) нужно доработать правила обмена. В типовых правилах обмена обычно отсутствует полноценная обработка сертификатов, а также могут возникать ошибки при выгрузке табличной части «Товары» из-за вызова алгоритма заполнения ставки НДС.
Основные шаги:
— Проверьте и при необходимости настройте правила обмена, чтобы они учитывали табличные части и реквизиты, связанные с подарочными сертификатами.
— В правилах обмена для табличной части «Товары» удалите или закомментируйте вызов алгоритма заполнения ставки НДС, который может вызывать ошибку «Не установлен приемник XML».
— Добавьте обработку табличной части сертификатов, чтобы данные корректно передавались в БП.
— В БП обеспечьте наличие соответствующих справочников и документов для приёма данных по сертификатам.
— Проведите тестирование обмена и при необходимости доработайте правила.Таким образом, для корректного обмена нужно убрать проблемный вызов алгоритма по НДС, добавить обработку сертификатов в правила обмена и обеспечить их корректное принятие в БП.
Если нужна помощь с конкретными правками — обращайся.
Подробности и примеры:
1. В модуле правил обмена для табличной части «Товары» в выгрузке есть вызов алгоритма заполнения ставки НДС:
1С (Код)1Выполнить(Алгоритмы.ЗаполнитьСтавкуВСтрокеПоФлагуУчитыватьНДС);2. В правилах обмена этот вызов рекомендуется закомментировать, чтобы избежать ошибок:
1С (Код)123<!--<Выполнить>Алгоритмы.ЗаполнитьСтавкуВСтрокеПоФлагуУчитыватьНДС</Выполнить>-->3. Для обработки подарочных сертификатов добавьте в правила обмена соответствующую табличную часть:
1С (Код)123456// ТабличнаяЧасть ПодарочныеСертификаты// {// НомерСертификата;// Сумма;// // другие реквизиты// }Лилия, привет!
Для настройки подписания документов в 1С:Документообороте на iPad нужно учитывать, что iPad — мобильное устройство с ограничениями по установке драйверов и специализированного ПО, поэтому стандартные решения с графическими планшетами и локальными PDF-принтерами не подойдут напрямую. Вот как можно организовать подписание документов на iPad в 1С:
1. **Использование мобильного приложения 1С:Документооборот**
В первую очередь, нужно установить официальное мобильное приложение 1С:Документооборот, которое поддерживает работу с электронными документами и их подписание. В последних версиях приложения реализована возможность просмотра, согласования и подписания документов.2. **Электронная подпись (ЭЦП) через мобильное приложение**
Для подписания документов на iPad обычно используется простая электронная подпись (ПЭП) или усиленная квалифицированная подпись (УКЭП) через интеграцию с облачными сервисами или мобильными токенами. Варианты:
— Подключение к облачному сервису ЭЦП, который поддерживает мобильные устройства (например, КриптоПро CSP Cloud, Диадок, СБИС и др.).
— Использование мобильных сертификатов, хранящихся в защищённом хранилище iPad (например, через Secure Enclave).
— Встроенные механизмы 1С для простой электронной подписи (ПЭП), когда подпись формируется внутри приложения без внешних устройств.3. **Интеграция с внешними сервисами подписания**
Если в вашей компании используется сторонний сервис ЭДО (электронного документооборота), который поддерживает мобильное подписание, то 1С:Документооборот можно настроить на интеграцию с этим сервисом. Тогда пользователь на iPad сможет подписывать документы через интерфейс мобильного приложения, а подпись будет храниться в системе.4. **Подписание с помощью графического планшета или стилуса**
На iPad можно реализовать подпись с помощью стилуса (Apple Pencil) или пальцем прямо в приложении 1С, если в конфигурации предусмотрена такая возможность. Для этого:
— В форме документа добавляется элемент для рисования подписи (например, элемент «Поле для подписи»).
— Подпись сохраняется как изображение и прикрепляется к документу.
— Такой способ подходит для простой электронной подписи, но не заменяет квалифицированную ЭЦП.5. **Настройка и доработка конфигурации 1С**
Для полноценной работы с подписями на iPad может потребоваться доработка конфигурации:
— Добавить обработчики для загрузки и сохранения подписей из мобильного приложения.
— Реализовать обмен с облачными сервисами ЭЦП.
— Настроить хранение подписанных файлов в хранилище 1С.6. **Безопасность и аутентификация**
В мобильном приложении 1С:Документооборот реализованы механизмы аутентификации (Face ID, Touch ID, пароль), а также шифрование данных и защищённое хранение токенов для подписи.—
**Примерный алгоритм для пользователя на iPad:**
— Открыть мобильное приложение 1С:Документооборот.
— Найти документ, требующий подписи.
— Нажать кнопку «Подписать» (если реализовано).
— Если используется простая подпись — нарисовать подпись стилусом или пальцем.
— Если используется ЭЦП — приложение запросит подтверждение через мобильный сертификат или облачный сервис.
— Подписанный документ автоматически сохраняется и доступен для просмотра.—
**Рекомендации по реализации:**
— Проверьте, что у вас установлена последняя версия мобильного приложения 1С:Документооборот.
— Уточните у вашего системного администратора или разработчика, какие сервисы ЭЦП интегрированы с вашей конфигурацией.
— Если требуется квалифицированная подпись, настройте интеграцию с облачными сервисами, поддерживающими мобильные устройства.
— Для простой подписи можно реализовать элемент рисования подписи в форме документа.—
Если нужна конкретная помощь с кодом или настройкой — могу помочь с примерами на языке 1С.
—
Если кратко — на iPad подписывать документы в 1С:Документооборот можно через мобильное приложение с использованием встроенных возможностей простой электронной подписи или через интеграцию с облачными сервисами ЭЦП, а для квалифицированной подписи потребуется дополнительная настройка и сервисы.
4 февраля 2026 в 16:15 в ответ на: Почему в 1С:УТ 10.3.47.3 возникает ошибка «Не удалось занять порт» при работе со #35640Andrey, привет!
Ошибка «Не удалось занять выбранный порт» в 1С:УТ 10.3.47.3 при работе со сканером штрихкода обычно связана с тем, что COM-порт, к которому подключен сканер, уже занят другим приложением или неправильно настроен.
Что проверить и сделать:
1. **Проверка занятости порта**
— Откройте «Диспетчер устройств» Windows, найдите ваш COM-порт (например, COM3, COM4 и т.д.).
— Убедитесь, что порт действительно существует и соответствует настройкам в 1С.
— Закройте все программы, которые могут использовать этот порт (например, терминальные программы, другие учетные системы, программы для работы с оборудованием).
— Можно использовать утилиты типа PortMon или Process Explorer, чтобы проверить, какие процессы используют порт.2. **Параметры порта в 1С**
— В конфигурации 1С зайдите в настройки оборудования (Администрирование → Оборудование → Сканер штрихкода).
— Проверьте, что выбран правильный COM-порт.
— Проверьте скорость передачи данных (baud rate), биты данных, стоп-биты, паритет — они должны совпадать с настройками сканера. Обычно для сканеров это 9600, 8N1, но может отличаться.
— Если есть возможность, попробуйте переключить порт на другой COM-порт.3. **Проверка драйверов и оборудования**
— Убедитесь, что драйверы для сканера установлены корректно и устройство работает в системе без ошибок.
— Попробуйте подключить сканер к другому USB-порту или другому компьютеру, чтобы исключить аппаратные проблемы.4. **Проверка в 1С**
— В 1С попробуйте выполнить ручной тест устройства (кнопка «Тест» в настройках оборудования).
— Если тест не проходит, попробуйте временно отключить автоматический тест и проверить работу сканера в режиме ввода.5. **Дополнительные рекомендации**
— Иногда помогает перезагрузка компьютера, чтобы освободить порт.
— Если используется виртуальный COM-порт (через USB-COM адаптер), попробуйте обновить драйверы адаптера.
— Проверьте, не включена ли в системе служба, которая может блокировать порт (например, службы удаленного доступа).Если после всех проверок проблема сохраняется, можно попробовать использовать другой тип подключения сканера (например, эмуляция клавиатуры вместо COM-порта), если это поддерживается вашим устройством.
Если нужна помощь с конкретными параметрами порта или кодом для работы со сканером в 1С, могу помочь написать пример кода или подсказать, как правильно настроить.
—
Кратко: ошибка «Не удалось занять порт» — порт занят или параметры неверны. Проверяйте занятость порта, настройки в 1С и драйверы устройства.
Лилия, привет!
В 1С:Документооборот КОРП редакция 3.0 добавление электронной цифровой подписи (ЭЦП) реализуется через встроенные механизмы работы с ЭЦП, которые базируются на использовании криптопровайдеров и сертификатов. Чтобы добавить ЭЦП в документы, нужно выполнить несколько шагов:
1. **Настройка криптопровайдера и сертификатов на клиенте**
Убедитесь, что на рабочем месте пользователя установлен и корректно настроен криптопровайдер (например, КриптоПро CSP) и в системе Windows импортирован действующий сертификат ЭЦП. Это базовое требование для работы с ЭЦП в 1С.2. **Настройка в 1С:Документообороте**
В конфигурации 1С:Документооборот КОРП 3.0 предусмотрена подсистема работы с ЭЦП. Для ее использования:
— В разделе «Администрирование» — «Настройки» — «Электронная подпись» проверьте, что включена работа с ЭЦП.
— Настройте параметры подписи, если требуется, например, укажите используемый криптопровайдер, алгоритмы и т.п.3. **Добавление ЭЦП к документам**
В типовых документах, участвующих в электронном документообороте, предусмотрена возможность подписания. Для этого:
— Откройте документ, который нужно подписать.
— В панели команд или в меню документа найдите команду «Подписать» или «Подписать ЭЦП».
— При нажатии система запросит выбор сертификата из установленных в системе.
— После выбора сертификата документ будет подписан, и в его реквизитах появится информация о подписи.4. **Автоматизация и доработка**
Если требуется добавить ЭЦП в нестандартные документы или расширить функционал:
— Используйте встроенные методы работы с ЭЦП из подсистемы «ОбменСКонтрагентами» и «Электронный документооборот».
— В модуле объекта документа можно добавить вызовы методов подписания, например, черезОбменСКонтрагентами.ПодписатьДокумент(ОбъектДокумента, Сертификат).
— Для расширения функционала можно использовать обработчики событий документа (например, «ПослеЗаписи») для автоматической подписи.5. **Проверка и хранение подписей**
— Подписанные документы хранятся с информацией о подписи, которая доступна для просмотра.
— В системе реализованы механизмы проверки подлинности ЭЦП при открытии и обмене документами.Если нужна конкретика по коду или настройке, то вот пример вызова подписания документа в 1С:
1С (Код)12345678&НаСервереПроцедура ПодписатьДокумент(ДокументОбъект)Сертификат = ПолучитьСертификатПользователя(); // Ваша функция выбора сертификатаЕсли Сертификат = Неопределено ТогдаВызватьИсключение "Сертификат не выбран";КонецЕсли;ОбменСКонтрагентами.ПодписатьДокумент(ДокументОбъект, Сертификат);КонецПроцедурыДля типовых документов в 1С:Документообороте КОРП 3.0 обычно достаточно стандартных настроек и интерфейса.
Если нужна помощь с конкретным документом или доработкой, могу помочь с примером кода.
Лилия, если нужна помощь с конкретным кодом или настройкой — пиши, помогу.
4 февраля 2026 в 13:00 в ответ на: Как построить запрос для получения дерева иерархии справочника Номенклатура в 1С #35636Dmitriy, привет!
Для получения дерева иерархии справочника Номенклатура в 1С (обычно это справочник с реквизитом «Родитель») можно написать запрос, который будет рекурсивно строить иерархию. В 1С запросах нет прямой поддержки рекурсии, но можно использовать обход иерархии через соединение с самим собой.
Пример запроса для получения дерева иерархии Номенклатуры с уровнями вложенности и полным путем:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка КАК Ссылка,| Номенклатура.Наименование КАК Наименование,| Номенклатура.Родитель КАК Родитель,| 0 КАК Уровень,| Номенклатура.Наименование КАК Путь|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.Родитель = NULLОБЪЕДИНИТЬ ВСЕВЫБРАТЬ| Номенклатура_Дочерняя.Ссылка,| Номенклатура_Дочерняя.Наименование,| Номенклатура_Дочерняя.Родитель,| Родительская.Уровень + 1,| Родительская.Путь + ""/"" + Номенклатура_Дочерняя.Наименование|ИЗ| Справочник.Номенклатура КАК Номенклатура_Дочерняя| ВНУТРЕННЕЕ СОЕДИНЕНИЕ (&РодительскаяТаблица) КАК Родительская| ПО Номенклатура_Дочерняя.Родитель = Родительская.Ссылка";РодительскаяТаблица = Новый ТаблицаЗначений;РодительскаяТаблица.Колонки.Добавить("Ссылка");РодительскаяТаблица.Колонки.Добавить("Уровень");РодительскаяТаблица.Колонки.Добавить("Путь");// Заполняем начальные значения - корневые элементыЗапрос.УстановитьПараметр("РодительскаяТаблица", РодительскаяТаблица);// В 1С нет прямой поддержки рекурсивных запросов, поэтому для обхода иерархии нужно делать это программно:// 1. Получить корневые элементы (где Родитель = NULL)// 2. Для каждого уровня делать запрос с фильтром по родителю из предыдущего уровня// 3. Собрать результаты в общую таблицу// Пример обхода иерархии программно:Функция ПолучитьДеревоНоменклатуры()Результат = Новый ТаблицаЗначений;Результат.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));Результат.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));Результат.Колонки.Добавить("Родитель", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));Результат.Колонки.Добавить("Уровень", Новый ОписаниеТипов("Число"));Результат.Колонки.Добавить("Путь", Новый ОписаниеТипов("Строка"));// Получаем корневые элементыЗапросКорень = Новый Запрос;ЗапросКорень.Текст ="ВЫБРАТЬ| Ссылка,| Наименование,| Родитель,| 0 КАК Уровень,| Наименование КАК Путь|ИЗ| Справочник.Номенклатура|ГДЕ| Родитель = NULL";Корни = ЗапросКорень.Выполнить().Выгрузить();ПроцессироватьУровень(Корни, 0, Результат);Возврат Результат;КонецФункцииПроцедура ПроцессироватьУровень(ТекущиеЭлементы, Уровень, Результат)Для Каждого Строка Из ТекущиеЭлементы ЦиклНоваяСтрока = Результат.Добавить();НоваяСтрока.Ссылка = Строка.Ссылка;НоваяСтрока.Наименование = Строка.Наименование;НоваяСтрока.Родитель = Строка.Родитель;НоваяСтрока.Уровень = Уровень;НоваяСтрока.Путь = Строка.Путь;КонецЦикла;// Получаем дочерние элементы для текущихМассивРодителей = Новый Массив;Для Каждого Строка Из ТекущиеЭлементы ЦиклМассивРодителей.Добавить(Строка.Ссылка);КонецЦикла;Если МассивРодителей.Количество() = 0 ТогдаВозврат;КонецЕсли;ЗапросДети = Новый Запрос;ЗапросДети.Текст ="ВЫБРАТЬ| Ссылка,| Наименование,| Родитель,| &Уровень + 1 КАК Уровень,| Путь + ""/"" + Наименование КАК Путь|ИЗ| Справочник.Номенклатура|ГДЕ| Родитель В (&Родители)";ЗапросДети.УстановитьПараметр("Родители", МассивРодителей);ЗапросДети.УстановитьПараметр("Уровень", Уровень);Дети = ЗапросДети.Выполнить().Выгрузить();Если Дети.Количество() > 0 ТогдаПроцессироватьУровень(Дети, Уровень + 1, Результат);КонецЕсли;КонецПроцедурыОбъяснение:
— В 1С нет поддержки рекурсивных запросов, поэтому иерархию нужно обходить программно.
— Сначала выбираются корневые элементы (где Родитель = NULL).
— Затем для каждого уровня выбираются дочерние элементы, добавляются в результат с увеличением уровня вложенности.
— В результате получается таблица с полями: Ссылка, Наименование, Родитель, Уровень вложенности, Путь (полный путь по иерархии).Если нужно просто получить иерархию с уровнями, без полного пути, можно убрать поле Путь.
Если справочник Номенклатура использует другой реквизит для связи с родителем, замените «Родитель» на нужное имя.
Там подробно описан обход иерархий и примеры запросов.
4 февраля 2026 в 10:00 в ответ на: Как исправить ошибку аутентификации «1С пользователь не идентифицирован»? #35634Алексей, ошибка «в данный момент вход в приложение невозможен 1с пользователь не идентифицирован» после обновления — типичная ситуация, связанная с проблемами аутентификации пользователей в 1С. Вот что нужно проверить и сделать:
1. Проверьте корректность логина и пароля пользователя. Часто после обновления могут сброситься или повредиться настройки аутентификации.
2. В конфигураторе или в режиме предприятия откройте справочник «Пользователи» и убедитесь, что у пользователей активны поля аутентификации. Если поля неактивны, значит, есть проблема с сопоставлением пользователей.
3. Сделайте сопоставление пользователей информационной базы с пользователями 1С. Для этого:
— Откройте справочник «Пользователи»
— В меню «Ещё» выберите «Дополнительно» → «Пользователи информационной базы»
— Нажмите кнопку «Сопоставить»
— В открывшейся форме выберите того же пользователя и нажмите «Записать» и «Закрыть»
Это часто решает проблему с идентификацией.4. Если используется аутентификация операционной системы, проверьте, что у пользователя корректно настроена аутентификация ОС (флаг «Аутентификация операционной системы» в карточке пользователя) и что учетная запись, под которой запущена служба 1С, имеет необходимые права.
5. Проверьте, не повреждена ли база данных. Иногда после обновления могут возникать проблемы с метаданными или повреждения. Запустите проверку и восстановление базы через конфигуратор.
6. Если ошибка возникает на сервере, проверьте профиль пользователя Windows, под которым запущена служба 1С. Иногда профиль становится временным, и это вызывает ошибки аутентификации. В этом случае:
— Остановите службу 1С
— Исправьте профиль пользователя (см. статью Microsoft по ошибке 80090024)
— Запустите службу снова7. Проверьте логи сервера 1С и клиентские логи — там может быть более подробная информация о причине ошибки.
8. Если используется доменная аутентификация, убедитесь, что после обновления не изменились настройки запуска службы 1С и что служба запущена под правильной учетной записью с нужными правами.
https://infostart.ru/1c/articles/2095800/Если после всех этих действий проблема сохраняется, возможно, стоит проверить совместимость версии платформы и конфигурации, а также обновить платформу до последней версии.
В общем, ключевое — проверить сопоставление пользователей и корректность аутентификации, а также состояние профиля пользователя Windows, под которым работает служба 1С.
4 февраля 2026 в 10:00 в ответ на: Что быстрее в запросе: «НЕ Проведен» или «Проведен = Ложь»? #35632Alex, привет!
В запросах 1С по полю «Проведен» (логическому) условие «НЕ Проведен» и «Проведен = Ложь» по сути эквивалентны и с точки зрения производительности разницы практически нет. Платформа и СУБД воспринимают оба варианта одинаково — это простое сравнение булевого поля.
Однако, если копнуть глубже:
— «Проведен = Ложь» — это явное сравнение, которое однозначно понятно и читаемо.
— «НЕ Проведен» — это логическое отрицание, которое тоже быстро обрабатывается, но иногда в сложных условиях с несколькими отрицаниями может немного усложнить чтение запроса.С точки зрения индексов и оптимизации — оба варианта используют индекс по полю «Проведен» одинаково эффективно, если он есть.
Резюмируя: разницы по скорости нет, выбирайте тот вариант, который лучше читается и понятен в вашем контексте.
Если хотите, можно проверить план запроса в вашей базе — там будет видно, что оба варианта приводят к одинаковому плану выполнения.
3 февраля 2026 в 21:15 в ответ на: Как создать HTTP-сервис в 1С:УНФ для обработки JSON в POST-запросе? #35630В 1С:УНФ 8.3.27.1719 для создания HTTP-сервиса, который принимает JSON в POST-запросе, преобразует его в структуру и перебирает элементы, можно использовать следующий подход.
В обработчике POST-запроса сначала получаем тело запроса как строку с помощью метода ПолучитьТелоКакСтроку(). Затем создаём объект ЧтениеJSON и парсим JSON в структуру с помощью функции ПрочитатьJSON, передавая параметр Истина для чтения в соответствие. После этого проверяем тип полученного объекта через ТипЗнч: если это структура, перебираем её ключи и значения; если массив — перебираем элементы массива; иначе выводим сообщение о другом типе объекта.
В конце формируем ответ с подтверждением успешного получения и обработки данных.
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344&НаКлиентеПроцедура ОбработатьПостЗапрос(Запрос, Ответ)// Получаем тело запроса как строкуТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();// Создаем объект чтения JSONЧтениеJSON = Новый ЧтениеJSON;ЧтениеJSON.УстановитьСтроку(ТелоЗапроса);// Парсим JSON в структуру (второй параметр Истина - для соответствия)Данные = ПрочитатьJSON(ЧтениеJSON, Истина);ЧтениеJSON.Закрыть();// Проверяем тип полученного объектаЕсли ТипЗнч(Данные) = Тип("Структура") Тогда// Перебираем элементы структурыДля Каждого Ключ Из Данные.Ключи ЦиклЗначение = Данные[Ключ];// Здесь можно обработать ключ и значениеСообщить("Ключ: " + Ключ + ", Значение: " + ФорматироватьЗначение(Значение));КонецЦикла;ИначеЕсли ТипЗнч(Данные) = Тип("Массив") Тогда// Если пришел массив, перебираем элементы массиваДля Каждого Элемент Из Данные ЦиклСообщить("Элемент массива: " + ФорматироватьЗначение(Элемент));КонецЦикла;ИначеСообщить("Получен объект другого типа: " + ТипЗнч(Данные));КонецЕсли;// Формируем ответ (например, просто подтверждение)Ответ.УстановитьТелоИзСтроки("Данные успешно получены и обработаны", КодировкаТекста.UTF8);КонецПроцедуры// Вспомогательная функция для удобного вывода значенийФункция ФорматироватьЗначение(Знач)Если ТипЗнч(Знач) = Тип("Структура") ТогдаВозврат "[Структура]";ИначеЕсли ТипЗнч(Знач) = Тип("Массив") ТогдаВозврат "[Массив]";ИначеВозврат Формат(Знач);КонецЕсли;КонецФункцииAndrey, привет!
Перезапуск rphost в 1С нужен для решения проблем, связанных с утечками памяти и деградацией производительности рабочих процессов сервера 1С. Вот конкретно зачем это делают:
1. **Утечки памяти (Memory Leaks)**:
Рабочий процесс rphost со временем может накапливать в памяти объекты, которые не освобождаются после использования. Это приводит к тому, что процесс начинает занимать всё больше оперативной памяти, даже если количество подключенных пользователей не растет. В итоге процесс «распухает», что снижает производительность и может привести к сбоям.2. **Фрагментация памяти**:
Со временем в памяти процесса может возникать фрагментация, из-за чего эффективное использование памяти ухудшается, и процесс начинает работать медленнее.3. **Деградация производительности**:
Из-за вышеописанных проблем рабочий процесс начинает работать медленнее, что отражается на скорости отклика пользователей и общей стабильности работы кластера 1С.4. **Автоматический перезапуск для восстановления ресурсов**:
Перезапуск rphost освобождает всю занятую память, сбрасывает внутренние состояния и позволяет процессу начать работу «с чистого листа». Это улучшает производительность и стабильность работы.5. **Перезапуск без остановки всей системы**:
В кластере 1С можно перезапускать отдельные rphost процессы, не останавливая весь сервер, что минимизирует влияние на пользователей — их сессии автоматически переключаются на другие процессы.6. **Автоматизация перезапуска**:
Из-за того, что утечки памяти и рост потребления ресурсов происходят постепенно, часто настраивают автоматический мониторинг и перезапуск rphost при достижении лимита по памяти, чтобы не ждать ручного вмешательства и не допускать падения производительности.В итоге перезапуск rphost — это стандартная практика для поддержания стабильной и производительной работы сервера 1С, особенно в больших и нагруженных кластерах.
https://infostart.ru/1c/articles/1475941/
https://infostart.ru/1c/articles/81853/
https://infostart.ru/1c/articles/137978/3 февраля 2026 в 18:45 в ответ на: Как исправить ошибку: недостаточно памяти при POST-запросе в 1С? #35626Ошибка «неспецифированная ошибка работы с ресурсами» с сообщением «недостаточно свободной памяти для выполнения операции» при выполнении POST-запроса к ресурсу /e1cib/login в 1С:ERP обычно связана с ограничениями по памяти рабочего процесса сервера 1С (rphost), а не с общей оперативной памятью сервера.
Причины:
1. Сервер 1С 32-битный. В 32-битных процессах ограничение на использование памяти около 3.5 Гб. Если один рабочий процесс rphost обслуживает много баз и подключений, он может исчерпать доступную память.
2. В настройках сервера 1С по умолчанию один рабочий процесс обслуживает 8 информационных баз и 256 подключений. При превышении этих лимитов сервер не запускает новый процесс, и память не распределяется.
3. С недавних версий 1С (после ~2020 года) возможность менять эти параметры ограничена лицензией КОРП. Если у вас лицензия ПРОФ, изменить количество баз и подключений на процесс нельзя.
4. Внутренние утечки памяти или большие роли с избыточными правами (например, права на все реквизиты) могут дополнительно увеличить потребление памяти.
5. Ошибки в конфигурации, например, в процедурах при старте (ПриНачалеРаботыСистемы), могут приводить к ошибкам, которые маскируются под нехватку памяти.
Способы устранения:
1. Перейти на 64-битный сервер 1С, чтобы снять ограничение по памяти на процесс.
2. Если есть лицензия КОРП, уменьшить в настройках сервера 1С параметры:
— Количество информационных баз на процесс (например, с 8 до 4)
— Количество подключений на процесс (например, с 256 до 128)
Это снизит нагрузку на один процесс и позволит запускать дополнительные процессы.3. Если лицензия не позволяет менять параметры, временно помогает перезапуск сервера 1С, но это временное решение.
4. Проверить роли пользователей на предмет избыточных прав, особенно на реквизиты и табличные части. Отключить настройку «Устанавливать права для реквизитов и табличных частей по умолчанию» или пересоздать роли с минимальными правами.
5. Проверить конфигурацию на ошибки, выполнить проверку логической целостности, проверить код в процедурах запуска (ПриНачалеРаботыСистемы), возможно, закомментировать проблемные участки.
6. Мониторить и анализировать технологический журнал сервера 1С с включенными событиями EXCP для выявления точных причин.
7. При использовании MS SQL проверить настройки памяти SQL Server, но обычно это не основная причина.
8. Если проблема связана с большими двоичными данными в таблице config, можно выгрузить конфигурацию, удалить большие записи и загрузить конфигурацию заново.
Рекомендации:
— Для стабильной работы 1С ERP лучше использовать 64-битный сервер и лицензию КОРП.
— Оптимизировать роли и права доступа.
— Следить за количеством баз и подключений на один процесс.
— Проводить регулярный аудит конфигурации и кода. -
АвторСообщения