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

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

Автор sergey11111, 11 июл 2012, 11:02

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

sergey11111

Здравстуйте Всем . Помогите кто может )
Не заполняется таблица товары в документе Реализация с помощью внешней обработки Заполнение остатков с отбором по основному поставщику

Внешняя обработка Заполнение остатков с отбором по основному поставщику


Перем ПользовательОтказался Экспорт;

Процедура Заполнить(ФормаОбъекта,ТаблицаТовары,КнопкаПанели) Экспорт
   #Если Клиент Тогда
      ТаймаутДиалогов=обПраво("ТаймаутДиалогов");
      Если ТаблицаТовары.Количество()>0 Тогда
         //спросим про очистку
         ОтветПользователя=Вопрос("Таблица товаров будет очищена!",РежимДиалогаВопрос.ДаНет,ТаймаутДиалогов);
         Если ОтветПользователя=КодВозвратаДиалога.Да Тогда
            ТаблицаТовары.Очистить();
         Иначе
            //В данном примере нельзя без очистки, хотя можно потом повторяющие строки сворачивать или еще что-нибудь делать
            Возврат
         КонецЕсли;
      КонецЕсли;
      
   МетаданныеДокумента = ФормаОбъекта.ЭтотОбъект.Метаданные();
   //Заказ внутренний
   
   Если ЕстьРеквизитДокумента("ПодразделениеПолучатель", МетаданныеДокумента) Тогда
      ПодразделениеДокумента = ФормаОбъекта.ПодразделениеПолучатель;
   //Перемещение
   ИначеЕсли ЕстьРеквизитДокумента("СкладПолучатель", МетаданныеДокумента) Тогда
      Если ТипЗнч(ФормаОбъекта.СкладПолучатель) = Тип("СправочникСсылка.СкладыКомпании") Тогда
         ПодразделениеДокумента = ФормаОбъекта.СкладПолучатель.Подразделение;
      ИначеЕсли ТипЗнч(ФормаОбъекта.СкладПолучатель) = Тип("СправочникСсылка.ПодразделенияКомпании") Тогда
         ПодразделениеДокумента = ФормаОбъекта.СкладПолучатель;
      Иначе
         ПодразделениеДокумента = Справочники.ПодразделенияКомпании.ПустаяСсылка();
      КонецЕсли;
   //Заказ поставщику
   ИначеЕсли ЕстьРеквизитДокумента("СкладКомпании", МетаданныеДокумента) Тогда
      ПодразделениеДокумента = ФормаОбъекта.СкладКомпании.Подразделение;
   Иначе
      Предупреждение("Для данного вида документа не удалось определить подразделение матрицы!!!");
      Возврат;
   КонецЕсли;
   Если Не ЗначениеЗаполнено(ПодразделениеДокумента) Тогда
      Предупреждение("Не заполнено подразделение!!!");
      Возврат;
   КонецЕсли;

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







Теги:

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

Рейтинг@Mail.ru

Поиск