Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отбор          
pt_denis Подменю пользователя
сообщение 27.07.14, 16:15
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте. Мне нужно сделать так, что бы в Документе при изменении Элемента ВидЦены изменялась Цена в табличной части документа, которая берется из регистра сведений.
В общем модуле я прописал:

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


и в модуле формы документа:

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


При попытке изменение цены выдает следующее:
{ОбщийМодуль.РаботаСоСправочниками2.Модуль(3)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)
ЗначенияРесурсов = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ЭлементТМЦ,Отбор);
по причине:
Несоответствие типов (Параметр номер ""1"")

Помогите плз, начал программировать не давно.

Ardi Подменю пользователя
сообщение 27.07.14, 17:25
Сообщение #2

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

РегистрСведенийМенеджер.<Имя регистра сведений>.ПолучитьПоследнее (InformationRegisterManager.<Имя регистра сведений>.GetLast)
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)
ПолучитьПоследнее (GetLast)
Синтаксис:

ПолучитьПоследнее(<КонецПериода>, <Отбор>)
Параметры:

<КонецПериода> (необязательный)

Тип: Дата; МоментВремени; Граница.
Определяет момент времени, по который необходимо получить значения ресурсов. Может задаваться значениями типа Дата, МоментВремени или Граница. Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра.
<Отбор> (необязательный)

Тип: Структура.
Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение.
Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение.
Если параметр не указан, то отбор не используется.
Возвращаемое значение:

Тип: Структура.
Возвращает структуру, содержащую значения ресурсов.
Описание:

Получает значения ресурсов наиболее поздней записи регистра, соответствующей указанным периоду и значениям измерений регистра.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Применим только для периодических регистров сведений.
Пример:

Доллары = Справочники.Валюты.НайтиПоНаименованию("USD");
Отбор = Новый Структура;
Отбор.Вставить("Валюта", Доллары);
Курсы = РегистрыСведений.КурсыВалют;
ТекКурс = Курсы.ПолучитьПоследнее(ТекущаяДата(), Отбор);
Сообщить("Текущий курс доллара: " + ТекКурс.Курс + " руб.");


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

pt_denis Подменю пользователя
сообщение 27.07.14, 17:46
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

То есть в
ЗначенияРесурсов = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ЭлементТМЦ,Отбор);


Неправильно метод взял или элемент отбора?
Если я ставлю
ЗначенияРесурсов = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ТекущаяДата(),Отбор)

цена не изменяется.

Ardi Подменю пользователя
сообщение 27.07.14, 21:22
Сообщение #4

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Отбор тоже неправильный.
Отбор = Новый Структура;
Отбор.Вставить("ВидЦены", тутВидЦены);
Отбор.Вставить("Номенклатура", тутНоенклатура);


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

pt_denis Подменю пользователя
сообщение 27.07.14, 21:33
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Извиняюсь, я просто практикуюсь по Радченко и взял пример оттуда.

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


и в документе модуль формы так:

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


Но при попытке сменить Вид Цены, в табличной части Цена исчезает.


Ardi Подменю пользователя
сообщение 27.07.14, 21:38
Сообщение #6

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Какая конфигурация?


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Спасибо сказали: pt_denis,

pt_denis Подменю пользователя
сообщение 27.07.14, 21:42
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

1С:Предприятие 8.2, учебная версия (8.2.17.169)

Цитата
  СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками2.ВидЦены(Объект.Дата, СтрокаТабличнойЧасти.ТМЦ);


точнее вот так:

СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками2.ВидЦены(Объект.ВидЦены, СтрокаТабличнойЧасти.ТМЦ);

pt_denis Подменю пользователя
сообщение 28.07.14, 13:32
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

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


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


Проблема была в неправильной форме Отбора и записи ПолучитьПоследнее

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.04.24, 4:14
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!