Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Хронологическая последовательность документов          
u_prog Подменю пользователя
сообщение 18.09.13, 8:30
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте.
Помогите решить проблему.
Необходимо написать обработку для выполнения перепроведения документов за определенный период - аналог встроенной в системе функции перепроведения. Не буду объяснять зачем это нужно, есть определенные моменты в работе стандартной функции. Так вот для перепроведения необходимо выстроить все документы в хронологическом порядке. Насколько я понимаю специально для определения документа на оси времени есть метод МоментВремени. Но при сортировке по этому полю наблюдается не совсем хронологический порядок документов - некоторые документы в конце списка имеют более раннюю дату, чем документы средины списка.
Привожу код обработки. Подскажите что не так.

ТЗДокументы = Новый ТаблицаЗначений;
    ТЗДокументы.Колонки.Добавить("ДокСсылка");
    ТЗДокументы.Колонки.Добавить("Момент");
    Состояние("Создание списка документов...");
    Для Каждого Док из Метаданные.Документы Цикл
        Если Док.Имя = "УстановкаСоответствияСчетовБУиНУ" или Док.Имя = "УстановкаСоответствияСчетовБУиМСФО" Тогда
            Продолжить;
        КонецЕсли;
        Запрос = Новый Запрос;
        Запрос.Текст = Запрос.Текст + ?(Запрос.Текст = "","", "ОБЪЕДИНИТЬ ВСЕ") + "
        |
        |ВЫБРАТЬ
        |    Документ" + Док.Имя + ".Ссылка,
        |    Документ" + Док.Имя + ".МоментВремени
        |ИЗ
        |    Документ." + Док.Имя + " КАК " + "Документ" + Док.Имя + "
        |ГДЕ Документ" + Док.Имя + ".Дата >= &ДатаС И Документ" + Док.Имя + ".Дата <= &ДатаПо
        | И Документ" + Док.Имя + ".Проведен
        |";
        Запрос.УстановитьПараметр("ДатаС", ДатаС);
        Запрос.УстановитьПараметр("ДатаПо", ДатаПо);
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            СтрТЗДокументы = ТЗДокументы.Добавить();
            СтрТЗДокументы.ДокСсылка = Выборка.Ссылка;
            СтрТЗДокументы.Момент = Выборка.МоментВремени;
        КонецЦикла;
    КонецЦикла;
    Состояние("Сортировка списка документов...");
    ТЗДокументы.Сортировать("Момент");
    Для Каждого Стр Из ТЗДокументы Цикл
        ДокОбъект = Стр.ДокСсылка.ПолучитьОбъект();
        Состояние("Перепроведение " + Стр.ДокСсылка);
        Попытка
            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
        Исключение
                Сообщить(ОписаниеОшибки());
            Продолжить;
        КонецПопытки;
    КонецЦикла;


Заранее спасибо


 i 

Выделяйте код
 


Сообщение отредактировал Vofka - 18.09.13, 8:45

sava1 Подменю пользователя
сообщение 18.09.13, 8:44
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

Из описания МоментВремени - документы проведенные в одну и ту же секунду располагаются в произвольном порядке, а не в порядке их физического создания (как было в 7.7).

Vofka Подменю пользователя
сообщение 18.09.13, 8:53
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

sava1, если не секрет, а где такое описание вы взяли? smile.gif

sava1 Подменю пользователя
сообщение 18.09.13, 8:55
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

[необходимо зарегистрироваться для просмотра ссылки]

Zaval Подменю пользователя
сообщение 18.09.13, 9:03
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Попробуйте в Сортировать() указать второй параметр - сейчас у Вас моменты сраввниваются по строковому представлению.

u_prog Подменю пользователя
сообщение 18.09.13, 9:29
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Zaval @ 18.09.13, 10:03) *
Попробуйте в Сортировать() указать второй параметр - сейчас у Вас моменты сраввниваются по строковому представлению.



Я так понимаю достаточно написать во так
ТЗДокументы.Сортировать("Момент"), Новый СравнениеЗначений);

По крайней мере так все документы отсортированы правильно. Работает!
Спасибо!!!

Цитата(Zaval @ 18.09.13, 10:03) *
Попробуйте в Сортировать() указать второй параметр - сейчас у Вас моменты сраввниваются по строковому представлению.


Извините, скобка там лишняя, конечно же. Во так
ТЗДокументы.Сортировать("Момент", Новый СравнениеЗначений);

Vofka Подменю пользователя
сообщение 18.09.13, 9:29
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

sava1, а официального источника нету?

sava1 Подменю пользователя
сообщение 18.09.13, 9:37
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

не искал и не проверял

[необходимо зарегистрироваться для просмотра ссылки]

Сообщение отредактировал sava1 - 18.09.13, 9:41

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 0:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!