Помогите пожалуйста новичку.

  • Автор темы Автор темы Guest11
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest11

Есть документ "Отчёт о расходе материалов" и в нём есть таблица Расшифровка, в которой располагаются следующие реквизиты: Изделие, Материал, Объём_работ, Норма_на_1_изд.,Всего_по_норме.
Нужно сложить количество материала израсходованного по норме (Всего_по_норме), то есть, если в колонке Материалы попадаются материалы с одинаковым названием, то их расход по норме суммируется. У меня что-то вообще нет никаких мыслей как это можно сделать... Помогите пожалуйста.
 
Если речь о 7.7, то
Свернуть(<?>,);
Синтаксис:
Свернуть(<ГруппКолонки>,<СуммКолонки>)
Назначение:
Позволяет свернуть таблицу значений по соответствующим значениям колонок, т.е. заменяет на одну строку все дублирующие (по значениям группировочных колонок) строки, суммируя значения по суммируемым колонкам.
Параметры:
<ГруппКолонки> - группировочные колонки (номера или идентификаторы колонок через запятую), по которым группировать данные.
<СуммКолонки> - суммируемые колонки (номера или идентификаторы колонок через запятую), по которым суммировать данные.
 
Нет, мне нужно на v8.0
 
думаю, что там есть такой же или аналогичный метод
 
Для каждого рас из Расшифровка цикл
плс=Всего.Добавить();
рез=Расшифровка.Свернуть("Материалы","Всего_Н,Отклонение");
плс.Материал=рез.Материалы;
плс.Рас_по_Норм=рез.Всего_Н;
плс.Отклонение=Рез.Отклонение;
КонецЦикла;
Попробовала так, просто результат должен отображаться в другой таблице. На что мне выдаётся: Обращение к процедуре объекта как к функции (Свернуть). Как же тогда это реализовать?

Всё, решила проблему, осенило! :lol:
Только, а вот если нам нужно найти одинаковые элементы таблиц в двух разных документах, то это как сделать?
 
Только, а вот если нам нужно найти одинаковые элементы таблиц в двух разных документах, то это как сделать?
найти-то их не проблема в принипе, но что вы потом собираетесь делать с найденными?
 
Что вы называете таблицой в документе?))
Что такое таблица в документе? о_О Табличная часть документа, тут по-моему нетрудно догадаться что это.
найти-то их не проблема в принипе, но что вы потом собираетесь делать с найденными?
Потом собираюсь сравнить их с другим документом и, если в одном из них какого-то элемента нет, то вывести втабличной части третьего документа :( Вот так всё запутанно.
 
Что такое таблица в документе? о_О Табличная часть документа, тут по-моему нетрудно догадаться что это.
Нельзя так и написать? Мне вот кажется, что таблица документа это скорее таблица значений, в которую выгрузили таб. часть.
 
насколько я понял тебе скорее нужно обходить одну табличку, искать каждую стоку в другой таблице и редультаты выгружать в третьюю. т.е.что то типа:
Для каждого СТР из ТаблицаСоЗначениями цикл
Если ВтораяТаблицаСоЗначениями.НайтиЗначение();//погляди синтаксис только
Пока ВтораяТаблицаСоЗначениями.НайтиЗначение();
//запись значений в третью таблицу
КонецЦикла;
КонецЕсли;
КонецЦикла;
 
Эххх - может знатоки подскажут - есть ли в восьмерке что-то вроде UNION JOIN ? Тогда один масенький запрос с двумя параметрами -и получи что надо.
 
блин. конечно есть. что-то я проморгал что разговор о восьмерке.. был занят. Конечно можно сделать все запросом. и на выходе получать уже только нужные сроки
 
Дело в том, что поиск идёт по разным документам. Я пробовала создать запрос, но 1с8 ругалось и ничего из этого не получалось :(
Попробую сделать как KiR выше описал.
А вообще дело вот в чём, если подробно разбираться:
есть, допустим, три документа: Остаток материалов (подразделение,материал,остаток),Требование-накладная (материал, количество) - он же документ, по которуму считается приход материалов, Инвентаризационная опись (материал, количество) - фиксирует количество материала в цехе на конец периода.
Вот надо, чтобы в 4-ойтаблице выводились все материалы, что есть в этих документах и, если материалы совпадают, то остаток на начало, приход и остаток на конец выводился. Если же какой-то материал не встречается в одном из документов - он добавлялся и выводилось тоже самое, только со значением 0 в том или ином количественном параметре (остаток на начало, приход, остаток на конец), смотря в какой таблице нет его.
Я просила пример для двух таблиц, чтобы понять механизм как это делается, для трёх, думаю потом как-нибудь сообразила бы. Но если кто может конкретно для моего случая сказать как сделать, то я буду примного благодарна.
 
Код:
select
d1.tovar
where
d1.tovar = d2.tovar

d1 - табличная часть первого документа
d2 - табличная часть второго документа
tovar - реквизит, который будет одинаковым в обоих документах.
 
Блин - фанат join-ов. Можно и без них - но они таки быстрее

Выбрать Различные Накладная.Номенклатура
из документ.Расходнаянакладная Как Накладная
Где Номенклатура не в (Выбрать Различные Накладная1.Номенклатура
из документ.Расходнаянакладная Как Накладная1 где Накладная1.ссылка = &Ссылка1) и Накладная.Ссылка = &Ссылка

Невнимательно прочитал пост
есть, допустим, три документа: Остаток материалов (подразделение,материал,остаток),Требование-накладная (материал, количество) - он же документ, по которуму считается приход материалов, Инвентаризационная опись (материал, количество) - фиксирует количество материала в цехе на конец периода.
Вот надо, чтобы в 4-ойтаблице выводились все материалы, что есть в этих документах и, если материалы совпадают, то остаток на начало, приход и остаток на конец выводился. Если же какой-то материал не встречается в одном из документов - он добавлялся и выводилось тоже самое, только со значением 0 в том или ином количественном параметре (остаток на начало, приход, остаток на конец), смотря в какой таблице нет его.
Я просила пример для двух таблиц, чтобы понять механизм как это делается, для трёх, думаю потом как-нибудь сообразила бы. Но если кто может конкретно для моего случая сказать как сделать, то я буду примного благодарна.


тебе тогда скорее надо выбрать номенклатуру из трех документов ( или партии, если у тебя партионный учет), свернуть это дело по нужному полю и сделать через вирт. таб. ОстаткиИОбороты запрос к регистрам, в которых хранится остаток. Добавление тут происходит при свертке таблицы, а вот
он добавлялся и выводилось тоже самое, только со значением 0 в том или ином количественном параметре
надо через условия писать..
 
тебе тогда скорее надо выбрать номенклатуру из трех документов ( или партии, если у тебя партионный учет), свернуть это дело по нужному полю и сделать через вирт. таб. ОстаткиИОбороты запрос к регистрам, в которых хранится остаток.
а мне кажется автору нада просто делать выборку таб частей трех указанных доков, выгружать это в ТЗ и потом просто сворачивать т.з. а потом если нужны какие-то отстаки и обороты - делать выборку отдельно по ним...
 
Если я правильно понял суть вопроса, то это примерно будет выглядить так:

ВЫБРАТЬ
ВложенныйЗапрос.Материал,
СУММА(ВложенныйЗапрос.Приход) КАК Приход,
СУММА(ВложенныйЗапрос.Остаток) КАК Остаток,
СУММА(ВложенныйЗапрос.ОстатокНаКонец) КАК ОстатокНаКонец,
ИЗ
(ВЫБРАТЬ
ОстатокМатериала.Материал КАК Материал,
0 КАК Приход,
ОстатокМатериала.Количество КАК Остаток,
0 КАК ОстатокНаКонец
ИЗ
Документ.ОстатокМатериала.Товары КАК ОстатокМатериала

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ТребованиеНакладная.Материал,
ТребованиеНакладная.Количество,
0,
0
ИЗ
Документ.ТребованиеНакладная.Товары КАК ТребованиеНакладная

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ИнвентаризационнаяОпись.Материал,
0,
0,
ИнвентаризационнаяОпись.Количество
ИЗ
Документ.ИнвентаризационнаяОпись.Товары КАК ИнвентаризационнаяОпись) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Материал
 
спасибо всем большое за советы. Сделала всё через запрос. It's work!)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab