Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
07 фев 2026, 02:21

Программное заполнение документов

Автор sali, Вчера в 11:04

0 Пользователей и 1 гость просматривают эту тему.

sali

программно создаю и заполняю документ реализации. чтобы он сразу проводился нужно все досконально программно прописать для заполнения , но вот здесь подвис чет
когда заполняется тч проверяется включены ли налоги в сумму , отправляется табличная часть с типом - ДанныеФормыЭлементКоллекции, но я создаю программно и у меня тч имеет тип - ДокументТабличнаяЧасть.РеализацияТоваровУслуг.Товары. и из-за этого в модуле не может найти свойство цена
Если ДокументОбъект.СуммаВключаетНалоги Тогда
ОбработкаТабличныхЧастейКлиентСервер.РассчитатьСуммуСтрокиТабличнойЧасти(Строка);

как быть?

antoneus


Максим75

sali, ну сюда идет обращение с клиента (т.е. с формы документа).
надо искать общий модуль, который делает то же самое, но только на сервере, т.е. когда форма документа не открыта, а строках документа идет пересчет сумм и т.д.
обычно он называется просто сервер в конце имени модуля.

sali


sali

Максим75, в документе реализации из основной конфы код
Для Каждого СтрокаТабличнойЧасти Из Объект.Товары Цикл

Если Объект.СуммаВключаетНалоги Тогда
ОбработкаТабличныхЧастейКлиентСервер.РассчитатьСуммуСтрокиТабличнойЧасти(СтрокаТабличнойЧасти);
Иначе
ОбработкаТабличныхЧастейКлиентСервер.РассчитатьДоходСтрокиТабличнойЧасти(СтрокаТабличнойЧасти, Ложь);

ОбработкаТабличныхЧастейКлиентСервер.РассчитатьСуммуСтрокиТабличнойЧасти(СтрокаТабличнойЧасти, ПараметрыРасчета);
КонецЕсли;

нет таких разделений

Максим75

sali, отлично.
вот именно так и делайте. обходите в объекте табличную часть и передавайте строку.
т.е. заполнили, записали объект и прошлись по табличной части и рассчитали сумму.

sali

Максим75, НЕ ПОНЯЛ вас. нужно записать всю тч, а потом обходить ее , но я так и делаю. только тип тч не сходится

antoneus


Максим75

Цитата: sali от Вчера в 13:55Максим75, НЕ ПОНЯЛ вас. нужно записать всю тч, а потом обходить ее , но я так и делаю. только тип тч не сходится
да что же не понятного то?
создали программно новый документ, заполнили табличную часть, записали, появился уже объект в базе, потом обошли в цикле табличную часть этого объекта и вызвали на каждой строке глобальную процедуру/функцию.

если же при сохранении документа идет некая проверка и не сохраняет, тогда смотрите, Вы же строку в табличную часть добавляете. Вот эту строку и передавайте в глобальную процедуру/функцию.

sali

antoneus, не может найти свойство "цена"
// Рассчитывает сумму в строке табличной части документа
//
// Параметры:
//  СтрокаТабличнойЧасти - ДанныеФормы.СтрокаТабличнойЧасти - строка табличной части документа
//  ПараметрыРасчета - см. ОбработкаТабличныхЧастейКлиентСервер.ШаблонПараметровРасчета
//
Процедура РассчитатьСуммуСтрокиТабличнойЧасти(СтрокаТабличнойЧасти, ПараметрыРасчета = Неопределено) Экспорт

Если ПараметрыРасчета <> Неопределено Тогда
Если СтрокаТабличнойЧасти.Свойство("СтавкаНДС") Тогда
ЗначениеСтавкиНДС = ?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.СтавкаНДС),
УчетНДСВызовСервера.ПолучитьСтавкуНДС(ПараметрыРасчета.Период, СтрокаТабличнойЧасти.СтавкаНДС), 0);
Иначе
ЗначениеСтавкиНДС = ?(ЗначениеЗаполнено(ПараметрыРасчета.СтавкаНДС),
УчетНДСВызовСервера.ПолучитьСтавкуНДС(ПараметрыРасчета.Период, ПараметрыРасчета.СтавкаНДС), 0);
КонецЕсли;

Если ПараметрыРасчета.МестоПоставки = ПредопределенноеЗначение("Перечисление.МестаПоставки.КР") Тогда
ЗначениеСтавкиНСП = УчетНДСВызовСервера.ПолучитьСтавкуНСП(ПараметрыРасчета.Период,
ПараметрыРасчета.Организация, СтрокаТабличнойЧасти.СтавкаНСП, ПараметрыРасчета.БезналичныйРасчет);
Иначе
    ЗначениеСтавкиНСП = 0;
КонецЕсли;

СуммаНДС = Окр(СтрокаТабличнойЧасти.СуммаДохода * ЗначениеСтавкиНДС / 100, 2);
СуммаНСП = Окр(СтрокаТабличнойЧасти.СуммаДохода * ЗначениеСтавкиНСП / 100, 2);
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.СуммаДохода + СуммаНДС + СуммаНСП;

ИначеЕсли СтрокаТабличнойЧасти.Свойство("Цена") Тогда
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество;
КонецЕсли;
КонецПроцедуры

потому что тип тч не "данные формы коллекциии..."

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск