При копировании документа не все реквизиты копируются |
Я |
15.03.18 — 09:19
Добрый день! Конфа самописная, 1с 8.3 Есть документ ПредзаказТовара, при копировании заполняются все реквизиты кроме кассы (Поле пустое) и Даты (Дата ставится текущая), мне же нужно чтобы все реквизиты, кроме номера документа конечно же совпадали с документом основания. Ни в модуле формы, ни в модуле объекта нет процедур связаных с копированием.
1 — 15.03.18 — 09:24
(0) Ни в модуле формы, ни в модуле объекта нет процедур связаных с копированием.
Думаю есть.
2 — 15.03.18 — 09:25
(1) В форме, ПриОткрытии, ПередОткрытием, Модуль внизу без процедур.
В Модуле, ПриКоприовании, Модуль внизу без процедур.
3 — 15.03.18 — 09:28
(1) Есть то конечно, но у меня ничего такого не описано, насколько я понимаю мне нужно в модуле объекта, в процедуре при копировании написать что то вроде
ЭтотОбъект.Дата=ДокументОснования.Дата
ЭтотОбъект.Касса=ДокументОснования.Касса
4 — 15.03.18 — 09:30
(2) Подскажите, будьте любезны, как ссылку на основание получить?)
5 — 15.03.18 — 09:35
При чем тут копирование и ДокументОснование?
6 — 15.03.18 — 09:38
Т.е. сперва кодом где-то эти параметры затираются, а потом ты их обратно будешь добавлять. Тебе все равно придется искать, чтобы стратегически свои пляски вставить после затирания, иначе толку не будет.
7 — 15.03.18 — 09:38
(5) Извините, ОбъектКопирования)
Пишу:
Процедура ПриКопировании(ОбъектКопирования)
ЭтотОбъект.Дата=ОбъектКопирования.Дата;
ЭтотОбъект.Касса=ОбъектКопирования.Касса;
КонецПроцедуры
Дата копируется, касса остается пустой.
8 — 15.03.18 — 09:40
Ага! Нашел!
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
// ПриЗаписиПерепроводить(1);
Если ЭтоНовый() тогда
Автор=ТекПользователь;
Касса=Автор.Касса3;
КонецЕсли;
КонецПроцедуры
Значит теперь нужно написать условие:
Если не Копирование Тогда
Конец если;
9 — 15.03.18 — 09:41
Стоп, тут же указано ЕСЛИ ЭтоНовый, тогда почему касса не копируется?
10 — 15.03.18 — 09:42
(9) Потому что, когда копируешь, то создаётся НОВЫЙ документ в базе :))
11 — 15.03.18 — 09:44
(10) Еще только утро, а фляжка свистит =D Я понял уже)
prilforreal
12 — 15.03.18 — 09:51
В итоге получилось так:
Процедура ПриКопировании(ОбъектКопирования)
ЭтотОбъект.Дата=ОбъектКопирования.Дата;
ЭтотОбъект.Касса=ОбъектКопирования.Касса;
КонецПроцедуры
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если ЭтоНовый() тогда
Автор=ТекПользователь;
Если ПараметрОбъектКопирования=0 Тогда
Касса=Автор.Касса3;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
При копировании документа пропускать один реквизит
Автор sanohec, 08 дек 2022, 16:36
0 Пользователей и 1 гость просматривают эту тему.
Вниз
Страницы1
sanohec
- Регистрация: 2022-11-02
- Сообщений: 11
- Профессия: Программист 8.x
При копировании документа пропускать один реквизит
08 дек 2022, 16:36
Здравствуйте, каким образом при копировании документа стандартным способом копировать не все реквизиты документа, а пропустить несколько?
LexaK
- Все гораздо проще.
- Регистрация: 2012-05-16
- Сообщений: 4,107
- Профессия: Программист 1С
- РЕПУТАЦИЯ: 1568
Re: При копировании документа пропускать один реквизит
#1
08 дек 2022, 16:42
sanohec, в модуле документа, в процедуре ПриКопировании()
просто обнулите/очистите нужные реквизиты
- 1 пользователь сказал спасибо!
если помогло нажмите: Спасибо!
sanohec
- Регистрация: 2022-11-02
- Сообщений: 11
- Профессия: Программист 8.x
Re: При копировании документа пропускать один реквизит
#2
08 дек 2022, 16:46
LexaK, Спасибо, всё получилось)
Вверх
Страницы1
Теги:
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
При копировании документа пропускать один реквизит
Опции…
Похожие темы (5)
не получается установить соответствие двух реквизитов
Автор User33221
Не отправляет печатную форму документа по электр. почте.
Автор Igor100500
Как сделать в отчете чтобы при пометке удаления документа, этот документ не выводился в отчете?
Автор Magn
Как вызвать форму во внешней обработке обычное приложение
Автор ktu78
Интеграция 1с — Битрикс через модуль обмена «1С — Битрикс (Выгрузка стандартного реквизита, как свойства)
Автор R_o_m_o_n
Поиск
Простой
Google
Здравствуйте, Я копирую документ, при этом часть реквизитов нового документа не заполняются значениями старого. Есть какие — то настройки или предопределенная процедура, заполняющая новый документ?
в модуле объекта есть процедура «ПриКопировании»
также в форме можно перехватить, при открытии, перед открытием
эта процедура пустая, а документ заполняется почти полностью
У каждого реквизита документа есть флаг «Заполнять из данных заполнения»
+ подписки тоже могут быть
документ ЗаявкаНаРасходованиеСредств, УТП.
на реквизитах , которые заполняются, галочки пустые
там процедура приОткрыти в которой смотри проверку на Если НЕ ЭтоНовый Тогда
включи замер производительности, нажми скопировать, отключи замер. Если дело в коде — увидишь сразу
в этой процедуре реквизиты уже заполнены
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
+1
Как определить при добавлении нового документа, что он добавляется копированием?
Есть расширение формы документа ПараметрОбъектКопирования. В него при копировании помещается ссылка на документ оригинал.
Также есть расширение ПараметрОснование, в нем ссылка на основание.
Вот пример:
Код 1C v 8.х
Процедура ПриОткрытии()
Если ЭтоНовый() Тогда
Если ПараметрОбъектКопирования = НЕОПРЕДЕЛЕНО Тогда
// заполняем реквизиты значениями по умолчанию
...
Иначе
...
КонецЕсли;
...
КонецЕсли;
...
КонецПроцедуры
Еще при копировании возникает событие в модуле объекта ПриКопировании(<ОбъектКопирования>)
Параметры:
<ОбъектКопирования>
Тип: ДокументОбъект.
Исходный документ, который является источником копирования.
Описание:
Возникает при создании документа копированием.
См. также:
ДокументСсылка, метод Скопировать
Процедура предназначена для программного копирования содержимого реквизитов и/или табличных частей из одного документа (источника) в другой документ (приёмник). В параметры процедуры передаем документ-приёмник (из которого будем копировать реквизиты и/или табличные части) и документ-источник (куда будем вставлять реквизиты и/или табличные части).
В параметр СвойстваВключаемые можно передать строку с перечнем имён реквизитов (через запятую) которые будут скопированы, если параметр оставить пустым — то будут скопированы все реквизиты/табличные части.
В параметр СвойстваИсключаемые можно передать строку с перечнем имён реквизитов (через запятую) которые будут исключены (не будут скопированы), если параметр оставить пустым — то будут скопированы все реквизиты/табличные части без исключений.
При вызове стандартной команды ввода на основании выполняется создание нового объекта и вызов в модуле объекта обработчика события ОбработкаЗаполнения()
. В этом событии должен быть реализован алгоритм заполнения данных объекта из данных объекта-основания. Именно этот обработчик генерируется конструктором ввода на основании:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Клиенты") Тогда // Заполнение шапки Клиент = ДанныеЗаполнения.Ссылка; КонецЕсли; //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ КонецПроцедуры
Следует учитывать, что этот обработчик будет использоваться не только при вводе на основании. Он будет вызываться и при вызове метода объекта Заполнить()
:
НовыйДокумент = Документы.РасходнаяНакладная.СоздатьДокумент(); НовыйДокумент.Заполнить(ВыбранныйКлиент); ФормаДокумента = НовыйДокумент.ПолучитьФорму(); ФормаДокумента.ПараметрОснование = ВыбранныйКлиент; ФормаДокумента.Открыть();
Таким образом, он является стандартным местом, в котором реализуется заполнение данных объекта из данных объекта основания без учета того, откуда и зачем вызывается это заполнение. Соответственно в этом обработчике можно только выполнять заполнение данных и нельзя делать каких-либо дополнительных действий связанных с интерфейсом системы.
Аналогично при копировании вызывается обработчик события ПриКопировании()
, в котором можно дополнить стандартное заполнение данных выполняемое системой при копировании объекта. Этот обработчик вызывается, как при интерактивном копировании, так и при вызове метода Скопировать()
.
Кроме того, расширения форм объектов предоставляют свойства ПараметрОснование
и ПараметрОбъектКопирования
, которые заполняются системой при выполнении стандартных команд ввода на основании и копирования. Значения этих свойств могут использоваться в обработчиках формы для определения того, что при открытии формы выполнялся ввод на основании или копирование.
Справка
ДокументСсылка.ИмяДокумента.Скопировать()
Возвращаемое значение:
- Тип:
ДокументОбъект
.
Описание:
- Создает новый документ копированием существующего. Использование метода не приводит к записи созданного объекта в базу данных.
Доступность:
- Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
ДокументОбъект.ИмяДокумента.ПриКопировании(ОбъектКопирования)
Параметры:
ОбъектКопирования
, типДокументОбъект
. Исходный документ, который является источником копирования.
Описание:
- Возникает при создании документа копированием.
Поиск:
1С:Предприятие • Ввод на основании • Заполнить • Копировать • Обработка заполнения • Параметр • Параметр объект копирования • Параметр основание • Событие