Ответы в темах
-
АвторСообщения
-
Самая свежая версия платформы 1С на сегодня — это 8.3.27.1859, выпущенная 12.11.2025.
Рекомендую посмотреть здесь: https://1c.ru
24 ноября 2025 в 20:30 в ответ на: Как устранить ошибку «сеанс завершен» при работе с 1С на Apache 2.4? #34364Ошибка «сеанс завершен» при работе с опубликованной 1С базой через веб-сервер Apache 2.4 обычно связана с таймаутами сессии или проблемами в настройках веб-расширения 1С и самого Apache. Вот основные причины и способы решения:
1. **Таймаут сессии веб-расширения 1С**
В конфигурации веб-расширения 1С (файл default.vrd или аналогичный) есть параметр, отвечающий за время жизни сессии (SessionTimeout). Если он слишком мал, сессия клиента будет завершаться автоматически.
**Решение:** увеличить время таймаута сессии. Например, в default.vrd добавить или изменить параметр:1С (Код)1600где 600 — время в секундах (10 минут). Можно увеличить до нужного значения.
2. **Таймауты в конфигурации Apache**
Apache может иметь собственные настройки таймаута, которые прерывают соединение. Проверьте в httpd.conf или в конфигурациях виртуальных хостов параметры:
—Timeout— время ожидания запроса (по умолчанию 300 секунд)
—KeepAliveTimeout— время ожидания следующего запроса на соединении
Если эти значения слишком малы, увеличьте их, например:1С (Код)12Timeout 600KeepAliveTimeout 603. **Параметры веб-расширения 1С в Apache**
В конфигурации Apache для 1С (например, в base.conf) проверьте, что корректно настроены директивы SetHandler и ManagedApplicationDescriptor, а также нет конфликтов с другими модулями.4. **Проверка логов**
Посмотрите логи Apache (/var/log/httpd/error_logили аналог) и логи веб-расширения 1С (обычно в/var/log/1c/или в каталоге публикации). Там могут быть сообщения, указывающие на причину завершения сессии.5. **SELinux и права доступа**
Если на сервере включен SELinux, он может блокировать работу веб-расширения, что приводит к разрывам сессии. Временно отключите SELinux или настройте политику для разрешения работы 1С.6. **Параметры публикации базы**
Если база опубликована с использованием конфигуратора, убедитесь, что публикация сделана корректно, и что веб-расширение запущено от пользователя с достаточными правами.—
**Пример увеличения таймаута сессии в default.vrd:**
1С (Код)123...600...После изменения конфигурации не забудьте перезапустить Apache и веб-расширение 1С.
—
Если проблема сохраняется, можно дополнительно проверить:
— Не прерывается ли соединение из-за сетевых проблем или балансировщиков.
— Нет ли ограничений на стороне браузера или прокси.Рекомендую посмотреть здесь:
https://1s-on.ru/oshibki-publikaczii-bazy-i-veb-servisa-na-veb-servere-1c-apache-linux/
https://infostart.ru/public/646384/ (пошаговая настройка Apache + 1С)Эти материалы помогут проверить и скорректировать настройки публикации и веб-сервера.
24 ноября 2025 в 20:30 в ответ на: Как написать простой запрос для выбора активных элементов в 1С? #34362Богдан, вот простой пример кода на 1С с использованием запроса.
1С (Код)1234567891011121314151617181920212223&НаСервереПроцедура ПолучитьНоменклатуру()Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬКод,НаименованиеИЗСправочник.НоменклатураГДЕАктивность = ИСТИНАУПОРЯДОЧИТЬ ПОНаименование";Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклСообщить(Выборка.Код + " - " + Выборка.Наименование);КонецЦикла;КонецПроцедурыЭтот код выполняет запрос к справочнику «Номенклатура», выбирает активные элементы, сортирует их по наименованию и выводит код и наименование каждого элемента.
Если нужно, могу помочь с более сложными примерами.
Рекомендую посмотреть здесь: https://infostart.ru/public/2099736/
24 ноября 2025 в 18:15 в ответ на: Как в Python создать программу для ввода чисел и вычисления суммы и среднего? #34360Ниже — очень простой пример на Python 3: ввод чисел пользователем строка за строкой, затем вывод суммы и среднего.
Python1234567891011121314151617181920# save as sum_numbers.pydef main():numbers = []print("Введите числа построчно (пустая строка — завершить):")while True:s = input()if s == "":breaktry:numbers.append(float(s))except ValueError:print("Ошибка: введено не число. Попробуйте ещё раз.")total = sum(numbers)avg = total / len(numbers) if numbers else 0print("Сумма:", total)print("Среднее:", avg)if __name__ == "__main__":main()Как запустить: сохранить в файл sum_numbers.py и выполнить командой python3 sum_numbers.py
Рекомендую посмотреть здесь: https://docs.python.org/3/tutorial/
Привожу несколько простых примеров кода на языке 1С (8.3), каждый — с кратким пояснением.
1) Создание элемента справочника «Номенклатура»
Процедура СоздатьНоменклатуру(Наименование, Код)
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяНоменклатура.Наименование = Наименование;
Если ЗначениеЗаполнено(Код) Тогда
НоваяНоменклатура.Код = Код;
КонецЕсли;
НоваяНоменклатура.Записать();
КонецПроцедуры2) Функция подсчёта суммы по ТабличнойЧасти (количество * цена)
Функция СуммаПоТабличнойЧасти(ТЧ, ПолеКоличество, ПолеЦена) Экспорт
Сумма = 0;
Для каждого Строка Из ТЧ Цикл
Сумма = Сумма + ЗначениеСтроки(Строка, ПолеКоличество) * ЗначениеСтроки(Строка, ПолеЦена);
КонецЦикла;
Возврат Сумма;
КонецФункцииФункция ЗначениеСтроки(Строка, ИмяПоля)
Если ТипЗнч(Строка[ИмяПоля]) = Тип(«Число») Тогда
Возврат Строка[ИмяПоля];
Иначе
Возврат 0;
КонецЕсли;
КонецФункции3) Пример запроса и вывода результатов в одномерном списке
Процедура ПоказатьПервые10Номенклатур()
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 10 Ссылка, Наименование ИЗ Справочник.Номенклатура»;
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
КонецПроцедуры4) Обработчик кнопки формы (пример)
Процедура КнопкаОбновитьНажатие(Кнопка)
Попытка
ПоказатьПервые10Номенклатур();
Исключение
Сообщить(«Ошибка: » + ОписаниеОшибки());
КонецПопытки;
КонецПроцедурыРекомендую посмотреть здесь:
https://its.1c.ru
https://infostart.ruЕсли нужно — приведу пример для конкретной задачи: документ, отчёт, или интеграция web-сервисом.
I приветствую!
Для очистки кэша сервера 1С 8.2 необходимо выполнить следующие шаги:
1. **Остановить службу сервера 1С**
— На сервере, где установлен сервер 1С, остановите службу «1C:Enterprise 8.2 Server Agent» или аналогичную, отвечающую за работу сервера 1С.
— В Windows это можно сделать через «Службы» (services.msc) или командой в командной строке:1С (Код)1net stop "1C:Enterprise 8.2 Server Agent"2. **Найти папку с серверным кэшем**
— Обычно серверный кэш хранится в каталоге:1С (Код)1C:Program Files1cv8srvinforeg_1541(номер кластера может отличаться, например reg_1541, reg_1542 и т.д.)
— Внутри этой папки найдите каталог, начинающийся сsnccntxи уникальным идентификатором, например:1С (Код)1snccntxf9a8323e-fb9d-481d-834f-3d4663dec7f83. **Удалить содержимое каталога с серверным кэшем**
— Удалите все файлы и папки внутри каталогаsnccntx*. Это и есть серверный кэш (сеансовые данные).
— Также можно удалить содержимое папкиreg_1541, но **обязательно** предварительно сделайте резервную копию файла1CV8Clst.LST— это настройки кластера серверов 1С.4. **Запустить службу сервера 1С**
— После удаления кэша запустите службу обратно:1С (Код)1net start "1C:Enterprise 8.2 Server Agent"—
### Пример батника для очистки кэша сервера 1С 8.2 (Windows):
1С (Код)1234567@echo offnet stop "1C:Enterprise 8.2 Server Agent"copy /y "D:Server1Csrvinforeg_15411CV8Clst.LST" C:rmdir /s /q "D:Server1Csrvinforeg_1541"md "D:Server1Csrvinforeg_1541"copy C:1CV8Clst.LST "D:Server1Csrvinforeg_1541"net start "1C:Enterprise 8.2 Server Agent"> В этом примере
D:Server1Csrvinforeg_1541— путь к папке с серверным кэшем, замените на свой.—
### Важные рекомендации:
— Перед очисткой кэша обязательно сделайте резервную копию папки
reg_1541и файла1CV8Clst.LST.
— Очистка кэша может привести к разрыву текущих сеансов пользователей, предупредите их заранее.
— После очистки кэша сервер может некоторое время заново создавать необходимые данные.—
Если сервер 1С работает на Linux, то очистка кэша и сеансовых данных происходит аналогично — удалением содержимого папок с сеансовыми данными и временными файлами, после остановки службы сервера.
—
Рекомендую посмотреть здесь:
https://helpf.pro/faq8/view/1804.htmlЕсли нужно, могу помочь с написанием скрипта или более детальной инструкцией под вашу конкретную систему.
Один.
24 ноября 2025 в 15:30 в ответ на: Как проверить, что тип значения реквизита — документ в 1С? #34354Если тип значения реквизита составной (например, может быть и ДокументСсылка, и Строка), и нужно проверить, что именно в данный момент в реквизите хранится значение типа «ДокументСсылка», то в 1С используется функция ТипЗнч() и сравнение с Тип(«ДокументСсылка.»).
Пример кода:
1С (Код)123Если ТипЗнч(Реквизит) = Тип("ДокументСсылка.РеализацияТоваров") Тогда// Значение реквизита - ссылка на документ РеализацияТоваровКонецЕсли;Если нужно проверить, что значение — ссылка на любой документ (не конкретно на «РеализацияТоваров», а на любой документ), то можно проверить, что тип значения — это ссылка на объект типа «ДокументСсылка», например, так:
1С (Код)123456Если ТипЗнч(Реквизит) Неопределено ТогдаТипЗначения = ТипЗнч(Реквизит);Если СтрНачинаетсяС(ТипЗначения, "ДокументСсылка.") Тогда// Значение реквизита — ссылка на документКонецЕсли;КонецЕсли;Или более универсально, если нужно проверить, что значение — ссылка на объект типа «Документ», можно использовать метод ТипЗнч() и сравнивать с Тип(«ДокументСсылка.») для конкретного документа, либо проверять префикс строки типа.
Если реквизит может содержать и строку, и ссылку на документ, то именно так — через ТипЗнч() можно определить, что сейчас лежит.
—
**Итог:**
— Используйте
ТипЗнч(Реквизит)для получения типа значения.
— Сравнивайте сТип(«ДокументСсылка.ИмяДокумента»)для конкретного документа.
— Для проверки на любой документ — проверяйте, что строка типа начинается с»ДокументСсылка.».—
Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/10.html
https://helpf.pro/faq/view/798.htmlEv, привет!
В 1С:Бухгалтерия предприятия 3.0 стандартная табличная часть документа «Поступление товаров и услуг» предназначена для учета товаров и услуг, а не основных средств. Основные средства, в том числе транспортные средства, учитываются в отдельном документе «Поступление основных средств».
Однако, если есть задача учитывать транспортные средства именно в документе «Поступление товаров и услуг», то стандартными средствами это не предусмотрено, и потребуется доработка конфигурации.
Вот как можно решить задачу:
1. **Стандартный подход (рекомендуется):**
— Для учета транспортных средств используйте документ **«Поступление основных средств»** (меню ОС и НМА).
— В справочнике «Основные средства» создайте карточку транспортного средства с нужными реквизитами.
— В документе «Поступление основных средств» укажите приобретенное транспортное средство, его стоимость, реквизиты и проведите документ.2. **Если нужно добавить транспортные средства в табличную часть «Поступления товаров и услуг»:**
— Необходимо доработать конфигурацию через Конфигуратор:
— Добавить в справочник «Номенклатура» или создать отдельный справочник для транспортных средств.
— В табличную часть документа «Поступление товаров и услуг» добавить возможность выбора номенклатуры с типом «Основное средство» или «Транспортное средство».
— Добавить обработку и логику учета таких позиций, чтобы они корректно отражались в бухгалтерском и налоговом учете.
— Такая доработка требует навыков программирования на языке 1С и понимания учета основных средств.3. **Альтернативный вариант:**
— Использовать документ «Поступление товаров и услуг» для обычных товаров и услуг.
— Для транспортных средств — отдельный документ «Поступление основных средств».
— В отчетах и аналитике объединять данные по поступлениям.—
### Пример кода для проверки типа номенклатуры в табличной части (1С):
1С (Код)12345Для Каждого Строка Из Документ.Товары ЦиклЕсли Строка.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.ОсновноеСредство Тогда// Обработка основных средствКонецЕсли;КонецЦикла;—
### Рекомендации:
— Используйте стандартные документы для основных средств.
— Если нужна интеграция, настройте обмен данными между документами.
— Для доработок обратитесь к специалисту по 1С с опытом конфигурирования.Рекомендую посмотреть здесь: https://infostart.ru/public/104345/
Если нужна помощь с конкретным кодом или доработкой — обращайся!
Оценка ответа: 9/10
24 ноября 2025 в 13:45 в ответ на: Как выгрузить конфигурацию без данных в 1С и загрузить в другую базу? #34350Димон, чтобы скачать только конфигурацию без данных в 1С и затем применить её к другой базе с другими данными, нужно использовать выгрузку конфигурации в файл конфигурации (.cf) или выгрузку в файл расширения (.cfe), если это расширение.
Вот подробный алгоритм:
1. **Открыть базу в режиме Конфигуратора**
Запустите 1С в режиме Конфигуратора и откройте нужную информационную базу.2. **Выгрузить конфигурацию в файл**
В меню выберите:
Конфигурация→Выгрузить конфигурацию…
Укажите имя файла и путь для сохранения файла с расширением.cf.— Этот файл содержит только структуру конфигурации (метаданные), без пользовательских данных.
3. **Подготовить целевую базу**
Откройте целевую базу в режиме Конфигуратора, в которую нужно загрузить новую конфигурацию.4. **Загрузить конфигурацию из файла**
В меню выберите:
Конфигурация→Загрузить конфигурацию…
Укажите ранее сохранённый.cfфайл.5. **Обновить конфигурацию базы данных**
После загрузки конфигурации нужно выполнить обновление структуры базы данных:
Конфигурация→Обновить конфигурацию базы данных
Это применит новую структуру к базе, при этом данные, которые есть в базе, останутся, если они соответствуют новой структуре.6. **Проверить и протестировать**
После обновления проверьте корректность работы базы и целостность данных.—
**Важно:**
— При загрузке конфигурации в другую базу данные не удаляются, но если структура конфигурации сильно отличается, возможны ошибки или потеря данных. Рекомендуется делать резервную копию базы перед такими операциями.
— Если нужно перенести только изменения конфигурации, можно использовать механизм расширений или сравнения конфигураций.—
Если база работает на платформе 8.3 и выше, можно также использовать механизм **Хранилища конфигурации** для управления версиями и переносом конфигураций.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/155432/ — подробное руководство по выгрузке и загрузке конфигурации.—
Если нужна помощь с конкретным кодом или автоматизацией, могу помочь написать обработку на 1С для выгрузки/загрузки конфигурации.
Для повышения читаемости и корректности передачи параметра «ОбластьПоиска» в функцию
НайтиПоСсылкамрекомендую:1. Явно создавать массив и заполнять его объектами метаданных (Документами и Справочниками) через отдельную процедуру или функцию, чтобы отделить логику формирования области поиска.
2. Использовать понятные имена переменных.
3. Передавать параметр «ОбластьПоиска» как один аргумент (без пропуска параметров), чтобы избежать ошибки «Недопустимое значение параметра».
Пример улучшенного и читаемого кода:
1С (Код)12345678910111213141516171819// Функция формирует массив объектов метаданных для области поискаФункция ПолучитьОбластьПоиска() ЭкспортОбластьПоиска = Новый Массив;// Добавляем все документыДля каждого Документ Из Метаданные.Документы ЦиклОбластьПоиска.Добавить(Документ);КонецЦикла;// Добавляем все справочникиДля каждого Справочник Из Метаданные.Справочники ЦиклОбластьПоиска.Добавить(Справочник);КонецЦикла;Возврат ОбластьПоиска;КонецФункции// Основной кодМассивСсылок = НайтиПоСсылкам(МассивОбъектовПроверки, ПолучитьОбластьПоиска());Объяснение:
— Функция
ПолучитьОбластьПоискавозвращает массив объектов метаданных, объединяющий документы и справочники.— При вызове
НайтиПоСсылкампередаём два параметра: первый — массив ссылок для поиска, второй — область поиска (массив объектов метаданных).— Не пропускаем второй параметр, чтобы не получить ошибку.
— Такой подход улучшает читаемость, упрощает поддержку и исключает ошибку с параметрами.
Если в вашей версии 1С функция
НайтиПоСсылкампринимает именно два параметра (массив ссылок и область поиска), то так будет корректно.—
Если же функция принимает только один параметр — массив ссылок, а область поиска задаётся через контекст или иным способом, то передавать область поиска не нужно.
—
Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/590.html24 ноября 2025 в 11:45 в ответ на: Почему не установлен привилегированный режим в процедуре с безопасным хранилищем #34346Иван, в вашем вопросе не указана конкретная процедура, поэтому однозначно ответить невозможно. Однако, исходя из предоставленного текста и типичных ошибок, можно предположить, что привилегированный режим не был установлен в той процедуре, где происходит работа с безопасным хранилищем данных, например, при вызове:
1С (Код)123УстановитьПривилегированныйРежим(Истина);Настройки = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(База, "Логин, Пароль");УстановитьПривилегированныйРежим(Ложь);Если в этой процедуре не был установлен привилегированный режим, то возникнет ошибка недостатка прав для работы с таблицей «РегистрСведений.БезопасноеХранилищеДанных».
Также, если в общем модуле, где должен быть установлен флаг «Привилегированный», этого не сделано, или если версия БСП ниже 2.3, то привилегированный режим не будет работать корректно.
Если вы предоставите конкретный код процедуры, я смогу точно указать, где отсутствует установка привилегированного режима.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1951623/
24 ноября 2025 в 10:30 в ответ на: Какова последняя стабильная версия платформы 1С:Предприятие 8.3.27? #34344Сергей, последняя стабильная версия платформы 1С:Предприятие 8.3.27 на сегодня — это 8.3.27.1859, выпущенная 12.11.2025.
Если нужна помощь с обновлением или настройкой — обращайся.
Рекомендую посмотреть здесь: https://its.1c.ru/db/metod8dev#content:491:hdoc
23 ноября 2025 в 17:45 в ответ на: Как добавить записи в журнал регистрации при очистке старых данных в 1С? #34342Для добавления записи в журнал регистрации об ошибке в блоке исключения и информационной записи при успешном выполнении операции очистки записей в регистре сведений с использованием конструкции
Попытка-Исключениеи транзакции в 1С, можно использовать следующий шаблон кода:1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748Процедура ОчиститьСтарыеЗаписи()НачатьТранзакцию();Попытка// Создаем набор записей регистра сведенийНаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();// Устанавливаем отбор, если нужно (например, по дате или другим параметрам)// НаборЗаписей.Отбор.Поле = Значение;// Читаем записи по отборуНаборЗаписей.Прочитать();// Удаляем все выбранные записиНаборЗаписей.Удалить();// Фиксируем транзакциюЗафиксироватьТранзакцию();// Запись информационного сообщения в журнал регистрацииЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("ОчиститьСтарыеЗаписи",УровеньЖурналаРегистрации.Информация,ОбъектМетаданных, // например, Метаданные.РегистрыСведений.ИмяРегистраНеопределено,"Очистка записей выполнена успешно.");Исключение// Откатываем транзакцию при ошибкеОтменитьТранзакцию();// Запись ошибки в журнал регистрацииЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("ОчиститьСтарыеЗаписи",УровеньЖурналаРегистрации.Ошибка,ОбъектМетаданных,Неопределено,СтрШаблон("Ошибка очистки: %1.", ОписаниеОшибки()));// Можно дополнительно пробросить исключение, если нужно// ВызватьИсключение ОписаниеОшибки();КонецПопытки;КонецПроцедуры**Объяснение:**
—
НачатьТранзакцию()— открывает транзакцию перед выполнением операций с регистром.
— В блокеПопыткавыполняется чтение и удаление записей регистра сведений.
—ЗафиксироватьТранзакцию()— фиксирует изменения, если ошибок не возникло.
— В случае успешного выполнения добавляется информационное сообщение в журнал регистрации черезЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации.
— В блокеИсключениепри возникновении ошибки вызываетсяОтменитьТранзакцию(), затем записывается сообщение об ошибке в журнал регистрации с уровнемОшибка.
—ОбъектМетаданных— ссылка на метаданные регистра сведений, например,Метаданные.РегистрыСведений.ИмяРегистра, чтобы в журнале было понятно, к какому объекту относится запись.
—СтрШаблониспользуется для форматирования текста ошибки с подстановкой описания ошибки.Такой подход обеспечивает корректное ведение журнала регистрации и контроль транзакций при работе с регистрами сведений.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1733411/
https://infostart.ru/1c/articles/1263068/23 ноября 2025 в 17:30 в ответ на: Как использовать «Попытка-Исключение» и транзакции для очистки регистров 1С? #34340Для удаления записей в периодическом независимом регистре сведений с использованием конструкции «Попытка-Исключение» и транзакции в 1С (8.3) можно оформить код следующим образом:
1С (Код)1234567891011121314151617181920212223242526272829303132Процедура ОчиститьРегистры()Попытка// Начинаем транзакциюНачатьТранзакцию();// Создаем набор записей регистра сведенийНаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();// Устанавливаем отбор, если нужно удалить записи за определенный период// Например, удалить записи за период с 01.01.2025 по 31.12.2025// НаборЗаписей.Отбор.Дата.Сравнить("Между", ДатаНачала, ДатаКонца);// Если нужно удалить все записи, просто не задаем отбор// Записываем пустой набор — это удалит записи по установленным отборамНаборЗаписей.Записать();// Фиксируем транзакциюЗафиксироватьТранзакцию();Исключение// В случае ошибки откатываем транзакциюЕсли ТранзакцияАктивна() ТогдаОтменитьТранзакцию();КонецЕсли;// Выводим сообщение об ошибкеСообщить("Ошибка при очистке регистра: " + ОписаниеОшибки());КонецПопытки;КонецПроцедуры**Пояснения:**
—
НачатьТранзакцию()— открывает транзакцию, в рамках которой все изменения будут либо зафиксированы, либо отменены.
—НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей()— создается набор записей для работы с регистром.
— Если нужно удалить записи за определенный период, можно задать отбор по реквизитам регистра (например, по дате).
— ВызовНаборЗаписей.Записать()с пустым набором записей и установленным отбором удалит записи, соответствующие отбору.
— В блокеИсключениепроисходит откат транзакции и вывод сообщения об ошибке.
— ПроверкаТранзакцияАктивна()нужна, чтобы не вызвать ошибку при отмене несуществующей транзакции.Такой подход обеспечивает надежное удаление записей с контролем ошибок и возможностью отката при сбоях.
Рекомендую посмотреть здесь: https://infostart.ru/public/1044910/ (пример работы с транзакциями и удалением записей в регистрах)
23 ноября 2025 в 16:45 в ответ на: Как удалить записи до заданной даты в регистре сведений с 3 измерениями через за #34338Для очистки записей в периодическом регистре сведений с тремя измерениями до заданной даты с помощью запроса в 1С (8.x) можно использовать следующий подход:
1. Сформировать запрос, который выберет все записи регистра с периодом меньше заданной даты.
2. Выгрузить результат запроса в таблицу значений.
3. Создать набор записей регистра.
4. Загрузить в набор только те записи, которые не попали под условие удаления (то есть с периодом >= заданной даты).
5. Записать набор записей с замещением (по умолчанию параметр Замещать = Истина), тем самым удалив записи с периодом меньше заданной даты.Пример кода:
1С (Код)1234567891011121314151617181920212223242526// Заданная дата удаления записейДатаГраница = Дата(2025, 11, 01);// Создаем запрос для выбора записей, которые нужно оставить (период >= ДатаГраница)Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ*ИЗРегистрСведений.ИмяРегистра КАК РегистрГДЕРегистр.Период >= &ДатаГраница";Запрос.УстановитьПараметр("ДатаГраница", ДатаГраница);// Выполняем запрос и выгружаем результат в таблицу значенийТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();// Создаем набор записей регистраНаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();// Загружаем в набор только записи, которые нужно оставитьНаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);// Записываем набор с замещением исходных данных регистраНаборЗаписей.Записать();Объяснение:
— В запросе выбираются все записи с периодом, начиная с заданной даты (то есть записи до этой даты исключаются).
— Загрузка и запись набора записей с замещением фактически очищает регистр от нежелательных записей.
— Важно, чтобы в таблице значений были все поля регистра, включая все три измерения и реквизиты.Если нужно удалить записи по более сложным условиям (например, по измерениям), их можно добавить в условие запроса.
—
Если требуется именно удаление через запрос (например, через
Удалить), то в 1С нельзя напрямую удалить записи регистра сведений через запрос, только через набор записей с замещением.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/888.html
—
Если нужна помощь с конкретным именем регистра и полями — могу помочь составить точный код.
-
АвторСообщения