Версия для печати темы (https://pro1c.org.ua/index.php?s=e1969d5143dae49f3fde80be723dafe0&showtopic=36480)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ УПП 1.3 Перебрать регистр сведений список в табличное поле

Автор: alexandr_f 07.04.17, 7:08

Как сделать перевод строк в табличном поле с источником данных РегистрСвденийСписок периодический(РежимПрохода) . Надо найти значение то одному измерению и удалит ь( скорректировать строку). Я не знаю Период - нужен Последний
Устанавливается по отбору

РежимПрохода.Отбор.CheckPointID.Значение = мCheckPointId;
        РежимПрохода.Отбор.CheckPointID.ВидСравнения = ВидСравнения.Равно;
        РежимПрохода.Отбор.CheckPointID.Использование = Истина;
        РежимПрохода.Отбор.ДатаОкончания.Значение = НАЧАЛОДНЯ(ТекущаяДата());
        РежимПрохода.Отбор.ДатаОкончания.ВидСравнения = ВидСравнения.БольшеИлиРавно;
        РежимПрохода.Отбор.ДатаОкончания.Использование = Истина;
        
        РежимПрохода.Обновить();

Если беру
Для Каждого строка из РежимПрохода ТОГДА

Пишет - не найден итератор

Автор: Bernet 07.04.17, 8:31

alexandr_f @ Сегодня, 8:08 * ,
Если РежимПрохода это набор записей регистра сведений, то Вам надо после установки отбора вызвать функцию "Прочитать", т.е. выглядит это примерно так

НаборЗаписей = РегистрСведений.ВАШРЕГИСТР.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ВАШЕПОЛЕ1.Установить(ЗНАЧЕНИЕОТБОРА);
НаборЗаписей.Отбор.ВАШЕПОЛЕ2.Установить(ЗНАЧЕНИЕОТБОРА);
НаборЗАписей.Прочитать();

Для Каждого Запись Из НаборЗАписей Цикл
        // тут что-то делаем с записью регистра
КонецЦикла;

// и сохраняем изменения
НаборЗаписей.Записать();

Автор: alexandr_f 07.04.17, 9:25

Bernet @ Сегодня, 9:31 * ,
Это Список. Набор имеет отбор только по Измерениям , а у меня по ресурсам - время окончания - ищет не актульные

Автор: Bernet 07.04.17, 9:32

alexandr_f @ Сегодня, 10:25 * ,
да, что-то я рассеяный стал, невнимательно прочитал первый пост. А разве можно удалить строку из списка регистра, не удаляя её при этом из самого набора? В чем конечная задача, что хотите со строками делать потом?

Автор: alexandr_f 07.04.17, 9:45

Bernet @ Сегодня, 10:32 * ,
Есть График занесенные на карту( Регистр Сведений) Измерения № карты, тип графика, тип карты и ресурсы - дата начала дата окончания.
Надо отредактировать графики на карте. Я выбираю карту Ставлю отбор но карте и признак просроченные или нет. -Это РегистрСписок в ТП
Далее вызываю форму справочника графиков ( множественный выбор из двух списков) и устанавливаю те, что нужно. Получаю ТЗ отличий - те что надо добавить и те что надо удалить.
Теперь надо найти те стоки что надо удалить и добавить (что легче) те что надо добавить

Автор: sava1 07.04.17, 9:58

А запросом выбрать - что мешает.

Автор: alexandr_f 07.04.17, 10:03

sava1 @ Сегодня, 10:58 * ,
Запрос мне вернет ТЗ. Ворос что никак не могу понять как перебирать РегистрСведенийСписок. Остальные просто перебором ТЧ, а этот как- то через что-то

Автор: sava1 07.04.17, 10:44

Цитата(alexandr_f @ 07.04.17, 11:03) *
как перебирать РегистрСведенийСписок.

Не предназначен он для перебора. Работает напрямую с данными - это пользовательское отражение объекта.
Если хотите перебирать - надо получить коллекцию/набор данных.

Автор: alexandr_f 10.04.17, 12:28

sava1 @ 07.04.17, 11:44 * ,
Переделал на Набор Записей . А можно ли добавить(удалить) в ТП чтобы было видно но не записывалось? Вручную получается , А программо

Для Каждого строка  ИЗ ТаблицаОтличий ЦИКЛ
            ЕСЛИ строка.знак =1 ТОГДА
                запись= РежимПрохода.Добавить();
                запись.Период=НачалоДня(ТекущаяДАТА());
                запись.ДатаНачала=запись.Период;
                запись.CheckPointID=мCheckPointID;
                запись.График= строка.график;
                запись.датаОкончания=ДобавитьМесяц(запись.Период,36);
                запись.типПропуска=  мТипПропуска;
                //РежимПрохода.
            //ИНАЧЕ
            //    Для Каждого стр из ЭлементыФормы.Режимы.Данные ЦИКЛ
            //        ЕСЛИ стр.График = строка.График ТОГДА
            //            стр.удалить();
            //        КОНЕЦЕСЛИ;    
            //    КОНЕЦЦИКЛА;    
            КОНЕЦЕСЛИ;    
        КОНЕЦЦИКЛА;

И как найти ту строку которую надо удалить

Автор: sava1 10.04.17, 13:43

1. Выбираем записи из регистра по условию ЗАПРОСОМ в тз или ТЧ.
2. Источником для ТП ставим тз/тч.
3. Делаем весь функционал по работе с данными в ТП.
4. По кнопке - записываем в регистр (с отборами).

Строка ищется по Ключу.

Автор: alexandr_f 12.04.17, 10:14

sava1 @ 10.04.17, 14:43 * ,
Я уже месяц тудо суда мучаюсь регистрами. В ТЗ меня не устраило отсутсвует возмозности отбора как в источнике данных так и ТП (ЭлементыФормы.ОтборСтрок)
А в регистре это есть.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua