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

Заполнение табличной части документа списание материалов из эксплуатации по МОЛ

Автор slavabatov, 23 мая 2012, 11:10

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

slavabatov

Добрый день.
Есть ли у кого внешняя обработка для заполнения ТЧ документа Списание материалов из эксплуатации? У меня написана обработка которая без проблем заполняет (по МОЛ) Перемещение материалов и Возврат материалов, но хоть убей не хочет правильно заполнять (по МОЛ) (часть материалов не попадает, те которые были перемещены) Списание.

Процедура Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта) Экспорт

Если Объект.Модифицированность() Тогда
Сообщить("Документ должен быть записан!");
Возврат;
КонецЕсли;

МОЛ = Справочники.ФизическиеЛица.ПустаяСсылка();

Если ВвестиЗначение(МОЛ, "Выберите получателя") Тогда

Объект.Материалы.Очистить();

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

Запрос.УстановитьПараметр("Период", Объект.Дата);
Запрос.УстановитьПараметр("ФизЛицо", МОЛ);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

СтрокаТЧ = Объект.Материалы.Добавить();

СтрокаТЧ.Номенклатура = Выборка.Номенклатура;
СтрокаТЧ.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
СтрокаТЧ.СерияНоменклатуры = Выборка.СерияНоменклатуры;
СтрокаТЧ.ФизЛицо = Выборка.ФизЛицо;
СтрокаТЧ.Количество = Выборка.КоличествоОстаток;
СтрокаТЧ.ЕдиницаИзмерения = Выборка.Номенклатура.ЕдиницаХраненияОстатков;
СтрокаТЧ.Коэффициент = Выборка.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент;
СтрокаТЧ.НазначениеИспользования = Выборка.НазначениеИспользования;
СтрокаТЧ.ТипСтоимости = Перечисления.ВидыНормативнойСтоимостиПроизводства.Рассчитывается;

КонецЦикла; 

КонецЕсли;

КонецПроцедуры


slavabatov

что то я с ВВ кодом перемудрил


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

Теги:

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

Рейтинг@Mail.ru

Поиск