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

Автор Тема: Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.  (Прочитано 9388 раз)

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

Оффлайн Елена6666666666

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-10-21
  • Сайт: 
  • Профессия: Ученик 1С
Помогите пожалуйста решить задачу! У меня ничего не получается. Больше, чем приведенный код, я ничего не могу придумать. А код не рабочий - ругается на Объект.Цена.  :dfbsdfbsdf:
&НаКлиенте
 Процедура ТоварОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Объект.Цена = ЦенаНаСервере(ВыбранноеЗначение);
 КонецПроцедуры
 
  &НаСервере
 Функция ЦенаНаСервере(Значение)
     
     Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаНоменклатуры
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        |ГДЕ
        |    ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура";

        Запрос.УстановитьПараметр("Номенклатура", Значение);
        РезультатЗапроса = Запрос.Выполнить();
       
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

    КонецЦикла;
             
 КонецФункции // ()

И ещё ругается на неопределённую переменную Номенклатура. Я новичок. Пыталась по всякому, это решение показалось самым нормальным. Но не работает оно...


Оффлайн Yura063

  • *****
  • Сообщений: 1045
  • РЕПУТАЦИЯ: 136
  • КПД: 13%
  • Регистрация: 2010-11-15
  • Сайт: yuis.ru
  • Профессия: Программист 1С
Помогли, отблагодари!

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
1. Событие следует использовать ПриИзменении(). Это у колонки Товар
2. В обработчике (см. п.1) надо сперва получить ТекущуюСтроку:
    СтрокаТЧ = Элементы.Товары.ТекущиеДанные;

3. СтрокаТЧ.Цена = ПолучитьЦенуНаСервере(СтрокаТЧ.Товар);
4. Скорее всего надо передать еще и дату...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Елена6666666666

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-10-21
  • Сайт: 
  • Профессия: Ученик 1С
1. Событие следует использовать ПриИзменении(). Это у колонки Товар
2. В обработчике (см. п.1) надо сперва получить ТекущуюСтроку:
    СтрокаТЧ = Элементы.Товары.ТекущиеДанные;

3. СтрокаТЧ.Цена = ПолучитьЦенуНаСервере(СтрокаТЧ.Товар);
4. Скорее всего надо передать еще и дату...

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

 я ничего не могу придумать!
И ещё - а как передать дату? Я новичек - всего 4-й день учусь и "плаваю" по полной.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
а Номенклатуру кто будет в функцию передавать? (и дату!)
а то вы первую попавшуюся цену получаете...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Процедура НоменклатураПриИзменении(Элемент)
   Ст=Элементы.Товары.ТекущиеДанные;
   Ст.Цена=ПолучитьЦенуНоменклатуры(Ст.Товар, Дата); //Дата - реквизит документа
   //КоличествоПриИзменении(Элемент);
КонецПроцедуры

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

Оффлайн Елена6666666666

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-10-21
  • Сайт: 
  • Профессия: Ученик 1С
а Номенклатуру кто будет в функцию передавать? (и дату!)
а то вы первую попавшуюся цену получаете...

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

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Я новичек - всего 4-й день учусь и "плаваю" по полной.

Все когда то начинали.
Берете Радченко "Практическое пособие разработчика" и по нему учитесь, делаете все по тексту и будет вам счастье...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Елена6666666666

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-10-21
  • Сайт: 
  • Профессия: Ученик 1С
Я новичек - всего 4-й день учусь и "плаваю" по полной.

Все когда то начинали.
Берете Радченко "Практическое пособие разработчика" и по нему учитесь, делаете все по тексту и будет вам счастье...
Я радченко посмотрела - там задача не совсем так стоит. Мне же надо с помощью табличной модели сделать. А как у Радченко - я сделала - это не то для меня.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Запросы думаю и в Радченко применяются. Просто возможно не с самого начала...
Правильнее начинать от простого к сложному...
А вы сразу прыгаете куда то в середину и удивляетесь что плаваете...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.


Теги:
 

Как программно открыть документ программно

Автор СерьезныйЧеловекРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 19085
Последний ответ 10 Ноя 2010, 14:08
от Lexius
Что быстрее: Загрузить табличную часть в запрос и там добавить колонки, или пробежаться циклом по ТЧ и добавить значения в колонки

Автор ZeedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 991
Последний ответ 11 Июл 2016, 09:00
от vitasw
Убрать документ из обмена. Правила обмена.

Автор bestnameРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 438
Последний ответ 10 Май 2017, 15:18
от bestname
1C:ERP 2.2 Документ Этап производства. Дата производства.

Автор Pavel_0573Раздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 549
Последний ответ 31 Май 2017, 16:59
от Pavel_0573
Отличие проводки по регистру сведений от проводки по регистру накопления?

Автор DirecTwiXРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4858
Последний ответ 18 Апр 2012, 02:19
от Dethmontt

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

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

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


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

* Реклама

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

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
135 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
63 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal