Имя: Пароль:
1C
1С v8
Заполнение количества материалов при подборе
0 Exces-
 
05.03.15
14:43
Добрый день!
Столкнулся с такой проблемой - необходимо реализовать в документе "Заказ-Наряд" автоматическое заполнение количества материалов из регистра "Связанные работы" при подборе материала.

Написал запрос


    Запрос = Новый Запрос;
    Запрос.Текст=
     "ВЫБРАТЬ
|    СвязанныеРаботы.Количество КАК     КоличествоМат,
|    СвязанныеРаботы.СвязаннаяРабота КАК Номенклатура,
|    СвязанныеРаботы.Авторабота.Родитель,
|    ЗаказНаряд.Автомобиль.Модель.Автоработы
|ИЗ
|    РегистрСведений.СвязанныеРаботы КАК СвязанныеРаботы
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд КАК ЗаказНаряд
|        ПО СвязанныеРаботы.Авторабота.Родитель = ЗаказНаряд.Автомобиль.Модель.Автоработы
|            И СвязанныеРаботы.СвязаннаяРабота.Ссылка = ЗаказНаряд.Товары.Номенклатура.Ссылка
|ГДЕ
|    ЗаказНаряд.Автомобиль.Модель.Автоработы <> ЗНАЧЕНИЕ(Справочник.Автоработы.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
|    СвязанныеРаботы.СвязаннаяРабота,
|    СвязанныеРаботы.Количество,
|    СвязанныеРаботы.Авторабота.Родитель,
|    ЗаказНаряд.Автомобиль.Модель.Автоработы";

Теперь как выдернуть результат запроса в поле количество при подборе?
1 vicof
 
05.03.15
14:47
как обычно,выборкой
2 salvator
 
05.03.15
14:49
Выгрузить результат запроса в ТЗ и загрузить ее в ТЧ документа?
3 anatoly
 
05.03.15
14:49
(0) ничего не понял...
4 GreatOne
 
05.03.15
14:52
Для начала запрос отредактируй. Количество просуммируй
5 Nuobu
 
05.03.15
14:53
(0) Не так соединение ставишь.
Нужен заказ наряд + регистр сведений.
И выведи номер строки, по нему можно будет определить, к какой строке, какая работа относится.
Не забудь проверку на NULL.
6 salvator
 
05.03.15
14:53
А может там правое соединение надо? Зачем тебе вся таблица регистра?
7 Nuobu
 
05.03.15
14:54
(6) Вот и я о том же.
Нужен именно заказ наряд левое соединение Регистр сведений, а не наоборот.
8 vicof
 
05.03.15
14:58
Ну и вдобавок, соединение тут внутреннее неявное
9 Exces-
 
05.03.15
15:06
Сделал так

ВЫБРАТЬ
    СвязанныеРаботы.Количество КАК КоличествоМат,
    СвязанныеРаботы.СвязаннаяРабота КАК Номенклатура,
    СвязанныеРаботы.Авторабота.Родитель,
    ЗаказНаряд.Автомобиль.Модель.Автоработы
ИЗ
    Документ.ЗаказНаряд КАК ЗаказНаряд
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязанныеРаботы КАК СвязанныеРаботы
        ПО (СвязанныеРаботы.СвязаннаяРабота.Ссылка = ЗаказНаряд.Товары.Номенклатура.Ссылка)
            И (СвязанныеРаботы.Авторабота.Родитель = ЗаказНаряд.Автомобиль.Модель.Автоработы)
ГДЕ
    ЗаказНаряд.Автомобиль.Модель.Автоработы <> ЗНАЧЕНИЕ(Справочник.Автоработы.ПустаяСсылка)
    И НЕ СвязанныеРаботы.СвязаннаяРабота ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    СвязанныеРаботы.СвязаннаяРабота,
    СвязанныеРаботы.Количество,
    СвязанныеРаботы.Авторабота.Родитель,
    ЗаказНаряд.Автомобиль.Модель.Автоработы
(4)
10 Exces-
 
05.03.15
15:07
(4) Зачем суммировать? Мне нужно количество по каждой позиции номенклатуры.
11 vicof
 
05.03.15
15:08
.Ссылка убрать.
isnull() добавить
12 Nuobu
 
05.03.15
15:10
(10) Где номер строки?
13 Exces-
 
05.03.15
15:17
(12) А зачем номер строки? Я думал так: при подборе в документе сравниваем наименование Номенклатуры в таб.части с номенклатурой получаемой из запроса, если совпадает - в поле количество подставляем количество из запроса... Прошу прощения за непонимание((
14 vicof
 
05.03.15
15:19
(13) А если у двух номенклатур одинаковое наименование?
15 Nuobu
 
05.03.15
15:20
(14) Плюс к тому, не наименование, а ссылка.
(13) А если ты две одинаковых номенклатуры забил?
В этом случае - задвоит.
16 Nuobu
 
05.03.15
15:21
(9)    И НЕ СвязанныеРаботы.СвязаннаяРабота ЕСТЬ NULL
Убери это!!!!!
В левое соединение.
17 Exces-
 
05.03.15
16:00
Постараюсь объяснить подробнее:
1) Есть документ "Заказ-Наряд", в этом документе мы выбираем "Автомобиль" из справочника "Автомобили", в элементе справочника "Автомобили" есть поле "Модель", в карточке модели есть поле "Автоработы" - Тут мы выбираем Автоработу для определенной модели автомобиля из справочника "Автоработы"(Тут указываются необходимые нормативы расходных материалов при ремонтных работах на определенные автомобили)
2)При добавлении расходных материалов в документ "Заказ-наряд" нужно чтобы нормативы брались из регистра  автомобиль-модель-автоработы, и подставлялись в поле количество.
То есть по факту в регистре "связанные работы" хранятся данные из Авторабот по разным моделям автомобилей. Материал может быть один и тот же на разные авто и нормативы на все авто тоже разные.
18 Exces-
 
05.03.15
16:13
Вы реально молодцы, что помогаете таким как я, когда-нибудь я тоже стану гуру и стану помогать новичкам. Но пока что я просто салага попавший в гущу событий, буду благодарен за любую информацию как это сделать.
19 Nuobu
 
05.03.15
16:24
Выбрать
*
ИЗ
    Справочник.Автоработы.ТабличнаяЧастьДляНеобходимыхНормРасходныхМатериалов КАК ТабличнаяЧастьДляНеобходимыхНормРасходныхМатериалов
Левое соединение
РегистрСведений.СвязанныеРаботы КАК СвязанныеРаботы
ПО ТабличнаяЧастьДляНеобходимыхНормРасходныхМатериалов.Работа = СвязанныеРаботы.Авторабота
ГДЕ
ТабличнаяЧастьДляНеобходимыхНормРасходныхМатериалов.Ссылка В (Выбрать ЗаказНаряд.Автомобиль.Модель КАК Ссылка из  Документ.ЗаказНаряд КАК ЗаказНаряд)
20 Exces-
 
05.03.15
17:15
ВЫБРАТЬ
    СвязанныеРаботы.Количество
ИЗ
    Документ.ЗаказНаряд КАК ЗаказНаряд
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязанныеРаботы КАК СвязанныеРаботы
        ПО ЗаказНаряд.Товары.Номенклатура.Код = СвязанныеРаботы.СвязаннаяРабота.Код
            И ЗаказНаряд.Автомобиль.Модель.Автоработы = СвязанныеРаботы.Авторабота.Родитель
ГДЕ
    ЗаказНаряд.Автомобиль = &Автомобиль
AdBlock убивает бесплатный контент. 1Сергей