Переделал задание, вместо табличной части спр-ка “Номенклатура” – “ЕдиницыИзмерения” ввел подчиненный спр-к “ЕдиницыИзмерения”, соот-но изменил код модуля спр-ка “Номенклатура”:
Процедура ПередЗаписью(Отказ)
Если ВидНоменклатуры <> Перечисления.ВидНоменклатуры.Услуга Тогда
Если НЕ ЗначениеЗаполнено(БазоваяЕдиницаИзмерения) Тогда
Сообщить("Заполните базовую единицу измерения");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ЗначениеЗаполнено(БазоваяЕдиницаИзмерения) Тогда
Единицы = Справочники.ЕдиницыИзмерения;
НайденнаяСсылка = Единицы.НайтиПоРеквизиту("Единица",БазоваяЕдиницаИзмерения,,ЭтотОбъект.Ссылка);
Если НайденнаяСсылка = Единицы.ПустаяСсылка() Тогда
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если Не ЭтоГруппа и Не ДанныеЗаполнения = Неопределено Тогда
ВидНоменклатуры = ДанныеЗаполнения.Родитель.ВидНоменклатуры;
КонецЕсли;
КонецПроцедуры
1. Создал спр-к “Номенклатура” с табличной частью “ЕдиницыИзмерения”. Модуль объекта спр-ка “Номенклатура”:
Процедура ПередЗаписью(Отказ)
Если ВидНоменклатуры <> Перечисления.ВидНоменклатуры.Услуга Тогда
Если БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Заполните базовую единицу измерения";
Сообщение.Сообщить();
Отказ = Истина;
Иначе
Если ЕдиницыИзмерения.Найти(БазоваяЕдиницаИзмерения,"Единица") = Неопределено Тогда
НоваяЕдиница = ЕдиницыИзмерения.Добавить();
НоваяЕдиница.Единица = БазоваяЕдиницаИзмерения;
НоваяЕдиница.КоэффициентПересчета = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если Не ЭтоГруппа и Не ДанныеЗаполнения = Неопределено Тогда
ВидНоменклатуры = ДанныеЗаполнения.Родитель.ВидНоменклатуры;
КонецЕсли;
КонецПроцедуры
2. Создал спр-ки “Контрагенты и Контактные лица”. Модуль формы обработки по проверке не заполненных контактных лиц:
&НаКлиенте
Процедура Проверка(Команда)
ПроверкаКонтрагентовСервер();
КонецПроцедуры
&НаСервере
Процедура ПроверкаКонтрагентовСервер()
Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа = Истина Тогда
Продолжить;
КонецЕсли;
Если Выборка.КонтактныеЛица.Количество() = 0 Тогда
Сообщить(Выборка.Наименование);
КонецЕсли;
КонецЦикла;
1. Что нового я узнал в первом блоке или в чем поменялись взгляды после изучения материала?
Прежде всего это объектный подход, до этого я пользовался только процедурными языками программирования. Имеющийся опыт и понимание баз данных через реляционные таблицы, безусловно, помогло, особенно при работе с конструктором запросов, но…
2. В какой теме были наибольшие затруднения, и что помогло их преодолеть?
…с объектным подходом до сих пор не всё так прозрачно. В начале блока вообще несколько потерялся, однако сейчас, в конце блока, уже легче, опыт нарабатывается, особенно при выполнении домашних заданий -спасибо за них отдельное!!! Понимание приходит постепенно но неуклонно. И быть может будет несколько проще начинающим идти по этому пути если бы…
3. Какую тему, имеющую отношение к текущему блоку, вы бы хотели подробнее раскрыть в мастер-группе?
…создать некую общую схему взаимосвязи типов значений, методов, их образующих, свойств, процедур и т. д. (понятно, что подобные схемы отдельными частями в разных местах курса рисуются, но тем не менее). То, что наблюдаешь в синтакс-помощнике в виде списка, удобнее было бы видеть на схеме с однозначным пониманием места, к примеру, функций и методов глобального контекста и методов отдельных объектов конфигурациии. Вот как-то так.
Еще раз спасибо!
Вход
Важно!
Для новых покупателей Базового курса - с чего начать
...........................................................
Все контакты Саппорта Spec8.ru
...........................................................
Как задавать вопросы по материалам курса и ДЗ
...........................................................
Что такое Мастер-группа
...........................................................
Все материалы этого сайта являются составной частью Базового / Продвинутого курсов по программированию - и являются объектами авторского и имущественного права.
Любое их распространение без письменного согласования с авторами запрещено.
Переделал задание, вместо табличной части спр-ка “Номенклатура” – “ЕдиницыИзмерения” ввел подчиненный спр-к “ЕдиницыИзмерения”, соот-но изменил код модуля спр-ка “Номенклатура”:
Если ВидНоменклатуры <> Перечисления.ВидНоменклатуры.Услуга Тогда
Если НЕ ЗначениеЗаполнено(БазоваяЕдиницаИзмерения) Тогда
Сообщить("Заполните базовую единицу измерения");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ЗначениеЗаполнено(БазоваяЕдиницаИзмерения) Тогда
Единицы = Справочники.ЕдиницыИзмерения;
НайденнаяСсылка = Единицы.НайтиПоРеквизиту("Единица",БазоваяЕдиницаИзмерения,,ЭтотОбъект.Ссылка);
Если НайденнаяСсылка = Единицы.ПустаяСсылка() Тогда
НоваяЕдиница = Единицы.СоздатьЭлемент();
НоваяЕдиница.Единица = БазоваяЕдиницаИзмерения;
НоваяЕдиница.КоэффициентПересчета = 1;
НоваяЕдиница.Владелец = ЭтотОбъект.Ссылка;
НоваяЕдиница.Записать();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если Не ЭтоГруппа и Не ДанныеЗаполнения = Неопределено Тогда
ВидНоменклатуры = ДанныеЗаполнения.Родитель.ВидНоменклатуры;
КонецЕсли;
КонецПроцедуры
1. Создал спр-к “Номенклатура” с табличной частью “ЕдиницыИзмерения”. Модуль объекта спр-ка “Номенклатура”:
Если ВидНоменклатуры <> Перечисления.ВидНоменклатуры.Услуга Тогда
Если БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Заполните базовую единицу измерения";
Сообщение.Сообщить();
Отказ = Истина;
Иначе
Если ЕдиницыИзмерения.Найти(БазоваяЕдиницаИзмерения,"Единица") = Неопределено Тогда
НоваяЕдиница = ЕдиницыИзмерения.Добавить();
НоваяЕдиница.Единица = БазоваяЕдиницаИзмерения;
НоваяЕдиница.КоэффициентПересчета = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если Не ЭтоГруппа и Не ДанныеЗаполнения = Неопределено Тогда
ВидНоменклатуры = ДанныеЗаполнения.Родитель.ВидНоменклатуры;
КонецЕсли;
КонецПроцедуры
2. Создал спр-ки “Контрагенты и Контактные лица”. Модуль формы обработки по проверке не заполненных контактных лиц:
Процедура Проверка(Команда)
ПроверкаКонтрагентовСервер();
КонецПроцедуры
&НаСервере
Процедура ПроверкаКонтрагентовСервер()
Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа = Истина Тогда
Продолжить;
КонецЕсли;
Если Выборка.КонтактныеЛица.Количество() = 0 Тогда
Сообщить(Выборка.Наименование);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ПроверкаКонтрагентовСервер()
Комментарии по первому блоку:
1. Что нового я узнал в первом блоке или в чем поменялись взгляды после изучения материала?
Прежде всего это объектный подход, до этого я пользовался только процедурными языками программирования. Имеющийся опыт и понимание баз данных через реляционные таблицы, безусловно, помогло, особенно при работе с конструктором запросов, но…
2. В какой теме были наибольшие затруднения, и что помогло их преодолеть?
…с объектным подходом до сих пор не всё так прозрачно. В начале блока вообще несколько потерялся, однако сейчас, в конце блока, уже легче, опыт нарабатывается, особенно при выполнении домашних заданий -спасибо за них отдельное!!! Понимание приходит постепенно но неуклонно. И быть может будет несколько проще начинающим идти по этому пути если бы…
3. Какую тему, имеющую отношение к текущему блоку, вы бы хотели подробнее раскрыть в мастер-группе?
…создать некую общую схему взаимосвязи типов значений, методов, их образующих, свойств, процедур и т. д. (понятно, что подобные схемы отдельными частями в разных местах курса рисуются, но тем не менее). То, что наблюдаешь в синтакс-помощнике в виде списка, удобнее было бы видеть на схеме с однозначным пониманием места, к примеру, функций и методов глобального контекста и методов отдельных объектов конфигурациии. Вот как-то так.
Еще раз спасибо!