Форум программистов, компьютерный форум, киберфорум
1С
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94

Создание обработки для выставления счетов

29.07.2026, 15:56. Показов 2178. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, друзья!

Доработка для программы 1С Бухгалтерия 8.3

Есть задача - написать программу для автоматического выставления счетов, выгрузки их во временную папку, отправку менеджерам по почте и очистки папки после всех выше проведенных операций.

1. Написал процедуру для формирования счета, записи и проведения его в базе. Все делается без проблем.
2. Затем стал писать код для формирования печатной формы счета и сохранения его во временную папку в формате .pdf. Я ее создал сам в удобном для себя месте. Но процедура не работает, выдает ошибку на операторе – «УправлениеПечатью.СформироватьПечатныеФ ормы» Справочно: Макет счета хранится: в общих макетах, я его пытаюсь получить.
3. Процедура отправки файла с расширением .pdf
4. В переменную МакетСчета необходимый мне макет приходит, смотрел на отладке.

Скриншот ошибки и код прилагаю:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    СсылкаНаСчет = НовыйСчет.Ссылка; 
    
    //Сохраняем созданный документ в файл
    
    ТабДок = Новый ТабличныйДокумент;
        
    МакетСчета = ПолучитьОбщийМакет("ПФ_MXL_СчетЗаказ");
            
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(СсылкаНаСчет); // Ссылка на ваш документ «СчётНаОплатуПокупателю»
    ПараметрыПечати = Новый Структура;
    ПечатныеФормы = УправлениеПечатью.СформироватьПечатныеФормы("Документ.СчетНаОплатуПокупателю", МакетСчета, МассивОбъектов, ПараметрыПечати);
    ТабДок = ПечатныеФормы.КоллекцияПечатныхФорм.ТабличныйДокумент;
    
    ПутьКФайлу = "C:\Downloads\" + "Счет_" + СтрЗаменить(Строка(СсылкаНаСчет.Номер), "/", "_") + ".pdf";
    
    Попытка
        ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
        Сообщить("Файл успешно сохранен во временное хранилище: " + ПутьКФайлу);
    Исключение
        Инфо = ИнформацияОбОшибке();
        ВызватьИсключение "Ошибка при сохранении PDF: " + КраткоеПредставлениеОшибки(Инфо);
    КонецПопытки;   
    
    //ОтправкаСчетовПоПочте();
Миниатюры
Создание обработки для выставления счетов  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.07.2026, 15:56
Ответы с готовыми решениями:

влияет создание субсчетов в плане счетов на конфигурацию
Добрый день! вопрос по 1с предприятие 8,2 бухгалтерия 2,0 будет влияет создание субсчетов в плане...

Создание расчетных счетов и контроль за движением средств
Изучаю 1с,и стало интересно,каким образом следить за поступлением денежных на какой-то конкретный...

Признак суммового учета по субконто для всех счетов, которые имеют параметр субконто "Склады"
Приветствую, коллеги. Имеется план счетов "Бухгалтерский", с признаком учета субконто "Суммовой":...

34
Модератор
Эксперт 1С
 Аватар для Yulunga
