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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как выбрать в ТЗ периодические реквизиты  (Прочитано 6908 раз)
0 Пользователей и 1 Гость смотрят эту тему.
soulseller76
Гость
« : 24-06-2009 05:45 » 

Нужно выбрать значения периодических реквизитов справочника "Основные средства", но не все. В самом элементе, на закладке "Бух.учет" есть Счет затрат. Это периодический реквизит. Рядом с ним есть кнопка Истории. При нажатии на нее появляется окно Значения периодических реквизитов. Вот такое представление мне и нужно получить на выходе...
Но у меня почему-то не получается. Вот кусок кода.
ТЗ - значения справочника ОС, выбранные по условиям, заданным в запросе.
СчСЗ - список период.реквизитов справочника ОС.

Код:
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Для СчСЗ = 1 По СЗ.РазмерСписка() Цикл
НаименованиеРеквизита = СЗ.ПолучитьЗначение(СчСЗ);
Периодический.ИспользоватьОбъект(НаименованиеРеквизита, ТЗ.ОсновныеСредства);
Периодический.ВыбратьЗначения(,ТекущаяДата());
Пока Периодический.ПолучитьЗначение()=1 Цикл
ТЗ_Св.НоваяСтрока();
ТЗ_Св.ОС = ТЗ.ОсновныеСредства;
ТЗ_Св.ГТЦ = ТЗ.ГТЦ;
ТЗ_Св.ДатаЗначения = Периодический.ДатаЗнач;

Если НаименованиеРеквизита = "СчетЗатрат" Тогда
ТЗ_Св.СчетЗатрат = Периодический.Значение;
ИначеЕсли НаименованиеРеквизита = "Субконто1" Тогда
ТЗ_Св.Субконто1 = Периодический.Значение;
ИначеЕсли НаименованиеРеквизита = "Субконто2" Тогда
ТЗ_Св.Субконто2 = Периодический.Значение;
ИначеЕсли НаименованиеРеквизита = "Субконто3" Тогда
ТЗ_Св.Субконто3 = Периодический.Значение;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ТЗ_Св.ВыбратьСтроку();

Помогите кто чем может!  Второй день не могу сообразить!  С ума сойти...
Записан
Kivals
Модератор

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

WWW
« Ответ #1 : 24-06-2009 06:01 » 

А что именно не получается? На первый взгляд, код похож на правду.
« Последнее редактирование: 29-06-2009 08:15 от Sel » Записан
soulseller76
Гость
« Ответ #2 : 24-06-2009 06:48 » new

Получается не упорядоченная ТЗ, а с "прорехами". И потом, соответственно, не сворачивается. Но, кажется, я нашла выход. Сделала так:
Код:
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл

Для СчСЗ = 1 По СЗ.РазмерСписка() Цикл
НаименованиеРеквизита = СЗ.ПолучитьЗначение(СчСЗ);
Периодический.ИспользоватьОбъект(НаименованиеРеквизита, ТЗ.ОсновныеСредства);
Периодический.ВыбратьЗначения(,ТекущаяДата());

Пока Периодический.ПолучитьЗначение()=1 Цикл
ТЗ_Св.НоваяСтрока();
ТЗ_Св.ОС = ТЗ.ОсновныеСредства;
ТЗ_Св.ГТЦ = ТЗ.ГТЦ;
ТЗ_Св.ДатаЗначения = Периодический.ДатаЗнач;
ТЗ_Св.СчетЗатрат = ТЗ.ОсновныеСредства.СчетЗатрат.Получить(Периодический.ДатаЗнач);
ТЗ_Св.Субконто1 = ТЗ.ОсновныеСредства.Субконто1.Получить(Периодический.ДатаЗнач);
ТЗ_Св.Субконто2 = ТЗ.ОсновныеСредства.Субконто1.Получить(Периодический.ДатаЗнач);
ТЗ_Св.Субконто3 = ТЗ.ОсновныеСредства.Субконто1.Получить(Периодический.ДатаЗнач);
КонецЦикла;
КонецЦикла;

КонецЦикла;
ТЗ_Св.ВыбратьСтроку();

Теперь нет "прорех". После всертки осталось убедиться, что информация не теряется.
Записан
Kivals
Модератор

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

WWW
« Ответ #3 : 24-06-2009 10:06 » 

Так у тебя будут дублироваться записи:
например я установил СчетЗатрат в такие даты:
01.01.2009 = Счет1
01.03.2009 = Счет2
а Субконто1 изменил 01.02.2009 на ЗначениеСубконто1
У тебя получится таблица с 3-мя строками, и все ячейки заполнены:
ДатаСчетСубконто 1
01.01.2009Счет1
01.02.2009Счет1ЗначениеСубконто1
01.03.2009Счет2ЗначениеСубконто1
А корректно должно быть так:
ДатаСчетСубконто 1
01.01.2009Счет1
01.02.2009ЗначениеСубконто1
01.03.2009Счет2
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines