Имеется достаточно простой отчет СКД. В отчете есть поле "ПричиныПростоя" (текстовое, 50 символов)
На форме отчета есть блок "КомпоновщикНастроек.Настройки.Отбор", где возможно выбрать соответствующие отборы. При выборе отбора "ПричиныПростоя" правое значение этого отбора - пустое, т.е. отобрать невозможно.
"ПричиныПростоя" хранятся в неком регистре сведений "СоответствияЗначенийОтбора"
Список значений этих причин простоя в других кодах базы можно получить следующим образом:
КэшПричинПростоя = Новый СписокЗначений; СписокПричин = Причины_Кэш.ПолучитьСоответствияЗначений("ПричиныПростояТС"); Для Каждого СТР ИЗ СписокПричин Цикл КэшПричинПростоя.Добавить(СТР.Причина); КонецЦикла;
Результат: "Запой мастера", "отсутствие запчастей", "неохота работать", "санкции" и т.д.
Каким образом можно заполнить "ПричиныПростоя" в отборе на СКД списком из этой общей функции? Чтобы была возможность и "ВидСравнения" (в списке, равно,...) использовать в отборе?
Приветствую, Форумчане! УПП 1.3, типовая, но с дописками, ОФ
Имеется справочник "Опрос". На нем есть кнопка, которая инициирует ПостроительОтчета с его настройками и открывает свободную форму с "Построитель.Отбор"
При открытии открывается уже заполненная форма с данными типа: (Поле, ТипСравнения, Значение)
Если НЕ ПустаяСтрока(ПутьКФайлу) Тогда ВнешнийОтчет = ПолучитьИзВременногоХранилища(ПутьКФайлу); УдалитьИзВременногоХранилища(ПутьКФайлу); ПутьКФайлу = ""; КонецЕсли;
КонецПроцедуры
Проблема заключается в том, что реквизит "ВнешнийОтчет" сохраняется только после 3-х кратного выбора файла внешней обработки. Т.е. нужно 3-жды выбрать обработку и сохранить, и тогда "ВнешнийОтчет" принимает какое-то значение (показывает отладчик как двоичные данные FF 00 DD...)
Никак не могу понять почему нужно выбрать и сохранить 3-и раза. Подскажите, что может быть?
Нашел я велосипед как программно запустить классический отчет СКД, получить из него таблицу значений (нужный результат) и далее вытворять с этой ТЗ что вздумается...
Но столкнулся с такой проблемой. Дело в том, что есть отчеты, где применяются "Набор данных", да еще и с объединением. В этом случае моё изобретение велосипеда не срабатывает, выдает ошибку:
Ошибка при вызове метода контекста (Инициализировать) ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных) "Ошибка создания набора данных "НаборДанныхТакойТо""
Где "НаборДанныхТакойТо" и есть набор данных в отчете СКД (их несколько)
Отчет = ВнешниеОтчеты.Создать(ПутьКОтчету); СхемаКомпоновкиДанных = Отчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроекНастройки = Новый КомпоновщикНастрсекКомлонсвкиДанных; КомпоновщикНастроекНастройки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра ("НачалоПериода", ДатаНачала); КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра ("КонецПериода", ДатаОкончания); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекНастройки.Настройки, , , [Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомлоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ДанныеТЗ = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ДанныеТЗ); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Как данный код запустить для отчетов СКД с набором данных?
Приветствую, Форумчане! УПП, писанная, переписанная, адаптированная под УФ
В наследство достался справочник (не знаю почему справочник), в котором выбирается внешний отчет с параметрами периода (месяц, квартал...). Далее нажимается кнопка "Сохранить внешний файл".
По кнопке формируется файл результата отчета в формате JSON.
Всё хорошо, но дело в том, что всё подстроено под отчеты, сделанные под обычное приложение, где в отчетах используется функция "СформироватьОтчет(...)"
Каким-то волшебным образом по этой кнопке передается период, далее обращается к "Сформироватьотчет", получает результат в виде таблицы и формирует файл.
Теперь встал вопрос переделать эту кнопку, чтобы формировался файл в формате JSON для обычных отчетов СКД, сделанных для Управляемого приложения.
Соответственно в отчетах СКД управляемых форм нет никаких функций в модуле объекта этого отчета (в частности функции "СформироватьОтчет"
Подскажите как запустить внешний отчет СКД с параметрами периода, чтобы он выполнился и сохранил результат во внешнем файле формата JSON?
ВидПериода создавался программно и соответствующему реквизиту уже присвоили нужный тип из перечисления, а потом еще и программно добавляли из этого же перечисления
Приветствую, Форумчане! Самопис, УФ. Деланная/переделанная УПП с трансформацией на управляемые формы. Досталась в наследство...
Имеется некий отчет на СКД, где есть параметр со стандартным периодом. Имеется общая форма "ФормаОтчета". На этой форме есть кнопка "Показать/Скрыть быстрые настройки" В режиме предприятия при нажатии этой кнопки проявляются реквизиты для настроек. Один из реквизитов "ВидПериода", который заполняется данными из перечисления "ДоступныеПериодыОтчетов" (День, Неделя, Декада, Месяц, Квартал, Полугодие, Год, Произвольный) в Списке выбора
Проблема в том, что при открытии отчета этот реквизит "ВидПериода" дублирует все эти перечисления в списке выбора: День, Неделя,...Произвольный, День, Неделя,... Произвольный.
В коде общей формы нашел фрагмент заполнения списка выбора:
ДоступныеПериоды = ФункцииОтчетовКлиентСервер.ПолучитьСписокДоступныхПериодов(); Для Индекс = 0 По 7 Цикл ВидПериода.СписокВыбора.Добавить(ДоступныеПериоды[Индекс]); //ВидПериода.СписокВыбора.Добавить(ДоступныеПериоды[0]); КонецЦикла;
Но это не влияет, т.к. если для теста установить заремаченное [0], то список становиться таким: "День, Неделя, Декада, Месяц, Квартал, Полугодие, Год, Произвольный, День, День, День, День, День, День, День"
Т.е., если я правильно понимаю, то этот список сначала где-то таки формируется. Не подскажите, где этот реквизит, который судя по всему создается программно, т.к. я не нашел на этой общей форме группу с указанным реквизитом, может формировать первичный список выбора?
//Код явно откуда-то скопипастен, мож кто сталкивался с подобным.
Сделал РС, независимый. непериодический Заполнение этого РС должно происходить в подписке на событии при проведении документа. Это что-то вроде Журнала выполнения операций и запись в РС должна происходить при любом случае (разрешено проведение или нет) Создал процедуру его заполнения:
Отладчик показывает, что данные все заполняются правильно, но сам регистр оказывается пустым, т.е. не записывается. Что я не так сделал? Вроде всё как по учебнику, ну и раньше вроде такое делал... Что я забыл?
Обращение к этой процедуре идет так:
Пока Выборка.Следующий() Цикл *************** ЗаполнитьРезультатПроверки(Источник.Ссылка, РезультатПроверки, Выборка.ОписаниеОшибки, Выборка.ТипПроверки); КонецЦикла;
Если Отказ = Ложь, т.е. проведение разрешено, то запись в регистр происходит. Но если проведение запрещено, то запись в регистр не происходит. Я так понял откатываются в небытиё все транзакции. Хотя отладчик показывает правильность заполнения данными в регистр, запись не происходит.
Как можно справится с ситуацией? Т.е. чтобы запись в РС происходила при любом раскладе...
Недавно решал вопрос: массовое создание нескольких справочников программно. Из некой формы галочкой выбирались строки ТЧ и на основании выбранных строк создавались программно справочники (ну и попутно документы).
В итоге, чтобы вновь созданные справочники вывести в некую итоговую таблицу значений (дополнительная форма с ТЗ), пришлось их создать, потом сохранить и вывести в ТЗ, чтобы можно было продолжить с ними работать: оставить или удалить непосредственно как ошибочные или ненужные...
Типа всё работает и все довольны, но вот хотелось бы понять насколько возможно ли следующее:
Создать программно справочники, запомнить их в памяти без сохранения в 1с, вывести то, что есть в памяти в некой ТЗ и эту ТЗ вывести на дополнительную форму для дальнейшей работы???
До этого сделал так: при программном создании выводил на экран вновь созданные справочники. В итоге на экране висело несколько справочников и Пользователь поочереди принимал решение, что делать с этими справочниками, но это не понравилось. Поэтому пришлось создавать, сохранять, выводить их в ТЗ и далее манипулировать (при определенных условиях при закрытии этой формы "ненужные" справочники удалялись программно непосредственно)
Очень интересный метод, даже попробовал и каким-то образом получилось... Беда со мной... там это срабатывает если выбираешь одну позицию и дает расшифровку...
А мне как-то надо написать отчет остатка по складу... Если в остатке есть комплект, то нужна расшифровка (наверное дерево) по составу комплектующих...
Приветствую, Форумчане! УФ, самопис, учебная задача
Имеется номенклатура с реквизитом "Комплект" Если Номенклатура комплект, то в табличной части справочника заполняется состав комплекта. Причем в табличную часть могут попадать номенклатуры-комплекты, т.е. вложенные комплекты и так в принципе без ограничений.
Т.е. комплект может состоять из других комплектов, которые в свою очередб также состоять из комплектов и т.д.
Нужно получить отчет полного состава корневой Номенклатуры со всеми "простыми" комплектующими.
Как можно сформировать отчет СКД обойдя весь состав комплектующих? Как видно из условия уровень вложенности неограничен... Посоветуйте...
"РезультатПоТабличнойЧасти" - имеет 4 значения (4 строки, всё заполнено) Это таблица значений, которая передает данные из другой процедуры...
После выполнения запроса "РезультатЗапроса" имеет только 1 значение, т.е. только первую запись из временной таблицы. По идее, данный код просто ретранслировал данные из временной таблицы в результат.
Но почему только одну запись? Что я сделал не так? Код списал из учебного материала. В "учебнике" результат выдает полный, а у меня только одну первую запись...
Так выглядят данные из "РезультатПоТабличнойЧасти"
Индекс Значение элемента Тип элемента Ссылка Номенклатура 0 СтрокаТаблицыЗначений СтрокаТаблицыЗначений Реализация товаров и услуг ТД00-000043 от 13.05.2015 11:41:13 1 СтрокаТаблицыЗначений СтрокаТаблицыЗначений Реализация товаров и услуг ТД00-000043 от 13.05.2015 11:41:13 Вентилятор JIPONIC (Тайв.), напольный 2 СтрокаТаблицыЗначений СтрокаТаблицыЗначений Реализация товаров и услуг ТД00-000043 от 13.05.2015 11:41:13 Вентилятор BINATONE ALPINE 160вт, оконный 3 СтрокаТаблицыЗначений СтрокаТаблицыЗначений Реализация товаров и услуг ТД00-000043 от 13.05.2015 11:41:13 Кондиционер ELEKTA
Это результат выполнения запроса
Индекс Значение элемента Тип элемента Ссылка Номенклатура 0 СтрокаТаблицыЗначений СтрокаТаблицыЗначений Реализация товаров и услуг ТД00-000043 от 13.05.2015 11:41:13
denis84 @ Сегодня, 16:42
, Прочитать() так обновляет форму, что эта форма вообще пустой становиться.
Забыл самое главное сказать, что документ "РегистрацияКарты" создается программно и на момент изменения Спецификации еще не записан.
Т.е. Открывается новый заполненный данными документ, но не записанный. Далее выбирается реквизит Спецификация (он существует), вносят туда изменения и измененный должен вернуться в незаписанный документ
Приветствую, Форумчане! УПП 1.2, обычные формы, переписанный
На документе "РегистрацияКарты" имеется реквизит "Спецификация" с ссылкой на справочник "Спецификация" Есть ситуации, когда в выбранную спецификацию внести изменения в самом документе.
При нажатии на лупу этого реквизита открываю форму с передачей владельца формы
Контролировать весь процесс в ручном режиме? Т.е. после каждой операции смотреть и если что-то не так, то что-то предпринимать? :-) Неужели нет встроенного механизма контроля этой разницы? Эти проблемы с округлением проблема не сегодняшнего дня. Подозреваю, что я не являюсь первым, кто столкнулся с такой проблемой...
И почему эта проблема вспыхнула не со всеми номенклатурами, а только с какой-то горсткой...
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Решение
Всё оказалось значительно проще.
Есть константа в "Расчете себестоимости" - "Граница погрешности СЛУ" Там стояло значение "1.00"
Т.е. все погрешности по округлению меньше "1.00" программа распределяла, остальными игнорировала. Поставили "1.50" (4.00) - усё пройшло чудово
Поступила номенклатура "Шланг красивый" 20 метров на сумму 700 денег Начали его по-кусочкам расходовать в производство 0.008 м по 0,28 денег 0.123 м по 4.30(5) денег //уже проблемы с округлением по сумме
В РН "Учет затрат" документом "Распределение материалов на выпуск" легли записи по расходу и приходу аналогично 0.008 м по 0,28 денег 0.123 м по 4.30 денег
Если всё это просуммировать, то после окончательной реализации (списании) итог Шланг 20 м на сумму 701.40
Т.е. в результате этого округления накопились лишние 1.40 денег
После проведения документа "Расчет себестоимости выпуска" (типа закрытия месяца) эта разница никак не списалась и во всех отчетах висит остаток по сумме в 1.40 денег
Что было сделано неправильно, что осталась эта разница? И как теперь это можно исправить? Может есть какие-то настройки? дело в том, что таких позиций немного (штук 5), остальные вроде списались под ноль по сумме. Подскажите как с этим можно справиться?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!