1С: Создание внешней печатной формы УФ + отладка

Поделиться
HTML-код
  • Опубликовано: 1 янв 2025

Комментарии • 49

  • @alexandrsevostyanov1842
    @alexandrsevostyanov1842 6 лет назад +1

    Первое обучающее видео по 1С, которое более-менее не скучно смотреть)

  • @АлександрТурчанинов-к7р

    Дима, привет!
    Благодарю за такое подробное видео! Очень было для меня полезно. Спасибо от души! Снимай ещё.

  • @Дмитрийсекрет-н7о
    @Дмитрийсекрет-н7о 9 лет назад +1

    Огромный Респект и уважуха. Для новичков самое то. Побольше таких уроков )))

  • @ДедМазай-с1л
    @ДедМазай-с1л 10 лет назад

    от души за видео, 3 дня до этого мучался с отладкой) уже сляпал себе шаблон для отладки!!! СПАСИБО!!!

  • @benko1347
    @benko1347 5 лет назад +1

    Без воды и по теме. Спасибо!

  • @ИндираМиргасимова

    Спасибо! Классное видео! Молодцы! Я начинающий программист 1с, все очень доступно объяснено, но застряла на следующем моменте: как на минуте 21:26 Вы в табло вставили КоллекцияПечатныхФорм.

    • @EgoMelius
      @EgoMelius  10 лет назад

      Долго не мог понять, о чем вы:) Можно тремя способами передать туда значение: 1) написать руками имя параметра/переменной/объекта 2) скопировать из модуля нужное имя через ctrl+c, а затем в табло вставить через ctrl+v 3) выделить нужное имя в модуле, зажать левую кнопку мыши и перетащить в табло. Кажется именно так я и сделал.

    • @ИндираМиргасимова
      @ИндираМиргасимова 10 лет назад

      Разобралась.

  • @newtanik
    @newtanik 9 лет назад +1

    Отличный урок! Здорово помог. Огромная благодарность автору!

  • @СтаниславВасев-т4с

    Эталон хорошего информативного видеоурока.

  • @guliev100
    @guliev100 9 лет назад

    По больше подобных уроков! Автору РЕСПЕКТ!

  • @ОльгаЖелезняк-т7щ

    Спасибо! Очень доходчиво и голос приятный!

  • @annarakhimova8059
    @annarakhimova8059 9 лет назад +1

    Дмитрий, спасибо за видео! Все получилось:)

  • @MrTankoff
    @MrTankoff 10 лет назад +1

    Дмитрий, ОГРОМНОЕ спасибо.
    Очень хороший урок, действительно рассказано и показаны те ошибки с которыми сам столкнулся и не мог решить.
    Еще раз спасибо.
    А есть еще где ваши уроки для ознакомления ?

    • @EgoMelius
      @EgoMelius  10 лет назад

      Спасибо за приятные слова. Пароль от аккаунта потерял, долго не заходил сюда) Да, видео есть, но не выложены. Планирую в ближайшие дни что-нибудь новое разобрать. Думаю будет перевод базы из файлового варианта на клиент-серверный с разбором возможных ошибок. А далее скорее всего пойдут разборы типовых функций и процедур. Как показывает практика, начинающие разработчики их вовсе не используют, а ведь могут значительно облегчить себе жизнь.
      p.s. к примеру на днях видел написанную в общем модуле процедуру, заполняющую цену товара. В то время как в самой типовой конфигурации(в данном случае речь идет о КА 1.1) есть замечательное решение: ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(); + ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект); +
      ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);

  • @dexxxqqq
    @dexxxqqq 9 лет назад +1

    Спасибо большое! Очень помогло. Сделал подобное для документа СборкаТоваров. С отладкой правда немного закис. Не открывается макет и все. Сделал все как в уроке: параметр отладка передается нормально. Но при нажатии кнопки "Отладка" ничего не происходит.

  • @ЮрийТрутнев-о5я
    @ЮрийТрутнев-о5я 6 лет назад +1

    Спасибо, видео отличное. Но куды бечь, если печатная форма, копию которой я создаю, печатается не из обработки "ПечатьВнешнихФорм"?

  • @maximkorennoy2208
    @maximkorennoy2208 8 лет назад +1

    Здравствуйте! Так как все таки поступить с методом Показать()? он недоступен на сервере... всё верно, в толстом клиенте таблица выводится, но если через конфигуратор запускать отладку, то запускается в тонком клиенте и ошибка остается актуальной.

  • @hdv777
    @hdv777 8 лет назад

    годный мануал. для начинающих просто клад.

  • @arazallahverdiyev57
    @arazallahverdiyev57 9 лет назад

    Ochen Xoroshiy urok. Mojna pokazat , kak dobavit tekushiy dolq kontragenta v nakladnoy?

  • @AshrapovLenar
    @AshrapovLenar 9 лет назад +1

    Спасибо за иформацию

  • @arthurnanava6911
    @arthurnanava6911 7 лет назад +1

    Очень помогли!)

  • @kkon3474
    @kkon3474 8 лет назад

    Большое спасибо за видео, очень помогло, особенно в части организации отладки ПФ. Кстати, у меня на сегодняшний день стоит последняя версия платформы, 8.3.8.2054, отладка там слетает постоянно, приходится перезапускаться.

  • @lsentinell
    @lsentinell 8 лет назад

    Хороший урок, единственный подходящий, который я смог найти при этом рабочий. Только вот не работает отладка, нет доступа к методу "Показать()"

  • @lega3893
    @lega3893 9 лет назад

    Дмитрий здравствуйте! Вы отладку запускали в тонком клиенте? Просто у меня метод Показать() работает только в толстом клиенте.

  • @almeier3314
    @almeier3314 8 лет назад

    У меня не открывается обработка на начальном этапе, пишет ошибку "задано неправильное имя атрибута структуры" хотя код тот же. в чем мб проблема? База Ут 11.1 Демо

  • @kvt5002
    @kvt5002 10 лет назад

    на 10:18 что за волшебство?

    • @EgoMelius
      @EgoMelius  10 лет назад

      Скорость печати, никакого волшебства) Отвлекали меня, пришлось вырезать некоторые моменты. Но весь текст виден.

  • @NordAtland
    @NordAtland 9 лет назад

    Подскажите пожалуйста горячие клавиши для вставки конструкций языка (типа "Если" и др.)

    • @EgoMelius
      @EgoMelius  9 лет назад +1

      +Юрий Север Погуглите, их полно. На практике я использую: ctrl+space (завершение ключевого слова или функции/процедуры), ctrl+q(завершение конструкции). Обязательно научитесь пользоваться Home End(конец и начало строки), используйте клаву с вынесением этих клавиш в отдельный блок. Это существенно ускоряет написание кода и самое важное - его редактирование, то есть приведение в удобно читаемый вид. Вот еще: ctrl+ стрелка лево/право - быстрый переход через все пробелы к первому символу(попробуйте - поймете). Для красивого удаления строк: Home(переходи в начало строки) и shift+вниз - выделяет вся строка без лишнего захвата символов на новой строке, а дальше del. Раньше для этого использовал ctrl+L в любом месте строки, она сразу удаляется, но минус в том, что она пихается в буфер обмена, где частенько лежит что-то нужное. Переучивался пару дней.

    • @NordAtland
      @NordAtland 9 лет назад

      Дмитрий Мелиус
      спасибо большое Дмитрий за развернутый ответ! побольше было бы ваших видео!

  • @СтаниславЧайковский-м9щ

    Скорее всего отладка будет работать только в файловом варианте работы базы. На серверной базе все равно не получиться провалиться в серверные процедуры. А так супер.

  • @wiktornajda
    @wiktornajda 10 лет назад +3

    Предлагаю вместо параметра "Отладка" использовать что-то вроде этого
    &НаСервере
    Процедура ОтладкаНаСервере()
    ОбъектОбработка = РеквизитФормыВЗначение("Объект");
    СтрокаМакетов = "";
    Для каждого ТекМакет Из ОбъектОбработка.Метаданные().Макеты Цикл
    СтрокаМакетов = СтрокаМакетов + ?(СтрокаМакетов = "", "", ",") + ТекМакет.Имя;
    КонецЦикла;
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
    КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(СтрокаМакетов);
    ОбъектыПечати = Новый СписокЗначений;
    ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
    ОбъектОбработка.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
    Для каждого ТекСтр Из КоллекцияПечатныхФорм Цикл
    Если ТекСтр.ТабличныйДокумент Неопределено Тогда
    ТекСтр.ТабличныйДокумент.Показать(ТекСтр.СинонимМакета, , Истина) ;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    • @EgoMelius
      @EgoMelius  10 лет назад

      Хороший вариант! На видео была чистая импровизация, поэтому не до такого кода было:
      Для каждого ТекМакет Из ОбъектОбработка.Метаданные().Макеты Цикл
      СтрокаМакетов = СтрокаМакетов + ?(СтрокаМакетов = "", "", ",") + ТекМакет.Имя;
      КонецЦикла; =))

  • @ИндираМиргасимова

    Благодаря Вам научилась делать внешние печатные формы. Следующая задача - научиться создавать внешние отчеты. Например, в данный момент мне требуется создать внешний отчет в 1с 8.3 ЗУП 3.0 личную карточку Т-2, которая находится в Отчеты/Отчеты по сотрудникам (для дальнейшего редактирования). Может быть поделитесь ссылкой, где подробно разъяснено как делать отчеты или может быть видео выложите. Очень нужно! Заранее спасибо!

    • @ИндираМиргасимова
      @ИндираМиргасимова 10 лет назад

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

    • @EgoMelius
      @EgoMelius  10 лет назад

      Индира Миргасимова Не пойму, в чем задача состоит? Зайдите в конфигуратор, сохраните отчет как внешнюю обработку. Внешний отчет готов.

    • @ИндираМиргасимова
      @ИндираМиргасимова 10 лет назад

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

    • @EgoMelius
      @EgoMelius  10 лет назад

      Индира Миргасимова Я с ЗУПом не работаю, под рукой сейчас только типовая БП 3.0. В ней есть отчет карточкаТ2, внутри есть объект типа "Соответствие" называется ДополнительныеСведения. Также для вывода карточкиТ2 есть кусок кода:
      // Отпуск
      МассивЗаголовков = Новый Массив;
      МассивЗаголовков.Добавить(ЗаголовокДополнительногоЛиста);
      МассивЗаголовков.Добавить(ЗаголовокОтпуска);
      ДокументРезультат.Вывести(ЗаголовокОтпуска, Уровень+1);
      ДокументРезультат.Вывести(ШапкаОтпуска, Уровень+1);
      ДанныеЗаполнения = ДополнительныеСведения.Получить("ДанныеЗаполненияОтпуска");
      Посмотрите, как формируется это соответствие, что туда попадает. В БП 3.0 в одном из общих модулей лежит код заполнения этого соответствия(выйти на него просто, порядка 2-3 процедур), там даже и не пахнет запросами из регистров каких-либо отпусков за свой счет, только положенные законодательством. Добавьте свой запрос в этот модуль или лучше в своем внешнем отчете добавьте в соответствие ДополнительныеСведения необходимые поля. Поймайте отладчиком момент формирования карточки и посмотрите, что лежит в этом ДополнительныеСведения, так будет понятнее, что с ним делать. На самом деле задача не должна быть такой уже сложной, главное сделайте запрос, который вернет все отпуска за свой счет и впихните эти данные в момент отрисовки макета карточкиТ2. Как именно это делать, по шагам, вам никто не скажет.

    • @EgoMelius
      @EgoMelius  10 лет назад

      В макете карточкиТ2 есть раздел отпуска, посмотрите названия параметров. С вероятностью в 99.99% данные, которые лежат в ДанныеЗаполнения = ДополнительныеСведения.Получить("ДанныеЗаполненияОтпуска"); имеют схожие названия. Соответственно добавьте новые данные о новых отпусках с теми же именами. Это всего лишь один из вариантов.
      Ну да, смотрю код:
      // Отпуска
      Запрос = Новый Запрос;
      Запрос.УстановитьПараметр("Сотрудники", СтрокиДанных.ВыгрузитьКолонку("РабочееМестоСотрудник"));
      Запрос.Текст =
      "ВЫБРАТЬ
      | Отпуск.Сотрудник КАК Сотрудник,
      | Отпуск.Номер КАК НомерПриказа,
      | Отпуск.Дата КАК ДатаПриказа,
      | Отпуск.ДатаНачалаОсновногоОтпуска КАК ДатаС,
      | Отпуск.ДатаОкончанияОсновногоОтпуска КАК ДатаПо,
      | Отпуск.КоличествоДнейОсновногоОтпуска КАК ДнейОтпуска,
      | Отпуск.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодС,
      | Отпуск.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодПо,
      | Отпуск.Основание
      |ИЗ
      | Документ.Отпуск КАК Отпуск
      |ГДЕ
      | Отпуск.Проведен
      | И Отпуск.Сотрудник В(&Сотрудники)
      |
      |УПОРЯДОЧИТЬ ПО
      | Сотрудник,
      | ДатаС";
      РезультатЗапроса = Запрос.Выполнить();
      Если НЕ РезультатЗапроса.Пустой() Тогда
      ДанныеЗаполнения = Новый Соответствие;
      ВыборкаОтпуска = РезультатЗапроса.Выбрать();
      Пока ВыборкаОтпуска.СледующийПоЗначениюПоля("Сотрудник") Цикл
      ДанныеЗаполненияПоСотруднику = Новый Массив;
      Пока ВыборкаОтпуска.Следующий() Цикл
      СтруктураСтроки = Новый Структура();
      СтруктураСтроки.Вставить("ВидОтпуска", НСтр("ru='Основной'"));
      СтруктураСтроки.Вставить("ДатаС", ВыборкаОтпуска.ДатаС);
      СтруктураСтроки.Вставить("ДатаПо", ВыборкаОтпуска.ДатаПо);
      СтруктураСтроки.Вставить("ДнейОтпуска", ВыборкаОтпуска.ДнейОтпуска);
      СтруктураСтроки.Вставить("РабочийГодС", ВыборкаОтпуска.РабочийГодС);
      СтруктураСтроки.Вставить("РабочийГодПо", ВыборкаОтпуска.РабочийГодПо);
      СтруктураСтроки.Вставить("ОснованиеОтпуска", "Пр.№ "+ СокрЛП(ВыборкаОтпуска.НомерПриказа) +" от "
      + Формат(ВыборкаОтпуска.ДатаПриказа, "ДЛФ=D") + " " + ВыборкаОтпуска.Основание);
      ДанныеЗаполненияПоСотруднику.Добавить(СтруктураСтроки);
      КонецЦикла;
      ДанныеЗаполнения.Вставить(ВыборкаОтпуска.Сотрудник, ДанныеЗаполненияПоСотруднику);
      КонецЦикла;
      ДополнительныеСведения.Вставить("ДанныеЗаполненияОтпуска", ДанныеЗаполнения);
      КонецЕсли;
      Названия полей те же. По аналогии добавьте свой запрос.

  • @kvt5002
    @kvt5002 10 лет назад

    а для БП 3.0 есть шаблон печатной формы?

    • @EgoMelius
      @EgoMelius  10 лет назад

      Вы имеете в виду шаблон заготовки для внешней печатной формы? Так подойдет та, что на видео. БП 3.0 - это тоже управляемые формы, как и УТ 11

  • @JohnDoe-fv5cu
    @JohnDoe-fv5cu 9 лет назад +2

    Быстро и не понятно. Может это для продвинутых 1с разработчиков, но продвинутые вряд ли не смогут этого сделать сами. На урок не тянет

    • @EgoMelius
      @EgoMelius  9 лет назад +5

      Konstantin Serov Как вы можете судить, нужен ли этот урок для продвинутых разработчиков или нет, если сами таковым не являетесь? К слову, урок для очень начинающих. В пору, когда появились управляемые формы и стали входить в моду, вокруг создания ВПФ и тем более их отладки создавалось ОЧЕНЬ много тем на разных форумах, посвященных программированию 1С, так что можете мне верить, вопрос актуален и по сей день.

  • @Зарубежныебеспилотники

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

    • @EgoMelius
      @EgoMelius  9 лет назад +16

      +Зарубежные беспилотники Не, так не интересно. интернет пестрит отредактированными видео, где все получается с первого раза. Я пришел в мир программирования, не зная что такое переменная, и лично меня очень удручало, что у всех вроде все получается с лету, а я вожусь по несколько часов, чтобы написать простейшее выражение. А все на самом деле не так. Когда выполняешь реальное задание, ошибок выскакивает много, в том числе и после сдачи работ. Все ошибки я оставил специально. И это всего лишь печатная форма. Когда работаешь над серьезной задачей сложностей появляется в разы больше и порой тупить приходится не один день.