Size: a a a

1с программирование

2020 January 23

АИ

Андрей И. in 1с программирование
Есть две такие таблицы.
1) Таблица с проектами. Там всегда разные проекты. Туда попадают только те, в которых были изменения за последние сутки.

2) Таблица с договорами по всем тем проектам, которые попадают в первую таблицу.

Мне нужно в каждый договор из второй таблицы внести изменения, в зависимости от проекта, по которому сделан этот договор.
Т.е. если в договоре проект "Проект 1", то в договор нужно вставить некое значение из карточки проекта "Проект 1"
источник

АИ

Андрей И. in 1с программирование
Получается что надо сделать цикл для обхода всех проектов. Сначала я делаю запрос к первой таблице, беру оттуда первый проект, получаю из него значение нужного мне реквизита,
потом запросом получаю список всех документов этого проекта  и  в цикле меняю в них то, что мне нужно,
потом перехожу ко второму проекту, опять получаю нужное значение из него, получаю запросом список всех документов по нему и т.д.

т.е. запрос в цикле. Сколько будет проектов в первой таблице, столько раз надо сделать запрос в цикле
источник

АИ

Андрей И. in 1с программирование
Для каждого Проект ИЗ Проекты Цикл
УникальныйРеквизитПроекта = Проект.Реквизит
Выбрать ВсеДокументы ИЗ ТаблицаДокументов
Где  Проект = &Проект
    Пока Выборка.Следующий Цикл
         Внести изменения в документ
    КонецЦикла
КонецЦикла..

но чувствую прям, что за такое могут и казнить :)
источник

Е

Евгений in 1с программирование
Ты cf-ку можешь скинуть?)
источник

Е

Евгений in 1с программирование
Или тот модуль хотя бы в котором уже сделал запрос
источник

АИ

Андрей И. in 1с программирование
конфигурация документооборот. Выгрузку сделать не могу :(
источник

Е

Евгений in 1с программирование
там же был уже готовый запрос. в нем нужно было сделать итоги и выборку обход по группировкам
источник

АИ

Андрей И. in 1с программирование
я алгоритм не пойму. Вот у меня есть список из 1000 документов.
Все эти документы распределены по четырём проектам.
В цикле я обойду эти все документы, но как мне в документ засунуть данные именно из нужного проекта? В цикле 1000 раз для каждого документа запрашивать эти данные из проекта - не вариант.
источник

АИ

Андрей И. in 1с программирование
вот обход по группировкам - звучит обнадёживающе
источник

АИ

Андрей И. in 1с программирование
сейчас погуглю, что это такое
источник

EN

Eduard Nisov in 1с программирование
Eduard Nisov
Сделать запрос с группировкой по проектам
Затем обходить результат запроса и вносить изменения в документы
Т.е. когда я предлагал группировку полдня назад это бы не вариант, а теперь... Обидно хмык хмык
источник

Е

Евгений in 1с программирование
Андрей И.
я алгоритм не пойму. Вот у меня есть список из 1000 документов.
Все эти документы распределены по четырём проектам.
В цикле я обойду эти все документы, но как мне в документ засунуть данные именно из нужного проекта? В цикле 1000 раз для каждого документа запрашивать эти данные из проекта - не вариант.
ВыборкаПроект = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  Пока ВыборкаПроект.Следующий() Цикл
      //получить что нужно из проекта
       ВыборкаДоговор = ВыборкаПроект.Выбрать();
        Пока ВыборкаДоговор.Следующий() Цикл
             //Добавляешь в каждый договор что в прошлом цикле получил из проекта
источник

k

kthxbai in 1с программирование
Даже типовые печатные формы в этих ваших хайэнд-конфах не гнушаются Выбрать(ОбходРезуьтатаЗапроса.ПоГруппировкам) в три-четыре этажа
источник

k

kthxbai in 1с программирование
И это все тот же цикл в цикле в цикле в цикле
источник

АИ

Андрей И. in 1с программирование
Eduard Nisov
Т.е. когда я предлагал группировку полдня назад это бы не вариант, а теперь... Обидно хмык хмык
Я не понял тогда, что это :) начал делать в запросе группировки, он мне там стал суммируемое поле предлагать выбрать и я весь запутался
источник

Е

Евгений in 1с программирование
запрос в цикле
источник

АИ

Андрей И. in 1с программирование
Евгений
ВыборкаПроект = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  Пока ВыборкаПроект.Следующий() Цикл
      //получить что нужно из проекта
       ВыборкаДоговор = ВыборкаПроект.Выбрать();
        Пока ВыборкаДоговор.Следующий() Цикл
             //Добавляешь в каждый договор что в прошлом цикле получил из проекта
а где мы тут задаём, что именно по проекту надо сделать группировку?
источник

k

kthxbai in 1с программирование
ИТОГИ ПО
источник

Е

Евгений in 1с программирование
Андрей И.
а где мы тут задаём, что именно по проекту надо сделать группировку?
в запросе итоги
источник

k

kthxbai in 1с программирование
Итоги - достаточно простая вещь, если ты понимаешь древозначений
источник