powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Сворачивать, сортировать набор записей
4 сообщений из 4, страница 1 из 1
Сворачивать, сортировать набор записей
    #37474311
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

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

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

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

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

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

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

Спасибо.
...
Рейтинг: 0 / 0
Сворачивать, сортировать набор записей
    #37474441
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему не запросом? И в запросе готовите готовую тз.
...
Рейтинг: 0 / 0
Сворачивать, сортировать набор записей
    #37474452
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И про опустогении ничего не понял. Задачу опишите.
...
Рейтинг: 0 / 0
Сворачивать, сортировать набор записей
    #37474749
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, допустим, удивляет тот факт, что пункт первый не работает. Вот и вопрос отсюда - неправильно что-то написано или только запросом и решается?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Сворачивать, сортировать набор записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]