Имя: Пароль:
1C
1С v8
v8: Как получить цены номенклатуры?
0 Noviy_Novichok
 
26.06.12
11:49
Помогите мне пожалуйста! Я в этом деле совсем новичок. Извините, что возможно похожие темы уже были, Но не получается у меня ни как(
Задача, в том, что мне нужно в новую таблицу занести значение цены каждой номенклатуры. Цену нужно брать из регистра Сведений.
Вот как я пытаюсь сделать:
Функция ПолучитьЦену()
   Запрос = Новый Запрос;
   ТекстЗапроса =
      "ВЫБРАТЬ
      |    ЦеныНоменклатуры.Цена КАК Цена,
      |    ЦеныНоменклатуры.Номенклатура
      |ИЗ
      |    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры";
   
   Запрос.Текст = ТекстЗапроса;
   РезультатЗапроса = Запрос.Выполнить();
   Возврат РезультатЗапроса.Выгрузить();
КонецФункции


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

КонецПроцедуры
1 mikecool
 
26.06.12
11:50
Функция ПолучитьЦену()
   Запрос = Новый Запрос;
   ТекстЗапроса =
      "ВЫБРАТЬ
      |    ЦеныНоменклатуры.Цена КАК Цена,
      |    ЦеныНоменклатуры.Номенклатура
      |ИЗ
      |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних() КАК ЦеныНоменклатуры";
   
   Запрос.Текст = ТекстЗапроса;
   РезультатЗапроса = Запрос.Выполнить();
   Возврат РезультатЗапроса.Выгрузить();
КонецФункции
фсе
2 mikecool
 
26.06.12
11:51
+1
ТабЗнач = ПолучитьЦену();
3 aleks-id
 
26.06.12
11:53
(1) ты внимательно прочитал?
>>значение цены каждой номенклатуры
уже соединение просится ;)
4 mikecool
 
26.06.12
11:57
(3) не, ну это уже автору подумать надо ))
главное - что отвожу от ахинеи, что в (0) написана ))
5 Noviy_Novichok
 
26.06.12
12:00
Спасибо Вам Огромное! Что смогли откликнуться на мою беду(
У меня в результате таблица пустая выходит. Вот как я делаю:
Функция ПолучитьЦену()
   Запрос = Новый Запрос;
   ТекстЗапроса =
      "ВЫБРАТЬ
      |    ЦеныНоменклатуры.Цена КАК Цена,
      |    ЦеныНоменклатуры.Номенклатура
      |ИЗ
      |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних() КАК ЦеныНоменклатуры";
   
   Запрос.Текст = ТекстЗапроса;
   РезультатЗапроса = Запрос.Выполнить();
   Возврат РезультатЗапроса.Выгрузить();
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   ТабЗнач = Новый ТаблицаЗначений;
   ТабЗнач.Колонки.Добавить("Цена");
        ТабЗнач.ВыбратьСтроку("");
   ТабЗнач = ПолучитьЦену();
   Строка = ТабЗнач.ВыбратьСтроку("");
КонецПроцедуры
6 Cube
 
26.06.12
12:01
(5) Делай так:

Функция ПолучитьЦену()
   Запрос = Новый Запрос;
   ТекстЗапроса =
      "ВЫБРАТЬ
      |    ЦеныНоменклатуры.Цена КАК Цена,
      |    ЦеныНоменклатуры.Номенклатура
      |ИЗ
      |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних() КАК ЦеныНоменклатуры";
   
   Запрос.Текст = ТекстЗапроса;
   РезультатЗапроса = Запрос.Выполнить();
   Возврат РезультатЗапроса.Выгрузить();
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)

   ТабЗнач = ПолучитьЦену();

КонецПроцедуры
7 pochemu
 
26.06.12
12:06
(0) Не совсем понятно что требуется. Тебе нужно получить таблицу актуальных цен на всю номенклатуру? Если да - то получим весь список номенклатуры с ценами на неё:

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

Процедура КнопкаВыполнитьНажатие(Кнопка)

   ТабЗнач = ПолучитьЦену();

КонецПроцедуры
8 Noviy_Novichok
 
26.06.12
12:06
Всё дело в том, что  в результате при нажатии на кнопку у меня должна выйти таблица, две колонки: номенклатура и цена.
Когда я использую Ваш вариант кода, у меня совсем нечего не выходит(
Если можете, подскажите пожалуйста, как мне нужно сделать, что выходил результат.
9 Noviy_Novichok
 
26.06.12
12:11
Вот, что я прописую в процедуре при нажатии кнопки:
Процедура КнопкаВыполнитьНажатие(Кнопка)
      ТабЗнач = Новый ТаблицаЗначений;
   ТабЗнач.Колонки.Добавить("Номенклатура");
    ТабЗнач.Колонки.Добавить("Цена");
        ТабЗнач.ВыбратьСтроку("");
   ТабЗнач = ПолучитьЦену();
   Строка = ТабЗнач.ВыбратьСтроку("");
 
КонецПроцедуры

В результате у меня выходит номенклатура, а цены нет(
Специалисты 1С, подскажите пожалуйста, каким образом мне вывести эту цену.
10 Liova
 
26.06.12
12:15
А ТабЗнач на форме есть?
11 Cube
 
26.06.12
12:15
А цены в регистре есть?
12 Noviy_Novichok
 
26.06.12
12:19
Да, ТабЗнач на форме есть.
Да, цены в регистре сведений есть.
13 Liova
 
26.06.12
12:21
Колонки на форме все видны?
14 Noviy_Novichok
 
26.06.12
12:22
Да, выходит две колонки номенклатура и цена.
Колонка номенклатура выходит с записями, а поле цена пустая получается(
15 Noviy_Novichok
 
26.06.12
12:26
Может ошибка в том, что в регистре Сведений, ЦЕНА записана в ресурсах?
В измерениях записана Номенклатура, а в ресурсах: Валюта, Цена

Прошу Вас, подскажите каким образом мне следовать!
16 Aleks73
 
26.06.12
12:28
Вывести КУДА ?
17 Noviy_Novichok
 
26.06.12
12:30
В таблицу значений, которая появляется при нажатии на кнопку.
18 Cube
 
26.06.12
12:36
(17) На, балуйся: http://files.mail.ru/1FTV2D
У меня работает, вот код:


Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   Запрос = Новый Запрос;
   ТекстЗапроса = "ВЫБРАТЬ
                  |    СпрНоменклатура.Наименование,
                  |    ЦеныНоменклатурыСрезПоследних.Цена
                  |ИЗ
                  |    Справочник.Номенклатура КАК СпрНоменклатура
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, Активность = ИСТИНА) КАК ЦеныНоменклатурыСрезПоследних
                  |        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка)";
   Запрос.УстановитьПараметр("Период", ТекущаяДата());
   Запрос.Текст = ТекстЗапроса;
   ТабличноеПоле1 = Запрос.Выполнить().Выгрузить();
   ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
   
КонецПроцедуры
19 Noviy_Novichok
 
26.06.12
12:40
Cube, Спасибо Вам Огромнейшее! Извините за беспокойство!
Я попробовала у себя, номенклатура выходит, а поле Цена пустое. В чём может быть у меня причина?
20 Cube
 
26.06.12
12:43
(19) В регистре нет цен.
21 Cube
 
26.06.12
12:44
(19) Ты девушка? Тогда надо пол в профиле поменять и вставить фото :)
22 Noviy_Novichok
 
26.06.12
12:46
Да, девушка) Я не видела какой пол у меня стоит (я нечего не выставляла), сейчас с этой бедой разберусь и зайду в настройки всё пропишу)
23 Noviy_Novichok
 
26.06.12
12:47
А в регистре цены есть(
24 Cube
 
26.06.12
12:48
(22) И фотку вставить не забудь, а то помогать не будем :)
25 Ткачев
 
26.06.12
12:48
(23)Фотку регистров в студию
26 Cube
 
26.06.12
12:48
(23) Давай уже скриншоты.
27 pochemu
 
26.06.12
12:55
(23) Ты загрузила внешнюю обработку которую прислали в (18)?
28 Noviy_Novichok
 
26.06.12
12:56
Пока не могу понять как прикреплять скриншоты, но я их на файлообменник прислала:http://files.mail.ru/8OPHB7
29 Noviy_Novichok
 
