Как через внешнюю обработку присвоить значение табличной части документа?
2 страниц
1 2 >
13.05.12, 12:44
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
Есть документ, создается его копия. В новом документе только меняется в табличной части 3 поля Сумма, СуммаНДС, СуммаВзаиморасчетов. (умножаются на коеф. 0,35 от значения старого). Но при этом необходимо поменять значение старого, то есть уменьшить (Сумма, СуммаНДС, СуммаВзаиморасчетов умножтить на 0,65).Вот тут и проблема.не знаю как это сделать.Помогите пожалуйста.
Процедура КнопкаВыполнитьНажатие(Кнопка) НачальнаяДата = ЭтаФорма.НачПериода; КонечнаяДата = ЭтаФорма.КонПериода; Коеффициент = ЭтаФорма.Коеффициент; Если ЭтаФорма.Проведен = Истина Тогда Проведен = "ИСТИНА"; Иначе Проведен = "ЛОЖЬ"; КонецЕсли; Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачальнаяДата",НачальнаяДата); Запрос.УстановитьПараметр("КонечнаяДата",КонечнаяДата); Запрос.УстановитьПараметр("Проведен",Проведен); // Дата МЕЖДУ &НачальнаяДата И &КонечнаяДата Запрос.Текст = "ВЫБРАТЬ | РегистрацияВходящегоНалоговогоДокумента.Ссылка, | РегистрацияВходящегоНалоговогоДокумента.ВерсияДанных, | РегистрацияВходящегоНалоговогоДокумента.ПометкаУдаления, | РегистрацияВходящегоНалоговогоДокумента.Номер, | РегистрацияВходящегоНалоговогоДокумента.Дата, | РегистрацияВходящегоНалоговогоДокумента.Проведен, | РегистрацияВходящегоНалоговогоДокумента.ВидОперации, | РегистрацияВходящегоНалоговогоДокумента.Комментарий, | РегистрацияВходящегоНалоговогоДокумента.Ответственный, | РегистрацияВходящегоНалоговогоДокумента.Организация, | РегистрацияВходящегоНалоговогоДокумента.Контрагент, | РегистрацияВходящегоНалоговогоДокумента.ДоговорКонтрагента, | РегистрацияВходящегоНалоговогоДокумента.ДокументОснование, | РегистрацияВходящегоНалоговогоДокумента.НомерВходящегоДокумента, | РегистрацияВходящегоНалоговогоДокумента.ДатаВходящегоДокумента, | РегистрацияВходящегоНалоговогоДокумента.СуммаДокумента, | РегистрацияВходящегоНалоговогоДокумента.СуммаНДСДокумента, | РегистрацияВходящегоНалоговогоДокумента.СчетНДС, | РегистрацияВходящегоНалоговогоДокумента.СубконтоДт1, | РегистрацияВходящегоНалоговогоДокумента.СубконтоДт2, | РегистрацияВходящегоНалоговогоДокумента.СубконтоДт3, | РегистрацияВходящегоНалоговогоДокумента.СчетУчетаВексель, | РегистрацияВходящегоНалоговогоДокумента.ВексельСубконто1, | РегистрацияВходящегоНалоговогоДокумента.ВексельСубконто2, | РегистрацияВходящегоНалоговогоДокумента.ВексельСубконто3, | РегистрацияВходящегоНалоговогоДокумента.СуммаВозвратнойТары, | РегистрацияВходящегоНалоговогоДокумента.РучнаяКорректировка, | РегистрацияВходящегоНалоговогоДокумента.Сделка, | РегистрацияВходящегоНалоговогоДокумента.СчетУчетаНДС, | РегистрацияВходящегоНалоговогоДокумента.НомерКорректируемогоВходящегоДокуме нта, | РегистрацияВходящегоНалоговогоДокумента.ДатаКорректируемогоВходящегоДокумен та, | РегистрацияВходящегоНалоговогоДокумента.ВключаетсяВУточняющийРасчет, | РегистрацияВходящегоНалоговогоДокумента.ВидДокумента, | РегистрацияВходящегоНалоговогоДокумента.СпецРежимНалогообложения, | РегистрацияВходящегоНалоговогоДокумента.УточняемыйПериод, | РегистрацияВходящегоНалоговогоДокумента.СчетУчетаКорректировкиНДСКредит, | РегистрацияВходящегоНалоговогоДокумента.ОснованиеКорректировки, | РегистрацияВходящегоНалоговогоДокумента.ТребуетПроверкиВключенияВЕдиныйРеес трНалоговыхНакладных, | РегистрацияВходящегоНалоговогоДокумента.ДатаВключенияВЕдиныйРеестрНалоговых Накладных, | РегистрацияВходящегоНалоговогоДокумента.ОбособленноеПодразделение, | РегистрацияВходящегоНалоговогоДокумента.Коеффициент, | РегистрацияВходящегоНалоговогоДокумента.Товары.( | Ссылка, | НомерСтроки, | НаименованиеТовара, | Количество, | Цена, | Сумма, | СтавкаНДС, | СуммаВзаиморасчетов, | СуммаНДС, | ДляХозяйственнойДеятельности, | ДляОперацийОблагаемыхНДС, | СтатьяДекларацииНДСНалоговыйКредит, | Амортизируется, | ПропорциональныйНДС, | УДАЛИТЬСчетУчетаНДС | ), | РегистрацияВходящегоНалоговогоДокумента.Представление, | РегистрацияВходящегоНалоговогоДокумента.МоментВремени |ИЗ | Документ.РегистрацияВходящегоНалоговогоДокумента КАК РегистрацияВходящегоНалоговогоДокумента |ГДЕ | РегистрацияВходящегоНалоговогоДокумента.Дата МЕЖДУ &НачальнаяДата И &КонечнаяДата | И РегистрацияВходящегоНалоговогоДокумента.СпецРежимНалогообложения = 0 | И РегистрацияВходящегоНалоговогоДокумента.Проведен = &Проведен"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Док = Документы.РегистрацияВходящегоНалоговогоДокумента.СоздатьДокумент(); Док.Дата = Выборка.Дата; Док.Контрагент = Выборка.Контрагент; Док.ОбособленноеПодразделение = Выборка.ОбособленноеПодразделение; Док.ДоговорКонтрагента = Выборка.ДоговорКонтрагента; Док.Организация = Выборка.Организация; Док.Сделка = Выборка.Сделка; Док.ДокументОснование = Выборка.ДокументОснование; Док.НомерВходящегоДокумента = Выборка.НомерВходящегоДокумента; Док.ДатаВходящегоДокумента = Выборка.ДатаВходящегоДокумента; Док.ТребуетПроверкиВключенияВЕдиныйРеестрНалоговыхНакладных = Выборка.ТребуетПроверкиВключенияВЕдиныйРеестрНалоговыхНакладных; Док.ДатаВключенияВЕдиныйРеестрНалоговыхНакладных = Выборка.ДатаВключенияВЕдиныйРеестрНалоговыхНакладных; Док.ВидДокумента = Выборка.ВидДокумента; Док.НомерКорректируемогоВходящегоДокумента = Выборка.НомерКорректируемогоВходящегоДокумента; Док.ДатаКорректируемогоВходящегоДокумента = Выборка.ДатаКорректируемогоВходящегоДокумента; Док.ОснованиеКорректировки = Выборка.ОснованиеКорректировки; Док.Комментарий = Выборка.Комментарий; Док.Ответственный = Выборка.Ответственный; Док.ВидОперации = Выборка.ВидОперации; Док.СуммаДокумента = Выборка.СуммаДокумента; Док.СуммаНДСДокумента = Выборка.СуммаНДСДокумента; Док.СчетНДС = Выборка.СчетНДС; Док.СубконтоДт1 = Выборка.СубконтоДт1; Док.СубконтоДт2 = Выборка.СубконтоДт2; Док.СубконтоДт3 = Выборка.СубконтоДт3; Док.СчетУчетаВексель = Выборка.СчетУчетаВексель; Док.ВексельСубконто1 = Выборка.ВексельСубконто1; Док.ВексельСубконто2 = Выборка.ВексельСубконто2; Док.ВексельСубконто3 = Выборка.ВексельСубконто3; Док.СуммаВозвратнойТары = Выборка.СуммаВозвратнойТары; Док.РучнаяКорректировка = Выборка.РучнаяКорректировка; Док.СчетУчетаНДС = Выборка.СчетУчетаНДС; Док.ВключаетсяВУточняющийРасчет = Выборка.ВключаетсяВУточняющийРасчет; Док.СпецРежимНалогообложения = Выборка.СпецРежимНалогообложения; Док.УточняемыйПериод = Выборка.УточняемыйПериод; Док.СчетУчетаКорректировкиНДСКредит = Выборка.СчетУчетаКорректировкиНДСКредит; Док.Коеффициент = Выборка.Коеффициент; ТоварыВыборкаДетальныеЗаписи = Выборка.Товары.Выбрать(); Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл Стр = Док.Товары.Добавить(); //ЗаполнитьЗначенияСвойств(Стр,ТоварыВыборкаДетальныеЗаписи); Стр.НаименованиеТовара = ТоварыВыборкаДетальныеЗаписи.НаименованиеТовара; Стр.Количество = ТоварыВыборкаДетальныеЗаписи.Количество; Стр.Цена = ТоварыВыборкаДетальныеЗаписи.Цена; Стр.СтавкаНДС = ТоварыВыборкаДетальныеЗаписи.СтавкаНДС; Стр.Сумма = ТоварыВыборкаДетальныеЗаписи.Сумма*Коеффициент; Стр.СуммаНДС = ТоварыВыборкаДетальныеЗаписи.СуммаНДС*Коеффициент; Стр.СуммаВзаиморасчетов = ТоварыВыборкаДетальныеЗаписи.СуммаВзаиморасчетов*Коеффициент; Стр.ДляХозяйственнойДеятельности = ТоварыВыборкаДетальныеЗаписи.ДляХозяйственнойДеятельности; Стр.ДляОперацийОблагаемыхНДС = ТоварыВыборкаДетальныеЗаписи.ДляОперацийОблагаемыхНДС; Стр.ПропорциональныйНДС = ТоварыВыборкаДетальныеЗаписи.ПропорциональныйНДС; Стр.Амортизируется = ТоварыВыборкаДетальныеЗаписи.Амортизируется; Стр.СтатьяДекларацииНДСНалоговыйКредит = ТоварыВыборкаДетальныеЗаписи.СтатьяДекларацииНДСНалоговыйКредит; КонецЦикла; Док.Записать(); КонецЦикла; КонецПроцедуры
13.05.12, 13:06
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(Vofka @ 13.05.12, 13:56)
В чём именно проблема? Конкретно что не получается?
Просто поменять значение в табличной части в документе-оригинале. умножить 3 поля на 0,65 и сохранить документ.
Мой код пока только изменяет значение нового документа.А как оригинал изменить я не знаю.(ну как обратиться правильно к табличной части и изменить данные в нем)
13.05.12, 13:20
Живет на форуме
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0
док1 = докссылка.ПолучитьОбъект(); док2 = докссылка.Скопировать(); ТоварыВыборкаДетальныеЗаписи1 = док1.Товары.Выбрать(); ТоварыВыборкаДетальныеЗаписи2 = док2.Товары.Выбрать(); Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл ТоварыВыборкаДетальныеЗаписи2 .Следующий(); ТоварыВыборкаДетальныеЗаписи2.Сумма = ТоварыВыборкаДетальныеЗаписи2.Сумма*коэфициент; ТоварыВыборкаДетальныеЗаписи1.Сумма = ТоварыВыборкаДетальныеЗаписи1.Сумма-ТоварыВыборкаДетальныеЗаписи2.Сумма; ...СуммаНДС ... ...СуммаВзаиморасчетов ... КонецЦикла; Док1.Записать(); Док2.Записать();
Сообщение отредактировал Ardi - 13.05.12, 13:23
13.05.12, 13:33
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
Спасибо сейчас попробую.О результате сообщу))
док1 = докссылка.ПолучитьОбъект(); док2 = докссылка.Скопировать();
эти методы не работают в контексте внешней обработки
13.05.12, 14:21
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
Это не совсем копия, а создание нового документа:
Док = Документы.РегистрацияВходящегоНалоговогоДокумента.СоздатьДокумент();
и он заполняется данными из запроса.
Помогите....пожалуйста
13.05.12, 14:42
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(Vofka @ 13.05.12, 15:37)
fevz , вы издеваетесь или решили на ходу придумывать постановку задачи?
вся задача описана была вначале.я просто уточняю. По коду же видно все.
13.05.12, 15:14
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
logist Спасибо за ответ.Сейчас пробую.Пока выдает ошибку из-за того что не присвоена дата новому документу.Сейчас попробую присвоить дату.
НовыйДок = Выборка.Ссылка.Скопировать(); НовыйДок.Дата = ТекущаяДата();
можно ли так присвоить значение реквизиту дата ?
13.05.12, 16:01
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
logist, Спасибо вам большое. я немного переделал свой код используя ваш. Вроде как бы все получилось. Буду тестить.
P.S. Ставлю вам тысячный Thanks!
logist Работает как часики))
Еще Вам небольшой вопрос. В моем первоначальном коде
Док.СпецРежимНалогообложения = Выборка.СпецРежимНалогообложения;
Почему я не могу реквизиту присвоить просто число?
Док.СпецРежимНалогообложения = 4;
13.05.12, 16:25
Молчаливый
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(Ardi @ 13.05.12, 17:09)
Никто и не запрещает так сделать.
Когда я в коде своем так записываю у меня не выполняется вообще ничего. Это что то из за цикла мне кажется
если пишу так
Док.СпецРежимНалогообложения = Выборка.СпецРежимНалогообложения;
Все работает
а так
Док.СпецРежимНалогообложения = Выборка.СпецРежимНалогообложения;
- Нет.
не пойму почему
даже если так
Док.СпецРежимНалогообложения = Выборка.СпецРежимНалогообложения+4;
не работает
ой во второй строчке должно было быть так. описка.
Док.СпецРежимНалогообложения = 4;
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!