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

Хранилище

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

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



> Программное изменение интервала журнала          
vadim007 Подменю пользователя
сообщение 26.11.12, 16:36
Сообщение #1

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Проблема следующая: есть некая обработка, в ней задается период с НачДата по КонДата.
Затем нужно выбрать документы для этой обработки, для чего используется следующий код:
Док = СоздатьОбъект("Документ");
Док.ВидыДляВыбора(СтрВиды);
Если Док.Выбрать("Выберите документ") = 1 Тогда
.......
КонецЕсли;

Открывается журнал выбора документов, но у этого журнала интервал установлен такой, какой задан в параметрах системы, вкладка Журналы.
А хотелось-бы (очень!), чтобы интервал журнала был такой-же, как и у обработки.
Как программно изменить интервал открытого журнала документов?

MATEVI Подменю пользователя
сообщение 26.11.12, 16:42
Сообщение #2

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

УстановитьИнтервал(<?>,,);
Синтаксис:
УстановитьИнтервал(<ДатаНач>,<ДатаКон>,<ФлагИзменения>)
Назначение:
Установить интервал журнала.
Параметры:
<ДатаНач> - дата начала интервала журнала;
<ДатаКон> - дата конца интервала журнала.
<ФлагИзменения> - необязательный параметр. Этим флагом регулируется возможность интерактивного изменения интервала журнала. 1 - пользователь может изменить интервал журнала интерактивно, 0 - пользователь не может интерактивно изменить интервал журнала.
Замечание:
Метод доступен только в контексте Модуля формы журнала.

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

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Цитата(MATEVI @ 26.11.12, 16:42) *
Метод доступен только в контексте Модуля формы журнала.

А как этот контекст получить из внешней обработки?

MATEVI Подменю пользователя
сообщение 27.11.12, 11:48
Сообщение #4

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

Ну как то приблизительно так
В обработке
Процедура ОткрытьЖурн()
    Сп=СоздатьОбъект("СписокЗначений");
    Сп.ДобавитьЗначение(НачМесяца(ТекущаяДата()),"Дата");
    Сп.ДобавитьЗначение(КонМесяца(ТекущаяДата()),"Дата");
    ОткрытьФорму("Журнал.АвансовыеОтчеты",Сп)
КонецПроцедуры

В журнале
Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
    Сп=Форма.Параметр;
    ДатаНач = Сп.получитьзначение(1,"Дата");
    ДатаКон = Сп.получитьзначение(2,"Дата");
    УстановитьИнтервал(ДатаНач,ДатаКон,);
КонецЕсли;

Cthulhu Подменю пользователя
сообщение 28.11.12, 1:11
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Цитата(vadim007 @ 27.11.12, 8:31) *
А как этот контекст получить из внешней обработки?

Перем тКонт;  // описание переменной, в которую будем получать контекст открытой формы (в принципе - любой)
ОткрытьФорму("Журнал.АвансовыеОтчеты",тКонт); // собственно получение в переменную контекста открытой формы
тКонт.УстановитьИнтервал(ВыбНачПериода,ВыбКонПериода);  // ну и использование контекста открытой формы


ЗЫ: так, на всякий пожарный - ответ на незаданный вопрос "как активизировать в открытом журнале нужный документ?". ну мало ли, тоже на тему использования контекста из внешней обработки... в продолжение кода, приведенного віше (и, допустим, (ссілка на) нужній документ - в переменной "тДокум" уже лежит):
тКонт.УстановитьИнтервал(Мин(тДокум.ДатаДок,тКонт.НачалоИнтервала()),Макс(тДокум.ДатаДок,тКонт.КонецИнтервала()));
тТхт=""; Пока тКонт.ТекущийДокумент<>тДокум Цикл
  Если ПустоеЗначение(тТхт)<>1 Тогда Если Найти("Нет,Отмена",Вопрос(тТхт,"Да+Нет+Отмена",1))<>0 Тогда Прервать КонецЕсли КонецЕсли;
  тКонт.АктивизироватьОбъект(тДокум); тТхт="Повторить попытку активизации Документа """+тДокум+"""?..";
КонецЦикла;
//Если тКонт.ТекущийДокумент<>тДокум Тогда  // так, на всякий случай:
//  Сообщить("Документ """+тДокум+""" не активизирован...","");
//  //Предупреждение("Документ """+тДокум+""" не активизирован...",12);
//КонецЕсли;


Сообщение отредактировал Cthulhu - 28.11.12, 1:11

vadim007 Подменю пользователя
сообщение 01.12.12, 17:05
Сообщение #6

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Цитата(MATEVI @ 27.11.12, 11:48) *
Ну как то приблизительно так

Делаю обработку для стандартных конфигураций. А в вашем случае конфа будет уже нестандартной.

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


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

 

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