Готовимся к экзамену 1С: Специалист по платформе 8.х. Разбор часто встречающихся ошибок.

В этой публикации будут рассмотрены типичные ошибки, которые допускают сдающие экзамен 1С: Специалист по платформе. Благодаря приведенным мною кратким примерам, вы сможете по-новому взглянуть на эту проблему и более эффективно подготовиться к экзамену.

Я думаю многие из вас знакомы с файлом «ATT82PL» со страницы «Вопросы к аттестации» (можно скачать по ссылке http://www.1c.ru/rus/partners/training/questions.htm, либо из этой публикации). Но вот что интересно, даже те кто знает о существовании этого файла — не придают ему серьезного значения, а ведь именно он является «базой» для оценки ваших решений. Так давайте же повнимательнее взглянем на его содержание.

Перейдем сразу к п.3 Оценка результата выполнения задания. Как оценивается ваше задание? Максимальное количество баллов — 5, минимальное — 2.2, ниже 2.2 — это несдача. Экзаменатор будет вычитать из 5 (максимум) баллы за каждую допущенную ошибку. Допустим вы не успели решить задачу на Бизнес-процессы («Задача не реализована целиком» — минус 1.5 балла) и без нужды выгрузили результат запроса в таблицу значений («Выгрузка результата запроса в промежуточную таблицу (например, в таблицу значений) без необходимости» — минус 1 балл). Итого получается: 5 — 1.5 — 1 = 2.5,  оценка «удовлетворительно» — экзамен сдан.

Список ошибок состоит 6 таблиц: общие ошибки, ошибки в Оперативном учете, ошибки в Бухгалтерском учете, ошибки в Сложных периодических расчетах, ошибки в Бизнес-процессах и управляемых формах. Рассмотрим по-порядку каждую таблицу. В скобках будет указано количество снимаемых баллов.

Общие для всех задач

Неоптимальность предлагаемого решения  или невыполнение отдельных пунктов задания. Упрощение решаемой задачи. При затруднении в отношении определения упрощения или усложнения задачи рекомендуется уточнить требования у экзаменатора (0.5-3.0)

Очень важный пункт, за упрощение задачи экзаменатор имеет право сразу снять минус 3 балла, а это значит что экзамен уже не сдан (хотя на практике это редко происходит). Рекомендации: при очном сдаче – не стесняйтесь спросить у экзаменатора требования к задаче, при дистанционной сдаче – обязательно сделайте пояснительную записку, либо добавьте в код комментарии, для чего вы это делаете и что хотите получить. Много времени у вас нет, поэтому пишите кратко и по существу.

Не реализован приведенный в задании отчет (1.0)

Тут всё понятно, отчеты должны быть.

Форма приведенного в задании отчета не соответствует заданию (0.5-1.0)

Здесь имеется ввиду не форма как таковая, а то что отчет должен выводить нужные данные. А вот «красивости» отчета (колонки, заголовки, группировки) делайте когда есть время.

Механизм получения данных не соответствует заданию. Например, в задании может быть прямо указан механизм построения отчета с помощью компоновки данных, использования временных таблиц в обработке проведения документа и т.п. (1.0)

Все отчеты делайте с помощью СКД. Во всех обработках проведения используйте конструктор запроса. Единственное исключение — документ типа Приходная накладная, когда можно сделать движения обычным конструктором (это разрешается).

Получение расчетных данных не из регистра. Единственной достоверной информацией в системе учета следует считать информацию регистров. Информация из документов может рассматриваться лишь как вспомогательная и не может быть абсолютно достоверной. Например, при наличии документа (аналога ручной операции в бухгалтерском учете), позволяющего интерактивно вводить записи в регистр (3.0)

Если вы решаете задачу по оперативному учету – получайте данные из регистров накопления, по бухгалтерскому – из регистра бухгалтерии и т.д. Ни в коем случае не берите данные из документов! В реальной жизни это разрешается, а иногда даже и необходимо, на экзамене – храните информацию в регистрах и получайте её оттуда же. Например: документов может быть сегодня 3, а завтра – 30. А регистр по которому они делают движения – 1, таким образом, извлекая данные из регистра, уже не важно сколько в системе заведено документов, информация из регистра всегда будет актуальной.

Построенная в решении учетная схема принципиально не позволяет одновременно вывести в ноль все ресурсы регистра накапливающего информацию об остатках (0.5-2.0)

Ресурсы регистра (один или все) изменяются документами только «в одну сторону» (только в «+» или только в «-«) (2.0)

Ресурсы регистра остатков (один или все) изменяются документами и в «+», и в «-«, но движения с противоположным знаком для одного того же объекта учета выполняются с разными наборами значений измерений, что также не обеспечивает выведения остатков ресурсов «в ноль» (2.0)

Очень важные пункты. Подробнее об этом лучше узнать на курсах, приведу лишь несколько примеров:

1. Набор измерений расхода не соответствует набору измерений прихода. Например:

— приход — Товар1-Склад1-кол-во 5, сумма -10,

— расход — Товар1- кол-во 5, сумма -10, (не указан Склад1 при движении расход, а значит это совершенно «другая» запись, в регистре сейчас будет 2 записи, а должно быть 0).          

2. Проблема списания копеек. Например:

приход — Товар1-Склад1-кол-во 5 – сумма -10,93

расход — Товар1- Склад1-кол-во 5 — сумма -10,92

Расход должен был вывести регистр в ноль, но этого не произошло, количество списали полностью, а сумму – нет. Формулу для списания копеек (если вы не знаете как это делается) можно найти практически в любой задаче по оперативному учету из тех что выкладывались здесь.

3. Еще один классический пример на котором попадаются новички в задачах где есть товары и услуги: в приходе нет проверки на запись услуг в регистр остатков, таким образом услуги начнут копиться в регистре. А это тоже не выведение регистра в ноль.

Всё перечисленное относится только к регистрам остатков, для регистров оборотов это не требуется.

Отсутствие в решении проверок на правильное заполнение ресурсов регистра, приводящее, например, к появлению отрицательных остатков товаров на складе. Наличие отрицательных значений ресурсов регистра допустимо, только если об этом явно сказано в задании или следует из логики учетной схемы, не противоречащей ситуации, возникающей в реальной практике ведения учета (1.0-2.0)

Есть задачи в которых предусматривается запись отрицательных значений, например 1.6 (из сборника задач), во всех остальных задачах нужно делать проверку остатков, которая в свою очередь не допустит появления отрицательных значений ресурсов в регистре.

Наличие ошибок в программном коде (0.25-3.0)

Обычно такие ошибки возникают при копипасте (скопировать-вставить), при проверке кода ошибок не возникает, а вот решение правильно не работает. В этом случае на отладку можно потратить очень много времени. Либо другой пример: вы скопировали код управляемой блокировки из одного документа в другой, но не проверили на что устанавливаете блокировку, в итоге получается что блокировка есть, но она не работает. Проверяйте каждую строку кода.

В задачах получения итоговой информации по остаткам использование информации по оборотам или наоборот (2.0)

Тут просто, если нужно получить на дату (момент) – это остатки, если за период – это обороты. Но иногда возникает затруднение, и для этих случаев есть общее правило: если вы не можете получить данные из оборотов – получайте из остатков, и наоборот.

В задачах получения итоговой информации использование прямого обращения к реальным таблицам регистра (1.5)

Берите информацию только из виртуальных таблиц, они специально были созданы для этого.

Если при проведении документа используются каким-то образом данные, считываемые из регистров, обязательно требуется предусмотреть получение таких данных на момент проведения документа (1.0)

Не используйте получение данных на Дату, только на МоментВремени(). Если нужно получить остатки с учетом движений документа, тогда используйте Границу: Новый Граница(МоментВремени()).

Конфигурация должна устойчиво работать при наличии дублей строк (номенклатуры или сотрудников или т.п.) в документах. Необходимо обеспечить корректное проведение документов при этом (0.5)

Типичный пример дубли строк в расходной накладной, если предварительно не сгруппировать строки – списание будет производиться неправильно.

Получение информации, хранящейся в информационной базе, (остатков, оборотов, данных базы, данных графика и т.п.) в цикле (2.0)

Здесь речь про запрос  в цикле. Единственное место где он «разрешается» это расчет по приоритетам в задачах по сложным периодическим расчетам. Но, это достаточно специфическое место, и только условно можно сказать что там запрос в цикле.

Отсутствие значений параметров в виртуальной таблице или использование вместо них условия «ГДЕ» (2.0)

Если не задать параметры (отборы) на виртуальную таблицу – система возьмет всю таблицу целиком и начнет с ней работать, а таблица может быть очень большая. Тоже самое произойдет если использовать условие «ГДЕ» — сначала возьмется таблица целиком, и только потом к ней применится условие. То есть, и то и другое – совершенно не оптимально.

Отсутствие проверки на NULL (1.0)

Применяется при соединениях таблиц в запросах.

Использование менее эффективной методики проведения документов (1.0)

Речь о «старой» методике проведения. В случае если есть возможность использовать «новую» методику проведения – используйте её, есть нет возможности – используйте «старую». Например, при расчетах себестоимости всегда используется «старая» методика. Более подробно можно узнать на курсах, либо из книг.

Использование автоматических блокировок в транзакции или неправильное использование управляемых блокировок данных в транзакции при проведения документов (1.5)

На экзамене требуется показать умение работы с управляемыми блокировками, поэтому используйте их, и не забудьте поменять Режим управления блокировкой данных в свойстве конфигурации на Управляемый (в каркасной конфигурации стоит – Автоматический).

 

Оперативный учет

Задача не реализована целиком (3.0)

Автоматическая несдача экзамена.

Построение учетной схемы не на регистрах накопления (3.0)

Еще раз повторю, задачи по оперативному учету решаются на регистрах накопления, бухгалтерского – на регистре бухгалтерии, сложные периодические расчеты – на регистрах расчета (в некоторых задачах еще и на регистрах накопления – обороты).

В случае добавления новых регистров или реализации новых задач на существующих регистрах неверное определение вида регистра накопления (остатки, когда нужны обороты или наоборот) (3.0)

Изначально в каркасную конфигурации (используемую на экзамене) добавлен один регистр накопления – ОстаткиНоменклатуры (остатки). Если вы будете добавлять новый регистр, подумайте какую информацию он у вас будет хранить. Если то что не будет списываться (например продажи, их нужно просто накапливать), значит делайте вид регистра – обороты, если информация будет списываться (например заказы которые вы будете отслеживать, а потом погашать) – значит вид регистра будет остатки.

Использование итоговой информации регистров, полученной в форме документа,  при его проведении (2.0)

В задаче может быть условие — вывести остатки номенклатуры в форму документа. Вы обращаетесь к регистру, извлекаете эти данные и показываете на форме. Если при проведении вы используете данные с формы – это будет грубейшей ошибкой, при проведении данные всегда должны браться непосредственно из регистра на МоментВремени(). Это гарантирует правильность полученных остатков (или оборотов).

 

Бухгалтерский учет

Задача не реализована целиком (3.0)

Несдача экзамена.

Построение учетной схемы не на регистрах бухгалтерии (3.0)

См.выше.

Используемая в решении учетная схема построена неправильно (0.5-2.0)

Все нужные проводки будут описаны в задании, тут будет сложно ошибиться. А вот с настройкой субконто, признаков учета счета, признаков учета субконто и т.д. – нужно быть повнимательнее.

Неверное использование принципа «двойной записи». Отсутствие двойной записи, когда она необходима или наличие в том случае, когда она не нужна. (2.0)

На экзамене всегда будет «двойная запись». Не забудьте поставить флажок «Корреспонденция» в настройках регистра бухгалтерии.

Создана лишняя аналитика (например, измерение регистра) (0.5)

О различиях между измерениями и субконто, назначение тех и других и прочее,  рекомендую почитать в книге «Реализация прикладных задач в системе 1С Предприятие 8.2».  По своему опыту скажу, что ни разу не использовал измерения в задачах.

У измерений и ресурсов регистра бухгалтерии неправильно расставлены флаги «балансовый» и настроены «признаки учета» (1.5)

Не реализована или реализована неправильно настройка «признаков учета субконто» (1.0)

На экзамене обязательно будут смотреть как настроены у вас ресурсы (если добавите измерения,  то и на них посмотрят).  Рассмотрим один пример: если вы добавите ресурс Количество и установите флаг Балансовый, учет количества будет вестись на всех счетах. А зачем вам это нужно, если количество требуется только на счете Товары например?! А потом количество у вас начнет накапливаться на тех счетах с которых оно не будет списываться, что приведёт к незакрытию счетов. Тоже самое касается и признаков учета.  Более подробно об устройстве регистра бухгалтерии читайте в книге «Реализация прикладных задач в системе 1С Предприятие 8.2».  

Хранение остатков в том случае, когда необходима информация только об оборотах. При построении учетной схемы использованы обычные (не оборотные) субконто или измерения регистра для хранения данных и контроля, оборотных по своей сути показателей (не требующих хранения остатков) (1.5)

Серьезная ошибка. Добавляя субконто определите требуется ли накапливать остатки в разрезе этого субконто. Если нужны только обороты – ставьте флажок «Только обороты» для вида субконто.

При получении итоговых данных из регистра бухгалтерии не учитывается корреспонденция счетов (1.5)

Один из примеров: при получении оборотов между счетами обязательно указывайте оба счета. И постарайтесь при получении данных  не привязываться к типу документа, помните что экзаменатор может ввести ручную операцию и ваша схема перестанет работать.

 

Сложные периодические расчеты

Задача не реализована целиком (3.0)

Несдача экзамена.

Построение учетной схемы не на регистрах расчетов (3.0)

См.выше.

Неправильно настроены зависимости по вытеснению и по базе между видами расчета, использующимися в решении (1.0)

Более подробно вы познакомитесь с этим при решении расчетных задач.

Использование регистра расчета, обладающего «Периодом действия» для реализации учета по видам расчета, не обладающих «Периодом действия» (1.5)

Например, премия за период не обладающая периодом действия будет записываться регистр расчета Основные начисления (его как правило делают с периодом действия). Подобное использование видов расчета приводит к неоправданному увеличению объема базы, так как в таблице фактического периода действия (таблица для регистров расчета с периодом действия) будут создаваться дополнительные записи для этих премий. Более подробно можно узнать на курсах 1С.

Нет связи с графиком в регистре расчета или такая связь задана неверно. Например, в измерении вместо реквизита или наоборот. (1.0)

Тут довольно просто, какие измерения в регистре сведений Графики работы – такая и будет связь. Например, графики по сотрудникам – связь с измерением Сотрудник регистра расчета; графики по подразделениям – связь с измерением Подразделение РР; если графики обычные (пятидневка, шестидневка, два через два и т.д.) – связь через реквизит РР. Если графики например по подразделениям, и еще есть пятидневка для больничного – можно сделать связь с измерением Подразделение и добавить еще один ресурс в регистр сведений Графики работы; если графики по подразделениям, и еще несколько (или неизвестно сколько) других графиков (пятидневка, два через два и т.д.) – связь через реквизит РР составного типа.

Получение данных графика через таблицу регистра сведений (2.0)

Данные графика нельзя напрямую извлекать из регистра сведений, используйте виртуальную таблицу ДанныеГрафика.

В задачах получения расчетной базы неверно использована аналитика. Не используются или используются неправильно измерения регистра (1.0)

В задаче получения расчетной базы не оптимизирована скорость отбора по измерениям регистра расчета (0.5)

Правильно задавайте параметры виртуальных таблиц. Хотя обычно измерения основного и других регистров расчета полностью совпадают и с параметрами сложностей не возникает.

Получение расчетной базы через основную таблицу регистра расчета (2.0)

Для получения базы существуют специальные виртуальные таблицы, используйте их.

Неправильно настроена зависимость по ведущим видам расчета (1.0)

Ведущие – это те виды расчетов, изменение которых должно привести к перерасчету других видов расчета. Например, если есть премия от оклада, то оклад будет ведущим по отношению к премии.

Создание перерасчета в регистре, где не могут появиться данные перерасчета (1.0)

Какие нужно пересчитать виды расчета, там и нужно создавать перерасчет. Например, при изменении оклада нужно пересчитать премию, она хранится в ПВР Дополнительные начисления, этот ПВР связан с регистром Дополнительные начисления. Вот в этом регистре и нужно будет создать перерасчет.

При решении задачи перерасчетов неправильно настроены объекты перерасчета (например, измерения перерасчетов) (1.5)

Как правило там всё просто. Документ и вид расчета (которые нужно пересчитать) автоматически попадут в перерасчет, вам остается добавить измерения регистров расчета — Сотрудник (и Подразделение если есть) и данные ведущих регистров.

Получение данных для проведения расчетов на основании незаписанных или не рассчитанных данных (1.0)

Все расчеты должны проводиться на основании данных полученных из регистров расчета.

Подключение без необходимости механизма автоматической перезаписи таблицы фактического периода действия в момент занесения данных по расчетам в информационную базу (0.5)

Движения записываются в два этапа, сначала просто Записать(), потом Записать(,Истина). Если вы не подставите Истина во втором параметре (ТолькоЗапись) – включится механизм перезаписи таблицы.

В решении отсутствует механизм сторнирования записей регистра расчета при вводе вытесняющего вида расчета в текущем расчетном периоде за прошлый период при условии, что такая ситуация явно описана в задании (1.0)

Если в задаче указано что записи могут вводиться задним числом, это значит нужно предусмотреть сторно-записи.

Реализация сторнирования записей регистра расчета без использования специализированных и оптимизированных механизмов платформы (1.5)

Здесь речь идет о таблице дополнений. Сторно-записи нужно формировать на основе данных этой таблицы.

Решение задач накопления на регистре расчета (2.0)

В задачах типа 3.7  где делается надбавка в зависимости от суммы продаж подразделения, не нужно хранить сумму продажи в регистре расчета или регистре сведений. Используйте оборотный регистр накопления.

 

Бизнес-процессы

Задача не реализована целиком (1.5)

Это очень сложно сделать, как правило бизнес-процессы делаются первыми, за 20 минут.

В форме бизнес-процесса не отражается его текущее состояние (1.0)

В форме бизнес-процесса должна быть карта обновляемая при открытии и при нажатии на кнопку «Обновить карту БП» (название кнопки любое). Соответственно должно быть реализовано «перемещение» по карте БП.

Не реализована или работает неправильно форма списка невыполненных задач текущего пользователя системы (1.0)

Делается через отбор по исполнителю в Форме списка (неосновной). Пример можно найти в решенных задачах.

Задана персональная адресация задач без необходимости (1.0)

Персональная адресация – это адресация по фамилии. Если указано что Сидоров должен оприходовать товар (задача 4.7 из сборника), значит это персональная для Сидорова (и только него) задача.

Задана ролевая адресация задач без необходимости (1.0)

Ролевая адресация – это адресация по ролям. Ролями будут: кассир, бухгалтер, отдел закупок.

Созданы избыточные признаки адресации, как у задач, так и у регистра адресации (0.5)

Как правило всегда используется три: Исполнитель, Должность и Подразделение. В некоторых задачах можно два: Исполнитель и Должность (или Исполнитель и Подразделение).

Неверно заполнен регистр адресации (1.0)

Самая распространенная ошибка, и самая сложная часть бизнес-процессов. Если указана фамилия – заполняете в РС только сотрудника, если должность – сотрудника и должность, если должность и подразделение – сотрудника, должность и подразделение. Не смотрите на то что нарисовано в примере для задачи, это просто список сотрудников и их ролей.

Отсутствует возможность отображения полного списка задач (0.5)

Не делайте для полного списка никаких форм, он будет формироваться автоматически.

 

Управляемые формы

Задача не реализована целиком (1.5)

С управляемыми формами обычно всё просто, но иногда нужно кодить. Рекомендую взять на экзамен книгу Радченко «Практическое пособие разработчика», многие примеры есть в этой книге.

 

От автора

1. Внимательно прочитайте задание. Полностью. Обратите внимание на отчеты, они помогут вам правильно спроектировать хранение данных.

2. Реализацию (написание кода) лучше начать с «чего по-проще», например с бизнес-процессов, потом сложные периодические расчеты (возможно в них будет связь с оперучетом в виде суммы продаж подразделения), потом все остальное (оперучет, бухучет).

3. Постоянно сохраняйтесь (почаще), это позволит вам не потерять «всё что нажито непосильным трудом».

4. Если что-то не получается, не тратьте на это много времени, лучше бросьте и займитесь чем-то другим, позже вернетесь к этому месту и доделаете. Тоже самое касается тестовых данных, можно вводить их по ходу, после каждой задачи, но старайтесь отладку произвести в конце. «Красивости» тоже оставьте напоследок, в первую очередь делайте модули проведения и отчеты.

5. Очищайте движения в обработке проведения документа (при использовании «старой» методики). Вот таким образом:

Движения.Остатки.БлокироватьДляИзменения = Истина;

Движения.Остатки.Записать();

6. Почитайте про флажок «Разрешить разделение итогов» в регистрах накопления и бухгалтерии.

7. Обязательно создайте подсистемы и подчиненные подсистемы (хотя бы для одной подсистемы).

 

Удачи, она вам пригодится!

 

Рекомендуемая литература:

Радченко М. «Практическое пособие разработчика»

Хрусталева Е.Ю., Кухлевский Д.С., Козырев Д.В., Габец А.П. «Реализация прикладных задач в системе 1С Предприятие 8.2».

 

Бизнес-процессы для экзамена 1С: Специалист.

СПР для экзамена 1С: Специалист.

 

30 Comments

  1. EarlyBird

    Спасибо, полезная информация.

    Reply
  2. evgefremov

    Повторение — мать учения. Все описано достаточно подробно. Новичкам стоит распечатать или сохранить как памятку, а затем внимательно разобрать каждый пункт с примерами. Это существенно повысит шансы на успешную сдачу!

    Reply
  3. dandrontiy

    Огромное спасибо за проделанный труд.

    Reply
  4. OleGazz

    помнется когда ходил в студенческие годы на курсы профессионала по платформе 8.2, тогда ещё наш сан сей сказал что мол на специалиста можно будет попробовать минимум после 3х лет хорошей практики в 1с, ну вот закончил универ работаю во франче, ещё 2 года поработать и действительно можно будет попробовать себя в специалисте, причём в нашем городе его сдать нельзя, надо ещё и в Москву или Питер ехать….

    Reply
  5. fnv

    (4) OleGazz, а дистанционно у вас не сдают разве?

    Reply
  6. OleGazz

    (5) fnv, удалённо мы сдаём только на профессионала, не знаю почему так…

    Reply
  7. AlexO

    Статья неплохая, но в целом как раз в ней описано «желаемое» (с точки зрения сдающего) положение дел при сдаче (что должны оценивать, как должны оценивать, на что делать упор, а что не так критично), а не реальная сдача конкретному преподавателю.

    Например, сразу:

    Конфигурация должна устойчиво работать при наличии дублей строк

    — как раз если вы сделаете упор на разработку механизма отлова дублей (и прочих ошибок как нерадивых пользователей, так и корявости ведения БД 1с-иной) — даже если получится, это не будет оценено должным образом (к обработке ошибок вообще в 1с странное отношение, и преподаватели от 1с — не исключение), но время потереяете много, да и может вообще не получится сразу работающий код (особенно в запросах).

    Декларирование работ и сами работы — в 1с всегда как-то шли разными путями.

    Лучше бы привели полностью сами курсы по подготовке :))

    Плюс поставлю (смысл все-таки есть в статье, не считая проделанной работы), но полезность при подготовке к сдаче Специалиста оцениваю как 30%.

    И то из этого 60% за кратенький абзац «От автора» :))

    Reply
  8. GreenFox

    (4) Практика разная бывает. Если завалят текучкой то некогда даже что-то новое учить. С платформой 8 работаю лет 5, а к СКД только сейчас дошел — все время некогда, лень, не надо, проще по старинке и др. отмазки, но сейчас когда стал вопрос о сдаче экзамена на Спеца взял и освоил (не скажу что идеально) и прозрел — прекрасный инструмент и не только для отчетов.

    Так что надо не только на практику налегать но и самому эту практику себе делать — выучил что-то полезное — применяй, а то забудешь и только время зря потратишь на учебу.

    Reply
  9. AlexO

    (8) GreenFox,

    прекрасный инструмент и не только для отчетов

    А что вы еще на СКД такого делаете?

    Мнеп вот даже для отчетов не хватает — частенько универсальный отчет гибче будет ))

    Reply
  10. mrdug

    (7) AlexO, спасибо 🙂

    Reply
  11. DMSDeveloper

    (9) Многие варианты использования СКД описаны в книге «Разработка сложных отчетов в 1С:Предприятии 8. Система компоновки данных». Автор: Хрусталева Елена Юрьевна.

    Книга ориентирована, в основном, на отчеты но способы и места применения СКД дают пищу или простор для вашей фантации.

    Как не большой пример — все динамические списки (документов, справочников и т.д.)в управляемых формах основаны на СКД 🙂

    Reply
  12. mr.Kot
    2. Проблема списания копеек. Например:

    приход — Товар1-Склад1-кол-во 5 – сумма -10,93

    расход — Товар1- Склад1-кол-во 5 — сумма -10,92

    Расход должен был вывести регистр в ноль, но этого не произошло, количество списали полностью, а сумму – нет. Формулу для списания копеек (если вы не знаете как это делается) можно найти практически в любой задаче по оперативному учету из тех что выкладывались здесь.

    А можно чуть по подробнее про формулу списания копее? Просто округлять их нужно?

    Reply
  13. papami

    (12) mr.Kot,

    Допустим, нужно при продаже списать себестоимость товара. Есть логичная формула:

    СуммаСписания=СуммаТовараОстаток/КоличествоТовараОстаток*КоличествоСписания;

    И бывают ситуации, когда КоличествоТовараОстаток=КоличествоСписания, но при расчете по формуле выходит что

    СуммаСписания расходится с СуммаТовараОстаток. Поэтому решение «проблемы» копеек сводится к проверке равенства количества перед расчетом:

    СуммаСписания=?(КоличествоТовараОстаток=КоличествоСписания,СуммаТовараОстаток,СуммаТовараОстаток/КоличествоТовараОстаток*КоличествоСписания)

    Reply
  14. GPL

    большое спасибо

    Reply
  15. v.l.

    (1) это же написано на дисках ИТС и на сайте 1С.

    Reply
  16. maxchaos

    (13) papami,

    Допустим, нужно при продаже списать себестоимость товара. Есть логичная формула:

    СуммаСписания=СуммаТовараОстаток/КоличествоТовараОстаток*КоличествоСписания;

    Ну, тогда уже так:

    СуммаСписания=КоличествоСписания*СуммаТовараОстаток/КоличествоТовараОстаток;

    Ведь 10/3*3 <> 3*10/3!

    Reply
  17. 1985Alex1985

    Спасибо. Очень хорошо написано.

    Reply
  18. Elvisnya

    Спасибо за статью!

    Объясните, кто-нибудь, пожалуйста, зачем блокировать записи регистра при очистке?

    5. Очищайте движения в обработке проведения документа (при использовании «старой» методики). Вот таким образом:

    Движения.Остатки.БлокироватьДляИзменения = Истина;

    Движения.Остатки.Записать();
    Reply
  19. Fox_sx

    о спасибо… очень помогло.

    Reply
  20. a1089

    5. Очищайте движения в обработке проведения документа (при использовании «старой» методики). Вот таким образом:

    Движения.Остатки.БлокироватьДляИзменения = Истина;

    Движения.Остатки.Записать();

    Доброго времени суток!

    Я специально решил проверить в клиент серверном варианте, будет ли налагаться блокировка на чтение регистра в этом случае. Для этого создал два документа, оба документа списывают один и тот же товар. Первый документ провожу, делаю паузу после чтения регистра, затем запускаю на проведение второй документ, документ проводится успешно и списывает остатки, хотя этого не должно быть, ведь товар должен быть заблокирован первым документом. Затем возвращаюсь к первому документу и завершаю проведение. В итоге оба документа проведены, и остаток ушел в минуса.

    Если использовать вместо вышеприведенного кода объект «БлокировкаДанных», тогда результат такой: второй документ «зависает» в ожидании снятия блокировки с регистра, и если первый документ проведется до наступления таймаута ожидания блокировки, тогда после этого начинается попытка проведения второго документа. А если истекает таймаут, тогда второй документ выдает сообщение о конфликте блокировок. Этот вариант оказался правильным.

    Между прочим, Гилев в своих разборах почему то тоже рекомендует вышеприведенный код для «старой» методики, хотя по моему мнению он годится только для «новой» методике.

    Надеюсь, мое замечание будет полезно.

    Если в чем то ошибаюсь, просьба прокомментировать)

    Reply
  21. hame1e00n

    «Решение задач накопления на регистре расчета (2.0)

    В задачах типа 3.7 где делается надбавка в зависимости от суммы продаж подразделения, не нужно хранить сумму продажи в регистре расчета или регистре сведений. Используйте оборотный регистр накопления.»

    Там же условие есть, что нужно в отчете по перерасчетам отображать данные при исправлении суммы продаж подразделения… Можно ли это сделать, если для отражения продаж использовать регистр накопления???

    Reply
  22. mrdug

    (21) hame1e00n, насколько я помню можно… если память не изменяет, то «ловится» момент записи в регистр продаж, он и является признаком того что надо сделать перерасчет…. Но могу ошибаться, давно не занимался этим 🙁

    Reply
  23. mishkaaa
    Очищайте движения в обработке проведения документа (при использовании «старой» методики). Вот таким образом:

    Движения.Остатки.БлокироватьДляИзменения = Истина;
    Движения.Остатки.Записать();

    БлокироватьДляИзменеия лишнее. Если на форме документа у движения флаг Использовать всегда = Истина, то мы еще раз перезапишем текущие движения. В противном случае движения будут пустые и БлокироватьДляИзменения так же будет лишним.

    Reply
  24. Isperator

    Спасибо за статью.

    Reply
  25. Sibiryak
    Если указана фамилия – заполняете в РС только сотрудника

    Если в задаче на картинке указана только фамилия, можно в регистр адресации этого сотрудника вообще не добавлять. Для отбора задач по исполнителю достаточно заполнить сво-ва «Основной реквизит адресации» и «Текущий исполнитель» в объекте «Задача».

    Reply
  26. Sibiryak

    (20) a1089,

    Из синтакс-помощника:

    БлокироватьДляИзменения (LockForUpdate)

    Устанавливает режим, при котором в процессе записи набора будет установлена управляемая блокировка для всех комбинаций измерений в соответствии с записями набора записей.

    В данном случае у нас пустой набор записей, может поэтому не происходит блокировки. Я не понимаю зачем при очистке движений документа надо устанавливать блокировку.

    Reply
  27. zorky80

    (26) Sibiryak,

    для случая, если транзация будет отменена — а нужно на место вернуть старые движения, которые мы очистили. И чтобы их не списали в момент нашего проведения другие транзакции, их нужно заблокировать(по конкретным измерениям). После этого, если необходимо можно использовать «Блокировка Данных».

    Reply
  28. user619293_gabaritufa

    Привет всем. Интересует такой вопрос, как правильно установить отбор по графику при получении фактического периода действия. Когда в РС Графики работы записано много типов графиков.? Через параметры виртуальной таблицы?

    Reply
  29. user913680

    Добрый день! Если возможно — откуда информация (источник), что при «старой» методике необходимо добавлять такую блокировку: «Движения.Остатки.БлокироватьДляИзменения = Истина;» ? (такую информацию нигде не встречал).

    Reply
  30. a1089

    (29)вот отсюда:

    https://infostart.ru/public/126813/

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *