Подготовка программистов 1С:8.2. Урок 4 из 30

Урок 4.
• наследование признака услуги из группы
• тип значения Null и Неопределено
• ОбработкаЗаполнения() при создании новых элементов, ДанныеЗаполнения, СтандартнаяОбработка
• Структура, стандартный механизм проверки заполения, ОбработкаПроверкиЗаполнения()
• теория: работа с синтаксис-помощником, отличия и связь между понятиями СправочникиМенеджер,СправочникМенеджер, СправочникВыборка,СправочникСсылка,СправочникОбъект
• практика: НайтиПоРеквизиту(), Общий модуль ОбщиеМеханизмы.ПолучитьСписокИменинников()
• ДЗ Добавить в справочник группы и исправить механизм получения списка именинников

Пікірлер: 89

  • @masha-chlenososka
    @masha-chlenososka2 жыл бұрын

    В разы доступнее и понятнее и Е.Гилёва, и А.Камкова!!! Спасибо огромное за Вашу работу!

  • @Jgychlolz
    @Jgychlolz9 жыл бұрын

    Каждые 10 минут ролика перевариваю час. Пересматриваю снова и снова. Складывается ощущение, что я тупой=(

  • @user-wj8yv1bs7f

    @user-wj8yv1bs7f

    8 жыл бұрын

    я вот тоже думаю - если сейчас так туго идет, то как же туго мне будет когда реальные задачи на работе пойдут. там придется все самому разгребать, гуглить и т п. Кстати, год уже прошел, у тебя что то получилось с обучением? программистом сейчас работаешь?

  • @pictusin

    @pictusin

    6 жыл бұрын

    Алексей Киселев, год уже прошёл, программистом работаешь?:))

  • @baxabay01

    @baxabay01

    6 жыл бұрын

    Сергей 2 месяца прошло получилось закончить обучение?))

  • @AlisherBekenov

    @AlisherBekenov

    6 жыл бұрын

    Неделя прошла досмотрел видео?

  • @user-rd2qs6ek1u

    @user-rd2qs6ek1u

    6 жыл бұрын

    Месяц уже прошел, дописал комментарий?

  • @Kwazikus
    @Kwazikus7 жыл бұрын

    Спасибо огромное за труд!!! Однако урок не рассчитан на начинающих, точнее манера изложения материала (та часть, где пишем код). Хотелось бы более разжевано и наглядно, на яблоках или кошках перед переходом на массивы и т.д. ============= Сам напоролся на грабли с автозаполнением реквизита "Услуга". Некоторые варианты в комментариях ниже уже упоминались. Поделюсь так же своим опытом, возможно кому то поможет: Итак, в теле процедуры в конце было записано: ДанныеЗаполнения.Вставить("Услуга",ДанныеЗаполнения.Родитель.Услуга); Вроде бы синтаксической ошибки нет, у реквизита "Услуга" выбрано использование для группы и элемента, а автоматическое заполнение не работает. Решил попробовать второй вариант: Услуга = ДанныеЗаполнения.Родитель.Услуга; Автозаполнение работает прекрасно, так в чем проблема? Оказалось, что в свойствах реквизита "Услуга" не установил галку (Заполнять из данных заполнения). После этого все заработало...

  • @GladOwnedHard
    @GladOwnedHard7 жыл бұрын

    посмотрел первые 20 минут и понял, что ничего не понял.

  • @Liteks713
    @Liteks7136 жыл бұрын

    Закипел мозг 😱

  • @sergeizub9048
    @sergeizub90485 жыл бұрын

    Слишком резкий контраст между предыдущим и этим занятиями! Тяжелейший урок! Пересматривать несколько раз только.. Жёстко Вы, Павел!

  • @chistovpavel

    @chistovpavel

    5 жыл бұрын

    Смотрите новый курс по 8.3 :) facebook.com/groups/spec1C/

  • @stanislavradchenko2468

    @stanislavradchenko2468

    3 жыл бұрын

    пришёл с js вроде все понятно. Только по синтаксису вопросы есть.

  • @user-zc6pd7jr3i
    @user-zc6pd7jr3i6 жыл бұрын

    День добрый! Сделал все, как описано в лекции, но мне выдало ошибку после запуска отладки: "Преобразование значения к типу Дата не может быть выполнено", нажимаю "Подробно...": "{ОбщийМодуль.ОбщиеМеханизмы.Модуль(12)}: Преобразование значения к типу Дата не может быть выполнено ДР_День = День(Выборка.ДатаРождения); ". Подскажите, пожалуйста, что я сделал не так?

  • @artemphoenix4852
    @artemphoenix48528 жыл бұрын

    Вопрос по проверке заполнения. А если идти от обратного, галочку не ставить "проверки заполнения" ЕдИзм, условие сделать "Если Не Условие ...", и Добавить("ЕдИзм") в массив ПроверяемыеРеквизиты. Красного подчеркивания у ЕдИзм не появляется. Можно ли как-то добавлять или убирать красное подчеркивание, чтобы пользователь видел необходимость заполнения?

  • @IronMan-rq3mu
    @IronMan-rq3mu7 жыл бұрын

    На 32:43 про галку я думаю вопрос был в другом. Думаю вопрос был в том: Что бы попасть в процедуру ОбработкаЗаполнения и получать данные для автозаполнения, галку ставить обязательно? Или можно только прописать в модуле элемента процедуру и этого будет достаточно?

  • @alexcooper525
    @alexcooper5259 жыл бұрын

    А у меня в массиве почему-то не отображаются единицы измерения, там только одна строка :(

  • @user-iu4kg2dl2u
    @user-iu4kg2dl2u7 жыл бұрын

    pp.vk.me/c837522/v837522656/23eb1/w-aSeWJJFoA.jpg Подскажите,у меня проблема в том,что в услугах у меня автоматически стоит "Шт",когда этого не должно быть,я не могу понять почему,и с кодом который закоменчен,тоже самое. и что странно когда пишите строку ПроверяемыеРеквизиты.Удалить и т.д. у меня не подсвечивается как у вас "ПроверяемыеРеквизиты"

  • @kalipso1485
    @kalipso14852 жыл бұрын

    Подскажите пожалуйста, код 29:32 для версии 8.3 будет корректен? почему-то результата нет такого, как у Вас.

  • @irinapavlova4079
    @irinapavlova40798 жыл бұрын

    В неуправляемых формах (платформа 8.2) почему то код с услугой не работает, все равно не заполнятся значение.

  • @beatbombit8617
    @beatbombit86178 жыл бұрын

    На видео плохо видно что за знак вы ставите в коде После слова Услуга на 19.29

  • @Koriolan2002
    @Koriolan20028 жыл бұрын

    Добрый день. Спасибо большое за уроки - все доходчиво и понятно изложено. Но у меня такой вопрос: Как при помощи ОбработкиПроверкиЗаполнения реализовать ситуацию автоматического заполнения предопределенного поля "Наименование" на основе данных других полей. Например, в справочнике "Физические лица" автоматически заполнить поле "Наименование", на основе значений дополнительных полей "Фамилия" и "Имя"?

  • @chistovpavel

    @chistovpavel

    8 жыл бұрын

    +Юрій Козьмін Ну взять и заполнить. В чем проблемы то?

  • @Koriolan2002

    @Koriolan2002

    8 жыл бұрын

    Павел Чистов Нет никакой проблемы. :) Идея состоит в том, чтобы пользователь заполнял реквизиты "Фамилия", "Имя" и "Отчество", а система сама на основе введенных данных формировала строку с фамилией и инициалами имени и отчества и заносила ее в строку "Наименование"

  • @IronMan-rq3mu
    @IronMan-rq3mu7 жыл бұрын

    т.е. 31я минута. У нас здесь несколько вариантов автоматического заполнения реквизитов при создании нового элемента Справочника. Для всех вариантов надо установить галку "Заполнять из данных заполнения" в желаемом реквизите . Что бы в процедуру приходили данные считанные из справочника, группы или отбора. 1. При просмотре справочника в момент создания элемента включить отбор по реквизиту 2. Вписать в модуль элемента справочника процедуру ОбработкаЗаполнения В неё вписать ДанныеЗаполнения.Вставить("Реквизит",ДанныеЗаполнения."Структура".Реквизит). Так отрабатывает встроенный механизм. Код СтандартнаяОбработка = Ложь в Процедуре ОбработкаЗаполнения выключит этот механизм и не один из реквизитов нового элемента не будет заполнен автоматически. И третий вариант Похож на простое присваивание реквизиту значения. вставить в Процедуру Код: Реквизит = ДанныеЗаполнения.Родитель.Реквизит; Верно понял?

  • @AlekseiAstahov
    @AlekseiAstahov6 жыл бұрын

    На 42:37 Не понятно, или прослушал где то. Вдруг без пояснения порядка вы начинаете обращаться к реквизитам объекта, перечислять их в условии. Понятно, что в процедуре идёт проверка заполнения указанных к проверке двух реквизитов объекта(элемента справочника). Не понятно, что вы перечисляете реквизиты в условии "Если НЕ ЭтоГруппа И Услуга" без пояснения. т.е. В условиях перечисляются любые реквизиты объекта?

  • @MrEdo
    @MrEdo8 жыл бұрын

    У меня галочка не ставиться при создании

  • @dionis2898
    @dionis2898 Жыл бұрын

    А где то есть эта база, на которой Павел работает в своих видео, или в начале все сами ручками создавали?

  • @avagafonov
    @avagafonov3 жыл бұрын

    Я вроде бы всё сделал, как показано. Но у меня выскакивает следующая ошибка "Преобразование значения к типу Дата не может быть выполнено {ОбщийМодуль.ЗапросДнейРождения.Модуль(12)}: ДР_Месяц = Месяц(Выборка.ДатаРождения); {МодульУправляемогоПриложения(63)}: СписокРаботн = ЗапросДнейРождения.ПолучитьСписокДнейРождения(); " Не пойму, что не так я делаю...

  • @arsenmaksimov
    @arsenmaksimov7 жыл бұрын

    У меня не показывает структуру, почему так?

  • @alexcooper525
    @alexcooper5259 жыл бұрын

    В результате получается выдает такую ошибку: Ошибка при выполнении обработчика - 'ОбработкаПроверкиЗаполнения' по причине: {Справочник.Номенклатура.МодульОбъекта(26)}: Ошибка при вызове метода контекста (Удалить) ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ЕдиницыИзмерения")); по причине: Несоответствие типов (параметр номер '1')

  • @user-xv4ol8eo2m
    @user-xv4ol8eo2m8 жыл бұрын

    не могу разглядеть элемент на 17мин-46сек.(где точка остановы) там написано а=0; ??

  • @lex200900

    @lex200900

    7 жыл бұрын

    Да

  • @user-nq1eo8xn4h
    @user-nq1eo8xn4h8 жыл бұрын

    Написал ЕдИзм, выходила ошибка "Несоответствие типов, параметр 1", написал "ЕдиницаИзмерения", заработало

  • @user-ib9xr4ez7e
    @user-ib9xr4ez7e8 жыл бұрын

    Подскажите пожалуйста, я еще попробовал сделать чтобы услугам не заполнялось автоматически поле ЕдИзм, для этого в обработчике ОбработкаЗаполнения, Пробовал: ЕдИзм=Null ЕдИзм=неопределенно ЕдИзм=Справочники.ЕденицыИзмерения.кг Последнее работает , но я хочу чтобы для услуг не заполнялось вобще поле ЕдИзм Заранее спасибо ..

  • @alexkuzko8460

    @alexkuzko8460

    5 жыл бұрын

    Если ДанныеЗаполнения.Свойство("Родитель") И ДанныеЗаполнения.Родитель.Услуга=ИСТИНА Тогда ДанныеЗаполнения.Вставить("ЕдИзм", Неопределено); Конецесли

  • @uvkiselev
    @uvkiselev9 жыл бұрын

    От красных точек можно было избавиться т.о.: не устанавливать флаг выдавать ошибку в свойствах, вместо этого в коде написать если товар - не услуга -то в массив добавляем реквизит "едИзм"

  • @olegdanilenko6037
    @olegdanilenko60379 жыл бұрын

    Уважаемый Павел, на 18:54 данного видео я делаю в 1ске тоже самое что и вы, но при этом значение параметра Услуга у меня стоит Ложь , а не истина как у вас.Не могли бы вы объяснить, почему это может происходить.

  • @user-pe5ii9ff4u

    @user-pe5ii9ff4u

    9 жыл бұрын

    oleg danilenko , задайте группе - Сопр. услуги, значение того что она является Услугой...

  • @zvoni03

    @zvoni03

    6 жыл бұрын

    нельзя этого сделать в версии 8.3, у меня переключается с группы на записи в группе самой и там ставит галку, а при создании или изменение группы этот реквизит отсутствует.

  • @zvoni03

    @zvoni03

    6 жыл бұрын

    Правильное, выше писали, у Реквизиты -> Услуги -> Использование надо выбрать "Для группы и элемента".

  • @vladyan01
    @vladyan012 жыл бұрын

    Как сделать чтобы "Тогда" и "КонецЕсли;" автоматически заполнялось как у вас?

  • @romansalnikov5079

    @romansalnikov5079

    2 жыл бұрын

    Печатаешь Если затем жмёшь CTRL + Q

  • @nMUSHKETER
    @nMUSHKETER3 жыл бұрын

    Я правильно понимаю, что проверка на "ЕдИзм" делается только для КонцТоваров, а для услуг просто не проверяется, что не препятствует создание новых услуг с заполненной автоматически ЕдИзм.

  • @user-yj8zo9zk6z
    @user-yj8zo9zk6z6 жыл бұрын

    Эти уроки для новичков или уже для подготовленных специалистов? Просто я только начал изучать 1С. Если честно я из этого урока не понял ничего.

  • @pictusin

    @pictusin

    6 жыл бұрын

    Мотай, парень, мотай) Я этот часовой урок общей сложности 4 часа с чем то смотрел

  • @dimasibl9415

    @dimasibl9415

    2 жыл бұрын

    @@pictusin я неделю переваривал

  • @user-zm5hh4gr1o
    @user-zm5hh4gr1o7 жыл бұрын

    На 18:30 - 49 я бы иначе сказала при создании нового элемента в справочнике номенклатура, у нового элемента установился бы Признак услуги (галочка установилась бы) автоматически только при установленном отборе "услуга", так как мы в свойствах реквизита "услуга" справочника "номенклатура" на вкладке "представление" поставили галку "заполнять из данных заполнения", но мы хотим, что бы признак услуга у нового элемента появлялся не по установленному при просмотре отбору, а по признаку группы справочника номенклатура в которой создаётся новый элемент. Для этого из данных заполнения мы считаем значение реквизита "Услуга" из свойства "родитель".

  • @chistovpavel

    @chistovpavel

    7 жыл бұрын

    Ольга Астахова не могу понять ценность комментария. Я могу и по другому сформулировать, смысл не поменяется...

  • @user-zm5hh4gr1o

    @user-zm5hh4gr1o

    7 жыл бұрын

    Да смысл тот же, просто мысли в слух. Мне казалось моя фраза понятнее.

  • @user-gl1of9qi3l
    @user-gl1of9qi3l7 жыл бұрын

    чтото не сходится... на 44:38 при сохранении доставка с галкой услуга и с пустым полем едизм - сохраняет а у меня нет. проверил как дела в канцтоварах - там без едизм тоже не сохраняет, что правильно. а с услугой не получается. при чем перепроверил - по первому варианту кода та же ерунда. в общем по любому если едизм пусто - то сохранить нельзя пять раз перепроверил - все одинаково... помогите... второй час бьюсь...

  • @user-gl1of9qi3l

    @user-gl1of9qi3l

    7 жыл бұрын

    о!!! заработало))) самое обидное - сам не понял почему....

  • @user-zm5hh4gr1o
    @user-zm5hh4gr1o7 жыл бұрын

    На 27:57 я правильно понимаю, что если СтандартнаяОбработка = ложь, то это отменяет действие установленной галки в свойствах реквизита "услуга" справочника "номенклатура" на вкладке "представление"? Если бы мы в других реквизитах установили аналогичную галочку, то отменилось бы действие их всех?

  • @chistovpavel

    @chistovpavel

    7 жыл бұрын

    Нет, не правильно. Отменяется стандартное для обработчика события действие, и мы описываем свое собственное.

  • @IronMan-rq3mu

    @IronMan-rq3mu

    7 жыл бұрын

    "Если бы мы в других реквизитах установили аналогичную галочку, то отменилось бы действие их всех?" Я тоже так понимаю.

  • @molchanov911
    @molchanov9119 жыл бұрын

    Если ОдинИзСложныхУроков.МногоВопросовВозникло Тогда ОдинИзСложныхУроков.Вставить (НадоМногоЧитать);

  • @greenman3396

    @greenman3396

    8 жыл бұрын

    +Владимир Молчанов КонецЕсли;

  • @Managerbtc

    @Managerbtc

    5 жыл бұрын

    Иначе Программист = "Балбес";

  • @user-oo6mf5zh6i
    @user-oo6mf5zh6i9 жыл бұрын

    Для тех, у кого выходит ошибка :"Преобразование значения к типу Дата не может быть ДР_День = День(Выборка.ДатаРождения)", попробуйте добавить проверку: Если ЗначениеЗаполнено(Выборка.ДатаРождения) Тогда ДР_День=День(Выборка.ДатаРождения); ДР_Месяц=Месяц(Выборка.ДатаРождения); Если ДР_Месяц=ТД_Месяц И ДР_День=ТД_День Тогда Массив.Добавить(Выборка.Наименование); КонецЕсли; КонецЕсли;

  • @chistovpavel

    @chistovpavel

    9 жыл бұрын

    Ошибка связана с тем, что выборка перебирает все, и элементы и группы, а реквизит ДатаРождения для групп не включен, и при попытке получения значения реквизита система возвращает NULL. Проверку нужно делать на признак группы, а не на заполненность реквизита. К тому же использовать метод ЗначениеЗаполнено() зная заранее тип значения - крайне неэффективно.

  • @user-oo6mf5zh6i

    @user-oo6mf5zh6i

    9 жыл бұрын

    Павел Чистов Понятно, спасибо

  • @victortsukanov7523

    @victortsukanov7523

    8 жыл бұрын

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

  • @w1z891
    @w1z8917 жыл бұрын

    Делаю все как показано, только в 8.3. Все равно галочку "услуги" не ставить автоматом

  • @igorteploukhov2611

    @igorteploukhov2611

    7 жыл бұрын

    Может быть у Реквизиты -> Услуги -> Использование "Для группы и элемента не выбрано". Или может ошибка в написании быть. Если написать Услуги заместо Услуга в (ДанныеЗаполнения.Вставить("Услуга", ДанныеЗаполнения.Родитель.Услуга);) то ставить галочку не будет где надо, но и ошибку выдавать тоже. Проверьте всё. На 8.3 делаю тоже, так как показано всё работает.

  • @skymckup

    @skymckup

    5 жыл бұрын

    В процедуре ОбработкаЗаполнения (ТекстЗаполнения) есть? Уберите...

  • @kak1c
    @kak1c5 жыл бұрын

    Решил пересмотреть. Скорее всего из за платформы некоторый код отказывается работать. //Тут в ДанныеЗаполнения Неопределено и работать с проверкой свойства получается вроде как нельзя. Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Если ДанныеЗаполнения.Свойство("Родитель") Тогда Услуга = ДанныеЗаполнения.Родитель.Услуга; КонецЕсли; КонецПроцедуры //А тут в массиве ПроверяемыеРеквизиты кроме Наименования ничего нет, собственно тоже ошибка. Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если Услуга И НЕ ЭтоГруппа Тогда ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ЕдИзм")); КонецЕсли; КонецПроцедуры

  • @freetemple8612

    @freetemple8612

    5 жыл бұрын

    Для ЕдИзм нужно поставить ПроверкаЗаполнения -> выдавать ошибку. Тогда оно попадает в проверяемые реквизиты

  • @freetemple8612

    @freetemple8612

    5 жыл бұрын

    ДанныеЗаполнения нужно проверять на Неопределено, потому что в некоторых случаях отсутствует поле родитель

  • @BiGSplush
    @BiGSplush4 жыл бұрын

    Я когда смотрел видосик, на этапе написания проверки ДР сотрудников поставил на паузу, решил попробовать написать все сам, написал, работает, потом вижу домашку "Найдите ошибку в проверке именинников и почему она не работает", мое лицо - =_=, моя проверка работает)

  • @arkenonporos8511
    @arkenonporos85116 жыл бұрын

    Почему Вы не указали способ: Услуга = истина; вместо ДанныеЗаполнения.Вставить("Услуга", ДанныеЗаполнения.Родитель.Услуга); Ведь это одно и тоже на мой субъективный взгляд. И то что происходит в Услуга = истина; Для понимания непросветленных умов на много проще.

  • @chistovpavel

    @chistovpavel

    6 жыл бұрын

    Потому что мы принципиально хотели использовать стандартный механизм и не творить костыли при заполнении.

  • @userPoJava
    @userPoJava5 жыл бұрын

    Худшее занятие из всех, протокольным языком. Тупо сидел переписывал, а что делал ХЗ.

  • @ukrainesov21
    @ukrainesov212 жыл бұрын

    Очень много лишней информации. Сплошной сумбур. Учитель из вас не очень, если честно. Вы подаете информацию как будто рассказываете самому себе, а вас вообще-то слушает аудитория. Нельзя просто брать и вкидывать инфу, не объясняя подробно почему вы что-то делаете именно так. Мне, например, как человеку, изучающему другой язык программирования вообще не понятно, каким образом вызывается описываемые Процедуры, а также передаваемые в нее параметры, переменная "Услуга"... Это какая-то стандартная глобальная переменная? Откуда программа понимает что вы имеете в виду переменной "Услуга = ..."?? Эти моменты не объясняются вообще. Слушатель сидит как баран, вроде слушает внимательно, но ничего понять не может в силу отсутствия явной логики в подаваемом материале. Прошло 8 лет, возможно, вы сегодня умеете объяснять яснее )))

  • @defolt5811

    @defolt5811

    Жыл бұрын

    Привет, не бросил изучать ещё?