Имя: Пароль:
1C
1C 7.7
v7: Не устанавливается фильтр по партиям в регистре Остатки
0 vadim777
 
10.08.16
20:48
Регистр Остатки:
Измерения:
-Склад
-Номенклатура
-Партия (тип Справочник.Партии)
-Размер
-ЦенаПродажи

Справочник Партии имеет реквизит Док (Документ прихода).
Фрагмент:

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

В отладчике смотрел - партия находится. Но фильтр не устанавливается, в выборке ничего нет.
ПС: у реквизита Док установлены признаки Сортировка и Отбор по реквизиту на вкладке Дополнительно, если что.
1 Злопчинский
 
10.08.16
20:53
Автор - удак, креатив не в тему.
копрокод детектед

Рез = сПартии.НайтиПоРеквизиту("Док", ВыбПриемныйАкт, 1);

где однозначное опредеоение того что ОБЯЗАТЕЛЬНО НАЙДЕН?
2 Злопчинский
 
10.08.16
20:57
Сильно сомневаюсь, что установитьзначениефильтра применимо к выборке
3 vadim777
 
10.08.16
21:02
(1) В отладчике смотрел - элемент справочника действительно находится.
(2) Почему?
4 Злопчинский
 
10.08.16
21:09
(3) еще раз - ты в отладчике смотрел ДЛЯ ВСЕХ ВОХМОЖНЫХ ВыбПриемныйАкт - ?
если находится для 1, 2. 3..10 - от этого копрокод не перестает быть копрокодом.
5 Злопчинский
 
10.08.16
21:10
(3) По кочану может быть.
СП на этот счет краток.
посмотри ЖКК.
6 vadim777
 
11.08.16
08:09
(5) Спасибо. Сделал что нужно запросом:
Процедура Сформировать()
    Запрос = СоздатьОбъект("Запрос");
    ДатаС = ВыбПриемныйАкт.ДатаДок;
    ТекстЗапр = "
    |Без Итогов;
    |Период с ДатаС;
    |Скл = Регистр.Остатки.Склад;
    |Тов = Регистр.Остатки.Номенклатура;
    |Пар = Регистр.Остатки.Партия;
    |ПДО = Регистр.Остатки.Партия.Док;
    |Раз = Регистр.Остатки.Размер;
    |Цен = Регистр.Остатки.ЦенаПродажи;
    |Кол = Регистр.Остатки.Остаток;
    |Док = Регистр.Остатки.ТекущийДокумент;
    |Функция Нач=НачОст(Кол);
    |Функция При=Приход(Кол);
    |Функция Рас=Расход(Кол);
    |Функция Кон=КонОст(Кол);
    |Группировка Тов Без Групп;
    |Условие (ПДО=ВыбПриемныйАкт);
    |"; //!
    
    Если Запрос.Выполнить(ТекстЗапр)=0 Тогда
        Сообщить("Запрос не выполнился!");
        Возврат;
    КонецЕсли;
    Таб=СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(Таб,1,1);
    Если Таб.КоличествоСтрок()=0 Тогда
        Сообщить("Ничего не найдено!");
        Возврат;
    КонецЕсли;
    Состояние("Сортировка таблицы движений");
    Таб.Сортировать("Скл,Тов,Пар,ПДО,Цен,Кол,Док",1);
    Состояние("Вывод таблицы движений");
    ВывестиТЗ(Таб, "Движения регистра Остатки");
КонецПроцедуры
Вот только непонятно, почему "Док" пустой?
7 Злопчинский
 
11.08.16
08:12
Сортировать по ПДО - смысла нет, он все равно в выборке - один...
8 Злопчинский
 
11.08.16
08:14
Потому что начост и коност по текущему документу - смысла не имеют.
док - это регистратор движения, то есть оборота
9 Злопчинский
 
11.08.16
08:15
Закомментарь функции НачОст и КонОст - будет тебе док
10 vadim777
 
11.08.16
08:37
(9) Получилось:
Тов    При    Рас    Скл    Пар    ПДО    Раз    Цен    Кол    Док
Товар1    12    2    Склад    ПА4108 (20.07.16)    ПА 4108    98р    14    2    НК 77412
Товар2    10    0    Склад    ПА4108 (20.07.16)    ПА 4108         14    10    ПА 4108

ПС: цель телодвижений  - отчет типа движений партии. Как партия распродается в разрезах товаров, расходных документов.
11 Масянька
 
11.08.16
08:46
А что за конфа?
12 vadim777
 
11.08.16
08:59
(11) Самописная, не мною.
13 vadim777
 
11.08.16
08:59
(11) Всего один регистр - Остатки.
14 Масянька
 
11.08.16
09:02
(13) Ужас...
Допили регистр партий :)
15 Это_mike
 
11.08.16
09:14
(14) закон соответсвия...
16 vadim777
 
11.08.16
09:20
(14) И так уже процентов 30 переделал, дальше улучшать ее - безперспективно. Будешь смеяться, ее фишки:
- при проведении документов движения записываются не только для товара, но и для его родителя. Чтобы в справочнике Номенклатура оперативно видеть остатки по группам.
- штрих-код генерируется из кода партии и цены продажи. Хозяину магазинчика приходится постоянно переклеивать этикетки на товарах. А тут встал вопрос о увеличении всех цен в 2р.
17 Масянька
 
11.08.16
09:22
(16) "Специфика", однако...
Может лучше ТиС купить?
18 Это_mike
 
11.08.16
13:13
(16) 1.ну и пусть пишутся как пишутся, сделай "остатки по группам" прямым запросам, и забей на записи
2. сделай префикс для товара, и замени на "товар+цену" (что будет правильнее). Или вообще сделай шк только на товар, раз уж у тебя такой учет. Тем более, если "встал вопрос об увеличении цен" - этикетки-то  один хрен переклеивать.
Закон Брукера: Даже маленькая практика стоит большой теории.