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

Программное создание документов на основании табличной части

Автор Andrio48, 03 апр 2014, 21:28

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

Andrio48

Здравствуйте. Скажу сразу - я новичок в 1с. Разрабатываю собственную конфигурацию для дипломной работы. Столкнулся с следующей задачей:
Имеется документ "Заказ" с табличной частью "список материалов", которая содержит реквизиты: наименование, поставщик, кол-во и др.
И документ "Заявка на материалы" с реквизитом "Поставщик" и табличной частью с реквезитами наименование, кол-во и др.
Так же регистр накопления с измерением "наименование" и ресурсом "КоличествоОстаток" и др..

Необходимо, что бы при проведение документа заказ, в случае нехватки материалов создавались документы "Заявка на материалы" каждому поставщику, которые указаны в табличной части документа "Заказ".

Пока что только смог реализовать методом сообщить, но никак не могу придумать как реально создавать "заявки". А именно в каком месте кода. Возможно, вообще стоит изменить алгоритм??

Что бы было более понятно скриншот прилагается:


Процедура ниже.

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

Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();

ПоставщикПеременная = "";

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.КоличествоОстатокОстаток < ВыборкаДетальныеЗаписи.Количество тогда
Если НЕ (ВыборкаДетальныеЗаписи.Поставщик=ПоставщикПеременная) тогда
ПоставщикПеременная = ВыборкаДетальныеЗаписи.Поставщик;
Сообщить("Создана заявка поставщику "+ВыборкаДетальныеЗаписи.Поставщик);
КонецЕсли;

Сообщить("Материал "+ВыборкаДетальныеЗаписи.Наименование+" добавлен в заявку");
Сообщить("В заказе: "+ВыборкаДетальныеЗаписи.Количество+"шт.");
Сообщить("На складе: "+ВыборкаДетальныеЗаписи.КоличествоОстатокОстаток+"шт.");

КонецЕсли;
КонецЦикла;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры



Надеюсь на вашу помощь.
Заранее спасибо)

Andrio48


Теги:

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

Рейтинг@Mail.ru

Поиск