Имя: Пароль:
1C
1С v8
Не заполняется таблица товаров в документе реализация при применении обработки по заполнению остатко
0 Pozdnyakov
 
11.07.12
13:34
Здравстуйте Всем . Помогите кто может )
Не заполняется таблица товары в документе Реализация с помощью внешней обработки Заполнение остатков с отбором по основному поставщику

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


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

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

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