Создать документ на основании, внешняя обработка ТЧ.
Добрый день, у меня обработка ТЧ, которая должно создать 2 документа на основании счета. Типовая процедура не подходит, т.к. из этого документа нужно разделить часть номенклатуры в заказ на производство, часть на закупку. Поэтому я взял типовую процедуру к себе в обработку, чтобы тут ее можно было менять. Сильно не пинайте, я только учусь.
Пришел к этому:
Ниже скопированное типовое решение, только заменил "ЭтотОбъект" на "НовыйДокумент.Ссылка"
Теперь выходит ошибка, что поле "НовыйДокумент.АвтоРазмещение" не обнаружено
Если закомментировать автоРазмещение, то немного другая ошибка:
Поле объекта недоступно для записи (ВалютаДокумента)
Пришел к этому:
Процедура Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта) Экспорт
НовыйДокумент = Документы.ЗаказПокупателя.СоздатьДокумент();
ОбработкаЗаполненияЗаказПокупателя(Объект.Ссылка, НовыйДокумент.Ссылка);
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Записать();
ОткрытьЗначение( НовыйДокумент.Ссылка );
КонецПроцедуры
ПоказатьНиже скопированное типовое решение, только заменил "ЭтотОбъект" на "НовыйДокумент.Ссылка"
Теперь выходит ошибка, что поле "НовыйДокумент.АвтоРазмещение" не обнаружено
Если ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
// Заполнение шапки
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(НовыйДокумент, "Продажа");
НовыйДокумент.АвтоРазмещение = Истина;
НовыйДокумент.ВалютаДокумента = Основание.ВалютаДокумента;
НовыйДокумент.ВремяНапоминания = Основание.ВремяНапоминания;
НовыйДокумент.ДатаОплаты = Основание.ДатаОплаты;
НовыйДокумент.ДатаОтгрузки = Основание.ДатаОтгрузки;
НовыйДокумент.ДоговорКонтрагента = Основание.ДоговорКонтрагента;
НовыйДокумент.ИспользоватьПлановуюСебестоимость = Основание.ИспользоватьПлановуюСебестоимость;
НовыйДокумент.ИтогПлановаяСебестоимость = Основание.ИтогПлановаяСебестоимость;
НовыйДокумент.Комментарий = Основание.Комментарий;
НовыйДокумент.КонтактноеЛицоКонтрагента = Основание.КонтактноеЛицоКонтрагента;
НовыйДокумент.Контрагент = Основание.Контрагент;
НовыйДокумент.Грузоотправитель = Основание.Грузоотправитель;
НовыйДокумент.Грузополучатель = Основание.Грузополучатель;
НовыйДокумент.КратностьВзаиморасчетов = Основание.КратностьВзаиморасчетов;
НовыйДокумент.КурсВзаиморасчетов = Основание.КурсВзаиморасчетов;
НовыйДокумент.НапомнитьОСобытии = Основание.НапомнитьОСобытии;
НовыйДокумент.Организация = Основание.Организация;
НовыйДокумент.Ответственный = Основание.Ответственный;
НовыйДокумент.Подразделение = Основание.Подразделение;
НовыйДокумент.СкладГруппа = Основание.Склад;
НовыйДокумент.СтруктурнаяЕдиница = Основание.СтруктурнаяЕдиница;
НовыйДокумент.СуммаВключаетНДС = Основание.СуммаВключаетНДС;
НовыйДокумент.СуммаДокумента = Основание.СуммаДокумента;
НовыйДокумент.ТипЦен = Основание.ТипЦен;
НовыйДокумент.УчитыватьНДС = Основание.УчитыватьНДС;
НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийЗаказПокупателя.ПродажаКомиссия;
//ЗаполнениеДокументов.ЗаполнитьДанныеДоставкиПоОснованию(НовыйДокумент, Основание);
УправлениеЗаказами.УстановитьДатуОплатыПоДоговору(НовыйДокумент);
Для Каждого ТекСтрокаВозвратнаяТара Из Основание.ВозвратнаяТара Цикл
НоваяСтрока = НовыйДокумент.ВозвратнаяТара.Добавить();
НоваяСтрока.Количество = ТекСтрокаВозвратнаяТара.Количество;
НоваяСтрока.Номенклатура = ТекСтрокаВозвратнаяТара.Номенклатура;
НоваяСтрока.Сумма = ТекСтрокаВозвратнаяТара.Сумма;
НоваяСтрока.Цена = ТекСтрокаВозвратнаяТара.Цена;
//ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(НоваяСтрока, "ВозвратнаяТара", ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете);
КонецЦикла;
Сообщить(Основание.Товары.Количество());
Для Каждого ТекСтрокаТовары Из Основание.Товары Цикл
//Если НЕ ТекСтрокаТовары.Номенклатура.НоменклатурнаяГруппа.НайтиПоКоду(000000017) Тогда
НоваяСтрока = НовыйДокумент.Товары.Добавить();
НоваяСтрока.ЕдиницаИзмерения = ТекСтрокаТовары.ЕдиницаИзмерения;
НоваяСтрока.ЕдиницаИзмеренияМест = ТекСтрокаТовары.ЕдиницаИзмеренияМест;
НоваяСтрока.Количество = ТекСтрокаТовары.Количество;
НоваяСтрока.КоличествоМест = ТекСтрокаТовары.КоличествоМест;
НоваяСтрока.Коэффициент = ТекСтрокаТовары.Коэффициент;
НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;
НоваяСтрока.ПлановаяСебестоимость = ТекСтрокаТовары.ПлановаяСебестоимость;
НоваяСтрока.ПроцентСкидкиНаценки = ТекСтрокаТовары.ПроцентСкидкиНаценки;
НоваяСтрока.ПроцентАвтоматическихСкидок = ТекСтрокаТовары.ПроцентАвтоматическихСкидок;
НоваяСтрока.УсловиеАвтоматическойСкидки = ТекСтрокаТовары.УсловиеАвтоматическойСкидки;
НоваяСтрока.ЗначениеУсловияАвтоматическойСкидки = ТекСтрокаТовары.ЗначениеУсловияАвтоматическойСкидки;
НоваяСтрока.СтавкаНДС = ТекСтрокаТовары.СтавкаНДС;
НоваяСтрока.Сумма = ТекСтрокаТовары.Сумма;
НоваяСтрока.СуммаНДС = ТекСтрокаТовары.СуммаНДС;
НоваяСтрока.ХарактеристикаНоменклатуры = ТекСтрокаТовары.ХарактеристикаНоменклатуры;
НоваяСтрока.Цена = ТекСтрокаТовары.Цена;
НоваяСтрока.КлючСтроки = ТекСтрокаТовары.КлючСтроки;
ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(НоваяСтрока, "Товары", НовыйДокумент.ОтражатьВБухгалтерскомУчете, НовыйДокумент.ОтражатьВНалоговомУчете, НовыйДокумент);
//КонецЕсли;
КонецЦикла;
Если Основание.СоставНабора.Количество() > 0 Тогда
НовыйДокумент.СоставНабора.Загрузить(Основание.СоставНабора.Выгрузить());
КонецЕсли;
Для Каждого ТекСтрокаУслуги Из Основание.Услуги Цикл
НоваяСтрока = НовыйДокумент.Услуги.Добавить();
НоваяСтрока.Количество = ТекСтрокаУслуги.Количество;
НоваяСтрока.Номенклатура = ТекСтрокаУслуги.Номенклатура;
НоваяСтрока.Содержание = ТекСтрокаУслуги.Содержание;
НоваяСтрока.СтавкаНДС = ТекСтрокаУслуги.СтавкаНДС;
НоваяСтрока.Сумма = ТекСтрокаУслуги.Сумма;
НоваяСтрока.СуммаНДС = ТекСтрокаУслуги.СуммаНДС;
НоваяСтрока.Цена = ТекСтрокаУслуги.Цена;
НоваяСтрока.ПроцентСкидкиНаценки = ТекСтрокаУслуги.ПроцентСкидкиНаценки;
НоваяСтрока.ПроцентАвтоматическихСкидок = ТекСтрокаУслуги.ПроцентАвтоматическихСкидок;
НоваяСтрока.УсловиеАвтоматическойСкидки = ТекСтрокаУслуги.УсловиеАвтоматическойСкидки;
НоваяСтрока.ЗначениеУсловияАвтоматическойСкидки = ТекСтрокаУслуги.ЗначениеУсловияАвтоматическойСкидки;
КонецЦикла;
КонецЕсли;
КонецПроцедуры // ОбработкаЗаполнения()
Процедура ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТЧ, ИмяТабЧасти, ЗаполнятьБУ, ЗаполнятьНУ, НовыйДокумент) Экспорт
ЗаполнитьСчетаУчетаВТабЧасти(СтрокаТЧ, ИмяТабЧасти, ЗаполнятьБУ, ЗаполнятьНУ, НовыйДокумент);
КонецПроцедуры // ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл()
Процедура ЗаполнитьСчетаУчетаВТабЧасти(ТабличнаяЧасть, ИмяТабЧасти, ЗаполнятьБУ, ЗаполнятьНУ, НовыйДокумент) Экспорт
СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаТабличнойЧасти(ИмяТабЧасти, ТабличнаяЧасть, НовыйДокумент, ЗаполнятьБУ, ЗаполнятьНУ);
КонецПроцедуры // ЗаполнитьСчетаУчетаВТабЧасти()
ПоказатьЕсли закомментировать автоРазмещение, то немного другая ошибка:
Поле объекта недоступно для записи (ВалютаДокумента)
По теме из базы знаний
- Управляемое приложение. Внешняя обработка. Создание связанных объектов
- Управляемое приложение. Внешняя обработка. Заполнение объекта
- Анализ работы внешней обработки сервиса МодульКасса применительно к задаче фискализации чеков при доставке
- Модуль "Ответственное хранение" в 1С:УТ 11.5, КА 2.5, ERP 2.5 для фулфилмента FBS / FBO
- Пример создания документа с движениями в ERP 2.5.7
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот