Решение ДЗ №12 базового курса
Решение заключительного задания по 3-му блоку.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
>пожалуй, это самое объемное задание на текущий день.
Не соглашусь, по сравнению с 9 – семечки..
P.S.: Было бы интересно увидеть реализацию Авизо с использованием ТЧ – поесмотреть преодоление заморочек с доступностью в ТЧ..
Интересный вопрос. Возьму на заметку.
Спасибо, было б действительно оч. интересно, познаваемо и полезно!..
Есть ещё соображение по документу РеализацияТоваров. Проводим документ только по БУ. Если попытаться реализовать (не передать) то, чего у нас по БУ не проходило, то выдаётся непонятная для пользователя ошибка: “Запись не верна! Не заполнен счет кредита (Регистр бухгалтерии: Хозрасчетный; Номер строки: N)”. Это потому, что счет кредита теперь достаём из остатков, а если остатков нет? Я решил делать проверку на превышение остатков для всех операций и перенес её в начало цикла:
Пока Выборка.Следующий() Цикл
Если Выборка.КолДок>Выборка.КолОст Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Превышение остатка по “+Выборка.Номенклатура+” на “+(Выборка.КолДок-Выборка.КолОст);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
Продолжить;
КонецЕсли;
…
Отлично!
Мелкая давняя ошибка – невозможно записать группу справочника Номенклатура. К группе пытается записать единицу измерения, которой нет. В процедуре ПриЗаписи() указываеи:
Если Не Отказ И Не ЭтоГруппа Тогда
…
Исправлено, спасибо.
Вопрос на засыпку – Для чего в данном курсе нуга 10 глава 3 блока?!..
Ну очень “муторная” тема – особенно для новичков..
Не даром в 19 уроке на 5 минуте, прозвучало “Поздравление” – для досшушевших до этого момента!.. ;))
Чтобы показать, что некоторые “простые” задачи имеют не самые простые решения.
Это полезно, даже новичкам )
А в продвинутом хватает не простых тем..
Что некоторые «простые» задачи имеют не самые простые решения – эт видно в дюбой типовой, 1С – умельцы по таким решениям!.. ;))
В документе Авизо если выбрать счет с 2-мя видами субконто, то “Связь по типу” срабатывает некорректно. Поэтому лучше сделать это программно.
Я сделал так:
Если ЗначениеЗаполнено(Объект.Счет) Тогда
Элементы[“Субконто”+Сч].ОграничениеТипа = Объект.Счет.ВидыСубконто[Сч – 1].ВидСубконто.ТипЗначения;
КонецЕсли;
Да, печальное поведение. И в документе “Операция” та же беда.
Очень похоже на ошибку платформы, которая тянется еще с 9-го релиза.
Предложенный “костыль” будет работать.
Исследовал данную проблему. Соображения следующие:
1. Если в управляемой форме не делать “видимо-невидимо” для Субконто1 и Субконто2, то связь по типу работает нормально. Можно выбрать Счет, записать и закрыть. Потом открыть – типы открытых субконто установлены. Видимо при установке видимости связь по типу не отрабатывает.
2. В качестве Элемента связи по типу лучше указывать не 0, 1 а 1, 2. Подсмотрел в УПП, документ ОперацияБух. Для СубконтоДт1, СубконтоДт2 и СубконтоДт3 указаны соответственно 1, 2, 3. В 8.2 такой подход тоже работает – проверено.
3. Если ограничение типа делать программно по методу коллеги Alex_grem, то надо помнить о границах индекса Объект.Счет.ВидыСубконто. Мой вариант:
Процедура УстановитьВидимость()
Если ЗначениеЗаполнено(Объект.Счет) Тогда
Для Сч=1 По Объект.Счет.ВидыСубконто.Количество() Цикл
Элементы[“Субконто”+Сч].Видимость = Истина;
Элементы[“Субконто”+Сч].ОграничениеТипа = Объект.Счет.ВидыСубконто[Сч-1].ВидСубконто.ТипЗначения;
КонецЦикла;
Элементы.Количество.Видимость = Объект.Счет.Количественный;
КонецЕсли;
КонецПроцедуры
Изначально видимость реквизитов Субконто1, Субконто2 и Количество сброшена в форме.
Интересное поведение, возьму на заметку.
Кстати, как отработает текущий алгоритм, если сначала выбрать счет с 2-мя субконто, а потом без субконто?
Да, проблема такая есть. Но можно обойти – в начале процедуры УстановитьВидимость() добавить две строки:
Элементы.Субконто1.Видимость = Ложь;
Элементы.Субконто2.Видимость = Ложь;
Ок )
местами у Вас в коде написано ПодразделениеОТРАвитель. Звучит зловеще! :)
Жесть ))
как-то идея делать один запрос учитывающий несколько документов в общем модуле мне не оч нравится. если мне нужно поправить один документ в типовой в общем модуле. нужно отследить, а как другие документы. а была бы в модуле этого документа процедура-там поправил и всё. особенно если многоэтажные запросы которые написаны через +условие+
так и получилось с авансовым. и так есть в типовых.
Смотря какие документы.
Изначально функциональность была очень схожа, но дальше сильно разъехалась..
А мне такие примеры нравятся с той точки зрения, что в УПП есть аналогичные ситуации.
Здесь подробно объясняете – там проще разбираться.
Да уж, три дня как-то убил, чтобы найти где в УСО проводки формируются по какому не помню уже документу.
правда что ли три дня? за час можно отловить думаю..по f11
По F11 моно и 11 дней !.. ;))
По F12 – нуно..
Евгений, вы так легко поменяли местами субконто на счете 002. Хотелось бы узнать, насколько это правомерно. Вы это сделали, чтобы упростить себе задачу или так делать можно? И если на экзамене на специалиста такое сделать, верным ли будет решение задачи?
Да, это я сделал, чтобы упростить алгоритмы. Поскольку никаких отчетов по ответ. хранению в задании не требуется, я могу спокойно менять порядок субконто.
Ведь по сути порядок влияет лишь на скорость доступа к данным: к первым субконто будет идти обращение быстрее. Т.е. в моем решении остаток по 002 для товаров будет выбираться быстро.
А все товары по контрагенту чуть медленнее.
Что касается экзамена. Если речь идет о специалисте по платформе, то считаю такое изменение порядка субконто не повлияло бы оценку (если бы решаемая задача была аналогичной).
ссылка на 11 часть не работает, в ней вместо 11 стоит 1/1
Исправлено. Всем спасибо.