4778 / 973 / 270
Регистрация: 22.04.2013
Сообщений: 6,669
Записей в блоге: 1
11.08.2026, 11:00
Студворк — интернет-сервис помощи студентам
а почему бы не хранить контрагентов в специальном справочнике "Контрагенты"?
0
Эксперт 1С
3043 / 265 / 78
Регистрация: 12.11.2015
Сообщений: 1,586
11.08.2026, 11:11
1. Можно просто регистр сведений сделать без документа
2. Если из управляемой формы выбирать обычную, такое может быть
Событие Формы "НачалоВыбора"
1C
1
2
3
СтандартнаяОбработка = ложь;
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Владелец", Объект.Контрагент));
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", ПараметрыФормы, Элемент);
0
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
11.08.2026, 11:53  [ТС]
Цитата Сообщение от Yulunga Посмотреть сообщение
а почему бы не хранить контрагентов в специальном справочнике "Контрагенты"?
Так они там и хранятся. Поле контрагент в Таблице - это ссылка как раз на этот справочник.
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4778 / 973 / 270
Регистрация: 22.04.2013
Сообщений: 6,669
Записей в блоге: 1
11.08.2026, 12:36
vitty, а, тогда я не понял, о чём речь. ну только если согласен с slypower, что прослойка в виде какой-то ТЗ в каком-то месте зачем-то не совсем понятно. раз расширение - то там и можно расширить справочник контрагентов, написав в ~послезаписизасерверепосле свой текст, чтобы дозаписывалось в какой-то-там регистр сведений. из которого потом брать сведения. это если уж надо сильно
0
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
11.08.2026, 13:19  [ТС]
Цитата Сообщение от slypower Посмотреть сообщение
1. Можно просто регистр сведений сделать без документа
2. Если из управляемой формы выбирать обычную, такое может быть
Событие Формы "НачалоВыбора"
1CСкопировано
1
2
3
СтандартнаяОбработка = ложь;
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Владелец", Объект.Контрагент));
ОткрытьФорму("Справочник.ДоговорыКонтраг ентов.ФормаВыбора", ПараметрыФормы, Элемент);
В Форме такого события нет, только в реквизитах табличной части. И на форме нет параметра Объект.Контрагент. Там все в табличной части.

Добавлено через 37 минут
Цитата Сообщение от Yulunga Посмотреть сообщение
vitty, а, тогда я не понял, о чём речь. ну только если согласен с slypower, что прослойка в виде какой-то ТЗ в каком-то месте зачем-то не совсем понятно. раз расширение - то там и можно расширить справочник контрагентов, написав в ~послезаписизасерверепосле свой текст, чтобы дозаписывалось в какой-то-там регистр сведений. из которого потом брать сведения. это если уж надо сильно
Просто для удобства. И это не расширить справочник, а полностью его переработать получается.

Тут самое главное, моей обработке получить сведения из это таблице, чтобы выполнить то для чего она предназначена.

Добавлено через 44 секунды
Цитата Сообщение от slypower Посмотреть сообщение
Можно просто регистр сведений сделать без документа
2. Если из управляемой формы выбирать обычную, такое может быть
Событие Формы "НачалоВыбора"
1CСкопировано
1
2
3
СтандартнаяОбработка = ложь;
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Владелец", Объект.Контрагент));
ОткрытьФорму("Справочник.ДоговорыКонтраг ентов.ФормаВыбора", ПараметрыФормы, Элемент);
Мне показалось, что так удобнее будет, чем писать сразу в регистр. Да и если честно в самой допусти 1С Бухгалтерия, как правило все записи в регистры идут через документы.

Но вопрос, о том, как сделать, чтобы выбирались договоры только по конкретному Контрагенту остается открытым.
0
Эксперт 1С
3043 / 265 / 78
Регистрация: 12.11.2015
Сообщений: 1,586
11.08.2026, 14:16
Цитата Сообщение от vitty Посмотреть сообщение
И на форме нет параметра Объект.Контрагент. Там все в табличной части
и что вам мешает писать для табличной части? У табличной части есть свойство ТекущиеДанные, откуда получается контрагент.
Цитата Сообщение от vitty Посмотреть сообщение
В Форме такого события нет,
Событие реквизита формы и реквизита табличной части используйте.

Цитата Сообщение от vitty Посмотреть сообщение
как правило все записи в регистры идут через документы
а как же регистр не подчиненный регистратору работает? Как туда записи делаются?
0
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
11.08.2026, 14:21  [ТС]
Цитата Сообщение от slypower Посмотреть сообщение
а как же регистр не подчиненный регистратору работает? Как туда записи делаются?
Работает конечно. Просто я честно говоря на практике ни разу не сталкивался с такими регистрами. Так то конечно его технически можно сделать и все заработает.

