Ответы в темах
-
АвторСообщения
-
16 апреля 2026 в 16:16 в ответ на: Как исправить ошибки в запросе на соединение документов и регистров? #36595
В вашем запросе есть несколько ошибок и неточностей, которые вызывают проблему:
1. В части соединения с регистром накопления
РасчетыСКлиентами:1С (Код)12ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентамиПО Заказ.Договор = РасчетыСКлиентами.ОбъектРасчетов.НаправлениеДеятельности— Поле
ОбъектРасчетов— это ссылка на справочник или документ, а у него нет подчинённого поляНаправлениеДеятельности. Вы пытаетесь сравнитьЗаказ.ДоговорсРасчетыСКлиентами.ОбъектРасчетов.НаправлениеДеятельности, что некорректно.— Скорее всего, вы хотели сравнить
Заказ.ДоговорсРасчетыСКлиентами.ОбъектРасчетов(то есть по ссылке на договор).2. В регистре накопления
РасчетыСКлиентамиполеСуммаможет отсутствовать, либо оно называется иначе (например,СуммаДокумента,Приход,Расход). Нужно проверить точное имя поля.3. В выборке вы дважды выбираете
РасчетыСКлиентами.СуммакакСуммаиСумма1— это избыточно.—
Правки, которые нужно сделать:
— Исправить условие соединения:
1С (Код)1ПО Заказ.Договор = РасчетыСКлиентами.ОбъектРасчетов— Проверить, что поле
Суммадействительно есть в регистре. Если нет, заменить на правильное имя.— Убрать дублирование поля
Сумма.—
Пример исправленного запроса:
|ВЫБРАТЬ ПЕРВЫЕ 100
| РеализацияТоваровУслуг.ЗаказКлиента.Договор КАК ЗаказДоговор,
| РеализацияТоваровУслуг.ЗаказКлиента.Ссылка КАК ЗаказСсылка,
| РеализацияТоваровУслуг.Ссылка КАК РеализацияСсылка,
| РеализацияТоваровУслуг.ЗаказКлиента.Ссылка КАК РеализацияЗаказСсылка,
| РасчетыСКлиентами.Сумма КАК Сумма,
| РасчетыСКлиентами.КОплате КАК КОплате,
| РасчетыСКлиентами.Оплачивается КАК Оплачивается,
| РасчетыСКлиентами.КОтгрузке КАК КОтгрузке,
| РасчетыСКлиентами.Отгружается КАК Отгружается,
| РасчетыСКлиентами.ОбъектРасчетов КАК ОбъектРасчетовСсылка
|ИЗ
| Документ.ЗаказКлиента КАК Заказ
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ПО Заказ.Ссылка = РеализацияТоваровУслуг.ЗаказКлиента.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентами
| ПО Заказ.Договор = РасчетыСКлиентами.ОбъектРасчетов—
Если поле
Суммаотсутствует, замените его на правильное имя, например:1С (Код)1РасчетыСКлиентами.Приход КАК Сумма—
Если нужно, могу помочь проверить структуру регистра и составить корректный запрос.
16 апреля 2026 в 16:14 в ответ на: Почему возникает ошибка «Поле не найдено» при работе с регистром? #36593Если имя поля
Суммав регистреРасчетыСКлиентамидействительно верное, а ошибка «Поле не найдено» всё равно возникает, значит проблема в том, как вы используете регистр в запросе.Чаще всего ошибка возникает из-за того, что:
— Вы используете не сам регистр, а его таблицу остатков или оборотов, и в этих таблицах поле называется иначе.
— Либо вы используете синтаксис сРегистрНакопления.РасчетыСКлиентами.Обороты(...), а полеСуммав оборотах отсутствует или называется по-другому.
— Либо в запросе вы не указали псевдоним источника данных, а потом пытаетесь к нему обратиться.—
Что проверить и как исправить:
1. Если вы используете таблицу оборотов регистра, то в ней поля могут называться иначе. Например, в оборотах есть поля:
—
Приход(сумма прихода)
—Расход(сумма расхода)А поле
Суммаотсутствует.2. Если хотите получить сумму оплат, то нужно использовать либо поле
ПриходилиРасходв зависимости от направления движения.3. Пример правильного использования оборотов регистра:
|ВЫБРАТЬ
| …
| Расчеты.Приход КАК СуммаОплаты,
| …4. Если хотите использовать сам регистр накопления (не обороты), то запрос будет другой, например:
|ВЫБРАТЬ
| …
| Расчеты.Сумма КАК СуммаОплаты,
|ИЗ
| РегистрНакопления.РасчетыСКлиентами КАК Расчеты
|…5. Если используете обороты, то проверьте, что в запросе указаны параметры периода, например:
|РегистрНакопления.РасчетыСКлиентами.Обороты(&ДатаНачала, &ДатаКонца) КАК Расчеты
—
Итог: ошибка «Поле не найдено» при обращении к
Расчеты.Суммавозникает, если в таблице оборотов нет поляСумма. ИспользуйтеПриходилиРасходвместоСумма.—
Если хотите, могу помочь переписать запрос с учетом этого. Пример:
|ВЫБРАТЬ
| Заказ.Ссылка КАК Заказ,
| Реализация.Ссылка КАК Реализация,
| Расчеты.Приход КАК СуммаОплаты
|ИЗ
| Документ.ЗаказКлиента КАК Заказ
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация
| ПО Реализация.ЗаказКлиента = Заказ.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.Обороты(&ДатаНачала, &ДатаКонца) КАК Расчеты
| ПО Расчеты.ОбъектРасчетов = Заказ.Договор—
Если нужно, могу помочь с конкретным запросом, пришлите его текст.
16 апреля 2026 в 16:02 в ответ на: Как исправить ошибки в 1С запросе с правым и левым соединением? #36591В вашем запросе есть несколько ошибок и некорректных конструкций:
1. В конструкции соединений вы используете:
| РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентами
| ПРАВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК Заказ
| ПО РеализацияТоваровУслуг.ЗаказКлиента.Ссылка = Заказ.Ссылка
| ПО (РеализацияТоваровУслуг.Договор = РасчетыСКлиентами.ОбъектРасчетов.Ссылка)Такой синтаксис неверен, потому что:
— В 1С запросах JOINы строятся последовательно, а не вложенно в условии другого JOIN.
— Условие соединения ПРАВОГО СОЕДИНЕНИЯ должно быть после ключевого слова ПО, а не после вложенного ЛЕВОГО СОЕДИНЕНИЯ.
— Вложенный JOIN (ЛЕВОЕ СОЕДИНЕНИЕ) должен быть отдельным элементом в списке соединений, а не внутри условия другого JOIN.2. В условии соединения:
| РеализацияТоваровУслуг.Договор = РасчетыСКлиентами.ОбъектРасчетов.Ссылка
Проверяйте, что:
— РеализацияТоваровУслуг.Договор — это ссылка на договор (справочник ДоговорыКонтрагентов).
— РасчетыСКлиентами.ОбъектРасчетов — это ссылка на документ или договор. Если это ссылка на договор, то сравнение корректно.3. В выборке:
| РасчетыСКлиентами.ОбъектРасчетов.Ссылка
Если ОбъектРасчетов — это ссылка, то достаточно писать:
| РасчетыСКлиентами.ОбъектРасчетов КАК ОбъектРасчетовСсылка
—
Правильный вариант запроса с последовательными соединениями:
|ВЫБРАТЬ ПЕРВЫЕ 100
| Реализация.ЗаказКлиента.Договор КАК ЗаказДоговор,
| Реализация.ЗаказКлиента ССЫЛКА КАК ЗаказСсылка,
| Реализация.Ссылка КАК РеализацияСсылка,
| Расчеты.Сумма,
| Расчеты.КОплате,
| Расчеты.Оплачивается,
| Расчеты.КОтгрузке,
| Расчеты.Отгружается,
| Расчеты.ОбъектРасчетов КАК ОбъектРасчетовСсылка
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Обороты(&ДатаНачала, &ДатаКонца) КАК Расчеты
| ПРАВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация
| ПО Реализация.Договор = Расчеты.ОбъектРасчетов
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК Заказ
| ПО Реализация.ЗаказКлиента = Заказ.Ссылка
|ГДЕ
| Заказ.Дата МЕЖДУ &ДатаНачала И &ДатаКонца—
Объяснение:
— Сначала из регистра берем обороты за период.
— ПРАВОЕ СОЕДИНЕНИЕ с Реализацией по договору.
— ЛЕВОЕ СОЕДИНЕНИЕ с Заказом по ссылке ЗаказКлиента.
— Условия фильтрации по дате Заказа.—
Если хотите, чтобы соединения были в другом порядке, то можно перестроить, но главное — не вкладывать JOIN внутрь условия другого JOIN.
—
Если нужна помощь с конкретной структурой базы, уточните, что именно хранит РасчетыСКлиентами.ОбъектРасчетов — договор или заказ, и какие реквизиты есть в Реализации и Заказе.
Если нужно связать Поступления безналичных денежных средств, Заказы клиентов и Реализации по клиенту через Договор контрагента, то в запросе нужно использовать реквизит «ДоговорКонтрагента» из документов.
В УТ 11.5 у документов обычно есть реквизит «ДоговорКонтрагента» (ссылка на справочник ДоговорыКонтрагентов).
Пример запроса с объединением по Договору контрагента:
|ВЫБРАТЬ
| Заказы.Ссылка КАК ЗаказКлиента,
| Заказы.Дата КАК ДатаЗаказа,
| Заказы.Контрагент,
| Заказы.ДоговорКонтрагента,
| Поступления.Ссылка КАК Поступление,
| Поступления.Дата КАК ДатаПоступления,
| Поступления.Сумма КАК СуммаПоступления,
| Поступления.ДоговорКонтрагента КАК ДоговорПоступления,
| Реализации.Ссылка КАК Реализация,
| Реализации.Дата КАК ДатаРеализации,
| Реализации.СуммаДокумента КАК СуммаРеализации,
| Реализации.ДоговорКонтрагента КАК ДоговорРеализации
|ИЗ
| Документ.ЗаказКлиента КАК Заказы
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеБезналичныхДенежныхСредств КАК Поступления
| ПО Поступления.ДоговорКонтрагента = Заказы.ДоговорКонтрагента
| И Поступления.Контрагент = Заказы.Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализации
| ПО Реализации.ДоговорКонтрагента = Заказы.ДоговорКонтрагента
| И Реализации.Контрагент = Заказы.Контрагент
|ГДЕ
| Заказы.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И Заказы.Контрагент = &КонтрагентОбъяснение:
— Связь идет по ДоговоруКонтрагента и Контрагенту, чтобы точно сопоставить документы.
— В Поступлениях и Реализациях тоже должен быть реквизит ДоговорКонтрагента (обычно есть).
— Параметры &ДатаНачала, &ДатаОкончания и &Контрагент задаются при вызове отчета.Если нужно получить данные по всем контрагентам, уберите условие по Контрагенту.
Если в вашей базе нет реквизита ДоговорКонтрагента в Поступлениях, можно связать по Контрагенту и дате, но это менее точно.
Рекомендую проверить наличие реквизита ДоговорКонтрагента в формах документов через конфигуратор или через отладчик.
Если нужно, могу помочь с адаптацией под конкретную структуру вашей базы.
В 1С:Бухгалтерия предприятия 3.0 отключение интеграции с Личным кабинетом ЕНС (Единый налоговый счет) напрямую через стандартный интерфейс отсутствует, так как функционал ЕНС встроен в конфигурацию и тесно связан с налоговым учетом.
Однако, чтобы отключить или ограничить работу с ЛК ЕНС, можно сделать следующее:
1. **Отключить права доступа к разделу ЕНС**
В настройках ролей пользователей убрать права на работу с разделом «Единый налоговый счет» (раздел «Главное» — «Единый налоговый счет»). Это скроет раздел и запретит доступ к операциям ЕНС.2. **Отключить автоматическую загрузку данных ЕНС**
В конфигурации нет отдельной настройки для отключения загрузки данных из ЛК ЕНС, но можно запретить пользователям выполнять операции загрузки и отправки данных, ограничив права.3. **Отключить уведомления и операции по ЕНС**
Если в вашей базе есть автоматические задачи и уведомления по ЕНС, их можно отключить через настройки фоновых заданий или через права доступа.4. **Если требуется полностью убрать функционал ЕНС**
Это возможно только через доработку конфигурации в режиме конфигуратора — удаление или отключение соответствующих подсистем и объектов, что требует квалифицированного разработчика 1С.5. **Отключение интеграции с 1С-Отчетностью**
Если интеграция с ЛК ЕНС идет через 1С-Отчетность, можно отключить подключение к сервису 1С-Отчетность в настройках программы (раздел «Сервис» — «Настройки подключения к сервисам»).—
Если задача — просто запретить пользователям работать с ЛК ЕНС, самый простой и безопасный способ — ограничить права доступа к разделу и операциям ЕНС.
Рекомендую проверить роли и права пользователей в разделе «Администрирование» — «Пользователи и права» и убрать доступ к подсистемам и документам, связанным с ЕНС.
—
Если нужна конкретная доработка конфигурации — обращайтесь к разработчику 1С для внесения изменений.
16 апреля 2026 в 13:30 в ответ на: Как записать и читать данные в 1С с использованием безопасного хранилища? #36585В 1С:Предприятии для работы с безопасным хранилищем данных используется объект БезопасноеХранилищеДанных. Он позволяет сохранять и читать данные, при этом данные шифруются, но если нужно, чтобы данные были видны (то есть не шифровались), то можно использовать параметр «ВидимостьДанных» при создании хранилища.
Пример процедуры записи и чтения данных в безопасное хранилище с видимыми данными:
1С (Код)1234567891011121314151617181920212223// Процедура записи данных в безопасное хранилищеПроцедура ЗаписатьВДанныеБезопасногоХранилища(ИмяХранилища, ИмяКлюча, Значение)// Создаем или открываем безопасное хранилище с видимостью данныхБезопасноеХранилище = Новый БезопасноеХранилищеДанных(ИмяХранилища, Истина); // Истина - данные видимы (не шифруются)// Записываем значение по ключуБезопасноеХранилище.Записать(ИмяКлюча, Значение);КонецПроцедуры// Процедура чтения данных из безопасного хранилищаФункция ПрочитатьИзБезопасногоХранилища(ИмяХранилища, ИмяКлюча)БезопасноеХранилище = Новый БезопасноеХранилищеДанных(ИмяХранилища, Истина);Если БезопасноеХранилище.Существует(ИмяКлюча) ТогдаВозврат БезопасноеХранилище.Прочитать(ИмяКлюча);ИначеВозврат Неопределено;КонецЕсли;КонецФункцииПример вызова:
1С (Код)123456// Записать данныеЗаписатьВДанныеБезопасногоХранилища("МоеХранилище", "Параметр1", "Тестовое значение");// Прочитать данныеЗначение = ПрочитатьИзБезопасногоХранилища("МоеХранилище", "Параметр1");Сообщить("Прочитанное значение: " + Значение);Объяснение:
— При создании объекта БезопасноеХранилищеДанных вторым параметром передается Истина — это означает, что данные будут храниться в виде открытого текста (видимы).
— Если передать Ложь или не указывать параметр, данные будут зашифрованы.
— Метод Записать сохраняет данные по ключу.
— Метод Прочитать возвращает данные по ключу.
— Метод Существует проверяет наличие ключа в хранилище.Таким образом, вы можете безопасно хранить данные, при этом они будут видны (не шифруются).
Проверить, является ли параметр коллекцией (массивом, структурой или соответствием) в 1С можно так:
1С (Код)123456789101112Функция ЭтоКоллекция(Знач Параметр) ЭкспортТипЗнчПараметра = ТипЗнч(Параметр);Если ТипЗнчПараметра = Тип("Массив") ТогдаВозврат Истина;ИначеЕсли ТипЗнчПараметра = Тип("Структура") ТогдаВозврат Истина;ИначеЕсли ТипЗнчПараметра = Тип("Соответствие") ТогдаВозврат Истина;ИначеВозврат Ложь;КонецЕсли;КонецФункцииПример использования:
1С (Код)12345Если ЭтоКоллекция(МойПараметр) ТогдаСообщить("Параметр - коллекция");ИначеСообщить("Параметр - не коллекция");КонецЕсли;Такой код проверит, что параметр — это один из универсальных типов коллекций 1С. Если нужны другие типы коллекций — добавьте их в условие.
16 апреля 2026 в 12:39 в ответ на: Как исправить ошибку при проведении док-та «Приобретение услуг и активов» в 1С? #36581Привет! Ты не приложил текст ошибки, а без него сложно точно сказать, в чём проблема. Но по опыту в 1С:КА при проведении документа «Приобретение услуг и прочих активов» с видом операции «Приобретение основных средств» часто возникают следующие типичные ошибки:
1. Неправильно заполнены реквизиты документа
— Не выбран вид операции «Приобретение основных средств».
— Не заполнены реквизиты, связанные с основными средствами (например, счет учета, статья затрат, объект ОС).
— Не заполнен или заполнен неверно реквизит «Объект основных средств» (если он есть).2. Ошибки в настройках счетов учета
— В плане счетов отсутствуют нужные субсчета для учета ОС.
— В настройках видов операций не прописаны корректные счета учета для данного вида операции.
— В табличной части документа не заполнены счета учета по строкам.3. Проблемы с регламентированными операциями
— Если в конфигурации есть автоматическое формирование документов ввода в эксплуатацию ОС, возможно, не заполнены обязательные реквизиты для этого.
— Ошибка может возникать при попытке провести документ без корректного отражения в налоговом и бухгалтерском учете.4. Ошибки в обработчиках или расширениях
— Если есть доработки, они могут некорректно обрабатывать данный документ.Чтобы помочь конкретно, пришли, пожалуйста, текст ошибки или скриншот. Пока могу дать универсальные рекомендации:
— Проверь, что в документе выбран правильный вид операции (например, «Приобретение основных средств»).
— Проверь заполнение всех обязательных реквизитов, особенно связанных с ОС.
— Проверь настройки счетов учета для данного вида операции в справочнике «Виды операций».
— Проверь, что в табличной части документа заполнены счета учета.
— Если есть доработки, попробуй провести документ на чистой базе или в режиме отладки.Если ошибка связана с арифметикой (переполнение, деление на ноль), то нужно смотреть код обработки документа или запросы.
Рекомендую посмотреть здесь, там много типовых ошибок и решений по проведению документов приобретения ОС:
https://helpf.pro/faq8/view/1462.htmlЕсли пришлёшь текст ошибки, дам точный разбор.
16 апреля 2026 в 12:14 в ответ на: Как перенести данные реквизита из расширения в основную конфиг. в 1С? #36575Если у вас есть реквизит документа, который был добавлен в расширении, и вы хотите перенести этот реквизит в основную конфигурацию, то данные из реквизита расширения нужно скопировать в новый реквизит основной конфигурации вручную через обработку или запрос.
Пошагово:
1. Добавьте реквизит в основной конфигурации
Создайте в основном объекте документа реквизит с таким же типом и назначением, как в расширении.2. Выгрузите данные из расширения
В расширении реквизит существует только в базе, но в основной конфигурации его нет. Чтобы получить данные из реквизита расширения, нужно написать обработку, которая прочитает данные из расширенного реквизита.3. Напишите обработку переноса данных
В модуле обработки (например, в обработке или внешней обработке) выполните перебор документов и скопируйте данные из реквизита расширения в реквизит основной конфигурации.Пример кода на 1С (BSL):
|Для каждого ДокументСсылка Из Документ.ИмяДокумента Цикл
| // Получаем объект документа
| ОбъектДокумента = ДокументСсылка.ПолучитьОбъект();
| Если ОбъектДокумента <> Неопределено Тогда
| // Копируем значение из реквизита расширения в реквизит основной конфигурации
| ОбъектДокумента.РеквизитОсновнойКонфигурации = ОбъектДокумента.РеквизитРасширения;
| ОбъектДокумента.Записать();
| КонецЕсли;
|КонецЦикла4. Запустите обработку
Запустите обработку в режиме предприятия, чтобы перенести данные.5. Удалите расширенный реквизит
После переноса данных и тестирования удалите реквизит из расширения, чтобы не было дублирования.—
Если реквизит расширения не виден напрямую в основном объекте, то можно получить его через механизм расширений:
— В запросах реквизиты расширения не видны, поэтому только через объекты документов и их методы.
— Если реквизит расширения — это реквизит формы, то данные берутся из объекта документа.
—
Рекомендую посмотреть подробную инструкцию по переносу объектов из расширения в основную конфигурацию, там есть раздел про перенос данных:
https://infostart.ru/1c/articles/1960294/Там описан способ выгрузки и загрузки данных XML, а также нюансы с переносом реквизитов.
16 апреля 2026 в 11:39 в ответ на: Возможно ли вывести на печать созданные документы с использованием внешних печат #36563Привет! Да, вывести на печать документы с конкретными внешними печатными формами из внешней обработки в БП КОРП 3.0 можно, но есть нюансы.
Вот конкретный алгоритм, как это сделать:
1. Создаёте документы программно (Реализация, СчетНаОплату) и записываете их.
2. Подключаете внешние печатные формы (ПФ_MXL_СчетЗаказ, ПФ_MXL_УниверсальныйПередаточныйДокумент2026) в базу через «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки».
3. Формируете коллекцию печатных форм и вызываете печать через механизм БСП (УправлениеПечатью).
Пример кода для печати конкретной внешней печатной формы по документу:
1С (Код)123456789// Создаем коллекцию печатных формКоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("ПФ_MXL_СчетЗаказ");// Указываем табличный документ, если он есть (если печатная форма возвращает табличный документ)КоллекцияПечатныхФорм[0].Экземпляров = 1;КоллекцияПечатныхФорм[0].СинонимМакета = "Счет на оплату"; // Можно указать удобное имя// Вызываем печатьУправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Новый Массив(ДокументСсылка), Неопределено);Но! Важно, чтобы:
— Внешняя печатная форма была зарегистрирована и доступна в базе.
— Идентификатор печатной формы совпадал с тем, что вы передаете в
НоваяКоллекцияПечатныхФорм.— Ваша внешняя обработка имела доступ к объектам печати (ссылкам на документы).
Если внешняя печатная форма реализована через БСП, то можно вызвать её экспортную процедуру
Печатьнапрямую, передав массив объектов.Пример вызова внешней печатной формы из внешней обработки:
1С (Код)12345678910111213// Получаем ссылку на внешнюю обработку по имениАдресВО = ВнешниеОбработки.НайтиПоИмени("ПФ_MXL_СчетЗаказ");Если АдресВО = Неопределено ТогдаСообщить("Внешняя печатная форма не найдена");Возврат;КонецЕсли;// Подключаем внешнюю обработкуСтрокаВО = ВнешниеОбработки.Подключить(АдресВО, , Ложь);ВООбъект = ВнешниеОбработки.Создать(СтрокаВО);// Вызываем процедуру печатиВООбъект.Печать(Новый Массив(ДокументСсылка));Если печатная форма требует параметров, их нужно передать согласно документации конкретной ВПФ.
—
Рекомендации:
— Проверьте, что внешние печатные формы корректно подключены и работают при ручном вызове.
— Для отладки попробуйте сначала вызвать печать по одному документу из внешней обработки.
— Если печатная форма не возвращает табличный документ, а сразу печатает, то используйте вызов процедуры
ПечатьВПФ.— Для групповой печати формируйте массив ссылок на документы и передавайте в ВПФ.
—
Рекомендую посмотреть здесь, там есть примеры по работе с внешними печатными формами и их вызовом из внешних обработок:
https://infostart.ru/1c/articles/694647/
https://infostart.ru/1c/tools/2229492/Там подробно описано, как подключать и вызывать внешние печатные формы из кода.
16 апреля 2026 в 10:52 в ответ на: Как создать обработку для загрузки данных из Excel в 1С:Бухгалтерия 8.3? #36561Вот конкретный пример внешней обработки для загрузки данных из Excel в 1С:Бухгалтерия предприятия (8.3), с пошаговой инструкцией по установке и использованию.
—
### 1. Создание внешней обработки загрузки из Excel
Код обработки (управляемое приложение):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970&НаКлиентеПроцедура ЗагрузитьИзExcel(Команда)// Диалог выбора файла ExcelДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);Диалог.Фильтр = "Файлы Excel (*.xls;*.xlsx)|*.xls;*.xlsx";Если Не Диалог.Показать() ТогдаСообщить("Файл не выбран");Возврат;КонецЕсли;ПутьКФайлу = Диалог.ПолноеИмяФайла;// Получаем COM-объект ExcelПопыткаExcel = ПолучитьCOMОбъект("","Excel.Application");ИсключениеСообщить("Не удалось создать объект Excel. Проверьте, установлен ли Microsoft Excel.");Возврат;КонецПопытки;ПопыткаКнига = Excel.Workbooks.Open(ПутьКФайлу);Лист = Книга.Worksheets(1);ИсключениеСообщить("Не удалось открыть файл Excel.");Excel.Quit();Возврат;КонецПопытки;// Читаем данные с 2-й строки (предполагается, что 1-я - заголовки)Строк = Лист.UsedRange.Rows.Count;Для НомерСтроки = 2 По Строк Цикл// Пример: читаем 3 колонки: Код, Наименование, ЦенаКод = СокрЛП(СтрЗначение(Лист.Cells(НомерСтроки, 1).Value));Наименование = СокрЛП(СтрЗначение(Лист.Cells(НомерСтроки, 2).Value));Цена = Лист.Cells(НомерСтроки, 3).Value;Если Код = "" ТогдаПродолжить;КонецЕсли;// Ищем элемент справочника Номенклатура по кодуНоменклатура = Справочники.Номенклатура.НайтиПоКоду(Код);Если Номенклатура.Пустая() Тогда// Создаем новый элементНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();Номенклатура.Код = Код;Номенклатура.Наименование = Наименование;Номенклатура.Записать();Иначе// Обновляем наименование, если нужноЕсли Номенклатура.Наименование <> Наименование ТогдаНоменклатура.Наименование = Наименование;Номенклатура.Записать();КонецЕсли;КонецЕсли;// Можно добавить логику по цене, если нужноКонецЦикла;Книга.Close(Ложь);Excel.Quit();Сообщить("Загрузка завершена. Обработано строк: " + Строк - 1);КонецПроцедуры—
### 2. Создание формы обработки
— Создайте внешнюю обработку (файл .epf) в конфигураторе.
— Добавьте на форму кнопку «Загрузить из Excel».
— В обработчике нажатия кнопки вызовите процедуруЗагрузитьИзExcel.Пример кода кнопки:
1С (Код)1234&НаКлиентеПроцедура КнопкаЗагрузитьНажатие(Кнопка)ЗагрузитьИзExcel(Неопределено);КонецПроцедуры—
### 3. Установка обработки в конфигурацию «Бухгалтерия предприятия»
1. Откройте конфигуратор 1С:Предприятия.
2. В меню «Файл» выберите «Открыть» и укажите вашу базу «Бухгалтерия предприятия».
3. В дереве конфигурации выберите «Обработки».
4. Нажмите правой кнопкой мыши -> «Добавить внешнюю обработку».
5. Укажите путь к созданному файлу .epf с обработкой загрузки.
6. Сохраните конфигурацию и обновите базу (конфигурацию).
7. Запустите 1С в режиме предприятия.
8. В меню «Сервис» -> «Внешние обработки» выберите вашу обработку.
9. Откроется форма с кнопкой «Загрузить из Excel».
10. Нажмите кнопку, выберите файл Excel с данными и загрузите.—
### 4. Рекомендации по подготовке Excel-файла
— В первой строке должны быть заголовки (например, Код, Наименование, Цена).
— Данные начинаются со второй строки.
— Колонки: 1 — Код, 2 — Наименование, 3 — Цена (можно изменить под свои нужды).
— Код должен быть уникальным для поиска элементов справочника.—
### 5. Важные моменты
— Для работы с Excel на клиенте должен быть установлен Microsoft Excel.
— Если база клиент-серверная, загрузка происходит на клиенте.
— Для загрузки других данных (например, документы, регистры) логику нужно доработать.
— Для больших объемов данных лучше использовать загрузку через Табличный документ или временные таблицы.—
Рекомендую посмотреть подробный пример и обсуждения по загрузке из Excel здесь:
https://infostart.ru/public/19062/
https://infostart.ru/articles/709245/—
Если нужно, могу помочь адаптировать под конкретные объекты конфигурации.
Да, обязательно нужно понять и настроить это в самом начале разработки и распространения конфигурации.
Вот что важно сделать и учесть:
1. Хранение исходников
Всегда работайте с исходной конфигурацией в конфигураторе или в системе контроля версий (Git, SVN и т.п.). Это ваша «мастер»-копия, где вы пишете и правите код.2. Создание файла поставки
Когда нужно передать конфигурацию клиенту или на другой сервер, создаёте файл поставки. В настройках файла поставки можно указать:
— Включать исходный код модулей (если нужно, чтобы код был доступен для просмотра и правки)
— Не включать исходный код (код будет скрыт, защищён от просмотра и изменений)3. Защита кода
Если хотите защитить код от просмотра и изменений у конечных пользователей или партнёров — создавайте файл поставки без исходников. Тогда они смогут только использовать функционал, но не увидят и не изменят код.4. Настройка в конфигураторе
В меню «Конфигурация» → «Создать файл поставки» обратите внимание на опцию «Включать исходный текст модулей объекта». Снимите галочку, если хотите скрыть код.5. Планирование
С самого начала разработки продумайте, кто и как будет править код, кто будет получать файл поставки с исходниками, а кто — без. Это поможет избежать путаницы и проблем с поддержкой.—
Если не настроить это в начале, потом будет сложно понять, где и как править код, и кто имеет к нему доступ.
—
Рекомендую почитать про создание и настройку файлов поставки:
https://infostart.ru/public/1839554/
https://infostart.ru/articles/1516491/ (раздел про обновление и распространение конфигураций)Вот улучшенный вариант вашего кода с учётом читаемости, безопасности и оптимизации:
1С (Код)1234567891011121314151617181920212223242526&НаСервереБезКонтекстаФункция ТВСЗ_ДанныеПроверки(Знач Ссылка, Знач СписокСотрудников, Знач МесяцНачисления)Результат = ТВСЗ_НовыйДанныеПроверки();// Проверяем, что Ссылка определена и не пустаяЕсли ЗначениеЗаполнено(Ссылка) ТогдаЗаполнитьЗначенияСвойств(Результат,РезервыПоОплатеТруда.ТВСЗ_ВходящиеОстатки(Ссылка),"ЕстьРасхожденияСуммыРезервовПоСотрудникамБУ,ЕстьРасхожденияСуммыРезервовПоСотрудникамНУ,СуммаРезервовБУ,СуммаРезервовНУ,СуммаРезервовПоСотрудникамБУ,СуммаРезервовПоСотрудникамНУ");КонецЕсли;// Проверяем, что список сотрудников не пустойЕсли ТипЗнч(СписокСотрудников) = Тип("Массив") И СписокСотрудников.Количество() > 0 ТогдаРезультат.ДанныеОУволенныхЗаднимЧислом = ТВСЗ_УволенныеСотрудникиЗаднимЧислом(СписокСотрудников, МесяцНачисления);Результат.ЕстьУволенныеЗаднимЧислом = (Результат.ДанныеОУволенныхЗаднимЧислом <> Неопределено) И (Результат.ДанныеОУволенныхЗаднимЧислом.Количество() > 0);ИначеРезультат.ДанныеОУволенныхЗаднимЧислом = Неопределено;Результат.ЕстьУволенныеЗаднимЧислом = Ложь;КонецЕсли;Возврат Результат;КонецФункцииЧто улучшено:
1. Вместо проверки
Ссылка = НеопределеноиспользуетсяЗначениеЗаполнено(Ссылка), чтобы избежать ложных срабатываний при пустых значениях.
2. Добавлена проверка типа и количества элементов вСписокСотрудников, чтобы избежать ошибок, если передан не массив или пустой список.
3. Логика установки флагаЕстьУволенныеЗаднимЧисломсделана более явной и безопасной.
4. Форматирование и отступы улучшены для лучшей читаемости.
5. Убрана лишняя конкатенация строк в параметреЗаполнитьЗначенияСвойств— теперь одна строка.Если нужно, могу помочь с оптимизацией внутренних функций, например,
ТВСЗ_УволенныеСотрудникиЗаднимЧислом.16 апреля 2026 в 9:50 в ответ на: Как править код, если файл поставки создан без исходников в 1С? #36555Код скрыт от пользователей и других разработчиков, у которых нет исходников. То есть:
— Если вы создаёте файл поставки с отключённой опцией «Включать в поставку исходный текст модулей объекта», то в этом файле исходники модулей отсутствуют — виден только скомпилированный код, который нельзя прочитать и изменить средствами конфигуратора.
— Вы сами, как разработчик, сохраняете исходники у себя в конфигураторе (в исходной базе или в системе контроля версий). Для внесения изменений вы открываете именно эту исходную конфигурацию, редактируете код и создаёте новый файл поставки.
— То есть для правки кода нужно работать с исходной конфигурацией, а не с файлом поставки без исходников.
— Файл поставки без исходников — это дистрибутив для передачи или установки, где код защищён от просмотра и изменения.
Если хотите править код — всегда работайте с исходной конфигурацией, а не с файлом поставки без исходников.
—
Кратко:
Код скрыт от посторонних, но не от вас. Вы храните и правите исходники отдельно, а файл поставки — это уже «зашифрованный» дистрибутив.16 апреля 2026 в 9:48 в ответ на: Как правильно переносить процедуры в серверный общий модуль 1С? #36553Да, именно так. В общем модуле с настройкой «Серверный» нужно:
— Перенести все процедуры и функции с директивой &НаСервере из обработок в этот модуль.
— В заголовках процедур и функций обязательно добавить ключевое слово Экспорт, чтобы они были доступны из других модулей.
— Директиву &НаСервере в общем модуле ставить не обязательно, достаточно, чтобы модуль был серверным (в свойствах модуля установлен флажок «Сервер»).Пример общего модуля:
|Процедура ВыполнитьЗагрузкуНаСервере() Экспорт
| // код процедуры
|КонецПроцедуры
|
|Функция ПолучитьДанные() Экспорт
| // код функции
| Возврат Результат;
|КонецФункцииВ обработке вызываешь так:
|&НаКлиенте
|Процедура Загрузить(Кнопка)
| ОбщиеМодули.СерверныйКод.ВыполнитьЗагрузкуНаСервере();
|КонецПроцедуры—
Если модуль общий и серверный, то директива &НаСервере в коде не нужна, она нужна только в модулях объектов и формах, где код может выполняться и на клиенте, и на сервере.
—
Рекомендую посмотреть здесь, как правильно создавать и использовать серверные общие модули:
https://infostart.ru/public/1839554/ (пример с экспортными процедурами в общем модуле) -
АвторСообщения