Имя: Пароль:
1C
1С v8
Как заменить в хозрасчетном регистре все счета
0 1CVERYGOOD
 
29.04.14
15:27
Как можно за определенный период заменить во всех проводках счет х на счет у.
1 ДенисЧ
 
29.04.14
15:28
Получиьт наборы записей, заменить, записать, повторить
2 yfylhjkjy
 
29.04.14
15:29
обработкой
3 1CVERYGOOD
 
29.04.14
15:29
Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    Набор.Отбор.СчетДт.Установить(СтарыйСчет);
    Набор.Отбор.Дата.Установить(СтарыйСчет);
    Набор.Записывать = Истина;
    Набор.Прочитать();    

    Для Каждого Движение Из Набор Цикл
        Движение.СчетДт = НовыйСчет;
    КонецЦикла;
    Набор.Записать(Истина);
4 1CVERYGOOD
 
29.04.14
15:29
типа такого как по правильному ?
5 ДенисЧ
 
29.04.14
15:29
(3) неа... Без регистратора не обойтись
6 1CVERYGOOD
 
29.04.14
15:30
Блин это че перебирать все документы, причем разных видов ?
7 jsmith82
 
29.04.14
15:31
(6) зачем перебирать
8 ОбычныйЧеловек
 
29.04.14
15:31
(6) Запросом получаешь нужный список документов и по ним уже бежишь
9 jsmith82
 
29.04.14
15:31
работай родительским классом
тебе же методы потомков не нужны
10 jsmith82
 
29.04.14
15:32
Набор.Отбор.Регистратор.Установить(Выборка.Док);
11 Повелитель
 
29.04.14
15:34
(0) ПоискИЗаменаЗначений.epf с диска ИТС

ее чуток допилить чтобы лишние периоды убирала и вперед, везде поменяет в доках тоже
12 1CVERYGOOD
 
29.04.14
15:41
Написал такой изврат.        

        Зап = новый Запрос;
    зап.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ХозрасчетныйОборотыДтКт.Регистратор КАК Регистратор
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&датаначала, &датаокончания, Регистратор, , , , , ) КАК ХозрасчетныйОборотыДтКт
    |ГДЕ
    |    ХозрасчетныйОборотыДтКт.СчетДт В (&СчетДт) ИЛИ ХозрасчетныйОборотыДтКт.СчетКт В (&СчетКт)
    |            
    |
    |УПОРЯДОЧИТЬ ПО
    |    Регистратор";
    
    зап.Параметры.Вставить("датаначала",'20140101000000');
    зап.Параметры.Вставить("датаокончания",'20140331235959');
    зап.Параметры.Вставить("СчетДт",СтарыйСчет);
    зап.Параметры.Вставить("СчетКт",СтарыйСчет);
    рез = Зап.Выполнить().Выбрать();
    Пока рез.Следующий() ЦИКЛ
        ОбработкаПрерыванияПользователя();
        об = рез.Регистратор.ПолучитьОбъект();
        Сообщить(об.ссылка);  
        об.Движения["Хозрасчетный"].Прочитать();
        Для каждого зап  из об.Движения["Хозрасчетный"]  Цикл
            ЕСЛИ зап.СчетДт = СтарыйСчет ТОГДА
                зап.СчетДт = НовыйСчет;                    
            КОНЕЦЕСЛИ;
            ЕСЛИ зап.СчетКт = СтарыйСчет ТОГДА
                зап.СчетКт = НовыйСчет;                    
            КОНЕЦЕСЛИ;
        КОНЕЦЦИКЛА;
        об.Движения["Хозрасчетный"].Записать();       
    КОНЕЦЦИКЛА;
13 neo_matrix_123
 
29.04.14
15:51
(0) субконто у счетов x и y одинаковые? если нет - то при замене их тоже надо заполнить, а то последствия будут непредсказуемы
14 1CVERYGOOD
 
29.04.14
15:52
Да счета 1в1.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.