Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
25 Мар 2017, 00:54
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Нужна помощь!!!  (Прочитано 1832 раз)

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

Оффлайн Maximoshka

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-12-12
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте, я являюсь студентом. Изучаю 1С. Может быть я чего-то не понимаю, поэтому мои задачи могут быть немножко не логичными, как и принципы их решения.
Имеется Магазин со складом. При помощи документа  "ТоварнаяНакладная" заносится информация о товарах. Такие свойства как "Цена" заносится в регистр накопления "РегистрТоваров" из табличной части документа .
При продаже товара необходимо что бы в табличной части документа "ПродажаТовара" бралась информация "Наименование", а в этой же строке из регистра накопления автоматически указывалась "Цена".
Я подумал, что можно сделать это через запрос, И в модуле формы документа  "ПродажаТовара" я прописал следующее:


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


Ошибок не выдавалось но Цена не добавляется.

Помогите пожалуйста.

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>


Оффлайн БезПонтов

  • *
  • Сообщений: 26
  • РЕПУТАЦИЯ: 2
  • КПД: 8%
  • Регистрация: 2011-06-27
  • Сайт: 
  • Профессия: Программист 1С
Re: Нужна помощь!!!
« Ответ #1: 12 Дек 2013, 21:03 »
Записывать цену в регистр накопления весьма и весьма не логично. Для этого есть регистр сведений. Если же цена в регистре накопления и занесен как Измерение, тогда нужно кроме позиционирования на товаре (кстати, по наименованию искать не разумно, ибо может быть несколько товаров с одним наименованием, но разным артикулом), позиционироваться на цене) т.е. на том, что ищем :dfbsdfbsdf:, если же Цена указана как Ресурс, тогда цена вычисляется как Сумма/Количество.
В общем виде
   Текст="ВЫБРАТЬ
         |   ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток / ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК Цена
         |ИЗ
         |   РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты КАК ПартииТоваровНаСкладахОстаткиИОбороты
         |ГДЕ
         |   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = &Номенклатура";
   Запрос.УстановитьПараметр("Номенклатура", Элементы.Товары.ТекущиеДанные.Товар);

Результат=Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
    Элементы.Товары.ТекущиеДанные.Цена=Выборка.Цена;
КонецЕсли;

Ну как-то так.
Ответ на вопрос - бесплатно!
Ответ на дурацкий вопрос - 5$
Ответ на дурацкий вопрос с обдумыванием - 100$

Оффлайн Maximoshka

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-12-12
  • Сайт: 
  • Профессия: Ученик 1С
Re: Нужна помощь!!!
« Ответ #2: 12 Дек 2013, 21:25 »
Я переделал ваш код под себя, ошибок не выдаёт, но всёрано цену в табличную часть документа не устанавливает. Прошу прощения я не исключаю того, что я сделал что-то не так.
Я всего лишь 3 дня назад начал изучать 1С.
Вот мой код:

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

   КонецПроцедуры

Добавлено: 12 Дек 2013, 21:27

Эта строчка лишняя:
 Элементы.Товары.ТекущиеДанные.Сумма = Элементы.Товары.ТекущиеДанные.Цена * Элементы.Товары.ТекущиеДанные.Количество;

Оффлайн БезПонтов

  • *
  • Сообщений: 26
  • РЕПУТАЦИЯ: 2
  • КПД: 8%
  • Регистрация: 2011-06-27
  • Сайт: 
  • Профессия: Программист 1С
Re: Нужна помощь!!!
« Ответ #3: 12 Дек 2013, 21:43 »

   Запрос.УстановитьПараметр("Наименование.Товары.ТекущиеДанные.Товар");

   Запрос.УстановитьПараметр("Наименование",Элементы.Товары.ТекущиеДанные.Товар");

Добавлено: 12 Дек 2013, 21:45

Повторюсь, использовать наименование не разумно!
Как выглядит регистр-то? Это какая-то конфа 1С или полностью самописная?
Ответ на вопрос - бесплатно!
Ответ на дурацкий вопрос - 5$
Ответ на дурацкий вопрос с обдумыванием - 100$

Оффлайн Maximoshka

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-12-12
  • Сайт: 
  • Профессия: Ученик 1С
Re: Нужна помощь!!!
« Ответ #4: 13 Дек 2013, 15:46 »
Повторюсь, использовать наименование не разумно!
Как выглядит регистр-то? Это какая-то конфа 1С или полностью самописная?

Конфигурацию создавал я сам с нуля. Табличная часть документа "ПродажаТоавара" состоит из реквизитов: Наименование, Количество, Цена, Сумма. Регистр "РегистрТоваров" имеет изменение "Товары" которое берётся из "Наименования" и ресурсы Количество, Цена, Сумма, которые подвязаны к табличной части документа, к ресурсам с таким же названием.

Я поправил код так, как вы предложили, ошибок нет, но всё равно ничего не происходит. Код выглядит так:



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

   КонецПроцедуры

Оффлайн БезПонтов

  • *
  • Сообщений: 26
  • РЕПУТАЦИЯ: 2
  • КПД: 8%
  • Регистрация: 2011-06-27
  • Сайт: 
  • Профессия: Программист 1С
Re: Нужна помощь!!!
« Ответ #5: 13 Дек 2013, 16:52 »
Регистр измерение Наименование или Товар?

Можно попробовать так:

Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("В запрос ничего не попало!");
КонецЕсли;

Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить(Результат.Цена);
КонецЦикла;

Так хоть будет понятно очепятка
Добавлено: 13 Дек 2013, 16:56

Кстати, Цену пихать в регистр накопления не имеет ваще смысла ибо Регистр НАКАПЛИВАЕТ данные. И Цену можно выдрать только запросом за ПЕРИОД, что не нужно исходя из задачи.
Ещё момент, цена на товар с течением времени может меняться и полученная цена из регистра накопления будет средней по больнице.
Типа
01.12.13 Товар1 поступил 1 шт по 12 руб.
02.12.13 Товар1 поступил за 13 руб.

Цена из запроса получится 12,50 руб
Ответ на вопрос - бесплатно!
Ответ на дурацкий вопрос - 5$
Ответ на дурацкий вопрос с обдумыванием - 100$

Оффлайн Maximoshka

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-12-12
  • Сайт: 
  • Профессия: Ученик 1С
Re: Нужна помощь!!!
« Ответ #6: 09 Фев 2016, 13:39 »
Регистр измерение Наименование или Товар?

Можно попробовать так:

Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("В запрос ничего не попало!");
КонецЕсли;

Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить(Результат.Цена);
КонецЦикла;

Так хоть будет понятно очепятка
Добавлено: 13 Дек 2013, 16:56

Кстати, Цену пихать в регистр накопления не имеет ваще смысла ибо Регистр НАКАПЛИВАЕТ данные. И Цену можно выдрать только запросом за ПЕРИОД, что не нужно исходя из задачи.
Ещё момент, цена на товар с течением времени может меняться и полученная цена из регистра накопления будет средней по больнице.
Типа
01.12.13 Товар1 поступил 1 шт по 12 руб.
02.12.13 Товар1 поступил за 13 руб.

Цена из запроса получится 12,50 руб
Спасибо)


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
144 Сообщений
alex0402
113 Сообщений
Norfolk
51 Сообщений
LexaK
47 Сообщений
MuI_I_Ika MuI_I_Ika
37 Сообщений
друган
21 Сообщений
AsadRoman
20 Сообщений
alexandr_ll
19 Сообщений
Константин5825
18 Сообщений
MrLvovsky MrLvovsky
16 Сообщений

* Кто онлайн

  • Точка Гостей: 216
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal