Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обновление элементов формы документа созданного на основании
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
meverikxp
Здравствуйте. Есть документ который создается на основании, забиваю все значения в документе все ок. Но сумма документа на форме не прописывается, а вставляется своя, как сделать так что бы прописалась та которую я хочу. Вот код:
Для каждого СтрТЧ из Контрагенты Цикл
НН = Документы.НалоговаяНакладная.СоздатьДокумент();
Запрос = Новый Запрос;
НН = Документы.НалоговаяНакладная.СоздатьДокумент();
    Запрос.Текст = "ВЫБРАТЬ
    |Ссылка.Контрагент,
    |Номенклатура,
|СтавкаНДС,
    |СУММА(СуммаНДС) СуммаНДС,
    |Ссылка.ДоговорКонтрагента,
    |СРЕДНЕЕ(Коэффициент) КАК К,
    |ЕдиницаИзмерения,
    |СУММА (Количество) КАК Количество,
    |СУММА (Цена) КАК Цена,
    |СУММА (Сумма) КАК Сумма,
....

... Пока Результат.Следующий() Цикл
СуммаБезНДС = НН.Товары.Итог("Сумма");
   НДС = НН.Товары.Итог("СуммаНДС");
   НН.СуммаДокумента = СуммаБезНДС + НДС;
....


На форме НН есть элемент всего в который и прописывается значение сумма документа, но вписывается сумма без НДС, а должна быть с НДС, Подскажите в чем может быть проблема?

PS. Пробую в Конфигурации Бухгалтерия для Украины.

Всем спасибо за ответы.
logist
А зачем итоги считаются в цикле? Я вообще не понял что Вы там пытаетесь подсчитать "Пока Результат следующий"
meverikxp
Цитата(logist @ 23.05.11, 8:52) необходимо зарегистрироваться для просмотра ссылки
А зачем итоги считаются в цикле? Я вообще не понял что Вы там пытаетесь подсчитать "Пока Результат следующий"

В первом цикле создается по каждой строке документ НН, а в втором заполняются данные из Запроса. Для большего понимания выкладываю всю процедуру:

Для каждого СтрТЧ из Контрагенты Цикл
НН = Документы.НалоговаяНакладная.СоздатьДокумент();
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |Ссылка.Контрагент,
    |Номенклатура,
    |СтавкаНДС,
    |СУММА(СуммаНДС) СуммаНДС,
    |Ссылка.ДоговорКонтрагента,
    |СРЕДНЕЕ(Коэффициент) КАК К,
    |ЕдиницаИзмерения,
    |СУММА (Количество) КАК Количество,
    |СУММА (Цена) КАК Цена,
    |СУММА (Сумма) КАК Сумма,
    |Ссылка.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валюта,
    |Ссылка.КурсВзаиморасчетов КАК КурсВзаиморасчетов,
    |Ссылка.КратностьВзаиморасчетов КАК КратностьВзаиморасчетов
    |ИЗ
    |Документ.РеализацияТоваровУслуг.Товары
    |ГДЕ
    |Ссылка.Контрагент = &Контрагент И
    |Ссылка.ДоговорКонтрагента = &ДоговорКонтрагента И
    |Ссылка.Дата Между &Дата И &Дата2
    |СГРУППИРОВАТЬ ПО Номенклатура, Ссылка.Контрагент,
    |СтавкаНДС, Ссылка.ДоговорКонтрагента, ЕдиницаИзмерения,
    |Ссылка.КурсВзаиморасчетов,
    |Ссылка.КратностьВзаиморасчетов ";
    Запрос.УстановитьПараметр("Дата", ДатаНачалаПериода);
    Запрос.УстановитьПараметр("Дата2", ДатаОкончанияПериода+24+60+59);    
    Запрос.УстановитьПараметр("Контрагент", СтрТЧ.Контрагент);
    Запрос.УстановитьПараметр("ДоговорКонтрагента", СтрТЧ.ДоговорКонтрагента);
    Результат = Запрос.Выполнить().Выбрать();
            
Пока Результат.Следующий() Цикл
    НН.ВидОперации = Перечисления.ВидыОперацийНалоговаяНакладная.ОблагаемыеОперации;
    НН.СчетНДС = ПланыСчетов.Хозрасчетный.РасчетыПоНДС;
    НН.КурсВзаиморасчетов = Результат.КурсВзаиморасчетов;
    НН.КратностьВзаиморасчетов = Результат.КратностьВзаиморасчетов;
    НН.Контрагент = СтрТЧ.Контрагент;
    НН.Организация = Организация;
    НН.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("грн");
    НН.ДоговорКонтрагента = Результат.ДоговорКонтрагента;
    НН.ВалютаДокумента = Результат.Валюта;
    НН.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НалоговыеОбязательстваНеподтвержденные;
    НН.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    НН.Дата = ДатаОкончанияПериода;
    НН.КтоВыписалНалоговуюНакладную = КтоВыписалНН;
    
    СтрокаТЧ = НН.Товары.Добавить();
    СтрокаТЧ.Номенклатура = Результат.Номенклатура;
    СтрокаТЧ.Количество =  Результат.Количество;
    СтрокаТЧ.Цена = Результат.Сумма/Результат.Количество;
    СтрокаТЧ.Сумма = Результат.Сумма;
    СтрокаТЧ.СтавкаНДС = Результат.СтавкаНДС;
    СтрокаТЧ.СуммаНДС = Результат.СуммаНДС;
    СтрокаТЧ.Коэффициент = Результат.К;
    СтрокаТЧ.ЕдиницаИзмерения = Результат.ЕдиницаИзмерения;
    СтрокаТЧ.СуммаБезСкидки = Результат.Сумма;
    
        Если СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
        СтрокаТЧ.СтатьяДекларацииНДСНалоговыеОбязательства = Справочники.СтатьиНалоговыхДеклараций.НДС_НОПоСтавке20;
    КонецЕсли;
    Если   СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
        СтрокаТЧ.СтатьяДекларацииНДСНалоговыеОбязательства = Справочники.СтатьиНалоговыхДеклараций.НДС_НОПоСтавке0Другие;
    КонецЕсли;
    
КонецЦикла;
   НН.ТипЦен = Результат.ДоговорКонтрагента.ТипЦен;
   СуммаБезНДС = НН.Товары.Итог("Сумма");
   НДС = НН.Товары.Итог("СуммаНДС");
   НН.СуммаДокумента = СуммаБезНДС + НДС;
   НН.Записать(РежимЗаписиДокумента.Проведение);
  

КонецЦикла;
logist
А это в цикле зачем???
Цитата(meverikxp @ 23.05.11, 10:07) необходимо зарегистрироваться для просмотра ссылки
    
Пока Результат.Следующий() Цикл
    НН.ВидОперации = Перечисления.ВидыОперацийНалоговаяНакладная.ОблагаемыеОперации;
    НН.СчетНДС = ПланыСчетов.Хозрасчетный.РасчетыПоНДС;
    НН.КурсВзаиморасчетов = Результат.КурсВзаиморасчетов;
    НН.КратностьВзаиморасчетов = Результат.КратностьВзаиморасчетов;
    НН.Контрагент = СтрТЧ.Контрагент;
    НН.Организация = Организация;
    НН.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("грн");
    НН.ДоговорКонтрагента = Результат.ДоговорКонтрагента;
    НН.ВалютаДокумента = Результат.Валюта;
    НН.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НалоговыеОбязательстваНеподтвержденные;
    НН.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    НН.Дата = ДатаОкончанияПериода;
    НН.КтоВыписалНалоговуюНакладную = КтоВыписалНН;
meverikxp
Цитата(logist @ 23.05.11, 11:09) необходимо зарегистрироваться для просмотра ссылки
А это в цикле зачем???

