Имя: Пароль:
1C
 
Как программно ПОЛНОСТЬЮ заполнить ТЧ документов?
,
0 НоваяВолна
 
23.11.22
15:49
Есть обработка, которая добавляет записи в документы различных видов. Поля, которые при ручном вводе заполняются автоматически, соответственно обработкой не заполняются. Например Сумма и СчетаУчета. При ручном изменении Номенклатуры на ту же ... все встает на место. Но процедуры ПриИзменении в каждом документе разные... Может кто подскажет самый простой способ решить проблему?
1 vicof
 
23.11.22
15:50
Приказать заполнить документы ручками
2 НоваяВолна
 
23.11.22
15:53
(1) Весело, но не то
3 НоваяВолна
 
23.11.22
15:54
(0) БП 3.0
4 vicof
 
23.11.22
15:55
Вызывать вложенные в обработчики процедуры заполнения счетов и сумм.
5 Мультук
 
гуру
23.11.22
16:07
(3)

1) СчетаУчета

Я бы смотрел в
МенеджерОбменаЧерезУниверсальныйФормат

там магическим образом это происходит при получении документов по обмену (например из УТ)

Можно, конечно

2) Сумма
Нужно взять себя в руки и выяснить для себя как работает типовой механизм пересчета таб.частей

3) Например

ДокОб = выборка.ссылка.ПолучитьОбъект();
ЗаполнитьСчетаУчетаДокумента(ДокОб, ТолькоНезаполненные);
ДокОб.Записать(РежимЗаписиДокумента.Проведение);

&НаСервереБезКонтекста
Процедура ЗаполнитьСчетаУчетаДокумента(Объект, ТолькоНезаполненные) Экспорт
    
    // Заполняем счета по отбору
    Отбор = Новый Структура;
    Отбор.Вставить("НеЗаполненныеРеквизиты", ТолькоНезаполненные);
    
    СчетаУчетаВДокументах.Заполнить(Объект, Отбор);
    
КонецПроцедуры
6 ass1c
 
23.11.22
16:13
Просто посмотри в своей конфе как это реализовано. Примеры:
Модули "ОбработкаТабличнойЧасти..."

Вот это пример возможно можно как то использовать:

СтруктураДействий = ПолучитьСтруктуруДействийОбработкиСтрокиТабЧасти(Объект);
ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекДанные, СтруктураДействий, Неопределено);
7 d4rkmesa
 
23.11.22
16:14
(0) Везде по-разному реализовано. Пишите код.
8 НоваяВолна
 
23.11.22
16:25
(7) Код чего? Конфигурация БП 3.0
9 Kassern
 
23.11.22
16:27
(8) Смотрите внимательно обработчики заполнения ТЧ при изменении реквизитов, смотрите к каким серверным функциям/процедурам это дело ссылается. Проходите по всем необходимым документам, по которым происходит заполнение. Далее уже пишите в обработчике вызов нужных серверных методов заполнения ТЧ для различных видов документов (но что-то мне подсказывает, что там будет один общий метод)
10 Fish
 
23.11.22
16:28
(8) Пиши код обработки, разумеется. За тебя его никто не напишет.
11 НоваяВолна
 
23.11.22
16:32
(9) вы в 1С конфигурации заглядываете? Или просто со смартфона сюда пишете от фонаря? Что значит один метод хотя бы для Поступления и Реализации? Разница хотя бы по счетам Учета
12 ass1c
 
23.11.22
16:36
(9)+
Спокойно. Если посмотреть модули менеджеров объектов, то можно увидеть такие вещи. Что значит как минимум по менеджеру объекта можно вызывать эти функции, но она устарела

// Устарела: Следует использовать ЗаполнитьПередЗаписью(),
// ЗаполнитьПередОтображениемПользователю(), Заполнить(),
// ЗаполнитьОбъектПриИзменении(), ЗаполнитьСтроки(),
// либо перед записью документа устанавливать дополнительное свойство
// ЗаполнитьСчетаУчетаПередЗаписью
//
Процедура ЗаполнитьСчетаУчетаВТабличнойЧасти(Объект, ИмяТабличнойЧасти) Экспорт

    СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаВТабличнойЧасти(
        Объект,
        ИмяТабличнойЧасти);

КонецПроцедуры

Поэтому можно использовать это

СчетаУчетаВДокументах.ЗаполнитьПередЗаписью(ЭтотОбъект, РежимЗаписи);

Все уже скорее всего написано универсально для любой конфигурации, надо просто немного покурить кода...
13 Kassern
 
23.11.22
16:39
(11) "вы в 1С конфигурации заглядываете?" - представьте себе. Видимо вы не внимательно читаете, специально для вас продублирую "Далее уже пишите в обработчике вызов нужных серверных методов заполнения ТЧ для различных видов документов". Вы сами дальше стека вызовов процедур формы переходили в отладчике, читали код, что в общих модулях происходит?
14 Kassern
 
23.11.22
16:56
(11) Глянул одним глазком БП3, а там:
СчетаУчетаДляНоменклатуры = СчетаУчетаВДокументах.ЗаполнитьРеквизитыПриИзменении(
        Документы.РеализацияТоваровУслуг,
        СчетаУчетаКЗаполнению,
        ДанныеОбъекта,
        "Товары",
        СтрокаТабличнойЧасти);
        
    ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, СчетаУчетаДляНоменклатуры);

Что в поступлении, что реализации, "Что значит один метод хотя бы для Поступления и Реализации?" - ой а как же так?
Основная теорема систематики: Новые системы плодят новые проблемы.