Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программное копирование строки ТЧ (разбивка по кол-ву)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Constantus
Приветствую, Форумчане!
1с8.3.12, самопис, БСП, УФ

Имеется некий документ. В ТЧ документа есть некоторые записи, где кол-во >1.
Требуется обработкой разбить строки ТЧ, у которых кол-во больше 1 на нужное кол-во строк.

Например:
Товар 1, 34.56 денег, 5 штук... Реквизиты1, Реквизиты2,Реквизиты3

Получить:

Товар 1, 34.56 денег, 1 штук... Реквизиты1, Реквизиты2,Реквизиты3
Товар 1, 34.56 денег, 1 штук... Реквизиты1, Реквизиты2,Реквизиты3
Товар 1, 34.56 денег, 1 штук... Реквизиты1, Реквизиты2,Реквизиты3
Товар 1, 34.56 денег, 1 штук... Реквизиты1, Реквизиты2,Реквизиты3
Товар 1, 34.56 денег, 1 штук... Реквизиты1, Реквизиты2,Реквизиты3

Потом сохранить и провести документ.

Вроде есть функционал, но никак не могу сообразить как изменить кол-во у первой записи на "1", а далее добавить строки с такими-же реквизитами, только с кол-вом "1"


Попробовал:

&НаКлиенте
Процедура РазбивкаПоКолву(Команда)
    // Вставить содержимое обработчика.
    
    Для Каждого СТР из Объект.Состав Цикл
        
        Если СТР.Количество > 1 Тогда
            
        Для Счетчик = 1 По СТР.Количество Цикл
                
            НоваяСтрока = Объект.Состав.Добавить();
            ЗаполнитьЗначенияСвойств(НоваяСтрока,СТР);
            НоваяСтрока.Количество = 1;
        КонецЦикла;    
            
        КонецЕсли;    
        
        
        
    КонецЦикла;


Но в текущей строке, где обнаружено большее количество, значение не поменяла на "1"

sava1
тз = Товары.Выгрузить();
тв = Товары.ВыгрузитьКолонки();

Для каждого строка из тз Цикл
   Для сч=1 по строка.Количество Цикл
       новаястр = тв.Добавить();
       ЗаполнитьЗначенияСвойств(нс, строка);
       новаястр.Количество=1;
   КонецЦикла;
КонецЦикла;

Товарі.Загрузить(тв);
Constantus
Все сработало. Спасибо, разобрался...

Странная ситуация возникла. При программном добавлении строк в ТЧ, форма не показала модифицированность.

Поэтому, если после выполнения операции изменения ТЧ, форму закрыть, то изменений в ТЧ никаких, т.е. данные не сохранены.

Почему после изменения ТЧ програмным методом 1с не понял, что нужно сохранять данные?


sava1 @ Сегодня, 18:22 необходимо зарегистрироваться для просмотра ссылки ,

У меня кнопка в ТЧ висит. Попробовал Ваш код, но говорит, что недопустимо использовать на Клиенте.
Попробовал на Сервере - вообще тишина...
Petre
Constantus @ Today, 15:05 необходимо зарегистрироваться для просмотра ссылки ,
В тонком клиенте ТЗ не доступна.
Constantus
Поставил после кода:

ЭтаФорма.Модифицированность = Истина;

Тогда встала (*) на документе.

Но я этот код планирую задействовать не на форме документа, а в обработке. Там формы документа не будет, а нужно будет записывать программно, а модифицированности нет. Как быть, если этот код уду использовать в обработке при обращении к объекту документа?
Petre
Constantus @ Today, 15:42 необходимо зарегистрироваться для просмотра ссылки ,
Никак не быть. Перепишите код с обращением к объекту, а не к его форме или к его данным формы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.