[РЕШЕНО] Программное заполнение поля типа Число

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Zablkon, 3 фев 2015.

  1. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Создаю документ и заполняю данными из другого справочника... Проблем нет всё заполняется, но при сохранении документа поле типа Число сбрасывается на 0,00. См. часть кода (лишнее убрал для лучшего восприятия), конкретно "Счёт.СуммаДокумента = Число(СуммаСНДС);". СуммаСНДС такого же формата - точность = 2. По крайней мере это видно в табло отладчика... Как правильно программно присвоить значение этому полю?
    Код:
     &НаСервере
    Процедура Счёт(Ссылка,ДанныеФормы)
             Счёт = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
            СчётУслуги = Счёт.Услуги;
            Счёт.Дата = ТекущаяДата();
            СуммаСНДС = 0;
            СуммаНДС = 0;
    // Здесь Запрос и др.
            СуммаСНДС = СуммаСНДС + Число(НоваяСтрока.СуммаНДС)+ Число(НоваяСтрока.Цена);
           Счёт.СуммаДокумента = Число(СуммаСНДС);
    КонецПроцедуры;
    
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Счет.СуммаСНДС пересчитывается непосредственно перед записью документа?
  3. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в какой момент вызываете процедуру?
  5. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Из справочника по нажатию кнопки-команды.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Так создайте условия, чтобы сумма пересчитывалась верно - отпадет необходимость заполнять сумму.
  7. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Я наверно не правильно понял ваш вопрос... после заполнения сумма не пересчитывается, а в том же виде должна сохраниться, но по нажатию "Сохранить" или "Сохранить и выйти" обращается в 0,00.
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    значит где то она переопределяется, отладчик вам в помощь
  9. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    В том то и дело переменная не переопределяется... форма уже созданного документа не даёт. Поле заполняется с помощью клавиатуры или калькулятора в поле, в этом, наверно, причина. И, кстати, значение присваивается, и визуально поле заполнено нужной цифрой, но обнуляется при сохранении
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    что то бред какой то... вы кодом создаете документ, заполняете его, сохраняете... а потом открываете чтоб посмотреть? если так, то смотрите не пересчитывается ли при открытии или еще как то - поиском прогоните по коду
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Отладчиком смотрите когда запись идет.
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    и кстати, в вашем коде я не вижу где вы сохраняете созданный документ?
  13. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Внимательней... Открытая форма: при нажатии "Сохранить" (документ ещё не сохранён) обнуляется поле....
  14. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вы создали документ на сервере, вы его не открыли (в моем понимании), я вот о чем
  15. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Так точно...
  16. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Надеюсь через объект хотябы заполняете. Просто в вашем коде не нашел этого.
  17. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Как это?
    --- Объединение сообщений, 3 фев 2015 ---
    Не представляю как это увидеть. ПриЗаписи?
    --- Объединение сообщений, 3 фев 2015 ---
    Если требуется, я могу весь код выложить
    --- Объединение сообщений, 3 фев 2015 ---
    Код:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
        Форма = ПолучитьФорму("Документ.СчетНаОплатуПокупателю.ФормаОбъекта");
        ДанныеФормы = Форма.Объект;
        Счёт(ПараметрКоманды,ДанныеФормы);
        КопироватьДанныеФормы(ДанныеФормы,Форма.Объект);
        Форма.Открыть();
    КонецПроцедуры
    
    &НаСервере
    Процедура Счёт(Ссылка,ДанныеФормы)
             Счёт = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
            СчётУслуги = Счёт.Услуги;
            Счёт.Дата = ТекущаяДата();
            СуммаСНДС = 0;
            СуммаНДС = 0;
    Запрос = Новый Запрос;
        Запрос.Текст =   "ВЫБРАТЬ
                         |    Приборы.Владелец,
                         |    Приборы.Владелец.Владелец.НаименованиеПолное,
                         |    Приборы.Владелец.Наименование,
                         |    Приборы.Владелец.Дата,
                         |    Приборы.Номер,
                         |    Приборы.Ду,
                         |    Приборы.ВыполненныеРаботы.(
                         |        ВыполненныеРаботы.Цена,
                         |        ВыполненныеРаботы.НаименованиеПолное,
                         |        ВыполненныеРаботы.Наименование
                         |    ),
                         |    Приборы.Наименование,
                         |    Приборы.Владелец.Владелец.Наименование,
                         |    Приборы.ТаблицаИспользованныхЗапчастей.(
                         |        ТипЗапчасти.НаименованиеПолное,
                         |        ТипЗапчасти.Цена,
                         |        ТипЗапчасти.Наименование
                         |    ),
                         |    Приборы.Владелец.Код
                         |ИЗ
                         |    Справочник.Приборы КАК Приборы
                         |ГДЕ
                         |    Приборы.Владелец.Ссылка В(&Ссылка)" ;
        Запрос.УстановитьПараметр("Ссылка", Ссылка);  
        Выборка = Запрос.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
           
         ВыборкаРаботы = Выборка.ВыполненныеРаботы.Выбрать();
        Пока ВыборкаРаботы.Следующий() Цикл
            НоваяСтрока = Счёт.Услуги.Добавить();
            НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ВыборкаРаботы.ВыполненныеРаботыНаименование);
            НоваяСтрока.Цена = ВыборкаРаботы.ВыполненныеРаботыЦена;
            НоваяСтрока.Содержание = ВыборкаРаботы.ВыполненныеработыНаименование + ": " + Выборка.Наименование + "-" + Выборка.Ду + ", №" + Выборка.Номер;
            НоваяСтрока.Количество = 1;
            НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
            НоваяСтрока.СуммаНДС  = Число(НоваяСтрока.Цена) * Число(НоваяСтрока.Количество) * Число(Лев(НоваяСтрока.СтавкаНДС,2))/100;
            СуммаСНДС = СуммаСНДС + Число(НоваяСтрока.СуммаНДС)+ Число(НоваяСтрока.Цена);
        КонецЦикла;
        ВыборкаЗапчасти = Выборка.ТаблицаИспользованныхЗапчастей.Выбрать();
        Пока ВыборкаЗапчасти.Следующий() Цикл
            НоваяСтрока = Счёт.Товары.Добавить();
            НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ВыборкаЗапчасти.ТипЗапчастиНаименование);
            НоваяСтрока.Цена = ВыборкаЗапчасти.ТипЗапчастиЦена;
            НоваяСтрока.Количество = 1;
            НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
            НоваяСтрока.СуммаНДС  = Число(НоваяСтрока.Цена) * Число(НоваяСтрока.Количество) * Число(Лев(НоваяСтрока.СтавкаНДС,2))/100;
            СуммаСНДС = СуммаСНДС + Число(НоваяСтрока.СуммаНДС)+ Число(НоваяСтрока.Цена);
        КонецЦикла;
        Счёт.Номер = Выборка.ВладелецКод;
       
    КонецЦикла;
        Счёт.УчитыватьНДС = Истина;
        Счёт.СуммаВключаетНДС = Истина;
        Счёт.СуммаДокумента = Формат(Число(СуммаСНДС),"ЧДЦ=2");
        Счёт.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("руб");
        Счёт.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Выборка.Владелец.Владелец.Наименование);
        ЗначениеВДанныеФормы(Счёт,ДанныеФормы);
    КонецПроцедуры
    Последнее редактирование: 3 фев 2015
  18. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Счёт.УчитыватьНДС = Истина;
    Счёт.СуммаВключаетНДС = Истина;
    В начало кода процедуры Счет переместите. И не видно где у вас записывается элемент.
  19. TopicStarter Overlay
    Zablkon
    Offline

    Zablkon

    Регистрация:
    2 янв 2014
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Не совсем понял, какой вы имеете ввиду элемент?
  20. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Документ

Поделиться этой страницей