Имя: Пароль:
1C
1С v8
Движение в регистре сведений подчиненному регистратору
0 LivingStar
 
09.10.13
11:10
Нужно сделать движения по регистру сведений (периодичность в пределах квартала, подчиненный регистратору).

Движения нужно прописывать в ручную, конструктора для этого нет?

Если периодичность в пределах квартала, то в выборках можно будет получать свои значения номенклатуры по этому регистру, в зависимости от того попадают ли они в тот или иной квартал? Пересекаться они не будут?
1 LivingStar
 
09.10.13
11:52
почему может не записывать данные в ергистр сведений?

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    //
    НаборЗаписей       = РегистрыСведений.ФокусныйАссортимент.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
    НоваяЗапись        = НаборЗаписей.Добавить();
    НоваяЗапись.Период = Ссылка.Дата;
    Для Каждого ТекСтрока Из УстанавливаемыйФокусныйАссортимент Цикл
        НоваяЗапись              = Движения.ФокусныйАссортимент.Добавить();
        НоваяЗапись.Период       = Ссылка.Дата;
        НоваяЗапись.Номенклатура = ТекСтрока.Номенклатура;
        НоваяЗапись.ФА              = Истина;
    КонецЦикла;
    НаборЗаписей.Записать();       
    //
КонецПроцедуры
2 andreymongol82
 
09.10.13
11:53
(1) НоваяЗапись.Регистратор = Ссылка;
Кто будет делать?
3 andreymongol82
 
09.10.13
11:54
(1) И что такое НаборЗаписей в " НаборЗаписей.Записать(); " - он у тебя не определен
4 andreymongol82
 
09.10.13
11:55
(3) Блин, не заметил "НаборЗаписей       = РегистрыСведений.ФокусныйАссортимент.СоздатьНаборЗаписей();"
5 Шапокляк
 
09.10.13
11:59
НаборЗаписей       = РегистрыСведений.ФокусныйАссортимент.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
    НоваяЗапись        = НаборЗаписей.Добавить();
    НоваяЗапись.Период = Ссылка.Дата;
а это зачем, если документ является регистратором?
6 andreymongol82
 
09.10.13
12:01
(5) "На всякий случай у меня проездной" :)
(0) Используй конструктор движений и посмотри как правильно.
7 LivingStar
 
09.10.13
12:09
вот так делает движения

// --------------------------------------------------------------------------------------------------------------------------------------------
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    //
    НаборЗаписей       = РегистрыСведений.ФокусныйАссортимент.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
    НоваяЗапись        = НаборЗаписей.Добавить();
    Для Каждого ТекСтрока Из УстанавливаемыйФокусныйАссортимент Цикл
        НоваяЗапись.Регистратор  = Ссылка;        
        НоваяЗапись.Период       = Ссылка.Дата;        
        НоваяЗапись.Номенклатура = ТекСтрока.Номенклатура;
        НоваяЗапись.ФА             = Истина;
    КонецЦикла;
    НаборЗаписей.Записать();       
    //
КонецПроцедуры
// --------------------------------------------------------------------------------------------------------------------------------------------
8 LivingStar
 
09.10.13
12:12
Вопрос следующий. К примеру я установил документом признак фокусного ассортимента элементу номенклатуры в 1 квартале 2013 года. Она и по сей день активная!!! Следующими документами нужно менять у таких элементов признак, если они уже не являются фокусным ассортиментом?
9 LivingStar
 
09.10.13
12:13
(5) В смысле

НоваяЗапись.Период = Ссылка.Дата;

вот это не нужно?!! Убрать?
10 Enders
 
09.10.13
12:13
Странно, а НоваяЗапись        = НаборЗаписей.Добавить();
не должно быть в цикле?
(8) зачем менять?) построить правильно запрос к регистру и ненадо ничего менять)
11 andreymongol82
 
09.10.13
12:15
(7) Странной у меня конструктор совсем по другому написал

Движения.ПринадлежностьСценариевКонтроля.Записывать = Истина;
    Движения.ПринадлежностьСценариевКонтроля.Очистить();
    Для Каждого ТекСтрокаЗначенияНастроекСтатейОборотов Из ЗначенияНастроекСтатейОборотов Цикл
        Движение = Движения.ПринадлежностьСценариевКонтроля.Добавить();
        Движение.СтатьяОборотов = ТекСтрокаЗначенияНастроекСтатейОборотов.СТатьяОборотов;
        Движение.Сценарий = ТекСтрокаЗначенияНастроекСтатейОборотов.Сценарий;


    КонецЦикла;


У тебя
НоваяЗапись        = НаборЗаписей.Добавить(); почему не в цикле?
12 LivingStar
 
09.10.13
12:15
(10) Исправлю!!! Понял! Тоесть дело в запросе, правильно построенный запрос должен выбирать правильные данные!!!
13 LivingStar
 
09.10.13
12:16
(11) конструктор херню пишет!!!
14 andreymongol82
 
09.10.13
12:17
(12) Отличный вывод. Как только никто об этом не догадался? (13) Конструктор пишет по нормальному. Это кто-то не может даже конструктором правильно воспользоваться
15 LivingStar
 
09.10.13
12:33
(14) Наверное я не могу им воспользоваться, совсем другие инструкции, нет движений по регистратору и тп...

(14) Догадался так как мне уже это подсказывали добрые люди. Давно эту тему мусолю!!!!
16 LivingStar
 
09.10.13
12:39
(10) Так а смотрите, в 1 квартале установил фокусным ассортиментом одну номенклатуру.

Запрос с выборкой по первому кварталу её показывает!!!!

в третьем квартале она не является фокусным ассортиментом по факту. Но а запрос по третьему квартолу её выбирает!!! Как с этим быть не пойму???
17 LivingStar
 
09.10.13
12:41
(16+) Веть она и в третьем квартале будет являться фокусным ассортиментом???
18 LivingStar
 
09.10.13
12:42
Я думал что то бы сменить признак фокусного ассортимента у номенклатуры нужно её устанавливать в ложь документом устанавливающем фокусный ассортимент на следующий квартал. Или я чего то не понимаю???
19 Гефест
 
09.10.13
12:44
Что бы номенклатура не была вокусным элементом, ее нужно вывести из фокуса. Что бы это ни значило
20 LivingStar
 
09.10.13
12:49
(19) Ну вот я и говорю, что есть список фокусного ассортимента. Номенклатура в нем как может повторяться так и быть уникальна. И если в одном квартале она была фокусным ассортиментом, а в другом им не является, то нужно учитывать в документе отмену фокусного ассортимента. Я правильно понимаю? То есть установку номенклатуре фокусного ассортимента в ложь, если она им не является в определенном квартале.
21 LivingStar
 
09.10.13
12:54
Я делал документу 2 табличные части "УстанавливаемыйФокусныйАссортимент" и "ОтменяемыйФокусныйАссортимент". В Тч "ОтменяемыйФокусныйАссортимент" я помещал номенклатуру которая не является фокусным ассортиментом в текущем квартале, но была им в предыдущем. Для того что бы устанавливать её в ложь. Правильное же решение?
22 Enders
 
09.10.13
13:03
(16)Запрос в студию) заодно и структуру регистра) измерения, ресурсы)
23 Enders
 
09.10.13
13:05
Можно отобрать срез последних на дату запроса.
После чего отобрать только те записи у которых период больше чем НАчалоПериода(ДатаЗапроса,Квартал). Всё
Получите только ассортимент указаного квартала, до даты на которую формируете отчет.
Если хотите посмотреть весь квартал, а устанавливать любую дату квартала, то в срезе последних надо указать
КонецПериода(ДатаЗапроса,Квартал)
24 LivingStar
 
09.10.13
13:12
(22) Да пока нет запроса, планирую как документ оставить, в каком виде, для обновления в рабочую базу. Обновлял как то без установки ему регистратора. Там полезли разные всякие ошибки, которые не смог обойти. И решил вернуть ему регистратор.... Пока все же всей картины не увидел, что бы быть уверенным что данный алгоритм работает.
25 LivingStar
 
09.10.13
13:13
(23) За вашу формулу наложения фильтра на выборку спасибо....
26 LivingStar
 
10.10.13
05:45
С регистрами не сильно работал. Ввел 4 тестовых документа с датами 01.01.2013, 01.04.2013, 01.07.2013, 01.10.2013 Прикалоло то что с таким кодом в обработке проведения на каждый квартал в регистре оказывается введенный на этот квартал свой ассортимент. Меня все тормозило что в регистре будет всё свалено в кучу, оказывается там на каждый квартал только своё)



Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    //
    НаборЗаписей = РегистрыСведений.ФокусныйАссортимент.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
    Для Каждого ТекСтрока Из УстанавливаемыйФокусныйАссортимент Цикл
        НоваяЗапись              = НаборЗаписей.Добавить();
        НоваяЗапись.Регистратор  = Ссылка;        
        НоваяЗапись.Период       = Ссылка.Дата;        
        НоваяЗапись.Номенклатура = ТекСтрока.Номенклатура;
        НоваяЗапись.ФА             = Истина;
    КонецЦикла;
    НаборЗаписей.Записать();       
    //
КонецПроцедуры
27 Rie
 
10.10.13
05:54
(23) Если подчинён регистратору - то см. свойство Движения у объекта.
28 Rie
 
10.10.13
05:55
(26)->(25)
29 LivingStar
 
10.10.13
06:28
(27) да я подчинил его регистратору
30 LivingStar
 
10.10.13
06:28
(27)(28) мда
31 LivingStar
 
10.10.13
06:36
(23) Сделал выборку, на тестовых данных (26) с указанной вами формулой. Поставил дату 17.04.2013, отобрал и за январь и за апрель (( Думаю....


ВЫБРАТЬ
    ФокусныйАссортиментСрезПоследних.Период,
    ФокусныйАссортиментСрезПоследних.Регистратор,
    ФокусныйАссортиментСрезПоследних.Номенклатура,
    ФокусныйАссортиментСрезПоследних.ФА
ИЗ
    РегистрСведений.ФокусныйАссортимент.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаЗапроса, КВАРТАЛ), ) КАК ФокусныйАссортиментСрезПоследних
32 LivingStar
 
10.10.13
06:37
(31) как сейчас правильную выборку делать пока не соображу
33 LivingStar
 
10.10.13
06:40
НАЧАЛОПЕРИОДА(&ДатаЗапроса, КВАРТАЛ) это тоже не подходит, как бы сделат что бы от установленной даты, отбирались только записи квартала в который попадает выбранная дата, и никакие более...
34 LivingStar
 
10.10.13
06:46
ДОБАВИТЬКДАТЕ(&ДатаЗапроса, МЕСЯЦ,3)
35 LivingStar
 
10.10.13
06:49
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаЗапроса, КВАРТАЛ), МЕСЯЦ,2)
36 LivingStar
 
10.10.13
06:55
во тема

ВЫБРАТЬ
    ФокусныйАссортиментСрезПоследних.Период,
    ФокусныйАссортиментСрезПоследних.Регистратор,
    ФокусныйАссортиментСрезПоследних.Номенклатура,
    ФокусныйАссортиментСрезПоследних.ФА,
    НАЧАЛОПЕРИОДА(&ДатаЗапроса, КВАРТАЛ) КАК Поле1,
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаЗапроса, КВАРТАЛ), МЕСЯЦ, 2) КАК Поле2
ИЗ
    РегистрСведений.ФокусныйАссортимент.СрезПоследних(, ) КАК ФокусныйАссортиментСрезПоследних
ГДЕ
    ФокусныйАссортиментСрезПоследних.Период >= НАЧАЛОПЕРИОДА(&ДатаЗапроса, КВАРТАЛ)
    И ФокусныйАссортиментСрезПоследних.Период <= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаЗапроса, КВАРТАЛ), МЕСЯЦ, 2)
37 hhhh
 
10.10.13
07:30
(36) что-то вы тут бредите. Зачем вам запрос? Сами же написали, что у вас есть вторая табличная часть "ОтменяемыйФокусныйАссортимент". Вы про него и спрашиваете. Ответ на ваш вопрос: вы забыли сделать движения поОтменяемыйФокусныйАссортимент, а нам вешаете лапшу на уши.
38 LivingStar
 
10.10.13
07:37
(37) z t` elfkbk e;t
39 LivingStar
 
10.10.13
07:37
(37) я её удалил уже, так как понял что в ней нет необходимости, на сколько я понял регистр сам рулит кварталами
40 LivingStar
 
10.10.13
07:38
(37) У меня одно движение только сейчас при проведении документа (36). При отмене проведения записи в регистре сами удаляются.
41 LivingStar
 
10.10.13
07:40
(37) этот запрос видимо буду привязывать к выборкам что бы получать данные по фокусному ассортименту номенклатуры
42 hhhh
 
10.10.13
07:56
(39) ну вот и зря удалил. Как вообще корректируется ассортимент? Выходит приказ директора: удалить из ассортимента такие-то позиции. Пользователь берет его и заполняет таб часть ОтменяемыйФокусныйАссортимент. Всё.
43 LivingStar
 
10.10.13
08:29
(42) Ну а если из тч удалить? Или сделать галочки. Нужно отменить, убрали галочки и всё...
44 Enders
 
10.10.13
10:25
(42) Ну не знаю, имхо проще удалять из существующего документа.
Или добавить колонку с реквизитом типа булево.
И если она истина, то ФА=Истина, если ложь - то ложь.

По поводу запроса

ВЫБРАТЬ
    ФокусныйАссортиментСрезПоследних.Период,
    ФокусныйАссортиментСрезПоследних.Регистратор,
    ФокусныйАссортиментСрезПоследних.Номенклатура,
    ФокусныйАссортиментСрезПоследних.ФА
ИЗ
    РегистрСведений.ФокусныйАссортимент.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаЗапроса, КВАРТАЛ), ) КАК ФокусныйАссортиментСрезПоследних
ГДЕ ФокусныйАссортиментСрезПоследних.Период>=НАЧАЛОПЕРИОДА(&ДатаЗапроса, КВАРТАЛ)
И ФокусныйАссортиментСрезПоследних.ФА
45 hhhh
 
10.10.13
10:36
(44) ну, может быть. НО просто удалить не получится. Нужна колонка булевая.