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

Некорректно отрабатывает запрос заполнения документа

Автор Yanawerg, 17 дек 2024, 08:51

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

Yanawerg

Прописал запрос который берет данные из документа "Заказ на производство" и записывает в документ "Требование-Накладная" но почему-то он не заполняет ТН из ЗНП но и ошибку не выдаёт.
тзКомплектующие = Новый ТаблицаЗначений;
тзКомплектующие.Колонки.Добавить("Номенклатура");
тзКомплектующие.Колонки.Добавить("ХарактеристикаНоменклатуры");
тзКомплектующие.Колонки.Добавить("Количество");
тзКомплектующие.Колонки.Добавить("ЕдиницаИзмерения");
тзКомплектующие.Колонки.Добавить("Спецификация");

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

Строка1 = тзКомплектующие.Добавить();
Строка1.Номенклатура = Выборка.Номенклатура;
Строка1.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
Строка1.Количество = Выборка.Количество * Строка.Количество;
Строка1.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
Строка1.Спецификация = Выборка.Спецификация;


Максим75

Yanawerg, так а где заполнение документа?
есть заполнение таблицы значений.
ну и запрос в цикле - то еще извращение.
и в запросе как между собой связаны две табличные части? их между собой надо связать, например по самому документу (т.е. по ссылке)

Yanawerg

Максим75, Сделал запрос по другому
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура,
| СпецификацииНоменклатурыИсходныеКомплектующие.ХарактеристикаНоменклатуры,
| СпецификацииНоменклатурыИсходныеКомплектующие.Количество,
| СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения,
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Спецификация
|ИЗ
| Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
| ПО СпецификацииНоменклатурыВыходныеИзделия.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
|ГДЕ
| СпецификацииНоменклатурыВыходныеИзделия.Номенклатура = &Номенклатура";
Для Каждого Строка Из Основание.Товары Цикл
Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл

Строка1 = тзКомплектующие.Добавить();
Строка1.Номенклатура = Выборка.Номенклатура;
Строка1.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
Строка1.Количество = Выборка.Количество * Строка.Количество;
Строка1.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
Строка1.Спецификация = Выборка.Спецификация;

КонецЦикла;

И Этот запрос отрабатывает но все ещё есть одно но, этот запрос берет просто первую спецификацию а не та которая в документе указана.
Как мне указать какая должна быть что бы все остальное заполнялось как есть

Максим75

Yanawerg, что у Вас в документе Заказ на производство на закладке Материалы? Скорее всего все материалы, необходимые для производства всей продукции. Так?
а что на закладке Продукция? вся продукция.
Что надо перенести в Требование? Материалы надо перенести или что?

У меня просто нет времени смотреть, что там в УПП (или где) наваяли разрабы.

Yanawerg

Максим75, Мне нужно из закладки Материалы все материалы

Максим75

Yanawerg, так просто перенесите из закладки Материалы все материалы.
Зачем тогда запросы городить.
Вот просто в цикле обойдите в документе-основании Материалы и заполните табличную часть документа.

LexaK

Yanawerg, так у вас в документе должна быть ссылка на нужную спецификацию, вот ее и берите!
а так вы получаете Первую-Попавшуюся спецификацию по номенклатуре!

ведь одна номенклатура может входить во множество спецификаий!!!
если помогло нажмите: Спасибо!

Yanawerg

LexaK, Честь сказать что-то у меня не получается так сделать и все равно тащит всё

LexaK

Yanawerg, похоже что не в ту сторону копаете!
при заполнении документа на основании в основном используют данные самого документа основания!
(об вам выше сказали) зачем запрос к справочникам?
если помогло нажмите: Спасибо!

Yanawerg

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

Теги:

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

Рейтинг@Mail.ru

Поиск