Имя: Пароль:
1C
1C 7.7
v7: Редактирование записей Оборотного регистра 7.7
,
0 web_profiler
 
17.07.15
13:12
Сразу прошу прощение за повторение избитой темы, но помогите разобраться с вопросом.
Есть некий оборотный регистр в 7.7, у него есть измерения: Фирма,Склад, Товар. Ресурсы: Колво, Сумма. Реквизиты: ПрихДокумент.
В регистре куча записей. И вот тут я решил добавить еще один ресурс СуммаВалютная. Добавил ресурс, курсы валют есть. Как мне, без перепроведения документов, заполнить значениями ресурс СуммаВалютная?
1 OnCheck
 
17.07.15
13:12
ни как
2 web_profiler
 
17.07.15
13:14
а мож создать рядышком документ корректировка регистра и туда продублировать все записи с моим пересчитанным ресурсом СуммаВалютная, а ресурс Сумма не заполнять?
3 OnCheck
 
17.07.15
13:14
а куда деть движения самих документов?
4 web_profiler
 
17.07.15
13:14
остаются
5 web_profiler
 
17.07.15
13:15
там валютной суммы просто не будет
6 web_profiler
 
17.07.15
13:15
а валютная сумма будет в доке "Корректировка регистров" по аналогии свертки базы
7 OnCheck
 
17.07.15
13:15
почти ок но по регистратору не грпппируются
8 web_profiler
 
17.07.15
13:17
а мне походу и не надо, так как необходимы валютные суммы для отчета, который выводится следующим запросом

    Если Дата2 >= ПолучитьДатуТА() Тогда
        ТекстЗапроса = "
            |Период с Дата1;";
    Иначе
        ТекстЗапроса = "
            |Период с Дата1 по Дата2;";
    КонецЕсли;
    
    ТекстЗапроса = ТекстЗапроса +
        "Фирма                     = Регистр.Обороты.Фирма;
        |ВидДеятельности        = Регистр.Обороты.ВидДеятельности;
        |Склад                    = Регистр.Обороты.ДопИзмерение1;
        |РасходСум                 = Регистр.Обороты.РасходСум;
        |Доход                     = Регистр.Обороты.Доход;
        |РасходСумВал            = Регистр.Обороты.РасходСумВал;
        |ДоходВал                = Регистр.Обороты.ДоходВал;
        |Функция РасходСумСумма = Сумма(РасходСум);
        |Функция ДоходСумма     = Сумма(Доход);
        |Функция РасходСумСуммаВал = Сумма(РасходСумВал);
        |Функция ДоходСуммаВал       = Сумма(ДоходВал);
        |Группировка ВидДеятельности без групп;
        |Группировка Склад без групп;
        |Условие (Фирма = ВыбФирма);
        |Условие (ВидДеятельности в СписВидД);  
        |";
9 web_profiler
 
17.07.15
13:18
мне надо подкорректировать существующие записи а при проведении новых доков - все будет по правильному по регистру писаться
10 OnCheck
 
17.07.15
13:19
существующие записи по любому не будут редактированы, создаются новые. Но в рамках поставленной задачи проблем не вижу.
11 web_profiler
 
17.07.15
13:22
Т.е. я правильно мыслю, что мне нужна полная копия каждой записи, но с единственным отличием: Сумма = 0, СуммаВалютная = Сумма * курс/кратность
12 web_profiler
 
17.07.15
13:22
правильно я понял?
13 OnCheck
 
17.07.15
13:22
верно, чтобы группировались
14 web_profiler
 
17.07.15
13:22
а в таком случае колво не задвоится ли по регистру?
15 OnCheck
 
17.07.15
13:23
конечно количество = 0 для новых строк если это ресурс
16 web_profiler
 
17.07.15
13:24
т.е. все ненужные мне ресурсы = 0
17 OnCheck
 
17.07.15
13:26
Насколько помню в 77 есть ресурсы, измерения и реквизиты, поправь если вру, так вот Измерения должны совпадать 1 в 1, ресурсы = 0 кроме СуммаВалютная, реквизиты - все равно.
18 web_profiler
 
17.07.15
13:26
ага, все верно, спасибо
19 OnCheck
 
17.07.15
13:26
ты ж вроде сам все понимаешь, вот и подумай что будет при группировке.
20 web_profiler
 
17.07.15
13:27
понимаю, волшебный пинок жду
21 trdm
 
17.07.15
13:56
SQL база? Если да - прямым запросом пройдись и напихай.
У меня время от времени такое морочиво начинанется.
Но с регистрами надо выморачиваться.
+ обработка пересчета итогов нужна на прямых запросах.
22 web_profiler
 
17.07.15
16:13
База sql. я на sql запросы еще не писал. как получить записи регистра прямым запросом и заполнить ресурс СуммаВалютная = Сумма * курс/кратность?

Вот мой запрос получения записей в 7.7
        "//{{ЗАПРОС(Сформировать)
        |Период с ДатаН по ДатаК;
        |Фирма                     = Регистр.Обороты.Фирма;
        |Товар                     = Регистр.Обороты.Товар;
        |Статус                 = Регистр.Обороты.Статус;
        |Покупатель                = Регистр.Обороты.Покупатель;
        |Поставщик                = Регистр.Обороты.Поставщик;
        |ДопИзмерение1            = Регистр.Обороты.ДопИзмерение1;
        |ДопИзмерение2            = Регистр.Обороты.ДопИзмерение2;
        |ВидДеятельности        = Регистр.Обороты.ВидДеятельности;
        |ПриходСум                 = Регистр.Обороты.ПриходСум;
        |РасходСум                 = Регистр.Обороты.РасходСум;
        |Доход                     = Регистр.Обороты.Доход;
        |ТекущийДокумент         = Регистр.Обороты.ТекущийДокумент;
        |Функция ПриходСумСумма = Сумма(ПриходСум);
        |Функция РасходСумСумма = Сумма(РасходСум);
        |Функция ДоходСумма = Сумма(Доход);
        |Группировка ТекущийДокумент без групп;
        |Группировка Фирма без групп;
        |Группировка Товар без групп;
        |Группировка Статус без групп;
        |Группировка Покупатель без групп;
        |Группировка Поставщик без групп;
        |Группировка ДопИзмерение1 без групп;
        |Группировка ДопИзмерение2 без групп;
        |Группировка ВидДеятельности без групп;
        |";
23 trdm
 
17.07.15
17:30
(22) > как получить записи регистра прямым запросом и заполнить ресурс СуммаВалютная = Сумма * курс/кратность?
Используй 1С++
    вРекордСет = СоздатьОбъект("ODBCRecordset");
    //вРекордСет.УстановитьТекстовыйПараметр("ВыбФирма",ВыбФирма);
    //вРекордСет.УложитьСписокОбъектов(ВыбТовар,"#ВыбТовар");
    ТекстЗапроса = "
    |-- ВыбТовар=Справочник.Номенклатура
    |-- ВыбЧето=Перечисление.Булево.Да
    |-- ВыбЧето=Дата
    |-- НачДата=ДатаШаблон(ПолучитьДатуТА()-2*365)
    |-- КонДата=ДатаШаблон(ПолучитьДатуТА())
    |SELECT TOP 50
    |    *
    |FROM
    |    $Регистр.НекийРегистр as регПТ(NOLOCK)
    |WHERE
    |    НекиеТвоиУсловия
    |";
    вТаблаЗнач = СоздатьОбъект("ТаблицаЗначений");
    глОбработатьЗапросНаМакроПараметры(ТекстЗапроса, вРекордСет);
    Попытка
        вТаблаЗнач = вРекордСет.ВыполнитьИнструкцию(ТекстЗапроса);
        глПечатьТаблицыЗначений(вТаблаЗнач); //глПросмотрОбъекта(вТаблаЗнач);
        //глПросмотрОбъекта(ТекстЗапроса);
    Исключение
        Сообщить(ОписаниеОшибки()+"[201507171727]");
        вТаблаЗнач = СоздатьОбъект("ТаблицаЗначений");
    КонецПопытки;
    вТаблаЗнач.ВыбратьСтроки();
    Пока вТаблаЗнач.ПолучитьСтроку() = 1 Цикл
        
    КонецЦикла;