Имя: Пароль:
1C
1С v8
Бух 3.0 подмена регистратора в регистре бухгалтерии
,
0 MiniMuk
 
23.05.16
10:15
бухгалтерия 3.0.хх

    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    ОперацияБух = Документы.ОперацияБух.СоздатьДокумент();
    ОперацияБух.СпособЗаполнения = "Вручную";
    ОперацияБух.Записать();
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Хозрасчетный.Регистратор
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    НЗ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НЗ.Отбор.Регистратор.Использование = Истина;
    НЗ.Прочитать();        
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НЗ.Отбор.Регистратор.Значение = ВыборкаДетальныеЗаписи.Регистратор;
        НЗ.Отбор.Регистратор.Использование = Истина;
        НЗ.Прочитать();        
        Для Каждого Запись из НЗ Цикл
            Запись.Регистратор = ОперацияБух;    
        КонецЦикла;
        НЗ.Записать();
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

А так законно?
1 Тролль главный
 
23.05.16
10:16
не взлетит
2 vde69
 
23.05.16
10:17
в чем вопрос?
3 MiniMuk
 
23.05.16
10:18
в общем есть регламентная операция не сделанная вовремя, родился вариант сделать ее в копии заменить регистратор операцией и перетащить операцию в начало открытого периода.
Как подменить регистратор в записи?
4 MiniMuk
 
23.05.16
10:19
(1) ваше мнение понял.
(2) после   Запись.Регистратор = ОперацияБух;    
Запись.Регистратор =  неопределено, а я хочу бухоперацию
5 Nuobu
 
23.05.16
10:20
(4) ОперацияБух.Записать();

ОперацияБух.Записать();
ОперацияБух = ОперацияБух.Ссылка;
6 vde69
 
23.05.16
10:20
(3) не выйдет, дата запрета стоит не на дату документа а на "период" в регистре....

то есть Ты не сможешь изменить/добавить записи в регистр с "период" < дата закрытия
7 RomanYS
 
23.05.16
10:21
(3) подменить нельзя
Можно прочитать запросом (например) и загрузить в движения новой операции.
8 yam
 
23.05.16
10:22
Опыт показывает, что проще сделать сразу в SQL
Что-то типа UPDATE _AccumRgXXXX
SET _FldYYYYRRef = 0x00000000000000000000000000000000)
9 MiniMuk
 
23.05.16
10:22
(6) я делаю в копии в копии отменяю дату запрета, подменяю ссылку переношу операцию в открытый период. Беда в  том что надо провести 3 регламентных операции а они должны быть уникальны
10 MiniMuk
 
23.05.16
10:23
(7) Понял, спасибо. По другим регистрам вроде можно, или это не про регистратор а про новую запись без перепроведения...
11 RomanYS
 
23.05.16
10:26
(10) Регистратор нигде заменить нельзя, штатно запись идет только отбором по регистратору. По сути "новый отбор" = "новый набор записей".
12 MiniMuk
 
23.05.16
10:28
(11)
Для Каждого Запись из НЗ Цикл
НСтрока =  ОперацияБух.Движения.Хозрасчетный.Добавить();
ЗаполнитьЗначенияСвойств(НСтрока, Запись);
НСтрока.Регистратор = ОперацияБух;
КонецЦикла;

а субконто отдельно записывать?
13 RomanYS
 
23.05.16
10:31
(12) если так читать, то да субконто отдельно.
Если читать запросом, то можно разом через загрузить, но там есть нюансы с ВидамиСубконто
14 alle68
 
23.05.16
10:35
(12) Меняешь отбор у НЗ на свою операцию и просто записываешь.
15 RomanYS
 
23.05.16
10:37
+(13)
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЕСТЬNULL(БУ.ВидСубконтоДт1, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка)) КАК ВидСубконтоДт1,
    |    ЕСТЬNULL(БУ.ВидСубконтоДт2, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка)) КАК ВидСубконтоДт2,
    |    ЕСТЬNULL(БУ.ВидСубконтоДт3, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка)) КАК ВидСубконтоДт3,
    |    ЕСТЬNULL(БУ.ВидСубконтоКт1, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка)) КАК ВидСубконтоКт1,
    |    ЕСТЬNULL(БУ.ВидСубконтоКт2, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка)) КАК ВидСубконтоКт2,
    |    ЕСТЬNULL(БУ.ВидСубконтоКт3, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка)) КАК ВидСубконтоКт3,
    |    *
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , Регистратор В (&Регистраторы), , ) КАК БУ";
    
    Запрос.УстановитьПараметр("Регистраторы", Регистраторы);
    
    Результат = Запрос.Выполнить();
    
    ТвойНабор.Загрузить(Результат.Выгрузить());
    
    //это работает только в ОФ
    //Док = Документы.ОперацияБух.СоздатьДокумент();
    //Док.Движения.Хозрасчетный.Загрузить(Результат.Выгрузить());
    //Док.ПолучитьФорму().Открыть();
16 MiniMuk
 
23.05.16
10:39
(14) из справка

РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии> (AccountingRegisterRecordSet.<Имя регистра бухгалтерии>)
Отбор (Filter)
Использование: Только чтение.
17 ДенисЧ
 
23.05.16
10:42
(16) А зачем тебе отбор?
Пиши в поле записи
18 alle68
 
23.05.16
10:44
(16) Наивность...
НЗ.Отбор.Регистратор.Значение = ОперацияБух.Ссылка;
НЗ.Записать();
19 vde69
 
23.05.16
10:44
(17) регистр бухгалтерии нельзя писать по одной записи, только отбор целиком
20 ДенисЧ
 
23.05.16
10:49
(19) Прочитать набор, обойти записи, присвоить и записать?
21 MiniMuk
 
23.05.16
10:53
(15) Спасибо, не думал что так можно,  все думал как можно пременить ДвиженияССубконто
22 RomanYS
 
23.05.16
10:58
(21) нюанс в том, что без ВидСубконто субконто не загрузятся, а без ЕстьNULL получишь ошибку при загрузке
23 MiniMuk
 
23.05.16
11:00
(18) яжэ лошара невнимательная,
конечноже НЗ.Отбор.Регистратор.Значение = ОперацияБух.Ссылка;  сылку забыл
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс