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

Пишу первую программу...Помогите!!!

Автор Julia2010, 30 апр 2010, 12:36

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

Julia2010

Что я делаю не так???

Спр.ТекущийЭлемент().полннаименование =   - Выдает верный результат
Спр.ТекущийЭлемент() .РеквизитПоиска    =   - Выдает ошибку: Поле агрегатного объекта не обнаружено (РеквизитПоиска),
хотя РеквизитПоиска = "полннаименование"

Tatitutu

А что ты хочешь сделать ? Суть задачи напиши

И лучше писать так
ТекСпр=Спр.ТекущийЭлемент();

//получили ссылку на элемент справочника
//дальше по умолчанию у него есть реквизит Код и Наименование
//остальные ты сам прописываешь в конфигураторе

ТекСпр.Код //будет код справочника
ТекСпр.Наименование //будет наиенование
а ТекСпр.Непонятночто //если нет реквизита такого будет ошибка

*  MAGAZKA - лучшая программа для розничного магазина (с) *

Julia2010

У меня поиск по полям справочника "Номенклатура",
РеквизитПоиска - переменная, содержит название поля, по-которому будет идти поиск.
Спр = Объект(Справочник.Номенклатура)

А сам справочник уже рабочий, все поля есть, в том числе и "ПолнНаименование"

tolik

Здравствуйте помогите чайнику.
1С Предприятие 7.7 Торговля и склад 9.2
Необходимо сделать вывод трех цен в форме подбора номенклатуры (закупочная оптовая основная)
вот текст но он выводит тока оптоаую и основную

Функция СформироватьИнфНадпись(ТовОстаток, ТовОстатокПоФирме, ТовЕдиница, ТовЦена, ТовВалюта)
   
   Перем ТипЦеныЗак,ТипЦеныОсн,ТипЦеныОпт,_ТовЦена, __ТовЦена;
   
   ТипЦеныЗак = СоздатьОбъект("Справочник.ТипыЦен");
   ТипЦеныОпт = СоздатьОбъект("Справочник.ТипыЦен");
   Если ТипЦеныЗак.НайтиПоНаименованию("Закупочная",0,0)=1 тогда
      
      Если глВернутьЦену(ТекущийЭлемент(), ТипЦеныЗак, ПолучитьДатуЦен(), _ТовЦена, , ) = 1 Тогда
         СтрокаЦены   = "Закуп.:" + глФРМ(_ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница+"; ";
      Иначе
         СтрокаЦены   = "Закуп.: 0.00; "
      КонецЕсли;   
   КонецЕсли;   
   
   Если ТипЦеныОпт.НайтиПоНаименованию("Оптовая",0,0)=1 тогда
      
      Если глВернутьЦену(ТекущийЭлемент(), ТипЦеныОпт, ПолучитьДатуЦен(), __ТовЦена, , ) = 1 Тогда
         СтрокаЦены   = "Опт.:" + глФРМ(__ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница+"; ";
      Иначе
         СтрокаЦены   = "Опт.: 0.00; "
      КонецЕсли;   
   КонецЕсли;
   
   Если ПустоеЗначение(ТовЦена) =  0 Тогда
      СтрокаЦены   = СтрокаЦены+"Осн.:" + глФРМ(ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница;
   Иначе       
      ТипЦеныОсн = СоздатьОбъект("Справочник.ТипыЦен");
      Если ТипЦеныОсн.НайтиПоНаименованию("Основная",0,0)=1 тогда
         Если глВернутьЦену(ТекущийЭлемент(), ТипЦеныОсн, ПолучитьДатуЦен(), ТовЦена, , ) = 1 Тогда
            СтрокаЦены   = СтрокаЦены+"Осн.:" + глФРМ(ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница;
         Иначе
            СтрокаЦены   = СтрокаЦены+"Осн.: 0.00; "
         КонецЕсли;
      КонецЕсли;
   КонецЕсли;

Не пойму в чем ошибка

Tatitutu

в ДНК (шутка)
почему не все функцию выложил , где Возврат
из того что видно
зачем два раза одни и тот же объект создавать ?
  ТипЦеныЗак = СоздатьОбъект("Справочник.ТипыЦен");
   ТипЦеныОпт = СоздатьОбъект("Справочник.ТипыЦен");
а вот то что ты пытаешся найти присваиваешь одной и той же переменной
СтрокаЦены

т.е. нашел цену  СтрокаЦены=200, следующую цену нашел перезаписал  СтрокаЦены=300 и.т.д

могу поспорить в конце стоит Возврат  СтрокаЦены;


*  MAGAZKA - лучшая программа для розничного магазина (с) *

tolik

Конец функции выглядит так:   
//Если ПоказыватьОстатокПоФирме = 0 Тогда
      Если ПустоеЗначение(ТовОстаток) = 0 Тогда
         СтрокаОстатка = " остаток: " + глФРМКоличество(ТовОстаток) + " " + ТовЕдиница;
      Иначе   
         СтрокаОстатка = "нет в наличии";
      КонецЕсли;
   //Иначе
   //   Если (ПустоеЗначение(ТовОстаток) = 0) и (ПустоеЗначение(ТовОстатокПоФирме) = 0) Тогда
   //      СтрокаОстатка = " остаток на складе: " + глФРМКоличество(ТовОстаток) + " " + ТовЕдиница + "," +
   //                              " на фирме: "  + глФРМКоличество(ТовОстатокПоФирме)  + " " + ТовЕдиница;
   //   Иначе                     
   //      СтрокаОстатка = "нет в наличии";
   //   КонецЕсли;
   //КонецЕсли;
   
   Возврат СтрокаЦены + " - " + СтрокаОстатка;
   
КонецФункции // СформироватьИнфНадпись()

Когда выбираем какой нибудь товар в строке информации об номенклатуре должно выводится:

Закуп.: 30,00 руб. Опт.: 37,00 руб. Осн.: 42,00 руб. остаток - 140 шт.

А у меня проподает  Закуп (закупочная цена)

tolik

Спасибо Tatitutu

Вопрос решен вот исходный код может кому пригодиться :zebzdr: :zebzdr: :zebzdr:

Функция СформироватьИнфНадпись(ТовОстаток, ТовОстатокПоФирме, ТовЕдиница, ТовЦена, ТовВалюта)
   
   Перем ТипЦеныЗак,ТипЦеныОсн,ТипЦеныОпт,_ТовЦена, __ТовЦена;
   
   ТипЦеныЗак = СоздатьОбъект("Справочник.ТипыЦен");
   ТипЦеныОпт = СоздатьОбъект("Справочник.ТипыЦен");
   Если (ТипЦеныЗак.НайтиПоНаименованию("Закупочная",0,0)=1) и (ТипЦеныОпт.НайтиПоНаименованию("Оптовая",0,0)=1) тогда
      
      Если (глВернутьЦену(ТекущийЭлемент(), ТипЦеныЗак, ПолучитьДатуЦен(), _ТовЦена, , ) = 1) и (глВернутьЦену(ТекущийЭлемент(), ТипЦеныОпт, ПолучитьДатуЦен(), __ТовЦена, , ) = 1) Тогда
         СтрокаЦены   = "Закуп.:" + глФРМ(_ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница+"; "+"Опт.:" + глФРМ(__ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница+"; ";
      //   СтрокаЦены   = "Опт.:" + глФРМ(__ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница+"; ";
      Иначе
         СтрокаЦены   = "Закуп.: 0.00; "+ "Опт.: 0.00; "
      //   СтрокаЦены   = "Опт.: 0.00; "
      КонецЕсли;   
   КонецЕсли;   
   
//   Если ТипЦеныОпт.НайтиПоНаименованию("Оптовая",0,0)=1 тогда
      
   //   Если глВернутьЦену(ТекущийЭлемент(), ТипЦеныОпт, ПолучитьДатуЦен(), __ТовЦена, , ) = 1 Тогда
      //   СтрокаЦены   = "Опт.:" + глФРМ(__ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница+"; ";
//      Иначе
   //      СтрокаЦены   = "Опт.: 0.00; "
//      КонецЕсли;   
//   КонецЕсли;
   
   Если ПустоеЗначение(ТовЦена) =  0 Тогда
      СтрокаЦены   = СтрокаЦены+"Осн.:" + глФРМ(ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница;
   Иначе       
      ТипЦеныОсн = СоздатьОбъект("Справочник.ТипыЦен");
      Если ТипЦеныОсн.НайтиПоНаименованию("Основная",0,0)=1 тогда
         Если глВернутьЦену(ТекущийЭлемент(), ТипЦеныОсн, ПолучитьДатуЦен(), ТовЦена, , ) = 1 Тогда
            СтрокаЦены   = СтрокаЦены+"Осн.:" + глФРМ(ТовЦена) + " " + ТовВалюта + " за " + ТовЕдиница;
         Иначе
            СтрокаЦены   = СтрокаЦены+"Осн.: 0.00; "
         КонецЕсли;
      КонецЕсли;
   КонецЕсли;
   

   //Если ПоказыватьОстатокПоФирме = 0 Тогда
      Если ПустоеЗначение(ТовОстаток) = 0 Тогда
         СтрокаОстатка = " остаток: " + глФРМКоличество(ТовОстаток) + " " + ТовЕдиница;
      Иначе   
         СтрокаОстатка = "нет в наличии";
      КонецЕсли;
   //Иначе
   //   Если (ПустоеЗначение(ТовОстаток) = 0) и (ПустоеЗначение(ТовОстатокПоФирме) = 0) Тогда
   //      СтрокаОстатка = " остаток на складе: " + глФРМКоличество(ТовОстаток) + " " + ТовЕдиница + "," +
   //                              " на фирме: "  + глФРМКоличество(ТовОстатокПоФирме)  + " " + ТовЕдиница;
   //   Иначе                     
   //      СтрокаОстатка = "нет в наличии";
   //   КонецЕсли;
   //КонецЕсли;
   
   Возврат СтрокаЦены + " - " + СтрокаОстатка;
   
КонецФункции // СформироватьИнфНадпись()

Теги:
Рейтинг@Mail.ru

Поиск