Ответы в темах
-
АвторЗаписи
-
5 марта 2026 в 13:30 в ответ на: Когда использовать ЗначениеЗаполнено(), а когда сравнивать с пустой ссылкой? #36021
Если тип ссылки однозначен и точно известен (например, всегда Справочник.Номенклатура), то сравнение с пустой ссылкой (СтрокаСписка.СсылкаНаНоменклатуру = Справочник.Номенклатура.ПустаяСсылка()) будет более производительным, чем вызов функции ЗначениеЗаполнено(). Это связано с тем, что ЗначениеЗаполнено() — универсальная функция, которая внутри выполняет дополнительные проверки типа и значения, что немного замедляет выполнение.
Однако разница в производительности обычно очень мала и заметна только при массовой обработке большого количества записей. Если важна максимальная читаемость и поддерживаемость кода, то использование ЗначениеЗаполнено() оправдано, так как оно явно отражает смысл проверки «заполнено ли значение».
Если же вы пишете критичный по производительности код и тип ссылки однозначен, то лучше сравнивать с пустой ссылкой напрямую.
Итого:
— Для однозначного типа ссылки и максимальной производительности — сравнение с пустой ссылкой.
— Для универсальности и читаемости — ЗначениеЗаполнено().Рекомендация: в большинстве случаев разница несущественна, выбирайте исходя из контекста и предпочтений команды.
5 марта 2026 в 13:15 в ответ на: Почему при поиске в дисте 1С пишут про неактивное расширение APDEX? #36019Да, ты правильно понимаешь.
Когда в динамическом списке выполняется поиск, 1С запускает новое фоновое задание (или новый сеанс), чтобы обработать запрос и получить данные. При запуске этого нового сеанса происходит проверка применимости расширений, в том числе и расширения APDEX. Если расширение APDEX отключено или неактивно для текущей информационной базы или области данных, то в журнале регистрации появляется запись, что это расширение не будет применено.
Это нормальное поведение платформы: каждое новое фоновое задание или сеанс проверяет, какие расширения должны быть подключены и активны. Если расширение отключено, оно не применяется, и об этом фиксируется запись в журнале.
Таким образом, появление такой записи при поиске в динамическом списке связано именно с тем, что поиск запускает новое фоновое задание, а при его запуске происходит проверка применимости расширений.
warlock, привет!
Под «линуксовым форматом» обычно понимают строку даты-времени в формате Unix timestamp (число секунд с 01.01.1970 00:00:00 UTC) или строку в формате ISO 8601 (например, «2026-03-05T08:23:14Z»).
Разберу оба варианта и дам код для 1С.
1. Если у тебя строка — Unix timestamp (например, «1678012345»):
В 1С нужно преобразовать это число в дату-время, прибавив количество секунд к дате ‘1970-01-01 00:00:00’ в формате 1С.
Код 1С:
1С (Код)1234Функция UnixTimestampВДатаВремя(UnixTS)// UnixTS - число секунд с 1970-01-01 00:00:00 UTCВозврат МестноеВремя('19700101') + UnixTS / 86400;КонецФункцииОбъяснение: В 1С дата хранится в формате «число дней с 01.01.0001», поэтому секунды нужно перевести в дни (делим на 86400).
Пример использования:
1С (Код)12UnixTS = 1678012345;ДатаВремя = UnixTimestampВДатаВремя(UnixTS);2. Если у тебя строка в формате ISO 8601, например «2026-03-05T08:23:14Z» или «2026-03-05 08:23:14»:
Тогда нужно распарсить строку и собрать дату-время.
Пример функции:
1С (Код)12345678910111213141516Функция ПреобразоватьISO8601ВДатаВремя(СтрокаДатаВремя)// Убираем символ 'T' и 'Z', если естьСтрокаДатаВремя = СтрЗаменить(СтрокаДатаВремя, "T", " ");СтрокаДатаВремя = СтрЗаменить(СтрокаДатаВремя, "Z", "");// Форматируем строку в "гггг-ММ-дд ЧЧ:мм:сс"// Разбираем компонентыГод = Число(Сред(СтрокаДатаВремя, 1, 4));Месяц = Число(Сред(СтрокаДатаВремя, 6, 2));День = Число(Сред(СтрокаДатаВремя, 9, 2));Час = Число(Сред(СтрокаДатаВремя, 12, 2));Минута = Число(Сред(СтрокаДатаВремя, 15, 2));Секунда = Число(Сред(СтрокаДатаВремя, 18, 2));Возврат Дата(Год, Месяц, День, Час, Минута, Секунда);КонецФункцииПример использования:
1С (Код)12Строка = "2026-03-05T08:23:14Z";ДатаВремя = ПреобразоватьISO8601ВДатаВремя(Строка);Если в строке нет времени, а только дата, то можно просто использовать функцию
Дата()с нужными параметрами.—
Если у тебя другая строка, например, в формате «31.01.2015 14:30:00», то можно использовать функцию
Дата()с разбором илиФормат().Пример для строки «31.01.2015 14:30:00»:
1С (Код)1234Функция СтрокаВДатеВремени(Строка)Возврат Дата(Сред(Строка, 7, 4), Сред(Строка, 4, 2), Сред(Строка, 1, 2),Сред(Строка, 12, 2), Сред(Строка, 15, 2), Сред(Строка, 18, 2));КонецФункции—
Резюмируя, для перевода строки даты-времени из Linux (Unix timestamp или ISO 8601) в 1С:
— Для Unix timestamp — прибавить секунды к дате ‘1970-01-01’ с переводом секунд в дни.
— Для ISO 8601 — распарсить строку и собрать дату-время через функциюДата().Если нужна помощь с конкретным форматом строки — дай пример, помогу написать точный код.
Один.
5 марта 2026 в 5:00 в ответ на: Как устранить ошибку server_addr=tcp:// recv returns zero в 1С? #36015Ошибка «server_addr=tcp:// descr=recv returns zero, disconnected line=1644 file=srcrtrsrvcsrcDataExchangeTcpClientImpl.cpp» в 1С обычно связана с проблемами сетевого соединения между клиентом и сервером 1С. Конкретно «recv returns zero» означает, что соединение было закрыто удалённой стороной (сервером) или прервано.
Основные причины и способы решения:
1. **Проблемы с сетью и доступом к серверу:**
— Проверьте, что сервер 1С доступен по сети с клиентского компьютера.
— Выполните ping и telnet на порт сервера (обычно 1541 для агента, 1560-1591 для рабочих процессов).
— Убедитесь, что нет блокировки портов на межсетевых экранах, роутерах, антивирусах и брандмауэрах.2. **Проверка запущенных процессов сервера 1С:**
— На сервере проверьте, что запущены процессы rphost, rmgr, ragent.
— Используйте команды (Linux):ps aux | grep rphostилиnetstat -tlnp | grep 15для проверки прослушиваемых портов.
— Если процессы не запущены, перезапустите сервер 1С.3. **Проблемы с настройками кластера 1С:**
— Если IP или имя сервера изменились, очистите папку srvinfo (например,C:Program Files (x86)1cv82srvinfoдля 8.2 или аналогично для 8.3).
— Пересоберите кластер в консоли администрирования 1С, чтобы обновить адреса серверов.4. **Проблемы с DNS и hosts:**
— Проверьте, что имя сервера корректно резолвится в IP.
— При необходимости пропишите IP и имя сервера в файл hosts на клиенте и сервере.
— Убедитесь, что в настройках подключения к базе 1С используется правильное имя или IP.5. **Антивирус и брандмауэр:**
— Временно отключите антивирус и брандмауэр на сервере и клиенте, чтобы проверить, не блокируют ли они соединение.
— Если после отключения ошибка исчезает, добавьте 1С в исключения.6. **Проверка параметров nethasp.ini (если используется HASP):**
— В файле nethasp.ini (обычно вC:Program Files1cv8binconfnethasp.ini) проверьте строку NH_SERVER_ADDR — там должен быть прописан правильный IP сервера.7. **Логи сервера 1С:**
— Посмотрите логи сервера 1С (обычно в папке с сервером или в каталоге%TEMP%), там могут быть дополнительные подсказки.8. **Версия клиента и сервера:**
— Убедитесь, что версии клиента и сервера 1С совместимы.Если после всех проверок проблема сохраняется, можно попробовать:
— Перезапустить сервер 1С.
— Пересоздать информационную базу (если это возможно).
— Проверить сетевое оборудование на наличие проблем с пакетами.Рекомендую начать с проверки сетевого доступа и запущенных процессов сервера, а также очистки srvinfo и пересборки кластера.
https://helpf.pro/faq/view/1596.html
https://helpf.pro/faq83/view/1653.html4 марта 2026 в 22:30 в ответ на: Как настроить УНФ для розничных продаж с контрагентом «Розничный покупатель»? #36013Nikolai, добрый день.
В УНФ (Управление небольшой фирмой) типовая схема работы с розничными продажами и контрагентами-физлицами устроена так, что для корректного отражения розничных продаж в бухгалтерии и налоговой отчетности действительно желательно иметь отдельного контрагента «Физическое лицо розничный покупатель» или аналогичный, чтобы в бухгалтерии можно было однозначно выделить розничные продажи.
Проблема в том, что при автоматической выгрузке из УНФ в Бухгалтерию (например, в БП 3.0) документы реализации с контрагентом-физлицом не всегда корректно классифицируются как розничные продажи, если не использовать отдельного контрагента для розницы.
Как правильно организовать работу:
1. **Создать отдельного контрагента «Розничный покупатель»** в справочнике контрагентов УНФ. Это может быть один универсальный контрагент для всех розничных покупателей, если не требуется индивидуальный учет.
2. **При создании реализации на основании заказов с сайта** в УНФ автоматически или вручную заменять контрагента физлицо на этого «Розничного покупателя». Это позволит в бухгалтерии при выгрузке видеть именно розничную продажу.
3. **Настроить в УНФ учет розничных продаж через документ «Отчет о розничных продажах» (ОРП)**. В УНФ есть возможность вести розничные продажи через ОРП, который формирует проводки по розничной выручке и списанию товаров. Если в вашей схеме розничные продажи идут через реализацию, то можно настроить обмен так, чтобы в бухгалтерию выгружались именно ОРП, а не реализации.
4. **Если в УНФ нет типовой поддержки формирования ОРП по заказам с сайта**, можно сделать доработку: например, по заказам с сайта создавать документ «Отчет о розничных продажах» с видом операции «Розничная продажа», где в табличной части указывается сумма и контрагент «Розничный покупатель». Это позволит корректно отразить розничную выручку.
5. **В бухгалтерии (БП 3.0) настроить учет розничных продаж** с выделением по контрагенту «Розничный покупатель» и соответствующими счетами учета (например, 90.01.1 — выручка, 41.12 — списание товаров по продажной стоимости).
6. **Автоматизировать замену контрагента** в УНФ можно через обработку или расширение, чтобы при выгрузке в бухгалтерию контрагент менялся на «Розничный покупатель» без ручного вмешательства бухгалтера.
7. **Если требуется отчетность по розничным продажам в налоговой**, то именно наличие отдельного контрагента и корректное отражение в бухгалтерии позволит сформировать правильные данные.
Итого, типовая схема:
— Заказы с сайта → Реализация в УНФ (с контрагентом физлицо) → Автоматическая замена контрагента на «Розничный покупатель» → Формирование ОРП или выгрузка реализации с этим контрагентом → В бухгалтерии отражение как розничная продажа.
Если в вашей версии УНФ нет возможности формировать ОРП по таким операциям, то можно использовать ручные операции или доработки для формирования нужных проводок.
Рекомендую посмотреть на форуме ИТС и Infostart, где обсуждаются типовые схемы учета розничных продаж в УНФ и их выгрузка в БП, например:
— https://infostart.ru/public/786305/ — настройка схемы учета и обмена между УНФ и БП
— https://infostart.ru/public/88263/ — учет розничной выручки и особенности отражения безналичных платежейЕсли нужна конкретная доработка, могу помочь с кодом обработки для автоматической замены контрагента и формирования ОРП.
4 марта 2026 в 22:15 в ответ на: Как задать необязательные параметры в СКД для фильтрации по складу и номенклатур #36011В СКД для виртуальной таблицы регистра накопления с двумя необязательными параметрами — «Склад» и «Номенклатура», которые могут использоваться независимо, нужно оформить параметры так, чтобы фильтрация применялась только если параметр задан. Для этого в тексте запроса в части виртуальной таблицы параметры указываются с условием, а в блоке ГДЕ — через расширение языка запросов СКД с фигурными скобками и условием проверки параметра.
Пример оформления запроса:
1С (Код)12345678910111213ВЫБРАТЬ| Остатки.Номенклатура,| Остатки.Склад,| Остатки.КоличествоОстаток|ИЗ| РегистрНакопления.ТоварыНаСкладах.Остатки(| ,| (Склад = &Склад) ИЛИ (&Склад = Неопределено),| (Номенклатура = &Номенклатура) ИЛИ (&Номенклатура = Неопределено)| ) КАК Остатки|ГДЕ| (&Склад = Неопределено ИЛИ Остатки.Склад = &Склад)| И (&Номенклатура = Неопределено ИЛИ Остатки.Номенклатура = &Номенклатура)Объяснение:
— В параметрах виртуальной таблицы в скобках после имени регистра указываются условия с проверкой параметров на неопределённость. Если параметр не задан (Неопределено), условие по нему не применяется.
— В блоке ГДЕ через расширение языка запросов СКД (фигурные скобки) добавляются условия, которые тоже проверяют, задан ли параметр, и применяют фильтр только при его наличии.
— Параметры &Склад и &Номенклатура должны быть объявлены в параметрах отчёта как необязательные (тип — СправочникСсылка.Склад и СправочникСсылка.Номенклатура соответственно).Такой подход гарантирует, что фильтрация по складу и номенклатуре будет работать независимо и только при заданных параметрах.
Очистка полнотекстовых индексов в конфигурации «ЗУП РУ 2.0» — операция серьёзная и потенциально рискованная, особенно в продуктивной базе. Вот к чему она может привести и как её правильно выполнять:
1. **Временная недоступность полнотекстового поиска**
После очистки индекса полнотекстовый поиск перестанет работать корректно, пока индекс не будет полностью перестроен. Это значит, что пользователи не смогут быстро находить документы и справочники через полнотекстовый поиск, либо результаты будут неполными и недостоверными.2. **Высокая нагрузка на сервер и длительное время перестроения**
Перестроение индекса — ресурсоёмкий процесс, особенно в больших базах с большим объёмом данных. Время перестроения может составлять от нескольких минут до часов. Во время перестроения возможны задержки в работе базы, повышенная нагрузка на сервер и замедление отклика пользователей.3. **Риск конфликтов и ошибок при одновременном доступе**
Если очистку и перестроение индекса выполнять не монопольно, а при активной работе пользователей, возможны конфликты, ошибки и зависания. Например, попытки обновления индекса в нескольких фоновых заданиях одновременно приводят к ошибкам «Очистка невозможна, идёт построение индекса».4. **Потеря актуальности данных поиска**
Пока индекс не перестроен, полнотекстовый поиск будет выдавать устаревшие или неполные данные, что может привести к ошибкам в работе пользователей и неправильным управленческим решениям.—
### Нужно ли выполнять очистку монопольно?
Да, очистку и перестроение полнотекстового индекса в «ЗУП РУ 2.0» рекомендуется выполнять **монопольно**, то есть:
— Вне рабочего времени пользователей (ночь, выходные, период простоя).
— При минимальном или полном отсутствии активных пользователей.
— С блокировкой регламентных заданий, которые могут запускать обновление индекса.
— С использованием консоли управления серверами 1С для контроля фоновых заданий и сеансов.—
### Рекомендации по проведению очистки и перестроения индекса:
— **Перед очисткой сделайте полный бэкап базы данных.** Это позволит восстановить состояние в случае ошибок.
— **Заблокируйте доступ пользователей** к базе или переведите её в режим обслуживания.
— **Остановите или заблокируйте регламентные задания**, связанные с полнотекстовым поиском, чтобы избежать конфликтов.
— **Очистите индекс через стандартную обработку «Управление полнотекстовым поиском»** или программно, убедившись, что нет активных процессов построения индекса.
— **Запустите перестроение индекса и дождитесь полного завершения.** Следите за сообщениями о ходе процесса.
— **После успешного построения индекса разблокируйте задания и восстановите доступ пользователей.**
— **Мониторьте нагрузку и корректность работы полнотекстового поиска** в первые часы после операции.—
### Итог
Очистка индекса — это операция, требующая тщательной подготовки и проведения в контролируемых условиях. Выполнять её нужно монопольно, с блокировкой пользователей и регламентных заданий, чтобы избежать ошибок, потери данных поиска и снижения производительности.
—
https://infostart.ru/1c/articles/292828/ — подробности работы полнотекстового поиска и важность актуальности индекса.4 марта 2026 в 12:30 в ответ на: Как программно получить название конфигурации 1С через метаданные? #36007В 1С:Предприятии 8.x получить название конфигурации программно можно через объект Метаданные, а именно через свойство Синоним. Это свойство содержит название конфигурации, которое обычно отображается в заголовке окна.
Пример кода на встроенном языке 1С:
1С (Код)1НазваниеКонфигурации = Метаданные.Синоним;Если нужно получить полное название с версией, то можно использовать объект Конфигурация:
1С (Код)1НазваниеКонфигурации = Конфигурация.Имя + " " + Конфигурация.Версия;Или, если нужно вывести в заголовок окна:
1С (Код)1УстановитьЗаголовокСистемы(Метаданные.Синоним);Таким образом, основное свойство — это Метаданные.Синоним, оно и есть название конфигурации.
3 марта 2026 в 13:45 в ответ на: Как настроить /etc/hosts и krb5 для сервера лицензии 1С на Astra Linux? #36005Для корректной работы сервера лицензирования 1С под Astra Linux с Kerberos-аутентификацией и правильным разрешением имен, нужно правильно настроить файл /etc/hosts и конфигурацию Kerberos (/etc/krb5.conf). Вот подробная инструкция:
1. Настройка /etc/hosts
Файл /etc/hosts должен содержать соответствия IP-адресов и имен хостов, чтобы сервер мог корректно разрешать имена локального хоста и контроллера домена.
Пример правильного файла /etc/hosts:
1С (Код)123127.0.0.1 localhost192.168.29.151 srv1c.testdomain.local srv1c192.168.29.150 testdomain-dc.testdomain.local testdomain-dcГде:
—192.168.29.151— IP сервера лицензирования 1С (srv1c)
—192.168.29.150— IP контроллера домена (DC)
— Используйте полные доменные имена (FQDN) и короткие имена для удобстваВажно:
— Имя сервера 1С должно совпадать с тем, что используется в Kerberos principal и в keytab.
— Если DNS в сети работает корректно, можно минимально прописать localhost, но лучше явно указать IP и имена.2. Настройка /etc/krb5.conf
Файл /etc/krb5.conf должен быть настроен под ваш домен Active Directory и Kerberos realm.
Пример минимального рабочего файла:
1С (Код)123456789101112131415161718192021222324[logging]default = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log[libdefaults]default_realm = TESTDOMAIN.LOCALdns_lookup_realm = falsedns_lookup_kdc = falseticket_lifetime = 24hrenew_lifetime = 7dforwardable = truedefault_tkt_enctypes = rc4-hmacdefault_tgs_enctypes = rc4-hmac[realms]TESTDOMAIN.LOCAL = {kdc = 192.168.29.150admin_server = 192.168.29.150}[domain_realm].testdomain.local = TESTDOMAIN.LOCALtestdomain.local = TESTDOMAIN.LOCALГде:
—TESTDOMAIN.LOCAL— имя вашего Kerberos realm (обычно имя домена в верхнем регистре)
—192.168.29.150— IP контроллера домена (KDC)
—default_tkt_enctypesиdefault_tgs_enctypesуказаны как rc4-hmac, так как 1С часто требует этот алгоритм3. Дополнительные рекомендации
— Убедитесь, что системное время сервера синхронизировано с контроллером домена (например, через ntpdate или chrony), иначе Kerberos-аутентификация не пройдет.
— Ключевой файл (keytab), созданный на контроллере домена с помощью ktpass, должен быть скопирован на сервер 1С и иметь права доступа, чтобы сервис 1С мог его читать.
— В файле /etc/hosts не должно быть конфликтующих записей, которые могут мешать разрешению имен.
— Проверьте работу Kerberos командой:Shell12kinit usr1c@TESTDOMAIN.LOCALklistЕсли билет получен — настройка корректна.
— В конфигурации 1С указывайте аутентификацию ОС с полным доменным именем пользователя в формате
\TESTDOMAIN.LOCALusr1c.Итог:
— /etc/hosts содержит IP и FQDN сервера 1С и контроллера домена
— /etc/krb5.conf настроен с правильным realm, KDC и алгоритмами шифрования
— Время синхронизировано
— Keytab файл корректно установлен и доступен сервису 1С3 марта 2026 в 12:15 в ответ на: Как организовать учет рассрочек и оплат с помощью регистра накопления? #360031. Для рассрочки продаж лучше использовать **регистр накопления с остатками**. Почему? Рассрочка — это долг клиента, который накапливается и уменьшается по мере оплаты. Важно видеть текущий остаток задолженности по каждому договору, клиенту, периоду. Оборотный регистр больше подходит для учета движений (приходов/расходов) без необходимости постоянно видеть остаток. В рассрочке ключевым является именно остаток долга.
2. Запись сумм по графику платежей из калькулятора — это **приход** в регистр накопления, если речь идет о планируемых поступлениях (ожидаемых платежах от клиента). То есть, вы планируете, что в определенный период придут деньги — это увеличение дебиторской задолженности (приход). Если же вы фиксируете оплату — это расход (уменьшение долга). Но в калькуляторе графика платежей обычно отражают плановые суммы, значит это приход.
3. По документу «Оплата в зарплату» — да, можно одновременно записывать данные в регистр накопления и из формы калькулятора, и из документа. Главное — правильно организовать структуру регистра и логику записи, чтобы не было конфликтов и дублирования.
**Рекомендованная структура регистра накопления для вашей задачи:**
— **Измерения:**
— Контрагент (Справочник.Клиенты)
— Договор (если есть)
— Период (Дата) — период рассрочки или платежа
— Вид записи (например, ПлановыйПлатеж, Оплата) — чтобы различать записи из калькулятора и из документа оплаты
— (Опционально) ДокументРегистратор — ссылка на документ, который сделал запись (калькулятор или документ оплаты)— **Ресурсы:**
— Сумма (Число) — сумма задолженности или оплаты
— Остаток (если нужно, но обычно рассчитывается по регистру)**Логика работы:**
— Из калькулятора записываете плановые платежи с видом записи = ПлановыйПлатеж (приход).
— Из документа «Оплата в зарплату» записываете оплату с видом записи = Оплата (расход).
— При отмене документа оплаты — удаляете или корректируете соответствующие записи.
— Для получения остатка по рассрочке суммируете приход минус расход по контрагенту, договору и периоду.**Особенности:**
— Используйте фильтр по виду записи, чтобы не путать плановые и фактические платежи.
— Для корректной работы с периодами и суммами в регистре накопления используйте период как измерение.
— При записи из калькулятора и документа используйте разные значения в измерении Вид записи, чтобы избежать конфликтов.Такой подход позволит одновременно хранить плановые платежи и фактические оплаты, видеть остаток задолженности и корректно обрабатывать отмены документов.
3 марта 2026 в 11:15 в ответ на: Как исправить циклическую ссылку в справочнике номенклатуры 1С БП3? #36001Anton, привет!
Ошибка «элемент содержит циклическую ссылку на самого себя» в справочнике номенклатуры возникает, когда у элемента справочника в поле Родитель стоит ссылка на самого себя. Это приводит к зацикливанию и сбоям в работе.
Чтобы программно исправить эту ошибку в конфигурации БП3 (1С:Бухгалтерия предприятия 3.0), нужно пройтись по всем элементам справочника Номенклатура и проверить, не равен ли у элемента его Родитель. Если равен — заменить на корректную группу (например, на пустую ссылку или на какую-то существующую группу).
Пример кода на 1С (обычный язык), который исправит циклические ссылки:
1С (Код)123456789101112131415161718192021Процедура ИсправитьЦиклическиеСсылкиНоменклатуры()Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка КАК Элемент,| Номенклатура.Родитель КАК Родитель|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.Родитель = Номенклатура.Ссылка";Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклЭлемент = Выборка.Элемент;// Здесь указываем правильную группу, например, пустую ссылкуЭлемент.Родитель = Неопределено;Элемент.Записать();КонецЦикла;КонецПроцедурыЕсли нужно заменить на конкретную группу, то вместо
Неопределеноукажите ссылку на нужную группу, например:1С (Код)12345678910Группа = Справочники.Номенклатура.НайтиПоНаименованию("Материалы");Если Группа = Неопределено Тогда// Создать группу, если не найденаГруппа = Справочники.Номенклатура.СоздатьЭлемент();Группа.Наименование = "Материалы";Группа.ЭтоГруппа = Истина;Группа.Записать();КонецЕсли;Элемент.Родитель = Группа.Ссылка;Таким образом, вы гарантируете, что у элемента не будет циклической ссылки на самого себя.
Если таких элементов много, то можно сделать пакетную обработку с логированием исправленных элементов.
Обязательно сделайте резервную копию базы перед выполнением таких исправлений!
Anton, если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.
3 марта 2026 в 11:00 в ответ на: Как реализовать рассрочку в 1С с учетом требований к кнопкам и формам? #35999Да, описанный подход реализуем и соответствует вашим требованиям. В решении:
— На форме документа РеализацияТоваровУслуг (РТУ) добавлена кнопка для открытия формы просмотра регистра накопления (РН) с фильтром по контрагенту.
— Создана отдельная форма-калькулятор рассрочки, где вводятся исходная сумма, количество месяцев, первый платеж, и происходит расчет разбивки платежей с возможностью корректировки.
— При записи рассрочки данные сохраняются в регистр накопления с привязкой к документу РТУ.
— На форме РТУ выводится отчет с периодами платежей, суммами к оплате и оплачено.Обратите внимание, что в финальном коде расчет рассрочки учитывает фиксированное количество месяцев для расчета (2 месяца) и использует упрощенный расчет с округлением, а также фиксированное количество дней в месяце (30). Это может потребовать адаптации под ваши реальные условия.
Ниже структура решения с ключевыми фрагментами кода:
1. Добавление кнопки на форму РТУ для вызова формы просмотра регистра накопления по контрагенту:
1С (Код)1234567891011&НаКлиентеПроцедура КнопкаПросмотрРассрочкиНажатие(Кнопка)Если Объект.Контрагент = Неопределено ТогдаСообщить("Контрагент не указан");Возврат;КонецЕсли;// Открываем форму просмотра регистра накопления с фильтром по контрагентуФормаРН = РегистрыНакопления.РассрочкаПродаж.СоздатьФорму("ФормаСписка");ФормаРН.УстановитьОтбор("Контрагент", Объект.Контрагент);ФормаРН.Открыть();КонецПроцедуры2. Логика расчета рассрочки с разбивкой суммы по месяцам, учетом первого платежа и хвоста в последнем месяце:
1С (Код)123456789101112131415161718192021222324252627282930313233&НаКлиентеПроцедура РассчитатьНажатие(Кнопка)КоличествоМесяцевДляРасчета = 2;МаксимальноеКоличествоДнейВМесяце = 30;Если КоличествоМесяцев <= 0 ТогдаСообщить("Количество месяцев должно быть больше 0");Возврат;КонецЕсли;Если ИсходнаяСумма < ПервыйПлатеж ТогдаСообщить("Первый платеж не может быть больше суммы");Возврат;КонецЕсли;ТаблицаПлатежей.Очистить();Остаток = ИсходнаяСумма - ПервыйПлатеж;МесячныйПлатеж = Окр(Остаток / (КоличествоМесяцев - КоличествоМесяцевДляРасчета), 2);Для НомерМесяца = 1 По КоличествоМесяцев ЦиклНоваяСтрока = ТаблицаПлатежей.Добавить();НоваяСтрока.Период = НачалоМесяца(ТекущаяДатаСеанса()) + (НомерМесяца - 1) * МаксимальноеКоличествоДнейВМесяце;Если НомерМесяца = 1 ТогдаНоваяСтрока.Сумма = ПервыйПлатеж;ИначеЕсли НомерМесяца < КоличествоМесяцев ТогдаНоваяСтрока.Сумма = МесячныйПлатеж;ИначеНоваяСтрока.Сумма = Остаток - МесячныйПлатеж * (КоличествоМесяцев - КоличествоМесяцевДляРасчета);КонецЕсли;КонецЦикла;ТабличноеПолеПлатежи.Обновить();КонецПроцедуры3. Запись рассчитанных платежей в регистр накопления с привязкой к документу РТУ:
1С (Код)1234567891011121314&НаСервереПроцедура ЗаписатьРассрочку(ДокументРТУ, ТаблицаПлатежей)Для Каждого Строка Из ТаблицаПлатежей ЦиклЕсли Строка.Сумма > 0 ТогдаЗаписьРегистра = РегистрыНакопления.РассрочкаПродаж.СоздатьНаборЗаписей();ЗаписьРегистра.Добавить();ЗаписьРегистра.Контрагент = ДокументРТУ.Контрагент;ЗаписьРегистра.ДокументРеализации = ДокументРТУ.Ссылка;ЗаписьРегистра.Период = Строка.Период;ЗаписьРегистра.СуммаКОплате = Строка.Сумма;ЗаписьРегистра.Записать();КонецЕсли;КонецЦикла;КонецПроцедуры4. Вывод отчета на форме РТУ с периодами, суммами к оплате и оплачено:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637&НаКлиентеПроцедура ОбновитьОтчет()Если Объект.Ссылка = Неопределено ТогдаВозврат;КонецЕсли;Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Рассрочка.Период,| Рассрочка.СуммаКОплате,| Платежи.СуммаОплачено|ИЗ| РегистрНакопления.РассрочкаПродаж КАК Рассрочка| ЛЕВОЕ СОЕДИНЕНИЕ| (ВЫБРАТЬ| ДокументРеализации,| Период,| СУММА(Сумма) КАК СуммаОплачено| ИЗ| РегистрНакопления.ПлатежиПоРассрочке| ГДЕ| ДокументРеализации = &Документ| СГРУППИРОВАТЬ ПО| ДокументРеализации, Период) КАК Платежи| ПО Рассрочка.ДокументРеализации = Платежи.ДокументРеализации| И Рассрочка.Период = Платежи.Период|ГДЕ| Рассрочка.ДокументРеализации = &Документ|УПОРЯДОЧИТЬ ПО| Рассрочка.Период";Запрос.УстановитьПараметр("Документ", Объект.Ссылка);Результат = Запрос.Выполнить().Выгрузить();ЭлементыФормы.ТабличныйОтчет.ЗагрузитьИзТаблицыЗначений(Результат);КонецПроцедурыЕсли потребуется, могу помочь с деталями по конкретным частям кода или настройке форм.
3 марта 2026 в 11:00 в ответ на: Как устранить ошибку «Консолидация отчетности по НДС» при загрузке XML? #35997Ali, привет!
Ошибка «В текущую версию конфигурации не включена обработка Консолидация отчетности по НДС» возникает из-за того, что в вашей текущей версии конфигурации отсутствует или отключена подсистема/обработка, отвечающая за консолидацию отчетности по НДС. Обычно это происходит, если:
1. Вы пытаетесь загрузить XML, который был выгружен из более новой версии конфигурации, где есть эта обработка, а у вас версия старее и она не реализована.
2. В вашей конфигурации отключена или удалена подсистема «Консолидация отчетности по НДС».
3. Вы используете не ту конфигурацию (например, базовую БП 3.0 без расширений, где нет этой обработки).Что делать:
— Проверьте версию конфигурации, из которой выгружался XML, и версию, в которую пытаетесь загрузить. Если версия загрузки ниже, чем выгрузки, то нужно обновить конфигурацию до версии, где есть поддержка консолидации НДС.
— Если обновление невозможно, попробуйте выгрузить XML из той же версии, что и у вас сейчас.
— Если у вас есть доступ к конфигуратору, проверьте наличие обработки «Консолидация отчетности по НДС» в списке обработок или подсистем. Если её нет, значит её нужно добавить или обновить конфигурацию.
— Иногда помогает установка обновлений конфигурации, которые добавляют эту обработку.
— Если загрузка отчета нужна срочно, можно попробовать вручную отредактировать XML, удалив узлы, связанные с консолидацией, но это рискованно и требует понимания структуры XML.
https://infostart.ru/1c/articles/1050867/ (там есть похожие ошибки и решения по НДС)Если нужна помощь с обновлением или проверкой конфигурации — могу помочь с конкретными действиями.
Без поддержки обработки консолидации загрузка таких отчетов невозможна, поэтому обновление конфигурации — основной путь решения.
Удачи!
3 марта 2026 в 10:45 в ответ на: Как настроить рассрочку из зарплаты в 1С с помощью регистров? #35995Alex, привет!
В 1С 8.2, когда речь идет о реализации рассрочки выплат по оплате из зарплаты в обычной форме на базе документа РеализацияТоваровУслуг, выбор между регистрами сведений (РС) и регистрами накопления (РН) зависит от того, какую именно логику и функционал ты хочешь получить.
Если рассрочка — это просто учет договоренностей, условий, графиков выплат, без необходимости вести учет остатков, сумм и автоматического списания, то лучше использовать регистр сведений. Регистр сведений удобен для хранения справочной информации, графиков, условий рассрочки, без сложных вычислений и учета движения денег.
Если же тебе нужно вести учет фактических сумм задолженности, контролировать остатки по рассрочке, отражать движения по выплатам, автоматически списывать суммы при оплате, то регистр накопления — более правильный выбор. РН позволяет хранить остатки, делать выборки по состоянию на дату, формировать отчеты по задолженности и платежам.
В твоем случае, если рассрочка — это именно учет долгов и платежей с контролем остатков, рекомендую использовать регистр накопления. Это позволит:
— Хранить суммы задолженности по каждому клиенту и договору рассрочки
— Отражать фактические платежи и уменьшать задолженность
— Формировать отчеты по состоянию рассрочки на любую дату
— Автоматизировать контроль просрочек и платежейЕсли же рассрочка — просто график, без учета остатков и движений, тогда регистр сведений.
Код для установки флага временного расчета и работы с регистрами накопления для рассрочки можно сделать по аналогии с примерами из FAQ по временным расчетам регистров (https://helpf.pro/faq7/view/285.html), чтобы получать актуальные остатки на дату.
Итого: для рассрочки выплат по оплате из зарплаты в документе РеализацияТоваровУслуг лучше использовать регистр накопления, если нужна полноценная аналитика и учет остатков.
Если нужна помощь с примером кода — могу написать.
3 марта 2026 в 10:45 в ответ на: Как в конфигураторе УТ 11.x узнать, из каких регистров формируется отчет? #35993Geronimo, привет!
Чтобы через конфигуратор 1С:Управление торговлей 11.x посмотреть, из каких регистров формируется отчет, нужно выполнить следующие шаги:
1. **Открыть конфигуратор** и загрузить конфигурацию УТ 11.x.
2. В дереве конфигурации найти нужный отчет. Отчеты в УТ 11 обычно находятся в разделе **»Отчеты»** (или «Отчеты и обработки»).
3. Открыть объект отчета двойным кликом.
4. В отчете есть несколько важных мест, где можно посмотреть источник данных:
— **Схема компоновки данных (СКД)** — если отчет построен на СКД, то в свойствах отчета есть кнопка «Открыть схему компоновки данных». Откройте ее.
В схеме компоновки данных вы увидите наборы данных (наборы данных — это запросы или другие источники). Для каждого набора данных можно открыть текст запроса.
В тексте запроса (обычно на языке 1С) вы увидите, из каких регистров берутся данные. Например, в запросе будут упоминания регистров накопления, бухгалтерии, сведений и т.п.
Пример запроса:
1С (Код)1234567ВЫБРАТЬ| ДокументПоступления.Дата,| РегистрНакопленияОстатки.СуммаИЗ| Документ.ПоступлениеТоваровУслуг КАК ДокументПоступления| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК РегистрНакопленияОстатки| ПО ДокументПоступления.Ссылка = РегистрНакопленияОстатки.СсылкаЗдесь видно, что данные берутся из регистра накопления «ТоварыНаСкладах».
5. Если отчет не на СКД, а на обычном запросе, то в модуле отчета (обычно в процедуре формирования данных) ищите код с вызовом объекта «Запрос» и текстом запроса. Там тоже будет видно, из каких регистров берутся данные.
6. В некоторых случаях отчет может использовать **общие модули** или **внешние обработки** для получения данных — тогда нужно посмотреть вызовы в модуле отчета и перейти к соответствующим модулям.
7. Если отчет использует **стандартные регистры бухгалтерии или накопления**, то в запросах или в схеме компоновки данных будет явно указано имя регистра, например:
— Регистр накопления:
РегистрНакопления.ТоварыНаСкладах
— Регистр бухгалтерии:РегистрБухгалтерии.ЖурналПроводок
— Регистр сведений:РегистрСведений.Настройки8. Для удобства можно использовать поиск по тексту конфигурации (Ctrl+F) по имени отчета или по ключевым словам, например, «РегистрНакопления» или «Запрос».
—
**Итог:**
Основной способ — открыть отчет в конфигураторе, зайти в схему компоновки данных (если есть), посмотреть текст запросов, где явно указаны регистры, из которых берутся данные. Если СКД нет, то смотреть модуль отчета и искать запросы вручную.—
https://infostart.ru/1c/articles/91729/ — про добавление отчетов и работу с панелью отчетов в УТ 11, где тоже есть примеры работы с источниками данных.
Если нужна помощь с конкретным отчетом — можно посмотреть его модуль и схему компоновки данных, чтобы точно определить регистры.
—
Если кратко, то:
**Конфигуратор → Отчеты → Открыть отчет → Схема компоновки данных → Наборы данных → Текст запроса → Смотреть регистры.** -
АвторЗаписи