| 
    
        
     
     | 
    
  | 
Как программно ПОЛНОСТЬЮ заполнить ТЧ документов? | ☑ | ||
|---|---|---|---|---|
| 
    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, а там:
 
        СчетаУчетаДляНоменклатуры = СчетаУчетаВДокументах.ЗаполнитьРеквизитыПриИзменении( Документы.РеализацияТоваровУслуг, СчетаУчетаКЗаполнению, ДанныеОбъекта, "Товары", СтрокаТабличнойЧасти); ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, СчетаУчетаДляНоменклатуры); Что в поступлении, что реализации, "Что значит один метод хотя бы для Поступления и Реализации?" - ой а как же так?  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |