Базовый курс. Финальное задание 27-го потока
Объявляем начало финала 27-го потока базового курса по программированию.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
Добрый день.
Отчет по финальному заданию 27-го потока.
Шаг 1. Обратная связь.
В своей практике продолжительное время использую платформу 8.1. В последнее время все больше и больше проектов внедряю на 8.2 и 8.3.
Курс проходил, чтобы устранить “белые пятна”, систематизировать свои знания.
После прохождения курса стал чувствовать себя увереннее, стал более полно понимать концепцию управляемых форм и платформы в целом.
Материал в курсе преподносится очень подробно и доходчиво.
В каждом домашнем задании есть какая-то особенность, которая “заставляет” поразмыслить над его реализацией, посмотреть справку, что способствует хорошему закреплению изученного материала.
Формат обучения в сравнении с очным форматом оказался очень удобным. Самые главные преимущества для меня:
– изучение в удобное время и в удобном месте.
– всегда можно вернуться к материалам и пересмотреть, уточнить непонятные вопросы.
Но есть небольшой минус, как продолжение достоинств – нужно развить в себе силу воли и самодисциплину, чтобы уложиться в временные сроки курса.
Выражаю благодарность создателям курса и всей команде, поддерживающей его.
С уважением,
Кончаков Илья Александрович
г. Воронеж.
Шаг 2. Практическое задание
1. В справочнике “Серии” добавить реквизит “НомерСерии” с типом строка неограниченной длинны. Установить для созданного реквизита свойство
“Проверка заполнения” в “Выдавать ошибку”.
2. В документе “Покупка товаров”:
– в табличной части товары для реквизита “Количество” исправить тип на число (15, 3);
– в процедуре “ОбработкаПроведения” добавить строку кода “Движения.ТоварыНаСкладе.Записывать = Истина;”
– В модуле формы в обработчике “ЗаполнитьКлиента” исправить строку “Объект.Клиент = Справочники.Клиенты.ОсновнойПокупатель;” на “Объект.Клиент
= Справочники.Клиенты.ОсновнойПоставщик;”, но правильнее добавить константу “ОсновнойПоставщик” с типом “СправочникСсылка.Клиенты” и считывать
значение из нее.
– В модуле формы в процедуре “ЗаполнитьТовары” заменить: строку кода “ВвестиЗначение(Основание, “Выберите документ-основание”, Тип
(“Документ.ПокупкаТоваров”));” на “ВвестиЗначение(Основание, “Выберите документ-основание”, Тип(“ДокументСсылка.ПокупкаТоваров”));”, алгоритм
заполнения реализовать по-другому, например:
Процедура ЗаполнитьТовары(Команда)
Перем Основание;
//ВвестиЗначение(Основание, "Выберите документ-основание", Тип("Документ.ПокупкаТоваров"));
ВвестиЗначение(Основание, "Выберите документ-основание", Тип("ДокументСсылка.ПокупкаТоваров"));
Если НЕ Основание.Пустая() Тогда
// ЗаполнитьТоварыНаСервере(Объект.Ссылка, Основание);
ЗаполнитьТоварыНаСервере1(Основание);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТоварыНаСервере1(ДокументОснование)
Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
КонецПроцедуры // ЗаполнитьТоварыНаСервере()
3. Для регистра накопления “ТоварыНаСкладе” добавить в качестве регистратора документ «Продажа товаров»;
4. Для документа «Продажа товаров» в процедуре «ОбработкаПроведения» необходимо:
– изменить запрос: данные таблицы “ПродажаТоваровТовары” необходимо прочитать во вложенном запросе (или временной таблице), не забыв добавить
условие “ПродажаТоваровТовары.Ссылка = &Ссылка”, затем сгруппировать по полям “Товар” и “Серия”. Только после этого соединить с виртуальной таблицей “РегистрНакопления.ТоварыНаСкладе.Остатки” при помощи левого соединения. Предусмотреть ситуацию по обработке значения NULL для полей
“КолОст” и “СумОст”, например, используя функцию “isnull”.
– при проверке на “недостачу” в случае выполнения условия установить переменной “Отказ” значение “Истина”, добавить код “Продолжить;”
– Зменить строку “Запись.Сумма = ВыборкаТовары.СумОст/ВыборкаТовары.КолОст*Запись.Количество;” на “Запись.Сумма = ?(ВыборкаТовары.КолОст = 0,
0, Запись.Количество * ВыборкаТовары.СумОст/ВыборкаТовары.КолОст);”
5. В документе «Продажа товаров» кнопка “ФормаПроверкаДокумента” и связанный с ней программный код проверки лишен смысла, так как он проверяет на отрицательное значение реквизита “Количество”, у которого установлено свойство “Неотрицательное”. Эту кнопку и связанный с ней код следует удалить или пересмотреть алгоритм проверки.
Шаг 3. Помощь ближним
http://www.forum.mista.ru/topic.php?id=708684
Ник: fleet
Добрый день, Илья!
Благодарим вас за обратную связь.
Финальное задание принято, поздравляем с успешным окончанием базового курса!
1. Обратная связь.
Моргунов Дмитрий Олегович, Оренбургская область, город Новотроицк.
Должность – инженер-программист. Организацию указывать не буду.
Курс великолепен. Всё разложено по полочкам, каждая “полочка” отдельно рассматривается, изучается каждая деталь. Всё очень хорошо упорядочено, “разжёвано”. Да, некоторые моменты были тяжелыми, более 50% курса тяжело даётся с первого взгляда, однако к концу курса уже понимаешь, что то, что было в начале, что раньше ты не понимал, теперь понятно. То есть некоторые моменты, непонятные с первого взгляда, становятся понятными потом, в процессе реальной работы или же домашних заданий, которые тоже весьма замороченные (на мой взгляд), однако мтоже прибавляют знаний и опыта.
В процессе реальной работы вспоминаю какие-то моменты из курсов, стараюсь воспроизвести, чтобы лучше отложилось в голове. И действительно, многие “заковырчатые” моменты, которые встречаются в реальной работе, были рассмотрены в данном курсе, и уже ошибки в таких местах просто не допускаешь, что очень радует. Да, конечно же, уровень знаний по сравнению со многими другими специалистами очень низкий, однако уже полученные знания радуют, понимаешь, что всему этому реально научиться.
Конечно, формат обучения тоже не может не радовать. Видеоформат очень удобен. Вначале своего освоения 1С я обучался в одном франче самым начальным основам. Что сказать… ну да, знания некоторые были получены, но за те деньни и то время, что я потратил, можно было как раз купить и изучить данный курс, который дал намного больше знаний с меньшими затратами денег и времени (2 часа туда-сюда только на дорогу).
К сожалению, изучение курса пало на относительно психологически тяжелый период жизни: за два дня до начала курса я устроился на новую работу, на которой в первый же день я бросил курить. Ну, как и у многих людей, самочувствие ухудшилось, ничего не хотелось, да и до сих пор бывают психологические срывы. Однако сейчас, спустя 3 месяца, я всё ещё не курю, всё ещё на этой работе, и вот уже изучил базовый курс по программированию, что очень радует. Так что изучить данный курс можно пребывая в таком вот непростом состоянии (даже помогает отвлечься иногда), проверено =)
2. Практическое задание.
а. Номер серии делается обязательным для заполнения в справочнике Серии, делаем в стандартных реквизитах в реквизите код поле ПроверкаЗаполнения на Выдавать ошибку.
б. Создал предопределенный элемент ОсновнойПокупатель в справочнике “Клиенты”. Процедура ЗаполнитьКлиента в Документе покупкаТоваров вызывалась на клиенте, сделал вызов серверной процедуры с клиента, код тот же, что и был в клиентской процедуре. Теперь при нажатии на кнопку Заполнить клиента ошибки не выводятся.
в. В Документе покупкаТоваров заполнил движения по регистру. Каждое поле соответствовало определенному полю в табличной части документа.
г. В документе ПокупкаТоваров в модуле формы документа изменил код:
Процедура ЗаполнитьТовары(Команда)
Перем Основание;
ВвестиЗначение(Основание, "Выберите документ-основание", Тип("ДокументСсылка.ПокупкаТоваров"));
Если НЕ Основание.Пустая() Тогда
ЗаполнитьТоварыНаСервере(Основание);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТоварыНаСервере(ДокументОснование)
Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
КонецПроцедуры // ЗаполнитьТоварыНаСервере()
д. В параметрах запуска 1С:Предприятия прописан толстый клиент, поставил «Выбирать автоматически».
е. У РН регистратором сделал и документ ПродажаТоваров.
ж. У документа ПродажаТоваров при нажатии на кнопку проверитьДокумент вызывается серверная процедура общего модуля, однако в данном общем модуле не стоит галочка вызов сервера, поставил галочку, чтобы можно было вызывать данную процедуру с клиента.
з. У ресурса Количество РН ТоварыНаСкладе точность сделал 3.
и. В документе продажа товаров у реквизита ТЧ серия не установлены связи параметров выбора, а именно Отбор.Владелец(Товары.Товар), также, как и у документа ПокупкаТоваров. Нужно чтобы отображались только те серии, которые принадлежат определенному товару.
к. В процедуре проверитьДокумент использовал вместо “Предупреждение” сообщение = новый сообщениеПользователю.
л. У реквизита Количество в документе покупка товаров изменил тип данных на числовой длина 15 точность 3.
м. В модуле объекта документа ПродажаТоваров если товара нет в достаточном количестве на складе, необходимо помимо сообщения прописать Отказ = Истина, чтобы документ не проводился.
н. Сделал проверку в запросе на естьNull для полей КолОст, СуммаОст.
3. Помощь новичкам.
Дописываю статью на инфостарте, через час будет готова и будет проходить модерацию. Извиняюсь, что в последний день всё, вот так вот получилось, всё на лету, ничего не успеваю =) Последнее 15ое ДЗ оформлю решение и сегодня же скину.
Дмитрий, благодарим вас за развернутый отзыв!
Практическое задание принято, ждем отчет по шагу №3.
Не понял, как здесь вставлять скриншоты, скинул на хостинг.
http://imgoo.ru/619627/ea5a/JlKK4lWA5jY/XqDpua.jpg
http://imgoo.ru/619627/ea64/jN12FszGjIk/76aff2.jpg
Сделал статейку по 1С:ДО. Не знаю, когда модераторы одобрят.
Дмитрий, принято!
Поздравляем, вы в списке финалистов базового курса!
Ну вот, пришло письмо:
Ваша публикация “Автоматическое заполнение шаблонов из дополнительных реквизитов “1С:Документооборот 8″.” принята модератором.
Ссылка на публикацию: http://infostart.ru/public/280115/
Шитова Людмила Васильевна,экономист г Белгород
Шаг 1.
До этого была знакома с программированием 1с 8.2,но многого не понимала. Изменилось отношение к отладчику,не ожидала,что он является таким хорошим помощником программисту.Сначала была легкая паника,думала,не дойду до финала,не справлюсь,но ,как говорится,глаза боятся, а голова думает.Были проблемы в воспроизведением защищенных видеоуроков, обратилась в службу поддержки,помогли,за это им отдельное большое спасибо.Благодаря обширному материалу,собственной усидчивости во многом разобралась, повысила свою самооценку.Все три месяца жила только учебой. Детально разбиралась каждая тема .Понравилось то , что преподаватели не скрывали,что сами допускают ошибки.Исправляя их,они учили этому и нас.Я поняла,не страшно допускать ошибки,главное их вовремя заметить и устранить.Понравилось отношение преподавателей к ученикам, доброжелательное, не свысока.Объем,подача материала-все на высшем уровне.Большой плюс-самостоятельное планирование процесса обучения, небольшой минус-вопросы при интерактивном общении задавать легче.
Шаг 2.
1.Для того, чтобы отладка запускалась в тонком клиенте: Сервис – Параметры – Запуск 1с: Предприятия – Приложение тонкий клиент. Для отладки в толстом клиенте уже есть кнопка. Правая кнопка мыши на корневом элементе конфигурации – п. Открыть командный интерфейс рабочего стола – установим флаг видимость у регистра накопления. Теперь команда открытия регистра накопления будет в панели навигации.
2.Справочник “Серии”. Видим, что номер серии вводится в поле стандартного реквизита код. Удобнее использовать для этой цели стандартный реквизит Наименование. На закладке Данные увеличим длину наименования с 0 до 15, укажем основное представление – в виде наименования, дадим стандартному реквизиту наименование синоним Номер серии. Свойство Проверка заполнения – в значении “Выдавать ошибку”, укажем, что поле Наименование будет доступно для ввода по строке (вместо кода) (на закладке Формы). Длину кода сделаем 0.
3.У ресурса Количество регистра накопления сделаем точность 3.
4.Документ “Покупка товаров”. У реквизита табличной части Количество неправильно указан тип (строка, а нужно число 15,3, неотрицательное). Выставляем флажок записи в процедуре Обработка проведения.
Форма документа и её модуль. Проблемы с выполнением команды ЗаполнитьТовары. В параметрах функции ВвестиЗначение неправильно указан 3-й параметр. Правильно: Тип ( “Документ ссылка.ПокупкаТоваров “). Делаем процедуру ЗаполнитьТоварыНаСервере контекстной, убираем первый параметр . В неё из клиентской процедуры передаем теперь один параметр – Основание. Первую строку серверной процедуры закомментируем ,во второй строке загружаем в табличную часть текущего документа выгруженную табличную часть документа – основания ( до этого была ошибка – Табличная часть не выгружалась).
Закомментируем строку // Если не основание . Пустая () Тогда ,вместо этого : Если ВвестиЗначение(…) Тогда ,так не будет выдаваться непонятное для пользователя сообщение об ошибке, если он закрыл окно, ничего не выбрав.
В процедуре ЗаполнитьКлиента (Команда) идет обращение к предопределенному элементу ОсновнойПокупатель справочника “Клиенты” (последнего нет среди предопределенных элементов справочника, он и не нужен, так как документ закупки, и нужен поставщик, такой предопределенный элемент у справочника есть). Вместо ОсновнойПокупатель пишем ОсновнойПоставщик. Само значение поставщика получаем в функции Получить Клиента () с директивой компиляции НаСервереБезКонтекста и возвращаем в клиентскую процедуру (до этого пытались обойтись одной клиентской процедурой).
5.Документ “Продажа товаров” . Он не является регистратором регистра накопления Товары на складах. Исправляем.В свойствах реквизита табличной части- Серия, а именно свойстве Связи параметров выбора укажем отбор по владельцу, которым является товар.
Форма документа и её модуль.Проверка корректности заполнения документа. Проверяется наличие отрицательного количества. В процедуре общего модуля ПроверкаДокументовСервер в запросе можно поле Товар не выбирать, далее в алгоритме оно не используется. Функция Предупреждение недоступна на сервере в режиме тонкого клиента, поэтому заменяем её на функцию Сообщить(), убираем параметр таймаут. Можно сравнить Выборка.Количество() с нулем, и если равенство верное, выдать сообщение об отсутствии ошибок. В свойствах общего модуля не поставлен флаг Вызов сервера , ставим V. Но эта проверка избыточная. так как в свойствах реквизита табличной части количество указано, что тип – неотрицательное число. Программа просто не дает ввести минусовое значение ( Если снимем флаг неотрицательное , то проверка сработает, но для этого надо будет сначала записать документ, а потом нажать кнопку ПроверкаДокумента).
Модуль объекта.Процедура Обработка Проведения . В запросе нужно сначала свернуть дубли строк табличной части. Поэтому создаем сначала вложенный запрос, где выбираем поля: Товар, Серия, Количество из текущего документа, производим группировку по товару и серии, количество – суммируемое поле. И уже из созданной таким образом таблицы выбираем необходимые поля (Товар, Серия, Количество). Между таблицами должно быть не внутреннее, а левое соединение. В параметрах виртуальной таблицы в условии укажем , что отбор должен быть не только по товару, но и по серии документа. Указываем первый параметр виртуальной таблицы & Момент, остатки будут получаться на момент времени документа. К числовым полям применяем функцию is null. При определении суммы для регистра накопления проверяем числитель на 0, деление выполняем последним, при недостаче Отказ = Истина;. Перед запросом очищаем записи, сделанные в регистре накопления документом, записываем пустой набор записей ( чтобы не было ошибок при перепроведении документа).В сообщении о нехватке кроме товара указываем ещё и серию.
Шаг 3.
Помощь ближнему.http://forum-1c.ru/index.php?topic=38873.0
Елена, благодарим вас за отзыв!
Финальное задание принято, поздравляем с успешным окончанием базового курса!
Шаг 1.
Усков Александр Вячеславович, г.Новомосковск Тульской области. ОАО «Новомосковский институт азотной промышленности», бухгалтер.
В очередной раз убедился, что не решаемых задач (в пределах разумного конечно-же) не бывает, при этом абсолютно точно знаю, что прежде чем что-то менять, необходимо не 7 раз, а 777, а то и больше раз подумать, стоит-ли? Узнал, что платформа имеет возможность «доработки» без вмешательства в основную конфигурацию (это главное заблуждение, в которое меня ввели до начала изучения 1С). Будучи программистом, избавился от заблуждения, что этот код будет очень тяжело понять, сейчас многое прояснилось, и уже образовался совершенно другой взгляд на «язык» 1С.
На данный момент (с помощью полученных знаний и просторов интернета) подключил к основной конфигурации доработанные внешние формы:
– Счет на оплату, с указанием договора и периода предоставления услуги;
– Созданный практически с «нуля» Акт предоставления услуг по аренде недвижимого имущества;
– Отпускная записка, формы движения ОС (прием в эксплуатацию, внутреннее перемещение, акт на списание) с заполненным «подвалом»;
– Откорректировал форму реестра платежных поручений (добавил поле с отображение текста назначения платежа). В данный момент работаю над созданием внешней формы реестра ПП и ежедневного отчета по банку установленного шаблона, т.е. макета
На мой взгляд данная форма обучения, является максимально удобной, по сравнению с очным форматом. Все плюсы Вами уже описаны и повторять их не вижу смысла, а минусы я, честно говоря, не обнаружил. Даже при возникновении вопросов они решаются довольно оперативно, при обращении по электронной почте. Спасибо Вам за работу!
Шаг 2.
1) Документы – ПокупкаТоваров – Модуль объекта – ОбработкаПроведения – добавил строку: Движения.ТоварыНаСкладе.Записывать = Истина;
2) Документы – ПродажаТоваров – Данные – ТабличныеЧасти – Товары – Серия – Связи параметров выбора – установил: Отбор.Владелец(Товары.Товар)
3) Добаил константу: ОсновнойПоставщик, с привязкой к справочнику Клиенты.
4) Справочники – клиенты: присутствует предопределенный элемент ОсновнойПоставщик? – удалил.
5) Документы – ПокупкаТоваров – ФормаДокумента – Модуль практически полностью переписан:
Процедура ЗаполнитьКлиента(Команда)
Объект.Клиент = ПолучитьОсновногоПоставщика();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОсновногоПоставщика()
Возврат Константы.ОсновнойПоставщик.Получить();
КонецФункции
&НаКлиенте
Процедура ЗаполнитьТовары(Команда)
Перем Основание;
ВвестиЗначение(Основание, "Выберите документ-основание", Тип("ДокументСсылка.ПокупкаТоваров"));
Если НЕ Основание.Пустая() Тогда
ЗаполнитьТоварыНаСервере(Основание);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТоварыНаСервере(ДокументОснование)
ЗначениеВРеквизитФормы(ДокументОснование.Товары,"Объект.Товары");
КонецПроцедуры
6) Документы – ПродажаТоваров – Движения – Регистры накопления – отметил «ТоварыНаСкладе»
7) Документы – ПродажаТоваров – Модуль объекта откорректировал:
Движения.ТоварыНаСкладе.Очистить();
Движения.ТоварыНаСкладе.Записать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПродажаТоваровТовары.Товар КАК Товар,
| ПродажаТоваровТовары.Серия,
| ПродажаТоваровТовары.Количество КАК КолДок,
| ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КолОст,
| ТоварыНаСкладеОстатки.СуммаОстаток КАК СумОст,
| ПродажаТоваровТовары.НомерСтроки
|ИЗ
| Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(
| &Период,
| Товар В
| (ВЫБРАТЬ
| ПродажаТоваровТовары.Товар
| ИЗ
| Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
| ГДЕ
| ПродажаТоваровТовары.Ссылка = &Ссылка)) КАК ТоварыНаСкладеОстатки
| ПО ПродажаТоваровТовары.Товар = ТоварыНаСкладеОстатки.Товар
| И ПродажаТоваровТовары.Серия = ТоварыНаСкладеОстатки.Серия
|ГДЕ
| ПродажаТоваровТовары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Период", Ссылка.Дата);
Результат = Запрос.Выполнить();
ВыборкаТовары = Результат.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
Недостача = ВыборкаТовары.КолДок - ВыборкаТовары.КолОст;
Если Недостача>0 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Недостаточно товара "+ВыборкаТовары.Товар+" в количестве "+Недостача;
Сообщение.Поле = "Товары["+(ВыборкаТовары.НомерСтроки-1)+"].Количество";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Если Не Отказ Тогда
Запись = Движения.ТоварыНаСкладе.ДобавитьРасход();
Запись.Период = Дата;
Запись.Товар = ВыборкаТовары.Товар;
Запись.Серия = ВыборкаТовары.Серия;
Запись.Количество = ВыборкаТовары.КолДок;
Запись.Сумма = ВыборкаТовары.СумОст/ВыборкаТовары.КолОст*ВыборкаТовары.КолДок;
КонецЕсли;
КонецЦикла;
Движения.ТоварыНаСкладе.Записывать = Истина;
КонецПроцедуры
8) На форме продажа товара существует абсолютно непонятная кнопка: «проверка документа». Алгоритм команды, выполняемый при нажатии на эту кнопку проверяет (точнее должен был проверять) случайно указанное в документе отрицательное количество товара, учитывая, что в свойствах реквизита «количество» установлена пометка на неотрицательное число, проверка теряет смысл. Удалил кнопку вместе со связанным с ней программным кодом.
9) По просьбе Виолы Григорьевны: Справочники – серии – данные – стандартные реквизиты – код – свойства – проверка заполнения – выдавать ошибку.
Шаг 3.
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=627244
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=627279
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=627274 (на момент написания отчета – обсуждение находится в процессе)
Александр, благодарим вас за обратную связь по курсу!
Практическое задание и шаг №3 приняты. Поздравляем, вы в списке финалистов!
Саяпина Татьяна Ильинична, ведущий инженер-программист ОАО “Буреягэсстрой”, г.Благовещенск, Амурская обл.
Шаг 1. Вопросы по курсу
Пройденный базовый курс по 1С был первым в изучении программирования на платформе 8.2 для меня. Вся изложенная информация кажется необходимой. Очень понравилось изложение материала, как будто в «прямом эфире». Доска, цветные мелки, ошибки, исправление ошибок. Все это очень оживляет внимание. Очень понравилось отношение к ошибкам. Потому, что в жизни не бывает все с чистого листа. А «подсмотреть» как справляются с неполадками такие гуру, как Евгений Гилев, всегда интересно и поучительно. Большое спасибо , Евгений, за живость изложения!
Изменилось в корне отношение ко многим вещам, но в частности , к запросам, к их значимости для производительности всей системы. Вопрос повышения производительности всегда стоит перед программистом в любой платформе. В голове всегда возникает несколько путей решения поставленной задачи, но после пройденного курса однозначно сложились представления о приоритетах решений. Не работая на сегодняшний день с платформой 1С:Предприятие 8, усвоено много принципов программирования и реализовано уже в практическом подходе даже на 1С 7.7.
Формат обучения очень удобный. Можно планировать свое время занятий, по несколько раз пересматривать непонятный материал, даже делать пошагово за преподавателем некоторые «штучки». Для просмотров курсов оказалась очень удобна кнопка «План график». Настроив ее под начало своего 27 потока, было легко распланировать время.
Хотелось бы отдельно сказать, что в начале курса наблюдалась некоторая дезориентация в программе, но с каждым занятием, приглядываясь к «подчерку» преподавателя, начинаешь усваивать материал. Возникает желание научиться такой же легкости манипулирования данными и выставляется личная планка профессионализма.
Шаг 2. Практическое задание
1.Документ «Продажа товаров» запрос в процедуре «ОбработкаПроведения» должен выбирать только те строки которые есть в таблич.части документа, т.е. связь должна быть «ЛЕВОЕ СОЕДИНЕНИЕ». Желательно сгруппировать данные по товару и серии. При обнаружении недостачи критерий «Отказ» равен ИСТИНЕ и документ не проводится.
2. Регистр накопления должен быть настроен на два регистратора «ПокупкаТовара» и «ПродажаТовара»
3. Документ «Покупка товара» содержит кнопку «Заполнить клиента». Для работы кнопки надо создать реквизит булевского типа «ОсновнойПокупатель» в справочнике «Клиенты». По действию кнопки должен срабатывать запрос на сервере к справочнику клиенты по условию истины к реквизиту «Основной покупатель». Хотя логичнее, наверное, было назвать «Основной поставщик».
4. Исправим параметр диалога «Ввести значение» в действие по кнопке «Заполнить товары» Тип(“ДокументСсылка.ПокупкаТоваров”).
5. Реквизит «Количество» табл.части «Покупка товара» назначим тип значения число.
6. Процедура «ОбработкаПроведения» документа «Покупка товара» должна записывать движение по накопительному регистру остатков «Товары на складе».
7. В табличной части документа «Продажа товара» серия документа должна быть привязана к товару по связи параметров выбора как подчиненный документ
8. Модуль «ПроверкаДокументовСервер» в общих модулях должен иметь выставленную галочку «Разрешает вызов сервера» и предупреждение надо изменить на сообщение.
9. Проверка на отрицательно число при проверке документа лишена смысла, т.к. реквизит имеет тип неотрицательного числа.
10. Стандартный реквизит «Код» справочника «Серии» выступает как номер серии. В свойствах стандартных реквизитов выставляем Проверка заполнения – Выдавать ошибку.
11. Слово «Объект» не может быть использоваться как переменная в форме документа, так как это зарезервированное слово. Можно использовать, например, «Объект1».
12. Чтобы получить загрузку в табличной части документа «Покупка товара» сделать выгрузку из табличной части документа-основания.
Шаг 3. Помощь ближним. Написана небольшая статья на тему «Применение технологии OLE Automation в системе «1С:Предприятие» версии 8.2» (http://infostart.ru/public/277982)
Татьяна, благодарим вас за развернутый отзыв!
Финальное задание принято, поздравляем с успешным окончанием базового курса!