Ответы в темах
-
АвторСообщения
-
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/ — пример резервного копирования и восстановления чеков из файлов для повторной печатиТаким образом, повторная печать нераспечатанных, но проведённых чеков — это стандартная задача, решаемая через проверку состояния документа и вызов процедуры печати с передачей данных на кассовое оборудование.
Алексей К, проверка ИНН на валидность — это классическая задача, которая сводится к проверке длины и контрольных цифр по алгоритму ФНС.
Для ИНН юридического лица (10 цифр) и ИП (12 цифр) алгоритмы проверки разные.
Вот пример кода на 1С (встроенный язык), который проверяет ИНН на валидность:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102Функция ПроверитьИНН(ИНН)КОНСТАНТА_ДЛИНА_ИНН_ЮРИДИЧЕСКОГО = 10;КОНСТАНТА_ДЛИНА_ИНН_ИП = 12;// Убираем все нецифровые символыИНН = СтрЗаменить(ИНН, " ", "");ИНН = СтрЗаменить(ИНН, "-", "");ИНН = СтрЗаменить(ИНН, ".", "");ИНН = СтрЗаменить(ИНН, ",", "");Если НЕ РегулярныеВыражения.Соответствует(ИНН, "^d{10}$") И НЕ РегулярныеВыражения.Соответствует(ИНН, "^d{12}$") ТогдаВозврат Ложь; // Длина не 10 и не 12КонецЕсли;МассивЦифр = Новый Массив;Для Индекс = 1 По СтрДлина(ИНН) ЦиклМассивЦифр.Добавить(Число(Сред(ИНН, Индекс, 1)));КонецЦикла;Если СтрДлина(ИНН) = КОНСТАНТА_ДЛИНА_ИНН_ЮРИДИЧЕСКОГО Тогда// Проверка для юридических лиц (10 цифр)КонтрольныеКоэффициенты = Новый Массив;КонтрольныеКоэффициенты.Добавить(2);КонтрольныеКоэффициенты.Добавить(4);КонтрольныеКоэффициенты.Добавить(10);КонтрольныеКоэффициенты.Добавить(3);КонтрольныеКоэффициенты.Добавить(5);КонтрольныеКоэффициенты.Добавить(9);КонтрольныеКоэффициенты.Добавить(6);КонтрольныеКоэффициенты.Добавить(8);Сумма = 0;Для Индекс = 0 По 8 ЦиклСумма = Сумма + МассивЦифр[Индекс] * КонтрольныеКоэффициенты[Индекс];КонецЦикла;Остаток = Сумма % 11;Если Остаток > 9 ТогдаОстаток = Остаток % 10;КонецЕсли;Возврат Остаток = МассивЦифр[9];ИначеЕсли СтрДлина(ИНН) = КОНСТАНТА_ДЛИНА_ИНН_ИП Тогда// Проверка для ИП (12 цифр)Коэффициенты1 = Новый Массив;Коэффициенты1.Добавить(7);Коэффициенты1.Добавить(2);Коэффициенты1.Добавить(4);Коэффициенты1.Добавить(10);Коэффициенты1.Добавить(3);Коэффициенты1.Добавить(5);Коэффициенты1.Добавить(9);Коэффициенты1.Добавить(4);Коэффициенты1.Добавить(6);Коэффициенты1.Добавить(8);Коэффициенты1.Добавить(0);Коэффициенты2 = Новый Массив;Коэффициенты2.Добавить(3);Коэффициенты2.Добавить(7);Коэффициенты2.Добавить(2);Коэффициенты2.Добавить(4);Коэффициенты2.Добавить(10);Коэффициенты2.Добавить(3);Коэффициенты2.Добавить(5);Коэффициенты2.Добавить(9);Коэффициенты2.Добавить(4);Коэффициенты2.Добавить(6);Коэффициенты2.Добавить(8);Коэффициенты2.Добавить(0);// Проверка первой контрольной цифры (11-я цифра)Сумма1 = 0;Для Индекс = 0 По 10 ЦиклСумма1 = Сумма1 + МассивЦифр[Индекс] * Коэффициенты1[Индекс];КонецЦикла;Остаток1 = Сумма1 % 11;Если Остаток1 > 9 ТогдаОстаток1 = Остаток1 % 10;КонецЕсли;Если Остаток1 <> МассивЦифр[10] ТогдаВозврат Ложь;КонецЕсли;// Проверка второй контрольной цифры (12-я цифра)Сумма2 = 0;Для Индекс = 0 По 11 ЦиклСумма2 = Сумма2 + МассивЦифр[Индекс] * Коэффициенты2[Индекс];КонецЦикла;Остаток2 = Сумма2 % 11;Если Остаток2 > 9 ТогдаОстаток2 = Остаток2 % 10;КонецЕсли;Возврат Остаток2 = МассивЦифр[11];ИначеВозврат Ложь;КонецЕсли;КонецФункцииПример использования:
1С (Код)12345Если ПроверитьИНН("7707083893") ТогдаСообщитьИнформацию("ИНН валиден");ИначеСообщитьИнформацию("ИНН невалиден");КонецЕсли;Этот код проверит ИНН на корректность по контрольным цифрам и длине.
Рекомендую использовать именно такой алгоритм для проверки ИНН в 1С.
Если нужна помощь с кодом или интеграцией — обращайтесь.
16 января 2026 в 18:00 в ответ на: Почему в 1С БП в отчете комиссионера не заполнена колонка «Номер»? #35490В 1С Бухгалтерия предприятия (БП) при формировании отчёта комиссионера, если в строке с комиссионером из списка покупателей не заполнена колонка «Номер», причина обычно связана с тем, что в справочнике покупателей (или контрагентов) у этого комиссионера отсутствует или не заполнено поле «Номер» (например, номер договора, ИНН, или другой реквизит, который выводится в колонку «Номер» отчёта).
Основные причины и пути решения:
1. **Отсутствие данных в реквизите, который выводится в колонку «Номер»**
В типовой конфигурации в колонку «Номер» часто выводится номер договора с контрагентом или ИНН. Если у комиссионера в справочнике покупателей не заполнен этот реквизит, то в отчёте будет пусто.
Проверьте карточку комиссионера в справочнике Покупатели (или Контрагенты) и заполните необходимые реквизиты (например, номер договора, ИНН, КПП).2. **Неправильное сопоставление данных в отчёте**
В отчёте может использоваться запрос, который берёт номер из связанного справочника или документа. Если связь между комиссионером и покупателем не установлена корректно, или в запросе не учитывается нужный реквизит, колонка останется пустой.
Проверьте текст запроса отчёта, найдите, откуда берётся поле «Номер», и убедитесь, что для комиссионера этот реквизит доступен.3. **Особенности работы с комиссионерами в конфигурации**
В некоторых версиях БП комиссионеры могут быть оформлены как отдельный тип контрагентов или как отдельный справочник. Если отчёт берёт данные из списка покупателей, а комиссионер оформлен иначе, то данные по нему могут не подтягиваться корректно.
Проверьте, что комиссионер действительно есть в списке покупателей и что у него заполнены все необходимые реквизиты.4. **Проверка настроек отчёта и прав доступа**
Иногда из-за ограничений прав или настроек отчёта некоторые поля не отображаются. Убедитесь, что у пользователя есть права на просмотр всех реквизитов и что в настройках отчёта включено отображение колонки «Номер».5. **Кастомизация и доработки**
Если отчёт дорабатывался, возможно, в коде или запросе была допущена ошибка, из-за которой для комиссионера не подтягивается номер. Проверьте изменения в отчёте, особенно в части формирования выборки данных.—
**Рекомендации по диагностике:**
— Откройте карточку комиссионера в справочнике Покупатели/Контрагенты, проверьте заполнение реквизитов, которые должны выводиться в колонку «Номер».
— В режиме конфигуратора или отладки откройте запрос отчёта, найдите поле, которое выводится в колонку «Номер», и выполните его отдельно с фильтром по комиссионеру, чтобы увидеть, возвращается ли значение.
— Если поле пустое, найдите, откуда в запросе берутся данные, и проверьте наличие и заполненность соответствующих реквизитов.
— Если данные есть в справочнике, но не выводятся, проверьте логику формирования отчёта и права доступа.—
Если нужна конкретика по коду запроса или по конфигурации — приложите текст запроса или укажите версию конфигурации.
https://helpf.pro/faq/ (поиск по ключевым словам «комиссионер номер не заполнен») -
АвторСообщения