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