26.06.12
12:57
pochemu, Да, загрузила!
Номенклатура выходит, а поле Цена пустое. В чём может быть у меня причина?
30 Ткачев
 
26.06.12
12:58
А документ установка цен есть ?
31 Noviy_Novichok
 
26.06.12
13:01
Да,да, есть) Вот тут я положила скриншот http://files.mail.ru/H6RKXZ
32 pochemu
 
26.06.12
13:01
(29) Убери в запросе присланной тебе внешней обработки условие актуальности
33 Cube
 
26.06.12
13:02
(28) Так не пойдет. Скриншоты заливай на http://itmages.ru , а сюда ссылки на них выкладывай.
34 pochemu
 
26.06.12
13:02
(31)(32) Если точне то зарос должен быть такой:

   ТекстЗапроса = "ВЫБРАТЬ
                  |    СпрНоменклатура.Наименование,
                  |    ЦеныНоменклатурыСрезПоследних.Цена
                  |ИЗ
                  |    Справочник.Номенклатура КАК СпрНоменклатура
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
                  |        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка)";
35 pochemu
 
26.06.12
13:03
(33) У неё в регистре нет активности..
36 Ткачев
 
26.06.12
13:03
(31)В конфигураторе это понятно что есть, а в программе он есть ?
37 Cube
 
26.06.12
13:05
(31) В режиме ПРЕДПРИЯТИЕ зайди сюда:
Меню -> Операции -> Регистры сведений -> Цены номенклатуры и сделай нам скриншот.
38 Noviy_Novichok
 
26.06.12
13:08
Ткачев и Cube а в Предприятии этот регистр пустой оказался(
39 Noviy_Novichok
 
26.06.12
13:09
Мне так не удобно, что я отнимаю время у Вас! Но без Вас я совсем ни как(
40 pochemu
 
26.06.12
13:09
(38) =)
41 Cube
 
26.06.12
13:10
(38) А вот и ответ...
42 Cube
 
26.06.12
13:10
(39) Вставь фотку в профиль, этого будет достаточно))
43 Noviy_Novichok
 
26.06.12
13:11
pochemu,Спасибо Вам! Я сделала всё как Вы мне написали.
Но поле цена пустое. Наверно, причина в том, что в предприятии этот регистр у меня совсем пустой?
44 Cube
 
26.06.12
13:12
(43) Да, раз данных о ценах нет, то какие цифры ты хочешь получить в колонке цена? Сделай установку цен и цены появятся.
45 Noviy_Novichok
 
26.06.12
13:12
ОГРОМНОЕ СПАСИБО ВСЕМ, кто смог Уделить своё время!
Ещё раз, извиняюсь за беспокойство!
46 Ткачев
 
26.06.12
13:12
На основании 1.png сделайте документ Установка цен и регистр будет заполнен.
47 Noviy_Novichok
 
26.06.12
13:13
Я Всё теперь поняла! Спасибо Вам!!!
48 Cube
 
26.06.12
13:16
Фотку, фотку, фотку!!! :)
49 Noviy_Novichok
 
26.06.12
13:16
Cube, на счёт фото) Я не блондинка, просто всего одну неделю работаю по 1С, поэтому и задаю возможно "глупые" вопросы!
50 Cube
 
26.06.12
13:17
(49) Да ладно, программистами не рождаются. Все когда-то начинали...

P.S. Чтобы ответить нужно просто в круглых скобках написать номер сообщения, на которое отвечаешь.
51 Noviy_Novichok
 
26.06.12
13:18
Но я очень благодарна тем, кто смог откликнуться на мою просьбу! Удачи Вам и Всего Наилучшего!
52 Cube
 
26.06.12
13:20
(51) Лучшая благодарность для нас - это фото)
53 Noviy_Novichok
 
26.06.12
13:21
(50) Хорошо, теперь буду знать)
Я в настройках пол поменяла, а фото смогу только вечером загрузить)
54 Cube
 
26.06.12
13:22
(53) Загрузи фотку из контакта/одноклассников)
55 pochemu
 
26.06.12
13:35
(54) Ага
56 Noviy_Novichok
 
27.06.12
02:21
Всё, я загрузила своё фото)))