Кто сдавал на сертификацию ТиС: поясните задание 1 #769


#0 by Таня
Расходная накладная: списание товара делать по цене приобретения? если списываю по цене продажи, то остается отрицательный остаток по ресурсу Стоимость. тогда вопрос, где отражается цена продажи, если списание делать по цене приобретения?
#1 by skunk
Может лучше ты все задание целиком приведешь, а то что-то не понятно причем тут списание и цена продажи.
#2 by Таня
Необходимо разработать конфигурацию, которая позволяет вести партионный учет товаров: -    Справочник товаров с дополнительным периодическим реквизитом «ЦенаПродажи», значение которого может изменяться только документом «РасхНакл»; -    Перечисление «Порядок» со значениями «FIFO», «LIFO», «вручную»; -    Периодическую константу «ПорядокСписания» с типом данных – перечис-ление «Порядок»; -    Документ «ПрихНакл», который служит для отражения в системе факта прихода товаров, введенных в табличной части, по ценам закупки; -    Документ «РасхНакл», который списывает товары, введенные в табличной части, со склада; Структура регистра остатков «ТоварыНаСкладе» должна обеспечивать ве-дение количественного и стоимостного учета товаров на складе в разрезе партий (поставок). Признаком партии является сам документ «ПрихНакл», по которому пришел товар. Многовалютный и многоскладской учет не ведется, НДС и другие виды на-логов в документах не указываются и не рассчитываются. В табличной части накладных необходимо иметь возможность вводить цену и количество товара, сумма строки должна рассчитываться автоматически. В рас-ходной накладной при выборе товара в графу «цена» должно заноситься значение из реквизита «ЦенаПродажи» справочника на дату документа. Если  в накладной значение цены продажи изменяется, то новое значение должно быть записано в периодический реквизит «ЦенаПродажи». При проведении документа «РасхНакл» необходимо обеспечить контроль нали-чия товара на складе, списание для одного товара в общем случае более одной партии товара по цене этих партий по одному из трех правил, в зависимости от установленного значения периодической константы «ПорядокСписания»: «FIFO» (первой списывается партия, которая оприходована раньше других) «LIFO» (в обратном порядке) «вручную» (пользователь сам указывает пар-тии, которые необходимо списать). В структуре табличной части расходной накладной кроме реквизитов «Товар», «Цена», «Количество» и «Сумма», необходимо иметь реквизит «Партия», кото-рый будет недоступен для редактирования, и скрытый реквизит «ЦенаЗакупки». Если константа «ПорядокСписания» установлена в значения «FIFO» или «LIFO», то реквизит «Партия» остается пустым. Если константа «ПорядокСписания» установлена в значение «вручную», то в форме документа становятся видимыми и доступными дополнительные реквизи-ты диалога «ТоварДляВыбора» типа справочник «Товары», «СписокПартий» типа таблица значений и кнопка «Сформировать список пар-тий». В этом случае работа с накладной должна проводиться так: -    Выбрать в реквизите «ТоварДляВыбора» нужный товар; -    Нажать на кнопку «Сформировать список партий». При этом в таблице значений должен появится список несписанных партий указанного това-ра с указанием количества каждой партии, которое есть в остатках на складе. Алгоритм формирования списка партий необходимо построить с использованием метода выгрузки итогов регистра в таблицу значений с предварительно установленным фильтром по виду товара; -    Щелчком мыши выбираются партии для списания, при этом добавляют-ся новые строки в табличную часть, в которые заносится «Товар», «Пар-тия»,  «Количество», а в скрытый реквизит табличной части «ЦенаЗакупки» заносится цена выбранной партии; -    «Количество» и «цену продажи» можно изменить, что приводит к пере-счету «суммы».
#3 by skunk
Тогда регистр остатков у тебя должен имееть такую структуру ОстаткиТМЦ  Товар  Склад  ЦенаПродажи Ресурс  Количество  Стоимость
#4 by Spoofy
А где можно приобресть эти задания?
#5 by gr13
по мойму на мисте где то видел
#6 by GrayT
Мне кажется структура регистра другая Измерения: Товар - Спр.Товар Партия - Док.ПРиходнаяНакладная Ресурсы: Количество Стоимость --------- Склад не нужен, в задании сказано об отсутствии многоскладского учета А цена продажи отражается в РАсходнойНакладной
#7 by skunk
Док.ПРиходнаяНакладная - или иначе Док.ВыполнившиДвижениеРегистра уже есть зачем дуплить? А вообщето я привел пример из стандартной ТиС где уже реализованн партиный учет. Зачем изобретать велосипед
#8 by Таня
4) скачать задания можно на сайте 1С.ру 6) - прав, структура регистра должна быть именно такая (это я точно знаю) 7) стандартную ТиС нельзя брать в качестве примера, так как условия задачи определены конкретно. Просто мне не понятно по какой цене делать расход товара в регистре по расходной накладной - если делать по цене прихода, то в регистре остаток по стоимость не висит, тогда возникает вопрос: цену продажи указывать только для перезаписи реквизита ЦенаПродажи справочника.Товары?
#9 by GrayT
"Структура регистра остатков «ТоварыНаСкладе» должна обеспечивать ве-дение количественного и стоимостного учета товаров на складе в разрезе партий (поставок). Признаком партии является сам документ «ПрихНакл», по которому пришел товар. " Документ делающий движения по регистру в одном случае ПРихНакл, а в другом РасхНакл. Но учет должен вестись в разрезе партий - прихНакл. Знатаком ТиС себя не считаю сейчас конфу загружу - посмотрю.
#10 by GrayT
Расход по цене прихода. В Торговле партионный учет сделан на регистре "ПартииНаличие" и там совсем другая структура чем в Рег.ОстаткиТМЦ. и партионный учет завязан на СПРАВОЧНИКЕ.ПАРТИИ Вообще сертификационные задачи расчитаны на написание с нуля и копироваь ни чего не надо, а то в 4 часа можно не успеть скопировать всю ТиС :))
#11 by Таня
Товарищи, еще вопрос по тому же заданию: Skunk, ты мне вчера по поводу подбора посоветовал проверять типЗначения на = 12 (документ) Я написала вот что: Как еще из СЗ достать тип Документ, что-то мне кажется, что такой вариант тоже будет ругаться если форму подбора открыть не из документа, а из формы например Обработки или Отчета.
#12 by GrayT
Попробуй так:
#13 by GrayT
А на момент подбора документ записан?
#14 by skunk
Я не сдавал на сертификацию, незнаю правил и прочей шняги для этого. Просто спросили. Я показал как это бы сделал я. Я не утверждал, что это решение правильно. А у вас явное дублирование информации. Ну 1С с этой строны понять трудно. У них там вообще много чего не понятного. Я не так советовал СЗ = Форма.Параметр; Если ТипЗначения(СЗ) = 12 Тогда  и далее что тебе надо если это документ. СЗ может содержать, как пустое значение так и и совершено другое смотря что ему передали из обработки, отчета, или еще откуда. Поэтому можешь добавить ИначеЕсли ТипЗначения(СЗ) = 0 Тогда  это если в качестве параметра передали либо пустое значение либо значение не определенного ввида.
#15 by GrayT
Да почему дублирование?
#16 by skunk
Потому что информация о документе выполневшем движение регистра уже сохраняется. по умолчанию.
#17 by GrayT
Это да, но учитывать товар нужно в разрезе партий, т.е. партия должна быть измерением, а партией является док.ПрихНакл
#18 by skunk
Блин, я не спорю. Тем более человек который поставил вопрос сказал, что ваше решение правильное.
#19 by GrayT
Я там глупость сморозил по поводу ТекущегоДокумента - не разобрался в сути вопроса. Действительно ТипЗначения(Форма.Параметр) всегда вернет 100 если вызывать подбор с контекстом. Попробуй вместо контекста передавать список значения, одним из значений будет как раз то, от куда вызываешь подбор: В документе: Для красоты можно предварительно проверить что форма.Параметр является списком значений
#20 by skunk
И если параметр пустое значение получишь по рукам. А если сз передан из другого места где не указан параметр "ОткудаВызывали" - просто забыли, опять грабли. Я не спорил по сертификату, ну здесь ты не прав.
#21 by GrayT
"Защита от дурака" может быть многоуровневой (и должна быть). Я отвечал на вопрос и давал идеи, а писать полностью заканченые куски программ не хочу - люди должны сами шишки набивать и учиться.
#22 by Таня
Чиво вы ругаетесь? GrayT был прав в отношении структуры регистра, а вот то что написано в я так пробовала - это первоначальный вариант - со списком значений, просто я решила упростить код и вместо спискаЗначений поставила просто Контекст Skunk, если я пишу ТипЗначения(СЗ) = 12, тогда он выдает что это вовсе не 12 а 100 ! Так как СЗ в этом случае - Групповой контекст.
#23 by skunk
Тогда ты пишешь ЕслиИначе ТипЗначение(СЗ) = 100 Тогда  и делаешь то что тебе надо делать если передали из обработки или откуда там.
#24 by GrayT
В том то и дело, что вызывая ОткрытьПодбор("","", КОНТЕКСТ); Форма.Параметр всегда вернет 100 - групповой контекст. Таня в топике про групповой контекст Вы спрашивали как передать дату. А так не годится
#25 by Таня
Skunk, ведь если я так напишу, то он всегда будет попадать именно на =100 а <> 100 будет в любом случае проходить мимо, так как СЗ = 100 и больше ничему другому Может написать так:   Если ПустоеЗначение(СЗ.ДатаДок) <> 0 Тогда?
#26 by Таня
24) нет так оно ругается, вроде как на переменную, когда пытаешься это в справочнике достатать
#27 by Таня
Ладно я пошла в винды проверять
#28 by GrayT
Т.е. как это ругается? В качестве параметра в форму можно передать все что угодно.
#29 by 345
Нужные действия при вызове из дока РОЗНИЦА                            elsIf Док.Kind = "ПеремещениеТоваров"  then                нужные действия при вызове из Дока на перемещение
#30 by skunk
Блин, народ приношу извинения не контекст надо пердовать а ТекущийДокумент то бишь в доке пишешь ОткрытьПодбор("Справочник.КакойНада", "ФормаСписка", ТекущийДокумент)
#31 by skunk
Pit сделал как ты сказал и получал только     DoMessageBox ("Попытка вызвать подбор не из документа!");
#32 by Таня
Люди, спасибо за помощь в решении вопроса подбора, я его решила, как в У меня другой вопрос возник: ТаблицуЗначений можно загружать в табличную часть документа, а можно ли как нибудь ее в табличную часть формы списка справочника?
#33 by skunk
в продолжение 29 я кстати тоже на этом пар поймал, думал в контексте при подборе пердается документ, а там передается форма документа.
#35 by 345
Не понял... Ты как создаешь СЗ перед вызовом? попробуй в форму подбора вставить нижеприведенную процедуру и скажи, что пишет... !!! в СЗ перед вызовом нужно положить строку
#36 by 345
Вообще то это кусок работающей процедуры ... правда, в бухии, но какая разница ....
#37 by Таня
Это вы уже между собой что-то решаете, или мне помочь пытаетесь?
#38 by skunk
Я не передаю списокзначений я отправляю передаю сам документ. Реально твой код проверил, ошибка что и у меня (Контекст здесь не сам документ а форма документа) все работает как с документом, но также через контекст есть доступ ко всем другим значениям на форме, то бищь закладкам, кнопкам и прочей дряни. Поэтому конеткст не равен типу значения "документ". сообщает твоя прога вот это: Тип параметра = СписокЗначений Получен список значений Тип переменной ДОК = ГрупповойКонтекст
#39 by skunk
Да все еще пытаемся. Уловила суть ошибки.
#40 by 345
Ошибка, ИМХО, в том, что вместо СЗ в параметр в документе заталкивается ТекущийДокумент. Передавать параметры через список значений - более общий способ... Можно втолкать много, в том числе и не лежащих в документе ... например, вычисляемых ... Вот немного переделанная на лету процедура - д. брать и СЗ и ТекущийДокумент Хотя как частный способ - тоже можно... Но тогда форма подбора должна учитывать все особенности структуры каждого дока ...
#41 by Таня
Если честно, нет :( а чем мой вариант через проверку ПустоеЗначение(СЗ.ДатаДок) не подходит?
#42 by Таня
У меня от большого количества иностранных словов глаза в кучу собираются
#43 by skunk
Их бин pit ты опять не прав. СписокЗначенй только грузит обработку, и если кроме информации о документе тебе ни чего передовать не надо создает кучу лишних телодвижений. Хотя бы сравни свою проверку и мою Если ТипЗначения(ЧтоПередали) = 12 Тогда КонецЕсли. А структуру документа тебе по всякому придеться проверять как бы ты его не передал. Потоу что можно нарваться на такое: Если ПустоеЗначение(СЗ.ДатаДок) <> 0 Тогда {Справочник.Новый.ФормаСписка.ФормаСписка.Модуль}: Значение не представляет агрегатный объект (ДатаДок)
#44 by 345
вообще в таких случаях лучьше всего использовать СЗ для передачи параметров, в которые толкать надо толко то, что используется в вызываемой программной единице... Тогда при модификации доков или их структуры не надо лазить в вызываемую единицу и вносить правки туда... Только в вызывающей ....
#45 by skunk
pit это все свернется к частному и повлечет за собой опять немерено длиный список состоящий из Если. Типа проверить откуда МеняВызвали и если меня вызвали отуда то проверить предалили мне это или то или все это сразу. Я лично считаю, что это не есть гуд. Для того чтобы проверить все, когда один фиг при возрате мы получаем элемент справочника и уже вызываемой единице его обрабатываем.
#46 by 345
skunk не прав... Он смотрит с точки зрения написания кода.... я - с точки зрения сопровождения... Затраты на сопровождения и модификацию - больше, следовательно, если пишешь как разработчик - лучше чуть потратить на этапе разработки и сэкономить на сопровождении ... Второе - skunk все равно не прав, ибо времеННые затраты процессора на разбор СЗ мизерны, и, учитывая, что этот блок отрабатывает однократно ПриОткрытии ... поэтому этими затратами можно пренебречь... Разбор структуры дока при передачего в качестве параметра ТекущегоДока (особенно если несколько доков разной структуры используют одну форму подбора) - это гемор еще тот... При этом надо не забывать, что если изменили структуру дока - надо залезть в форму подбора и внести изменения туда ... 121% - не будет сразу сделано.... Если же в СЗ загонять нужные параметры отдельными строками - форму подбора вообще менять не нужно... Контроль параметров на достоверность и значимость - нужно и можно выполнять именно в форме списка при разборе СЗ ... Проверка программируется однократно и только нужных параметров - не надо повторять в каждом доке... Все это называется культурой и технологией программирования ... Вообще методик и их названий много... Но их цель одна - снизить затраты на этапе сопровождения, ибо эти затраты весьма существенны и на порядки превышают покупную цену продукта типа 1С.... Типовые от 1С идеальными примерами такого такого подхода не служат ... Хотя надо признать - за последние два года типовые сильно причесали в этом плане .....
#47 by skunk
pit не прав ибо все выше сказаное можно отнести и к СпискуЗначений плюс к нему добовляется геморр при открытии формы не из документа а из другой програмной единицы где кроме как СЗ передовать нечего. pit все равно не прав потому что я как раз и смотрю с точки зрения сопроваждения. И глобальное изменение документа, которое может привести к изменению обработки открытия формы, в моем случае затронут только документ и вызываемую единицу, в случае с СЗ также и другие единицы в которых в качестве параметра передается списокзначений.
#48 by 345
Нет, не прав ты... Каждая программная единица имеет задокументированный список параметров, которые ей надо подать на вход... Тогда изменения в одной программной единице не коснутся тех, которые она вызывает... ибо ты ОБЯЗАН подать ей нужное для работы. На примере подбора номенклатуры -- на вход нужно подать дату показа остатков (обычно это дата документа). Если дата не задана - тогда при разборе выясняется отсутствие даты и показ на рабочую дату... -- на вход нужно подать склад, по которому показывать остатки... Не задан - по всем ... -- на вход нужно подать тип номенклатуры.. Не указана - по всем. При соблюдении этих правил - вообще то глубоко плевать, откуда вызван подбор - из дока или отчета/обработки. Если аналогичные требования наложить на возвращаемые параметры - тогда подбор формирует некое множество выбранных элементов справочника и возвращает его... Ему глубоко плевать, кто будет принимать параметры .... Дело принимающего - разобрать полученное множество ... струкьура которого известна .. При таких подходах прогр единицы максимально независимы друг от друга и допускают независимое изменение .... "И глобальное изменение документа, которое может привести к изменению обработки открытия формы, в моем случае затронут только документ и вызываемую единицу" --- В моем подходе изменения затронут только документ... но никоим боком - форму подбора... котрая работает на стандартном множестве параметров .... Разница есть ... "в случае с СЗ также и другие единицы в которых в качестве параметра передается списокзначений" -- каким боком, если структура списка оговорена ?... именно на этих принципах строится коллективная разработка ...
#49 by skunk
pit a теперь скажи какое из трех твоих правил при подборе номеклатуры нарушается передачей форме не списка значений а документа. и в твоем случае как ты правильно заметил когда структура списка оговорена, она должна строго соблюдаться. и какое либо отклонение от даной структуры может привести к появлению критических ошибок. то есть добавление к этим трем правилам еще одного уже на этапе эксплуатации системы влечет за собой изменение всех других модулей программы где вызывается данная форма. Допустим фирма вела учет по одному юридическому лицу. Через пару лет она объяденилась с дугим юр. лицом и завела себе один общий склад. На котором надо учитывать остатки разных фирм. То бишь при открытии данной формы требуется показ по дате, юр. лицу, складу, типу. И не много усложним задачу те программеры котрые разрабатывали систему и знают о согласовании уволились или умерли. Да скажешь кометь надо. Конечно будешь прав. Но была какая-то малозначительная обработка, про которую новые программеры просто забыли, или не знали, что она там открывает справочник подбора, и не впарили в нее изменения. Что получаем в итоге. Когда зверь вызывает обработку и открывает из нее подбор. По моему он получит сообщение об ошибки. Или я здесь тоже не прав.
#50 by Таня
А как можно проверить наличие элемента диалога в форме?
#52 by 345
штатно - никак.. Нештатно - Либо внешними компонентами (ВК)... Либо извратом ... типа try except endTry при передаче в форму вместо списка парамтров ссылки на документ надо предусматривать обработку всех доков в форме для правильной выборки это параметра .. из дока .. который может просто по разному называться ...  добавление новой аналитики в систему - серьезная операция... кстати, не факт, что в данном случае подбор будет падать с ошибкой ... он может работать ... но не давать разворота по новой аналитике (юр лицу)... Все зависит от того, как построены запросы для разворачивания... опять таки пример - можно заложиться на порядок следования ресурсов (субконто) и обращаться по номеру Ресурс...Ресурс(и)  Субконто...Субконто (и) А можно по имени.... тогда не упадет .... но может быть не оптимально ... по быстродействию... Правка же нужна в любом случае во всех доках - НО! можно ее и не делать - если в форме подбора сделать анализ доп параметра и в случае его пустого значения разрешать выбор аналитики прямо в форме подбора ... Работать будет ... но неудобно .... В случае же новой аналитики надо все равно править все доки для учета новой аналитики... и форму подбора - для обработки нового параметра и его использования в новых запросах .. Но в моем варианте объем правок менее объемный и четко локализован рамками каждого дока ... Вообще я рекомендовал бы посмотреть последние бухии и торговли .... разные группы разработчиков явно ... и немного разные подходы....  В ТиС разработчики делают попытку разрулить ситуацию через написание универсальных процедур и сильное использование Метаданных ... Вроде ничего получается... но громоздко и много вроде бы лишних проверок ... Плюют разработчики на эти проверки (и правильно делают....) Ибо таже процедура глЗаполнитьРеквизитыШапки .... выполняется при вводе нового дока один раз .... а сам документ готовится человеком много минут .... Мозги у железа кремневые - вот пусть ими и шевелит .... А вообще пример надуманный и непоказательный ... Гораздо жизненнее пример - добавление нового дока в систему .... это чаще делается .... P.S. наш с тобой спор переходит в русло 2-х подходов в написании программ - где делать проверки передаваемых параметров ... на вызывающей и ли вызываемой стороне ... Каждый подход имеет свои плюсы и минусы ...
#53 by skunk
Давай разберем твой пример. Добавление нового документа в уже существующую конфигурацию. КонецПроцедуры Тогда при создании нового документа мне для вызова обработки справочника номенклатуры надо добавить только строчку ОбработкаПодбора(«Справочник», «Форма», ТекущийДокумент); Твое решение (или около того) просто твой второй тоже не работает. :( Тогда при создании нового документа тебя для вызова обработки справочника номенклатуры надо добавить следующее А теперь прикинь, если тебе надо будет передать не один а четыре. А теперь добавь сюда еще мой надуманный пример, или хотя бы его часть, когда добавление документа будет делать программист не участвовавший в разработке продукта. С постскриптумом твоим я тоже согласен.  Наш спор перешел именно в это русло. Пусть человек сам решит, что ему лучше. Вдобавок еще вот это: "Вообще сертификационные задачи расчитаны на написание с нуля и копироваь ни чего не надо, а то в 4 часа можно не успеть скопировать всю ТиС :))"
#54 by 345
К сертификации наш спор - никоим боком... Если добавление будет делать программист сторонний - ему придется рыть 2 прогр модуля - док и форму подбора - не есть гуд. Что бы передать 4 склада - открытьформу я больше тяготею к универсальным процедурам, которые работают в любом случае (при правильной или неправильной подаче параметров).... Вся 1с - это решение частных задач в частных случаях ...
#55 by skunk
Все pit я устал. Сойдемся на товем ps каждый делает как хочет. Что ему лучше он решит сам для себя. А сейчас наш спор вылился в то какой конец у палки громче бъет по барабану.
#56 by 345
Каждая палка имеет 3 конца ...
#57 by skunk
pit все я ушел спать. заметь я не говрил сколько у палки концов. какой из концов этой палки твой решай сам.
#58 by Таня
А я сделала и оно больше не ругается :)))
#59 by skunk
а еще как ты будешь затыкать такие тычки сз.добавитьзначение(Склад.Наименование, "Склад");
#60 by skunk
По моему не что подобное, на других языках как раз и может привести к популяроной в некоторых кругах ошибки buffer overlow. Вообще все что эсиной делается очень большой изврат. И кстати передаче недокументированых параметров.
#61 by Романыч
Структура регистра не такая, все равно остаток упрет в отрицательное, если не разобралась могу подсказать
#62 by Романыч
Gray прав, но я бы сделал по другому
#63 by Таня
Романыч, почему структура регистра "не такая"? Объясни.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям