Имя: Пароль:
1C
1С v8
Не могу обновить итоги в форме
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");
   RecordSet = Command.Execute();

Зачем ты используешь технологию, которую не понимаешь?
3 Nick_Cher
 
01.11.16
11:35
Несмотря на то, что код "корявый", он прекрасно работает и делает то что нужно (заполняет форму счёта в фоне и потом открывает её). Единственное, что хотелось бы, чтобы дать команду на пересчёт итогов в шапке (а то там нули в Сумме счёта и НДС). Счёт сформирован на клиенте и ещё не записан.
Записывать и проводить его будет бухгалтер вручную. Да, я не спец в 1С, поэтому хотелось бы получить толковый совет от тех, кто знает. Понимаю, что нужно читать литературу. Но стоит задача, и её нужно решить как можно быстрее.
4 Nick_Cher
 
01.11.16
11:46
При правке строки в табличной части итоги в шапке пересчитываются автоматически. Но это же не дело, править строку, чтобы пересчитались итоги. Вопрос в том, какую дать команду на пересчёт.