Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 12:40
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Сворачивать, сортировать набор записей  (Прочитано 4469 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bolobol

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-26
  • Сайт: 
  • Профессия: Программист 1С
Здравствуйте.

Не уверен, что делаю всё правильно, поэтому вопросы по правильности решений (задачи переформулированы):
1. В документе имеется табличная часть с реквизитом Товары.
По подписке "обработка проведения" документа, по товару отбирается склад и другие реквизиты и ресурс из периодического регистра:
Стракт= Новый Структура;
Стракт.Вставить("Товар", Источник.ТабЧасть.ВыгрузитьКолонку("Товары"));
СкладыТоваров= РегистрыСведений.СкладыТоваров.СрезПоследних(Источник.Дата, Стракт);

2. В документе нет указания, что он формирует движения по периодическому регистру сведений "РегСв", таким образом, как я понимаю, чистить движения нужно самостоятельно, для того чтобы получить состояние регистра на дату документа:
НаборЗаписей= РегистрыСведений.РегСВ.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка);
НаборЗаписей.Записать();

3. Нужно создать таблицу значений аналогичной структуры как РегСВ:
ТЗВсеСклады= НаборЗаписей.Выгрузить();

4. Полученную выборку необходимо отсортировать по реквизиту "Склад":
СкладыТоваров.Сортировать("Склад");
и при определённых условиях остальных реквизитов - опустошить значение ресурса, но так как обход идёт по неизвестному заранее сценарию (надо ли опустошать и несколько записей регистра или одну), то получается такая схема:
ПредыдущийСклад= Неопределено;
ТЗОпустошения= Неопределено;
ВыполнениеУсловияОпустошения= ложь;
Для каждого Стр из СкладыТоваров Цикл
   Если ПредыдущийСклад <> Стр.Склад Тогда
      Если ПредыдущийСклад <> неопределено Тогда
         Если ВыполнениеУсловияОпустошения Тогда
Необходимо скопировать ТЗОпустошения в ТЗВсеСклады
            Для каждого Стр2 из ТЗОпустошения Цикл
               НовСтр= ТЗВсеСклады.Добавить();
               ЗаполнитьЗначенияСвойств(НовСтр, Стр2);
            КонецЦикла;
         КонецЕсли;
      КонецЕсли;
      ПредыдущийСклад= Стр.Склад;
      ВыполнениеУсловияОпустошения= ложь;
   КонецЕсли;
   Если НЕ ПроверкаВыполненияУсловияОпустошения(Стр, ТЗОпустошения) Тогда
      Если НужноОпустошить(Стр) Тогда
         НовСтр= ТЗВсеСклады.Добавить();
         ЗаполнитьЗначенияСвойств(НовСтр, Стр);
      КонецЕсли;
   Иначе
      ВыполнениеУсловияОпустошения= Истина;
   КонецЕсли;
КонецЦикла;
и повтор кода (здесь сделано через повтор, чтобы не путать текстом оптимизации, типа - зачем добавляется пустая строка в СкладыТоваров):
Если ПредыдущийСклад <> неопределено Тогда ... КонецЕсли;
Получается, что при заполнении по Стр, а затем по вдруг необходимому заполнению по Стр2 (которая может включать в себя отдельные записи Стр, уже добавленные) в ТЗВсеСклады появятся дублирующиеся записи, которые необходимо свернуть по реквизитам и ресурсам РегСВ:
Метаданное= Метаданные.РегистрыСведений.РегСВ;
СтрСвернуть= "";
Для каждого Стр из Метаданное.Реквизиты Цикл
   СтрСвернуть= СтрСвернуть + "," + Стр.Имя;
КонецЦикла;
Для каждого Стр из Метаданное.Ресурсы Цикл
   СтрСвернуть= СтрСвернуть + "," + Стр.Имя;
КонецЦикла;
ТЗВсеСклады.Свернуть(Сред(СтрСвернуть, 2));

5. И когда ТЗВсеСклады подготовлена к записи в регистр РегСВ, ведь с дублирующимися записями регистр не запишется:
НаборЗаписей.Загрузить(ТЗВсеСклады);
НаборЗаписей.Записать();

6. Что нужно изменить, чтобы было правильно? ))

Спасибо.


Оффлайн comol

  • ****
  • Сообщений: 285
  • РЕПУТАЦИЯ: 38
  • КПД: 13%
  • Регистрация: 2011-09-08
  • Сайт: comol.livejournal.com
  • Профессия: Программист 1С
По-моему нужно чуть поучиться пользоваться отладчиком - представлением выражений и просмотром их  и вы сами свои вопросы решите... а так это конечно долго разбираться в том что там у вас получается...
Статьи по оптимизации 1С: http://comol.livejournal.com/

Оффлайн bolobol

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-26
  • Сайт: 
  • Профессия: Программист 1С
По-моему нужно чуть поучиться пользоваться отладчиком - представлением выражений и просмотром их  и вы сами свои вопросы решите... а так это конечно долго разбираться в том что там у вас получается...
По-моему, я что-то слышал про это средство, не могу вспомнить только где ))
Вот, по поводу первого пункта - он не работает. Вопрос - почему ИЛИ как правильно исправить? Тут уж за разработчика не догадаешься, либо знания, либо толковая литература, которой, к сожалению, найдено не было.

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Отладчик - в Конфигураторе ставим точки останова в нужных местах (не ленимся, ищем их установку в меню, там все прозрачно), запускаем предприятие в режиме отладки (так же из основного меню Конфигуратора), и изучаем меню "Отладка", много там чего интересного есть.

Про первый пункт - кто ж в Структуру засовывает целую колонку значений... Структура - это соответствие "Ключ"->"Значение". То есть, в Вашем случае, "Товар"->Конфета (ссылка на товар из справочника)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать


Теги:
 

Удаление записей помеченных на удаление.

Автор VladEastРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 684
Последний ответ 07 Авг 2016, 13:11
от VladEast
Третье субконто счета 19.08 в проводках "Формирование записей книги покупок"

Автор NataliaKoroleva72Раздел Пользователям "1С - Предприятие 8"

Ответов: 4
Просмотров: 6755
Последний ответ 29 Мар 2013, 10:25
от MuI_I_Ika
Удалил из базы кучу записей (порядка 10 тысяч), а размер не уменьшился

Автор DirecTwiXРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2270
Последний ответ 12 Май 2012, 16:04
от DirecTwiX
Перебор записей табличной части элемента справочника для просмотра картинок

Автор ktu78Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 1205
Последний ответ 21 Сен 2015, 09:36
от ktu78
Оборотно - сальдовая ведомость и Формирование записей книги покупок по счету 19.04

Автор Эля 123Раздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 265
Последний ответ 15 Ноя 2017, 13:49
от Геннадий ОбьГЭС

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
172 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
38 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal