База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как напечатать конверты из 1С:Моя Бухгалтерия 8 (РБ) с контрагентами?
- В этой теме 1 ответ, 2 участника, последнее обновление 14 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
21 октября 2026 в 12:22 #38880
в 1С Моя бухгалтерия 8 Хьюмен (РБ) как из справочника Контрагентов сделать обработку для печати конвертов
-
21 октября 2026 в 12:22 #38881
В «1С:Моя бухгалтерия 8 для Беларуси» печать конвертов обычно удобнее сделать отдельной внешней обработкой. Обработка должна:
1. Получать выбранных контрагентов.
2. Брать из карточки контрагента наименование и почтовый адрес.
3. Подставлять данные в макет конверта.
4. Формировать табличный документ.
5. Отправлять его на печать.Сначала проверьте, нет ли уже готовой команды:
Справочники → Контрагенты → выделить контрагента → Еще
Ищите команды:
— «Печать конвертов»;
— «Почтовые конверты»;
— «Печать адресов»;
— «Печать».Если такой команды нет, можно сделать внешнюю обработку.
## 1. Создание внешней обработки
В конфигураторе создайте:
Файл → Новый → Внешняя обработка
Например, назовите ее:
1С (Код)1ПечатьКонвертовВ обработке создайте управляемую форму и добавьте реквизиты формы:
| Реквизит | Тип |
|—|—|
| СписокКонтрагентов | ТаблицаЗначений |
| ТабличныйДокумент | ТабличныйДокумент |В таблице
СписокКонтрагентовсоздайте колонки:1С (Код)123456789СсылкаНаименованиеАдресИндексГородУлицаДомКорпусКвартираМинимально достаточно колонок:
1С (Код)123СсылкаНаименованиеАдресЕсли обработка будет использоваться только для выбранных контрагентов, в таблицу можно передавать ссылки на них из списка справочника.
## 2. Создание макета конверта
В обработке создайте макет типа Табличный документ с именем:
1С (Код)1КонвертВ макете создайте область с именем:
1С (Код)1КонвертРазместите в области параметры:
1С (Код)1234ПолучательАдресИндексГородНапример, макет можно оформить так:
1С (Код)123456ИндексПолучательАдресГородДля стандартного конверта обычно используется область примерно размером 220 × 110 мм. Точные размеры зависят от типа конверта и принтера.
В параметрах табличного документа можно установить:
— ориентацию страницы;
— размер бумаги;
— поля;
— масштаб;
— отсутствие колонтитулов;
— разрыв страницы после каждого конверта.Для печати одного конверта на одной странице следует использовать отдельную область макета для каждого получателя.
## 3. Процедура формирования печатного документа
В модуль формы обработки можно добавить процедуру:
1С (Код)1234567891011121314151617&НаКлиентеПроцедура ПечатьКонвертов(Команда)Если СписокКонтрагентов.Количество() = 0 ТогдаСообщить("Не выбраны контрагенты для печати.");Возврат;КонецЕсли;ТабДок = СформироватьКонвертыНаСервере(СписокКонтрагентов);Если ТабДок = Неопределено ТогдаВозврат;КонецЕсли;ТабДок.Показать("Печать конвертов");КонецПроцедурыСерверная функция:
1С (Код)1234567891011121314151617181920212223242526272829&НаСервереФункция СформироватьКонвертыНаСервере(СписокКонтрагентов) ЭкспортТабДок = Новый ТабличныйДокумент;Макет = ПолучитьМакет("Конверт");Для каждого СтрокаКонтрагент Из СписокКонтрагентов ЦиклЕсли Не ЗначениеЗаполнено(СтрокаКонтрагент.Ссылка) ТогдаПродолжить;КонецЕсли;Область = Макет.ПолучитьОбласть("Конверт");Область.Параметры.Получатель = СтрокаКонтрагент.Наименование;Область.Параметры.Адрес = СтрокаКонтрагент.Адрес;Область.Параметры.Индекс = СтрокаКонтрагент.Индекс;Область.Параметры.Город = СтрокаКонтрагент.Город;ТабДок.Вывести(Область);КонецЦикла;ТабДок.АвтоМасштаб = Истина;ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;Возврат ТабДок;КонецФункцииЕсли в макете используется только один параметр адреса, можно упростить:
1С (Код)12Область.Параметры.Получатель = СтрокаКонтрагент.Наименование;Область.Параметры.Адрес = СтрокаКонтрагент.Адрес;## 4. Заполнение списка контрагентов
Самый простой вариант, подходящий для первой версии обработки, это добавить в форму обработки таблицу
СписокКонтрагентови кнопку Добавить контрагента.Процедура кнопки:
1С (Код)1234567891011&НаКлиентеПроцедура ДобавитьКонтрагента(Команда)НоваяСтрока = СписокКонтрагентов.Добавить();НоваяСтрока.Ссылка = Неопределено;НоваяСтрока.Наименование = "";НоваяСтрока.Адрес = "";НоваяСтрока.Индекс = "";НоваяСтрока.Город = "";КонецПроцедурыЛучше, чтобы колонка
Ссылкаимела тип:1С (Код)1СправочникСсылка.КонтрагентыПри выборе контрагента можно автоматически заполнять его наименование и адрес.
Например:
1С (Код)12345678910111213141516&НаКлиентеПроцедура СписокКонтрагентовСсылкаПриИзменении(Элемент)ТекущаяСтрока = Элементы.СписокКонтрагентов.ТекущиеДанные;Если ТекущаяСтрока = Неопределено ТогдаВозврат;КонецЕсли;Если Не ЗначениеЗаполнено(ТекущаяСтрока.Ссылка) ТогдаВозврат;КонецЕсли;ЗаполнитьДанныеКонтрагентаНаСервере(ТекущаяСтрока.Ссылка);КонецПроцедурыНо для разных конфигураций реквизиты адреса могут называться по-разному, поэтому процедуру заполнения нужно адаптировать под конкретную базу.
## 5. Получение адреса из карточки контрагента
Это самый важный момент. В разных версиях «Моя бухгалтерия 8 для Беларуси» адрес может храниться:
— в реквизите
Адрес;
— в реквизитеЮридическийАдрес;
— в реквизитеПочтовыйАдрес;
— на вкладке «Адреса и телефоны»;
— в контактной информации;
— в регистре сведений контактной информации.Нельзя заранее гарантировать, что в конфигурации есть реквизит с именем
Адрес.Если адрес хранится непосредственно в реквизите справочника, код будет примерно таким:
1С (Код)123456789101112131415&НаСервереПроцедура ЗаполнитьДанныеКонтрагентаНаСервере(СсылкаКонтрагента) ЭкспортТекущаяСтрока = Элементы.СписокКонтрагентов.ТекущиеДанные;Контрагент = СсылкаКонтрагента.ПолучитьОбъект();ТекущаяСтрока.Наименование = Контрагент.Наименование;// Названия реквизитов необходимо проверить в вашей конфигурацииТекущаяСтрока.Адрес = Контрагент.ПочтовыйАдрес;ТекущаяСтрока.Индекс = Контрагент.ПочтовыйИндекс;ТекущаяСтрока.Город = Контрагент.Город;КонецПроцедурыЕсли у вас адрес хранится одной строкой, достаточно:
1С (Код)1ТекущаяСтрока.Адрес = Контрагент.Адрес;Если адрес хранится в контактной информации, нужно получать его через стандартные механизмы конфигурации. Название общего модуля и процедуры в белорусской конфигурации может отличаться от типовой российской «Бухгалтерии предприятия».
Практически определить правильные реквизиты можно так:
1. Открыть карточку контрагента.
2. В конфигураторе открыть объект Справочник → Контрагенты.
3. Проверить реквизиты объекта.
4. Посмотреть табличные части и контактную информацию.
5. Если в самом справочнике адреса нет, проверить регистр сведений, связанный с контактной информацией.## 6. Более удобный вариант, выбор из списка контрагентов
Если необходимо запускать обработку прямо из списка контрагентов, лучше сделать не обычную внешнюю обработку, а расширение конфигурации.
В расширении:
1. Добавляется команда в форму списка справочника
Контрагенты.
2. Команда появляется в меню Еще.
3. Из списка передаются выбранные ссылки.
4. Открывается форма обработки.
5. Обработка формирует печатный документ.Логика команды будет такой:
1С (Код)123456789101112131415161718192021222324&НаКлиентеПроцедура ПечатьКонвертов(Команда)МассивСсылок = Новый Массив;Для каждого Строка Из Элементы.Список.ВыделенныеСтроки ЦиклМассивСсылок.Добавить(Строка.Ссылка);КонецЦикла;Если МассивСсылок.Количество() = 0 ТогдаСообщить("Выберите хотя бы одного контрагента.");Возврат;КонецЕсли;ПараметрыФормы = Новый Структура;ПараметрыФормы.Вставить("СписокСсылок", МассивСсылок);ОткрытьФорму("ВнешняяОбработка.ПечатьКонвертов.Форма.Форма",ПараметрыФормы,ЭтаФорма);КонецПроцедурыОднако имя элемента списка и способ получения выделенных строк зависят от версии платформы и формы списка. В некоторых конфигурациях выбранные строки передаются в обработчик команды через стандартный параметр
ПараметрКоманды.## 7. Формирование списка из переданных ссылок
В форме обработки можно обработать ссылки при открытии:
1С (Код)1234567891011121314151617181920212223&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Если Параметры.Свойство("СписокСсылок") ТогдаДля каждого СсылкаКонтрагента Из Параметры.СписокСсылок ЦиклКонтрагент = СсылкаКонтрагента.ПолучитьОбъект();НоваяСтрока = СписокКонтрагентов.Добавить();НоваяСтрока.Ссылка = СсылкаКонтрагента;НоваяСтрока.Наименование = Контрагент.Наименование;// Ниже указать фактические реквизиты вашей базыНоваяСтрока.Адрес = Контрагент.ПочтовыйАдрес;НоваяСтрока.Индекс = Контрагент.ПочтовыйИндекс;НоваяСтрока.Город = Контрагент.Город;КонецЦикла;КонецЕсли;КонецПроцедуры## 8. Если нужно печатать адрес организации
Для организаций обычно требуется печатать не только название, но и почтовый адрес:
1С (Код)123ООО «Ромашка»220030, Республика Беларусь,г. Минск, ул. Советская, д. 10, оф. 25Для физического лица:
1С (Код)123Иванов Иван Иванович220100, г. Минск,ул. Лесная, д. 15, кв. 20Лучше формировать отдельную строку адреса:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839Функция СформироватьАдрес(Индекс, Город, Улица, Дом, Корпус, Квартира) ЭкспортАдрес = "";Если ЗначениеЗаполнено(Индекс) ТогдаАдрес = Адрес + Индекс;КонецЕсли;Если ЗначениеЗаполнено(Город) ТогдаЕсли ЗначениеЗаполнено(Адрес) ТогдаАдрес = Адрес + ", ";КонецЕсли;Адрес = Адрес + Город;КонецЕсли;Если ЗначениеЗаполнено(Улица) ТогдаЕсли ЗначениеЗаполнено(Адрес) ТогдаАдрес = Адрес + ", ";КонецЕсли;Адрес = Адрес + Улица;КонецЕсли;Если ЗначениеЗаполнено(Дом) ТогдаАдрес = Адрес + ", д. " + Дом;КонецЕсли;Если ЗначениеЗаполнено(Корпус) ТогдаАдрес = Адрес + ", корп. " + Корпус;КонецЕсли;Если ЗначениеЗаполнено(Квартира) ТогдаАдрес = Адрес + ", кв. " + Квартира;КонецЕсли;Возврат Адрес;КонецФункции## 9. Настройка печати
После формирования табличного документа:
1. Нажмите Печать.
2. В настройках принтера выберите фактический формат конверта.
3. Укажите ориентацию.
4. Отключите масштабирование «по размеру страницы».
5. Установите масштаб 100%.
6. Сначала напечатайте на обычном листе.
7. Наложите лист на конверт и проверьте расположение текста.
8. После проверки печатайте на конвертах.Частая ошибка заключается в том, что 1С формирует правильный макет, но драйвер принтера автоматически масштабирует его под формат А4. Поэтому в настройках печати нужно отключить автоматическое масштабирование.
Для вашей конфигурации наиболее надежный вариант такой:
— добавить команду «Печать конвертов» в список контрагентов через расширение;
— передавать в обработку выбранные ссылки;
— в обработке получать почтовый адрес;
— выводить адрес в макет табличного документа;
— печатать по одному конверту на страницу.Названия реквизитов адреса в «Моя бухгалтерия 8 для Беларуси» зависят от релиза и доработок. Поэтому участок с
Контрагент.ПочтовыйАдрес,Контрагент.ПочтовыйИндексиКонтрагент.Городнужно заменить на реальные реквизиты вашей базы.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.