Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 02:08

Помогите написать запрос

Автор Люсёк, 11 окт 2010, 21:39

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

Люсёк

не совсем))) с помощью запроса я вытаскиваю данные, хранящиеся в регистре сведений ( период, размер оплаты питания, сумма). Выгружаю данные в ТаблицуЗначений1. Потом данные из табличной части документа НачислениеЗарплатыОрганизации закидываю в другую ТаблицуЗначений2. Теперь я хочу циклом просмотреть строчки из ТаблицыЗначений2, и если размер оплаты питание совпадает со значением, которое соответствует нужному  подразделению, то ничего менять не надо. Если не совпадает, то надо заменить нужной суммой из ТаблицыЗначений1. ну как то так)))

progmikon

Для каждого СтрокаТЗ2 Из ТаблицаЗначений2 Цикл
НайденнаяСтрокаВТЗ1 = ТаблицаЗначений1.Найти(СтрокаТЗ2.Подразделение);
Если НайденнаяСтрокаВТЗ1 <> Неопределено Тогда
   СуммаИзТЗ1 = НайденнаяСтрокаВТЗ1.Сумма;
   Если СуммаИзТЗ1 <> СтрокаТЗ2.Сумма Тогда
      СтрокаТЗ2.Сумма = СуммаИзТЗ1;
   КонецЕсли;
КонецЕсли;
КонецЦикла;

Вот мой вариант для выбранного вами алгоритма.

Люсёк

спасибки)))) а если еще и по дате надо сравнивать? т.е. дата из ТЗ2 должна соответствовать дате в ТЗ1)

progmikon

При таком подходе, поскольку вы получаете из регистра срез данных на дату, получается что все данные таблицы 1 актуальны на дату.
В данном случае целесообразно проверить дату при формировании ТЗ2.

progmikon

Но скажу, что данный подход не оптимальный.
Самый лучший вариант - запрос к двум таблицам с соединением: регистру сведений срез последних и табличной части вашего  документа. В запросе сразу можно и проверить на несоответствие сумм. В результате запроса получить ссылку на документ номер строки, в которой отмечено расхождение и сумму, которую необходимо проставить.

При обходе выборки из результата запроса получать объект(документ) по ссылке, обращаться к нужной строке и ставить нужную сумму.

Вот как-то так :)

Люсёк


Люсёк

У меня еще вопросик появился))) как из таблицы значений выгрузить данные обратно в табличную часть документа?

progmikon

Варианта 2.

Правильный - ТабличнаяЧасть.Загрузить(ТЗ)

И не оптимальный  - обход ТЗ и добавление в ТЧ.

Люсёк

Первый вариант мне нравится больше)) а что достаточно одной строчки? или еще что-то надо, а то у меня ошибку выдает.

progmikon

Какую ошибку, напишите...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск