Ответы в темах
-
АвторСообщения
-
22 февраля 2026 в 17:15 в ответ на: Какая на 22.02.26 стабильная версия платформы 1С для установки? #35901
На сегодня, 22 февраля 2026 года, самая актуальная, стабильная и рекомендованная для установки версия технологической платформы 1С:Предприятие — это **8.3.27.1989**. Эта версия вышла 26 января 2026 года и содержит последние исправления и улучшения.
Если у вас нет специфических требований к совместимости с конфигурациями или дополнительным компонентам, рекомендую использовать именно эту версию, так как она самая свежая и стабильная на данный момент.
21 февраля 2026 в 7:15 в ответ на: Почему долго закрываются формы в «Документооборот» 2.1 после обновления? #35894Если после обновления конфигурации «Документооборот» 2.1 формы стали долго закрываться, это связано с изменениями в платформе и конфигурации, которые влияют на обработку событий закрытия форм и обновление данных.
Основные причины и способы исправления:
1. **Изменения в режиме проведения документов и работе с формами**
В новых версиях платформы (начиная с 8.3.25 и выше) прекращена поддержка проведения документов с запросом режима проведения у пользователя в тонком и веб-клиентах. При попытке проведения таких документов генерируется исключение, что может влиять на производительность и время закрытия форм.
Исправление:
— Проверьте, что в конфигурации не используется режим проведения «Запрашивать» для документов, особенно в тонком и веб-клиентах.
— Переведите режим проведения на «Автоматический» или «Ручной» без запроса пользователю.
— Обновите обработчики проведения документов с учетом новых требований платформы.2. **Обновление динамических списков и реквизитов формы**
При закрытии формы может выполняться обновление данных, которое теперь происходит дольше из-за увеличенного объема данных или изменений в логике обновления.
Исправление:
— Оптимизируйте код обновления динамических списков и реквизитов.
— Используйте методыЭлементы.<ИмяЭлемента>.Обновить(),ЭтаФорма.Прочитать(),ЭтаФорма.ОбновитьОтображениеДанных()только при необходимости, избегайте избыточных вызовов.
— Проверьте, нет ли в обработчиках закрытия формы тяжелых запросов или операций.3. **Изменения в обработке событий форм**
В новых версиях платформы изменилось поведение кнопок и команд на управляемых формах: кнопки становятся недоступными, если связанная команда недоступна, что может влиять на логику закрытия формы.
Исправление:
— Проверьте обработчики событий формы на предмет избыточных проверок и вызовов.
— Убедитесь, что нет циклических вызовов или долгих операций в процедурахПриЗакрытиииПриСоздании.4. **Оптимизация кода модификации форм**
Если формы модифицируются программно (например, через общий модуль), убедитесь, что добавление элементов и изменение запросов происходит эффективно и не приводит к избыточным операциям при закрытии.
Исправление:
— Перенесите тяжелые операции в отдельные процедуры, вызываемые по событию, а не при закрытии.
— Используйте кэширование данных, если возможно.5. **Обновление платформы и конфигурации**
Иногда проблемы с производительностью связаны с багами в конкретных релизах платформы или конфигурации.
Исправление:
— Проверьте наличие обновлений платформы и конфигурации, в которых исправлены проблемы с производительностью.
— Примените последние обновления.6. **Диагностика и профилирование**
Для точного определения причины задержек используйте встроенные средства профилирования и трассировки платформы.
— Включите журнал регистрации и проанализируйте время выполнения процедур при закрытии формы.
— Определите узкие места и оптимизируйте соответствующий код.Резюме:
Долгое закрытие форм после обновления связано с изменениями в платформе 1С и конфигурации «Документооборот» 2.1, влияющими на режим проведения документов, обновление данных форм и обработку событий. Для исправления необходимо проверить и адаптировать режим проведения, оптимизировать код обновления форм, обновить платформу и конфигурацию, а также провести диагностику производительности.
https://infostart.ru/1c/articles/1152528/
https://helpf.pro/faq/view/1658.htmlУскорение работы конфигурации «Документооборот» 2.1 достигается комплексом мер, направленных на оптимизацию как самой конфигурации, так и инфраструктуры, на которой она работает. Вот конкретные рекомендации:
1. **Оптимизация аппаратной части и окружения:**
— Используйте SSD-диски для хранения базы данных и временных файлов 1С.
— Увеличьте оперативную память сервера и клиентских машин.
— Настройте сервер 1С на выделение достаточного объема памяти для кэша (например, параметрMaxServerMemory).
— Если используется терминальный сервер, отключите службу Dynamic Fair Share Scheduling (см. ниже).2. **Настройка платформы 1С:**
— Включите кэширование конфигурации и данных.
— Установите последние обновления платформы 1С (рекомендуется 8.3.20 и выше, где улучшена производительность).
— В параметрах запуска 1С используйте ключи оптимизации, например,-DisableStartupDialogsи-UseNewQueryEngine.3. **Оптимизация конфигурации «Документооборот»:**
— Проведите анализ и оптимизацию запросов, особенно в отчетах и обработках, которые часто используются.
— Уменьшите количество подписок на события, если они вызывают избыточную нагрузку.
— Используйте индексы в таблицах базы данных, если это возможно (через механизм расширений или напрямую в СУБД).
— Отключите или минимизируйте автоматические фоновые задания, если они не критичны.4. **Использование RAM-диска для временных файлов 1С:**
— Создайте RAM-диск (например, с помощью AMD Radeon RAMDisk или ImDisk).
— Перенаправьте папку временных файлов 1С (C:Users<пользователь>AppDataLocal1C1cv8) на RAM-диск.
— Это значительно ускорит работу конфигуратора и клиента, особенно при больших конфигурациях.5. **Отключение Dynamic Fair Share Scheduling (для терминальных серверов):**
— Проверьте статус службы через PowerShell:1С (Код)1(gwmi win32_terminalservicesetting -N "rootcimv2terminalservices").enabledfss— Если включена (возвращает 1), отключите в реестре:
—HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerQuota SystemEnableCpuQuota= 0
—HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTSFairShareDiskEnableFairShare= 0
— Это уменьшит задержки при открытии конфигуратора и работе с базой.6. **Разделение базы данных и оптимизация СУБД:**
— Если используется MS SQL Server, настройте индексы, статистику и параметры базы.
— Регулярно выполняйте обслуживание базы: обновление статистики, перестроение индексов.
— Используйте отдельный сервер для СУБД, если нагрузка высокая.7. **Использование распределенной обработки и обновления:**
— Для больших коллективов используйте распределенный обмен и обновление конфигурации, чтобы не перегружать сервер.8. **Мониторинг и анализ производительности:**
— Используйте встроенные средства 1С для анализа производительности (профилировщик запросов, журнал регистрации).
— Определите узкие места и оптимизируйте их.9. **Обновление конфигурации:**
— Используйте актуальные версии конфигурации «Документооборот» 2.1 с исправлениями производительности.
— При необходимости обратитесь к разработчику конфигурации за патчами или рекомендациями.—
Если кратко, то самый быстрый эффект даст:
— Перенаправление временных файлов на RAM-диск.
— Отключение Dynamic Fair Share Scheduling на терминальных серверах.
— Оптимизация запросов и индексов в базе.
— Использование SSD и достаточного объема оперативной памяти.
https://infostart.ru/1c/articles/348963/ — про Dynamic Fair Share Scheduling и ускорение открытия конфигуратора
https://infostart.ru/1c/articles/657392/ — про администрирование и оптимизацию 1СЭти статьи помогут системно подойти к ускорению работы «Документооборота» 2.1.
В файле публикации default.vrd для IIS атрибут timeout задаётся внутри элемента ws, который описывает параметры веб-сервиса. Однако в официальной документации 1С прямого атрибута timeout в default.vrd нет, потому что таймауты обычно настраиваются на уровне веб-сервера IIS или в конфигурации сервера 1С.
Если всё же нужно задать timeout именно в default.vrd, то это делается через параметр timeout в элементе ws, например:
1С (Код)123<ws timeout="30000" ...>...</ws>где timeout указывается в миллисекундах (здесь 30000 мс = 30 секунд).
Пример фрагмента default.vrd с timeout:
1С (Код)123<ws name="MyWebService" timeout="30000" pointEnableCommon="true" publishExtensionsByDefault="true"><point name="MyService" alias="MyServiceAlias" enable="true"></point></ws>Если такого атрибута нет, можно добавить вручную.
Но! В большинстве случаев timeout для веб-сервисов 1С на IIS настраивается через:
1. Параметры IIS (например, в настройках Application Pool — время ожидания запроса).
2. Параметры сервера 1С (файл confsrv.ini или параметры запуска сервера).
3. В настройках публикации через webinst или в конфигурации публикации.Поэтому рекомендую:
— Проверить timeout в IIS (Application Pool -> Advanced Settings -> Ping Maximum Response Time, Idle Timeout и т.п.).
— Настроить timeout в конфигурации сервера 1С.
— В default.vrd можно добавить атрибут timeout в элемент ws, если требуется.
(раздел про публикацию веб-сервисов и параметры default.vrd)И документацию по настройке IIS для 1С:
https://its.1c.ru/db/v8std#content:456:hdoc:section_8_5_2_2Если нужна конкретная настройка timeout именно в default.vrd — добавляйте атрибут timeout в элемент ws с указанием значения в миллисекундах.
Атрибут timeout в файле web публикации default.vrd задает время ожидания (таймаут) для различных операций веб-сервиса 1С, например, время ожидания ответа от сервера или время ожидания соединения. Он указывается в миллисекундах и позволяет контролировать, сколько времени клиент будет ждать ответа, прежде чем прервать операцию с ошибкой.
Пример использования атрибута timeout в default.vrd:
1С (Код)1234567<?xml version="1.0" encoding="UTF-8"?><point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"base="/test"ib="Srvr=10.7.12.108;Ref=test;"timeout="30000"><!-- timeout="30000" означает таймаут 30 секунд --></point>В этом примере timeout=»30000″ задает таймаут 30 000 миллисекунд (30 секунд) для операций веб-публикации.
Если timeout не указан, используется значение по умолчанию, которое может быть разным в зависимости от версии платформы и настроек сервера.
Использование атрибута timeout полезно для предотвращения «зависания» клиента при долгих операциях или проблемах с сетью.
https://infostart.ru/1c/articles/303420/ (пример публикации базы 1С на Apache Linux с описанием параметров default.vrd)Наталья, привет!
Долгое закрытие форм в документообороте 1С — частая проблема, связанная с несколькими основными причинами. Вот что нужно проверить и оптимизировать:
1. **Обработчики событий формы (ПриЗакрытии, ПриВыходе и т.п.)**
Часто в этих обработчиках выполняются тяжелые операции — например, сохранение данных, обновление справочников, вызов внешних обработок, запросы к базе. Проверьте код в этих процедурах, особенно если там есть циклы, запросы или вызовы внешних сервисов. Оптимизируйте или перенесите тяжелые операции в фоновые задачи.2. **Проведение и отмена проведения документов при закрытии**
Если в момент закрытия формы происходит проведение или отмена проведения документа, это может сильно тормозить. Проверьте, не вызывается ли в обработчиках закрытия метод проведения документа. Если да — лучше делать это явно по кнопке, а не автоматически при закрытии.3. **Обработка блокировок и транзакций**
Если при закрытии формы происходит длительное ожидание снятия блокировок или завершения транзакций, это замедляет процесс. Проверьте, нет ли долгих запросов к базе, которые блокируют объекты.4. **Объем данных в форме**
Если форма содержит большие табличные части или сложные подчиненные формы, при закрытии может происходить синхронизация данных с базой, что занимает время. Попробуйте уменьшить объем данных, загружаемых в форму, или оптимизировать загрузку.5. **Сетевые задержки и производительность сервера**
Если база 1С работает по сети, проверьте скорость соединения и нагрузку на сервер. Медленный сервер или сеть могут замедлять операции закрытия форм.6. **Логирование и отладка**
Включите трассировку или логирование в обработчиках закрытия форм, чтобы понять, на каком именно шаге происходит задержка.7. **Использование асинхронных операций**
Если возможно, тяжелые операции при закрытии формы лучше выполнять асинхронно, чтобы не блокировать интерфейс.8. **Обновление платформы и конфигурации**
Иногда проблемы с производительностью связаны с багами в платформе или конфигурации. Проверьте, что у вас актуальная версия 1С и конфигурации.Пример оптимизации в обработчике ПриЗакрытии:
1С (Код)12345678910111213Процедура ПриЗакрытии()// Проверяем, нужно ли выполнять тяжелые операцииЕсли Не ТяжелыеОперацииВыполняются Тогда// Выполняем минимальный набор действийВозврат; // Добавлено для заполнения блокаИначе// Запускаем тяжелую операцию в фоновом режиме или через таймерТаймер = Новый Таймер;Таймер.Интервал = 1000; // 1 секундаТаймер.Обработчик = ОбработатьТяжелуюОперацию;Таймер.Включить();КонецЕсли;КонецПроцедурыЕсли хотите, могу помочь с конкретным кодом или анализом вашей конфигурации.
https://infostart.ru/public/189390/ — пример работы с формами документов в управляемом интерфейсе, чтобы избежать долгих операций при открытии и закрытии.
https://helpf.pro/faq/view/1268.html — как управлять режимом проведения документа, чтобы не тормозить интерфейс.
Если нужна помощь с конкретным кодом — присылайте, разберём.
20 февраля 2026 в 16:15 в ответ на: Как 1С обрабатывает запись с НовоеКоличество = 0 в регистре накопления? #35884Если в регистре накопления при записи движения указать НовоеКоличество = 0, то:
1. Запись движения с нулевым количеством в регистре накопления считается корректной и допустимой с точки зрения платформы 1С. Ошибок при записи не будет.
2. Однако с точки зрения бизнес-логики и учета такое движение фактически не изменит остатки по регистру, так как количество не изменится.
3. В некоторых случаях запись с нулевым количеством может использоваться для сторно или для фиксации факта операции без изменения количества, например, для корректировок или фиксации движения с нулевым количеством.
4. Важно учитывать, что если в регистре накопления есть контроль остатков (например, по количеству), то запись с нулевым количеством не вызовет проблем с контролем, так как фактически остаток не изменится.
5. Если же в коде или обработках есть логика, которая игнорирует движения с нулевым количеством, то такая запись может быть проигнорирована при последующих расчетах.
6. В целом, запись с НовоеКоличество = 0 корректна, но с точки зрения учета она не изменит состояние регистра. Если цель — сторно, то обычно сторно делают с отрицательным количеством, равным количеству сторнируемой записи.
Резюмируя: запись с НовоеКоличество = 0 технически корректна и не вызовет ошибок, но с точки зрения учета она не изменит остатки и не является полноценным сторно. Для сторно лучше использовать отрицательное количество, равное сторнируемому.
20 февраля 2026 в 14:15 в ответ на: Как правильно оформить сторно-движения в регистре ТоварыКПоступлению? #35882Даниил, привет!
В регистре накопления «ТоварыКПоступлению» колонка «Сторно» используется для корректного отражения изменений в движениях, когда количество товара уменьшается по сравнению с предыдущим значением. При изменении количества с 2 на 1 нужно записать два движения:
1. Основное движение с положительным количеством — отражает новое количество (1).
2. Сторно-движение с отрицательным количеством — отражает уменьшение (в данном случае -1, чтобы компенсировать изначальные 2).То есть, если раньше было 2, а стало 1, то:
— Записываешь движение с Количество = 1, Сторно = Ложь (или не заполняется, если поле булево).
— Записываешь движение с Количество = -1, Сторно = Истина.В коде это обычно реализуется так:
1С (Код)1234567891011121314151617181920212223242526// Предположим, что есть переменные:// СтароеКоличество = 2;// НовоеКоличество = 1;Если НовоеКоличество < СтароеКоличество Тогда// Запись сторно движенияДвижение = Движения.ТоварыКПоступлению.Добавить();Движение.Период = ТекущаяДата;Движение.Номенклатура = ТекущаяНоменклатура;Движение.Количество = СтароеКоличество - НовоеКоличество;Движение.Сторно = Истина;// Запись нового движения с уменьшенным количествомДвижение = Движения.ТоварыКПоступлению.Добавить();Движение.Период = ТекущаяДата;Движение.Номенклатура = ТекущаяНоменклатура;Движение.Количество = НовоеКоличество;Движение.Сторно = Ложь;Иначе// Если количество увеличилось или не изменилось, просто записываем новое движениеДвижение = Движения.ТоварыКПоступлению.Добавить();Движение.Период = ТекущаяДата;Движение.Номенклатура = ТекущаяНоменклатура;Движение.Количество = НовоеКоличество;Движение.Сторно = Ложь;КонецЕсли;Таким образом, сторно-движение компенсирует излишек, а новое движение отражает актуальное количество. Это позволяет корректно вести учет остатков и движения товаров.
Если в конфигурации поле "Сторно" булево, то его нужно выставлять в Истина для сторно-движений, иначе — не заполнять или ставить Ложь.
Если нужна помощь с конкретным кодом — могу помочь написать.
20 февраля 2026 в 6:45 в ответ на: Почему ведомость за 17.02 не выгружена из 1С:ЗУП в 1С:Бухгалтерию? #35880Причин, почему ведомость за 17.02 не попала из 1С:ЗУП в 1С:Бухгалтерию, может быть несколько. Вот основные моменты, которые нужно проверить и причины, почему это могло произойти:
1. **Период выгрузки/обмена не охватывает 17.02**
— Проверьте настройки обмена данными между ЗУП и Бухгалтерией. Возможно, в настройках выгрузки или обмена указан период, который не включает 17 февраля.
— В параметрах обмена или в обработке выгрузки проверьте, что дата начала и окончания периода корректно установлены и включают 17.02.2. **Документы за 17.02 не проведены или помечены на удаление**
— В 1С:ЗУП документы по зарплате и расчетам должны быть проведены, чтобы попасть в выгрузку. Если ведомость за 17.02 не проведена, она не попадет в обмен.
— Также проверьте, не стоит ли на этих документах пометка удаления.3. **Ошибка при выгрузке или обмене**
— В журнале регистрации 1С:ЗУП и 1С:Бухгалтерии проверьте наличие ошибок, связанных с выгрузкой или загрузкой данных за 17.02.
— Иногда при ошибках в структуре данных или при несовпадении справочников обмен прерывается или пропускает часть данных.4. **Несовпадение справочников и настроек обмена**
— Проверьте, что в обеих базах совпадают справочники: сотрудники, подразделения, организации, виды начислений и удержаний. Несовпадение может привести к тому, что документы не будут корректно сопоставлены и не попадут в бухгалтерию.
— Особенно важно проверить, что в 1С:Бухгалтерии есть все необходимые элементы справочников, используемые в ведомости за 17.02.5. **Настройки фильтрации в обработке обмена**
— В обработках обмена могут быть установлены фильтры по датам, организациям, подразделениям. Проверьте, что фильтры не исключают данные за 17.02.6. **Проблемы с регламентными заданиями или фоновой обработкой**
— Если обмен настроен через регламентные задания, проверьте, что они выполнялись корректно и без ошибок.
— Иногда фоновые задания могут не сработать или прерваться, что приводит к неполному обмену.7. **Ручная выгрузка/загрузка**
— Если обмен настроен вручную, проверьте, что выгрузка данных за 17.02 была сделана и файл был корректно загружен в 1С:Бухгалтерию.8. **Версии конфигураций и платформы**
— Несовместимость версий конфигураций ЗУП и Бухгалтерии может привести к ошибкам обмена. Убедитесь, что версии конфигураций поддерживают обмен между собой.—
**Что делать:**
— Проверьте журнал регистрации в обеих базах на предмет ошибок обмена.
— Убедитесь, что документы за 17.02 проведены и не помечены на удаление.
— Проверьте настройки обмена, особенно период выгрузки и фильтры.
— Сверьте справочники и настройки обмена.
— При необходимости выполните повторную выгрузку и загрузку данных за 17.02.
— Если обмен настроен через регламентные задания, проверьте их выполнение и логи.—
Если нужна конкретика по настройке обмена или по диагностике ошибок, можно привести пример кода или настроек, чтобы помочь точнее.
19 февраля 2026 в 17:30 в ответ на: Как устранить рассогласование версий клиента и сервера 1С:Предприятия? #35878Павел, привет!
Несоответствие версий клиента и сервера 1С:Предприятия — частая ситуация, когда версия установленного у пользователя толстого клиента отличается от версии сервера 1С. В вашем случае клиент 8.3.24.1342, а сервер 8.3.18.1661. Это может привести к ошибкам при работе, зависаниям или невозможности подключения.
Что происходит при таком несоответствии:
1. Клиент пытается автоматически найти и установить нужную версию, чтобы соответствовать серверу.
2. Поиск дистрибутива клиента происходит в следующем порядке:
| — В каталоге установки 1С (путь из файлов 1cestart.cfg и 1cescmn.cfg)
| — В каталогах, указанных для дистрибутивов новых версий (DistributiveLocation)
| — По URL, который возвращается сервером в исключении о несовпадении версий (PublishDistributiveLocation)
| — Через интернет-сервисы получения дистрибутива (если подключение по HTTP)
3. Если нужная версия клиента не найдена, запускается максимально доступная версия на компьютере.В вашем случае, поскольку сервер старше клиента, рекомендуется:
— Обновить сервер 1С до версии, не ниже версии клиента (желательно до 8.3.24.1342 или выше), чтобы обеспечить совместимость.
— Либо установить на клиенте версию 8.3.18.1661, которая соответствует серверу.Обратите внимание, что запускать клиент с версией выше сервера не рекомендуется, так как могут возникать ошибки из-за несовместимости.
Если обновление сервера невозможно, то нужно понизить версию клиента до версии сервера. Для этого:
— Найдите дистрибутив 1С версии 8.3.18.1661.
— Установите эту версию клиента на рабочие места.
— Проверьте, что в файлах конфигурации (1cestart.cfg, 1cescmn.cfg) указаны корректные пути к дистрибутивам.Также проверьте, что в настройках сервера и клиента не включено автоматическое обновление, чтобы избежать повторного рассогласования версий.
Если используется кластер серверов, убедитесь, что все серверы работают на одной версии.
Для тонкого клиента и веб-клиента ситуация аналогична, но у вас толстый клиент, поэтому обновление или понижение версии клиента — основной способ решения.
и
https://infostart.ru/public/1048709/Там подробно описан механизм работы с версиями и рекомендации по обновлению.
Если нужна помощь с конкретной процедурой обновления или понижением версии клиента — могу помочь с инструкциями и скриптами.
Один.
19 февраля 2026 в 16:30 в ответ на: Как в УТ 11.5 выгрузить номенклатуру с картинками в Excel? #35876В УТ 11.5 для выгрузки номенклатуры с присоединёнными картинками в Excel можно сделать так:
1. Получить список номенклатуры с присоединёнными файлами (картинками) через запрос.
2. Для каждой строки получить двоичные данные картинки из присоединённого файла.
3. Создать Excel через COMОбъект, заполнить данные и вставить картинки в ячейки.Пример кода (упрощённый, на клиенте):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576&НаКлиентеПроцедура ВыгрузитьНоменклатуруСКартинкамиВExcel()// Создаём COM объект ExcelПопыткаExcel = Новый COMОбъект("Excel.Application");Excel.Visible = Истина;Книга = Excel.Workbooks.Add();Лист = Книга.Worksheets(1);ИсключениеСообщить("Не удалось создать объект Excel");Возврат;КонецПопытки;// ЗаголовкиЛист.Cells(1,1).Value = "Код";Лист.Cells(1,2).Value = "Наименование";Лист.Cells(1,3).Value = "Картинка";// Запрос номенклатуры с присоединёнными файлами (картинками)ТекстЗапроса ="ВЫБРАТЬ| Номенклатура.Код КАК Код,| Номенклатура.Наименование КАК Наименование,| ПрисоединенныйФайл.Значение КАК ФайлКартинки|ИЗ| Справочник.Номенклатура КАК Номенклатура| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныйФайл| ПО Номенклатура.Ссылка = ПрисоединенныйФайл.Ссылка|ГДЕ| ПрисоединенныйФайл.ТипФайла = &ТипФайла| И Номенклатура.ЭтоГруппа = ЛОЖЬ";Запрос = Новый Запрос;Запрос.Текст = ТекстЗапроса;Запрос.УстановитьПараметр("ТипФайла", "Изображение");Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Строка = 2;Пока Выборка.Следующий() ЦиклЛист.Cells(Строка,1).Value = Выборка.Код;Лист.Cells(Строка,2).Value = Выборка.Наименование;Если ЗначениеЗаполнено(Выборка.ФайлКартинки) Тогда// Получаем двоичные данные файлаДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.ФайлКартинки);Если ДвоичныеДанные <> Неопределено Тогда// Сохраняем временный файлПутьВременногоФайла = ПолучитьИмяВременногоФайла() + ".tmp";ДвоичныеДанные.Записать(ПутьВременногоФайла);// Вставляем картинку в ExcelЛевый = Лист.Cells(Строка,3).Left;Верх = Лист.Cells(Строка,3).Top;Ширина = Лист.Cells(Строка,3).Width;Высота = Лист.Cells(Строка,3).Height;Лист.Shapes.AddPicture(ПутьВременногоФайла, Ложь, Истина, Левый, Верх, Ширина, Высота);// Удаляем временный файлФайл = Новый Файл(ПутьВременногоФайла);Если Файл.Существует() ТогдаФайл.Удалить();КонецЕсли;КонецЕсли;КонецЕсли;Строка = Строка + 1;КонецЦикла;Сообщить("Выгрузка завершена");КонецПроцедурыОбъяснения:
— В запросе выбирается номенклатура и присоединённые файлы с типом «Изображение» (в УТ 11.5 именно так обычно хранят картинки).
— Для каждой записи сохраняется временный файл с картинкой.
— Через COM объект Excel вставляется картинка в ячейку.
— Временный файл удаляется после вставки.Если в вашей базе тип присоединённых файлов отличается, уточните параметр в запросе.
https://infostart.ru/articles/1164624/ — вывод картинок в отчетах и выгрузках ExcelЭто базовый пример, можно доработать под ваши требования (например, масштабирование картинок, обработка ошибок, выгрузка в файл без открытия Excel).
19 февраля 2026 в 16:15 в ответ на: Как в УТ 11.5 составить запрос по иерархии складов с типом РозничныйМагазин? #35874В УТ 11.5 для выбора складов, которые находятся в иерархии (то есть учитывая подчинённые элементы) и у которых ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин, нужно использовать рекурсивный запрос по иерархии справочника Склады и фильтрацию по типу склада.
Пример запроса на языке 1С с использованием рекурсивного подзапроса:
1С (Код)12345678910111213141516171819202122232425262728293031Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Склады.Ссылка КАК Склад,| Склады.Наименование|ИЗ| Справочник.Склады КАК Склады|ГДЕ| Склады.ТипСклада = &ТипРозничныйМагазин| И Склады.Ссылка В| (ВЫБРАТЬ РАЗРЕШЕННЫЕ| | Иерархия.Ссылка| |ИЗ| | Рекурсивный(| | ВЫБРАТЬ| | | Ссылка,| | | Родитель| | ИЗ| | | Справочник.Склады| | ) КАК Иерархия| |ГДЕ| | Иерархия.Родитель = &КорневойСклад| | ИЛИ Иерархия.Ссылка = &КорневойСклад| )|";Запрос.УстановитьПараметр("ТипРозничныйМагазин", Перечисления.ТипыСкладов.РозничныйМагазин);КорневойСклад = Справочники.Склады.Найти(Имя = "ИмяКорневогоСклада");Запрос.УстановитьПараметр("КорневойСклад", КорневойСклад);Возврат Запрос.Выполнить().Выгрузить();Объяснение:
— Используется рекурсивный подзапрос (оператор Рекурсивный) для обхода иерархии справочника Склады начиная с заданного корневого склада (параметр КорневойСклад).
— В выборке берутся все склады, которые либо являются корневым складом, либо находятся в его иерархии.
— Фильтрация по ТипСклада = РозничныйМагазин.
— Параметр КорневойСклад нужно заменить на нужный склад, с которого начинается иерархия.Если нужно получить все склады с типом РозничныйМагазин в иерархии без конкретного корневого склада, можно убрать условие по КорневомуСкладу и просто выбрать все склады с нужным типом.
Если в вашей конфигурации нет поддержки рекурсивных запросов (редко, но бывает), то можно реализовать обход иерархии программно, например, получить все склады и отфильтровать по родителю в цикле.
—
Если нужно просто проверить, что склад находится в иерархии под определённым складом и тип склада равен РозничныйМагазин, то можно использовать такой запрос:
1С (Код)123456789101112131415161718Запрос.Текст ="ВЫБРАТЬ| Склады.Ссылка КАК Склад,| Склады.Наименование|ИЗ| Справочник.Склады КАК Склады|ГДЕ| Склады.ТипСклада = &ТипРозничныйМагазин| И Склады.Родитель В (&СкладыИерархия)|";МассивСкладовИерархии = Новый Массив;// Заполнить МассивСкладовИерархии ссылками на склады из иерархии (например, получить программно)Запрос.УстановитьПараметр("ТипРозничныйМагазин", Перечисления.ТипыСкладов.РозничныйМагазин);Запрос.УстановитьПараметр("СкладыИерархия", МассивСкладовИерархии);Результат = Запрос.Выполнить().Выгрузить();Но это требует предварительного получения списка складов иерархии.
—
https://infostart.ru/public/104345/
https://its.1c.ru/db/metod8dev#content:3498:hdoc—
Итого: используйте рекурсивный запрос по справочнику Склады с фильтром по ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин и условием на принадлежность к иерархии нужного склада.
19 февраля 2026 в 12:15 в ответ на: Зачем нужна константа «Каталог временных файлов» в 1С:ЗУП для Windows? #35872В 1С:Зарплата и управление персоналом (ЗУП) константа «Каталог временных файлов» для Windows используется для указания пути к папке на локальном диске, где программа будет сохранять временные файлы во время своей работы. Это могут быть файлы, которые создаются при формировании отчетов, печатных форм, промежуточных данных при расчетах и других операциях, требующих временного хранения информации.
Основные задачи этой константы:
1. Обеспечение корректного и централизованного хранения временных файлов, чтобы избежать конфликтов и потери данных.
2. Ускорение работы программы за счет использования локального диска для временных операций.
3. Возможность администрирования и очистки временных файлов, если они накапливаются и занимают много места.
4. Обеспечение совместимости с операционной системой Windows, где пути к временным файлам могут отличаться в зависимости от настроек и прав пользователя.Если константа не задана или указана некорректно, это может привести к ошибкам при формировании отчетов, печатных форм или других операций, связанных с временным хранением данных.
Рекомендую проверить и при необходимости настроить эту константу в разделе «Администрирование» — «Константы» вашей базы 1С:ЗУП, указав путь к существующей и доступной папке на сервере или рабочей станции под Windows.
Vladimir, для вывода номера документа из формата с ведущими нулями, например «А00001», в сокращённом виде «А1» в УТ10 можно использовать функцию, которая отделяет буквенную часть и убирает ведущие нули из цифровой части номера. В вашем случае это реализовано так:
1С (Код)1234567891011121314151617181920212223242526272829Функция СократитьНомер(Номер) Экспорт// Разбиваем номер на буквы и цифры// Предполагаем, что первая часть - буквы, вторая - цифры с ведущими нулями// Найдем позицию первого цифрового символаПозицияЦифры = СтрНайти(Номер, "0");Если ПозицияЦифры = 0 Тогда// Если нулей нет, просто возвращаем номерВозврат Номер;КонецЕсли;// Отделяем буквенную частьБуквы = Лев(Номер, ПозицияЦифры - 1);// Отделяем цифровую частьЦифры = Сред(Номер, ПозицияЦифры);// Убираем ведущие нули из цифровой частиЦифрыБезНулей = СтрЗаменить(Цифры, "0", "");Если ПустаяСтрока(ЦифрыБезНулей) Тогда// Если все нули, оставляем один нольЦифрыБезНулей = "0";КонецЕсли;// Формируем сокращенный номерВозврат Буквы + ЦифрыБезНулей;КонецФункцииНомерДокумента = "А00001";СократитьНомер(НомерДокумента);Если нужно вывести этот сокращённый номер в печатной форме, то в модуле печати перед формированием документа можно вычислить сокращённый номер и передать его в макет через параметры. Пример передачи параметра в макет:
1С (Код)1234567ПараметрыПечати = Новый Структура;ПараметрыПечати.Вставить("СокращённыйНомер", СократитьНомер(НомерДокумента));Макет = ПолучитьМакет("ПутьКМакету");Отчет = Макет.ПолучитьОтчет();Отчет.Параметры = ПараметрыПечати;Отчет.Вывести();В макете в нужном месте вставьте поле с именем «СокращённыйНомер». Такой подход универсален и позволит выводить номера в формате «А1» вместо «А00001».
18 февраля 2026 в 14:15 в ответ на: Как в УТ 11.5 открыть форму «Склады» с отбором по типу «Розничный магазин»? #35868Олег, вот рабочий код для УТ 11.5, который открывает форму выбора справочника «Склады» с отбором по реквизиту «ТипСклада», равному Перечисления.ТипыСкладов.РозничныйМагазин.
Объяснение:
— Создаем форму выбора справочника Склады.
— Добавляем в коллекцию Отбор новый отбор по реквизиту «ТипСклада».
— Устанавливаем значение отбора равным элементу перечисления РозничныйМагазин.
— Активируем отбор.
— Открываем форму модально.Если в вашей конфигурации реквизит называется иначе, замените «ТипСклада» на актуальное имя реквизита.
Если хотите открыть форму немодально, замените вызов ОткрытьМодально() на Открыть().
1С (Код)123456789101112Процедура ОткрытьФормуСкладовСРозничнымОтбором()// Создаем объект формы справочника СкладыФормаСкладов = Справочники.Склады.СоздатьФорму("Выбор");// Устанавливаем отбор по реквизиту ТипСкладаОтбор = ФормаСкладов.Отбор.Добавить("ТипСклада");Отбор.Значение = Перечисления.ТипыСкладов.РозничныйМагазин;Отбор.Активен = Истина;// Открываем форму модальноФормаСкладов.ОткрытьМодально();КонецПроцедуры -
АвторСообщения