Ответы в темах
-
АвторСообщения
-
Чтобы отправить сообщение пользователю с сервера в 1С, есть несколько распространённых способов, в зависимости от задачи и используемой платформы. Вот самые практичные варианты:
—
### 1. Через Константу и Обработчик Ожидания (Polling)
Суть: Сервер записывает сообщение в константу, а клиенты периодически опрашивают эту константу и показывают сообщение.
Как сделать:
— Создаёте константу строкового типа, например, «_Сообщение».
— На сервере пишете процедуру, которая устанавливает значение константы:1С (Код)1234&НаСервереБезКонтекстаПроцедура ОтправитьСообщение(ТекстСообщения)Константы._Сообщение.Установить(ТекстСообщения);КонецПроцедуры— На клиенте в общем модуле или форме подключаете обработчик ожидания, который раз в N секунд проверяет константу и выводит сообщение, если оно новое.
1С (Код)1234567891011Перем ТекущееСообщение;Процедура ПроверитьСообщение()НовоеСообщение = Константы._Сообщение.Получить();Если НовоеСообщение <> ТекущееСообщение ТогдаТекущееСообщение = НовоеСообщение;Если ТекущееСообщение <> "" ТогдаПредупреждение(ТекущееСообщение, 0);КонецЕсли;КонецЕсли;КонецПроцедуры— Обработчик ожидания запускается при старте клиента:
1С (Код)1ПодключитьОбработчикОжидания("ПроверитьСообщение", 5); // каждые 5 секунд—
### 2. Через Систему Взаимодействия (Обсуждения)
В версиях 8.3.11 и выше можно использовать встроенную систему взаимодействия для отправки сообщений с сервера на клиент.
— Создаёте служебное обсуждение для пользователя.
— Сервер отправляет сообщение в это обсуждение.
— Клиент подписывается на новые сообщения и обрабатывает их.Это более современный и эффективный способ, но требует настройки системы взаимодействия.
—
### 3. Push-уведомления на мобильные устройства (Firebase)
Если нужно отправить push-уведомления на мобильные клиенты, можно использовать Firebase Cloud Messaging (FCM).
— На мобильном клиенте получаете идентификатор подписчика.
— Сервер отправляет push через FCM API.
— Клиент получает и отображает уведомление.—
### 4. Использование команды MSG (Windows)
Если все пользователи работают на Windows и в терминальных сессиях, можно с сервера запустить команду Windows MSG для вывода системного сообщения.
1С (Код)12СтрокаКоманды = "MSG /server:" + ИмяКомпьютера + " * " + "Текст сообщения";ЗапуститьПриложение(СтрокаКоманды);—
### Пример кода для варианта 1 (через константу):
Общий модуль «Уведомления»:
1С (Код)1234567891011121314151617&НаСервереБезКонтекстаПроцедура ОтправитьСообщение(Текст)Константы._Сообщение.Установить(Текст);КонецПроцедуры&НаКлиентеПерем ТекущееСообщение;Процедура ПроверитьСообщение()НовоеСообщение = Константы._Сообщение.Получить();Если НовоеСообщение <> ТекущееСообщение ТогдаТекущееСообщение = НовоеСообщение;Если ТекущееСообщение <> "" ТогдаПредупреждение(ТекущееСообщение, 0);КонецЕсли;КонецЕсли;КонецПроцедурыВ форме или при старте клиента:
1С (Код)1ПодключитьОбработчикОжидания("ПроверитьСообщение", 5);—
Рекомендую посмотреть здесь, там есть подробные примеры и объяснения:
https://infostart.ru/1c/articles/334073/
https://wonderland.v8.1c.ru/blog/peredacha-informatsii-s-servera/15 апреля 2026 в 17:24 в ответ на: Как создать внешнюю печатную форму счета на оплату в УТ 11.4 с разными подписями #36507Для УТ 11.4 сделать внешнюю обработку с формой печати Счета на оплату с разными подписями и печатями для разных организаций — задача вполне решаемая.
Вот конкретный план и пример, как это сделать:
1. Создайте внешнюю обработку с формой, в которой будет выбор документа «Счет на оплату» (Документ.СчетНаОплатуПокупателю).
2. Загрузите сам документ Счет на оплату по ссылке, переданной в обработку (или выберите из списка).
3. Определите в обработке реквизиты для хранения подписей и печатей для каждой организации. Обычно это картинки (формат .bmp, .png) или файлы, которые загружаются в обработку.
4. В модуле обработки реализуйте процедуру формирования печатной формы с подстановкой нужной печати и подписи в зависимости от организации.
5. Используйте объект ТабличныйДокумент для формирования печатной формы — это стандартный способ в 1С.
6. Вставьте изображения печати и подписи в нужные места печатной формы через ТабличныйДокумент.
—
### Пример кода для внешней обработки (упрощённый):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364&НаКлиентеПроцедура ПечатьСчетаНаОплату(СсылкаСчета)// Получаем документСчет = СсылкаСчета.ПолучитьОбъект();// Создаем табличный документТабДок = Новый ТабличныйДокумент;// Заполняем шапку счетаТабДок.ВывестиСтроку("Счет на оплату № " + Счет.Номер + " от " + Формат(Счет.Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("Организация: " + Счет.Организация.Наименование);ТабДок.ВывестиСтроку("");// Заполняем таблицу товаровТаблицаТоваров = Счет.Товары;ТабДок.ВывестиСтроку("Наименование | Кол-во | Цена | Сумма");Для Каждого Строка Из ТаблицаТоваров ЦиклТабДок.ВывестиСтроку(Строка.Номенклатура + " | " + Формат(Строка.Количество, "ЧГ=0") + " | " + Формат(Строка.Цена, "ЧЦ=2") + " | " + Формат(Строка.Сумма, "ЧЦ=2"));КонецЦикла;// Вставляем печать и подпись в зависимости от организацииЕсли Счет.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Ромашка") Тогда// Загружаем изображения из файлов или ресурсовПечать = ПолучитьИзображениеПечати("RomashkaStamp.png");Подпись = ПолучитьИзображениеПодписи("RomashkaSign.png");ИначеЕсли Счет.Организация = Справочники.Организации.НайтиПоНаименованию("ЗАО Василек") ТогдаПечать = ПолучитьИзображениеПечати("VasilekStamp.png");Подпись = ПолучитьИзображениеПодписи("VasilekSign.png");ИначеПечать = Неопределено;Подпись = Неопределено;КонецЕсли;Если Печать <> Неопределено ТогдаТабДок.ВывестиСтроку("");ТабДок.ВывестиИзображение(Печать, 100, 100);КонецЕсли;Если Подпись <> Неопределено ТогдаТабДок.ВывестиСтроку("");ТабДок.ВывестиИзображение(Подпись, 100, 50);КонецЕсли;// Показать печатную формуТабДок.Показать();КонецПроцедуры// Функции загрузки изображений из файлов или ресурсовФункция ПолучитьИзображениеПечати(ИмяФайла)Путь = КаталогВременныхФайлов() + "" + ИмяФайла;Если Файлы.Существует(Путь) ТогдаВозврат Новый Рисунок(Путь);ИначеВозврат Неопределено;КонецЕсли;КонецФункцииФункция ПолучитьИзображениеПодписи(ИмяФайла)// АналогичноВозврат ПолучитьИзображениеПечати(ИмяФайла);КонецФункции—
### Что нужно сделать дополнительно:
— Подготовить изображения печатей и подписей для каждой организации и положить их в папку, доступную обработке.
— В форме обработки добавить выбор документа «Счет на оплату» (через стандартный справочник или выбор из списка).
— Вызвать процедуру печати с передачей ссылки на выбранный счет.
—
### Рекомендации:
— Если хотите, чтобы печать и подпись были в определённых местах, используйте методы ТабличногоДокумента для позиционирования (например,
УстановитьТекущуюЯчейку).— Можно сделать отдельный справочник «Печати и подписи организаций» с привязкой к организациям, чтобы не хранить изображения в обработке.
— Для более сложных печатных форм используйте встроенный редактор печатных форм или внешние шаблоны (FastReport).
—
Рекомендую посмотреть пример по работе с ТабличнымДокументом и вставке изображений здесь:
https://infostart.ru/public/1790657/ (пример с печатной формой и изображениями)Если нужна готовая обработка — на Infostart часто выкладывают внешние печатные формы для УТ 11, можно поискать там с ключевыми словами «внешняя печатная форма счет на оплату с печатью».
—
Если нужна помощь с конкретным кодом или формой — могу помочь написать более точный пример.
15 апреля 2026 в 17:01 в ответ на: Как создать и настроить внешнюю обработку в конфигураторе 1С? #36505Окей, раз создали внешнюю обработку в конфигураторе — дальше по шагам:
1. Создание структуры обработки
— В дереве объектов обработки (слева) есть узлы: «Формы», «Модули», «Команды» и т.п.
— Сначала создайте форму, если её нет:
— Правый клик на «Формы» → «Добавить» → выберите тип формы (обычно «Основная форма»).
— Назовите форму, например, «Форма».2. Добавление реквизитов (если нужны)
— В форме можно добавить реквизиты (строки, числа, таблицы значений и т.п.).
— В редакторе формы справа есть вкладка «Реквизиты» — добавьте нужные поля, например, строковый реквизит «Текст».3. Написание кода в модуле формы
— В дереве обработки откройте «Модули» → «Модуль формы».
— В модуле формы напишите код, например, обработчик кнопки или событие «ПриСозданииНаСервере».
— Пример:1С (Код)123Процедура ПриСозданииНаСервере(Отказ)// Здесь можно инициализировать данныеКонецПроцедуры4. Добавление команд (кнопок) на форму
— В форме можно добавить кнопки (команды).
— В редакторе формы справа вкладка «Команды» → «Добавить».
— Задайте имя команды, например, «Выполнить».
— В модуле формы добавьте процедуру обработки команды:1С (Код)1234Процедура Выполнить(Команда)// Ваш код обработкиСообщить("Команда выполнена");КонецПроцедуры5. Заполнение модуля объекта обработки
— В дереве обработки откройте «Модули» → «Модуль объекта».
— Здесь можно написать процедуры и функции, которые будут доступны из формы.
— Например, вынесите логику исправления табуляций сюда.6. Регистрация обработки в системе (если нужно)
— Если хотите, чтобы обработка была доступна из справочника «Дополнительные отчеты и обработки», нужно реализовать функцию
СведенияОВнешнейОбработке()в модуле объекта.
— Пример:1С (Код)123456Функция СведенияОВнешнейОбработке() ЭкспортПараметры = Новый Структура;Параметры.Вставить("Версия", "1.0");Параметры.Вставить("Вид", "ДополнительнаяОбработка");Возврат Параметры;КонецФункции7. Сохранение и тестирование
— Сохраните обработку (Файл → Сохранить).
— В режиме предприятия загрузите обработку (через меню «Дополнительные отчеты и обработки» → «Добавить из файла»).
— Запустите форму и проверьте работу.—
Если нужно, могу помочь с конкретным примером кода для вашей задачи (исправление табуляций в документах). Просто скажите.
15 апреля 2026 в 17:00 в ответ на: Как обеспечить защиту интеллектуальной собственности в 1С 8.3.27? #36503В 1С 8.3.27 для защиты интеллектуальной собственности и сокрытия части кода, особенно серверного, есть несколько проверенных способов. Вот конкретное решение для вашего случая (код на сервере):
1. Перенос кода в модуль объекта и компиляция модуля
— Перенесите критичный алгоритм в модуль объекта (например, в модуль обработки, общего модуля или подсистемы).
— Сделайте этот модуль скомпилированным (без исходного текста).
— Для этого:
— Создайте пустую конфигурацию (файловую базу).
— Включите в неё вашу внешнюю обработку или общий модуль с нужным кодом.
— В свойствах конфигурации на вкладке «Разработка» заполните поля «Поставщик» и «Версия» (например, «Разработчик» и «1.0.0»).
— Обновите конфигурацию (F7).
— В настройках поставки снимите флаг «Включать в поставку исходный текст модулей объекта».
— Создайте файл поставки (без создания файла обновления).
— Откройте полученный файл поставки в конфигураторе и извлеките обработку/модуль — теперь модуль будет скомпилированным и исходный код скрыт.Такой модуль нельзя открыть и прочитать средствами 1С, что эффективно скрывает логику.
2. Использование внешних обработок с закрытым кодом
— Если код в виде внешней обработки, то аналогично — скомпилируйте модуль объекта обработки.
— Вызовы из основной конфигурации идут через вызов внешней обработки.
— Это позволяет обновлять основную конфигурацию без раскрытия кода.3. Ограничение доступа к конфигуратору
— Чтобы никто не мог зайти в конфигуратор и посмотреть код, снимите у пользователей права на запуск конфигуратора.
— Можно сделать это программно, сняв роли с пользователей, кроме себя (администратора).
— Также можно сменить пароль администратора.4. Защита от опасных действий
— В 1С 8.3 есть механизм «Защита от опасных действий», который ограничивает загрузку внешних обработок и выполнение опасных команд.
— Убедитесь, что этот механизм включён, чтобы предотвратить несанкционированный доступ к коду.5. Дополнительные меры
— Можно использовать аппаратную защиту (например, проверку наличия USB-ключа с уникальным серийным номером) для запуска критичных операций.
— Можно внедрить проверку лицензии или даты окончания работы кода (например, блокировка после определённой даты).—
Пример кода для создания скомпилированного модуля (кратко):
|// В модуле объекта вашей обработки или общего модуля
|Функция СекретнаяФункция() Экспорт
| // Ваш алгоритм
| Возврат «Секретные данные»;
|КонецФункцииДалее создаёте файл поставки без исходников, как описано выше.
—
Рекомендую посмотреть подробный разбор и пример здесь:
https://infostart.ru/1c/articles/2275597/Там подробно описан процесс создания внешней обработки с закрытым (скомпилированным) кодом.
—
Если код именно серверный (например, общий модуль с серверными процедурами), то скомпилированный модуль — лучший способ скрыть логику. В 1С 8.3.27 это работает стабильно.
—
Если нужна помощь с конкретными шагами по созданию файла поставки без исходников — могу дать инструкцию.
15 апреля 2026 в 16:56 в ответ на: Существуют ли приложения для создания *.bsl или *.epf файлов без 1С? #36501Форматы *.bsl и *.epf — это специфичные форматы 1С, и для их корректного создания и работы обычно требуется сама платформа 1С или конфигуратор.
Однако, если 1С под рукой нет, можно сделать так:
1. Создать текстовый файл с кодом 1С в любом текстовом редакторе (например, Notepad++, VSCode, Sublime Text). Расширение можно временно дать
.bsl— это просто текстовый файл с кодом на встроенном языке 1С.2. Для файла обработки (*.epf) — это уже бинарный формат, который содержит не только код, но и метаданные, структуру обработки и т.п. Создать его вручную без 1С невозможно.
3. Альтернативы:
— Можно использовать OneScript — это open-source среда для запуска скриптов 1С вне платформы. В OneScript можно писать и запускать скрипты на встроенном языке 1С, но для создания полноценного *.epf файла тоже нет.
— Есть проекты на GitHub, которые позволяют работать с кодом 1С вне платформы, но они не создают полноценные *.epf или *.bsl файлы, а скорее помогают с анализом и редактированием кода.
—
### Что реально сделать без 1С:
— Написать код в любом текстовом редакторе и сохранить с расширением
.bsl(просто текст).— Потом, когда появится доступ к 1С, импортировать этот файл в конфигуратор.
—
### Если нужно именно *.epf:
— Без 1С создать его нельзя, потому что это бинарный формат с внутренней структурой.
— Можно попросить коллегу с 1С создать пустую обработку и добавить туда ваш код.
—
### Резюме:
— Для *.bsl — достаточно текстового редактора, это обычный текст.
— Для *.epf — нужен конфигуратор 1С.
—
Если нужно, могу помочь с шаблоном кода для вставки в текстовый файл, чтобы потом просто импортировать.
В коде с точки зрения синтаксиса 1С ошибок нет, логика тоже простая и правильная — рассчитывается процент наценки по формуле:
|ПроцентНаценки = (ЦенаПродажи — ЦенаЗакупки) * 100 / ЦенаЗакупки;
Однако есть несколько моментов, которые могут привести к проблемам или неожиданному поведению:
1. Обращение к Объекту в процедурах изменения
В процедурахПоследняяЦенаЗакупкиПриИзменениииЦенаПродажиПриИзменениивы используетеОбъект.ПроцентНаценкии другие поля.
Убедитесь, что эти процедуры находятся в модуле формы или объекта, гдеОбъектдействительно доступен и содержит нужные реквизиты. Если это модуль формы, тоОбъект— это ссылка на текущий объект документа или справочника. Если процедуры в модуле объекта, тоОбъектне нужен, можно обращаться напрямую к реквизитам.
Если процедуры в модуле формы, то всё нормально.2. Обработка нулевых и пустых значений
В функцииРассчитатьПроцентНаценкипроверяется толькоЦенаЗакупки <> 0. Но еслиЦенаЗакупкиилиЦенаПродажиравныНеопределеноилиПустаяСтрока, то будет ошибка при вычислении.
Рекомендую добавить проверку на тип и наличие значений, например:|Если ЗначениеЗаполнено(ЦенаЗакупки) И ЗначениеЗаполнено(ЦенаПродажи) И ЦенаЗакупки <> 0 Тогда
| ПроцентНаценки = (ЦенаПродажи — ЦенаЗакупки) * 100 / ЦенаЗакупки;
|Иначе
| ПроцентНаценки = 0;
|КонецЕсли;3. Обновление поля ПроцентНаценки
Если полеПроцентНаценкисвязано с формой, то после изменения его значения желательно вызватьОбновить()формы или соответствующего элемента, чтобы обновить отображение.4. Типы данных
Убедитесь, чтоЦенаЗакупкииЦенаПродажи— числовые значения (например, число с плавающей точкой или число). Если они приходят из формы как строки, нужно преобразовать черезЧисло().5. Обработка отрицательных значений
ЕслиЦенаЗакупкиилиЦенаПродажимогут быть отрицательными, то формула может дать неожиданный результат. Проверьте бизнес-логику.Если у вас есть конкретная ошибка или некорректное поведение — укажите, что именно происходит, тогда можно будет точнее подсказать.
—
Пример улучшенной функции с проверками:
|&НаКлиенте
|Функция РассчитатьПроцентНаценки(ЦенаЗакупки, ЦенаПродажи)
| ПроцентНаценки = 0;
| Если ЗначениеЗаполнено(ЦенаЗакупки) И ЗначениеЗаполнено(ЦенаПродажи) И ЦенаЗакупки <> 0 Тогда
| ПроцентНаценки = (ЦенаПродажи — ЦенаЗакупки) * 100 / ЦенаЗакупки;
| КонецЕсли;
| Возврат ПроцентНаценки;
|КонецФункции—
Если хотите, чтобы при изменении цены сразу обновлялось поле на форме, убедитесь, что процедуры изменения привязаны к событиям изменения соответствующих реквизитов.
Чтобы вставить номер заказа в макет печатной формы расходной накладной через расширение, сделайте так:
1. Создайте расширение конфигурации
— В конфигураторе создайте новое расширение для вашей конфигурации (например, УТ, КА, ERP).2. Добавьте реквизит в документ расходной накладной (если его нет)
— В расширении откройте метаданные документа «Расходная накладная» (например, «Реализация товаров и услуг»).
— Добавьте новый реквизит, например, «НомерЗаказа» (тип — Строка или Ссылка на «Заказ покупателя»).
— Если реквизит уже есть, этот шаг пропускайте.3. Заполните реквизит «НомерЗаказа» при создании документа
— В расширении в модуле объекта документа «Расходная накладная» создайте обработчик события, например, &ПередЗаписью или &ПриСозданииНаОсновании, чтобы заполнить реквизит из связанного заказа.
— Пример кода:1С (Код)123456789&НаСервереПроцедура ПриЗаписи(Отказ)Если ЗначениеЗаполнено(ЭтотОбъект.Основание) ТогдаЗаказ = ЭтотОбъект.Основание.ЗаказПокупателя;Если ЗначениеЗаполнено(Заказ) ТогдаЭтотОбъект.НомерЗаказа = Заказ.Номер;КонецЕсли;КонецЕсли;КонецПроцедуры4. Добавьте макет печатной формы в расширение
— В расширении создайте новый макет печатной формы (например, копию стандартного макета расходной накладной).
— В макете добавьте поле для вывода реквизита «НомерЗаказа».
— В макете (например, в табличной части или в шапке) вставьте текстовое поле с выражением:1С (Код)1&[НомерЗаказа]5. Подключите макет к печатной форме через расширение
— В расширении создайте обработчик события печати документа (например, &ПередПечатью или расширьте процедуру формирования печатной формы).
— В коде укажите, чтобы использовался ваш макет, либо добавьте реквизит в контекст макета.Пример расширения процедуры печати:
1С (Код)12345678&НаКлиентеПроцедура Печать(Команда)Макет = ЭтотОбъект.ПолучитьМакет("МакетРасходнойНакладнойСНомеромЗаказа");Параметры = Новый Структура;Параметры.Вставить("НомерЗаказа", ЭтотОбъект.НомерЗаказа);Отчет = Макет.Вывести(Параметры);Отчет.Показать();КонецПроцедуры6. Опубликуйте и протестируйте расширение
— Подключите расширение в базе.
— Создайте расходную накладную на основании заказа.
— Распечатайте документ — в печатной форме должен отображаться номер заказа.—
Если в вашей конфигурации печатная форма строится через встроенный механизм (например, через объект «ПечатнаяФорма» или «Отчет»), то нужно расширить соответствующий отчет или макет, добавив туда реквизит и поле.
Рекомендую посмотреть пример расширения печатной формы здесь:
https://infostart.ru/public/2374292/ — там подробно показано, как добавить реквизит и вывести его в макете через расширение.Если нужна помощь с конкретной конфигурацией — укажите её, чтобы дать точный код.
15 апреля 2026 в 16:30 в ответ на: Как создать и загрузить модуль в 1С: Бухгалтерия КОРП без кнопки «создать»? #36495В редакции 3.0 Бухгалтерии КОРП действительно нельзя просто так создать новый общий модуль через конфигуратор — там модуль либо уже есть, либо его нужно загрузить из файла.
Чтобы обойти это ограничение и запустить скрипт, сделайте так:
1. Создайте общий модуль в отдельной пустой базе 1С (например, в обычной базе «Управление торговлей» или «Бухгалтерия предприятия» без ограничений).
2. В этом модуле напишите нужный код (процедуру исправления табуляций).
3. В конфигураторе этой базы выгрузите модуль в файл (*.bsl).
4. В вашей базе КОРП в конфигураторе импортируйте этот модуль из файла (через меню «Файл» → «Загрузить из файла»).
5. После загрузки модуля в базу, в режиме предприятия вызовите процедуру из этого модуля через окно отладки или через команду.
—
Если нет возможности создать отдельную базу, можно сделать так:
— Создайте обработку (файл *.epf) в любой базе, где можно писать код.
— В обработке напишите процедуру исправления табуляций.
— Запустите обработку в вашей базе КОРП и выполните процедуру.
—
Пример кода для обработки (модуль обработки):
1С (Код)12345678910111213141516171819202122232425262728293031323334Процедура Выполнить(Команда)ИсправитьТабуляцииВНазначенииПлатежа();КонецПроцедурыПроцедура ИсправитьТабуляцииВНазначенииПлатежа()Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| Док.Ссылка|ИЗ| Документ.ПлатежноеПоручениеСписаниеДенежныхСредств КАК Док|ГДЕ| СОДЕРЖИТ(Док.НазначениеПлатежа, Символ(9))Выборка = Запрос.Выполнить().Выбрать();КоличествоИсправлено = 0;Пока Выборка.Следующий() ЦиклДокОбъект = Выборка.Ссылка.ПолучитьОбъект();НовыйТекст = СтрЗаменить(ДокОбъект.НазначениеПлатежа, Символ(9), " ");Если НовыйТекст <> ДокОбъект.НазначениеПлатежа ТогдаДокОбъект.НазначениеПлатежа = НовыйТекст;ПопыткаДокОбъект.Записать();КоличествоИсправлено = КоличествоИсправлено + 1;ИсключениеСообщить("Ошибка записи документа: " + ДокОбъект.Ссылка);КонецПопытки;КонецЕсли;КонецЦикла;Сообщить("Исправлено документов: " + Строка(КоличествоИсправлено));КонецПроцедуры—
Таким образом, вы обойдёте ограничение на создание модулей в КОРП и сможете выполнить исправление.
Если нужно в документ «Расходная накладная» (например, в типовой конфигурации УТ, КА или ERP) добавить номер заказа клиента, с которым связана эта накладная, то обычно делают так:
1. Добавить реквизит в документ «Расходная накладная»
— В конфигураторе откройте документ «Расходная накладная» (например, «Реализация товаров и услуг»).
— В реквизитах добавьте новое поле, например, «НомерЗаказа» (тип — строка или ссылка на документ «Заказ клиента»).
— Если хотите хранить именно номер, то строка, если ссылку — то ссылка на «Заказ клиента».2. Заполнить реквизит при создании расходной накладной из заказа
— Если расходная накладная создается на основании заказа клиента (через механизм «Создать на основании»), то в обработчике создания документа нужно скопировать номер заказа.
— В модуле документа «Расходная накладная» или в обработчике создания на основании добавьте код, например:1С (Код)12345678// В процедуре создания на основанииПроцедура ПриСозданииНаОсновании(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ДокументСсылка.ЗаказКлиента") ТогдаЭтотОбъект.НомерЗаказа = Источник.Номер;// Или если ссылка, то// ЭтотОбъект.ЗаказКлиента = Источник;КонецЕсли;КонецПроцедуры3. Вывести номер заказа на форме документа
— В форме документа добавьте поле для отображения реквизита «НомерЗаказа».
— Можно сделать поле только для чтения.4. Если нужно вывести номер заказа в печатной форме
— В макете печатной формы добавьте поле для вывода реквизита «НомерЗаказа».
— В коде печатной формы (если используется обработка) передайте значение реквизита.5. Если номер заказа нужно получить из табличной части
— Иногда в табличной части расходной накладной есть ссылка на заказ (например, в строках). Тогда можно получить номер заказа из строки:1С (Код)1234Если ЭтотОбъект.Товары.Количество() > 0 ТогдаНомерЗаказа = ЭтотОбъект.Товары[0].ЗаказКлиента.Номер;ЭтотОбъект.НомерЗаказа = НомерЗаказа;КонецЕсли;6. Если заказ не связан напрямую, а через документ реализации
— Тогда нужно получить заказ через документ реализации, например:1С (Код)123456Если ЗначениеЗаполнено(ЭтотОбъект.Основание) ТогдаЗаказ = ЭтотОбъект.Основание.ЗаказКлиента;Если ЗначениеЗаполнено(Заказ) ТогдаЭтотОбъект.НомерЗаказа = Заказ.Номер;КонецЕсли;КонецЕсли;—
Если нужна конкретика по вашей конфигурации — укажите, какая именно (УТ, ERP, КА, Бухгалтерия и т.п.), и как именно создается расходная накладная (ручной ввод, создание на основании заказа, через обработку).
Рекомендую посмотреть здесь, как связать документы и передавать реквизиты:
https://infostart.ru/public/2374292/ (пример с передачей данных из заказа в УПД, можно адаптировать под расходную накладную)15 апреля 2026 в 15:58 в ответ на: Почему требуется пересчет в РМ за прошлые периоды из-за регистра ЗаданияКРаспред #36491Привет! РегистрСведений.ЗаданияКРаспределениюВзаиморасчетов в 1С используется для хранения заданий на перераспределение взаиморасчетов между контрагентами, договорами, счетами и т.п. Это часть механизма, который обеспечивает корректное распределение взаиморасчетов в разрезе аналитики и периодов.
Если в помощнике закрытия периода (Обработка.ОперацииЗакрытияМесяца) появляется требование пересчета за прошлые, уже закрытые периоды, то это обычно связано с тем, что в регистре ЗаданияКРаспределениюВзаиморасчетов остались невыполненные или частично выполненные задания, которые требуют перерасчета взаиморасчетов. Программа считает, что данные по взаиморасчетам за эти периоды не окончательные и требуют корректировки.
Причины появления таких заданий и требования пересчета:
1. Изменения в документах прошлых периодов — если были внесены исправления, перепроведение или добавлены документы с датами в уже закрытых периодах, то система создает задания на перераспределение взаиморасчетов, чтобы учесть эти изменения.
2. Нарушение последовательности проведения документов — если документы не проведены в хронологическом порядке, или есть несогласованности в расчетах взаиморасчетов, то система требует пересчета.
3. Ошибки или сбои в выполнении заданий — если задания в регистре остались в состоянии «не выполнено» или «частично выполнено», то помощник закрытия месяца будет требовать их перерасчета.
4. Особенности настройки взаиморасчетов — например, если используется распределение взаиморасчетов по договорам, счетам, заказам, и есть несоответствия в аналитике.
Что делать:
— Проверь проверить содержимое регистра ЗаданияКРаспределениюВзаиморасчетов — есть ли там задания с датами в прошлых периодах, которые не выполнены.
— Запустить обработку перераспределения взаиморасчетов вручную (если есть такая в вашей конфигурации) на нужный период, чтобы выполнить все задания.
— Проверить, не было ли изменений в документах за закрытые периоды, и если были — принять решение о необходимости перепроведения документов и перерасчета взаиморасчетов.
— Если задания висят «зависшими» и не нужны, можно аккуратно удалить или пометить их как выполненные, но это нужно делать с пониманием, чтобы не нарушить учет.
— В некоторых конфигурациях есть регламентные операции «Восстановление последовательности расчетов» или «Перераспределение взаиморасчетов» — их запуск решает проблему.
Рекомендую посмотреть подробности и примеры решения здесь:
https://infostart.ru/public/125262/ — обработка восстановления последовательности расчетов (в том числе взаиморасчетов)
https://infostart.ru/articles/203645/ — общая процедура закрытия месяца и порядок регламентных операций
Если нужна конкретика по вашей конфигурации — укажите, какая именно (БП, УПП, КА, ERP), тогда дам более точные рекомендации.
15 апреля 2026 в 15:42 в ответ на: Каковы основные различия между толстым и тонким клиентом в 1С? #36489Разница между толстым и тонким клиентом в 1С:
1. Толстый клиент
— Работает как полноценное приложение на компьютере пользователя (исполняемый файл 1cv8.exe).
— Основная обработка данных и логика выполняется на стороне клиента.
— Загружает из базы только данные, а обработку и формирование форм делает локально.
— Используется чаще при файловом варианте работы или когда нужна максимальная производительность и функциональность.
— Требует установки на ПК пользователя.
— Может работать автономно с локальной базой.2. Тонкий клиент
— Легкий клиент, который работает через сеть, подключаясь к серверу 1С (исполняемый файл 1cv8c.exe).
— Вся основная обработка данных и логика выполняется на сервере.
— Клиент получает уже готовые данные и формы для отображения.
— Удобен для работы по сети, в том числе через интернет, на слабых машинах и мобильных устройствах.
— Не требует мощного ПК, т.к. нагрузка на сервер.
— Обновление и поддержка проще, т.к. клиентская часть минимальна.—
Кратко:
Толстый клиент — мощный, всё делает локально, нужен на ПК.
Тонкий клиент — легкий, всё делает сервер, подходит для удаленной работы и слабых устройств.Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1171714/ — подробный разбор работы толстого и тонкого клиента.В 1С:Альфа-Авто должности обычно хранятся в справочнике «Должности» (или с похожим именем, зависит от версии и доработок).
Чтобы программно создать новую должность, нужно:
1. Найти справочник должностей (например, Справочники.Должности).
2. Создать новый элемент.
3. Заполнить нужные реквизиты (например, Наименование, Код).
4. Записать элемент.Пример кода (BSL):
1С (Код)123456789// Создаем новый элемент справочника "Должности"НоваяДолжность = Справочники.Должности.СоздатьЭлемент();// Заполняем реквизитыНоваяДолжность.Наименование = "Название должности";НоваяДолжность.Код = "КодДолжности"; // если есть поле Код// Записываем в базуНоваяДолжность.Записать();Если в вашей конфигурации справочник называется иначе, замените
Справочники.Должностина актуальное имя.—
Если нужно проверить, есть ли уже такая должность, и не создавать дубликат:
1С (Код)123456789101112131415161718Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| Должности.Ссылка|ИЗ| Справочник.Должности КАК Должности|ГДЕ| Должности.Наименование = &Наименование|;Запрос.УстановитьПараметр("Наименование", "Название должности");Результат = Запрос.Выполнить();Если Результат.Пустой() ТогдаНоваяДолжность = Справочники.Должности.СоздатьЭлемент();НоваяДолжность.Наименование = "Название должности";НоваяДолжность.Код = "КодДолжности";НоваяДолжность.Записать();КонецЕсли;—
Если нужна помощь с конкретной версией Альфа-Авто или с нестандартным справочником — уточните название справочника и реквизитов.
15 апреля 2026 в 15:11 в ответ на: Как исправить ошибки HTTP: Not found в 1С из-за некорректного URL? #36485В логе rphost много повторяющихся предупреждений:
|EXCP, level=WARNING, process=rphost, processName=fjv_erm, applicationName=WebServerExtension
|Descr=’srcvrsbasesrcVResourceInfoBaseImpl.cpp(1228):
|HTTP: Not found
|Ошибка при выполнении запроса GET к ресурсу /{«:’Это значит, что 1С получает HTTP-запросы к несуществующему ресурсу, с путём, начинающимся с /{«: — явно некорректный URL.
Что это может означать:
1. Внешние клиенты или интеграции пытаются обратиться к веб-сервисам 1С с ошибочным адресом.
2. Возможно, в коде или настройках публикации есть ошибка формирования URL.
3. Может быть попытка доступа к несуществующим HTTP-сервисам или ws-сервисам.
4. Либо кто-то сканирует сервер, посылая мусорные запросы.Рекомендации:
— Проверьте настройки публикации веб-сервисов (httpServices, ws в default.vrd), чтобы убедиться, что все пути корректны.
— Проверьте код, который формирует URL для вызова веб-сервисов, чтобы не было лишних символов или ошибок.
— Если есть внешние интеграции, уточните, что они посылают корректные запросы.
— Временно можно включить фильтрацию или логирование запросов, чтобы понять источник некорректных вызовов.
— Если это атаки или сканирование, можно ограничить доступ по IP или настроить firewall.Дополнительно в логе есть строки:
|CONN, level=INFO, Txt=’Ping direction statistics: address=172.19.1.187:1541,… packetsLost=1
Это говорит о том, что есть потеря пакетов при пинге между серверами, что может влиять на стабильность соединения.
Рекомендации по сети:
— Проверьте сетевое соединение между серверами 1С и базой данных.
— Убедитесь, что нет потерь пакетов, задержек, проблем с маршрутизацией.Итог:
— Основная проблема — множество запросов к несуществующим HTTP-ресурсам с некорректным URL.
— Нужно найти источник таких запросов и исправить их.
— Проверить публикацию веб-сервисов и настройки.
— Проверить сеть на предмет потерь пакетов.Если нужно, могу помочь с примером проверки и настройки публикации или с анализом кода, который вызывает эти запросы.
15 апреля 2026 в 15:07 в ответ на: Как исправить ошибку синтаксиса «ВЫБРАТЬ» в запросе 1С на строке 51? #36483Ошибка синтаксиса «ВЫБРАТЬ» на строке 51, символ 2 обычно означает, что в запросе есть лишний или неправильно расположенный оператор ВЫБРАТЬ.
В 1С язык запросов не допускает, чтобы запрос начинался с ВЫБРАТЬ без ключевого слова, например, после ОБЪЕДИНИТЬ ВСЕ или в середине запроса без правильного разделения.
Проверь внимательно структуру запроса, особенно в месте объединения запросов (ОБЪЕДИНИТЬ ВСЕ). После ОБЪЕДИНИТЬ ВСЕ должен идти следующий запрос, начинающийся с ВЫБРАТЬ, но без лишних символов или пустых строк.
Пример правильного объединения:
|ВЫБРАТЬ
| …
|ИЗ
| …
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| …
|ИЗ
| …Если в твоём запросе после ОБЪЕДИНИТЬ ВСЕ стоит пустая строка или лишний символ, будет ошибка.
Также проверь, чтобы весь запрос был в одной строке текста запроса (без лишних переносов, если используешь конструктор).
Если хочешь, могу помочь проверить твой конкретный запрос — пришли его текст, оформленный с | в начале каждой строки.
15 апреля 2026 в 14:49 в ответ на: Как исправить ошибку «Отсутствуют права на интерактивную загрузку внешних обрабо #36481Ошибка «Отсутствуют права на интерактивную загрузку внешних обработок» с причиной «Нарушение прав доступа» возникает из-за того, что у пользователя, под которым вы запускаете 1С, нет прав на загрузку и запуск внешних обработок в режиме отладки.
Что делать:
1. Запустите 1С под пользователем с полными правами (например, администратором базы).
2. В конфигураторе или режиме предприятия зайдите в «Администрирование» → «Пользователи» → выберите пользователя → проверьте и при необходимости добавьте ему права на «Интерактивную загрузку внешних обработок» или полные права.
3. Если база на сервере, убедитесь, что в настройках информационной базы разрешена интерактивная загрузка внешних обработок (в свойствах базы в режиме конфигуратора или администрирования).
4. Если используется режим «Тонкий клиент», попробуйте запустить отладку в режиме «Толстый клиент» — иногда ограничения прав в веб-клиенте строже.
5. Если база защищена политиками безопасности (например, в режиме «Защищенный режим»), проверьте настройки безопасности и политики прав.
—
Если вы не администратор базы, обратитесь к администратору с просьбой предоставить необходимые права.
—
Рекомендую почитать подробнее про права на внешние обработки и отладку здесь:
https://infostart.ru/public/1234567/ (пример ссылки, ищите по «права на интерактивную загрузку внешних обработок») -
АвторСообщения