Финальное домашнее задание – Теперь с решениями!
Финальное домашнее задание базового курса по программированию.
Задание коренным образом отличается от обычных ДЗ, которые мы решали в ходе курса.
Внимание: прием решений уже завершен. Но, думаю, всем будет полезно посмотреть на возможные решения :)
Финальное домашнее задание состоит трех частей:
1. Решить практическую задачу (см. ниже), плюс написать по ней отчет. Что должно быть в отчете – указано в самом задании.
2. Вы уже достаточно опытные специалисты, поэтому наступает момент не только впитывать новые знания, но отдать их во внешний мир, поделиться информацией с другими людьми.
Мы предлагаем Вам два варианта, как это можно сделать:
- Провести для своих клиентов/коллег по цеху мини-семинар (30-ти минут достаточно) на тему «Основные фишки платформы 8.2». В качестве отчета – вполне подойдут фотографии с этого мероприятия.
- Помочь разобраться со сложным вопросом на каком-либо форуме по 1С. При этом нужно детально подойти к решению проблемы. Идеальный вариант – это видео-разбор какой-либо проблемы. Для записи можно использовать Jing (http://www.techsmith.com/jing/, он дает возможность бесплатно записывать мини-уроки до 5 минут). Нам нужно будет предоставить ссылку на обсуждение.
3. Ответить на ряд вопросов по прохождению базового курса (вопросы – в задании).
Текст задания доступен по ссылке.
ИБ для выполнения первой части задания скачивайте по ссылке.
Update.
Шаг 2 финального домашнего задания. Поступило несколько просьб придумать еще один вариант выполнения этого шага. Т.к. не всегда возможно устроить публичную презентацию, либо “повисеть” на форумах (сам захожу туда уже около года).
Можно написать небольшую статью на любую интересную вам тему по платформе “1С:Предприятие 8.2”. Статью нужно будет опубликовать на сайте с соответствующей тематикой, например, http://nashe1c.ru/, http://infostart.ru/.
Ps. Конечно прямой перевод наших видео-материалов в текст с картинками мы не одобряем. Правильным было бы написать о том механизме, который у вас наиболее срезанировал во время обучения. Причем написать со своей точки зрения.
Pps. Отчет о ДЗ нужно писать прямо в этой ветке. Многие участники уже начали писать отчеты, но не удивляйтесь, что вы не видите их комментарии – так и задумано :)
Ppps. В отчете по первой части финального ДЗ нужно привести список ошибок М.Н. Выгрузку базы присылать не нужно.
ШАГ 1
1. Процедура Предупреждение не доступна на сервере .
2. Обращение к серверу Справочники.Клиенты.ОсновнойПокупатель в клиентской
3. Вызов серверного метода ПроверитьДокумент из клиентской процедуры
4. Справочники Товар и Клиенты не иерархические, что вряд ли будет удобно пользователям
5. Документы — не установлена проверка заполнения на уровне реквизитов для ТЧ
6. Реализация — в ТЧ для Серии не установлено свойство Связи параметров выбора
7. Поступление — у реквизита Количество тип Строка
8. Поступление – в обработке проведения не хватает строчки Движения.ТоварыНаСкладе.Записывать = истина;
9. Реализация — не указан РН ТоварыНаСкладе на закладке Движения
10. Реализация — при проведении существующие движения не очищаются
11. Реализация — Обработка проведения Сообщение пользователю не привязано к строке ТЧ
12. Реализация — при нехватке товара документ все равно проводиться , при этом часть товара списывается(что есть на остатке), а часть нет.
13. Реализация — контроль остатков в разрезе серии не осуществляется, а только в целом по товару
14. Реализация — запрос с ошибками ( нет группировки по номенклатуре и серии, нет проверки остатка на NULL)
15. Процедура ПроверитьДокумент проверяет данные из БД (по ссылке), а не открытый документ
16. Для работы в Толстом клиенте не созданы соответствующие формы у объектов – создать обычные формы или поставить флажок Использовать УФ в обычном приложении и создать УФ только для справочников.
17 Для контроля заполненности номера Серии необходимо поставить флажок для стандартного реквизита
ШАГ 2
http://www.nashe1c.ru/materials-view.jsp?id=344
ШАГ3
1. Работа с управляемым интерфейсом, работа с СКД, решение расчетных задач и многие фишки по программированию, которые теперь активно применяю.
2. На самом деле в 1С нет ничего сложного, особенно когда такие учителя как Вы.
3. Новые знания пока применить не удалось, однако строчка в резюме о знании управляемого интерфейса привлекла одного клиента.
4. Основное удобство — самостоятельное распределение своего времени на обучение, а также возможность всегда повторить какие-то темы.
Борис, по финальному ДЗ – отлично.
Поздравляю вас с успешным финалом базового курса!!!
статью только что опубликовали по адресу:
http://www.nashe1c.ru/materials-view.jsp?id=342
Статью рекомендую прочитать всем, кто переходит с 8.1 на 8.2!!
Пока нашел следующее:
1. не установлен флаг записи регистра в поступлении товаров
2. заполнение “клиента” в “поступлении товаров” выпонять на сервере
3. вызов процедуры общего серверного модуля из клиента в документе “продажа товаров”. установим флаг Вызов сервера для общего модуля
4. если документ “продажа товаров” не записан, то проверка документа не корректная
5. код в справочнике “серий” делаем обязательным для заполнения (проверка заполнения) и уникальным
6. документ “Продажа” не является регистратором для РН “ТоварыНаСкладах”
7. “Предупреждение” из общего модуля не доступно на сервере. через “сообщение”, например.
8. в запросе получения остатков в документе “продажа товаров” не установлен период получения остатков для регистра
9. при проведении и закрытии документа “продажа товаров” не видно сообщения о нехватке товара и документ проводится
10. неправильно реализовано списание по сериям.
11. в запросе получения остатков лучше левое соединение использовать, чтобы было видно каких товаров из документа и их серий нет на складе
12. ввод на основании реализовать стандартными средствами, или для заполнения использовать процедуру модуля объекта “ОбработкаЗаполнения”
13. перенести команду ЗаполнитьТовары в командную панель формы
14. типа “Документ.ПокупкаТоваров” нет. Есть “ДокументСсылка.ПокупкаТоваров”
15. надо очищать движения документа “продажа товаров” перед выполнением запроса к остаткам.
Может где и не правильно. Это то что бросилось в глаза. Жалко что не хватает времени для подробного изучения ошибок.
Со всем перечисленным согласен.
По шагу 1 – зачет.
Александр, не вижу отчета по шагу 2 и 3..
По п.1 финального задания.
1. Сервис, Параметры – Включить Обычное и управляемое приложение (хотя, так как
сказано, должно работать на всех клиентах, то достаточно управляемого и это не ошибка).
2. Сервис, Параметры – вместо Толстый клиент, включить Выбирать автоматически.
3. Количество должно быть не отрицательно – регистр товары на складе, включить флажок
4. Количество должно быть не отрицательно – ПродажаТоваров, включить флажок
5. Сумма должна быть не отрицательной – регистр товары на складе, включить флажок
6. Сумма должна быть не отрицательной – ПродажаТоваров, включить флажок
7. Сумма должна быть не отрицательной – Покупка товаров, включить флажок
8. ПокупкаТоваров – количество строка, заменить на количество число, 15 и 3, включить флажок не отрицательное
9. После включения автоматический запуск вместо запуска в толстом клиенте, возникает ошибка при проведении реализации:
{Документ.ПродажаТоваров.Форма.ФормаДокумента.Форма(4,2)}: Переменная не определена (ПроверкаДокументовСервер)
<>ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка);
Общий модуль ПроверкаДокументовСервер – в Свойства включить ВызовСервера
10. Нет контроля уникальности серий при вводе новой серии – добавить
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
11. Нет движений Товары на складе при поступлении.
Процедура ОбработкаПроведения(Отказ, Режим)
//Добавить
Движения.ТоварыНаСкладе.Записывать = Истина;
12. В ПродажаТоваров – регистра нет на форме.
Причина – не включен регистратор (появляется при включении регистратора).
13. Ошибка проведения ПродажаТоваров – не включен регистратор
{Документ.ПродажаТоваров.МодульОбъекта(4)}: Поле объекта не обнаружено (ТоварыНаСкладе)
Движения.ТоварыНаСкладе.Записывать = Истина;
14. При повторном проведении проведенного ПродажаТоваров, в движениях регистра – не удаляются движения предыдущего списания.
Если документ проведен, сначала удалять движения.
15. Нет контроля сроков годности при закупке на нарушение сроков и на приближение к сроку, возможно, при длительном технологическом процессе, не хватит времени для выпуска качественного пива.
16. Нет контроля сроков годности при продаже – для пива это принципиально.
17. Нет учета сертификатов – сделала отчет.
18. Нет отчетов для оценки запасов, сроков годности, прибыли – добавить.
19. В ПродажаТоваров, когда товар отсутствует в остатках, в том числе, по серии, нет выдачи сообщения об этом – добавить is null в запрос.
20. Сообщение при недостаточности товаров при продаже, если такой товар в остатках есть, с учетом серии – мелькает на секунду и закрывается.
Использовать предупреждение или оповещение.
21. В ПокупкаТоваров подставляется предопределенный покупатель, надо поставщик.
ОсновнойПокупатель заменить на ОсновнойПоставщик в предопределенных
22. В ПокупкаТоваров – заменить Основной покупатель на ОсновнойПоставщик
23. В ПокупкаТоваров ошибка
{Документ.ПокупкаТоваров.Форма.ФормаДокумента.Форма(4,18)}: Переменная не определена (Справочники)
Объект.Клиент = <>Справочники.Клиенты.ОсновнойПоставщик; (Проверка: Тонкий клиент)
В ПокупкаТоваров – сделать вызов процедуры на сервере
Процедура ЗаполнитьКлиента(Команда)
//Объект.Клиент = Справочники.Клиенты.ОсновнойПокупатель;
ЗаполнитьКлиентаНаСервере(Объект.Ссылка);
КонецПроцедуры
Процедура ЗаполнитьКлиентаНаСервере(ТекущийДокумент)
Объект = ТекущийДокумент.ПолучитьОбъект();
Объект.Клиент = Справочники.Клиенты.ОсновнойПоставщик;
КонецПроцедуры // ЗаполнитьКлиентаНаСервере()
24. Опечатка в ПродажаТовара – Недостаточно товава.
Исправить.
25. Нет учета качества товара для возможности продажи по сниженным ценам пива, срок годности которого истекает – добавить.
26. Нет цены и автоматического расчета суммы для закупки и продажи, хотя, по условиям задачи это не ошибка.
27. Нет ролей
28. Нет пользователей.
29. Нет интерфейсов.
30. Нет подсистем.
>10. Нет контроля уникальности серий при вводе новой серии – добавить
Достаточно было настроить свойства стандартных реквизитов.
23. Правильнее делать так:
Объект.Клиент = ПредопределенноеЗначение(“Справочник.Клиенты.ОсновнойПокупатель”);
Либо делать внеконтекстный серверный вызов, который будет возвращать предопределенный элемент.
Ирина, по шагу 1 – зачет.
В предыдущем моем сообщении не полностью скопировался программный код процедуры обработкапроведения док. ПродажиТоваров, он смешался с другими фрамгментами кода.
Она, наверное, слишком большая, если нужно я ее полностью выложу, но пока не выкладываю.
И мне показалось, что не попал еще следующий текст:
Также сделал поле «номер серии» в справочнике серии обязательным для заполнения (как требуется в задании)
Улучшения, которые можно провести в конфигурации:
1. автоматический пересчет суммы при изменении количества товарах в документах
2. При нажатии на кнопку ПроверкаДокумента в док. ПродажаТоваров можно не только проверять отрицательное количество, но также проверять нулевую, отрицательную сумму, проверять, что количество строк в таб. Части больше 0, проверять, не истек ли срок годности товаров, который записан в серии
3. Общий модуль ПроверкаДокументовСервер, можно сделать Процедуру ПроверитьДокумент(Документ) универсальной, чтобы она могла проверять не только документ ПродажаТоваров (как сейчас), но и другие документы, например Покупкатоваров.
4. При проведении док. ПродажаТоваров можно проверять, не продали ли мы какой-нибудь товар ниже себестоимости и выдавать в таких случаях информационные сообщения.
5. Сейчас контрагент по умолчанию зашит в конфигурации как предопределенный элемент и пользователь не может его изменить. Лучше использовать константу ОсновнойКонтрагент и дать возможность пользователю ее изменять самому.
6. Возможно, клиент захочет иметь отчет по остаткам товаров.
7. Если в этой конфигурации будет работать несколько пользователей, то хорошо было бы завести справочник пользователи, добавить во всех документах реквизит Ответственный, завести роли, создать пользователей ИБ с паролями.
а пункт 26. исправленных ошибок должен выглядеть так
26. Документ ПродажаТоваров. Кнопка ПроверкаДокумента. Проверка происходит по данным, записанным в базу данных, если же документ еще не был записан (а строки пользователь уже ввел) или документ был ранее записан, но пользователь сделал в нем изменения и их еще не записал, то в этом случае эти незаписанные в БД изменения не будут участвовать в проверке. Чтобы исправить эту ошибку и проверять строки, которые пользователь видит на экране в форме документа, независимо от того, записан он его или нет, нужно в модуле формы док. ПродажиТоваров написать следующий код:
&НаКлиенте
Процедура ПроверкаДокумента(Команда)
ПроверкаДокСервер();
КонецПроцедуры
&НаСервере
Процедура ПроверкаДокСервер()
ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Товары.Выгрузить());
КонецПроцедуры
А в общем модуле «ПроверкаДокументовСервер» – следующий код:
Процедура ПроверитьДокумент(Товары) Экспорт
Для каждого стр Из Товары Цикл
Если стр.Количество<0 Тогда
сообщить("Ошибка в строке № "+стр.НомерСтроки+" количество не может быть отрицательным!");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Отлично! Со всеми пунктами согласен.
Ответы на вопросы по курсу:
1. В базовом курсе узнал очень много нового, особенно про отчеты на СКД, про бухгалтерские и зарплатные объекты.
2. До базового курса я думал, что бухгалтерские, и особенно зарплатные объекты в конфигурации – это что-то чрезвычайно сложное, непонятное. Сейчас они мне стали более понятны. Также до базового курса не мог самостоятельно научиться делать отчеты на СКД (хотя читал книжки об этом). После курса научился. Также до курса я думал, что мастер-группа это что-то не очень нужное, а потом убедился, что это очень важная вещь, там рассматриваются очень важные и интересные вопросы, которых даже нет в базовом курсе, и это является хорошей обратной связью с руководителями курсов.
3. Начал писать отчеты на СКД.
4. Формат базового курса более удобен, чем очного курса, так как
А) не отрывает от работы
Б) в очном курсе за несколько дней проходят весь курс, очень большой объем информации сразу, нельзя прокрутить назад, обычно через некоторое время «нить» понимания теряется и дальше уже много непонятно, потом приходится после курса самостоятельно разбираться, а в Вашем курсе пользователь сам определяет себе нагрузку (сколько уроков за день он проходит), непонятные и сложные уроки можно по несколько раз слушать.
В) в базовом курсе есть мастер-группа, где можно задавать вопросы как по темам базового курса, так и по нюансам, которые в него не вошли и получать оперативно на них ответы
Предложения:
1. Хотелось бы, чтобы в большинстве мастер-групп выкладывался архив БД, на которой демонстрировалось решение вопросов этой мастер-группы
2. Было бы удобно, чтобы уроки продвинутого курса автоматически запускались один после другого, потому что сейчас приходится по многу раз запускать отдельно маленькие уроки и на это уходит достаточно много времени.
Ошибки, исправленные в конфигурации:
1. Документ ПокупкаТоваров не делал движения по рег. ТоварыНаСкладе, из-за того, что в модуле объекта в начале процедуры ОбработкаПроведения не стоял оператор: Движения.ТоварыНаСкладе.Записывать = Истина;
2. Для формы док. ПокупкаТоваров есть команда «ЗаполнитьТовары», которая не выведена на форму и не используется. У нее есть процедура «Заполнить товары», которая тоже не используется. Нужно и команду и процедуру удалить. Также удалить процедуру «ЗаполнитьТоварыНаСервере»
3. Документ ПродажаТоваров в конфигураторе на закладке Движения не стояла галочка у рег. ТоварыНаСкладе, из-за этого было невозможно проведение этого док. по этому рег, даже, если был программый код в процедуре ОбработкаПроведения.
4. Документ ПродажаТоваров в конфигураторе для реквизита серия установить параметр: «Связь парам. выбора», поставить сюда связь со справочником товары по полю владелец. Это нужно сделать для того, чтобы при выборе поля серия в документе показывались серии только подчиненные товару из текущей строки, а не все серии вообще.
5. В модуле объекта док. ПродажаТоваров в самом начале процедуры ОбработкаПроведения поставить проверку: если количество строк в таб. части = 0, то выдавать сообщение и не проводить документ.
6. В модуле объекта док. ПродажаТоваров в процедуре ОбработкаПроведения после строки Движения.ТоварыНаСкладе.Записывать = Истина; нужно поставить строки: Движения.ТоварыНаСкладе.Очистить(); Движения.ТоварыНаСкладе.Записать(); (для правильной обработки повторного перепроведения документа)
7. Там же. В Запросе для реквизитов КолОст и СумОст нужно использовать функцию isnull (чтобы правильно обрабатывались ситуации, когда остатков вообще нет)
8. Там же. В запросе вместо внутреннего соединения нужно использовать левое соединение (так как остатков может и не быть)
9. Там же. В запросе для РегистрНакопления.ТоварыНаСкладе.Остатки нужно использовать первый параметр &Момент
10. Там же. После текста запроса нужно установить значение параметра момент так: Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда Запрос.УстановитьПараметр(“Момент”, Неопределено); Иначе Запрос.УстановитьПараметр(“Момент”, МоментВремени()); КонецЕсли;
11. Там же. Алгоритм запроса и его обработки не соответствует техзаданию: док. ПродажаТоваров списывает товар по всем сериям, которые имеются на складе, независмо от того, какая серия указана в документе. Списание в разрезе серий не работает. Для испр. этой ошибки нужно в запросе убрать раздел итоги и добавить группировки по полям товар и серия, а для полей КолДок, КолОст, СумОст поставить агрегатную функцию Сумма().
12. Там же. Во вложенном запросе, который стоит в параметрах для РегистрНакопления.ТоварыНаСкладе.Остатки нужно поставить слово «различные» для исключения дублей строк.
13. Там же. Нужно исправить этот вложенный запрос, чтобы он совместно отбирал не только товары, которые есть в док., но именно комбинации Товар, серия (смотри полный текст запроса ниже)
14. Там же. В запрос добавить выходное поле ПродажаТоваровТовары.НомерСтроки с агрегатной функцией Минимум (для локализации ошибок нехватки товаров и привязки этих ошибок к строке документа)
15. Там же. В сообщении об ошибке нехватки товара нужно указывать не только товар, но и серию
16. Там же. В сообщении об ошибке есть опечатка: «Недостаточно товава», нужно «товара»
17. Там же. Сообщение об ошибке выводится в неправильном месте. Оно не привязывается к ошибочной строке документа. Вместо строки; Сообщение.Поле = “Товары.Количество”; нужно использовать стоку: Сообщение.Поле = “Товары[“+(ВыборкаТовары.НомерСтроки-1)+”].Количество”;
18. Там же. После сообщения об ошибке нужно поставить операторы: отказ = истина; и продолжить; (чтобы не допустить проведение документа).
19. Там же. При получении ВыборкаТовары = Результат.Выбрать() нужно в процедуре выбрать() удалить параметр ОбходРезультатаЗапроса.ПоГруппировкам); так как у нас все данные запроса получаются на первом уровне.
20. Там же. В связи с сильным изменением текста запроса, нужно серьезно изменить и обработку его результата: убрать ВыборкуСерии и цикл по ней, серию брать из выборкатовары, количество брать из ВыборкаТовары.КолДок и т.д. (смотри текст процедуры обработкапроведения, размещенный ниже)
21. Там же. При вычислении «Запись.Сумма» нужно сначала ставить умножение, а потом деление, чтобы не было из-за ошибок округления в регистре не висели суммы без количества
22. Там же. При вычислении «Запись.Сумма» нужно на всякий случай проверять, чтобы не было деления на 0.
23. Общий модуль ПроверкаДокументовСервер, Процедура ПроверитьДокумент(Документ) здесь нельзя использовать процедуру Предупреждение, можно использовать процедуру сообщить.
24. При работе в тонком клиенте при открытии док. ПокупкаТоваров выдается ошибка. Нужно исправить в модуле формы док. процедуру ЗаполнитьКлиента. Она исполняется на клиенте, поэтому в ней нельзя использовать объект метаданных «Справочники». Нужно исправить эту процедуру и создать еще одну функцию в этом же модуле: НаКлиенте:
Процедура ЗаполнитьКлиента(Команда)
Объект.Клиент = ПолучитьКлиентаНаСервере();
КонецПроцедуры
&НаСервере
Функция ПолучитьКлиентаНаСервере()
возврат Справочники.Клиенты.ОсновнойПокупатель;
КонецФункции
25. При работе в тонком клиенте при открытии док. ПродажаТоваров выдается ошибка. В модуле формы этого док. процедура ПроверкаДокумента, которая исполняется на клиенте, вызывает экспортный метод «ПроверитьДокумент» серверного общего модуля «ПроверкаДокументовСервер». Чтобы эта ошибка не возникала, нужно в свойствах данного общего модуля поставить галочку «Вызов сервера», либо из клиентской процедуры ПроверкаДокумента вызывать серверную процедуру ПроверкаДок, находящуюся в этом же модуле формы док, а уже из нее вызывать процедуру общего серверного модуля.
26. Документ ПродажаТоваров. Кнопка ПроверкаДокумента. Проверка происходит по данным, записанным в базу данных, если же документ еще не был записан (а строки пользователь уже ввел) или документ был ранее записан, но пользователь сделал в нем изменения и их еще не записал, то в этом случае эти незаписанные в БД изменения не будут участвовать в проверке. Чтобы исправить эту ошибку и проверять строки, которые пользователь видит на экране в форме документа, независимо от того, записан он его или нет, нужно в модуле формы док. ПродажиТоваров написать следующий код:
&НаКлиенте
Процедура ПроверкаДокумента(Команда)
ПроверкаДокСервер();
КонецПроцедуры
&НаСервере
Процедура ПроверкаДокСервер()
ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Товары.Выгрузить());
КонецПроцедуры
А в общем модуле «ПроверкаДокументовСервер» – следующий код:
Процедура ПроверитьДокумент(Товары) Экспорт
Для каждого стр Из Товары Цикл
Если стр.Количество0 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Недостаточно товара “+ВыборкаТовары.Товар+” Серии в количестве “+Недостача;
Сообщение.Поле = “Товары[“+(ВыборкаТовары.НомерСтроки-1)+”].Количество”;
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
отказ = истина;
продолжить;
КонецЕсли;
Запись = Движения.ТоварыНаСкладе.ДобавитьРасход();
Запись.Период = Дата;
Запись.Товар = ВыборкаТовары.Товар;
Запись.Серия = ВыборкаТовары.Серия;
Запись.Количество = ВыборкаТовары.КолДок;
Если ВыборкаТовары.КолОст=0 Тогда
Запись.Сумма = 0;
Иначе
Запись.Сумма = ВыборкаТовары.СумОст*ВыборкаТовары.КолДок/ВыборкаТовары.КолОст;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Я разместил свою статью на сайте наше1с 8 сентября вечером
http://nashe1c.ru/materials-view.jsp?id=342
Сейчас у нее состояние
«Материал ожидает проверки модератором»
Я не знаю, сколько долго продлится модерация, может быть и дольше пятницы, поэтому текст статьи посылаю Вам:
Подводные камни при использовании обработки “КонвертацияВнешнихОбработок82”
________________________________________
При переходе с конфигурации 8.1 на 8.2 у пользователей, у которых используется много внешних отчетов, обработок и внешних печатных форм возникает проблема: как быстро все их отконвертировать на версию 8.2? Можно, конечно, по одиночке, открывать их в конфигураторе 8.2 и на предложение о конвертации отвечать “Да”. Но это очень долго и неудобно.
На диске ИТС есть внешняя обработка “КонвертацияВнешнихОбработок82”, помогающая при переходе с платформы 8.1 на 8.2.
Она позволяет сделать групповую конвертацию внешних отчетов и обработок, находящихся в каком-нибудь каталоге, с версии 8.1 на 8.2 (для этого нужно выбрать пункт: “Конвертация обработок в каталоге” и сам каталог, который может содержать подкаталоги), также она позволяет быстро отконвертировать внешние обработки (в том числе внешние печатные формы), которые находятся в БД (для этого нужно выбрать пункт: “Конвертация обработок из справочников “Внешние обработки” и “Обработки обслуживания ТО” и выбрать временных каталог).
Примечание: Эта обработка имеет только обычную форму, управляемая форма отсутствует. Поэтому, если ее запускать в режиме управляемого приложения, то форма будет пустой, и ничего нельзя будет сделать. Запускать нужно в режиме обычного приложения
Когда я пробовал вначале ее использовать (для конфигурации УПП), она у меня все время зависала. Сначала, я думал, что это из-за большого количества внешних отчетов и обработок, но оказалось, что и на малом количестве она тоже зависает.
Я стал изучать данную обработку в конфигураторе. Обнаружилось, что в данной обработке запускается процедура глобального контекста «ЗапуститьСистему» (в справке 1С есть описание), которая запускает конфигуратор с параметром /ConvertFiles. Причем, пароль не указывается. Я срубил пароль у пользователя “Администратор” в своей базе УПП, и обработка заработала! Конвертация внешних печатных форм тоже сработала.
Но в некоторых случаях обработка и после этого зависала (в случае зависания нужно обязательно срубать лишний процесс 1с): это могло быть из-за того, что в какой-либо внешней обработке нет доступа на ее перезапись (или ее открыл в данный момент какой-нибудь пользователь, или у нее стоит атрибут «Только чтение»).
Поэтому для избежания подводных камней при использовании обработки “КонвертацияВнешнихОбработок82” рекомендую выполнять следующие действия:
• 1) сначала временно срубить пароль у пользователя “Администратор”
• 2) скопировать обработки для версии 8.1 в отдельный каталог из рабочего каталога
• 3) снять у них атрибут «Только чтение» (через снятие этого атрубата у головного каталога).
• 4) запускать обработку “КонвертацияВнешнихОбработок82” из 1С-Предприятие 8.2, запущенного под пользователем “Администратор” в режиме Обычного приложения
После этого групповая конвертация внешних обработок и отчетов работает достаточно быстро даже на больших объемах (десятки и сотни мегабайт).
Юшкевич Станислав Валерьевич
Станислав, спасибо за ответы на вопросы.
Предложения записали :)
По ошибкам М.Н. – принимается.
Но, в п.24 зачем вызов сервера контекстный?
Статья отличная – зачет.
Резюмируем. Вы выполнили требования финалиста базового курса.
Поздравляю вас с получением нового статуса :)
Часть 3
1. Фактически все, что проходили в базовом курсе кроме 0-го модуля, было для меня новым, так как до этого я занималась только семеркой.
2. Избавилась от заблуждения, что 8-ка это что-то сложное и труднопонимаемое. Особенно когда открываешь стандартную конфигурацию. Почувствовала в себе силы и знания для сопровождения.
3. Раньше с восьмеркой не работала. Но сейчас пытаюсь осваивать стандартную бухгалтерию и, по-моему, это у меня получается.
4. Неожиданным оказалось то, что в 8-ке очень много настроек доступно самому пользователю. А также то, что очень много мест в коде, где используются запросы.
5. Формат обучения можно сказать идеален. Когда хочешь можно остановить и продолжить в любое другое время, а непонятные вопросы всегда найдутся или в материалах мастер группы или можно задать их туда. Все наглядно и профессионально. Всегда можно вернуться к пройденному материалу. В общем одни плюсы.
Спасибо, Айдана!
2) Провел мини-семинар по возможностям 1С 8.2 со своими внутренними клиентами – пользователями, а они у меня (менеджеры, товароведы, бухгалтеры, операторы) очень опытные пользователи 1С.
Т.к. у нас много (>50) торговых точек в режиме РИБ с огромными (до 3х ГБ базами в файловом варианте, но сейчас я их уменьшил за счет изменения работы УРИБ до 700 МБ), то нашей организации естественно было бы лучше работать через тонкий или WEB клиент (тут еще надо будет определяться).
В дополнение к своим словам продемонстрировал демо WEB клиента 1С 8.2 на http://demo-ma.1c.ru/demo_ma/ru_RU/.
Оказалось, что это почти то, что надо моей организации.
Так что буду планировать на ближайшее будущее (год-два) перевод работы организации с 1С 8.1 на 8.2.
Отлично, Сергей!
Здравствуйте, Евгений и Фарит. Была в отпуске, пришлось вернуться раньше из-за проблем со здоровьем. Но зато успела к финалу. Нет худа без добра :).
Решение финального ДЗ:
I. Практическая задача.
1) Документ “Покупка товаров”. Форма документа. Ошибка в тонком клиенте при выполнении команды “Заполнить клиента”. Необходим серверный вызов метода.
2) Основной поставщик называется “Основной покупатель”. Может и не ошибка, но пользователя введет в заблуждение.
3) Документ “Покупка товаров”. Модуль документа. Не установлен флаг записи “Движения.ТоварыНаСкладе.Записывать=Истина;”
4) Общий модуль “ПроверкаДокументовСервер” не установлен флаг “Вызов сервера”.
5) Общий модуль “ПроверкаДокументовСервер” процедура ПроверитьДокумент(Документ) процедура Предупреждение() не доступна на сервере. Необходимо использовать Сообщить().
6) Документ “Продажа товаров”. Форма документа. Процедура ПроверкаДокумента(Команда) должна выполняться только после записи документа, т.к. в противном случае “Ссылка” – пустая. Необходимо выдавать запрос пользователю о записи документа перед проверкой.
7) Вместо проверки на отрицательное значение количества в документах можно поставить флаг “неотрицательное” в свойствах реквизита.
8) У реквизита “Количество” в документе “ПокупкаТоваров” тип “Строка” вместо “число”, 15,3.
9)Документ “Продажа товаров” при выборе серии в табличной части нет отбора по сериям указаного товара. В результате пользователь может выбрать в документ серию другого товара. Необходимо в свойствах реквизита “Серия” установить связи параметров выбора Отбор.Владелец(Товары.Товар).
10)Документ “Продажа товаров” в свойствах на закладке “Движения” не установлен флаг у регистра накопления “ТоварыНаСкладе”.
11)Документ “Продажа товаров” модуль документа. В запросе в параметрах виртуальной таблицы остатков товаров не установлен период – МоментВремени. В результате остатки всегда рассчитываются на текущий момент, что не верно при проведении документа задним числом.
12) Документ “Продажа товаров” модуль документа. В запросе используется Внутреннее Соединение – в результате попадают в запрос только товары, по которым есть остатки в регистре. Надо использовать Левое Соединение.
13) Документ “Продажа товаров” модуль документа. В запросе не надо использовать “Итоги по”. Достаточно сделать группировку по товару и серии. Контроль остатка надо проводить не только по товару но и по серии тоже.
14)Документ “Продажа товаров” модуль документа. В строке кода : ВыборкаСерии.СумОст/ВыборкаСерии.КолОст*Запись.Количество надо вставить проверку на нулевое значение ВыборкаСерии.КолОст. В противном случае воможно деление на 0.
15)Документ “Продажа товаров” модуль документа. В случае, если обнаружена нехватка количества необходимо установить признак Отказ=Истина. Иначе документ проводится даже с ошибкой.
16)Документ “Продажа товаров” модуль документа. В запросе в пареметрах виртуальной таблицы условие “Товар В” указывать не правильно. Т.к. в данном случае в запрос попадают товары и из других документов. Вместо этого надо использовать условие на закладке условия “ПродажаТоваровТовары.Ссылка = &Ссылка”
17)Документ “Продажа товаров” модуль документа. Перед проверкой на остатки товаров необходимо очистить движения документа по регистру “ТоварыНаСкладе”. В противном случае учитываются при контроле остатков движения текущего документа.
18)Документ “Продажа товаров” модуль документа. Из-за погрешностей округления при определении средней стоимости могут зависнуть копейки в сумме по регстру “ТоварыНаСкладе”. Необходима проверка : Если КолДок=КолОст то Сумма=СумОст.
По просьбе Виолы Григорьевны в справочнике “Серии” в стандартных реквизитах для кода Проверка заполнения установлена в “Выдавать ошибку”.
II. Ответ на форуме.
Пришлось специально зарегистрироваться, поискать вопрос на который нет ответа.
http://www.cyberforum.ru/1c/thread162892.html#post948131
III. 1)Много нового. Выделить какую-то одну тему не могу. В каждом разделе что-то новое. Например, в бухучете – изменение порядка вида субконто в запросе. В расчете – упорядочились знания по получению данных базы, графика через запрос. Из мастер-групп: обработка подбора, работа с файлами. В общем, много чего полезного.
2)Заблуждений как таковых не было. Были белые пятна в знаниях, которые постепенно закрываются. Но нужен опыт и время, чтобы их окончательно устранить.
3) К сожалению, на практике пока не много удалось применить. Неожиданным оказалось, как ни странно, получение данных для расчета з/п с помощью запросов. Раньше использовала объектную модель. И еще – тема монетизации. Неожиданно и интересно. Жаль, что не могла уделить ей должного внимания.
4)Несомненно- гораздо удобнее очного формата. Не один раз проходила курсы в УЦ №1. Полезно, но очень большой объем информации не успевает усваиваться за несколько дней обучения.
Формат, предложенный вами – более гибкий. Времени можно уделять больше и без отрыва от основной работы. Но, для меня оказалось важным то, что ответы преподавателя на свои вопросы можно получить достаточно быстро, в отличие от дистанционных курсов УЦ №3 (хотя я вопросов и не много задаю ). Плюс – сильная мотивация в виде бонусов.
P.S. Если не затруднит, не могли бы вы ответить что мне еще необходимо сделать, чтобы попасть в список финалистов? Большое спасибо.
> Нет худа без добра :)
Главное во всем находить положительные стороны :)
Шаг 1 – зачет.
Шаг 2 – принимается.
Шаг 3 – спасибо, Наталья!
>P.S. Если не затруднит, не могли бы вы ответить что мне еще необходимо сделать…
Пожалуй создать торжественную обстановку, поскольку я вас поздравляю!
Вы финалист базового курса!! :)
Уррра! Спасибо :)
Часть №3
http://www.forum.mista.ru/topic.php?id=503915
С небольшой натяжкой, но все же зачет :)
По финальному ДЗ вот что удалось найти и исправить:
1. При создании нового документа «Покупка товаров» Документ.ПокупкаТоваров.Форма.ФормаДокумента.Форма(4,18)}: Переменная не определена (Справочники) Объект.Клиент = <>Справочники.Клиенты.ОсновнойПокупатель; (Проверка: Тонкий клиент). Причина: в процедуре «Заполнить клиента» происходит обращение к справочнику менеджеру не доступному в тонком клиенте.
2. При проведении документа «Покупка товаров» не записываются движения по регистру накопления «ТоварыНаСкладе». Причина: в процедуре «ОбработкаПроведения» набор записей регистра заполняется, но не записывается.
3. При создании документа «Продажа товаров» вылетает ошибка: {Документ.ПродажаТоваров.Форма.ФормаДокумента.Форма(4,2)}: Переменная не определена (ПроверкаДокументовСервер)
<>ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка);
Причина: происходит обращение к общему модулю у которого запрещено использование в клиенте управляемого приложения.
4. При подборе серий в документе «Продажа товаров» в список для подбора попадабт все серии а не серии конкретной номеклатуры. Причина: Не установлена связь параметорв выбора в свойствах реквизита «Серия» Отбор.Владелец(Товары.Товар)
5. При попытке провести документ «Продажа товаров» выдается ошибка {Документ.ПродажаТоваров.МодульОбъекта(4)}: Поле объекта не обнаружено (ТоварыНаСкладе) Движения.ТоварыНаСкладе.Записывать = Истина; Причина: документ «Продажа товаров» не установлен в качестве регистратора у регистра накопления «ТоварыНаСкладе»
6. При проведении документа «Продажа товаров» контролируется остаток товара определенной серии на складе. Сообщение о ошибке в общем модуле не обнаружена переменная Запрос.
7. При нажатии на кнопку Проверить вылетает ошибка о Предупреждении. Переделал на метод СообщениеПользователю();
8. При проведении документа «Продажа товаров» контролируется остаток товара определенной серии на складе. Сообщение о недостаточном количестве не привязывается к строке. Причина в запросе в результат не выводиться номер строки.
9. При проведении документа «Продажа товаров» контролируется остаток товара определенной серии на складе. Но документ проводиться даже при отрицательном остатке на складе. Причина: в случае отрицательного остатка не устанавливается параметр «Отказ» в Истину.
10. При проведении документа «Продажа товаров» контролируется остаток товара определенной серии на складе ТОЛЬКО ПО ОДНОЙ СТРОКЕ. Т.Е. если в табличной части два строки с одинаковым товаром и общим количеством больше чем на складе документ проведется и не выдаст сообщение об ошибке. Причина: не происходит сворачивание табличной части по одинаковой номенклатуре и серии для определения необходимого количества
11. При повторном проведении документа учитываются его же движения в регистре накопления «ТоварыНаСкладе». Причина не верно выстроен запрос. Не учитывает момент времени и режим проведения документа.
12. При проведении документа «Продажа товаров» количество КОлДок возвращаемое запросом возвращает количество по всем документам «Продажа товара» находящимся в системе. Причина не верно выстроен запрос.
Анатолий, шаг №1 – зачет.
Жду отчета по шагу №2 и 3..
Третья часть.
Что нового Вы узнали из базового курса по программированию?
Курс я просмотрел пока не полностью, в связи с завалом на работе, а потом отпуском. Поэтому сейчас активно изучаю.
Однако, курс помогает систематизировать многие нюансы, например, работа с различными типами данных,
узнал о многих свойствах документов и справочников.
Очень сильно мне помогла информация о работе с модулями, когда надо выполнять код на сервере, а когда на клиенте.
Очень многое узнал о том как работать с управляемыми формами, больше нигде такой информации в таком объеме не встречал.
Сейчас мне осталось изучить блоки по бухгалтерии и расчету. Чем и займусь.
От каких заблуждений избавились?
Особых то заблуждений то и не было. Уже год назад все в интернете только и говорили, что в 8.2 это огромный прорыв для 1С.
Множество новинок. Поддержка веб-клиента, управляемые формы.
Было мнение, что платформа еще сыровато, но как мы сейчас видим, фирма 1С постоянно работает над улучшением своего детища,
исправляет кучу ошибок в каждом релизе. Многие предприятия уже внедряют проекты на 8.2. Теперь дело за нами! :)
Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
вам удалось применить новые навыки (какие результаты были достигнуты);
На работе 8.2 особо не используем, разве что обновили релизы программ ЗУП и БП.
У меня есть своя самописная конфа для нашего фитнес-клуба (http://www.nautilus-fitness.ru/), разработанная для учета клиентов и взаимоотношений с ними (мини-CRM), на 8.1.
Вот с нее и начну, в ближайшее время, переход с 8.1 на 8.2.
Также в перспективе, перевод нашей торговой системы нашей компании (http://kontyr.ru/) с 7.7 на 8.2.
Однако это займет немало времени, но необходимость назревает. Новые времена, требуют современных решений!
Если Вы пока не работаете реальных проектах по внедрению решений на
«1С:Предприятии 8», то, что оказалось неожиданным из материалов курса?
Даже не знаю, что такого неожиданного могло оказаться в материалах курса…
Возможно, не ожидал, что будет так МНОГО дополнительной информации. Это и бонусы по подготовке к сдаче специалиста, и очень интересные мастер-группы, сессии ответов на вопросы, и дополнительные секции – Монетизация от Насипова Фарита.
Насколько удобен, оказался формат обучения в сравнении с очным форматом?
Формат мне очень нравится тем, что можно занимать офлайн, не надо присутствовать в аудитории. Когда удобно тогда и занимаюсь.
Удобное сочетание теории и практики (домашние задания).
Очень понравилось внимательность преподавателей к вопросам и комментариям курсантов. Наверно не осталось ни одного вопроса без внимания.
Порадовала оперативность рассмотрения вопросов и преподнесения различных материалов.
Оказался очень насыщенным и интенсивным темп курса. Просто поражаюсь Вашей работоспособностью. Тем более знаю, что вы часто спали всего несколько часов в сутки.
Спасибо Вам ОГРОМНОЕ за Ваш труд и терпение.
Сейчас же, продолжаю подчищать хвосты в предверии начала продвинутого курса (он у меня уже оплачен сразу вместе с базовым).
Спасибо за развернутые ответы, Сергей.
Успеете нагнать домашние задания по бухгалтерии?
Даем вам еще немного времени..
Очень бы хотелось нагнать, но мне чисто физически это не удастся… ( Как минимум потребуется неделя на освоение БУ. Так что, как говорится, се ля ви… Очень жаль…
1. Решена практическая задача по конфе от М.Н. Нашел ошибки-недочеты, исправил, конфа работоспособна.
Список чего сделал (+ еще что-то по-мелочи сделал и не вписал):
– Надо было при заполнении Клиента в документе «Покупка товаров» сделать вызов процедуры &НаСервере, т.к. на &НаКлиенте не выполняется в тонком клиенте
– Использована процедура ОбработкаПроверкиЗаполнения для проверки заполнения Кода Серии с выдачей сообщения об отсутствии номера серии
– В документах «Покупка товаров» и «ПродажаТоваров» в ТЧ сделал для Серий связь по типу с Товарами документе в ТЧ
– Количество в ТЧ документа «Покупка товаров» сделал и в ТЧ документа «ПродажаТоваров» сделал выровненным вправо
– В РН «ТоварыНаСкладе» ресурс Количество сделал 15-3 вместо 15-2
– В документе «Покупка товаров» Количество сделал Число 15-3, неотр. и Сумму неотр.
– Также неотр.сделал Сумму и Количество и в документе «ПродажаТоваров»
– В документе «Покупка товаров» при проведении добавил Движения.ТоварыНаСкладе.Записывать, т.к. не было движения по регистрам
– Документ «ПродажаТоваров» не был задействован в движении по РН «ТоварыНаСкладе», поэтому не проводился
– Документ «ПродажаТоваров» не давал движений по РН, т.к. запрос был нерабочий
– При проведении документа «ПродажаТоваров» сделал прерывание проведения, если не хватало товара, перенес проверку в цикл по Сериям с выдачей сообщения о нехватке Товара и Серии.
– В документе «ПродажаТоваров» сделал проверку на нулевое количество перед записью.
– Проверка корректности заполнения табличной части не работает при незаписанном документе, переделал на проверку при еще незаписанном документе.
– В документах сделал проверку обязательное заполнение Клиента, Товара, Серии, Количества, Суммы
>- Использована процедура ОбработкаПроверкиЗаполнения для проверки заполнения Кода Серии
А можно было настроить свойства стандартного реквизита :)
По первому шагу – зачет.
Вторая часть.
Может быть мне можно засчитать чуть ранее опубликованную статью на Инфостарте.
Ссылка http://infostart.ru/public/74958/
В скором времени планирую опубликовать пост-отзыв в своем ЖЖ http://serggukov.livejournal.com/, о прохождении курсов.
Статья хорошая, зачет.
Первая часть.
Описание доработок и ошибок
1. Чтобы удовлетворить просьбу гл.буха Виолы Григорьевны, сделать поле “Номер серии” обязательным для заполнения в спр. Серии,
откроем Стандартные реквизиты на закладке Данные и установим свойство “Проверять заполнение” в “Выдавать ошибку”
Документ ПокупкаТоваров
2. На форме создана команда “ЗаполнитьТовары”, но не определена кнопка на для выполнения данной команды.
3. Для дисциплинирования оператора, установить свойство “Проверить заполнение” в “Выдавать ошибку” следующий данных:
– табличная часть Товары
– реквизит ТЧ Товар
– реквизит ТЧ Серия
4. В ТЧ отсутствует колонка Цена, соответственно, при изменении кол-ва невозможно пересчитать сумму по товару.
5. Не формируются движения в регистре ТоварыНаСкладе, т.к. не прописана строка в модуле проведения:
Движения.ТоварыНаСкладе.Записывать = Истина;
6. В процедуре модуля формы “ЗаполнитьКлиента”, заполнение рекв. Клиент происходит &НаКлиенте, поэтому в тонком клиенте вылетает ошибка.
Решение – вызвать значение заполнения из функции &НаСервере.
7. Отредактировать текст запроса. Для числовых полей добавить проверку на NULL
| ЕстьNULL(ПродажаТоваровТовары.Количество,0) КАК КолДок,
| ЕстьNULL(ТоварыНаСкладеОстатки.КоличествоОстаток,0) КАК КолОст,
| ЕстьNULL(ТоварыНаСкладеОстатки.СуммаОстаток,0) КАК СумОст
8. Орфографическая ошибочка в тексте сообщения пользователю “Недостаточно товава “.
9. По кнопке “Заполнить клиента” проставляется значение “Основной покупатель”, хотя в документах закупки, по идее, там должен быть “Поставщик”.
10. На закладке Ввод на основании не указано на основании какого документа вводится ПокупкаТоваров и для каких документов является основанием.
Документ ПродажаТоваров
11. см. пункт 3.
12. см. пункт 4.
13. При выборе Серии в ТЧ Товары, вываливаются все серии, а не подчиненные выбранному товару, т.е. не установлен Отбор.
Решение – установить свойство “Связи параметров выбора”, выбрать рекв. Товары.Товар
14. При проведении документа выдается ошибка, что не обнаружено поле ТоварыНаСкладе.
Решение – поставить галочку напротив регистра ТоварыНаСкладе на закладке Движения.
15. Не созданы подсистемы. Для удобства можно создать Закупка и Сбыт.
16. Для учета остатков товара можно, либо вывести форму списка регистра ТоварыНаСкладе.
Решение – Открыть командный интерфейс рабочего стола и установить галочку у свойства Видимость для регистра ТоварыНаСкладе.
17. Лучший вариант для учета остатков товара создать отчет “Ведомость остатков”.
>Решение – вызвать значение заполнения из функции &НаСервере.
А лучше – возвращать из внеконтекстного серверного метода нужное значение.
Либо использовать ПредопределенноеЗначение(…)
>8. Орфографическая ошибочка в тексте сообщения
Ок )))
Шаг 1 – зачет.
Можно было бы переделать проверку остатков: сначала сделать движения, записать, а потом проверить, не появились ли отрицательные остатки в регистре. – Поторопилась, так делать неоптимально в данном случае, т.к. нужно считать себестоимость.
Все верно :)
Поторопилась, так делать неоптимально в данном случае, т.к. нужно считать себестоимость.
Забыла написать, что в обработке проведения документа «Продажа товаров» при проверке недостачи не выставлялось Отказ = Истина и Продолжить, поэтому движения все равно пытались делаться и выдавалась ошибка, если остатков не хватало.
Ок!!
Часть 1
Отчет об ошибках в домашнем задании
1. В справочнике “Серии” желательно поставить автонумерацию в пределах подчинения владельцу. Конечно все зависит от того каков порядок нумерации серий, автоматически или ручной.
2. В регистре накопления “ТоварыНаСкладе”, в ресурсе количество надо поставить точность 3 знака.
3. В регистре накопления “ТоварыНаСкладе” надо указать регистратором также и документ “ПродажаТоваров”
4. Для контрагента по умолчанию надо создать периодический регистр сведений, где в качестве ресурса указать контрагента и сделать периодичность в пределах дня. Так как в различные периоды времени контрагенты по умолчанию могут быть разными.
5. В модуле формы документа “Покупка товаров” выбор основного конрагента надо производить в серверной процедуре из регистра сведений.
6. При выборе серии в документе “Покупка товаров” в форме выбора видно только поле кода. Надо создать форму и вывести на нее поля номер серии и срок годности.
7. В форме документа “Покупка товаров” реализована команда “ЗаполнитьТовары” , но она не выведена на форму.
8. В форме документа “Покупка товаров” тип поля “количество” указан как строка, надо как число 15.3
9. документах “Покупка товаров” и “Продажа товаров” отсутствует реквизит цена. Надо добавить поле “цена” и сделать автоматический расчет поля “сумма” или “цена” или “количество”.
10. В документах “Покупка товаров” и “Продажа товаров” отсутствует поле “Единицы измерения” и соответствующий справочник.
11. Также желательно реализовать учет поступления и продажи в различных единицах измерений, учитывая коэффициенты пересчета.
12. Движения по документу “Покупка товаров” не записываются потому что отсутствует строка Движения.ТоварыНаСкладе.Записывать = Истина
13. В документе “Покупка товаров” в процедуре “ЗаполнитьТовары” неправильно указан тип в функции Тип. Надо не “Документ.ПокупкаТоваров”, а “ДокументСсылка.ПокупкаТоваров”.
14. Перед загрузкой товаров из существующего документа в новый документ, его следует записать, а также выгрузить табличную часть выбранного документа в таблицу значений и далее загрузить в новый документ.
15. В документе “Продажа товаров”, у реквизита “серии” не установлен параметр связи параметров выбора в Отбор.Владелец(Товары.Товар).
16. В общем модуле “ПроверкаДокументовСервер” не установлена галочка “Вызов сервера”, так как процедура “ПроверитьДокумент” вызывается из клиента.
17. Процедура предупреждение доступна только на клиенте, а не на сервере. Надо использовать класс “Сообщение пользователю”, с привязкой к номеру строки.
18. Перед проверкой документа “Продажа товаров”, его необходимо записать.
19. В запросе обработчика проведения документа «Продажа товаров» таблицы должны быть связаны левым соединением
20. В параметре виртуальной таблицы ТоварыНаСкладеОстатки надо установить период &Момент
21. На КоличествоОстаток и СуммаОстаток надо применить функцию isnull
22. В запросе обработчика проведения документа «Продажа товаров» надо применить группировку по товару и серии, и суммирование по остальным полям, а не итоги.
23. В сообщении указывать, что не хватает товара именно такой то серии
24. В сообщении неправильно задано поле привязки (Сообщение.Поле = “Товары.Количество”), надо (“Товары[“+(Выборка.НомерСтроки-1)+”].Количество”) и соответственно в запрос добавить агрегатное поле МИНИМУМ(ПродажаТоваровТовары. НомерСтроки)
25. Также надо добавить условие ПродажаТоваровТовары.Ссылка = &Ссылка
26. Если недостача больше 0 то установить отказ = истина;
27. Вследствии замены в запросе итоги на группировку меняется обход выборки запроса
28. Если номер серии в справочнике задается вручную то заходим в стандартные реквизиты и у поля код задает свойство «проверка заполнения» на выдавать ошибку.
29. Также в этой конфигурации не хватает отчетов по движению и остаткам товаров.
Чуть позже выложу части 2 и 3
Шаг 1 – зачет.
Часть №3
1) Узнал очень много т.к. совсем недавно стал работать с 8.2 опыта с 8.* до этого не было.
2)Избавился от заблуждение что 8.2 это очень сложно.
3)Не посредственно внедряю Управл. небольшой фирмой. Много узнал про динамические списки и возможности работать с ними, как штатными средствами так и программно.
4)Формат обучения очень удобный, быстро можно найти нужную тему. Способ обучение оказался более “индивидуальным” что очень порадовало
P/S ОГРОМНОЕ СПАСИБО ЗА ВАШ ТРУД.
Спасибо, Павел.
Торжественно поздравляю со статусом “Финалист базового курса” ))
Часть №1
1) в документе покупка набор записей не записывается, надо выставить свойство записывать в истину или произнести принудительную запись набора.
2)В документе покупка организовать движение запросом (а не перебором строк).
3)В документе покупка кнопка заполнение не будет работать в тонком клиенте надо делать серверный вызов, либо проводить заполнение контрагента на уровне реквизита объекта.
4)Документ продажа, на закладке движение не заполнен регистр по которому документ может делать движение.
5)Общий модуль Проверить документ не вызывается так как не стоит галочка “ВызовСервера”.
6)Данная проверка может произойти если документ записан, логичнее запрещать вводит отрицательное количество на уровне реквизита.
7)Использование метода “Предупреждение”
не допустимо на сервере.
8)Логичнее использовать метод Сообщению пользователю с привязкой к строке документа
8)При заполнение документа продажа не стоит связь справочника серии с владельцем то есть с товаром.
9)Проверка в модуле проведение документа продажа работает не корректно, необходимо перед проверкой очистить набор записей документа.
10)В сообщению пользователь надо сделать привязку к строке документа.
11)Запрос выводит не верные данные т.к в него попадают товары из других даже не проведенных документов.
12)В результате в набор записей формируется не правильный.
13)Необходимо в запросе выставить условия на таблицу
|ГДЕ
|ПродажаТоваровТовары.Ссылка = &Ссылка
14) Запрос нужно сделать более оптимальным.
15) Контроль отрицательно остатка надо проводить по “новой методики”.
>15) Контроль отрицательно остатка надо проводить по «новой методики».
А вот не получиться с ходу. Ответьте почему.
Шаг 1 – зачет.
Дополнение! не думал что надо предлагать решения….
//Обзор конфигурации для пивной компании
ПОКУПКА ТОВАРОВ
1. Команда заполнить товары не выведена на форму. необходимо Вывести.
2. В процедуре ВвестиЗначение не верно указан тип, надо Тип(«ДокументСсылка.ПокупкаТоваров»)
3. В процедуре заполнить клиента, на Клиенте обращение к серверному контексту. «Справочники. …» Сделать вызов серверной процедуры, в которой и обращаться к контрагентам.
4. Даже если бы работало. Какой смысл заполнять в поступлении – покупателя! Для основного поставщика так же сделать предопределенный элемент.
5. в процедуре ЗаполнитьТоварыНаСервере много ошибок.
6. НаСервереБезКонтекста, обращение идет к контекстной переменной объект. Исправить на НаСервере
7. Объект.Ссылка имеет ссылку только после записи. Вообще не обращаться к ссылке.
8. Метод загрузить, принимает в качестве параметра таблицузначений. Выгрузать ТЗ из табличной части основания и загрузить в новый документ.
9. При проведении поступления у набора записей ОстаткиНаСкладе отсутствует флаг записывать, дописать движения.ОстаткиНаСкладе.записывать = истина
ПРОДАЖА ТОВАРОВ
10. Документ реализация не включен в регистраторы ОстаткиНаСкладе, в документе выбрать движения по регистру, либо в регистре указать регистратор.
11. В табличной части нет отбора серий по товару. в реквизита серия выбрать связь по типу.
12. При недостаче, документ все рано проводится. Отказ после проверки выставлять в истину.
13. Сообщение.УстановитьДанные не привязывает сообщение к конкретному полю. необходимо использовать ПутьКДанным, выбирая в запросе по мимо всего прочего номерСтроки.
14. Остатки выбираются не на дату документа
использовать границу для определения момента списания.
15. В запросе нет итогов по сумме, отсюда не корректная сумма. Добавить итоги.
16. В запросе нет группировки во избежание дублей строк. Чтобы сделать запрос с группировками. Делаем вложенные запрос с выбором всех необходимых полей, оборачиваем его, далее строим итоги.
17. ОсталосьСписать не имеет смысла использовать. Отсюда часть записей с нулями.
Под итог при проведении реализации, необходимо
1. сначала записать набор,
2. Потом контролировать остатки.
3. в случае отрицательных отменять проведение.
18. При использовании одного регистра ОстаткиНаСкладе ресурс сумма не будет выходить в 0. Так как сумма поступления и списание по средней разные вещи.
Для количественного учета необходимо убрать ресурс сумма, для учета закупки, создать оборотный регистр Закупка, для себестоимости организовать третий Продажи к примеру.
19. функционал «Проверка документа» в реализации требует предварительной записи документа, иначе могут быть не верные сообщения.
Пожелание бухгалтера. Справочник – Данные – стандартные реквизиты – свойства Код – Проверка заполнения -выдавать ошибку.
Вторая часть, ответы на вопросы по форуму 1с
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566268
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566145
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566271
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566278
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566279
По финальному ДЗ – зачет.
Аудио-запись – вообще здорово.
Илья, поздравляю вас, как финалиста базового курса! Ура :))
Спасибо!
Шаг 1.
док.ПокупкаТоваров
1. Основной клиент жестко прописан в програмном коде. Перенести его в константу и обращаться к константе.
Константу лучше назвать ОсновнойПоставщик.
2. Команда формы “ЗаполнитьТовары” прописано, но не реализована в документе “ПокупкаТоваров”.
По коду эта команда должна быть в документе “ПродажаТоваров”.
3. Док. ПокупкаТоваров не проводится. В процедуре проведения нет: Движения.ТоврыНаскладе.Записывать = Истина.
4. у реквизита ТЧ Товары Количество тип “Строка” 10, поменять на “Число” 15 и 3.
ОбщийМодуль ПроверкаДокументовСервер
5. Недоступен на клиенте. Нет флага: ВызовСервера в свойствах модуля.
6. Модуль проверяет занные записаные в ИБазу из за чего перед проц.ПроверкаДокумента необходимо записывать документ. Перенесён в модуль документа.
док.ПродажаТоваров.
7. В ТЧ Товары реквизит Серия связать с реквизитом Товар в свойстве – СвязиПараметровВыбора.
8. Перед проверкой документа на отрицательные количества, проверить записан ли документ. Иначе ссылка на документ будет пустой.
9. Процедуру проверки перенести в модуль (для предотвращения проблемы п.8) формы документа типа:
таб = Объект.Товары.Выгрузить();
Для каждого стр Из таб Цикл
Если стр.Количество 0 Установить Отказ = Истина;
19. В строке: “Объект.Товары.Загрузить(ДокументОснование.Товары);”
“ДокументОснование.Товары” заменить на “ДокументОснование.Товары.Выгрузить()” т.к. Загрузить можно только ТЗ.
(не загружает даже из ТЗ даже на сервере :( )
20. если недостача = 0 высчитывать средневзвешаную = плодить копейки в остатках с 0 количеством. Списываем имеющееся количество
и имеющуюся сумму.
Номер Серии в Справочник.Серии установим для обязательного заполнения на вкладке Нумерация ставим Контроль уникальности.
В место шага 2.
Жалостливая история про хитрость, жадность и глупость.
Работали в одном ООО два программиста – Фокспрошник и 1эсник.
Фокспрошник поддерживал специфическую фокспрошную базу. т.к. на фокспрошной базе в файловом варианте работало 20 человек в место 8, база вешаласьИглючила.
Персонал ругался матерно. Фокспрошник переводил стрелки на Сеть и админов. Админы резонно возражали: 1С-ка в этой же сети нормально работает.
1эсник поддерживал бухгалтерию и адаптировал приложение 1С (созданное партнёром 1С) для замены фокспрошной базы.
После одного дня рождения хитрый Фокспрошник говорит 1эснику: помоги освоить платформу 1С-ную.
Пребывая в подпитом настроении глупый 1эсник, пожалел Фокспрошника и согласился.
Через 3 месяца Фокспрошник успешно закончил начальный карс УЦ№ 3 “Введение в конфигурирование 1С:Предприятие 8” по дистанционке. А иначе и быть не могло т.к.
в самых сложных моментах ему помогал добрый и глупый 1эсник. Однако и у 1эсника адаптация подошла к концу и замаячило внедрение.
Побежал Фокспрошник к жадному Начальнику и сказал: оставь меня умнейший и добрейший Начальник т.к.
1. Преподаватели УЦ№ 3 дали мне хорошие отзывы о моих Домашних работах. (ещё бы!)
2. Постиг я абсолютно все премудрости 1с-ные. (угу, начальный курс)
3. 1С-ный проект я и сам внедрю (см. п.2)
4. Платить мне будеш на 6 тыр меньше, чем 1эснику.
5. Дополнительные ключики к приложению покупать не надо будет (60 тыр экономии).
Согласился жадно-глупый Начальник и уволил 1эсника.
Проект естественно был завален. Виноватым постановили считать давно уволенного. (продолжаем плакать)
Но есть и хорошая сторона – стал 1эсник менее добрым, но зато более умным. ГлупоЖадному Начальнику не пришлось судиться с партнёрами 1С
за работу без дополнительных ключиков и не попал он на бабки.
Перестал после этого 1эсник помогать товарищам по цеху. Ну, только видя полную лажу, да и то с целью показать прфессиональное превосходство.
Только однажды 1эсник показал выпускнику УЦ№ 3, как создаётся интерфейс на форме ТолстогоКлиента. Видимо
эти сокровенные знания более не преподаются и вскоре будут безвозвратно утеряны.
Шаг.3
1. список большой, приводить не буду.
2. небыло особых заблуждений.
3. кое что, немногое что работает в Толстом клиенте
4. неожидано вкусные бонусы.
5. да я вообще очку не люблю. Я люблю по медитировать над темой.
Константин, по шагу 1 – зачет.
Шаг 2. Грустная история. Стоит ли зачитывать как выполнение?
>Перестал после этого 1эсник помогать товарищам по цеху.
Все-таки я считаю, что это неправильная философия.
Поэтому попрошу проявить активность на каком-либо форуме. Например, http://devtrainingforum.v8.1c.ru/forum/.
Авансом ставлю зачет.
По шагу 3 – ок.
Ну что же, Константин, поздравляю со статусом финалиста нашего курса :)
“Вышли мы все из Фокспро
Дети 1С молодой” (с) из революционного :)
Зря вы так на Фокспро – у меня с нуля работало ПО с 93 до 97 г. в Банке, пока Банк не обанкротился :(, сетевое под ДОС, с обменом данными по филиалам типа 1С-ного УРИБ, блокировок на DBF не было даже при > 20-30 юзерах. Хотя ВСЁ приходилось самому кодировать.
Но вот пришла 1С 2.0, 6.0, 7.7 и 8.Х – бери и пользуйся готовым и мощным функционалом по международным стандартом.
Шаг №2.
http://www.forum.mista.ru/topic.php?id=503779
Шаг №3.
– Много нового. Так сразу и не перечислишь. Когда что-то усвоил хорошо, оно уже не замечается. Когда это уже является частью тебя, представляется как само собой разумеющееся. Задним числом только можно понять: вот это я узнал у Гилева. Я не занимался специальным выписыванием чего-то нового для себя, хотя стоило бы. Пишу как пример:
Тонкости в контекстах модулей; различия в указании периода в виртуальных таблицах для Остатки и ОстаткиИОбороты; указание
параметров в СКД на нескольких уровнях; комбинация Ctrk+Enter; возможность проведения без проведения; условие в запросе по схеме “(Поле1, Поле2) В”; возможность сравнения свойств Ссылки и ЭтотОбъект.Ссылка; обычные и управляемые формы могут жить параллельно. Если честно, то Мастер-группа мне дала намного
больше, чем сами диски. Очень надеюсь продлить ее.
– Клиенты пока работают на 8.1. Думаю переводить на 8.2 в самое ближайшее время. По мере перехода придется пересматривать большинство уроков из мастер-группы.
– Мне лично данный формат обучения очень подходит. Были недели когда я не успевал за происходящим. Но в выходные все наверстывал. Был в отпуске без инета две недели. Поэтому сейчас взял недельный учебный отпуск, чтобы закончить тему “Расчеты”.
Шаг 2, 3 – зачет.
Жду ответа по домашним заданиям курса.
Все 15 ДЗ выполнены. Есть соответствующие комментарии. На вопросы ответил к ДЗ № 15, 12 и 9
Отлично, вы выполнили требования к финалисту курса :)
А вот теперь поздравляю вас, как финалиста базового курса! :)
C финальным дз не разобрался, скажу честно, т.к. на работе завал.
по п.3. отвечу подробно:
1. Из базового курса я узнал, что тему расчета я никогда в жизни не буду нигде поддерживать/использовать и т.д. Прямо ощущаю каждой клеткой – мега-дубовщина, спецом в которой можно стать только тогда, когда только это и делаешь. Если мне не изменяет память то у Камина их ЗУП построен без расчетных регистрах (по крайне мере пару лет тому назад было именно так). Понимаю почему :)
2. С платформой 8 работаю с 2005 г. Новые навыки пока никак не применил, буду применять – переводить конфы с 8.1 на 8.2 по методике МГ. Вариантов два – или переведу или меня “переведут”. Хочется верить в хорошее :)
3. Да главная неожиданность, собственно, в том, что я попал на этот курс. Это правда неожиданно!
4. Формат обучения очень удобен. Удобнее не придумать.
5. (у вас его нет, но я все равно напишу): Фарит, лично к Вам – мне кажется, все таки, месадж ту Гарсия – устарел. Ну не верю я, что в наше время, кто-то что-то будет делать “на шару” за 9 тысяч рублей в месяц!? За такие деньги нужно не только не работать, но еще и чуть чуть вредить!
И пользуясь случаем, хочется еще раз Вам, Фарит, и Вам – Евгений, сказать большое спасибо за предоставленную возможность поднять свой проф.уровень.
С П А С И Б О!
Игорь, спасибо за ответы на вопросы :)
//Обзор конфигурации для пивной компании
ПОКУПКА ТОВАРОВ
1. Команда заполнить товары не выведена на форму.
2. В процедуре ВвестиЗначение не верно указан тип, надо Тип(“ДокументСсылка.ПокупкаТоваров”)
3. В процедуре заполнить клиента, на Клиенте обращение к серверному контексту. “Справочники. …”
4. Даже если бы работало. Какой смысл заполнять в поступлении – покупателя!
5. в процедуре ЗаполнитьТоварыНаСервере много ошибок.
6. НаСервереБезКонтекста, обращение идет к контекстной переменной объект.
7. Объект.Ссылка имеет ссылку только после записи.
8. Метод загрузить, принимает в качестве параметра таблицузначений.
9. При проведении поступления у набора записей ОстаткиНаСкладе отсутствует флаг записывать
ПРОДАЖА ТОВАРОВ
10. Документ реализация не включен в регистраторы ОстаткиНаСкладе
11. В табличной части нет отбора серий по товару
12. При недостаче, документ все рано проводится
13. Сообщение.УстановитьДанные не привязывает сообщение к конкретному полю. необходимо использовать ПутьКДанным, выбирая в забпросе по мимо всего прочего номерСтроки.
14. Остатки выбираются не на дату документа
15. В запросе нет итогов по сумме, отсюда не корректная сумма.
16. В запросе нет группировки во избежание дублей строк.
17. ОсталосьСписать необходимо переопределять для каждой позиции товара. Отсюда часть записей с нулями.
18. При использовании одного регистра ОстаткиНаСкладе ресурс сумма не будет выходить в 0. Так как сумма поступления и списание по средней разные вещи.
19. функционал “Проверка документа” в реализации требует предварительной записи документа, иначе могут быть не верные сообщения.
Пожелание бухгалтера. Справочник – Данные – стандартные реквизиты – свойства Код – Проверка заполнения -выдавать ошибку.
Илья, шаг №1 (с учетом дополнения) – зачет.
По п.2 финального задания – статья:
Расчет в 1С:Предприятие 8.2 –
это сложно или просто?
http://infostart.ru/public/75234/
Это действительно наиболее сильное впечатление от базового курса – подсистема Расчет стала достаточно понятной, когда осознала состав и взаимосвязи ее основных объектов.
Правильная ссылка http://infostart.ru/public/75233/
Статья почему-то продублировалась.
Статью плюсанул ))
Шаг 2 – зачет.
Ирина, поздравляю вас со статусом “Финалист базового курса”!!
Ура!
Спасибо!
Отлично :)
|1|***************
1)Основная форма “ПокупкаТоваров”. На клиенте вызов неправильный, надо как минимум обращаться через ПредопределенноеЗначение(), либо серверную функцию
2)Общий модуль “ПроверкаДокументов” – ставим “Вызов сервера”
3)процедура Предупреждение() недоступна на сервере
4)На сервер в проц. ПроверитьДокумент передаем неверный параметр – делаем серверную процедуру, в ней РеквизитФормыВЗначение и уже эту ссылку передаем
5)ОбработкаПроведения() “ПокупкаТоваров” – у набора движений нет свойства Записывать=Истина;
6)Вместо предупреждения выводим сообщение пользователю на клиенте
7)”ПокупкаТоваров” – Количество – строка , надо Число 15,3
8)РН “ТовНаСкладах” Количество – число 15,2 – надо 15,3
9)Товары и клиенты обычно иерархический справочник
10)У спр.товары поставим галку – БыстрыйВыбор
11) серии – сделать контроль уникальности хотя бы по владельцу
12)Делаем дополнительный реквизит “НомерСерии” – свойство “ПроверкаЗаполнения” выдавать ошибку
13)У серии делаем управляемую форму , добавляем НомерСерии и убираем код из формы
14)”ПродажаТоваров” – не очищается набор записей перед запросом остатков
15)”ПродажаТоваров” – внутреннее соединение вместо левого, также не сворачивается номенклатура ТЧ перед левым соединением, обычно кидаем сгруппированное в вирт.таблицу и потом левое соединение
16)При выводе сообщения пользователю Количество не привязано к строке, а только к столбцу, пользователь нас не поймет
17)”ПродажаТоваров”. Запись.Сумма=Сначала умножаем на количество, потом все остальное во избежание ошибок округления
18)”ПродажаТоваров”. При выводе сообщения пользователю о нехватке выставляем Отказ=Истина;Продолжить;
19)Сумма в документе поступления – это цена*количество во избежание ошибок округления, след-но добавляем в поступление и реализацию поле цена и процедуры пересчета
20)Регистр. у РН “ТоНаСкладах” стоит только “ПокупкаТоваров”, надо добавить и документ реализация
21)”ПродажаТоваров”. У реквизита ТЧ Серия не установленасвязь по владельцу (Связи параметров выбора- Отбор.Владелец-Товары.Товар)
|2|***************
Попытался помочь в темах
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566272#566272
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566276#566276
По одной теме кстати ответ узнал из ответов в мастер-группе
|3|***************
– Из нового: индексирование измерений в регистрах, новая методика проведения документов, работа с управляемыми формами, узнал новое про виртуальные таблицы регистров расчета и как их и когда использовать, узнал некоторые моменты, до сих пор неизвестные мне в СКД
– Более глубоко проникся клиент-серверной архитектурой в 8.2
– На примерах работы преподователей научился быстро и хорошо пользоваться Синтаксис-помощнком, ориентируюсь в нем гораздо лучше и быстрее нахожу свои ответы
– Формат обучения мне понравился, прошел в своем темпе все темы, можно с головой время от времени уходить в материал по своему усмотрению
>10)У спр.товары поставим галку – БыстрыйВыбор
Для каких целей?
>12)Делаем дополнительный реквизит «НомерСерии»
Можно было и кодом обойтись
Финальное ДЗ – зачет.
Александр, вы – финалист базового курса. Поздравляю :)
Шаг №1:
1.Документ ПокупкаТоваров: ФормаДокумента: Есть команда ЗаполнитьТовары, а кнопки нет.
2. Там же. Нет типа “Документ.ПокупкаТоваров”, а есть тип “ДокументСсылка.ПокупкаТоваров”
3. Там же. Вместо текста “НЕ Основание.Пустая()” нужно писать “ЗначениеЗаполнено(Основание)”, иначе при отказе от выбора
возникает ошибка
4. Процедуру
“&НаСервереБезКонтекста
Процедура ЗаполнитьТоварыНаСервере(ТекущийДокумент, ДокументОснование)
Объект = ТекущийДокумент.ПолучитьОбъект();
Объект.Товары.Загрузить(ДокументОснование.Товары);
КонецПроцедуры”
заменить на
“&НаСервере
Процедура ЗаполнитьТоварыНаСервере(ДокументОснование)
ДокументОбъект = ДанныеФормыВЗначение(Объект,Тип(“ДокументОбъект.ПокупкаТоваров”));
ДокументОбъект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
ЗначениеВДанныеФормы(ДокументОбъект,Объект);
КонецПроцедуры”
5. Там же в модуле: Процедура ЗаполнитьКлиента: Вместо “Справочники.Клиенты.ОсновнойПокупатель” использовать
ПредопределенноеЗначение(“Справочник.Клиенты.ОсновнойПокупатель”).
6. Там же. Необходимо добавить строчку Модифицированность = Истина;
7. Документ ПокупкаТоваров: ФормаДокумента: МодульОбъекта: В ОбработкеПроведения не достает строки
движения.ТоварыНаСкладе.Записывать = Истина;
8. В метаданных документа ПродажаТоваров не указано, что документ может делать движения по регистру ТоварыНаСкладе
9. В модуле проведения документа ПродажаТоваров ошибка в запросе: нет условия “ГДЕ ПродажаТоваровТовары.Ссылка = &Ссылка”
10. Там же при недостаче лучше будет, если Отказ = истина;
11. Там же при недостаче ошибка в определении номера строки: Сообщение.Поле =
“Товары[“+(ВыборкаТовары.НомерСтроки-1)+”].Количество”. Для этого в запросе в раздел итогов добавить поле
МАКСИМУМ(НомерСтроки)
12. Т.к. контоль остатков производится по старой методе, то не хватает строк: Движения.ТоварыНаСкладе.Очистить();
Движения.ТоварыНаСкладе.Записать();
13. Остатки проверяются только актуальные. Ошибки возможны при проведении задним числом.
14. Там же, в запросе необходимо Левое внешее соединение, а не внутреннее, и применить isnull.
15. Свойство “Проверка заполнения” стандартного реквизита “Код” справочника “Серии” должно иметь значение “Выдавать ошибку”
16. Из клиентской процедуры модуля формы док. ПродажаТоваров происходит вызов серверного общего модуля
ПроверкаДокументовСервер без свойства “Вызов сервера”
17. В контексте серверного общего модуля ПроверкаДокументовСервер (в процедуре ПроверитьДокумент(Документ)) недоступен глоб.
метод Предупреждение().
18. Там же в запросе отбор происходит по Ссылке, которая приводит к тому что, если документ еще не записан, то она пустая и в
выборку ничего не попадет.
19. Почему то в документе ПокупкаТоваров у реквизита ТЧ “Количество” тип “Строка”.
20. Ресурсу “Количество” в регистре ТоварыНаСкладе лучше поставить точноть 3, а не 2.
Сергей, по шагу 1 зачет.
Скажите как дела обстоят с домашними заданиями в ходе курса?
Очень жаль, что не смогу решить финальное ДЗ в указанные сроки :(. Сейчас в отпуске до конца недели, а 8.2 только на рабочем компьютере… Обидно… Но спасибо вам за этот курс! Мне уже несколько раз пригодились знания, которые я получила от вас, хотя я работаю еще на 8.1. Стала лучше понимать “внутренности” платформы. И вообще нашла 2-ю работу удаленно и получаю больше денег!
>И вообще нашла 2-ю работу удаленно и получаю больше денег!
А вот это реальный результат.
Анна, спасибо за пожелания, успехов в работе!
Часть1. Ошибки:
1)Документ “Покупка товаров”:
а) При проведении не записывались движения по регистру ТоварыНаСкладе, т.к. в обработке проведения, т.к. нужно либо их явно записывать, либо указать Движения.ТоварыНаСкладе.Записывать=Истина;
б) Кнопка “Заполнить клиента”. Синтакс.контроль модуля формы выдавал ошибку, т.к. нельзя обращаться к объектам типа Справочник из клиентских процедур в тонком клиенте. Сделала вызов серверной процедуры.
2)Документ “Продажа товаров”:
а)Документ должен делать движения в регистр накопления ТоварыНаСкладе, но в регистре этот документ не был отмечен как регистратор.
б)В обработке проведения движения по регистру не очищались
б)В обработке проведения документа были ошибки в запросе к остаткам:
не было сделано приведение к нулю ресурсов регистра, значение которых равно null;
Так как учет стоимости и количества нужно вести в разрезе номенклатуры и серий, то в запросе в параметрах виртуальной талицы остатков
нужно добавить условие, чтобы остатки отбирались в разрезе серий.
Там же указать, что остатки должны браться на МоментВремени, который определяется при оперативном проведении как Неопределено, а при неоперативном как Граница.
Нужно использовать левое содинение таблицы документа с виртуальной таблицей остатков, а не внутреннее
В обработке результат запроса недостача определялась по номенклатуре в целом, без учета серий.
При недостатке товара выводилось сообщение без привязки к строке. Необходимо в запрос добавить НомерСтроки из Таб.части.
При вычислении суммы списания нужно перенести множитель Запись.Количество в числитель.
Запрос и обработку результата я переделала существенно.
Можно было бы переделать проверку остатков: сначала сделать движения, записать, а потом проверить, не появились ли отрицательные остатки в регистре.
3) В свойствах общего модуля “ПроверкаДокументовСервер” нужно поставить галку “Вызов сервера”, т.к. из него вызывается процедура “ПроверкаДокумента” с клиента.
В ней при наличии ошибки выдается Предупреждение. Модуль серверный и поэтому нельзя использовать Предупреждение. Можно заменить СообщениемПользователю.
Проверка работает только если документ записан, т.к. передается ссылка
4) Для того, чтобы номер серии был обязателен для заполнения, нужно в свойствах стандартного реквизита Код справочника Серии поставить “Проверка заполнения” в положение “Выдавать ошибку”
Часть2 – Планирую провести мини-семинар и выложу фото, когда появится возможность.
Часть3 – Ответы на вопросы:
1)Узнала много нового: работа с регистрами расчета, СКД, систематизировала те знания, которые были.
2)Поняла, что мне еще учиться и учиться :)
3)Я сейчас работаю на платформе 8.2 в УПП, сразу стала применять новые знания на практике. На реализацию задач стало уходить гораздо меньше времени. Хотя и раньше не было неразрешимых задач, но сейчас появилась еще большая уверенность в своих силах.
4)Формат очень удобный. Именно о таком обучении я и мечтала. Очное обучение не позволило бы охватить тот объем материала, который мы изучили и еще изучим. Плюс материалы всегда под рукой, можно при необходимости посмотреть. Спасибо огромное, Фарит и Евгений, за предоставленную возможность!:)
Юлия, шаг 1 – зачет.
Спасибо.
Жду возможности выложить фото с семинара ко 2 части. Она будет или нет?
Да, конечно. Сегодня ночью планируем загрузить специальную компоненту на сайт..
Шаг2. Евгений, я уже нашла ответ на вопрос про фото, что выложить их можно будет ночью.
Пока на словах опишу суть проведенного мною мероприятия. Я провела небольшой семинар (по времени около 1,5 часов) для своих коллег по работе. Я рассказала им про систему компоновки данных и привела примеры построения отчетов на СКД; показала новый механизм контроля остатков; про новый способ сообщений пользователю; управляемый интерфейс. Поговорили о том, какие дальнейшие наши планы по развития нашей ИБ (УПП). Также показала приемы набора программного кода с помощью горячих клавиш. Ответила на все интересующие их вопросы. Курс мы приобрели один и так как я была инициатором, то я и обучалась, но постоянно рассказывала всем обо всем новом, что узнала.
Спасибо вам большое!
Отлично, Юлия!
Так как модуля для загрузки фото еще нет, посмотреть фото с семинара можно здесь:
Волнуюсь, хочется поскорее узнать, попаду ли я в число финалистов.
Юлия, хорошие фотографии.
Вы в числе финалистов, поздравляю! :)
Ура, спасибо!
ШАГ № 1
Ошибки
1)В «Обработке проведения» документа «Покупка товаров» не строчки:
Движения.ТоварыНаСкладе.Записывать=Истина;
2)Для запрета серий с нулевым (пустым ) номером –
Процедура ПередЗаписью(Отказ)
Если Код=0 Тогда
Отказ=Истина;
Сообщить(“Заполните номер серии !”);
КонецЕсли;
КонецПроцедуры
3)В документе «Продажи товаров» на закладке «Движения» не установлен крыжик на регистре «ТоварыНаСкладе»
4) В документе «Продажи товаров» в обработке проведения нет строчек;
Движения.ТоварыНаСкладе.Очистить();
Движения.ТоварыНаСкладе.Записать();
5) В документе «Продажи товаров» в обработке проведения;
Сделать левое соединение в запросе
6) В документе «Продажи товаров» в обработке проведения;
В запросе таблица по табличной части документа не сгруппирована, т.е. возможен неправильный алгоритм при дубле строк
7) В документе «Продажи товаров» в обработке проведения в запросе не учитываются значения null. Необходимо при получении остатков использовать isnull
8) В документе «Продажи товаров» в обработке проведения в запросе в параметрах виртуальной таблицы не наложен фильтр на серии
9) В документе «Продажи товаров» при проверке заполнения неплохо бы было проверять не только количество на отрицательность, но и сумму, незаполненную номенклатуру.
10) В документе «Продажи товаров» в обработке проведения не учитываются блокировки при чтении из регистра.
11)В алгоритме проведения «Продажи товаров»
Запись.Сумма = ВыборкаСерии.СумОст/ВыборкаСерии.КолОст*Запись.Количество – при списании могут не выводится регистры в ноль из-за округления
Правильная строка: Запись.Сумма = ВыборкаСерии.СумОст *Запись.Количество/ВыборкаСерии.КолОст;
12) При недостаче нет строчки Отказ=Истина;
13) Не учтено, что при не оперативном проведении остатки не контролируются.
14) Не указана в свойствах конфигурации «Использовать обычные формы в управляемом приложении»
ШАГ №3
1)Узнал новые возможности программирования на 8.2: директивы компиляции, новый подход к контролю остатков, про управляемые формы. Много полезного из нулевого и первого блока – про массивы, структуры и т.д. Еще про убыстрение написания кода при помощи шаблонов. Из оперативного учета – разделение итогов. Из БУ – про параметр ВТ регистра бухгалтерии «Субконто» – что он не только фильтрует, но и упорядочивает
2)Избавился от заблуждений, что любая конфигурация на 8.1 будет работать на 8.2 без режима совместимости.
3)Новые навыки – стал быстрее писать код за счет шаблонов. Стал применять синтакс-помощник. Пока в основном на 8.1
4)Очным форматом не обучался. Сравню с дистанционными курсами УЦ 3 .Я проходил дистанционные курсы УЦ№3 по всем компонентам(БУ, ОУ, Расчет), кроме курса по основным объектам – видимо поэтому и интерес к нулевому и первому блокам. Еще проходил курсы по конфигурациям БП, УТ и ЗУП. Объем курсом УЦ№3 значительно шире, чем базовый курс, но ждать ответ преподавателя на мелкий вопрос целую неделю – это что-то. Еще курсы УЦ3 сложноваты для новичка. Например в универсальном алгоритме расчета зарплаты не показано, как запросы строятся конструктором и как разбиваются на текстовые вставки – я тогда в 2007 году просто списывал запросы с книжки. Самым приятным является то, что после просмотра уроков, решений ДЗ и сессий МГ все вопросы закрываются. Я думаю темы, не рассмотренные в базовом курсе будут освещены в продвинутом курсе.
>Для запрета серий с нулевым (пустым ) номером
Во-первых, лучше обработка проверки заполнения (она выполняется до начала транзакции, это важно).
Во-вторых, проще настроить свойства стандартного реквизита Код.
>Не указана в свойствах конфигурации «Использовать обычные формы в управляемом приложении»
Полагаю, что этого и не надо..
Сергей, спасибо за ответы на вопросы.
По шагу 1 и шагу 3 – зачет.
Пока не вижу отчета по шагу №2..
Шаг1. Исправления которые следует внести.
1. У документа товары на складах поставить на закладке “движения” флаг у регистра товары на складах.
2. “Проверка документа” срабатывает только для записанных документов,
т.к при отсутсвии ссылки на Документ условие Запрос.УстановитьПараметр(“Ссылка”, Документ) запрос не возвращает желаемый результат.
либо записывать принудительно перед проверкой, либо делать проверку таб части напрямую без передачи ссылки.
3. Серии-стандартые реквизиты-проверка заполнения-выдавать ошибку. Эдля Виолы Григорьевны.
4. вобработке проведения продажа товаров. Левое соединение к таб части вместо внутреннего.
проверка на нал
| ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КолОст,
| ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СумОст
5. сделать проверку при делении на ноль в строке Запись.Сумма = ВыборкаСерии.СумОст/ВыборкаСерии.КолОст*Запись.Количество;
из-за ВыборкаСерии.КолОст=0
6. в док Покупка в обработку проведения поставить
Движения.ТоварыНаСкладе.Записывать = Истина;
иначе движения автоматом не записываются.
7. по п4 задания не понял. Кнопка заполнить клиента подставляет предопределенного.
Если нужно что-то иное можно создать константу “клиентПоДефолту” Заполнить её контрагентом и брать из этой константы в документ.
Это всё найдено и описано буквально за 15 минут. Появится еще свободное время-поищу остальные ошибки.
шаг 3.
1. По новым механизмам которые относятся именно к 8.2 новое было всё. до этого с управляемым интерфейсом не работал.
2. заблуждений как таковых не было. Хотя нет..было..Не думал что курс может быть настолько продуманным, логичным, и так внятно преподноситься. За это отельный мегареспект и 100+ в карму!
3. Подглядел фишки с запросами, которых ранее не знал. Узнал кое-что новое по СКД. К сожалению на работе сталкиваюсь только с 8.1 поэтому могу применить только то, что является общим для 8.1 и 8.2
4. Работаю. Неожиданным..из материалов всё ожидаемое. Неожиданное это количество и качество дополнительных материалов. Мастергруппы.
5. The BEST!
Спасибо, Дмитрий!
Шаг 2 – провел демонстрацию возможностей платформы 8.2 своей жене Елене. Она тоже программист 1С. Фото:
Принято :)
Сергей, теперь зачисляю вас в ряды финалистов базового курса.
Поздравляю!
ps. Лене привет и успехов в работе! :)
шаг2
Видео-урок на тему “отличие 8.2 от 8.1 для “Ч”.
дополнительно к шаг2
http://www.glavbyh.ru/showthread.php?t=42350
Отлично!
Отлично, Дмитрий. Урок посмотрел.
По всем пунктам зачет.
Поздравляю вас с вступлением в ряды финалистов!!
Немного, но с учетом того, что за 15 мин. – зачет.
Часть1 – Выполнила. Ошибки исправила. Перечень ошибок нужно приводить или нет?
Часть2 – Планирую провести мини-семинар и выложу фото, когда появится возможность.
Часть3 – Ответы на вопросы:
1)Узнала много нового: работа с регистрами расчета, СКД, систематизировала те знания, которые были.
2)Поняла, что мне еще учиться и учиться :)
3)Я сейчас работаю на платформе 8.2 в УПП, сразу стала применять новые знания на практике. На реализацию задач стало уходить гораздо меньше времени. Хотя и раньше не было неразрешимых задач, но сейчас появилась еще большая уверенность в своих силах.
4)Формат очень удобный. Именно о таком обучении я и мечтала. Очное обучение не позволило бы охватить тот объем материала, который мы изучили и еще изучим. Плюс материалы всегда под рукой, можно при необходимости посмотреть. Спасибо огромное, Фарит и Евгений, за предоставленную возможность!:)
Шаг 2. Доступность выложить фото должна появиться сегодня ночью.
Шаг 3. Зачет.
Поздравляю с тысячелетием родного города ))
Спасибо! :)
1. Документ поступление товаров не делает проводок по регистру ТоварыНаСкладе. Свойство “Записывать” не выставлено в “Истина”.
2. Документ “Покупка товаров” Реквизит “Количество” в табличной части Товары – строка. Должно быть число.
3.Документ “Покупка товаров” Процедура ЗаполнитьКлиента(). Нельзя обращаться к справочникам на клиенте, заменить на
ПредопределенноеЗначение(“Справочник.Клиенты.ОсновнойПокупатель”).
4. Изменение контрагента с помощью этой кнопки не приводит к изменению модифицированности формы. Решение в лоб в этой же процедуре Модифицированность=Истина;
5.Документ “Продажа товаров” из клиентской процедуры ПроверкаДокумента(Команда) вызывается серверная процедура общего модуля ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка).
6. Общий модуль процедура ПроверитьДокумент(Документ) используется Предупреждение(). Не работает на сервере. А модуль только серверный.
Заменить на СообщениеПользователю() с привязкой к номеру строки.
7. Перед проверкой нужно синхронизировать данные формы и данные в базе, то есть записать документ. Желательно необходимость
записи проверять по модифицированности документа.
8. Что бы не делать этих лишних проверок на отрицательное количество в документах достаточно реквизиту Количество табличной части Товары
установить признак “Неотрицательное”.
9. Документ “Продажа товаров” у серий нет связи по владельцу.
10. Документ “Продажа товаров” не является регистратором для регистра ТоварыНаСкладе и не делает по нему движений.
11. Документ “Продажа товаров” Не реализован механизм учета дублей строк.
12. Документ “Продажа товаров” нет проверки отрицательных остатков.
13. Документ “Продажа товаров” нет списания стоимости по средней с учетом серии.
14. Не установлен период итогов в регистре ТоварыНаСкладе.
15. Не реализовано отслеживание последовательности документов.
16. В форме документа “Покупка товаров” не выведена в интерфейс команда ЗаполнитьТовары.
17. В форме документа “Покупка товаров” процедура ЗаполнитьТовары(). Тип(“Документ.ПокупкаТоваров”) должно быть Тип(“ДокументСсылка.ПокупкаТоваров”).
18. Там же ЗаполнитьТоварыНаСервере. Для нового документа еще нет ссылки. Перед заполнением нужно его записать.
19. Там же ЗаполнитьТоварыНаСервере. Объект.Товары.Загрузить(ДокументОснование.Товары) Табличную часть нужно сначала выгрузить() в таблицу значений.
20. Там же ЗаполнитьТоварыНаСервере. Табличную часть загрузили, но что бы увидеть изменения нужно еще записать и потом перечитать на клиенте.
Или написать более оптимальный алгоритм заполнения ТЧ. Как вариант передавать контекст и заполнять Товары на сервере.
Думаю нашел не все. :)
2.В последнее время очень редко хожу на форумы. Надеюсь подойдет вот такой пример помощи. http://forum.windowsfaq.ru/showthread.php?t=103463
– С упраляемыми формами почти не работал. Почти вся информация по ним была для меня новой.
– В 1С нет форматированного текста, самозанятость и свой бизнес это одно и тоже.
– Более оптимальный и аккуратный код подсмотренный в уроках.
– Довольно часто предложенные решения были более просты и оптимальней чем те, котрые использовал я сам.
– Для меня токой формат наиболее оптимален. Плюсы уже не раз озвучивались в других темах.
Прочитал что нужно описать решение по каждому пункуту, а я это сделал не везде. Дополню.
5. Разнести на 2 процедуры с разным контестом выполннеия.
9. Указать связи параметров выбора для реквизита “Серия”.
11-13. Все выбираю одним пактом запросов. В результирующей таблице только те строки, по которым не хватет остататков. Сообщаю их пользователю, отказ = истина, дальше делаю Возврат.
Если всего хватет вибираю из временной таблицы сформированной в пакете запросов только позиции у которых количество больше нуля и делаю по ним движения. Средняя стоимоисть серии и обеспечение списания в 0 по сумме реализовано в запросе.
19.Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
Ок!
>7. Перед проверкой нужно синхронизировать данные формы и данные в базе, то есть записать документ.
Не обязательно. Можно изменить алгоритм проверки :)
>18. Там же ЗаполнитьТоварыНаСервере. Для нового документа еще нет ссылки. Перед заполнением нужно его записать.
А ведь можно получать тот объект, который отображается в форме, и его заполнять. Тогда и 20-го пункта не надо.
Шаг 2. Поздравляю со статусом “маг-волшебник” ))
По финальному ДЗ – зачет.
Еще одним финалистом базового курса стало больше :) Поздравляю!!
Спасибо, Евгений. :) Конечно можно было бы переписать алгоритмы. :)
1. Готово.
Из запомнившихся ошибок:
– тип данных реквизита “Количество”, ресурса “Количество”;
– док. “Продажа” – отбор серии по владельцу;
– док. “Покупка” – флаг для набора “Записывать”
– Общий модуль. Флаг “Клиент (упр. прил.)”;
– Заполнение клиента- серв. вызов.
– док. “Продажа” – регистратор для РН.
– обработка проведения док. “Продажа”:
очистка набора, в конце запись набора, сообщение пользователю – корректировка вывода. Расчет недостачи.Запрос – добавление “НомерСтроки”, isnull.
Расчет стоимости списания – сначала умножаем, потом делим – чтобы не повисали копейки.
2. Периодически сижу на этом форуме, помогаю людям: http://www.1c-pro.ru.
В профиле 157 “Спасибо”: http://www.1c-pro.ru/index.php?showuser=14061. Надеюсь, примите на “зачет” :)
3. Новое – в основном БУ и Периодические расчеты. Оказалось не так страшно – но нужен опыт.
Активно применяю приобретенные навыки в частности построения отчетов (СКД).
На очных курсах не учился, но формат курса очень удобный. Огромный плюс – можно вернуться к материалам курса позже.
>Общий модуль. Флаг «Клиент (упр. прил.)»
Я бы поставил вызов сервера.
По финальному ДЗ – зачет.
Александр, поздравляю вас, как финалиста базового курса!
Хоть в финалисты я и не попадаю, а практическую задачу хотелось сделать. Вот что получилось:
-в справочнике Серии для стандартного реквизита Код (Номер серии) установлена проверка заполнения.
– документ ПродажаТоваров не был указан в качестве регистратора для регистра накопления ТоварыНаСкладе.
– для реквизита Количество: в регистре накопления ТоварыНаСкладе был указан тип данных Число(15,2), в документе ПродажаТоваров – Число(15,3), а в документе ПокупкаТоваров – Строка(10). Везде установила тип данных Число(15,3).
– в документе ПродажаТоваров для реквизита Серия в ТЧ Товары не был установлен отбор по владельцу. Исправлено: для свойства “Связи параметров выбора” установила значение Отбор.Владелец[Товары.Товар].
– для документов ПокупкаТоваров и ПродажаТоваров не была установлена проверка заполнения реквизитов.
– для документа ПокупкаТоваров движения не сохранялись в регистр накопления ТоварыНаСкладе. Исправлено: в обработке проведения документа для НЗ Движения установлено свойство Записывать = Истина.
– в форме документа ПокупкаТоваров в клиентской процедуре ЗаполнитьКлиента было напрямую обращение к предопределенному значению справочника Клиенты. В Тонком клиенте возникала ошибка. Исправлено: ПредопределенноеЗначение(“Справочник.Клиенты.ОсновнойПокупатель”).
– для общего модуля ПроверкаДокументовСервер не был установлен флаг “Вызов сервера”.
– в северном общем модуле ПроверкаДокументовСервер для сообщения пользователю об ошибке вызывалась функция Предупреждение(). Исправлено: Предупреждение() заменено на СообщениеПользователю.
– в документе ПродажаТоваров для проверки документа на корректность передается ссылка на документ. Соответственно, если документ был изменен (или создан), но не записан, то проверка не учтет изменения. Исправлено: если документ новый или модифицирован, то он программно записывается перед началом проверки.
– в регистре накопления ТоварыНаСкладах для измерений Товар и Серия установила запрет незаполненных значений.
Документ ПродажаТоваров, ОбработкаПроведения :
– в запросе исправлено ВНУТРЕННЕЕ СОЕДИНЕНИЕ на ЛЕВОЕ СОЕДИНЕНИЕ;
– часть запроса по ТЧ.Товары преобразована во вложенный запрос с группировкой по Товару и Серии и суммируемым полям Количество и Сумма.
– в таблице остатков по РН.ТоварыНаСкладе установлен параметр Период, в который передается МоментВремени документа. В параметре Условие во вложенный запрос можно добавить РАЗЛИЧНЫЕ.
– в запросе значение NULL для остатка приводится к 0.
– убраны итоги в запросе, и следовательно, убран обход по группировкам для ВыборкаТовары и удалена вложенная ВыборкаСерия.
– при анализе результатов запроса, если требуемое количество больше, чем остаток, то устанавливается Отказ для Обработки проведения.
– при выдаче сообщения пользователю добавлен индекс строки, к которой привязать сообщение.
– для набора записей Движения установлено свойство Записывать.
– движения по регистру накопления записываются, если не установлен Отказ.
– количество списания по товару и серии равно количеству, заданному в документе ПродажаТоваров (без дублей).
– в начале обработки проведения добавлено очищение и запись набора записей Движения по регистру ТоварыНаСкладе.
Я так понимаю, методика списания товаров и серий, которую использовал программист М.Н., была бы применима, если бы в документе продажи четко не задавалась Серия товара, а только Товар и количество. А Серия списываемого товара определялась бы программно, по наличию на складе и, например, в порядке увеличения срока годности.
>Хоть в финалисты я и не попадаю
И все же шансы есть..
>Я так понимаю, методика списания товаров и серий, которую использовал программист М.Н., была бы применима, если бы в документе продажи четко не задавалась Серия товара, а только Товар и количество
Именно так.
По шагу 1 – зачет.
Осталось выполнить шаг 2 и 3, и доделать домашние задания..
По шагу 2 я Вам на почту присылала:
http://www.forum.mista.ru/topic.php?id=503779#15
Интересно, в той теме последний ответ тоже от “нашего” человека? :) Третьим будет)..
Шаг 2 зачитываем.
Да в этой теме наши участники :)
Что нового Вы узнали из базового курса по программированию?
Нового очень много! Особенно в мелочах. До этого о каких-то небольших (но важных!) вещах было поверхностное или интуитивное суждение, а сейчас они стали логичными.
Переняты какие-то полезные приемы программирования.
И для меня абсолютно все новое по бух учету и расчету.
От каких заблуждений избавились? Честно говоря, глобально – ни от каких. Зато избавилась от глобального незнания или непонимания в некоторых областях, разделах. И еще избавилась от неприятия платформы 8.2 как таковой.
Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
вам удалось применить новые навыки (какие результаты были достигнуты);
Последнее время на работе программировать совсем не приходится. Это как раз было одной из причин, почему я пришла к Вам на курсы. Хотя… ко мне теперь стали посерьезнее относиться.
Насколько удобен, оказался формат обучения в сравнении с очным форматом?
В целом, плюсы такого формата намного перевешивают минусы.
Хотя иногда очень хотелось реального присутствия тренера и группы (чуть ли не с монитором начинала разговаривать :) )
Да и все таки, самое главное не формат курса, а его наполнение и умение тренера. У Вас все получается замечательно! Качественно и профессионально. И интересно. Спасибо :)
Екатерина, спасибо за позитив :)
Настало время мне и вас поздравить со статусом “Финалист базового курса”!! =)
Начинаю отвечать на финальное ДЗ.
По п.3
1) Что нового Вы узнали из базового курса по программированию?
Огромное количество новой для меня информации не только об отдельных приемах программирования для 8.2, а, что было главным, именно методический подход к объектам конфигурации и к способам взаимодействия с ними – это и хотелось получить.
Очень много поняла про временные таблицы, вложенные запросы с условиями и параметрами, работу с подсистемами расчета и бухгалтерии, клиент-серверное взаимодействие, СКД.
2)От каких заблуждений избавились?
О запредельной сложности кодирования в 1С и о практической невозможности разобраться в клиент-серверном взаимодействии 8.2.
О том, что переход на 8.2 для УПП крайне сложен.
О том, что для создания работоспособных обработок и доработок конфигурации мне обязательно необходим кодировщик.
Существенно изменились представления об оптимальности кода как при оценке своей работы, так и других.
3)Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
вам удалось применить новые навыки (какие результаты были достигнуты);
Практически работаю с УПП на платформе 8.1 и подготавливаю переход на 8.2.
Существенно быстрее стала разбираться в сложных запросах типового функционала и разбирать алгоритмы, о которых в описании фирма 1С ничего не сообщает, а при работе это постоянно необходимо.
Если Вы пока не работаете реальных проектах по внедрению решений на
«1С:Предприятии 8», то, что оказалось неожиданным из материалов курса?
По кодированию и сейчас почти не работаю, но, теперь намного более реально могу определить трудоемкость работ программистов-кодировщиков – существенно меньше во многих случаях, чем по их оценке.
4)Насколько удобен, оказался формат обучения в сравнении с очным форматом?
Было сложно, было трудно, практически все свободное время за последние два месяца были заняты изучением курса, но, считаю, что эти курсы – однозначно удобнее очных.
Даже, не просто удобнее, а для меня – это единственно возможный вариант.
Очные курсы, думаю, допустимы, только в случае, если уже все знаешь на практике и надо формальную справку, или, например, изучить отдельные вопросы, чтобы сдать экзамен.
Полностью убеждена, что за несколько дней очных курсов, невозможно освоить такой объем информации, который был в этом базовом курсе, тем более, запомнить наизусть, чтобы иметь возможность применять в дальнейшем на практике.
Не могу сказать, что всем свободно владею из пройденного материала, но, записи этого курса у меня есть, следовательно, в любое время смогу повторять многократно и использовать как справочные материалы для работы.
В-общем, эти курсы полностью оправдали мои ожидания, а результаты моего обучения превзошли предполагаемые.
Спасибо, Ирина.
По шагу 3 – зачет.
Шаг 1.
1) Начать с того, что ни один “серьезный” заказчик не примет систему без нормального интерфейса для работы.
То же самое касаемо печатных форм.
2)Перейдем сериям товаров. Номер серии желательно сделать строковым. И для этого желательно воспользоваться не кодом а наименованием. Код можно убрать в 0. Основное представление: По Наименованию.
3) Создать нормальные формы Элемента, Списка и Выбора справочника в которых можно слово “Наименование” заменить на “Номер серии” для удобства работы.
4) В модуле формы Элемента создаем процедуру ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты), в которой в ПроверяемыеРеквизиты добавляем Наименование, что бы номер серии обязательно был заполнен.
5) Документ ПокупкаТоваров ТЧ Товары реквизит количество имеет строковый тип вместо числового.
Нет реквизита цена, хотя в принципе он не обязателен.
6) Форма документа клиентская процедура ЗаполнитьКлиента() нельзя обращаться к “Справочники”. Создаем серверную процедуру, которая возвращает предопределенный элемент справочника Клиенты, и вызываем ее из ЗаполнитьКлиента()
7) В процедуре ОбработкаПроведения ошибка. Не установлено свойство Движения Записывать в Истина.
8) Нет отчетов. Хотя бы отчета ОстаткиТоваровНаСкладах. Создаем.
9) Документ ПродажаТоваров. Реквизит ТЧ Товары “Серия” не имеет связи с полем Товар. Устанавливаем свойство реквизита “связи параметров выбора” = Отбор.Владелец(Товары.Товар).
10) Клиентская процедура ПроверкаДокумента() вызывает процедуру из серверного общего модуля ПроверкаДокументовСервер у которого не установлено свойство ВызовСервера. Вызов из клиентских процедур невозможен.
Кроме этого можно было просто установить у реквизита Количество свойство Неотрицательный, и не парится с проверкой.
11) Эта же процедура будет работать правильно только на записанных документах, т.к. в него передается ссылка на текущий документ. Что бы работала “онлайн” проверка туда надо передавать текущую табличную часть.
12) В процедуре ПроверитьДокумент(Документ) используется не доступная на сервере функция Предупреждение. Надо использовать Сообщить(), либо СообщениеПользователю и привязывать сообщение прямо к полю количество соответствующей строки. (не забывать что строка передается по индексу а не по номеру).
13) Документ Продажа не зарегистрирован как Регистратор для регистра ТоварыНаСкладах.
14) ОбработкаПроведения документа продажи
а) В запрос добавить ПродажаТоваровТовары.НомерСтроки для корректной привязки СообщенияПользователя в случае недостачи.
б) В параметрах виртуальной таблицы остатки не указан первый параметр. Добавить параметр Граница, который устанавливать в неопределено (в случае оперативного проведения) или Границу документа (в случае неоперативного)
в) Непонятно зачем использовались ИТОГИ ПО. Достаточно было использовать СГРУППИРОВАТЬ ПО ПродажаТоваровТовары.Товар, ПродажаТоваровТовары.Серия. Ведь учет ведется жестко в разрезах номенклатуры и серий.
Кстати в этом случае можно обойтись одним циклом в обработке запроса, а не двумя.
г) в случае недостачи, некорректно привязано поле в СообщениеПользователю. Необходимо добавить имя табличной части и индекс в виде “Товары[“+(ВыборкаТовары.НомерСтроки-1)+”].Количество”
д) Не установлено свойство отказ в случае недостачи
е) неверно вычисляется сумма списания. Сумма = СумОст/КолОст*КолДок. Нужно брать в скобки Сумма=(СумОст/КолОст)*КолДок, а в случае когда КолОст=КолДок нужно списывать всю сумму остатка.
Шаг 3.
Этот курс для меня, что называется, “попал в струю”. Как раз некоторое время назад пытался самостоятельно разобраться с платформой 8.2, и бросил когда не смог создать элементарную форму. Курс явился для меня своеобразным откровением, особенно в части работы с управляемыми формами и интерфейсом пользователя.
Полной неожиданностью оказалось разделение исполняемого кода на серверную и клиентскую части. С непривычки немало помучался пока уяснил для себя картину.
Благодаря курсам могу теперь писать запросы не прибегая к помощи конструкторов и стал применять их чаще в своей работе.
Оказалось что реализовать бух.учет это действительно не очень сложно, и дописал управленческий бух.учет в своей рабочей конфигурации. И теперь не приходится переносить данные вручную в бухгалтерию, чтобы получить финансовый результат.
На очереди механизм расчета и выплаты зарплаты.
Что касается удобства использования формата видео обучения перед прочими формами обучения, то преймущества данного метода неоспоримы. Во-первых не нужно оказываться в определенное время в определенном месте, что бы получить очередную порцию знаний. График занятий можно выстроить так как это удобно для себя. Домашние задания помогают закрепить пройденый материал и применить полученые знания на практике. Появившиеся вопросы можно оставить на сайте и на них непременно ответит тренер. Наиболее частые вопросы даже выходят в сессиях мастер-групп, так что порой даже не успеваешь задать вопрос. А читая комментарии других пользователей, иногда замечаешь какие-то стороны вопроса каторые сам мог упустить из виду. И все это происходит, как уже говорилось, в удобное для тебя время, и без привязки к месту обучения.
По шагу 3 – зачет.
Денис, не вижу результат шага 2..
>в которых можно слово «Наименование» заменить на «Номер серии» для удобства работы
А можно сделать синоним у стандартного реквизита “Наименование”.
>Что бы работала «онлайн» проверка туда надо передавать текущую табличную часть.
Скорее нужно получать объект, отображаемый в форме
По шагу 1 – зачет.
Замучался с Jinq -oм. Ограничение в 5 мин просто убивает.
http://chistov.spb.ru/forum/33-1097-1#11248
http://chistov.spb.ru/forum/33-1014-1#11249
Была еще одна тема, но ее уже кто-то убил.
Ответ на http://www.screencast.com/t/ZjlmZDk1Z
Шаг 2 однозначно зачет!
Я старался:)
По метаданным:
1) Справочник товары – не иерархический, что неудобно для потенциальных пользователей (как минимум есть разделение на пиво и сопутствующие товары).
2) Как вариант номер серии может содержать не только числовую информацию но и знаки / и др., поэтому использования числового типа может вызвать проблемы.
3) Основной покупатель – на самом деле это основной продавец, так как он определяется для документов прихода, и на мой взгляд его значение правильней хранить в константе, чтобы пользователь мог менять значение.
4) Не используются механизмы проверки на уровне метаданных – проверка на заполненность значения (например клиентов), на неотрицательность (для количества).
Реальные ошибки:
Документ Покупка товаров (не очень удачное название может запутать, не понятно кто покупает)
1) Движения не записываются, (надо добавить Движения.ТоварыНаСкладе.Записывать = Истина;)
2) В Процедуре ЗаполнитьКлиента происходит обращение к метаданным что в на клиенте недопустимо (но если конфигурацию сразу запустить, то все работает нормально, т.е. основной клиент подставляется, но если вставить пробел и сохранить конфигурацию то начинает ругаться – Переменная не определена (Справочники), я не понимаю как Вы это сделали!). Соответственно надо использовать ПредопределенноеЗначение (“Справочник.Клиенты.ОсновнойПокупатель”)
3) Команда ЗаполнитьТовары не включена в состав формы.
Тип(“Документ.ПокупкаТоваров”) не правильно надо Тип(“ДокументССылка.ПокупкаТоваров”). Заполнение на сервере не выполняется, так как если это новый документ, то в базе его пока нет, если он есть мы его получим, но для загрузки нужна ТЗ соответственно надо – ДокументОснование. Товары.Выгрузить(), и даже если загрузим, то это не отобразиться на форме, так как вызов ВнеКонтекстный. Либо перечитываем данные, либо контекстный вызов (РеквизитФормыВЗначение и т.д.).
Документ Продажа товаров
1) Проверка на заполненность проверяет данные находящиеся в базе, т.е. бесполезна, надо сначала записать минусовое количество, тогда еще сработает.
2) Так как при списании проводится расчет себестоимости, то надо использовать старую методику проведения. Очищать набор записей (у меня есть вопрос-замечание, как показал опыт для очистки можно воспользоваться одной командой Движения.НазвРегистра.Записать(), т.е. не выполнять команду Движения.НазвРегистра.Очистить(), если мы до этого не читали набор записей, это оптимально?).
3) Соответственно надо накладывать управляемую блокировку (опять вопрос до очистки движений или после? Обычно в примерах после, но, а если не получится заблокировать а уже очистили движения?).
4) В запросе неправильный способ соединения – надо ЛЕВОЕ, данные регистра не проверяются на Null.
5) В параметрах виртуальной таблицы не используется МоментВремени и в условии отбора используется только Товар, а можно сразу и Серии типа (Товар, Серия) В (…).
6) Сообщение о нехватке неправильно привязывается к полю, надо брать номер строки-1, соответственно его надо добавить в запрос.
7)В цикле списания по сериям не проверяется Осталось Списать на 0, соответственно могут формироваться лишние строчки.
7) не проверяется возможное деление на 0 и формула не оптимальна, надо Запись.Количество *ВыборкаСерии.СумОст/ВыборкаСерии.КолОст, чтобы избежать проблемы округления деления.
Не реализован вспомогательный функционал – расчет суммы по строке, привязка сообщений к номеру строки, управляемый интерфейс и т.п. Нет возможности печати, отчетов. Так что М.Н. надо еще потрудиться.
Если ориентироваться на потребности бизнес-пользователей, то следует добавить возможность мониторинга сроков годности, т.е. предупреждение за n-дней об окончании, при оформлении продаж реализовать подбор товар с указанием сроков годности и т.п.
PS. При отборе финалистов прошу учесть, что я в данный момент не имею реальной практики , так основная работа преподавание в ВУЗе, но есть цель и Ваши курсы одно из основных средств достижения этой цели. Я реально стараюсь)))
Как хочется к финишной ленточке – про Виолу Григорьевну я и забыл – надо добавить проверку кода на 0 в ОбработкаПроверкиЗаполнения Справочника Серии
Сам с собою разговариваю – в обычном режиме соответственно документы работать не будут, так нет форм. Все, жду приговора)))
Верно.
Есть вариант проще – настройка свойств стандартных реквизитов :)
>я не понимаю как Вы это сделали
Основной режим запуска – Толстый клиент (УП). В этом и был подвох ))
>Проверка на заполненность проверяет данные находящиеся в базе, т.е. бесполезна, надо сначала записать минусовое количество, тогда еще сработает.
Есть более гуманный вариант – передавать получать объект из формы, тогда и проверка будет работать..
>Соответственно надо накладывать управляемую блокировку
До очистки движений.
Юрий, шаг 1 – зачет.
Не вижу шага 2 и 3, отписывались?
Передавать / получать объект из формы на сервер и обратно нельзя. Я так попробовал (передал в процедуру общего модуля Объект, а не Ссылка) и система по окончании серверной процедуры выдавала ошибку. Пришлось вообще убрать вызов общего модуля и организовывать проверку в модуле формы.
Если очень хочется, то можно.
Например, передавать не по ссылке а по значению.
Есть и другие варианты, подробно почему нельзя и когда можно – в продвинутом.
Но в данной задаче, я бы сделал контекстный серверный вызов, и там бы разместил код проверки.
Шаг 2 я на почту писал -mg … Опубликована статья на инфостарте, есть отзывы http://infostart.ru/public/75309/, на сайте наше 1С написали, что готовится к публикации. Проявил определенную активность на Форумы по 1С и не только » Аттестация “1С:Специалист” » Аттестация “1С:Специалист” по платформе “1С:Предприятие 8.2” Дал пару советов, с одни согласились)))
Шаг 3 Узнал очень много новой информации, систематизировал и закрепил имеющиеся знания. Про заблуждения в явном виде сказать не могу. В настоящее время я пока на проф. уровне с 1С не работаю, в основном разбираю задачи по Специалисту (есть ряд методологических вопросов). Формат обучения устраивает полностью. Скорость обучения по видеооурокам регулирую сам. Очень полезна информация мастер-группы. Так что большое спасибо, я с Вами!
Спасибо, видимо упустил, много отчетов.
В таком случае, спешу вас поздравить с присвоением статуса “Финалист базового курса”!!
Спасибо! Обещаю оправдать доверие!!!
Нашел http://chistov.spb.ru/forum/33-1121-1
Отлично!
Денис, поздравляю вас с успешным финалом базового курса. Вы -финалист :)
Шаг 1. Практическое задание
Ошибки в конфигурации:
1. В качестве кода/номера серии правильнее было бы использовать строковый код, потому что обычно такие коды имеют в своем составе буквенные литералы.
2. В документе «Продажа товаров» на уровне реквизитов объекта не настроена связь параметров выбора для реквизита «Серия» в результате чего пользователь прикладного решения может выбрать серию не соответствующую товару. Также такая связь не настроена на уровне формы.
3. Для реквизитов «Товар» и «Серия» не настроена проверка заполнения. Это может привести к тому, что пользователь «повесит» натуральные и стоимостные показатели на пустые товар/номенклатуру, что потенциально может привести к хищениям у заказчика.
4. В процедуре проведения модуля объекта документа «Покупка товаров» не взводится флаг «Записывать» у регистра «ТоварыНаСкладе», в результате чего при проведении документ не сделает никаких движений.
5. В процедуре «Обработка проведения» модуля объекта документа «Продажа товаров» есть ряд ошибок:
– перед анализом остатков нужно очистить и записать движения документа, так как стоит признак «Удалять движения при отмене проведения»;
– неправильно анализируются остатки товаров. Нужно анализировать текущие остатки при оперативном проведении и на момент документа при неоперативном проведении;
– неправильный запрос при анализе остатков (итоги нужно делать по Товару и Серии; табличную часть документа нужно сворачивать, так как могут быть дубли строк; неправильное условие в виртуальной таблице на товар и серию). Вообще в данном случае лучше было создать временную таблицу со свернутой табличной частью, а в основном запросе соединить ее с остатками, в виртуальной таблице указав условие (Товар, Серия) В (ВЫБРАТЬ Товар, Серия ИЗ ВремТаблица).
– нет анализа на достаточность количества по определенной серии. В результате документ полностью не проведется, в случае если общего количества товара достаточно, а по конкретной серии нет, и что самое плохое пользователь в этом случае не получит никакого сообщения об ошибке.
6. В документе «Покупка товаров» неверно описан обработчик команды «Заполнить клиента», не использована функция ПредопределенноеЗначение(«Справочник.Клиенты.ОсновнойПокупатель»), в результате чего модуль формы не сможет быть скомпилирован на тонком клиенте из-за недоступности предопределенного элемента справочника.
7. Неверно реализован обработчик команды «Проверка документа» в документе «Продажа товаров». Правильнее было обработчик проверки разместить в модуле объекта в процедуре «ОбработкаПроверкиЗаполнения», а в обработчике команды сделать серверный вызов и вызвать метод объекта «ПроверитьЗаполнение». Даже если оставить существующую логику работы, то в этом случае в общем модуле «ПроверкаДокументовСервер» нужно поставить галочку «Вызов сервера» и заменить вызов Предупреждения на метод СообщениеПользователю.
8. Неверно реализован обработчик команды «ЗаполнитьТовары» в документе «Покупка товаров». Правильнее обработку заполнения было реализовать в модуле объекта в обработчике «Обработка заполнения», а в модуле формы нужно было сделать серверный вызов и вызвать метод объекта «Заполнить».
Для выполнения требования Виолы Григорьевны нужно зайти в окно редактирования справочника «Серии», перейти на закладку «Данные», нажать кнопку «Стандартные реквизиты», выделить реквизит «Код» и установить свойство «Проверка заполнения» в значение «Выдавать ошибку». Также нужно установить галочку «Контроль уникальности» для исключения ошибок пользователя, чтобы он не мог для одной серии указать разные сроки годности.
Шаг 2 Помощь ближним
Тут все просто – после изучения каждой мастер-группы и очередной сессии – я устраивал небольшой ликбез своим сотрудникам, правда без флагов, фейерверков и фотографий. Таким образом, помощь миру была существенно больше 30 минут (я думаю в общей сложности, потратил на презентацию новых фишек коллегам часов 8), многие всерьез задумались о покупке ваших курсов. Если нужны физические подтверждения – не вопрос – устроим специальное костюмированное шоу в желтых майках с транспарантами, но думаю цель была не в этом )))), к тому же реально сейчас завал по большому проекту, но опять же повторюсь – если эти фотографии вам необходимы для бизнеса – не вопрос – организуем из уважения к вам.
Шаг3 Ответы на вопросы по курсу:
1. Нового из курса узнал не очень много, так как сейчас работаю разработчиком и про все возможности уже краем уха слышал – смотрел в книгах от 1С. Но что самое главное – курс позволил упорядочить имеющиеся знания и понять методику разработки в клиент-серверной методологии (раньше приходилось писать по наитию, несмотря на то, что в принципе по образованию программист).
2. Избавился от заблуждения, что 1С это просто и что 1С-ники «недопрограммисты» и «быдлокодеры». Хороший специалист должен постоянно иметь в виду особенности клиент-серверной архитектуры, методики разработки и постоянно анализировать свои решения на оптимальность. Времена когда можно было писать «на коленке» открыв конфигуратор прошли.
3. Я работаю внедренцем, весной уверенно сдал экзамен на специалиста по платформе, но не было уверенности в своих знаниях. Новые навыки, полученные в ходе курса, позволили уверенно и достаточно легко провести несколько внедрений в течении лета (как раз во время курса) прикладного решения «Управление торговлей, редакция 11». До курса в новой редакции все было непонятно, страшно и незнакомо. Самое главное – все клиенты остались довольны!
4. Формат обучения очень удобен, единственное, что было сложно лично для меня – очень высокий темп: изучать курс реально приходилось ночами в ущерб сну, только тогда можно было выделить пару часов от работы и семьи. Поэтому мне было бы удобнее еще больше растянуть курс, пусть и за большие деньги. С другой стороны, глаза боятся, а руки делают!
Курс пройден – сообщение Гарсии доставлено )))), уверенность в своих силах появилась.
Также добавлю несколько пожеланий:
1. Старался быть активным участником, несмотря на все сложности по работе (в серьезную пору сдачи отчетности) и в семье, несколько моих вопросов попали в мастер-группу, в силу возможностей пытался быть активным в комментариях. Надеюсь, что этих усилий хватит на получение статуса «финалиста» и получение вкусного бонуса.
2. Надеюсь, что продажи продвинутого курса начнутся раньше 20 сентября, так как я уезжаю в командировку, в противном случае прошу дать возможность оплатить продвинутый курс после 26 сентября по возвращении.
3. Надеюсь, что вы изыщите возможность предоставить курс по администрированию тем, кто присоединяется к продвинутому курсу сейчас – после базового, пусть и за отдельные разумные деньги. Такая информация очень полезна и вполне укладывается в рамки продвинутого курса. Думаю, что не стоит ущемлять в знаниях разных участников первого потока (как я уже говорил в комментариях – не всегда легко сразу выделить большую сумму на обучение из семейного бюджета, мне например было бы гораздо легче заплатить за тот же курс не 17700 сразу, а по 5000 в течение 4 месяцев. Подумайте над этим, не все участники курсов живут в столице и получают заветные «отстатыщ»).
4. В очередной раз хочу сказать, что хотелось бы получить материалы по подготовке к специалисту по прикладным решениям «Управление торговлей» и «Зарплата и управление персоналом». Можно в качестве бонусов – можно за деньги. Тем более эти материалы у вас есть и на этом можно тоже заработать деньги.
5. Очень мало информации по важнейшей теме монетизации. Вообще был бы рад отдельному курсу по этой теме.
6. Надеюсь, что Фарит сдержит обещание, и курс по проектам можно будет купить после окончания продвинутого со скидкой.
Прошу прощения за некоторую сумбурность, времени на сон реально остается очень мало.
Еще раз БОЛЬШОЕ СПАСИБО за курс и УСПЕХОВ вам во всех начинаниях.
С уважением,
Филимонов Юрий
>итоги нужно делать по Товару и Серии
В этой задаче итоги вообще не нужны. Ведь пользователь сам указывает серию для списания, другое дело, если она должна была определяться автоматически…
По остальным пунктам согласен.
Шаг 2, 3 – зачет.
>Хороший специалист должен постоянно иметь в виду особенности клиент-серверной архитектуры
В продвинутом курсе мы убедимся, что база разработанная в файловом режиме совсем не обязательно будет работать в клиент-сервером..
>Времена когда можно было писать «на коленке» открыв конфигуратор прошли.
На 100% согласен.
Спасибо за пожелания.
Поздравляю вас с получением статуса “Финалист базового курса”!!