egerLESHIK
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Привет всем экспертам и профи. Пытаюсь тут понять логику и наваять правильный код, да вот совсем запутался. Смысл в следующем: Сооружаю таблицу значений, загоняю данные из справочников. из справочника ТМЦ группы и сами товары заносятся исправно. А вот из подчиненного справочника "Цены" не заносятся почему-то. То ли я никак не могу сообразить механизм работы, то ли что-то другое. Впрочем нужно в соответствии с Типом Цен выбранным в поле ввода, чтобы производился выбор соответствующих цен на текущую дату и подставляло в колонку Цены. Изначальный код следующий (скорее всего с ошибками): Код: //***************************Обработка шапки диалога обработки************************** Процедура ПриОткрытии() ЭлементСправочника = СоздатьОбъект ("Справочник.ТорговыеТочки"); СпК = СоздатьОбъект ("Справочник.Контрагенты"); //Наименование=Контрагенты; Если Контрагенты=1 Тогда ТелКлиент=СпК.Телефоны; АдрКлиент=ЭлементСправочника.Адрес; КонецЕсли; //======================сооружаем таблицу значений================================== ТЗЗаявка.НоваяКолонка("М","Число",2); ТЗЗаявка.НоваяКолонка("N","Число",4); ТЗЗаявка.НоваяКолонка("Группа",,30,,,,,); ТЗЗаявка.НоваяКолонка("Наименование","Справочник.ТМЦ",30,"Наименование"); // ТЗЗаявка.ТМЦ=("ТМЦ.Родитель"); ТЗЗаявка.НоваяКолонка("Цена","Число",10,2,,5); Если ПустоеЗначение(ВыбКатегорияЦен)=1 Тогда ТЗЗаявка.ВидимостьКолонки("Цена",0); Иначе ТЗЗаявка.ВидимостьКолонки("Цена",1); КонецЕсли; КонецПроцедуры //**********************пропишем функцию получения цены******************** //-------------------------------------------------------------------------- Функция ПолучитьЦена () Перем Точность; НаДату = ПолучитьДатуТА(); Если (ПустоеЗначение(ВыбКатегорияЦен) = 1) Тогда Возврат ""; КонецЕсли; КатЦен = ВыбКатегорияЦен; Если (КатЦен = глВернутьКатегориюЦен("_Прих")) или (КатЦен = глВернутьКатегориюЦен("_Хран")) Тогда Точность = 5; Иначе Точность = Константа.ТочностьЦеныРН.Получить(НаДату); КонецЕсли; Возврат Формат(глВернутьЦену(КатЦен,НаДату),"Ч015."+Точность); КонецФункции // ПолучитьЦена() //**************************Заполняем таблицу значений***************** Процедура Выполнить() ТЗЗаявка.Очистить(); ТЗЗаявка.НоваяКолонка("М","Число",2); ТЗЗаявка.НоваяКолонка("N","Число",4); ТЗЗаявка.НоваяКолонка("Группа",,30,,,,,); ТЗЗаявка.НоваяКолонка("Наименование","Строка",30,"Наименование"); // ТЗЗаявка.ТМЦ=("ТМЦ.Родитель"); ТЗЗаявка.НоваяКолонка("Цена","Число",10,2,,5); СпТМЦ=СоздатьОбъект("Справочник.ТМЦ"); СпТМЦ.ВыбратьЭлементы(); ТекущийЭлемент=СоздатьОбъект("Справочник.Цены"); ТекущийЭлемент.ВыбратьЭлементы(); ТекЭл = ТекущийЭлемент; ТЗЗаявка.ВыбратьСтроки(); НС=1; Пока СпТМЦ.ПолучитьЭлемент()>0 Цикл ТЗЗаявка.НоваяСтрока(); ТЗЗаявка.N=НС; ТЗЗаявка.Группа=СпТМЦ.Родитель; Если СпТМЦ.Родитель=0 Тогда ОткрытьФорму("Справочник.Цены.ФормаСписка",ТекЭл); Иначе Сообщить ("Цены для группы не показываются."); КонецЕсли; ТЗЗаявка.Наименование=СпТМЦ.Наименование; Если ВыбКатегорияЦен=1 Тогда ОткрытьФорму("Справочник.Цены.ФормаСписка",ТекЭл); ТЗЗаявка.Цена=ПолучитьЦена(); //???????????????? КонецЕсли; НС=НС+1; КонецЦикла; КонецПроцедуры |
|