Ну в принципе можно вынести за цикл, но общая сумма все равно без НДС.
Batchir
А этим что хотели сделать?
Запрос.УстановитьПараметр("Дата2", ДатаОкончанияПериода+24+60+59);
meverikxp
Цитата(Batchir @ 23.05.11, 12:16) необходимо зарегистрироваться для просмотра ссылки
А этим что хотели сделать?
Запрос.УстановитьПараметр("Дата2", ДатаОкончанияПериода+24+60+59);

Да в принципе это не важно, я спрашиваю за сумму документа, а это вообще ни причем. просто должно было быть 24*60*60, когда вставлял запрос не выправил
meverikxp
Так. поможет ли мне кто нибудь???
09000000.gif 09000000.gif 09000000.gif
DartRomanius
Цитата(meverikxp @ 23.05.11, 15:47) необходимо зарегистрироваться для просмотра ссылки
Так. поможет ли мне кто нибудь???
09000000.gif 09000000.gif 09000000.gif


А теперь еще раз по человечески. В чем задача?
meverikxp
Цитата(DartRomanius @ 23.05.11, 15:51) необходимо зарегистрироваться для просмотра ссылки
А теперь еще раз по человечески. В чем задача?

В документе НН есть элемент формы "всего" в который нужно вписать сумму документа, но почумуто ему присваивается сумма без НДС, а должна с НДС. Я уже явно прописал и все равно значение не меняется. Что делать?
DartRomanius
Цитата(meverikxp @ 23.05.11, 17:08) необходимо зарегистрироваться для просмотра ссылки
В документе НН есть элемент формы всего в который нужно вписать сумму документа, но почумуто ему присваивается сумма без НДС, а должна с НДС. Я уже явно прописал и все равно значение не меняется. Что делать?


Это реквизит формы, или еще и реквизит документа?
meverikxp
Цитата(DartRomanius @ 23.05.11, 16:11) необходимо зарегистрироваться для просмотра ссылки
Это реквизит формы, или еще и реквизит документа?

Это реквизит формы, с значением строка
Vofka
Цитата
Так. поможет ли мне кто нибудь???

Если вы каждые 2 часа будете АПать тему - я вас накажу!

Имейте терпение и не флудите!!!
World1С
Что написано в поле "Данные", реквизита формы "всего"?
meverikxp
Цитата(World1С @ 24.05.11, 8:28) необходимо зарегистрироваться для просмотра ссылки
Что написано в поле "Данные", реквизита формы "всего"?

Пусто, а тип значения "Строка"
Batchir
Цитата(meverikxp @ 23.05.11, 13:51) необходимо зарегистрироваться для просмотра ссылки
Да в принципе это не важно, я спрашиваю за сумму документа, а это вообще ни причем. просто должно было быть 24*60*60, когда вставлял запрос не выправил

Хочу сразу заметить что из таких "не важно" и строятся все Ваши проблемы.

В конце концов воспользуйтесь отладчиком, он Вам первый друг и товарищ в данной ситуации.
meverikxp
Цитата(Batchir @ 24.05.11, 9:05) необходимо зарегистрироваться для просмотра ссылки
Хочу сразу заметить что из таких "не важно" и строятся все Ваши проблемы.

В конце концов воспользуйтесь отладчиком, он Вам первый друг и товарищ в данной ситуации.

Но. отладчик не говорит что есть какие то ошибки, просто на форме пишет сумму без НДС
DartRomanius
Цитата(meverikxp @ 23.05.11, 17:20) необходимо зарегистрироваться для просмотра ссылки
Это реквизит формы, с значением строка


Ну собственно, если это реквизит формы, а не документа (значит он не хранится, а вычисляется), то получается следующее:
- показ суммы (как впрочем любого вычисляемого поля надо привязывать к событиям. В Вашем случае, это события ТЧ (табличной части), а именно смотреть к полям "Сумма" (скорее всего сумма без скидки или как-то так), НДС (СуммаНДС?). Собственно в привязках к этим событиям и вычислять сложение итогов ТЧ. Почему так? Изменение этих полей (и скорее всего еще каких, надо смотреть) влияет на 2 (ДВА) Итоговых реквизита которые вы складываете и заносите значение в реквизит формы.
Да еще бы это сделать (просчет) при открытии формы, смотрим соответствующее событие.

Надеюсь помог.
meverikxp
Цитата(DartRomanius @ 24.05.11, 9:45) необходимо зарегистрироваться для просмотра ссылки
Ну собственно, если это реквизит формы, а не документа (значит он не хранится, а вычисляется), то получается следующее:
- показ суммы (как впрочем любого вычисляемого поля надо привязывать к событиям. В Вашем случае, это события ТЧ (табличной части), а именно смотреть к полям "Сумма" (скорее всего сумма без скидки или как-то так), НДС (СуммаНДС?). Собственно в привязках к этим событиям и вычислять сложение итогов ТЧ. Почему так? Изменение этих полей (и скорее всего еще каких, надо смотреть) влияет на 2 (ДВА) Итоговых реквизита которые вы складываете и заносите значение в реквизит формы.
Да еще бы это сделать (просчет) при открытии формы, смотрим соответствующее событие.

Надеюсь помог.

Если я правильно понял Ваш пост, то мне нужно изменить сам документ НН стандартной конфигурации, но этого делать я не хочу, или же я ошибаюсь?
Batchir
Если отладчик говорит что проблем нет и документ типовый, то о чем это говорит?

Что при проведении документа происходит автоматический расчет суммы документа по алгоритмам, запрограммированных типовым решением. Не советую что либо менять в типовых алгоритмах или нужно на 200% понимать то что делаете, в чем лично у меня возникают сомнения, без обид.
meverikxp
Цитата(Batchir @ 24.05.11, 10:18) необходимо зарегистрироваться для просмотра ссылки
Если отладчик говорит что проблем нет и документ типовый, то о чем это говорит?

Что при проведении документа происходит автоматический расчет суммы документа по алгоритмам, запрограммированных типовым решением. Не советую что либо менять в типовых алгоритмах или нужно на 200% понимать то что делаете, в чем лично у меня возникают сомнения, без обид.

Менять в стандартной конфигурации ничего не хочу, и если набрать данные в документе НН, то выводится Сумма с НДС, никак не могу понять почему?

PS. Я не обижаюсь, я просто учусь. И ловлю все подводные камни. Это Вам спасибо за терпение и за помощь
Batchir
Менять стандартный документ и не надо. Посмотрите все процедуры которые вызываются при стандартном ручном СОЗДАНИИ документа и его заполнении.
Реализуйте вызов этих процедур при Вашем программном создании документа.
meverikxp
Цитата(Batchir @ 24.05.11, 11:27) необходимо зарегистрироваться для просмотра ссылки
Менять стандартный документ и не надо. Посмотрите все процедуры которые вызываются при стандартном ручном СОЗДАНИИ документа и его заполнении.
Реализуйте вызов этих процедур при Вашем программном создании документа.

Вызывать все доступные функции?
Batchir
Вызвать все необходимые функции, какие именно нужно анализировать самостоятельно.
meverikxp
Цитата(Batchir @ 24.05.11, 12:38) необходимо зарегистрироваться для просмотра ссылки
Вызвать все необходимые функции, какие именно нужно анализировать самостоятельно.

Все разобрался, оказалось все намного проще.
Надо было из документа основание перетянуть значения АвторасчетНДС, УчитыватьНДС и СуммавключаетНДС. И все
meverikxp
Цитата(meverikxp @ 24.05.11, 13:02) необходимо зарегистрироваться для просмотра ссылки
Все разобрался, оказалось все намного проще.
Надо было из документа основание перетянуть значения АвторасчетНДС, УчитыватьНДС и СуммавключаетНДС. И все

Тему можно закрывать, обработка готова к использованию. Спасибо за терпение.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.