7.7 Дублирование строк табличной части

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем posmotret, 17 окт 2011.

  1. TopicStarter Overlay
    posmotret
    Offline

    posmotret Опытный в 1С

    Регистрация:
    21 июн 2011
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Задача написать обработку, которая в документе "Бухгалтерская справка" скопирует имеющиеся строки 4 раза. т.е. если есть 1 строка, то должно стать 5.
    Делаю так:

    Код:
    //*******************************************
    Процедура Сформировать()
    //Сообщить(БухСпр.НомерДок); 
    Перем счетчик;
    счетчик = 0;                                
    
    Док = СоздатьОбъект("Документ.БухгалтерскаяСправка");
    ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
    ТабЗнач.НоваяКолонка("СчетДт");
    ТабЗнач.НоваяКолонка("СубконтоДт1");
    ТабЗнач.НоваяКолонка("СубконтоДт2");
    ТабЗнач.НоваяКолонка("СубконтоДт3");
    ТабЗнач.НоваяКолонка("СчетКт");
    ТабЗнач.НоваяКолонка("СубконтоКт1");   
    ТабЗнач.НоваяКолонка("СубконтоКт2");
    ТабЗнач.НоваяКолонка("СубконтоКт3");
    ТабЗнач.НоваяКолонка("СчетДтН");
    ТабЗнач.НоваяКолонка("СубконтоДтН1");
    ТабЗнач.НоваяКолонка("СубконтоДтН2");
    ТабЗнач.НоваяКолонка("СубконтоДтН3"); 
    ТабЗнач.НоваяКолонка("СчетКтН"); 
    ТабЗнач.НоваяКолонка("СубконтоКтН1");
    ТабЗнач.НоваяКолонка("СубконтоКтН2");
    ТабЗнач.НоваяКолонка("СубконтоКтН3");
    ТабЗнач.НоваяКолонка("Валюта");
    ТабЗнач.НоваяКолонка("Количество"); 
    ТабЗнач.НоваяКолонка("ВалСумма");
    ТабЗнач.НоваяКолонка("Сумма");
    ТабЗнач.НоваяКолонка("Содержание");
    ТабЗнач.НоваяКолонка("Основание");
    ТабЗнач.НоваяКолонка("НЖ");
    ТабЗнач.НоваяКолонка("КоличествоН");
    ТабЗнач.НоваяКолонка("СуммаН"); 
    
    БухСпр.ВыбратьСтроки();
    
    Пока БухСпр.ПолучитьСтроку() = 1 Цикл
    ТабЗнач.НоваяСтрока();
    //
    ТабЗнач.СчетДт = БухСпр.СчетДт;
    ТабЗнач.СубконтоДт1 = БухСпр.СубконтоДт1;
    ТабЗнач.СубконтоДт2 = БухСпр.СубконтоДт2;
    ТабЗнач.СубконтоДт3 = БухСпр.СубконтоДт3;
    ТабЗнач.СчетКт = БухСпр.СчетКт;
    ТабЗнач.СубконтоКт1 = БухСпр.СубконтоКт1;
    ТабЗнач.СубконтоКт2 = БухСпр.СубконтоКт2;
    ТабЗнач.СубконтоКт3 = БухСпр.СубконтоКт3;
    ТабЗнач.СчетДтН = БухСпр.СчетДтН;  
    ТабЗнач.СубконтоДтН1 = БухСпр.СубконтоДтН1;
    ТабЗнач.СубконтоДтН2 = БухСпр.СубконтоДтН2;
    ТабЗнач.СубконтоДтН3 = БухСпр.СубконтоДтН3;
    ТабЗнач.СчетКтН = БухСпр.СчетКтН;          
    ТабЗнач.СубконтоКтН1 = БухСпр.СубконтоКтН1;
    ТабЗнач.СубконтоКтН2 = БухСпр.СубконтоКтН2;
    ТабЗнач.СубконтоКтН3 = БухСпр.СубконтоКтН3;
    ТабЗнач.Валюта = БухСпр.Валюта;
    ТабЗнач.Количество = БухСпр.Количество;
    ТабЗнач.ВалСумма = БухСпр.ВалСумма;
    ТабЗнач.Сумма = БухСпр.Сумма;
    ТабЗнач.Содержание = БухСпр.Содержание;
    ТабЗнач.Основание = БухСпр.Основание;
    ТабЗнач.НЖ = БухСпр.НЖ;
    ТабЗнач.КоличествоН = БухСпр.КоличествоН;
    ТабЗнач.СуммаН = БухСпр.СуммаН;    
    //
    КонецЦикла;
    
    
    Если (Док.НайтиДокумент(БухСпр) = 0) Тогда
    Сообщить("Тест");
    Док = Док.Новый(); 	
    КонецЕсли; 
    
    Пока счетчик < 5 Цикл
    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку() = 1 Цикл
    Док.НоваяСтрока();
    
    Док.СчетДт = ТабЗнач.СчетДт;
    Док.СубконтоДт1 = ТабЗнач.СубконтоДт1;
    Док.СубконтоДт2 = ТабЗнач.СубконтоДт2;
    Док.СубконтоДт3 = ТабЗнач.СубконтоДт3;
    Док.СчетКт = ТабЗнач.СчетКт;
    Док.СубконтоКт1 = ТабЗнач.СубконтоКт1;
    Док.СубконтоКт2 = ТабЗнач.СубконтоКт2;
    Док.СубконтоКт3 = ТабЗнач.СубконтоКт3;
    Док.СчетДтН = ТабЗнач.СчетДтН; 
    Док.СубконтоДтН1 = ТабЗнач.СубконтоДтН1;
    Док.СубконтоДтН2 = ТабЗнач.СубконтоДтН2;
    Док.СубконтоДтН3 = ТабЗнач.СубконтоДтН3;
    Док.СчетКтН = ТабЗнач.СчетКтН;
    Док.СубконтоКтН1 = ТабЗнач.СубконтоКтН1;
    Док.СубконтоКтН2 = ТабЗнач.СубконтоКтН2;
    Док.СубконтоКтН3 = ТабЗнач.СубконтоКтН3;
    Док.Валюта = ТабЗнач.Валюта;
    Док.Количество = ТабЗнач.Количество;
    Док.ВалСумма = ТабЗнач.ВалСумма;
    Док.Сумма = ТабЗнач.Сумма;
    Док.Содержание = ТабЗнач.Содержание;
    Док.Основание = ТабЗнач.Основание;
    Док.НЖ = ТабЗнач.НЖ;
    Док.КоличествоН = ТабЗнач.КоличествоН;
    Док.СуммаН = ТабЗнач.СуммаН;
    
    КонецЦикла;
    счетчик = счетчик + 1;
    КонецЦикла; 
    Док.Записать();
    КонецПроцедуры
    
    
    Есть 2 проблемы с которыми не могу разобраться.
    1я: Если в документе 1 строка, то у меня получается 7, а должно быть 5.
    2я: Это то, что все реквизиты Субконто* пустые в новом документе. Смотрю в отладчике и вижу, что в таблицу значений эти реквизиты попадают, как элементы справочника, но если я пытаюсь увидеть их в документе то отладчик мне показывает пустую строку причем как в исходном документе так и в конечном...хотя, повторюсь еще при копировании из источника в таблицу значений значение копируется, не смотря на то что отладчик его не видит.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Используем ПолучитьСтрокуПоНомеру
    2) У вас реквизиты неопределенного вида - это вам о чем то говорит?
  3. TopicStarter Overlay
    posmotret
    Offline

    posmotret Опытный в 1С

    Регистрация:
    21 июн 2011
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Это говорит мне только о том, что с ними не так все просто как с типизированными реквизитами, не приоткроете завесу тайны ? рассказав как работать с такими реквизитами ?
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Можно и приоткрыть..... Смотрите метод НазначитьТип
  5. TopicStarter Overlay
    posmotret
    Offline

    posmotret Опытный в 1С

    Регистрация:
    21 июн 2011
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Спасибо, это прояснилось...вопрос еще вот в чем я так понял что в зависимости от счета определяется тип этих реквизитов...не подскажите как программно сделать такое определение типа ?
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    У счета есть субконто.... Смотрите выды субконто в СП

Поделиться этой страницей