8.х Как перебрать все проводки за заданный период

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем svt0, 13 июл 2009.

  1. TopicStarter Overlay
    svt0
    Offline

    svt0

    Регистрация:
    13 июл 2009
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Уважаемые, не подскажете как перебрать все бухгалтерские проводки за известный период (конечная цель - запихать их в файл DBF) в 1С 8 ?

    Еще может быть кто подскажет в интернет ресурс с такими (пробовал искать - не удалось) простейшими шаблончиками - типа перебор проводок, документов, строк в документе и т.п.
  2. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Смотрите регистры бухгалтерии. Все проводки там.
  3. TopicStarter Overlay
    svt0
    Offline

    svt0

    Регистрация:
    13 июл 2009
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Мне бы типовой цикл обхода проводок - программный код....
    У меня есть аналогичный для 7.7.
    С восьмеркой мне быстро не стартануть, т.к. я на постоянной основе этим не занимаюсь.
    А на основе такого цикла я бы сделал выгрузку.
  4. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Код:
    Выборка = РегистрыБухгалтерии.Хозрасчетный.Выбрать();
    Пока Выборка.Следующий() Цикл
    СчетДТ =  Выборка.СчетДТ;
    СчетКТ = Выборка.СчетКТ;
    Сумма = Выборка.Сумма;
    СубконтоДТ1 = Выборка.СубконтоДТ[0];
    //...
    КонецЦикла;
    
    Как-то так. Еще есть синтаксис- помощник. Реально помогает :)
  5. TopicStarter Overlay
    svt0
    Offline

    svt0

    Регистрация:
    13 июл 2009
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Сделал.
    Я так понимаю, что в Выбрать в скобочках можно указать период, за который отбираем проводки:

    В = РегистрыБухгалтерии.Хозрасчетный.Выбрать("01.01.2006","31.12.2006");
    пока В.Следующий() цикл
    конеццикла;



    Удивительно, но при этом на строке пока В.Следующий() цикл 1С вылетает !
    Отчего бы это ?
    Проводки за 2006 год есть.
  6. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Что такое "Вылетает"?
  7. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Если вы даты указали как в посте, то цикл не вылетает из-за того, что выборка пустая. Вы передали строку, а не дату.
  8. TopicStarter Overlay
    svt0
    Offline

    svt0

    Регистрация:
    13 июл 2009
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1

    Спасибо. Исправил. Работает.

    Еще вопрос - строки с названиями счетов, субконто и т.п. в кодировке Windows.
    Мне нужно сохранять их в DBF в DOS-кодировке.

    Есть ли в 1С встроенные средства для перевода строки в другую кодировку ???
  9. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Так при записи dbf-файла можно указать колировку. Там есть такое свойство.
  10. TopicStarter Overlay
    svt0
    Offline

    svt0

    Регистрация:
    13 июл 2009
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Спасибо. Пошло.

    А каким образом мне получить строки, представляющие значения субконто1, 2, 3.

    Я обращаюсь к значениям В.СубконтоДт[0], В.СубконтоДт[1] и так далее... (В - это выборка по регистру). Или В.СубконтоДт.Получить(0) ....

    Но возвращаемые значения - пустая строка. Реально у счета есть субконто и его значение - непустое.

    Каким образом я могу получить значение n-ого субконто ?

    Также каким образом мне получить текстовое представление типа этого n-Ого субконто (напр., Договоры, Контрагенты и т.п.) ?
  11. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Вот запрос, который тебе все соберет в ТЗ. Тебе будет проще я думаю
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ХозрасчетныйДвиженияССубконто.Период,
    |    ХозрасчетныйДвиженияССубконто.Регистратор,
    |    ХозрасчетныйДвиженияССубконто.СчетДт,
    |    ХозрасчетныйДвиженияССубконто.СубконтоДт1,
    |    ХозрасчетныйДвиженияССубконто.СубконтоДт2,
    |    ХозрасчетныйДвиженияССубконто.СубконтоДт3,
    |    ХозрасчетныйДвиженияССубконто.СчетКт,
    |    ХозрасчетныйДвиженияССубконто.СубконтоКт1,
    |    ХозрасчетныйДвиженияССубконто.СубконтоКт2,
    |    ХозрасчетныйДвиженияССубконто.СубконтоКт3,
    |    ХозрасчетныйДвиженияССубконто.Организация,
    |    ХозрасчетныйДвиженияССубконто.Сумма,
    |    ХозрасчетныйДвиженияССубконто.КоличествоДт,
    |    ХозрасчетныйДвиженияССубконто.КоличествоКт,
    |    ХозрасчетныйДвиженияССубконто.Содержание
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(НАЧАЛОПЕРИОДА(&НачПериода,ДЕНЬ), КОНЕЦПЕРИОДА(&КонПериода,ДЕНЬ), ) КАК ХозрасчетныйДвиженияССубконто";
    
    Запрос.УстановитьПараметр("НачПериода",'20090531');               
    Запрос.УстановитьПараметр("КонПериода",'20090630');
    ТЗ = Запрос.Выполнить().Выгрузить();
    
  12. TopicStarter Overlay
    svt0
    Offline

    svt0

    Регистрация:
    13 июл 2009
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1

    Спасибо. Попробую.

    Но все равно вопросы остались:

    1. В семерке было достаточно просто получить значение субконто по номеру. В восьмерке какие-то проблемы с этим ? Просто я практически весь цикл обхода выборки и выгрузку в DBF уже написал, осталось с этим несчастными субконто разобраться.

    2. Если сравнивать варианты с обходом выборки и с обходом таблицей значений для последующей выгрузки в DBF - что будет более оптимальным с точки зрения А-времени работы, Б-требованиям к памяти ? Имеется в виду для большого кол-ва проводок - несколько сотен тысяч проводок, до миллиона.
  13. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    1. Ну раз хочешь субконто - значит субконто.
    Выборка.СубконтоДТ или Выборка.СубконтоКТ имеет тип: РегистрБухгалтерииСубконто. Принципы работы посмотри в СП.
    Обращение через числовой индекс к нем не предусмотренно. Но есть простой обход через цикл:
    Код:
    Для каждого Субконто Из Выборка.СубконтоДт Цикл
    Сообщить(Субконто.Значение);
    КонецЦикла;
    
    

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