Имя: Пароль:
1C
1С v8
Данные из регистра накопления в документ
0 pandemion3
 
08.04.22
14:31
Добрый день
Такой вопрос: сделал запрос через конструктор (см. ниже), но столкнулся с проблемой
Значения регистра сведений подставляется без проблем, но когда подключаю к запросу ещё и регистр накопления остатки, данные остатков просто складываются и записываются в каждую строчку табличной части

КОД:
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    НоменклатураСрезПоследних.Поставщик КАК Поставщик,
        |    НоменклатураСрезПоследних.Номенклатура КАК Номенклатура,
        |    НоменклатураСрезПоследних.МинимальноеКоличество КАК МинимальноеКоличество,
        |    ОстаткиНоменклатурыОстатки.ФактКоличествоОстаток КАК ФактКоличествоОстаток
        |ИЗ
        |    РегистрСведений.Номенклатура.СрезПоследних КАК НоменклатураСрезПоследних,
        |    РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НовСтр = Объект.Остатки.Добавить();
        НовСтр.ФактКоличество = ВыборкаДетальныеЗаписи.ФактКоличествоОстаток;
        НовСтр.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        НовСтр.Поставщик = ВыборкаДетальныеЗаписи.Поставщик;
        НовСтр.ПланКоличество = ВыборкаДетальныеЗаписи.МинимальноеКоличество;
    КонецЦикла;
Что мне надо получить в итоге: в табличную часть документа записывались "Поставщик" "Номенклатура" "Минимальное количество" и "Фактическое количество"
Заполнение ТЧ автоматическое через кнопку
Надеюсь я понятно донёс суть
1 lodger
 
08.04.22
14:33
запрос плохо написал.
2 pandemion3
 
08.04.22
14:35
(1) А можешь, пожалуйста, подсказать, как реализовать? Пробовал разными способами, но этот был пока самый оптимальный
Если без регистра сведений писать запрос, то подставляется всё хорошо
Но при этом и регистр сведений отдельно работает тоже хорошо
Я не понимаю как связать их :(
3 lodger
 
08.04.22
14:41
написание запроса надо начинать с вводной:
а) источники данных и их структура
б) требуемый результат со всеми отборами, условиями, нюансами.

например:
имеем
РегистрСведений Номенклатура с измерениями Поставщик и Номенклатура с ресурсом МинимальноеКоличество;
РегистрНакопления ОстаткиНоменклатуры с измерениями Номенклатура с ресурсом ФактКоличество.
нужно
заполнить ТЧ документа с отбором по Поставщику N из шапки документа и остатком по Складу M
4 lodger
 
08.04.22
14:44
потом думаешь, как надо связать исходные данные:
по каждой номенклатуре из Номенклатура надо подобрать факт остаток из ОстаткиНоменклатуры

преобразуем слова в условие связи:
РегистрСведений.Номенклатура.СрезПоследних КАК НоменклатураСрезПоследних
Левое Соединение РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
ПО НоменклатураСрезПоследних.Номенклатура  = ОстаткиНоменклатурыОстатки.Номенклатура
5 lodger
 
08.04.22
14:46
думаем о сокращении лишних строк и накладываем отбор:

РегистрСведений.Номенклатура.СрезПоследних КАК НоменклатураСрезПоследних
переписываем на:
РегистрСведений.Номенклатура.СрезПоследних(,Поставщик = &Контрагент) КАК НоменклатураСрезПоследних

и перед исполнением запроса подаём этот параметр системе:
Запрос.УстановитьПараметр("Контрагент",Объект.Контрагент)
6 pandemion3
 
08.04.22
15:20
Всё получилось, спасибо огромное!
AdBlock убивает бесплатный контент. 1Сергей