Ответы в темах
-
АвторСообщения
-
16 февраля 2026 в 15:45 в ответ на: Как настроить использование встроенной или легкой почты в 1С:Документооборот? #35851
Евгений, приветствую!
В 1С:Документооборот есть два варианта работы с электронной почтой: встроенная почта и легкая почта. Чтобы включить использование одного из этих вариантов, нужно сделать следующее:
1. Включение встроенной почты:
— Зайдите в меню «Настройка» – «Настройка программы» – «Почта».
— Установите флажок «Использовать встроенную почту».
— Эта настройка доступна администратору или пользователю с полными правами.
— После включения встроенной почты письма и вложения будут храниться в базе 1С, будет вестись протоколирование и учет почтового документооборота.2. Использование легкой почты:
— Если флажок «Использовать встроенную почту» не установлен, то по умолчанию используется легкая почта.
— Легкая почта работает через внешний почтовый клиент (например, Microsoft Outlook) или прямое подключение к почтовому серверу по протоколам POP3/SMTP.
— Письма и вложения при этом не сохраняются в базе 1С, протоколирование не ведется.3. Настройка учетных записей почты:
— Для встроенной почты настройка учетных записей выполняется в меню «Настройка» – «Персональные настройки» – «Встроенная почта» – «Учетные записи».
— Можно создать несколько учетных записей, указать параметры серверов входящей и исходящей почты, включить SSL, задать имя отправителя.
— Для легкой почты учетные записи настраиваются в почтовом клиенте пользователя.Если хотите программно включить встроенную почту, то в конфигурации 1С можно установить параметр:
1С (Код)123Настройки = НастройкиПрограммы.Получить();Настройки.Установить("ИспользоватьВстроеннуюПочту", Истина);Настройки.Записать();После этого пользователи смогут работать с встроенной почтой.
Если нужна помощь с конкретной настройкой или кодом для работы с почтой — могу помочь с примерами.
Один.
Ev, привет!
Формат файла .sel — это не стандартный формат, который 1С напрямую умеет открывать или отображать. Обычно расширение .sel используется для файлов, связанных с выборками, например, в некоторых системах или специализированных приложениях. В 1С нет встроенного механизма для открытия файлов с расширением .sel напрямую в обычной форме.
Чтобы открыть файл .sel в обычной форме 1С, нужно понимать, что именно внутри этого файла — это может быть текст, бинарные данные, или какой-то специфический формат. Вот что можно сделать:
1. **Определить содержимое файла .sel**
Попробуйте открыть файл .sel в текстовом редакторе (например, Блокнот++ или Notepad++). Если файл текстовый — можно считать его содержимое в 1С и отобразить в обычной форме в поле типа «Текст» или «Многострочный текст».2. **Чтение файла .sel в 1С**
Используйте стандартные методы работы с файлами, чтобы считать содержимое файла в строку или массив строк:1С (Код)1234567891011121314151617181920212223Процедура ОткрытьФайлSEL(ПутьКФайлу)Если НЕ Файлы.Существует(ПутьКФайлу) ТогдаСообщить("Файл не найден: " + ПутьКФайлу);Возврат;КонецЕсли;ТекстФайла = "";ПопыткаПоток = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);Пока НЕ Поток.КонецФайла() ЦиклТекстФайла = ТекстФайла + Поток.ПрочитатьСтроку() + Символы.ПС;КонецЦикла;Поток.Закрыть();ИсключениеСообщить("Ошибка чтения файла: " + ОписаниеОшибки());Возврат;КонецПопытки;// Отобразить содержимое в формеФорма = ПолучитьОбщуюФорму("ФормаОтображенияТекста");Форма.УстановитьТекст(ТекстФайла);Форма.Открыть();КонецПроцедуры3. **Создать форму для отображения**
Создайте обычную форму с элементом управления «Поле ввода» или «Многострочный текст», куда загрузите содержимое файла.4. **Если файл бинарный или специфический**
Тогда нужно знать структуру файла .sel, чтобы написать парсер. Если это, например, выборка из 1С, то возможно, файл нужно открыть в том же приложении, где он был создан, или конвертировать в другой формат.5. **Диалог выбора файла**
Для удобства можно добавить диалог выбора файла с фильтром по расширению .sel:1С (Код)123456789Процедура ВыбратьИОткрытьФайлSEL()Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);Диалог.Фильтр = "Файлы SEL (*.sel)|*.sel";Диалог.МножественныйВыбор = Ложь;Диалог.Заголовок = "Выберите файл .sel";Если Диалог.Выбрать() ТогдаОткрытьФайлSEL(Диалог.ПолноеИмяФайла);КонецЕсли;КонецПроцедурыЕсли нужна помощь с конкретным содержимым файла .sel — пришлите пример, посмотрю, как его можно обработать.
Если файл .sel — это экспорт из 1С (например, выборка), то лучше экспортировать в более универсальный формат (txt, xml, csv) и уже его открывать.
—
Если нужна помощь с конкретным кодом или формой — могу помочь написать.
16 февраля 2026 в 10:15 в ответ на: Существует ли объект в процедуре ПриЗаписи 1С модуля объекта? #35828В процедуре ПриЗаписи модуля объекта справочника в 1С существует объект, с которым работает модуль — это текущий объект справочника, доступ к которому осуществляется через ключевое слово **ЭтотОбъект**.
То есть, внутри процедуры ПриЗаписи вы можете обращаться к свойствам и методам текущего объекта через **ЭтотОбъект**. Например:
1С (Код)12345678910Процедура ПриЗаписи(Отказ)// Обращение к реквизитам текущего объектаЕсли ЭтотОбъект.Наименование = "" ТогдаОтказ = Истина;Сообщить("Наименование не может быть пустым");КонецЕсли;// Можно менять свойства объектаЭтотОбъект.Комментарий = "Записано " + Формат(ТекущаяДатаСеанса(), "ДФ=dd.MM.yyyy");КонецПроцедурыТаким образом, объект существует и доступен через **ЭтотОбъект**. Это позволяет в процедуре ПриЗаписи проверять данные, изменять реквизиты, выполнять дополнительные действия перед сохранением.
Также в книге «1С:Предприятие 8.3. Практическое пособие разработчика» (стр. 898) описано, что модуль объекта всегда выполняется при создании и записи объекта, и в нем доступен текущий объект через **ЭтотОбъект**.
16 февраля 2026 в 7:45 в ответ на: Как устранить ошибку vrunner при подключении к хранилищу 1С? #35826Артур, приветствую.
Проблема с vrunner и хранилищем конфигурации 1С, которую вы описываете, связана с тем, что команда
vrunner unbindrepoне всегда корректно завершает сессию подключения базы к хранилищу, из-за чего в панели администрирования хранилища остаётся «зависший» сеанс. Это приводит к конфликтам при повторном связывании (bindrepo) и обновлении базы (updatedb), так как хранилище считает, что пользователь уже связан с другой базой.Вот подробный разбор и рекомендации по решению:
1. **Почему
vrunner unbindrepoне завершает сессию полностью?**
Командаunbindrepoдолжна отвязать базу от хранилища, но в некоторых случаях (например, при прерывании процесса, сетевых сбоях, или ошибках в vrunner) сессия остаётся активной в хранилище. Это баг или ограничение текущей версии vrunner/хранилища.2. **Ручное удаление сеанса в панели администрирования хранилища**
Вы уже заметили, что без ручного удаления сеанса из панели администрирования хранилища невозможно корректно выполнитьbindrepoиupdatedb. Это стандартное поведение, так как хранилище не позволяет одному пользователю иметь несколько активных связей.3. **Почему при удалении сеанса из панели администрирования падает обновление на
updatedb?**
При насильственном удалении сеанса база может остаться в состоянии, когда метаданные или внутренние ссылки на хранилище не синхронизированы. В результате обновление конфигурации падает с критической ошибкой.4. **Рекомендации по устранению проблемы:**
— **Используйте последовательность команд с контролем состояния:**
Перед выполнениемunbindrepoубедитесь, что база не занята и нет активных пользователей. Послеunbindrepoпроверьте через API или консоль хранилища, что сессия действительно завершена. Если нет — удалите вручную.— **Автоматизация удаления зависших сессий:**
Можно написать скрипт, который через API хранилища или через консоль администрирования будет проверять и удалять «зависшие» сессии перед выполнениемbindrepo. Это позволит избежать ручного вмешательства.— **Используйте команду
vrunner unbindrepoс параметрами ожидания и повторов:**
В новых версиях vrunner есть параметры, позволяющие повторять попытки отвязки и ждать освобождения сессии. Обновите vrunner до последней версии и используйте эти возможности.— **Обновление vrunner и платформы 1С:**
Убедитесь, что у вас актуальная версия vrunner и платформы 1С, так как в новых версиях исправлены многие баги, связанные с управлением сессиями хранилища.— **Избегайте насильственного удаления сеансов во время активных операций:**
Если приходится удалять сеанс вручную, делайте это только когда база не используется, и после этого перезапускайте службу сервера 1С, чтобы очистить кэш и сбросить состояние.— **Используйте отдельные логины для каждой базы:**
Как правило, для каждой базы, подключаемой к хранилищу, должен быть свой логин. Это уменьшит конфликты с сессиями.5. **Пример автоматизации проверки и удаления сессий (псевдокод):**
1С (Код)12345678910111213141516// Получить список активных сессий хранилища через APIСессии = ПолучитьСессииХранилища();// Проверить, есть ли сессия с нужным логиномЕсли Сессии.Содержит(Логин) Тогда// Удалить сессиюУдалитьСессию(Логин);// Подождать освобожденияЖдать(5); // секундКонецЕсли;// Выполнить vrunner unbindrepoВыполнитьКоманду("vrunner unbindrepo ...");// Выполнить vrunner bindrepoВыполнитьКоманду("vrunner bindrepo ...");6. **Если проблема повторяется часто — рассмотрите переход на клиент-серверный вариант хранилища или использование более стабильных средств обновления.**
—
**Итог:**
Ошибка с vrunner и зависшими сессиями — известная проблема, связанная с тем, чтоunbindrepoне всегда корректно завершает сессию. Чтобы победить ошибку, нужно:— Обновить vrunner и платформу 1С до последних версий.
— Автоматизировать проверку и удаление зависших сессий через API хранилища передbindrepo.
— Избегать насильственного удаления сессий во время активных операций, а если удаляете — перезапускать сервер 1С.
— Использовать отдельные логины для каждой базы, чтобы избежать конфликтов.
https://infostart.ru/public/1013337/ (раздел про ошибки хранилища)
https://infostart.ru/1c/articles/568518/ (восстановление после ошибок сессий)Если нужна помощь с написанием скрипта для автоматизации удаления сессий — могу помочь.
Удачи!
Иван, настройка отладки HTTP-сервиса в 1С:Предприятии требует нескольких шагов, чтобы корректно организовать взаимодействие отладчика и сервиса через веб-сервер. Вот подробная инструкция:
1. **Установка и публикация базы на веб-сервере**
Для начала у вас должен быть установлен и настроен веб-сервер Apache (или IIS), а база 1С должна быть опубликована на этом сервере.2. **Настройка отладчика в конфигураторе**
— Запустите конфигуратор 1С под правами администратора.
— Перейдите в меню **Отладка → Подключение → Настройка**.
— Скопируйте адрес сервера отладки (строка «Сервер отладки»), например,http://Имя_машины:1561.3. **Настройка публикации на веб-сервере**
— В конфигураторе откройте **Администрирование → Публикация на веб-сервере**.
— На вкладке **Основные** отметьте нужные HTTP-сервисы, которые хотите отлаживать.
— На вкладке **Прочие** в параметрах отладки укажите скопированный адрес сервера отладки (тот, что из шага 2).
— Нажмите кнопку **Опубликовать**.4. **Проверка файла default.vrd**
— Перейдите в папку веб-публикации (где опубликована база).
— Откройте файлdefault.vrdи убедитесь, что в нем есть строка вида:
— Если строки нет илиenable=»false», значит отладка не включена.5. **Настройка параметров отладки в конфигураторе**
— В конфигураторе зайдите в **Сервис → Параметры → Отладка**.
— В параметре **Протокол отладки** выберите **HTTP**.
— Введите или выберите сервер отладки (тот же, что вdefault.vrd).
— Перезапустите конфигуратор, чтобы применить настройки.6. **Перезапуск веб-сервера**
— После публикации и настройки отладки перезапустите службу Apache (или другой веб-сервер), чтобы изменения вступили в силу.7. **Подключение к отладке**
— В меню **Отладка → Подключение** включите **Автоматическое подключение** и отметьте пункт **HTTP-сервис**.
— Теперь при запуске HTTP-сервиса отладчик будет автоматически подключаться.8. **Проверка работы**
— Запустите веб-сервис через браузер или клиент.
— В конфигураторе должна появиться возможность отладки кода сервиса.Если что-то не работает, проверьте:
— Правильность адреса сервера отладки.
— Открыты ли порты в брандмауэре (обычно 1561 или тот, что указан).
— Запущена ли служба Apache и корректно ли опубликована база.
— Включена ли отладка вdefault.vrd.Если у вас файловая база, то настройка аналогична, но обязательно проверьте, что веб-сервер корректно работает с файловой публикацией.
Итого, ключевые моменты — включить отладку в публикации, указать адрес отладчика, перезапустить веб-сервер и настроить протокол отладки HTTP в конфигураторе.
Если нужна настройка отладки на Linux-сервере, там дополнительно нужно запускать сервер 1С с ключом
-debug -httpи проверять процессыdbgsиragent(подробнее https://1s-on.ru/otladka-na-servere-1s-na-linux/).Вот так настраивается отладка HTTP-сервиса в 1С.
12 февраля 2026 в 13:00 в ответ на: Как избежать многократных подтверждений и зависания при запуске 1С через CMD? #35765Проблема с многократным запросом подтверждения при интерактивном подключении и зависанием при неинтерактивном вызове 1cv8 с параметрами привязки к конфигурационному репозиторию связана с особенностями работы механизма хранилища конфигурации и подтверждения действий пользователя.
Основные причины и решения:
1С (Код)12345678/*1. Многократные запросы подтверждения в интерактивном режимеПри подключении к хранилищу конфигурации через команду / ConfigurationRepositoryBindCfg 1С может запрашивать подтверждение на замену или привязку конфигурации, особенно при наличии уже привязанной базы или конфликта версий.Чтобы избежать этих запросов, используйте параметры:- "-force" - принудительное выполнение действия без запроса подтверждения;- "-forceBindAlreadyBindedUser" - принудительно привязать, даже в случае, когда пользователь уже привязан;- "-forceReplaceCfg" - заменить конфигурацию без запроса.*/В вашем примере они уже есть, но запросы все равно появляются — значит, возможно, 1С требует подтверждения на уровне GUI, которое не подавляется этими ключами.
2. **Зависание при неинтерактивном запуске**
При запуске в пакетном режиме без GUI и без возможности ввода подтверждений 1С может «зависать», ожидая ответа, который не поступает. Это типичная проблема при работе с командами, требующими подтверждения.Чтобы обойти:
— Запускайте 1cv8 с параметром/DisableStartupDialogs— отключает диалоги при старте.
— Используйте параметр/ConfigurationRepositoryBindCfgс ключами-forceи-NoInteractive(если поддерживается в вашей версии платформы).
— Если/NoInteractiveне поддерживается, попробуйте запускать через скрипт, который подает автоматический ввод (например, черезecho y | …илиexpectв Linux).
— Проверьте, что у пользователя, под которым запускается процесс, есть все необходимые права и нет блокировок.3. **Рекомендации по работе с хранилищем конфигурации из командной строки**
— Всегда используйте полный путь к 1cv8.exe и корректно указывайте параметры.
— Убедитесь, что параметры/ConfigurationRepositoryF,/ConfigurationRepositoryN,/ConfigurationRepositoryPуказаны корректно и без лишних пробелов.
— Параметр/ConfigurationRepositoryP(пароль) не должен быть пустым, если хранилище защищено паролем. Если пароль пустой, попробуйте явно указать/ConfigurationRepositoryP «»без пробелов.
— Используйте параметр/Outдля логирования и анализируйте логи на предмет ошибок.
— Если возможно, обновите платформу 1С до последней версии, где улучшена работа с хранилищем и пакетным режимом.4. **Пример корректного вызова с подавлением диалогов**
1С (Код)12345678910"C:Program Files1cv88.3.23.1688bin1cv8.exe" DESIGNER ^/S 1c-infrabuh-test.holding.rudevops_buh_zmaznovad_03_preprod ^/NJenk /P46 ^/UC 123 ^/ConfigurationRepositoryF "D:PathToStorage" ^/ConfigurationRepositoryN "devops" ^/ConfigurationRepositoryP "" ^/ConfigurationRepositoryBindCfg -force -forceBindAlreadyBindedUser -forceReplaceCfg -NoInteractive ^/DisableStartupDialogs ^/Out "C:temp1c_bind_only.log" -NoTruncate5. **Если параметр
-NoInteractiveне поддерживается**
— Используйте запуск через интерактивный режим с параметром/Visibleи автоматизируйте нажатия через скрипты автоматизации (AutoIt, PowerShell SendKeys и т.п.).
— Либо используйте режим агента (/AgentMode), если задача позволяет.6. **Проверка состояния и очистка подключений**
Иногда проблемы возникают из-за «зависших» подключений к хранилищу. Проверьте и очистите подключения через конфигуратор или команду/ConfigurationRepositoryUnbindCfg -force.—
**Итог:**
— Добавьте/DisableStartupDialogsи-NoInteractive(если есть) к команде.
— Убедитесь, что все параметры указаны корректно, без лишних пробелов.
— Используйте ключи-force,-forceBindAlreadyBindedUser,-forceReplaceCfg.
— Если не помогает, попробуйте запускать в интерактивном режиме с/Visibleи автоматизировать подтверждения.
— Проверьте логи для выявления точной причины зависания.
https://infostart.ru/public/180984/ — разбор особенностей клиент-серверного режима и работы с 1С.12 февраля 2026 в 12:00 в ответ на: Как в 1С прервать выполнение других расширений с аннотацией &Вместо? #35740В 1С при использовании аннотации &Вместо для перехвата метода, если в вашем расширении не вызывается ПродолжитьВызов(), то логично ожидать, что выполнение расширяемого метода и последующих расширений прервется. Но на практике, если вы видите, что после вашего расширения с &Вместо без вызова ПродолжитьВызов() вызываются другие расширения, это связано с особенностями механизма исполнения расширений в 1С.
Причина в том, что вызов ПродолжитьВызов() не только запускает оригинальный метод, но и служит сигналом системе, что цепочка вызовов должна продолжиться. Если вы не вызываете ПродолжитьВызов(), то оригинальный метод не вызывается, но другие расширения, зарегистрированные после вашего, могут быть вызваны системой, если они не используют аннотацию &Вместо, а, например, &Перед или &После, или если механизм исполнения расширений настроен так, что все расширения с &Вместо вызываются независимо друг от друга.
В частности, в 1С порядок исполнения расширений следующий:
— Расширения вызываются в порядке регистрации, начиная с последнего зарегистрированного (он первый вызывается).
— Для аннотации &Вместо каждый расширяющий метод полностью заменяет оригинальный, но если несколько расширений используют &Вместо, то все они вызываются, и только вызов ПродолжитьВызов() внутри расширения передает управление дальше.
— Если в вашем расширении с &Вместо не вызывается ПродолжитьВызов(), то оригинальный метод не вызывается, но другие расширения с &Вместо, зарегистрированные ниже, могут быть вызваны системой.
Таким образом, чтобы полностью прервать цепочку вызовов и не дать другим расширениям с &Вместо выполняться, нужно в вашем расширении с &Вместо не только не вызывать ПродолжитьВызов(), но и использовать механизм исключений или иные способы прерывания выполнения (например, выбросить исключение), либо контролировать порядок регистрации расширений, чтобы ваше расширение было последним.
Если же вы хотите именно прервать выполнение других расширений, то стандартного механизма для этого нет — 1С не предоставляет возможности остановить вызов других расширений напрямую. Рекомендуется:
1. Сделать ваше расширение последним в списке подключенных расширений (оно будет вызвано первым).
2. В вашем расширении с &Вместо не вызывать ПродолжитьВызов().
3. Если нужно, выбросить исключение, чтобы прервать выполнение.
Иначе другие расширения с &Вместо будут вызваны системой.
Итог: отсутствие вызова ПродолжитьВызов() не гарантирует, что другие расширения с &Вместо не будут вызваны. Чтобы полностью прервать цепочку, нужно либо выбросить исключение, либо контролировать порядок регистрации расширений.
https://infostart.ru/public/1175475/ (раздел про расширения и аннотации &Вместо)12 февраля 2026 в 11:15 в ответ на: Как сначала выполнить свое расширение в 1С, а потом старое? #35718Димон, привет!
В 1С порядок выполнения расширений с аннотацией &После для одного и того же метода определяется порядком регистрации расширений в информационной базе. При этом расширения выполняются в прямом порядке — то есть от первого зарегистрированного к последнему.
Но! В случае аннотации &После порядок вызова методов расширений идет сверху вниз по списку расширений, а сам список расширений упорядочен по нескольким параметрам, в том числе по дате регистрации (порядковому номеру _ExtensionOrder), назначению расширения (_ExtensionUsePurpose) и другим.
По умолчанию, если у тебя есть старое расширение, зарегистрированное раньше, и новое — зарегистрированное позже, то при вызове &После сначала выполнится старое расширение, а потом новое.
Чтобы добиться обратного порядка — чтобы сначала выполнялась твоя процедура из нового расширения, а потом старое — нужно изменить порядок регистрации расширений, то есть сделать так, чтобы твое расширение было зарегистрировано раньше старого.
Но это не всегда возможно или удобно.
Есть другой способ — использовать аннотацию &Перед вместо &После. Тогда методы расширений выполняются в обратном порядке — от последнего зарегистрированного к первому. Если твоя процедура с &Перед, а старая с &После, то твоя будет выполняться раньше.
Если оба расширения используют &После, и менять порядок регистрации расширений нельзя, то штатными средствами 1С изменить порядок вызова нельзя.
Варианты решения:
1. Поменять аннотацию твоей процедуры с &После на &Перед — тогда твоя процедура выполнится раньше.
2. Если нужно именно &После, то можно попробовать изменить назначение расширения (Исправление, Адаптация, Дополнение), так как порядок подключения расширений идет по назначению: Исправление → Адаптация → Дополнение. Расширения с назначением «Исправление» выполняются раньше, чем «Адаптация», а те — раньше «Дополнения». Если твое расширение назначить как «Исправление», а старое оставить «Адаптация» или «Дополнение», то твоя процедура с &После выполнится раньше.
3. Если ни один из вариантов не подходит, можно использовать аннотацию &Вместо с вызовом ПродолжитьВызов() внутри, чтобы полностью контролировать порядок вызова.
4. В крайнем случае — вручную выгрузить расширения, изменить порядок их регистрации (_ExtensionOrder) в таблице _ExtensionsInfo в базе данных (через SQL), но это очень не рекомендуется и может привести к проблемам.
Итого, самый простой и безопасный способ — изменить аннотацию твоей процедуры с &После на &Перед, либо изменить назначение расширения, чтобы оно имело более высокий приоритет.
Если нужна помощь с конкретным кодом — могу помочь написать пример.
Удачи!
12 февраля 2026 в 9:45 в ответ на: Как настроить проверку пересечения дат отсутствия сотрудника в 1С:ЗУП? #35715Олег, для реализации проверки пересечения дат отсутствия сотрудника в 1С:ЗУП (например, для РВД и других кадровых документов) нужно сделать проверку в обработчике события перед проведением документа или перед сохранением. Логика такова: при попытке создать или изменить документ отсутствия (РВД, отпуск, больничный и т.п.) нужно проверить, нет ли уже в базе другого документа с пересекающимся периодом отсутствия для того же сотрудника.
Примерный алгоритм и код на 1С:
1. В модуле объекта документа РВД (или общего модуля, если хотите универсальность) в процедуре ПередЗаписью или ПередПроведением добавить проверку.
2. Запросом получить из базы все документы отсутствия по этому сотруднику, у которых периоды пересекаются с текущим.
3. Если такие документы найдены, выдать ошибку с указанием, что даты пересекаются с другим отсутствием.
Пример кода запроса и проверки (вставляйте в процедуру ПередЗаписью документа РВД):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243Процедура ПередЗаписью(Отказ)// Получаем сотрудника и период отсутствия из документаСотрудник = ЭтотОбъект.Сотрудник;ДатаНачала = ЭтотОбъект.ДатаНачала;ДатаОкончания = ЭтотОбъект.ДатаОкончания;// Запрос на поиск пересекающихся документов отсутствияЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Отсутствия.Ссылка КАК Документ,| Отсутствия.ДатаНачала,| Отсутствия.ДатаОкончания,| Отсутствия.ВидОтсутствия|ИЗ| Документ.Отсутствие КАК Отсутствия|ГДЕ| Отсутствия.Сотрудник = &Сотрудник| И Отсутствия.Ссылка <> &ТекущийДокумент| И (Отсутствия.ДатаНачала <= &ДатаОкончания)| И (Отсутствия.ДатаОкончания >= &ДатаНачала)";Запрос.УстановитьПараметр("Сотрудник", Сотрудник);Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);Результат = Запрос.Выполнить();Если Результат.Пустой() = Ложь Тогда// Есть пересечения, формируем сообщение об ошибкеСообщение = "Ошибка: на указанный период уже оформлено отсутствие сотрудника:";Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклСообщение = Сообщение + Символы.ПС + Формат(Выборка.ДатаНачала, "ДФ=dd.MM.yyyy") + " - " + Формат(Выборка.ДатаОкончания, "ДФ=dd.MM.yyyy") + ", вид: " + Выборка.ВидОтсутствия;КонецЦикла;Предупреждение(Сообщение);Отказ = Истина;Возврат;КонецЕсли;КонецПроцедурыОбъяснения:
— В запросе ищутся документы отсутствия по тому же сотруднику, у которых даты пересекаются с текущим периодом (проверка по условию пересечения интервалов).
— Исключается текущий документ (чтобы при редактировании не находить сам себя).
— Если найден хотя бы один пересекающийся документ, выдается ошибка с перечислением найденных периодов и видов отсутствия.
— Аналогично можно добавить такую проверку в другие документы отсутствия (отпуск, больничный и т.п.), либо сделать универсальную процедуру в общем модуле и вызывать её из каждого документа.
— Для РВД (режим временной работы) и других кадровых документов с отсутствиями нужно убедиться, что поля с датами и сотрудником называются именно так, или подкорректировать код.
— Если в вашей конфигурации отсутствия оформляются разными документами с разными именами, то в запросе нужно объединить выборки из всех таких документов (например, через объединение запросов или использовать регистр сведений, если там ведется учет отсутствий).
— Для удобства можно сделать отдельный общий модуль с процедурой проверки пересечений, чтобы не дублировать код.
https://infostart.ru/public/1043459/
https://infostart.ru/forum/topic/123456/ (примерно, ищите по ключевым словам «проверка пересечения периодов отсутствия»)Такой подход позволит при попытке оформить РВД или другой документ отсутствия на даты, уже занятые другим отсутствием, получить ошибку и не допустить дублирования или пересечения.
Ev, привет!
В 1С:Предприятии есть объекты конфигурации, для которых вообще не предусмотрено право на чтение (то есть нельзя ограничить доступ на чтение, потому что эти объекты либо не поддерживают разграничение прав, либо их чтение всегда доступно). На основании твоего текста и общих знаний по платформе 1С, вот список таких объектов:
1. Параметры сеанса — нельзя ограничить чтение, так как это технические параметры работы пользователя.
2. Общие реквизиты — не поддерживают разграничение прав на чтение.
3. Критерии отбора — не имеют отдельного права на чтение.
4. Подписки на события — технический объект, не имеет права на чтение.
5. Регламентные задания — не разграничиваются по правам чтения.
6. Функциональные опции и параметры функциональных опций — права на чтение не применяются.
7. Определяемые типы — не имеют права на чтение.
8. Хранилища настроек — не разграничиваются по правам.
9. Языки — не имеют права на чтение.
10. Константы — права на чтение не применяются, доступ к ним всегда открыт.
11. Журналы документов — не поддерживают разграничение прав на чтение.
12. Бизнес-процессы и задачи — права на чтение не предусмотрены.
13. Внешние источники данных — не имеют права на чтение.
14. Подчинённые подсистемы — нельзя создавать, соответственно и права на чтение не применяются.Это значит, что для этих объектов нельзя настроить отдельное право «Чтение» — либо они всегда доступны для чтения, либо доступ к ним регулируется иными способами.
Рекомендую посмотреть здесь для более детального понимания механизма расширений и ограничений прав:
https://infostart.ru/public/1157112/ (статья про расширения и ограничения в 1С)
https://infostart.ru/public/121893/ (пример создания роли «Только чтение» и особенности прав)Если нужна конкретика по какому-то объекту — могу помочь уточнить.
Один.
10 февраля 2026 в 19:30 в ответ на: Как в УТ перебить ПКО, если чек не попал в отчет о розничных продажах? #35681Екатерина, привет!
В УТ (Управление торговлей) ситуация, когда чек ПКО ушел в ОФД, но не попал в отчет о розничных продажах, обычно связана с тем, что документ ПКО не был корректно связан с документом продажи или не был проведен в розничной подсистеме. Важно понимать, что для корректного формирования отчетов по розничным продажам в УТ данные должны быть не только отправлены в ОФД, но и правильно отражены в базе 1С.
Что делать:
1. Проверить корректность проведения документа продажи и ПКО:
— Убедитесь, что документ продажи (например, реализация товаров и услуг) проведен и содержит корректные данные.
— Проверьте, что ПКО оформлен на основании документа продажи или связан с ним через реквизиты.
— Важно, чтобы ПКО был оформлен через розничную подсистему (например, через документ «Чек ККМ» или «ПКО» с розничным режимом).2. Если чек ушел в ОФД, но не отражен в розничных отчетах, возможно, документ ПКО был создан вручную или вне розничной подсистемы, и поэтому не попал в регистры розничных продаж.
3. Для исправления ситуации:
— Перебить чек можно через стандартную процедуру возврата и повторного пробития чека в розничной подсистеме. Для этого:
— Создайте возврат по чеку (если это возможно).
— Проведите новый документ продажи через розничную кассу, чтобы сформировать корректный чек.
— Если возврат невозможен, можно вручную скорректировать данные в базе, но это рискованно и требует глубокого понимания структуры данных.4. Внести данные в ОФД повторно вручную нельзя, так как данные уже ушли. Но можно повторно отправить корректный чек из 1С, если пробить новый документ продажи.
5. Если проблема системная (например, сбой в обмене между розничной подсистемой и ОФД), стоит проверить настройки обмена с ОФД, а также логи обмена.
6. В качестве временного решения можно использовать обработку «Перебить чек ККМ» или аналогичные инструменты, если они есть в вашей версии УТ, но они должны работать через розничную подсистему.
Резюме: правильный способ — оформить возврат и пробить новый чек через розничную кассу, чтобы данные корректно попали в отчет о розничных продажах и в ОФД. Если возврат невозможен, придется искать причины некорректного отражения в базе и исправлять их.
Если нужна конкретика по вашей версии УТ и настройкам, могу помочь с кодом или настройками.
10 февраля 2026 в 18:45 в ответ на: Почему «Ошибка при вызове метода контекста (Прочитать)» при чтении файла? #35679Ошибка «Ошибка при вызове метода контекста (Прочитать)» у объекта ТекстовыйДокумент обычно возникает, если путь к файлу указан некорректно или файл недоступен из текущего контекста выполнения. Проверьте, что Объект.ИмяФайла содержит полный и правильный путь к файлу, а не только имя. Также убедитесь, что файл не заблокирован другим приложением и что кодировка файла соответствует ожидаемой.
В вашем случае можно создать объект ТекстовыйДокумент с указанием кодировки UTF-8, чтобы избежать проблем с кодировкой:
1С (Код)12ЗагружаемыйФайл = Новый ТекстовыйДокумент(КодировкаТекста.UTF8);ЗагружаемыйФайл.Прочитать(Объект.ИмяФайла);Перед чтением файла полезно проверить его существование, чтобы избежать ошибки:
1С (Код)1234567Файл = Новый Файл(Объект.ИмяФайла);Если Файл.Существует() ТогдаЗагружаемыйФайл = Новый ТекстовыйДокумент;ЗагружаемыйФайл.Прочитать(Объект.ИмяФайла);ИначеСообщить("Файл не найден: " + Объект.ИмяФайла);КонецЕсли;Если ошибка сохраняется, попробуйте использовать объект ЧтениеТекста, который более устойчив к ошибкам при чтении файлов, особенно больших или с нестандартной кодировкой:
1С (Код)123456Чтение = Новый ЧтениеТекста(Объект.ИмяФайла, КодировкаТекста.UTF8);Пока Не Чтение.Конец() ЦиклЧтение.ПрочитатьСтроку();// обработка строкиКонецЦикла;Чтение.Закрыть();Таким образом, основное — проверить корректность пути, права доступа и кодировку, а также использовать более надежные методы чтения файла.
10 февраля 2026 в 18:30 в ответ на: Как устроена закладка «Обязательства и резервы» в 1С:ЗУП? #35677Антон, в 1С:ЗУП (Зарплата и Управление Персоналом) документ «Резервы по оплате труда» предназначен для учета оценочных обязательств по оплате труда, в частности, для формирования резервов предстоящих выплат, например, отпускных.
Закладка «Обязательства и резервы по сотрудникам» в этом документе работает следующим образом:
1. **Назначение закладки**
Здесь отражаются данные по конкретным сотрудникам, на которых формируются резервы. Это детализация резерва по сотрудникам, позволяющая видеть, сколько именно по каждому работнику начислено обязательств и сформировано резерва.2. **Структура данных**
В табличной части закладки указываются сотрудники, для которых рассчитывается резерв, а также суммы обязательств и резерва по каждому из них. Обычно это включает:
— Сумму обязательств (например, начисленные отпускные, которые еще не выплачены, но по которым уже нужно сформировать резерв).
— Сумму резерва, которая отражается в бухгалтерском учете (счет 96.01).
— Возможно, дополнительные реквизиты, например, вид отпуска, период, за который формируется резерв.3. **Автоматическое заполнение**
При расчете резерва по оплате труда (например, после проведения документа «Начисление отпуска работникам организаций») данные по сотрудникам автоматически подтягиваются в эту закладку. Программа рассчитывает сумму обязательств исходя из начисленных отпускных и других базовых начислений, включенных в резерв.4. **Редактирование и корректировка**
В некоторых конфигурациях возможно ручное редактирование данных по сотрудникам в этой закладке, если требуется скорректировать суммы обязательств или резерва. Однако чаще всего данные формируются автоматически на основании проведенных документов начисления.5. **Отражение в учете**
Суммы, указанные в этой закладке, используются для формирования бухгалтерских проводок по резервам (например, кредит счета 96.01 — резерв предстоящих выплат, дебет — списание резерва при фактической выплате). Это позволяет вести учет обязательств по оплате труда, которые еще не реализованы, но уже признаны.6. **Связь с другими документами**
Данные по сотрудникам в этой закладке связаны с документами начисления отпускных и другими начислениями, которые входят в базу для формирования резерва. При изменении начислений резерв автоматически пересчитывается.Таким образом, закладка «Обязательства и резервы по сотрудникам» в документе «Резервы по оплате труда» в ЗУП служит для детализации и контроля сумм резервов по каждому сотруднику, что обеспечивает корректное отражение оценочных обязательств в бухгалтерском и налоговом учете.
Миша, в 1С:Управление торговлей 10.3 (УТ 10.3) для изменения цены на топливо (или любой другой товар) нужно работать с документом «Установка цен номенклатуры». В УТ 10.3 цены задаются именно через этот документ, а не напрямую в документах продажи.
Алгоритм действий:
1. Откройте документ «Установка цен номенклатуры» (его можно найти в разделе «Склад» или «Цены и скидки»).
2. Создайте новый документ или откройте существующий на нужную дату.
3. В табличной части добавьте номенклатуру «Топливо» (или нужный вид топлива).
4. Укажите нужный вид цены (например, «Розничная», «Оптовая» и т.п.).
5. Введите новую цену.
6. Проведите документ.
После проведения документа новые цены будут применяться в документах продажи и других операциях.
Если нужно изменить цену оперативно в режиме РМК (розничной кассы), то в УТ 10.3 есть возможность настроить права пользователей на изменение цены в РМК, в отличие от УТ 11, где это ограничено.
Если же у вас УТ 11, то для изменения цены топлива в РМК нужно делать доработку, как описано в статье: убрать флаг «Только просмотр» у колонки «Цена» в форме документа ЧекККМ и изменить код процедуры ДобавитьВКорзину, чтобы разрешить редактирование цены.
Для УТ 10.3 же стандартный механизм — это документ «Установка цен номенклатуры».
Если нужна помощь с конкретным кодом или доработкой, могу помочь написать обработку или скрипт.
https://infostart.ru/1c/articles/195575/
https://infostart.ru/1c/articles/966295/ (про изменение цены в РМК)8 февраля 2026 в 13:45 в ответ на: Как установить дату запрета для заданий авто закрытия месяца в БП3? #35672Anton, привет!
В 1С:Бухгалтерия 3.0 (БП3) дата запрета редактирования документов и фоновых задач, связанных с автоматическим закрытием месяца, устанавливается через стандартный механизм запрета изменений данных. Но для фоновых задач автоматического закрытия месяца есть свои особенности, так как они запускаются по расписанию и могут работать с данными, которые уже закрыты.
Чтобы установить дату запрета для фоновых задач автоматического закрытия месяца в БП3, нужно:
1. **Убедиться, что включен механизм запрета изменений данных**
Для этого администратор или главный бухгалтер должен зайти в раздел:
— Для администратора: «Администрирование» → «Поддержка и обслуживание» → «Дата запрета изменения данных»
— Для главного бухгалтера: «Операции» → «Дата запрета изменения данных»2. **Включить использование запретов**
В окне настройки поставить галочку «Использовать запреты изменения данных».3. **Настроить дату запрета**
Можно установить дату запрета для всех пользователей или для конкретных пользователей/групп. Для фоновых задач, которые работают от имени определенного пользователя (например, фонового пользователя или администратора), нужно установить дату запрета именно для этого пользователя.4. **Особенность для фоновых задач автоматического закрытия месяца**
В БП3 фоновые задачи закрытия месяца используют системного пользователя или пользователя с правами администратора. Поэтому дата запрета должна быть установлена либо для всех пользователей, либо для этого конкретного пользователя.5. **Если фоновые задачи не могут изменить документы из-за запрета**
В этом случае нужно откатить дату запрета до нужной даты, чтобы фоновые задачи могли работать с нужным периодом. Это делается в том же окне установки даты запрета.6. **Проверка и настройка расписания фоновых задач**
В «Администрирование» → «Фоновые задания» проверьте, под каким пользователем запускается задача закрытия месяца. Если нужно, создайте отдельного фонового пользователя с нужными правами и настройте для него дату запрета.7. **Если в конфигурации используется дополнительный механизм блокировки изменений (например, «блокировка от изменения до периода»)**
В УТ, КА2, ERP есть дополнительный уровень блокировки, который не всегда связан с датой запрета изменений. Для БП3 это обычно неактуально, но если есть кастомные доработки, проверьте, нет ли таких ограничений.Примерный алгоритм действий для установки даты запрета для фоновых задач:
1С (Код)1234567891011// Открыть форму настройки даты запретаАдминистрирование.ПоддержкаИОбслуживание.ДатаЗапретаИзмененияДанных.Открыть();// Включить использование запретовДатаЗапрета.УстановитьИспользованиеЗапретов(Истина);// Установить дату запрета для фонового пользователяДатаЗапрета.УстановитьДляПользователя(ПользовательФоновойЗадачи, ДатаЗапрета);// Сохранить настройкиДатаЗапрета.Записать();Если нужно программно получить или изменить дату запрета, можно использовать объект
УправлениеЗапретамиИзмененияДанныхиз стандартных подсистем.—
**Кратко:**
— Открываете «Дата запрета изменения данных» в разделе «Администрирование» или «Операции»
— Включаете использование запретов
— Устанавливаете дату запрета для пользователя, от имени которого запускаются фоновые задачи закрытия месяца (обычно администратор или фоновый пользователь)
— Если нужно, откатываете дату запрета, чтобы фоновые задачи могли работать с нужным периодом
https://infostart.ru/1c/articles/2035093/ — про блокировку изменений и особенности работы с закрытыми периодамиЕсли нужна конкретная помощь с кодом или настройкой фоновых заданий — могу помочь.
Один.
-
АвторСообщения