• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

1cv77 ТиС вызов отчета с параметром.

  • Автор темы Encore
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

Encore

Здравствуйте..я только встал на путь изучения 1с и сразу возникла проблема.
Мне нужно сделать вызов отчета "карточка кол сум учета" из документа "заказ поставщику" (1с77 ТИС)
причем нужно в него сразу передать выделенную позицию номенклатуры, склад, тип цены.
как период карточки нужно использовать дату(которая в документе) и дату(которая в документе)-2 месяца.
ну и сразу чтобы он начал формироваться. пока есть вот что, но плохо понимаю в ту ли сторону вообще ковыряюсь.
если можно подоступнее и без отправки на чтение( я итак все свободное время читаю литературу по 1с)
Код:
Процедура СдКарточку();
перем таблзнач; //честно незнаю правильно ли беру таблицу значений документа заказ поставщику
тексклад=создатьобъект("справочник.склады"); //это я пока тоже плохо понимаю что то вроде символьного объявления
тексклад=справочник.склады.поискпонаименованию("индустриальная"); //теоретически должно найти в справочнике нужный склад и присвоить переменной тексклад...
конт=форма.параметр;
конт=""; 
открытьформу("отчет.карточкаколичественносуммовогоучета,конт);
конт.выбсклад=текслад;
конт.выбноменклатура=таблзнач.номенклатура.текущаястрока;
конт.форма.обновить(1);
конецпроцедуры;
кто чем может помогите пожалуйста
 
Д

Дайнеко

Хороший код, творческий.
Однако из всего него ставим только строку:
открытьформу("отчет.карточкаколичественносуммовогоучета,конт);

Сразу видно, что писано не в 1С а в голове, буквы не красивые и не хватает кавычки в имени отчета. Надо работать в условиях максимально приближенным к боевым. Для начала отладьте только эту команду. Тогда пойдем дальше, передадим ему параметры. Вот эта переменная "конт" она отчету нужна? Вычеркнуть.
конт=форма.параметр;
конт="";
Глупство одно, как говорила моя бабушка. Присвоил, тут же стер.

Чтобы заставить отчет принять параметры, надо в нем посмотреть процедуру ПриОткрытии(). В ней разобраться, как он настроен к считыванию входных параметров. Боюсь, Вам, это не по зубам.
 
E

Encore

вот вырезки кода из карточки
Код:
Процедура ПриОткрытии(ФлагЧтенияНастройки)

Если ВидРазделителя = 0 Тогда
ВидРазделителя	= 1;
КонецЕсли;

Форма.ВыбНоменклатура.ВыборГруппы(0);
Форма.ВыбРазделитель1.ВыборГруппы(0);
Форма.ВыбРазделитель2.ВыборГруппы(0);
Форма.ВыбРазделитель3.ВыборГруппы(0);

Номер	= ВосстановитьЗначение("НомКарточкиКолСтоимУчета");
Если Номер = 0 Тогда
Номер	= 1;
КонецЕсли;

Если ФлагЧтенияНастройки = 0 Тогда
ДатаНачала	= глЗначениеПоУмолчанию("ОсновнаяДатаНачалаОтчетов");
ДатаКонца	= РабочаяДата();
КонецЕсли;

УправлениеДиалогом();
ПриИзмененииСклада();
КонецПроцедуры // ПриОткрытии()
Код:
Процедура Сформировать(ФлагЗакрытия=0)
Перем Запрос, ТекстЗапроса, Таб;

Если глПроверкаДаты(ДатаНачала,ДатаКонца)=0 Тогда
Возврат;
КонецЕсли;

Если ПустоеЗначение(ВыбНоменклатура) = 1 Тогда
Предупреждение("Не выбрана номеклатура");
Возврат;
КонецЕсли;

Если ПустоеЗначение(ВыбСклад) = 1 Тогда
Предупреждение("Не выбран склад");
Возврат;
КонецЕсли;

Если ВыбСклад.РозничныйСклад = 0 Тогда
Если ПустоеЗначение(ТипЦены) = 1 Тогда
Предупреждение("Не указан тип учетной цены");
Возврат;
КонецЕсли;

СформироватьПоОпту();
Иначе
СформироватьПоРознице();
отсюда появляется мнение что нужно передать параметры
ДатаНачала,ДатаКонца,ВыбНоменклатура,ВыбСклад,ТипЦены.
 
Д

Дайнеко

Не лезьте в дебри. Сделайте простую вещь:
- на документе "заказ поставщику" красивая кнопка [Отчет]
- по кнопке просто открывается отчет.
- пользователь сам в отчете укажет склад и запустит.

А когда похвастаетесь, что хоть это сделали, посмотрим дальше.
 
A

alxrie

Encore,
если хотите передать параметры в форму, то это можно сделать так:
в месте открытия формы:
Парам = СоздатьОбъект("СписокЗначений");
Парам.Установить("ИмяПарам1",ЗначениеПарам1);
//...
Парам.Установить("ИмяПарамN",ЗначениеПарамN);

В самом отчёте:

Процедура ПриОткрытии()
Параметры = Форма.Параметр;
Если ТипЗначенияСтр(Параметры)="СписокЗначений" Тогда
ЧтоТоТам1 = Параметры.Получить("ИмяПарам1");
//...
ЧтоТоТамN = Параметры.Получить("ИмяПарамN");
КонецЕсли;
//...
КонецПроцедуры
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!