Ответы в темах
-
АвторЗаписи
-
20 января 2026 в 11:45 в ответ на: Как в Astra Linux создать пользователя usr1cv8 и добавить в группу grp1cv8? #35523
В Astra Linux (как и в большинстве дистрибутивов Linux) для создания пользователя и добавления его в группу используйте стандартные команды useradd и usermod.
1. Создать группу grp1cv8 (если еще не создана):
1С (Код)1sudo groupadd grp1cv82. Создать пользователя usr1cv8 и сразу добавить его в основную группу grp1cv8, а также создать домашний каталог:
1С (Код)1sudo useradd -m -g grp1cv8 usr1cv83. Если нужно добавить пользователя в дополнительные группы, например, в sudo или другие, используйте:
1С (Код)1sudo usermod -aG группа1,группа2 usr1cv84. Установить пароль для пользователя:
1С (Код)1sudo passwd usr1cv8Пояснения:
— Ключ-mсоздаёт домашний каталог/home/usr1cv8.
— Ключ-gзадаёт основную группу пользователя.
— Ключ-aGдобавляет пользователя в дополнительные группы без удаления из текущих.Если группа уже существует, шаг 1 можно пропустить.
20 января 2026 в 11:45 в ответ на: Как передать JSON каталог номенклатуры через HTTP-сервис в 1С? #35521Передать JSON с каталогом номенклатуры через HTTP-сервис в 1С можно с помощью объекта HTTPСоединение и HTTPЗапрос, сформировав тело запроса в формате JSON. Для этого:
1. Подготовьте структуру данных каталога номенклатуры в виде структуры или массива структур 1С, содержащих нужные поля (например, Код, Наименование, Артикул и т.п.).
2. Сериализуйте эту структуру в JSON с помощью метода ЗаписатьJSON().
3. Создайте HTTPСоединение с адресом сервера, куда отправляете запрос.
4. Создайте HTTPЗапрос, укажите метод POST, заголовки (Content-Type: application/json), и установите тело запроса из JSON-строки.
5. Отправьте запрос через HTTPСоединение.ОтправитьДляОбработки().
Пример кода (упрощённый):
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445&НаСервереФункция ОтправитьКаталогНоменклатуры(АдресСервиса, Каталог)МаксимальноеВремяОжиданияHTTP = 30000;КодУспехаHTTP = 200;ЗаписьJSON = Новый ЗаписьJSON;ЗаписьJSON.УстановитьСтроку();ЗаписатьJSON(ЗаписьJSON, Каталог);ТелоЗапроса = ЗаписьJSON.Закрыть();Адрес = АдресСервиса;Адрес = СтрЗаменить(Адрес, "https://", "");Адрес = СтрЗаменить(Адрес, "http://", "");ПозицияСлэша = СтрНайти(Адрес, "/");Хост = Адрес;Ресурс = "/";Если ПозицияСлэша > 0 ТогдаХост = Сред(Адрес, 1, ПозицияСлэша - 1);Ресурс = Сред(Адрес, ПозицияСлэша);КонецЕсли;Порт = 80;SSL = Неопределено;Если СтрНайти(АдресСервиса, "https://") = 1 ТогдаПорт = 443;SSL = Новый ЗащищенноеСоединениеOpenSSL();КонецЕсли;HTTPСоединение = Новый HTTPСоединение(Хост, Порт, , , , , SSL, , , МаксимальноеВремянОжиданияHTTP);Заголовки = Новый Соответствие;Заголовки.Вставить("Content-Type", "application/json");HTTPЗапрос = Новый HTTPЗапрос(Ресурс, Заголовки);HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);Если HTTPОтвет.КодСостояния = КодУспехаHTTP ТогдаВозврат HTTPОтвет.ПолучитьТелоКакСтроку();ИначеОшибка("Ошибка отправки: " + HTTPОтвет.КодСостояния);Возврат Неопределено;КонецЕсли;КонецФункцииВызов функции:
1С (Код)12345678Каталог = Новый Массив;Элемент = Новый Структура;Элемент.Вставить("Code", "0001");Элемент.Вставить("Description", "Товар 1");Элемент.Вставить("Артикул", "A123");Каталог.Добавить(Элемент);ОтправитьКаталогНоменклатуры("https://server/base/odata/standard.odata/Catalog_Номенклатура", Каталог);Если нужно передавать один элемент, можно передать структуру, если несколько — массив структур.
Если сервис требует аутентификацию, передайте логин и пароль в конструктор HTTPСоединения.
Nick, установка сервера 1С на Astra Linux выполняется примерно так:
1. Скачайте архив дистрибутива 1С сервера, например, версия 8.3.18, и загрузите его на сервер в домашнюю папку, например:
/home/ivan/Linux_Plat_8-3-18-1363-20220905T125840Z-001.zip2. Распакуйте архив:
Shell1unzip Linux_Plat_8-3-18-1363-20220905T125840Z-001.zip3. Перейдите в распакованную папку с пакетами:
Shell1cd /home/ivan/Linux_Plat_8-3-18-13634. Установите пакеты в следующем порядке (обратите внимание, что в команде dpkg дефис должен быть обычным, а не длинным тире):
Shell1234567sudo dpkg -i 1c-enterprise-8.3.18.1363-common_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-common-nls_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-server_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-server-nls_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-ws_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-ws-nls_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-crs_8.3.18-1363_amd64.deb5. Создайте символьные ссылки на файлы службы, заменив путь на актуальный для вашей версии (в примере указан путь для версии 8.3.20, замените на 8.3.18):
Shell12sudo ln -s /opt/1cv8/x86_64/8.3.18.1363/srv1cv83 /etc/init.d/srv1cv83sudo ln -s /opt/1cv8/x86_64/8.3.18.1363/srv1cv83.conf /etc/default/srv1cv836. Обновите списки системных служб:
Shell1sudo systemctl daemon-reload7. Разрешите автоматический запуск службы при загрузке ОС:
Shell1sudo systemctl enable srv1cv838. Запустите службу:
Shell1sudo systemctl start srv1cv839. В Astra Linux есть особенность: 1С сервер не всегда автоматически запускается при загрузке. Чтобы исправить это, отредактируйте файл /etc/systemd/logind.conf:
Shell1sudo nano /etc/systemd/logind.confВ секции [Login] добавьте или измените строку:
1С (Код)1KillUserProcesses=noСохраните файл и перезапустите службу:
Shell1sudo systemctl restart systemd-logindПосле этого сервер 1С должен корректно запускаться и работать.
Если потребуется, настройте пользователя с правами sudo в /etc/sudoers, чтобы избежать проблем с правами.
20 января 2026 в 8:30 в ответ на: Как получить список свойств категории номенклатуры с возможными значениями в УНФ #35517Николай, в УНФ 3 для получения списка свойств категории номенклатуры с возможными значениями нужно использовать План видов характеристик «НазначенияСвойствКатегорийОбъектов». Этот план связывает свойства с категориями номенклатуры. Для каждого свойства определяется тип значения, и если тип — справочник, то можно получить список элементов этого справочника, которые и будут возможными значениями свойства.
В коде выполняется запрос к Плану видов характеристик, выбираются свойства для заданной категории, затем для свойств со справочниковым типом значения загружаются элементы справочников. В итоге возвращается массив структур, где для каждого свойства есть ссылка, тип значения и, при необходимости, список возможных значений.
Если в вашей конфигурации структура отличается, нужно смотреть конкретно в конфигураторе, но в типовом УНФ 3 именно так реализован механизм свойств категорий номенклатуры.
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950Процедура ПолучитьСвойстваКатегории(КатегорияНоменклатуры)Свойства = Новый Массив;Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Назначения.Свойство КАК Свойство,| СвойстваВид.ТипЗначения КАК ТипЗначения|ИЗ| ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов КАК Назначения| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваВид| ПО Назначения.Свойство = СвойстваВид.Ссылка|ГДЕ| Назначения.Объект = &Категория";Запрос.УстановитьПараметр("Категория", КатегорияНоменклатуры);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();СправочникиДляЗапроса = Новый Массив;Пока Выборка.Следующий() ЦиклСвойство = Новый Структура;Свойство.Ссылка = Выборка.Свойство;Свойство.ТипЗначения = Выборка.ТипЗначения;Свойства.Добавить(Свойство);Если Свойство.ТипЗначения = Тип("СправочникСсылка") ТогдаЕсли НЕ СправочникиДляЗапроса.Содержит(Свойство.Ссылка) ТогдаСправочникиДляЗапроса.Добавить(Свойство.Ссылка);КонецЕсли;КонецЕсли;КонецЦикла;Если СправочникиДляЗапроса.Количество() > 0 ТогдаЭлементыПоСправочникам = Новый Соответствие;Для Каждого Справочник Из СправочникиДляЗапроса ЦиклМетаданныеСправочника = Справочник.Метаданные();ИмяСправочника = МетаданныеСправочника.Имя;ВыборкаЭлементов = Справочники[ИмяСправочника].Выбрать();Элементы = Новый Массив;Пока ВыборкаЭлементов.Следующий() ЦиклЭлементы.Добавить(Новый Структура("Ссылка, Наименование", ВыборкаЭлементов.Ссылка, ВыборкаЭлементов.Наименование));КонецЦикла;ЭлементыПоСправочникам.Вставить(Справочник, Элементы);КонецЦикла;Для Каждого Свойство Из Свойства ЦиклЕсли Свойство.ТипЗначения = Тип("СправочникСсылка") ТогдаЕсли ЭлементыПоСправочникам.СодержитКлюч(Свойство.Ссылка) ТогдаСвойство.Значения = ЭлементыПоСправочникам[Свойство.Ссылка];КонецЕсли;КонецЕсли;КонецЦикла;КонецЕсли;Возврат Свойства;КонецПроцедуры19 января 2026 в 12:30 в ответ на: Как исправить ошибку: не найдено поле объекта (ТЗРвПриобретенииМатериалов)? #35515Ошибка «Поле объекта не обнаружено (ТЗРвПриобретенииМатериалов)» означает, что в коде обработчика ‘ОбработкаПроведения’ пытаются обратиться к реквизиту «ТЗРвПриобретенииМатериалов», которого нет в объекте. Чтобы исправить это, нужно проверить, существует ли такой реквизит в метаданных объекта, нет ли опечаток в имени, и соответствует ли структура объекта тому, как к нему обращаются в коде.
Если реквизит отсутствует, его нужно добавить или изменить код, чтобы не использовать это поле. Также стоит проверить, не находится ли нужное поле в табличной части, а не в самом объекте, и обращаться к нему соответственно.
Для временного обхода можно добавить проверку наличия реквизита перед обращением к нему.
Ниже приведены примеры, как это может выглядеть в коде:
1С (Код)1Значение = Объект.ТЗРвПриобретенииМатериалов;1С (Код)123Если Объект.ЕстьРеквизит("ТЗРвПриобретенииМатериалов") ТогдаЗначение = Объект.ТЗРвПриобретенииМатериалов;КонецЕсли;1С (Код)123Для Каждого Строка Из Объект.ТабличнаяЧасть ЦиклЗначение = Строка.ТЗРвПриобретенииМатериалов;КонецЦикла;19 января 2026 в 9:15 в ответ на: Как начислить НДС при использовании подарочных сертификатов в 1С:УНФ 3.0? #35513ВТИ Владислав, приветствую!
По вопросу НДС при продаже подарочных сертификатов в 1С:УНФ 3.0 — разберёмся подробно.
1. **Обложение НДС при продаже подарочных сертификатов**
Согласно налоговому законодательству РФ, продажа подарочных сертификатов сама по себе не является реализацией товара или услуги, а значит, при продаже сертификата НДС не начисляется. НДС возникает только при фактическом предоставлении товара или услуги, то есть при реализации по сертификату.
То есть:
— При продаже сертификата НДС не начисляется, так как это не реализация товара/услуги.
— При использовании сертификата клиентом (покупка товара или услуги) — тогда возникает объект налогообложения НДС.Это правило действует для всех покупателей, включая юридических лиц.
2. **Нужен ли НДС для юридических лиц при продаже сертификатов**
Юридические лица, как и физические, при продаже сертификатов не начисляют НДС, так как это не реализация. НДС возникает при реализации товаров/услуг по сертификату.
3. **Как отразить в 1С:УНФ 3.0**
В стандартной конфигурации 1С:УНФ при продаже подарочных сертификатов НДС не начисляется, так как документ продажи сертификата не содержит налогооблагаемой реализации.
Если вы хотите, чтобы НДС «бился» при продаже сертификата (например, по внутренним требованиям или особенностям учета), то это нестандартная ситуация и требует доработки.
**Как сделать, если нужно начислять НДС при продаже сертификата:**
— В 1С:УНФ в документе продажи сертификата (обычно это документ «Реализация товаров и услуг» с видом операции «Продажа сертификатов») нужно вручную указать ставку НДС и заполнить реквизиты НДС.
— Для этого в документе реализации в табличной части укажите номенклатуру «Подарочный сертификат» с нужной ставкой НДС (например, 20%).
— В настройках номенклатуры для подарочного сертификата должна быть указана ставка НДС.
— Если в стандартной конфигурации нет такой настройки, то нужно создать номенклатуру «Подарочный сертификат» с видом номенклатуры, позволяющим учитывать НДС.
— При проведении документа «Реализация» НДС будет рассчитываться и отражаться в налоговом учете.Однако повторюсь, что с точки зрения законодательства это не совсем корректно, так как НДС возникает при реализации товара/услуги, а не при продаже сертификата.
4. **Рекомендации**
— Обычно в 1С:УНФ продажа сертификатов оформляется без НДС.
— НДС отражается при реализации товаров/услуг по сертификату.
— Если у вас есть требования по учету НДС при продаже сертификатов, лучше проконсультироваться с налоговым консультантом и, возможно, сделать доработку конфигурации.—
**Кратко:**
— Продажа подарочного сертификата — НДС не начисляется.
— НДС возникает при реализации товаров/услуг по сертификату.
— Для юридических лиц правила те же.
— В 1С:УНФ стандартно НДС при продаже сертификата не бьётся.
— Если нужно, вручную укажите НДС в документе реализации сертификата, создав соответствующую номенклатуру.—
https://infostart.ru/public/285565/ — агентские услуги и НДС, см. особенности учета НДС в разных ситуацияхЕсли нужна помощь с конкретным кодом или настройками в 1С:УНФ — могу помочь с примером.
18 января 2026 в 19:15 в ответ на: Как в 1С УТ11 получить номер телефона из справочника Физлица? #35511В 1С:Управление торговлей 11 (УТ11) для получения номера телефона из справочника «Физлица» можно использовать несколько подходов в зависимости от того, где именно хранится телефон.
Если телефон хранится в реквизите «Телефон» самого элемента справочника, то достаточно обратиться к этому реквизиту напрямую.
Если телефоны хранятся в табличной части «КонтактнаяИнформация» справочника, то нужно пройтись по этой табличной части и выбрать нужный тип и вид телефона, например, мобильный.
Если же в вашей конфигурации телефоны не хранятся ни в реквизите, ни в табличной части, а используются регистры сведений «КонтактнаяИнформация», то для получения телефона нужно выполнить запрос к этому регистру, указав физлицо, тип и вид телефона.
Таким образом, самый простой способ — проверить наличие реквизита «Телефон» у физлица и взять его. Если его нет, то смотреть в табличной части или регистре сведений.
Примеры кода для каждого варианта:
1. Получение телефона из реквизита:
1С (Код)123Функция ПолучитьТелефон(Физлицо)Возврат Физлицо.Телефон;КонецФункции2. Поиск мобильного телефона в табличной части «КонтактнаяИнформация»:
1С (Код)1234567Для Каждого Строка Из Физлицо.КонтактнаяИнформация ЦиклЕсли Строка.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон ТогдаЕсли Строка.Вид = Перечисления.ВидыТелефонов.Мобильный ТогдаПрервать;КонецЕсли;КонецЕсли;КонецЦикла;3. Запрос к регистру сведений «КонтактнаяИнформация» для получения мобильного телефона:
1С (Код)1234567891011121314151617181920Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| КонтактнаяИнформация.Представление КАК Представление|ИЗ| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация|ГДЕ| КонтактнаяИнформация.Объект = &Физлицо| И КонтактнаяИнформация.Тип = &Тип| И КонтактнаяИнформация.Вид = &Вид";Запрос.УстановитьПараметр("Физлицо", Физлицо);Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);Запрос.УстановитьПараметр("Вид", Перечисления.ВидыТелефонов.Мобильный);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Следующий() ТогдаПредставление = Выборка.Представление;КонецЕсли;Если нужно, могу помочь с конкретным кодом под вашу конфигурацию.
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» в 1С без шаблонов? #35507Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» с нуля в 1С? #35503Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» в 1С с нуля? #35501Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» с нуля в 1С? #35499Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
17 января 2026 в 9:00 в ответ на: Как организовать печать проведённых чеков, не распечатанных в 1С? #35494Да, можно организовать повторную печать уже проведённых, но не распечатанных чеков из базы 1С. Для этого обычно применяют следующий подход:
1. В базе данных в документе, который формирует чек (например, «Реализация товаров и услуг», «ПКО», «Оплата платежной картой» и т.п.), должен быть реквизит или признак, фиксирующий факт печати чека (например, «ЧекПробит» или «НомерЧекаККМ»). Если такого реквизита нет, его нужно добавить.
2. Для повторной печати выбираются документы, у которых чек проведён (документ проведён), но признак печати отсутствует или установлен в «не напечатан».
3. Создаётся обработка или отчет, который выводит список таких документов. Пользователь выбирает нужный документ.
4. По выбранному документу вызывается стандартная или кастомная процедура печати чека, которая формирует и отправляет данные на фискальный регистратор (онлайн-кассу).
5. Если чек уже пробивался, но не был распечатан (например, из-за сбоя), то в зависимости от модели кассы и драйвера можно повторно отправить команду печати или запросить повторную печать с фискального регистратора.
6. В некоторых случаях для восстановления чеков используют резервное копирование чеков в XML-файлы (см. пример из статьи https://infostart.ru/1c/articles/95529/), откуда можно восстановить данные и повторно отправить на печать.
Примерный алгоритм повторной печати чека из документа:
1С (Код)1234567891011121314151617181920Процедура ПовторнаяПечатьЧека(ДокументСсылка)Если НЕ ЗначениеЗаполнено(ДокументСсылка) ТогдаПредупреждение("Документ не выбран");Возврат;КонецЕсли;// Проверяем, что документ проведёнЕсли НЕ ДокументСсылка.Проведен ТогдаПредупреждение("Документ не проведён");Возврат;КонецЕсли;// Проверяем, что чек не был напечатанЕсли ЗначениеЗаполнено(ДокументСсылка.НомерЧекаККМ) ТогдаПредупреждение("Чек уже пробит, можно выполнить повторную печать через драйвер кассы");Иначе// Здесь вызываем процедуру печати чека, например:ПечатьЧека(ДокументСсылка);КонецЕсли;КонецПроцедурыЕсли в конфигурации используется стандартный механизм работы с кассовым оборудованием (через менеджер оборудования), то повторная печать реализуется через вызов соответствующих методов драйвера или обработки обслуживания.
Рекомендую посмотреть пример реализации печати чека из документа ПКО или оплаты платежной картой, где можно добавить кнопку или пункт меню «Повторная печать» с вызовом процедуры печати.
https://infostart.ru/1c/articles/95529/ — пример резервного копирования и восстановления чеков из файлов для повторной печатиТаким образом, повторная печать нераспечатанных, но проведённых чеков — это стандартная задача, решаемая через проверку состояния документа и вызов процедуры печати с передачей данных на кассовое оборудование.
-
АвторЗаписи