|
Не могу обновить итоги в форме | ☑ | ||
---|---|---|---|---|
0
Nick_Cher
31.10.16
✎
15:40
|
Программно создаю счёт покупателю. Заполняю шапку, заполняю табличную часть. Всё хорошо, но Итоги в шапке не могу не записать, ни получить обновлением. Если отредактировать хотя бы одну строку в табличной части, то в шапке итоги появляются. А без рук (программно) не знаю какую дать команду, чтобы всё обновилось. Измучился в поиске по интернету - не нахожу дельного совета. Работаю в 1С 8.3. Прилагаю кусок моего кода:
ФормаДокумента = ПолучитьФорму("Документ.СчетНаОплатуПокупателю.ФормаОбъекта"); ФормаДокумента.ТолькоПросмотр=ЛОЖЬ; ПараметрыДляФормы = Новый Структура; ПараметрыДляФормы.Вставить("Номер",Номер1С); ПараметрыДляФормы.Вставить("Дата",Элементы.ТабличноеПоле1.ТекущиеДанные.Дата); ПараметрыДляФормы.Вставить("Организация",Элементы.ТабличноеПоле1.ТекущиеДанные.НашаФирма); ПараметрыДляФормы.Вставить("СтруктурнаяЕдиница", Справочники.БанковскиеСчета.НайтиПоКоду(Элементы.ТабличноеПоле1.ТекущиеДанные.НашиРеквизиты)); ПараметрыДляФормы.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоКоду(Элементы.ТабличноеПоле1.ТекущиеДанные.Контрагент)); ПараметрыДляФормы.Вставить("ДоговорКонтрагента", Справочники.ДоговорыКонтрагентов.НайтиПоКоду(Элементы.ТабличноеПоле1.ТекущиеДанные.ДоговорКонтрагента)); ПараметрыДляФормы.Вставить("ВалютаДокумента",Справочники.Валюты.НайтиПоКоду(643)); //ПараметрыДляФормы.Вставить("СуммаДокумента", Элементы.ТабличноеПоле1.ТекущиеДанные.Сумма); ЕСЛИ Элементы.ТабличноеПоле1.ТекущиеДанные.НДС > 0 ТОГДА ПараметрыДляФормы.Вставить("СуммаВключаетНДС", ИСТИНА); ПараметрыДляФормы.Вставить("УчитыватьНДС", ИСТИНА); КОНЕЦЕСЛИ; ЗаполнитьЗначенияСвойств(ФормаДокумента.Объект, ПараметрыДляФормы); //Заполняем табличную часть Connection = Новый COMОбъект("ADODB.Connection"); Connection.ConnectionTimeOut = 600; Connection.CursorLocation = 3; Connection.Open("Provider=SQLOLEDB;Password=13032000;Data Source=conms;Persist Security Info=True;User ID=razbivka;Initial Catalog=Защита_2007"); Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText ="SELECT Услуга, Тираж, Цена, НДС, Сумма, Всего FROM dbo.ПараметрыСчета |WHERE КодСчета="+СтрЗаменить(СтрЗаменить(Элементы.ТабличноеПоле1.ТекущиеДанные.КодСч," ","")," ",""); Command.CommandType = 1; RecordSet = Новый ComОбъект("ADODB.RecordSet"); RecordSet = Command.Execute(); Пока RecordSet.EOF() = 0 Цикл НовСтр = ФормаДокумента.Объект.Товары.Добавить(); ПараметрыДляФормы = Новый Структура; ПараметрыДляФормы.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоКоду(Элементы.ТабличноеПоле3.ТекущиеДанные.Код)); ПараметрыДляФормы.Вставить("Наименование", RecordSet.Fields(0).Value); ПараметрыДляФормы.Вставить("Количество", RecordSet.Fields(1).Value); ПараметрыДляФормы.Вставить("Цена", RecordSet.Fields(5).Value/RecordSet.Fields(1).Value); ПараметрыДляФормы.Вставить("Сумма", RecordSet.Fields(5).Value); ЕСЛИ Элементы.ТабличноеПоле1.ТекущиеДанные.НДС > 0 ТОГДА ПараметрыДляФормы.Вставить("СтавкаНДС", Перечисления.СтавкиНДС.НДС18); ИНАЧЕ ПараметрыДляФормы.Вставить("СтавкаНДС", Перечисления.СтавкиНДС.НДС0); КОНЕЦЕСЛИ; ПараметрыДляФормы.Вставить("СуммаНДС", RecordSet.Fields(3).Value); ЗаполнитьЗначенияСвойств(НовСтр, ПараметрыДляФормы); RecordSet.MoveNext(); КонецЦикла; //ФормаДокумента.Получить(); //ФормаДокумента.Элементы.Товары.Обновить(); ФормаДокумента.Открыть(); |
|||
1
aleks_default
31.10.16
✎
17:56
|
Млять, ты хоть структуры для шапки и таб. части называл бы по-разному. Сам же запутаешься. Не говоря уж о читабельности такого кода.
|
|||
2
Mauser
31.10.16
✎
18:17
|
RecordSet = Новый ComОбъект("ADODB.RecordSet");
Зачем ты используешь технологию, которую не понимаешь? |
|||
3
Nick_Cher
01.11.16
✎
11:35
|
Несмотря на то, что код "корявый", он прекрасно работает и делает то что нужно (заполняет форму счёта в фоне и потом открывает её). Единственное, что хотелось бы, чтобы дать команду на пересчёт итогов в шапке (а то там нули в Сумме счёта и НДС). Счёт сформирован на клиенте и ещё не записан.
Записывать и проводить его будет бухгалтер вручную. Да, я не спец в 1С, поэтому хотелось бы получить толковый совет от тех, кто знает. Понимаю, что нужно читать литературу. Но стоит задача, и её нужно решить как можно быстрее. |
|||
4
Nick_Cher
01.11.16
✎
11:46
|
При правке строки в табличной части итоги в шапке пересчитываются автоматически. Но это же не дело, править строку, чтобы пересчитались итоги. Вопрос в том, какую дать команду на пересчёт.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |