Заполнить табличную часть документа из других 4х табличный частей...не работает... #482285


#0 by unitvisual
Есть такая задачка.... Документ, в нём 4 табличные части, в каждой из них есть колонка Материал и Количество. Требуется извлечь из каждой табличной части колонки Материал и Количество, потом одинаковые материалы объединить и количество соответственно для них суммировать. Сделать это нужно конкретно для открытого документа в данный момент. Далее, когда запросом всё выбрано и объединено, с помощью цикла из выборки я копирую данные в документ списания материалов со склада. Сделал нечто вот такое, но работает оно криво что капец. Там вместо 3х материалов куча дублирующихся строк. Хотя нет никаких для этого поводов... И я так понимаю я обрабатываю вообще все документы?? ---------
#1 by Rie
Документ открыт - но может быть изменён и ещё не записан? Тогда запрос будет выбирать то, что хранится в базе данных, игнорируя изменения. Так и надо? Может, проще будет собрать табличные части в одну таблицу значений и её свернуть?
#2 by Rie
+ Или же это и есть подготовка документа для последующего редактирования? Тогда в запросе лучше ОБЪЕДИНИТЬ, а не плодить колонки.
#3 by Buster007
советую вам прочитать про запросы...
#4 by unitvisual
Документ записан и проведён должен быть(это надо потом сделать проверку), только при этом условии должно будет разрешаться списывать материалы со склада. По идее документ не должны проводить до тех пор, пока не будет выполнен заказ наряд. После того как заказ наряд полностью выполнен, можно списать материалы со склада. Получается обрабатывать нужно то что хранится в базе данных, но конкретно только для открытого документа. Как лучше сделать и правильнее? По идее при выдаче заказ наряда материалы выдаются ? Но списывают их в какой момент после выполнения или при выдаче наряда? Я совсем новичок...сюда за советом и пришёл....как сделать лучше не знаю..я даже одного способа сделать не могу) ===== А как сделать объединение??? Про запросы уже прочитал всё что можно, думал про объединение, но никогда не делал! Сегодня первый день их изучаю...
#5 by Rie
<и так далее> При этом количество полей должно совпадать во всех объединяемых запросах. В итоге получится один результат запроса с полями, названными КАК в первом запросе.
#6 by unitvisual
При этом количество полей должно совпадать во всех объединяемых запросах. Вы имели ввиду что везде должно быть 2 колонки??? в данном случае допустим Материалы и Количество???
#7 by unitvisual
по сути я должен написать 4 полноценных запроса?? Вопрос ещё такого плана...а КАК мне выдёргивать данные именно из открытого документа?? А не из всех документов которые имеются....или до этого я и выдёргивал из одного?)) Я вот тут что-то не пойму...
#8 by Rie
Из "открытого документа" запрос данные не выдернет. Данные будут получены из документа, который записан. Чтобы не лезли данные из всех документов - в запросе (или в его частях, которые потом надо ОБЪЕДИНИТЬ ВСЕ) указывается условие и задаётся параметр запроса: Запрос.Установить("ТекущийДокумент",СсылкаНаТотДокументКоторыйНужноОбработать);
#9 by unitvisual
что-то примерно понял, но не совсем) Вопрос: как получить ссылку на тот документ который нужен? Есть что-нибудь на вроде Текущий? А это прям так и должно быть: ГДЕ ИмяТаблицы.Ссылка Или я должен писать например ПрямаяСдельная.Ссылка? Прямая сдельная- это название табличной части.
#10 by Rie
А какой документ нужен? В примере в есть лишь только что созданный документ, из которого запросу выбирать нечего. А так - почитай про запросы. И обдумай свою задачу. Пока что даже опытному телепату придётся потрудиться, чтобы понять, что же тебе нужно.
#11 by unitvisual
Вы наверное не так поняли, документ который только что создан, в него будут помещаться данные из запроса, а запрос берёт данные из документа, где перечислены материалы и их количество. Документ с материалами во время списания открыт,т.к. кнопки списания находится в документе с материалами.
#12 by unitvisual
В первом посте написал, что есть документ уже созданный, сохранённый с данными. Мы из него извлекаем записи и потом их помещаем во вновь созданный документ!
#13 by unitvisual
Сделал так, при выполнении вылазит ошибка: {Документ.НарядНаВыполнениеРабот.Форма.ФормаДокумента1}: Ошибка при вызове метода контекста (Выполнить): {(12, 1)}: Ожидается имя таблицы по причине: {(12, 1)}: Ожидается имя таблицы <<?>>ОБЪЕДИНИТЬ ВСЕ
#14 by DmiVo
еще раз прочитай
#15 by unitvisual
Вот так сделал, запрос выполняется, но блин считаются туда ВСЕ документы....теперь задача как сделать чтоб только из текущего выбиралось. Документ текущий записан, сохранён.
#16 by Злобный Йожег
ГДЕ НарядНаВыполнениеРаботПрямаяСдельная.Ссылка = &ТекущийДок
#17 by Злобный Йожег
+ Запрос.УстановитьПараметр("ТекущийДок", Ссылка);
#18 by unitvisual
что-то не могу допетрить...как получить конкретно открытый документ
#19 by unitvisual
вот я  балбес!!!!! а теперь пожалуйста, объясните, как ЭТО работает??? я сколько читал справку встроенного языка...митичкина...ап габец и гончаров книга..просты примеры разработки...ни в теме касаемо запросов...ни документов такого не видел...!!!
#20 by unitvisual
Почему по слову Ссылка...он выбирает именно нужный открытый док?
#21 by unitvisual
Осталась одна беда...все позиции копируются верно, но почему то вместо сгруппированных результатов, отображаются все строки по отдельности! в общем запрос принял в итоге вот такой вид:
#22 by Злобный Йожег
Псевдонимы из следующих запросов (Материал1, Материал2..., ВсегоКоличество1, ВсегоКоличество2...) убери нах
#23 by unitvisual
согласен висят мусором и не используются. Вопрос...почему все данные объединяются в 1 массив..но не группируются???? Мне нужно чтоб было не 8 строчек ..а допустим 2....если материалов 2...
#24 by unitvisual
как теперь итоги 4 запросов сгруппировать???
#25 by Злобный Йожег
"Мне нужно чтоб было не 8 строчек ..а допустим 2....если материалов 2." Вместо ОБЪЕДИНИТЬ ВСЕ напиши просто ОБЪЕДИНИТЬ
#26 by unitvisual
так разница только в том, что если есть одинаковые строки, то слово объединить их отсекает и оставляет 1 строку - получается потеряется материал... а объединить всё считает все строки... вроде так ведь?
#27 by unitvisual
сейчас попробовал...как и говорил...просто тупо идентичные строки пропали....осталось 5 строк..объединением и не пахнет))
#28 by unitvisual
Н данный момент всё что написано работает ВЕРНО, т.е. данные группируются, но лишь ВНУТРИ КАЖДОГО запроса, потом все запросы объединяются и выходит допустим 8 строк....как сейчас сделать для всех этих 4х объединённых запросов группировку????
#29 by Rie
Например, сначала объединить, а потом - группировать.
#30 by unitvisual
интересует как это будет выглядеть синтаксически! я понимаю что нужно сгруппировать...а как это оформить??
#31 by Oleg_Kag
#32 by unitvisual
вылезает вот такая ошибка: {Документ.НарядНаВыполнениеРабот.Форма.ФормаДокумента1}: Поле объекта не обнаружено (Количество) НоваяСтрокаТабличнойЧасти.Количество = Выборка.Количество; - как я понял...в массиве куда то теряется количество материалов... ЗЫ: А внутри запросов вы убрали группировку чтобы лишние операции не выполнять да?
#33 by Oleg_Kag
поменять
#34 by unitvisual
Спасибо огромное за помощь! А с псевдонимом я конечно лоханулся по полной!!!!((
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С