Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите разобраться с ошибкой  (Прочитано 6543 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Глория
Интересующийся

by
Offline Offline

« : 06-07-2011 12:35 » 

Код: (1C v8)
Процедура Сформировать()    
Сообщить("Идет расчет");
ДокПен=СоздатьОбъект("Документ.РасчитатьПенюПодробно");


Начислено=СоздатьОбъект("ТаблицаЗначений");
Начислено.НоваяКолонка("номер","Число","3");
Начислено.НоваяКолонка("Запись","Справочник.ОплатаДом");
Начислено.НоваяКолонка("СрокОплаты","Дата");
Начислено.НоваяКолонка("ДатаОплаты","Дата");
Начислено.НоваяКолонка("Оплачено","Число","10");
Начислено.НоваяКолонка("Пеня","Число","10");
Начислено.НоваяКолонка("ВсегоОплачено","Число","10");
Начислено.НоваяКолонка("СуммаДляНачисления","Число","10");
Начислено.НоваяКолонка("Флаг","Число","1","0");

Начислено1=СоздатьОбъект("ТаблицаЗначений");
Начислено1.НоваяКолонка("номер","Число","3");
Начислено1.НоваяКолонка("Запись","Справочник.ОплатаДом");
Начислено1.НоваяКолонка("СрокОплаты","Дата");
Начислено1.НоваяКолонка("ДатаОплаты","Дата");
Начислено1.НоваяКолонка("Оплачено","Число","10");
Начислено1.НоваяКолонка("Пеня","Число","10");
Начислено1.НоваяКолонка("ВсегоОплачено","Число","10");
Начислено1.НоваяКолонка("Флаг","Число","1","0");

Оплачено=СоздатьОбъект("ТаблицаЗначений");
Оплачено.НоваяКолонка("Запись","Справочник.ОплатаДом");
Оплачено.НоваяКолонка("ДатаОплаты","Дата");
Оплачено.НоваяКолонка("Оплачено","Число","10");

ТекДата='';


...   <тело модуля, идет заполнение таблицы Начислено данными>  ...



Начислено.Сортировать("2");
Начислено1.УдалитьСтроки();
Начислено1=Начислено;
Начислено1.Свернуть("+2","5+,6+,7+");

До последнего оператора все работает как надо. После выполнения последнего оператора из таблицы Начислено пропадает поле СуммаДляНачисления(я не ошиблась, поле пропадает из Начислено, а не из Начислено1) и в дальнейшем при обращении к этому полю появляется ошибка Неизвестный объект. Не могу понять почему так происходит. Я ведь сворачиваю совсем другую таблицу.

Добавлено через 1 час, 39 минут и 58 секунд:
Вот что интересно, если строку Начислено1=Начислено , заменить  циклом и присваивать значения поэлементно дальше все работает замечательно и ничего не пропадает. Это какой-то глюк, или я просто чего-то не понимаю?
« Последнее редактирование: 21-07-2011 17:59 от RXL » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 06-07-2011 21:20 » 

Код:
Начислено1=Начислено;
- это не создание другой таблицы, а копирование ссылки на ту же таблицу. Соответственно - сворачивашь ты и Начислено тоже
Тебе нужно или:
Код:
Начислено1 = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Начислено));
или:
Код:
Начислено.Выгрузить(Начислено1);

Второй метод более правильный, но вылетит с ошибкой, если таблица не содержит ни одной строки
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #2 : 08-07-2011 12:10 » 

чуток дополню для вопрошающего

Цитата
Начислено.Выгрузить(Начислено1);

данная директива также создает структуру ТЗ Начислено1 идентичную Начислено
ТЕ данные строки кода лишние:
Цитата
Начислено1.НоваяКолонка("номер","Число","3");
Начислено1.НоваяКолонка("Запись","Справочник.ОплатаДом");
Начислено1.НоваяКолонка("СрокОплаты","Дата");
Начислено1.НоваяКолонка("ДатаОплаты","Дата");
Начислено1.НоваяКолонка("Оплачено","Число","10");
Начислено1.НоваяКолонка("Пеня","Число","10");
Начислено1.НоваяКолонка("ВсегоОплачено","Число","10");
Начислено1.НоваяКолонка("Флаг","Число","1","0");
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines