Имя: Пароль:
1C
1С v8
Подскажите как сделать
0 dantedev
 
03.12.13
14:03
В общих модулях сделал Процедуру для создания временной таблица из которой в дальнейшем я брал бы поля Номенклатура, Сроимость и СрокИсполнения.
Вот код:

Процедура СозданиеВТ() Экспорт
      
   ТаблицаЗначений = Новый ТаблицаЗначений;
   ТаблицаЗначений.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов(
   "СправочникСсылка.Номенклатура"));
   ТаблицаЗначений.Колонки.Добавить("Стоимость" , Новый ОписаниеТипов(
   "РегистрСведений.Цены.Стоимость"));
   ТаблицаЗначений.Колонки.Добавить("СрокИсполнения", Новый ОписаниеТипов(
   "РегистрСведений.Цены.СрокИсполнения"));
   //ТаблицаУслуг = ТабличнаяЧасть.Выгрузить();  
    
     МенеджерВТ = Новый МенеджерВременныхТаблиц;

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


&НаКлиенте
Процедура ПрейскурантУслугНаименованиеУслугиПриИзменении(Элемент)
     СтрокаТабличнойЧасти = Элементы.ПрейскурантУслуг.ТекущиеДанные;
     СтрокаТабличнойЧасти.Стоимость = ПолучитьСтоимостьУслуги(
     СтрокаТабличнойЧасти.НаименованиеУслуги, Объект.Дата);
     СтрокаТабличнойЧасти.СрокИсполнения = ПолучитьСрок(
     СтрокаТабличнойЧасти.НаименованиеУслуги, Объект.Дата);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСтоимостьУслуги(Номенклатура, Знач Дата = Неопределено)
     Дата = ?(Дата = Неопределено, ТекущаяДата(),Дата);
     Структура = Новый Структура;
     Структура.Вставить("Номенклатура",Номенклатура);
     Данные = МенеджерВТ(Дата,Структура);
     Возврат Данные.Стоимость;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьСрок(Номенклатура, Знач Дата = Неопределено)
     Дата = ?(Дата = Неопределено, ТекущаяДата(),Дата);
     Структура = Новый Структура;
     Структура.Вставить("Номенклатура",Номенклатура);
     Данные = РегистрыСведений.Цены.ПолучитьПоследнее(Дата,Структура);
     Возврат Данные.СрокИсполнения;
КонецФункции
Здесь, в модуле формы документа при создании самого документа и выборе в нем любой из предоставляемых услуг в поля табличной части документа СрокИсполнения и Стоимость автоматически из РегистраСведений добавляются Срок и Стоимость соответствующие данной услуге.
1 Кир Пластелинин
 
03.12.13
14:13
"Новый ОписаниеТипов("РегистрСведений.Цены.СрокИсполнения")"

жесть. и вообще. а для чего менеджер то?
2 Trainee
 
03.12.13
14:47
Возможно, я не прав, но то, что ты хочешь, довольно легко создать через подбор.
И будет работать через динамический список, а не временную таблицу, назначение кот. я не уловил.
3 dantedev
 
03.12.13
15:29
а как это можно сделать через подбор?
просто я учил 1с по книге Радченко и там про подбор ни слово не было сказано, можете просветить?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой