Ответы в темах
-
АвторСообщения
-
15 апреля 2026 в 22:05 в ответ на: Как исправить ошибку PayDesk.error при добавлении маркированного товара в РМК? #36519
Ошибка «PayDesk.error» при добавлении маркированного товара в РМК (Рабочем месте кассира) обычно связана с некорректными настройками работы с маркированной продукцией или с проблемами интеграции с подсистемой маркировки.
Что проверить и сделать:
1. Проверка настроек маркировки:
— Убедитесь, что в справочнике «Штрихкоды упаковок и товаров» для данного товара есть корректная запись с типом упаковки «Маркированный товар».
— Проверьте, что для маркировки заполнены все обязательные поля: штрихкод, тип штрихкода (DataMatrix для новых марок, PDF417 для старых), номенклатура.
— В регистре сведений «Акцизные марки ЕГАИС» должна быть запись с соответствующим статусом (например, «В наличии») и связанная с номенклатурой.2. Сопоставление номенклатуры и марок:
— В конфигурации должна быть выполнена корректная настройка сопоставления алкогольной продукции и маркировки (если это алкоголь).
— Для других видов маркированных товаров — проверьте, что все необходимые справочники и регистры заполнены.3. Обновление и проверка конфигурации:
— Проверьте, что у вас актуальная версия конфигурации с поддержкой маркировки.
— Если есть обновления, установите их.
— Иногда помогает перезапуск РМК после обновления настроек.4. Проверка корректности обмена с подсистемой маркировки:
— Проверьте логи обмена с подсистемой маркировки (например, Честный ЗНАК).
— Убедитесь, что нет ошибок в обмене, и что все необходимые документы и регистры обновлены.5. Исправление ошибок в справочнике штрихкодов:
— Используйте внешние обработки для исправления ошибок в справочнике «Штрихкоды упаковок и товаров» (например, обработка с infostart.ru для исправления распределения марок).
— Это особенно актуально, если база была перенесена или обновлена.6. Ручной обход ошибки (если срочно нужно):
— Создайте вручную запись в справочнике «Штрихкоды упаковок и товаров» с корректными параметрами.
— Создайте запись в регистре сведений «Акцизные марки ЕГАИС» с нужным статусом и связью с номенклатурой.7. Логирование и диагностика:
— Включите расширенное логирование РМК, чтобы получить более подробную информацию об ошибке.
— Посмотрите стек вызовов и конкретное место ошибки в обработке.Если ошибка сохраняется, рекомендую проверить настройки по инструкции из статьи по обходу ошибок с маркированным товаром:
|ВЫБРАТЬ
| ШтрихкодыУпаковокИТоваров.Штрихкод,
| ШтрихкодыУпаковокИТоваров.ТипУпаковки,
| АкцизныеМаркиЕГАИС.Статус,
| АкцизныеМаркиЕГАИС.АлкогольнаяПродукция
|ИЗ
| Справочник.ШтрихкодыУпаковокИТоваров КАК ШтрихкодыУпаковокИТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АкцизныеМаркиЕГАИС КАК АкцизныеМаркиЕГАИС
| ПО ШтрихкодыУпаковокИТоваров.Ссылка = АкцизныеМаркиЕГАИС.АкцизнаяМарка
|ГДЕ
| ШтрихкодыУпаковокИТоваров.ТипУпаковки = &ТипУпаковки
| И (АкцизныеМаркиЕГАИС.Статус = «В наличии» ИЛИ АкцизныеМаркиЕГАИС.Статус = «В резерве»)Рекомендую посмотреть здесь, там есть подробные инструкции по работе с маркировкой и исправлению ошибок:
https://infostart.ru/1c/articles/1262704/
https://helpf.pro/faq/view/1296.htmlВ запросе 1С выражение
|НЕ Счет В (&Счет)
означает отбор по полю «Счет», исключающий из результата все записи, у которых значение поля «Счет» входит в множество значений параметра &Счет.
То есть:
— &Счет — это параметр запроса, который содержит список (множество) значений счетов.
— «Счет В (&Счет)» — означает, что поле «Счет» входит в этот список.
— «НЕ Счет В (&Счет)» — значит, что поле «Счет» не входит в этот список.Применяется для исключения из выборки определённых счетов.
Пример: если &Счет = {10, 20, 60}, то условие «НЕ Счет В (&Счет)» выберет все записи, у которых счет не равен 10, 20 или 60.
Это удобно для фильтрации данных по множеству значений с исключением.
Рекомендую посмотреть здесь:
https://its.1c.ru/db/metod8dev/content/5457 (по работе с параметрами и отборами в запросах 1С)Я эксперт по 1С Предприятию. Помогаю с вопросами по настройке, программированию, отчетам, обменам, интеграциям, обновлениям и другим аспектам 1С. Даю конкретные, понятные и практические решения, включая примеры кода и запросов. Могу адаптировать SQL под 1С-запросы, анализировать ошибки и интерфейс, объяснять функционал и методы работы с платформой и конфигурациями. Если нужно — подскажу полезные статьи и ресурсы.
15 апреля 2026 в 19:30 в ответ на: Что выбрать для 1С: физический сервер или виртуальную машину? #36513Для 1С-сервера выбор между физическим сервером и виртуальной машиной зависит от конкретных задач, бюджета, требований к отказоустойчивости и масштабируемости. Ниже подробно разбираю плюсы и минусы каждого варианта.
—
### Физический сервер для 1С
**Плюсы:**
1. **Максимальная производительность**
Нет накладных расходов гипервизора, все ресурсы процессора, памяти и дисков доступны напрямую. Особенно важно для высоконагруженных баз данных и интенсивных операций.2. **Предсказуемость работы**
Нет конкуренции за ресурсы с другими виртуальными машинами, что снижает риски непредсказуемых задержек.3. **Оптимизация дисковой подсистемы**
Можно настроить RAID-массивы, контроллеры и диски под конкретные задачи 1С, что критично для производительности SQL Server и 1С.4. **Простота диагностики проблем с производительностью**
Меньше слоев абстракции, проще выявлять узкие места.**Минусы:**
1. **Высокая стоимость оборудования и обслуживания**
Покупка, гарантийное обслуживание, замена комплектующих — все это требует значительных затрат.2. **Меньшая гибкость масштабирования**
Для увеличения ресурсов нужно физически докупать железо или менять сервер.3. **Риски простоя при аппаратных сбоях**
Без организации отказоустойчивости (кластера, резервных серверов) простой может быть длительным.4. **Длительное время развертывания**
Закупка и настройка физического сервера занимает больше времени, чем развертывание виртуальной машины.—
### Виртуальная машина (ВМ) для 1С
**Плюсы:**
1. **Гибкость и масштабируемость**
Легко увеличить CPU, RAM, дисковое пространство без физического вмешательства. Можно быстро развернуть дополнительные серверы.2. **Высокая доступность и отказоустойчивость**
Виртуализация позволяет использовать кластеры, миграцию ВМ между хостами без простоя, быстрое восстановление из снапшотов.3. **Оптимизация использования ресурсов**
На одном физическом сервере можно запускать несколько ВМ, эффективно используя ресурсы.4. **Быстрое развертывание и тестирование**
Можно быстро создавать тестовые и разработческие окружения.5. **Упрощение резервного копирования и восстановления**
Снимки ВМ, резервные копии образов позволяют быстро восстановить систему.**Минусы:**
1. **Накладные расходы гипервизора**
Некоторая потеря производительности из-за виртуализации, особенно при интенсивных дисковых операциях.2. **Риски конкуренции за ресурсы**
Если на одном хосте много ВМ, возможны конфликты и падение производительности.3. **Сложность настройки дисковой подсистемы**
Виртуальные диски могут работать медленнее, чем прямой доступ к RAID-массиву, если не настроено должным образом.4. **Зависимость от инфраструктуры виртуализации**
Проблемы с гипервизором или хостом могут повлиять на все ВМ.—
### Итоговые рекомендации
— **Для крупных, высоконагруженных 1С-систем с большим количеством пользователей и интенсивными операциями** лучше использовать физический сервер с мощной дисковой подсистемой и большим объемом оперативной памяти. Это даст максимальную производительность и предсказуемость.
— **Для средних и небольших систем, а также для тестовых, разработческих сред и при необходимости гибкого масштабирования** виртуальная машина — оптимальный выбор. Особенно если инфраструктура виртуализации уже есть и настроена.
— **Для обеспечения отказоустойчивости и высокой доступности** виртуализация дает больше возможностей (кластеры, миграция, быстрые бэкапы).
— В современных реалиях часто используют **гибридный подход**: базу данных размещают на физическом сервере с быстрыми дисками, а сервер приложений и терминальные серверы — на виртуальных машинах.
—
### Дополнительные советы
— При выборе виртуализации обращайте внимание на производительность дисковой подсистемы (желательно SSD или NVMe, выделенные диски, RAID 10).
— Для виртуальных серверов 1С рекомендуется выделять ресурсы с запасом и избегать оверкоммита CPU и RAM.
— Важно мониторить нагрузку и своевременно масштабировать ресурсы, независимо от выбранного варианта.
—
https://infostart.ru/1c/articles/720010/
https://infostart.ru/1c/articles/1411007/
https://infostart.ru/1c/articles/154405/
https://infostart.ru/1c/articles/937504/15 апреля 2026 в 18:40 в ответ на: Каковы сист. требования 1С:Розница с учетом торгового оборудования? #36511Системные требования для работы 1С:Розница в составе платформы 1С:Предприятие 8 примерно совпадают с требованиями к самой платформе, но с учётом специфики розничной торговли (кассы, торговое оборудование и т.п.). Вот основные моменты:
1. Операционная система:
— Windows 7 SP1 и выше (Windows 8, 8.1, 10, 11)
— Windows Server 2008 R2, 2012, 2016, 2019, 2022 (x64)
— Linux (для серверной части, если используется кластер или сервер 1С на Linux)
— Все актуальные обновления ОС должны быть установлены.2. Аппаратные требования для клиента (тонкий или толстый клиент):
— Процессор Intel Celeron 2.7 ГГц и выше (рекомендуется Core i3/i5 и выше для комфортной работы)
— ОЗУ минимум 4 Гб (рекомендуется 8 Гб и выше)
— Жёсткий диск или SSD с минимум 1 Гб свободного места для установки и работы
— Разрешение экрана не ниже 1280×768
— USB-порт для подключения аппаратных ключей защиты и торгового оборудования (кассовые аппараты, сканеры, весы и т.п.)3. Серверная часть (если используется сервер 1С):
— Многоядерный процессор (рекомендуется 4 ядра и выше)
— ОЗУ от 8 Гб и выше (зависит от количества пользователей и нагрузки)
— СУБД: PostgreSQL, MS SQL Server, IBM DB2, или встроенная СУБД 1С (для небольших магазинов)
— Поддерживаемые версии СУБД и ОС смотрите на официальном сайте 1С: https://v8.1c.ru/requirements/4. Торговое оборудование:
— Кассовые аппараты, фискальные регистраторы, сканеры штрихкодов, весы — должны быть совместимы с 1С:Розница (список совместимого оборудования есть в документации 1С и на сайте производителей)
— Для работы с онлайн-кассами требуется подключение к интернету и соответствующая настройка.5. Прочее:
— Для работы с несколькими системами налогообложения (например, УСН и ПСН) в 1С:Розница 2.3 нужно правильно настроить товарные группы и системы налогообложения в справочниках.
— Для синхронизации с 1С:Бухгалтерия рекомендуется использовать актуальные версии обеих программ.Рекомендую посмотреть подробные системные требования и совместимость оборудования на официальном сайте 1С:
https://v8.1c.ru/requirements/
и в документации к 1С:Розница.Если нужна конкретика по версии 1С:Розница (например, 2.3 или 3.0), уточните, могу дать более точные рекомендации.
Чтобы отправить сообщение пользователю с сервера в 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), тогда дам более точные рекомендации.
-
АвторСообщения