Добавлено через 1 минуту
Цитата Сообщение от slypower Посмотреть сообщение
Событие реквизита формы и реквизита табличной части используйте.
На форме в данном случае реквизитов нет, только в табличной части. А связи в табличном реквизиты Договор с Контрагентом при этом оставлять?
0
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
11.08.2026, 14:51  [ТС]
Цитата Сообщение от slypower Посмотреть сообщение
Событие реквизита формы и реквизита табличной части используйте.
Приложил скин ошибки при таком коде:
Миниатюры
Создание обработки для выставления счетов  
0
Эксперт 1С
3043 / 265 / 78
Регистрация: 12.11.2015
Сообщений: 1,586
11.08.2026, 15:11
НаСервереБезКонтекста не доступны реквизиты и свойства формы
0
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
11.08.2026, 15:13  [ТС]
И как же тогда сделать? На клиенте?
0
Эксперт 1С
3043 / 265 / 78
Регистрация: 12.11.2015
Сообщений: 1,586
11.08.2026, 16:11
да, в программировании вы еще только учитесь....
вы вызвали процедуру, в которую не передавали параметры и хотите, чтобы там не было ошибок...
Но это не верно тоже.
Да, нажимаете на таблицу вы на клиенте и элемент так же доступен на клиенте и форму вы открываете на клиенте, чтобы видеть, что открыли. Открыв на сервере, пользователю на клиентской машине она не будет видна.
1
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
12.08.2026, 05:42  [ТС]
Сделал, вот следующая ошибка:
Миниатюры
Создание обработки для выставления счетов  
0
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
12.08.2026, 05:58  [ТС]
С ошибкой разобрался, дело было в том, что табличную часть я переименовал, но заново не вынес на форму документа.

Код прописал, но список Договоров вываливается все равно полный. Вод код:

1C
1
2
3
4
5
6
7
8
9
10
11
&НаКлиенте
Процедура ТаблицаКонтрагентовДоговорНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
    
ТекДанные = Элементы.СписокКонтрагентов.ТекущиеДанные;
ДоговорКонтрагента = ТекДанные.Договор;
 
СтандартнаяОбработка = ложь;
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Владелец", ДоговорКонтрагента));
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", ПараметрыФормы, Элемент);     
    
КонецПроцедуры
Скриншоты свойств реквизитов "Контрагент" и "Договор" прикладываю. У реквизита "Договор" настроена связи с реквизитом "Контрагент".
Миниатюры
Создание обработки для выставления счетов   Создание обработки для выставления счетов  
0
Эксперт 1С
3043 / 265 / 78
Регистрация: 12.11.2015
Сообщений: 1,586
12.08.2026, 10:43
закомментируйте код пока и установите в свойствах реквизита на ФОРМЕ связи по Текущим данным контрагента
0
3 / 3 / 2
Регистрация: 08.06.2014
Сообщений: 94
12.08.2026, 11:29  [ТС]
Лучший ответ Сообщение было отмечено Maks как решение

Решение

Делал и так и с кодом и в реквизите в дереве метаданных ставил связь - вываливается полный список договоров в базе.

Добавлено через 27 минут
Отключил все связи и в реквизитах ТЧ в объектах метаданных и в форме. Далее написал следующик код:

1C
1
2
3
4
5
6
7
8
9
10
11
&НаКлиенте
Процедура ТаблицаКонтрагентовДоговорНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
    
ТекДанные = Элементы.СписокКонтрагентов.ТекущиеДанные;
Контрагент = ТекДанные.Контрагент;
 
СтандартнаяОбработка = ложь;
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Владелец", Контрагент));
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", ПараметрыФормы, Элемент);     
    
КонецПроцедуры
И все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2026, 11:29

Сбилась нумерация счетов
Добрый день. К 1с была дописана спец. программа выгрузки отчетов, при ее неудачном внедрении...

Как сопоставить данные Книги Покупок и Журнала Выданных счетов-фактур?
Здравствуйте! Требуется отобразить в "журнале полученных счетов-фактур" документы-основания...

Выгрузка счетов из 1С 8.2 ЗиУП в 1С 7.7 Бух
Всем привет! Ребят подскажите как сделать выгрузку счетов из 1С 8.2 ЗиУП в 1С 7.7 Бух? Нужна...

Не работает план счетов
Здравствуйте. У меня не работает план счетов. На первой картинке изображён нормальный план...

Как перенести план счетов с бекапа? 7.7
Были испорчены планы счетов, как и зачем - неизвестно. Есть бэкап конфигурации, но 3 дневной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru