[РЕШЕНО] Запись в регистр бухгалтерии

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем RuslanKhanow, 23 июн 2015.

  1. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Приветствую форумчане,появилась задача,перебрать записи в табличной части документа и поместить их в регистр бухгалтерии(Налоговый) ,процедура которую я сделал работает некорректно
    Код:
    Процедура РТ_ПоступлениеДопРасходовПриПрведенииОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
       
        ВыбранныйДокумент  = Документы.ПоступлениеДопРасходов.Выбрать();
       
        Для каждого СтрокаТЧ Из Источник.Оборудование Цикл
            Сумма = СтрокаТЧ.Сумма;       
           
            Если ВыбранныйДокумент.Следующий() тогда 
                Набор = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей();
                Набор.Отбор.Регистратор.Установить(ВыбранныйДокумент.Ссылка);
                Набор.Прочитать();
               
                Для каждого Движение из Набор Цикл
                    Движение.Сумма = Сумма;                  
                КонецЦикла;
               
            КонецЕсли;
             Набор.Записать();
        КонецЦикла;    
    КонецПроцедуры
    
    
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вы задачу полностью опишите, а то вот это я например не совсем понял
    ВыбранныйДокумент = Документы.ПоступлениеДопРасходов.Выбрать();

    Вам зачем все документы выбирать.

    Т.е вы при проведении одного какого то документа, для каждой строки ТЧ, берете перебираете все документы доп расходов и что то делаете.

    А второе. Вы в для первой строки ТЧ всю выборку прошли ВыбранныйДокумент.Следующий() , и все у вас же потом нет в циле где курсор обратно возвращается
  3. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВыбранныйДокумент  = Документы.ПоступлениеДопРасходов.Выбрать();
       
        Если ВыбранныйДокумент.Следующий() тогда 
            Набор = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей();
            Набор.Отбор.Регистратор.Установить(ВыбранныйДокумент.Ссылка);
            Набор.Прочитать();
            Для каждого СтрокаТЧ Из Источник.Оборудование Цикл
                Сумма = СтрокаТЧ.Сумма;   
               
                Для каждого Движение из Набор Цикл
                    Движение.Сумма = Сумма; 
                    Набор.Записать(); 
                КонецЦикла;
            КонецЦикла;  
    
    А как сделать счетчик по записям ,например записать 1 элемент ТЧ в Первую запись регистра и тд?
    --- Объединение сообщений, 23 июн 2015 ---
    А документ я выбираю тот который открыл
    Последнее редактирование: 23 июн 2015
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    1. Вы задачу опишите
    2. в СП написано вроде так

    Описание:

    Формирует выборку документов за определенный период. Получаемая выборка может быть упорядочена по реквизитам документа.
    Доступность:

    Сервер, толстый клиент, внешнее соединение.
    Пример:

    Выборка = Документы.РасходнаяНакладная.Выбрать(ДатаНач, ДатаКон);

    просто у документа нет метода Следующий()
  5. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    я уже реализовывал подобным способом для другого документа,у
    ВыбранныйДокумент = Тип ДокументВыборка.ПосутплениеДопРасходов и значение документа который я открыл
    Поступление доп. расходов 00000000004 от 14.05.2015 0:00:00
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну так просто у вас документов моежт там мало. Тип ДокументВыборка это не ссылка, а выборка документов. и т.к Вы не указывает период, то скорее всего это может быть не один документ
  7. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Если не верите
    --- Объединение сообщений, 23 июн 2015 ---
    Суть вопроса ,как реализовать это?

    Вложения:

  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну так почитайте в синтаксис помошнике что такое ДокументВыборка.
    На сделующем шаге у вас будет другой документ и т.д
  9. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Хорошо,сделаем так,теперь правильно?
    Код:
    Набор = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(Источник.Ссылка);
     Набор.Прочитать();
            Для каждого СтрокаТЧ Из Источник.Оборудование Цикл
                Сумма = СтрокаТЧ.Сумма;               
                Для каждого Движение из Набор Цикл
                    Движение.Сумма = Сумма; 
                    Набор.Записать(Истина); 
                КонецЦикла;
            КонецЦикла;
    
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Не знаю - Вы же мне до сих пор не написали что Вам надо сделать то

    НО ПО КОДУ ЕСТЬ ВОПРОСЫ

    Вы получили набор записей. затем для ккадой строки из ТЧ вы берете сумму и для каждой строки надора эту сумму записываете и в итоге у вас же в конце концов в наборе у всех записей сумма равная сумме последней строки ТЧ
  11. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Да,я знаю,мне надо это исправить
    Есть Документ,в документе есть табличная часть ,в табличной части есть строка сумма ,надо перебрать строки из регистраБуухгалтерии.Налоговый и присвоить им значение суммы табличной части
    --- Объединение сообщений, 23 июн 2015 ---
    до этого при проведении документа сумма распределялась ,пропорционально,надо это изменить ,вот)
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    1.Ну в ТЧ же может быть и не одна сумма раз это ТЧ.тогда что делать?
  13. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    вот и собственно суть вопроса! ,может можно как нить через счетчик?
  14. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну это вы мне должны сказать. как я вам скажу я же не знаю что именно вы хотите, судя по коду речь идет о доп расходах, доп расходы можно распределять пропорционально сумме оборудования, его количеству и т.д
    А как это уже или заказчик решает или вы
  15. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    я не хочу что бы они распределялись ,какие значения есть в ТЧ такие и в регистр занести надо,а сейчас они распределяются
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Задача мутная и решение тоже.
    В общем случае количество строк в ТЧ не обязательно будет совпадать с количеством строк в НабореЗаписей.
    В самом документе есть процедуры и функции для расчета конечной суммы, думаю, необходимо использовать их.
  17. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Вот и вся мутность
    Код:
    Набор = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей();
            Набор.Отбор.Регистратор.Установить(Источник.Ссылка);
            Набор.Прочитать();
            Элемент = 0;
            Для каждого СтрокаТЧ Из Источник.Оборудование Цикл
                Сумма = СтрокаТЧ.Сумма;               
                Набор[Элемент].Сумма = Сумма;
                Элемент  = Элемент +1;            
            КонецЦикла; 
            Набор.Записать(Истина);       
    
  18. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Почему не обязательно?
  19. TopicStarter Overlay
    RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    Хотел вопрос задать
    Код:
    Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Установить(Документ.Ссылка);
        Набор.Прочитать();
        Элемент         = 0;
        Для Каждого СтрокаТЧ Из Документ.Оборудование Цикл        
            Сумма = СтрокаТЧ.Сумма;
            Если Набор[Элемент].Сумма = 4405.88 Тогда
                Элемент = Элемент+1;
                Продолжить;            
            Иначе
                Набор[Элемент].Сумма =  Сумма;
            КонецЕсли;
            Элемент = Элемент+1;
        КонецЦикла;
        Набор.Записать(Истина);   
    
    
    Вот у меня получается сейчас так ,что запись одного элемента пропадает(,можно вернуть значение ТЧ На Один Назад ?

Поделиться этой страницей