Версия для печати темы (https://pro1c.org.ua/index.php?s=aadb610c87be3aa8ce64a6357091339d&showtopic=42773)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Отбор по нескольким условиям

Автор: Lexveritas 18.12.17, 21:55

1С 8.3.10 УПП. Обычное приложение.

Имею регистр и несколько справочников. НоменклатураСлужб, ХарактеристикиНоменклатурыСлужб, СтранаПроизводительНоменклатуры.

В регистр сведений должна заисаться цена. С записью проблем не возникло.

Есть документ, в котором по событию должно вставиться цене, но этого не происходит.
Перебрал все возможные варианты.

В общем модуле:

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


В документе:
Процедура ДетальНаименованиеПриИзменении(Элемент)
    АктуальнаяДата =  Дата;
    СтрокаДеталь = ЭлементыФормы.Деталь.ТекущиеДанные;
    СтрокаДеталь.ЦенаДействующая =
        РаботаСДокументами.ПолучитьЦеныНоменклатурыСлужб(АктуальнаяДата, СтрокаДеталь.Наименование, СтрокаДеталь.Характеристика, СтрокаДеталь.СтранаПроизводстваНоменклатурыСлужб);
КонецПроцедуры


Признак индексирования для номенклатуры, Характеристик и страны установлен, и снимался, и ведущим делался и опять снимался.
Результат одинаковый:
Ошибка при вызове контекста "получить последнее"
по причине:
не допустимое значение параметра параметр 2.

В одном из документов таким же образом получаем отбор по номенклатуре, характеристике, номеру заказа. работает. В жанном случае я просидел 4 часа и не добился НИЧЕГО!

Буду признателен за любую помощь!

Автор: logist 18.12.17, 22:17

Цитата(Lexveritas @ 18.12.17, 21:55) *
не допустимое значение параметра параметр 2.

Ошибка говорит о том, что не правильно установлен отбор. Индексирование в данном случае не имеет значение. "Ведущее" вообще не из этой оперы. Названия измерений соответствуют тем что указаны в отборе? Попробуйте сделать это же через запрос.

Автор: Lexveritas 18.12.17, 22:23

logist @ Сегодня, 22:17 * ,

К великому сожалению с запросами не дружу. Вообще не понимаю как его вертеть в данном случае.
Названия измерений соответствуют.
Если в отборе закоментировать "характеристику", отбор по номенклатуре работает. Но отбор нужен малость побольше. По номенклатуре, характеристике и стране, последнее значение на актуальную дату.

Буду рад за подсказку куда копать!

Автор: logist 19.12.17, 1:07

Давайте скрин вкладки "Данные" из свойств регистра, скрин отладчика где видно чем заполнена структура "Отбор".

Цитата(Lexveritas @ 18.12.17, 22:23) *
К великому сожалению с запросами не дружу.

Дружитесь, иначе дальше примитивных задач у вас ничего не получится.

Автор: Lexveritas 19.12.17, 14:51

logist @ Сегодня, 1:07 * ,






То же самое работает в другом документе. Тянет из регистра цены, по трем отборам номенклатура, характеристика, заказ.
Что здесь не так понять не могу.

Автор: Alex78 19.12.17, 15:47

Если не ошибаюсь, метод ПолучитьПоследнее() возвращает в виде структуры ресурсы одной записи регистра и в отборе должны быть указаны значения всех измерений. У Вас же указаны значения 3х измерений из 5ти.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua