1. На форму добавьте элемент "ПолеТабличногоДокумента", назовите его "ПолеТабличногоДокумента" 2. В форме когда происходит вызов процедуры "ВашаПроцедура() добавте его параметром
burza @ Вчера, 21:48
, почитайте за отчеты на основе универсального и с чем их едят. Вы пробовали отчет с таким запросом запускать? у вас потом ни вложенных полей, ни свойств, ни категорий видно не будет.
// Настройка общих параметров универсального отчета
// Содержит название отчета, которое будет выводиться в шапке. // Тип: Строка. // Пример: // УниверсальныйОтчет.мНазваниеОтчета = "Название отчета"; УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
// Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
// Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета. // Тип: Строка. // Пример: // УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах"; //УниверсальныйОтчет.ИмяРегистра = "ДенежныеСредства";
// Содержит признак необходимости вывода отрицательных значений показателей красным цветом. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
// Содержит признак необходимости вывода в отчет общих итогов. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь;
// Содержит признак необходимости вывода детальных записей в отчет. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;
// Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь; УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Истина;
// Содержит признак использования свойств и категорий при заполнении настроек отчета. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина;
// Содержит признак использования простой формы настроек отчета без группировок колонок. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = Истина;
// Дополнительные параметры, переданные из отчета, вызвавшего расшифровку. // Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована // для реализации специфичных для данного отчета параметрических настроек.
// Добавление предопределенных группировок строк отчета. // Необходимо вызывать для каждой добавляемой группировки строки. // УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("БанковскийСчетКасса");
// Добавление предопределенных группировок колонок отчета. // Необходимо вызывать для каждой добавляемой группировки колонки. // УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>);
// Добавление предопределенных отборов отчета. // Необходимо вызывать для каждого добавляемого отбора. // УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>); УниверсальныйОтчет.ДобавитьОтбор("БанковскийСчетКасса"); УниверсальныйОтчет.ДобавитьОтбор("ВидДенежныхСредств"); УниверсальныйОтчет.ДобавитьОтбор("ВалютаДенежныхСредств"); УниверсальныйОтчет.ДобавитьОтбор("Организация");
// Добавление предопределенных полей порядка отчета. // Необходимо вызывать для каждого добавляемого поля порядка. // УниверсальныйОтчет.ДобавитьПорядок(<ПутьКДанным>);
// Установка связи подчиненных и родительских полей // УниверсальныйОтчет.УстановитьСвязьПолей(<ПутьКДанным>, <ПутьКДаннымРодитель>);
// Установка связи полей и измерений // УниверсальныйОтчет.УстановитьСвязьПоляИИзмерения(<ИмяПоля>, <ИмяИзмерения>);
// Установка представлений полей УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
// Добавление дополнительных полей // Необходимо вызывать для каждого добавляемого дополнительного поля. // УниверсальныйОтчет.ДобавитьДополнительноеПоле(<ПутьКДанным>, <Размещение>, <Положение>); УниверсальныйОтчет.ДобавитьДополнительноеПоле("ВалютаДенежныхСредств"); УниверсальныйОтчет.ДобавитьДополнительноеПоле("ВидДенежныхСредств");
Универсальный отчет не советую трогать. НИКОГДА. Поломаете его и потом перестанут работать половина отчетов в системе, т.к. большая часть отчетов на нем написана... В Вашем случае нужно в отчете убрать признак построения по регистру, закомментировать
далее добавить текст запроса, в котором будете выбирать данные из РН.ДенежныеСредства по всем стандартам универсального отчета (советую посмотреть как это сделано в типовом отчете, например "Валовая прибыль"). Сделайте запрос по аналогии, в запросе свяжите РН.ДенежныеСредства с РС.ОтветственныеЛица по кассе и передайте параметром в запрос ваше физ. лицо.
Проще говоря чтобы не ломать существующий отчет, лучше на его основе сделайте новый, за пример возьмите "Валовую прибыль", все что Вам нужно находится в процедуре "УстановитьНачальныеНастройки"
Собственно ситуация следующая: на предприятии в виду того, что используется множество различных конфигураций и мобильные приложения для упрощения синхронизации всего этого программного обеспечения было принято решение об использовании ESB-систем (Enterprise Servise Bus) - так называемая сервисная шина данных. Пока что выбор остановился на системе OpenESB, поскольку она бесплатная. Скачал её, установил, посмотрел как настраивать - вроде все понятно. Суть её использования заключается в том, что в случае замены одного из приложений не нужно будет менять обмены во всех остальных приложениях, поскольку задача ESB-систем выдавать данные по описанному формату (т.е. загрузка данных останется без изменений, нужно будет только реализовать выгрузку в ESB). Если все правильно понял ESB-системы это по своей сути веб-сервисы.
Вопрос следующий: Кто стыкался с подобными системами (OpenESB, MULE, WSO2 и т .д.)? Как на практике выглядит такой обмен? Есть ли у кого-то пример использования данной системы? Гугл выдает лишь две нормальных статьи по связке 1С и ESB: 1) Использование ZATO и 1С 2) Использование OpenESB и 1С
но то ли у меня мозгов не хватает, то ли там так написано, но до меня не доходит как будет выглядеть окончательный обмен между двумя конфигурациями: скажем УТП и Документооборот, обменяться справочником "Контрагенты" (это к примеру). Если есть такие, кто уже эту тему курил, буду благодарен если поделитесь дымом и мыслями...
Что дальше происходит с ТабДокумент - сразу вызываете функцию "Показать" или передаете в типовую печать? Если вы печатаете штатными механизмами как в типовых конфигурациях, где вызывается общая форма печати, то Ваш ТабДокумент выводится дальше в ПолеТабличногоДокумента, у которого есть свои свойства "ОриентацияСтраницы", "Автомасштаб" и т.д., возможно нереализована передача этих параметров, поэтому и не выводит. Посмотрите отладчиком куда дальше идет ваш табличный документ, если он передается в общие модуля печати, то смотрите там где передается ваш таб. док. в ПолеТабличногоДокумента и какие при этом параметры.
Если, как правило, в качестве сотрудника всегда идет несколько человек (смена) может есть смысл задуматься о создании справочника Смены с таб. частью Сотрудники, где можно перечислить всех сотрудников данной смены? И вместо ссылки на справочник сотрудники взять справочник смены
nickolas @ Сегодня, 11:18
, Конфигурация какая? Если это конфигурация на обычных формах (БУ, УТП, УПП), то Вам нужно добавить свою процедуру печати в модуле объекта, например (выделил комментариями //++ | //-- на что обратить внимание) :
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
СтруктураМакетов = Новый Структура();
СтруктураМакетов.Вставить("Накладная" , "Расходная накладная"); СтруктураМакетов.Вставить("Акт" , "Акт об оказании услуг"); //++ СтруктураМакетов.Вставить("ИМЯВАШЕГОМАКТА" , "НАЗВАНИЕ КАК ХОТИТЕ ВИДЕТЬ В СПИСКЕ"); //-- Возврат СтруктураМакетов;
КонецФункции
далее, в процедуре печати добавляете свой обработчик, который сформирует и вернет Вам табличный документ:
Если имеется в виду последний документ по дате то так как в примере ниже, если документ последний в принципе - то брать максимум по ссылке. P.S. Ещё я бы использовал не документы а регистры накопления ЗаказыПоставщикам, Закупки и т.п.
ВЫБРАТЬ РАЗРЕШЕННЫЕ СпрНоменклатура.Ссылка КАК Номенклатура, МАКСИМУМ(ЕСТЬNULL(ТоварыЗаказа.Ссылка.Дата, &ПустаяДата)) КАК ДатаПослЗаказа, МАКСИМУМ(ЕСТЬNULL(ТоварыПоступления.Ссылка.Дата, &ПустаяДата)) КАК ДатаПослПоступления ПОМЕСТИТЬ ВтПоследниеДокументы ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа ПО СпрНоменклатура.Ссылка = ТоварыЗаказа.Номенклатура И ТоварыЗаказа.Ссылка.Проведен = ИСТИНА ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ТоварыПоступления ПО СпрНоменклатура.Ссылка = ТоварыПоступления.Номенклатура И ТоварыПоступления.Ссылка.Проведен = ИСТИНА ГДЕ СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры) СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка ; ВЫБРАТЬ РАЗРЕШЕННЫЕ ВтПоследниеДокументы.Номенклатура, ВтПоследниеДокументы.Номенклатура.Код КАК Код, ВтПоследниеДокументы.ДатаПослЗаказа КАК ДатаЗаказа, ЕСТЬNULL(ЗаказПоставщикуТовары.Сумма, 0) КАК СуммаЗаказа, ЕСТЬNULL(ЗаказПоставщикуТовары.Количество, 0) КАК КоличествоЗаказа, ВтПоследниеДокументы.ДатаПослПоступления КАК ДатаПоступления, ЕСТЬNULL(ПоступлениеТовары.Сумма, 0) КАК СуммаДокумента, ЕСТЬNULL(ПоступлениеТовары.Количество, 0) КАК КоличествоДокумента ИЗ ВтПоследниеДокументы КАК ВтПоследниеДокументы ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары ПО ВтПоследниеДокументы.ДатаПослЗаказа = ЗаказПоставщикуТовары.Ссылка.Дата И ВтПоследниеДокументы.Номенклатура = ЗаказПоставщикуТовары.Номенклатура И ЗаказПоставщикуТовары.Ссылка.Проведен = ИСТИНА ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТовары ПО ВтПоследниеДокументы.ДатаПослПоступления = ПоступлениеТовары.Ссылка.Дата И ВтПоследниеДокументы.Номенклатура = ПоступлениеТовары.Номенклатура И ПоступлениеТовары.Ссылка.Проведен = ИСТИНА
забыл тут отписаться, в общем решил сделать так: раз посредством чистого запроса РЛС не удалось решить вопрос, а мой запрос в консоли выдает мне правильный результат, решил дешево и сердито выполнить мой запрос перед открытием формы списка, и установить отбор на список документов. В итоге получил тоже что и хотел, просто не совсем так как хотелось бы. Добавлять новые объекты не пришлось, хватило типовых регистров "Настройки прав доступа" и "назначение видов объектов доступа" и это хорошо так что может кому-то пригодится такой вариант, тема закрыта, спасибо за внимание
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!