Имя: Пароль:
1C
1С v8
УТ 11.5. РегистрыСведений.ТоварныеОграничения
0 sanyaka
 
02.05.23
20:25
Подскажите, программно не получается получить МинимальноеКоличествоЗапаса из РегистрыСведений.ТоварныеОграничения.

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

Код добавления регистров отрабатывает нормально.

При попытке получить регистры следующим образом:
    СтруктураОтбор = Новый Структура;
    СтруктураОтбор.Вставить("Номенклатура", Товар);
    СтруктураОтбор.Вставить("Склад", Склад);  
        СтруктураОстатков = РегистрыСведений.ТоварныеОграничения.ПолучитьПоследнее(ТекущаяДата(), СтруктураОтбор);
    
Получаю СтруктураОстатков = неопределенно. Что тут не так?
1 sanyaka
 
03.05.23
05:01
Только изучаю работу с регистрами сведений. Как правильно с ними работать?
Код записи получил из штатной обработки по работе с товарными ограничениями. Код получения быстро не получилось выдернуть из обработки, т.к кода много. Буду продолжать разбираться.

Может получение нужно делать так? Вечером попробую

МойРегистр = РегистрыСведений.МойРегистр.СоздатьМенеджерЗаписи();
МойРегистр.Измерение1 = ЗначениеИзмерения1;
................
МойРегистр.ИзмерениеN = ЗначениеИзмеренияN;
МойРегистр.Прочитать();
2 sanyaka
 
03.05.23
10:48
Никто не подскажет? Никто не работает с регистрами сведений?)
3 asady
 
03.05.23
10:57
(0) Используй запросы для получения данных.
4 OldCondom
 
03.05.23
10:59
(0) "Получаю СтруктураОстатков = неопределенно. Что тут не так?"
Если обработка типовая, то скорее всего все так. Нет данных по установленным отборам.
5 sanyaka
 
03.05.23
11:05
(4) в том то и дело данные есть. номенклатура и склад залетает в отбор, но почему-то не находит...
6 lubitelxml
 
03.05.23
11:06
Перепиши СтруктураОстатков = РегистрыСведений.ТоварныеОграничения.ПолучитьПоследнее(ТекущаяДата(), СтруктураОтбор);  на запрос, отладь его в консоле и все поймешь,
и вот это вот что такое: ПараметрыМинМакс.МаксимальноеКоличествоЗапаса    = "1";  - почему количество строковое значение присваиваешь?
7 sanyaka
 
03.05.23
11:06
(3) выборку номенклатуры делаю через запрос, потом пытаюсь данные получить через регистры. если не получится буду пытаться делать общий запрос с номенклатурой и регистрами сведений...
8 OldCondom
 
03.05.23
11:09
(5) то что она залетает, не значит, что по таким отборам данные есть. Ты их глазами видишь в регистре?
9 sanyaka
 
03.05.23
11:09
(6) спасибо. еще не отлаживал запросы в консоле, буду разбираться с этим.
По поводу почему строковое, минкол тож строковое передаю. Вроде работают штатные заказы поставщику параметры мин макс получаются... поэтому пока так оставил.
10 sanyaka
 
03.05.23
11:11
(8) Там около 5000 позиций внесены в регистр из 20000 всей номенклатуры. я в дебаге писал условие и ставил точку остановки. код не остановился. по идее данные есть и должно было попасть...
11 OldCondom
 
03.05.23
11:12
руками зайди в форму списка регистра в пользовательском варианте, поставь свои отборы и посмотри.
12 Волшебник
 
03.05.23
12:13
(7) В запросе добавь левое соединение к регистру сведений
13 sanyaka
 
03.05.23
15:56
Вообщем получилось вот так. То что закомментировано не работает.

    //СтруктураОтбор = Новый Структура;
    //СтруктураОтбор.Вставить("Номенклатура", Товар);
    //СтруктураОтбор.Вставить("Склад", Склад);  
    //СтруктураОстатков = РегистрыСведений.ТоварныеОграничения.ПолучитьПоследнее(ТекущаяДата(), СтруктураОтбор);
    рез = 0;
    мен = РегистрыСведений.ТоварныеОграничения.СоздатьМенеджерЗаписи();
    мен.Номенклатура  = Товар;
    мен.Склад = Склад;
    мен.Прочитать();
    Если мен.Выбран() тогда    
        рез = мен.МинимальноеКоличествоЗапаса;
    конецесли;
14 sanyaka
 
03.05.23
16:01
(12) Спасибо. Еще только учусь в 8ке запросы делать. Сейчас около минуты выполняется запрос по регистрам для каждой позиции. Обязательно переделаю на общий запрос, думаю в разы ускорится.
Ошибка? Это не ошибка, это системная функция.