Группа: Пользователи
Сообщений: 17
Спасибо сказали: 0 раз
Рейтинг: 0
Здравствуйте, у меня возникла вот такая проблема. Мне надо чтобы при создании документа Заявка автоматически создавался документ Счет-фактура с такими же полями что и Заявка. Ввод на основании я уже сделала а что дальше делать незнаю, помогите.
Группа: Местный
Сообщений: 2908
Из: Київ, Україна
Спасибо сказали: 1159 раз
Рейтинг: 1244.5
Сделать очень просто. Вариантов достаточно. Но в таких задачах есть очень много нюансов, которые напрямую влияют на вариант реализации данного функционала.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0
Есть события документов (ПослеЗаписи, ОбработкаПроведения). Есть подписки на события (что гораздо лучше с точки зрения изменения конфигурации). С чем конкретно возникают сложности?
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im
Если Источник.ВидОперации = Перечисления.ВидыОперацийЗаявка.ТоварПоНаименованию Тогда Если Выборка.Следующий() Тогда СвязанныйДокумент = Выборка.Ссылка.ПолучитьОбъект(); Иначе СвязанныйДокумент = Документы.Счет_фактура.СоздатьДокумент(); СвязанныйДокумент.Дата = Источник.Дата+1; ОбновитьНумерациюОбъектов(Метаданные.Документы.Счет_фактура); СвязанныйДокумент.УстановитьНовыйНомер(); КонецЕсли;
// должны автоматически создаваться другие документы // СвязанныйДокумент - объект документа, создаваемого автоматически // // Перед выполнением дальнейшего алгоритма выполняется поиск связанного // документа. Если документ не найден, то создается новый // Если Источник.Проведен Тогда // Если источник проведен, то зависимый документ перезаполняется // на основании источника и проводится СвязанныйДокумент.ПометкаУдаления = Ложь; ОбновитьСчет_фактура(СвязанныйДокумент, Источник); СвязанныйДокумент.Записать(РежимЗаписиДокумента.Проведение); ИначеЕсли Источник.ПометкаУдаления Тогда // Если источник помечен на удаление, то связанный документ также // помечается на удаление. Если он был проведен, то процедура // "УстановитьПометкуУдаления" инициирует отмену проведения документа Если НЕ СвязанныйДокумент.ЭтоНовый() Тогда // Если связанный документ еще не записан в базу, то // никакие действия не выполняются СвязанныйДокумент.УстановитьПометкуУдаления(Истина); КонецЕсли; Иначе // Выполняется запись документа без проведения или установки // пометки удаления Если СвязанныйДокумент.ЭтоНовый() Тогда // Если связанный документ не записан в базу, то заполняем его и // выполняем запись документа без проведения ОбновитьСчет_фактура(СвязанныйДокумент, Источник); СвязанныйДокумент.Записать(РежимЗаписиДокумента.Запись); ИначеЕсли СвязанныйДокумент.Проведен Тогда // Если связанный документ был проведен, то выполняем отмену проведения СвязанныйДокумент.Записать(РежимЗаписиДокумента.ОтменаПроведения); Иначе // В остальных случаях просто записываем зависимый документ // Если была установлена пометка удаления - снимаем ее СвязанныйДокумент.УстановитьПометкуУдаления(Ложь); КонецЕсли; КонецЕсли Иначе // При смене вида операции "ТоварыПродукцияПоОрдерам" помечаем на удаление // зависимый документ расходного ордера Если Выборка.Следующий() Тогда СвязанныйДокумент = Выборка.Ссылка.ПолучитьОбъект(); СвязанныйДокумент.УстановитьПометкуУдаления(Ложь); КонецЕсли; КонецЕсли;
КонецПроцедуры
попыталась реализовать, это все я написала в ПриЗаписи, он у меня ругается что в Процедура с указаным именем не определена: ОбновитьСчет_фактура(СвязанныйДокумент, Источник); И дальше я в тупике, незнаю че и делать
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0
А процедура ОбновитьСчет_фактура(СвязанныйДокумент, Источник) где-то описывается? Судя по коду, это должна быть процедура, в которой собственно заполняется счет.
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im
// Заполняем одноименные реквизиты расходной накладной // из документа перемещения ЗаполнитьЗначенияСвойств(ДокументЗаявка, Источник, , "Номер"); // Дату расходного ордера увеличиваем на 1 секунду // от даты документа перемещения ДокументЗаявка.Дата = Источник.Дата + 1; ДокументЗаявка.ВидОперации = Перечисления.ВидыОперацийСчет_фактура.Перемещение; ДокументЗаявка.ДокументПередачи = Источник.Ссылка; // Заполняем таб. часть "Товары" из документа перемещения ДокументЗаявка.Товар.Очистить(); Для Каждого Стр Из Источник.Товар Цикл СтрокаТовар = ДокументЗаявка.Товар.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТовар,Стр); КонецЦикла;
КонецПроцедуры
Я ее вставила в код, 1с даже не поругалась, но при этом ничего не происходит. Когда я создаю/обновляю Заявки Документ Счет_фактура не создается. И как сделать так чтобы на когда я создаю,обновляю Заявку создавалось несколько документов, например счет-фактура и товарная накладная?
Группа: Пользователи
Сообщений: 258
Из: Київ
Спасибо сказали: 12 раз
Рейтинг: 0
Цитата(афродита @ 20.05.14, 20:34)
Я ее вставила в код, 1с даже не поругалась, но при этом ничего не происходит. Когда я создаю/обновляю Заявки Документ Счет_фактура не создается. И как сделать так чтобы на когда я создаю,обновляю Заявку создавалось несколько документов, например счет-фактура и товарная накладная?
Нужно создавать документ после того как записывалась Заявка?
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 1 раз
Рейтинг: 0
Есть несколько вариантов как решить Авто ввод на основании:
Как я понимаю - проблема именно в вызове процедуры ОбработкаЗаполнения()?
1. Тогда берем, в Вашем случае, модуль формы документа "Заявка". Т.к. для ввода на основании нам необходима ссылка на док.основание (т.е. на нашу Заявку), то вызывать ОбработкаЗаполнения() мы будем после записи Заявки. 2. Итак, в модуле формы заявки открываем/создаем обработчик ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) и делаем так:
&НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Док = Документы.СчетФактура.СоздатьДокумент();
Док.ОбработкаЗаполнения(Объект.Ссылка, Истина); Док.Дата = ТекущаяДата(); //или "= Объект.Дата", или "= любая другая дата"... Док.Записать(РежимЗаписиДокумента.Проведение); КонецПроцедуры
3. ВАЖНО!!! для процедуры ОбработкаЗаполнения() (модуль документа СчетФактура) ОБЯЗАТЕЛЬНО должно быть прописано Экспорт. Вот так:
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!