Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Если ОстКол<Количество Тогда
Сообщить("В строке №"+НомерСтроки+ " не хватило товара "+Товар+ ". Реально есть "+ОстКол+" !"); СтатусВозврата(0); Продолжить; КонецЕсли;
ОстСумУЕ=Рег. Остаток (-Товар, Склад, "СтоимостьУЕ") ; ОстСумРуб=Рег. Остаток{Товар, Склад,"СтоимостьРуб"); //определим суммы списания с учетом "проблемы копеек" СуммаСписУЕ=?(ОстКол=Количество, ОстСумУЕ,
Окр{ОстСумУЕ*Количество/ОстКол,2)); СуммаСписРуб==? (ОстКол=Количество, ОстСумРуб,
Окр(ОстСумРуб*Количество/ОстКол,2));
53 |
Глава 3. Особенности проведения документов
3.3.1. Особые случаи, связанные с проведением документов
Еще раз напомним, что важной особенностью компоненты «Оперативный учет» является понятие Точки Актуальности итогов (ТА). Согласно документации - это момент времени1, на который все необоротные регистры содержат текущие значения своих ресурсов. Другими словами, если просто запросить у регистра остатков значение какого-либо ресурса, то он выдаст его именно на момент ТА. В общем случае, в качестве ТА берется дата и время самого «старшего» проведенного документа.
Режим «Управление оперативными итогами...» позволяет «вручную» сдвигать ТА во времени как вперед, так и назад, при этом производится пересчет итогов. Проведенные документы, оказавшиеся после ТА, при пересчете итогов не учитываются.
При установке ТА в режиме «Управление оперативными итогами...» итоги пересчитываются на 00 часов 00 минут 00 секунд даты, выбранной в качестве даты актуальности итогов. Например, если вы хотите, чтобы при подсчете итогов были учтены все проведенные документы по 20 февраля 2000 года включительно, то в качестве ТА следует выбрать 21 февраля 2000 года.
В документации рассматривается несколько ситуаций, связанных с ТА, которые могут возникнуть при проведении документов. 1. Если не проведенный документ имеет более поздние дату и время, чем ТА, то
при проведении документа может возникнуть два случая:
• если между документом и ТА нет других проведенных документов (см. рис 3.2), то при проведении документа ТА автоматически сдвигается вперед и
|
Регистр. Регистр. Регистр. Регистр. Регистр. Регистр. Иначе Сообщить КонецЕсли; КонецЕсли; КонецЦикла; |
ОстаткиТоваров ОстаткиТоваров ОстаткиТоваров ОстаткиТоваров ОстаткиТоваров ОстаткиТоваров |
.Товар=Товар;
. Склад=Склад;
. Количество=Количество;
. СтоимостьУЕ=СуммаСписУЕ;
. СтоимостьРуб=СуммаСписРуб
.ДвижениеРасходВыполнить() ,
"На "+ДатаДок+", в строке №'ЧНомерСтроки+ совсем нет товара "+Товар+" !");
//движение регистра Взаиморасчеты
Регистр. Взаиморасчеты. ДвижениеПриход(Покупатель,
Итог("СуммаУЕ"),Итог("СуммаРуб"));
становится равной дате и времени проведенного документа; если между документом и ТА существуют проведенные документы (см. рис. 3.3), то такой документ не проводится, при этом выдается сообщение о существовании более ранних проведенных документов.
После того, как нами сформированы Модули всех трех документов, рассмотрим более подробно некоторые вопросы, связанные с особенностями проведения этих документов.
Методические материалы обучения партнеров
Дата + время.
апрель 2004 г.
|
|
|
2.
Дата, Время Ненроюднгся
Рис.3.3. Между ТА и документом есть проведенные документы
Если проводится не проведенный документ с датой и временем меньшим, чем ТА, то выдается запрос о проведении документа «задним числом». Необходимость этого связана с тем, что алгоритм формирования движения регистров может использовать итоговые данные регистров для вычисления каких-либо величин. В описанной ситуации итоги на дату и время проводимого документа будут не актуальны. Если при разработке модуля движения регистров подобная ситуация не учитывалась, то это может привести к ошибкам в вычислениях. Например, товар оприходован по двум приходным накладным с различными приходными ценами. Тогда при проведении расходной накладной с датой и временем, находящимся между датой и временем этих накладных, цена списания «по среднему» в приведенном модуле документа будет определена неправильно. Однако в режиме «Управление оперативными итогами...» можно пересчитать документы (выполнить групповое перепроведение) и исключить ошибки подобного рода.
«j Дата, Время
•
Рис.3.4. Дата и время нового документа меньше чем ТА
Если дата не проведенного документа равна дате ТА, но между ТА существуют проведенные документы (см. рис.3.4), то nf мента будет выдан диалог изображенный на рис. 3.5:
Если в этом диалоге выбрать опцию «Провести документ задним то документ будет проведен со своим временем. В этом случае, как уже упоминалось выше, возможно возникновение ошибок, если алгоритм, формирующий движение регистров, не учитывает возможной неактуальности итогов на момент расчета.
Методические материалы
Глава 3. Особенности проведения документов |
55
|
Рис.3.5. Диалог «Проведение документа» |
Чтобы избежать этого, следует выбрать опцию «Изменить время документа» (см. рис. 3.5). Тогда время документа будет изменено на время большее времени самого последнего документа, и уже с этим временем документ будет проведен. Очевидно, что в такой ситуации состояние итоговой информации регистров будет актуальным на момент проведения документа (см. рис. 3.6).
Рис.3.6. Режим «Изменить время документа» позволяет записать документ после ТА
Ситуации, когда между временем записи документа и ТА существуют проведенные документы, наиболее часто могут возникать в процессе интенсивного ввода документов с многих рабочих мест при работе системы «1С:Предприятие» в сети. После записи документа при ожидании от пользователя ответа на запрос «Провести документ?» другие пользователи могут успеть провести свои документы: система «1С:Предприятие» проводит документы в порядке «живой очереди». Поэтому приведенный выше запрос может появляться на экране достаточно часто. Выдачу этого запроса можно отключить в настройке параметров (пункт «Параметры» меню «Сервис» главного меню программы), тогда новый документ всегда будет проводиться после последнего проведенного документа с соответствующим изменением времени документа. Когда ТА «вручную» сдвигается назад во времени, то проведенные документы с более поздними датой и временем, чем установленное дата и время ТА, исключаются при подсчете итогов и, фактически, могут считаться не проведенными. Если такой документ (т. е. проведенный документ, который лежит после ТА на оси времени) проводится повторно, то возможны следующие ситуации:
• если между документом и ТА нет других проведенных документов, то
ч^---~- ТА автоматически сдвигается и становится равной дате и времени до
кумента;
• если между документом и ТА находятся другие проведенные докумен
ты, то такой документ не проводится, при этом выдается сообщение о
том, что существуют более ранние проведенные документы.
апрель 2004 г.
56 |
1C предприятие 7.7. Компонента Оперативный учет
5. Если дата и время проведенного документа меньше, чем ТА, такой документ можно провести повторно. Однако надо иметь в виду возможные ошибки, если алгоритм формирования движения регистров использует итоговые данные из регистров для вычисления каких-либо величин.
Упражнение №3.5
Рассмотрите вышеперечисленные особые случаи проведения документов, создав для этого в режиме работы «1C:Предприятия» необходимое количество документов различного вида.
Подведем некоторые итоги. Итак, все документы в системе «1С:Предприятие» образуют единую хронологическую последовательность. Для этого каждый документ имеет дату и время. Даже если два документа имеют одинаковую дату и одинаковое время, они все равно располагаются в определенной последовательности, определяемой порядком их ввода в систему. Поскольку, дата и время документа могут быть изменены, то независимо от порядка ввода документов, они могут быть расположены в последовательности, реально отражающей происходившие в хозяйственной жизни предприятия события.
Алгоритм проведения документа, как правило, отражает в учете данные, записанные в самом документе (в его реквизитах). Однако в некоторых случаях алгоритм проведения документа анализирует также и текущие итоги, используя их при проведении. Например, если документ списывает товары или материалы по средней себестоимости, то для определения суммы списания алгоритм проведения будет анализировать остатки товаров (материалов) на момент документа. Очевидно, что документы, основывающиеся при проведении на данных итогов, должны проводиться строго последовательно. Однако на практике, из-за ошибок при вводе информации и несвоевременного поступления документов, часто приходится вводить или исправлять документы «задним числом». Разумеется, в этом случае, движения регистров, сформированные всеми последующими документами (расположенными после того, который был исправлен), становятся некорректными. Например, если выяснилось, что в одной из приходных накладных, введенных в начале месяца, было неверно указано количество товара, то во всех последующих расходных накладных, списывающих имеющиеся в наличии товары, .необходимо заново проанализировать остатки с учетом внесенных изменений и заново записать движения регистров. То есть, все документы, анализирующие остатки и расположенные после измененного документа, должны быть перепроведены.
Для обеспечения проведения определенных документов в непрерывной хронологической последовательности в версии 7.7 системы «1С:Предприятие» для компонент «Оперативный учет» и «Бухгалтерский учет» был разработан вспомогательный вид объекта метаданных «Последовательности документов».
\
57 |
Глава 3. Особенности проведения документов
3.3.2. Последовательность документов
Каждая введенная в структуру метаданных «Последовательность документов» обеспечивает контроль порядка проведения документов указанных видов. Таким образом, в системе может существовать несколько независимых последовательностей.
При создании последовательности определяется, какие виды документов входят в данную последовательность, а также виды движений, влияющие на последовательность. В качестве таких движений необходимо указывать те регистры, значения итогов которых используются документами данной последовательности при своем проведении.
Например, для организации правильного списания товаров следует в качестве движения, влияющего на последовательность, указать регистр оперативного учета, на котором ведется стоимостной учет товаров. В качестве документов, на проведение которых будет влиять данная последовательность, следует указать те виды документов, которые будут анализировать при проведении указанный регистр. Например, такими документами могут быть расходные накладные.
При работе в режиме «1С:Предприятие» для каждой введенной в метаданных последовательности документов система будет автоматически поддерживать границу последовательности. В качестве границы последовательности будет выступать позиция документа.
При последовательном проведении документов, входящих в данную последовательность, граница последовательности будет устанавливаться на каждый вновь проведенный документ.
Если между проводимым документом, относящимся к данной последовательности и находящимся после текущей границы последовательности, уже существует проведенный документ, относящийся к той же последовательности, то граница последовательности сдвигаться не будет, так как может быть нарушена последовательность проведения документов. Эта ситуация может быть проанализирована алгоритмом проведения документа.
При проведении документов «задним числом», а также отмене проведения или удалении документов, если удаляются или записываются движения регистров, указанных как влияющие на данную последовательность, граница последовательности отодвигается на момент измененного документа.
В режиме пересчета документов существует специальная возможность восстановления последовательности проведения документов. При ее использовании система автоматически выполняет перепроведение всех документов, относящихся к даниой-лоследовательности от текущей позиции границы последовательности, до указанного момента.
Восстановление последовательности может выполняться только в монопольном режиме, так как система должна гарантировать неизменность итогов на момент перепроведения документов.
Методические материалы обучения партнеров
апрель 2004 г.
5g _______________ 1С:Предприятие 7.7. Компонента Оперативный учет
После выполнения восстановления последовательности, проводимые после границы последовательности документы (приходные и расходные накладные) снова бу^дут двигать границу вперед.
В рассматриваемой нами задаче правильная последовательность проведения документов особенно важна для расходных накладных, так как именно их механизм проведения использует информацию, накопленную в регистре «Остатки товаров».
Создадим последовательность документов «ДляРасходныхНакладных» со еле-
m/ющими свойствами: |
И |
дентификатор | ДляРасходныэсНакладных |
г! иноним | Для расходных накладных |
комментарий _______ | |
"Движения, влияющие на последовательность: | Регистр. ОстаткиТоваров |
Последовательность влияет на проведение документов: | РасходнаяНакладная |
lCwMU 1 МЛ Г1<* iv. Т. I V/ 1¥4^/ЛС*.1.1.Ж1~»1»А W JL w^»x,/.«»..«»a-«vm. mma« ** »-v ^ ^ -•«-« — г т-
документов отрабатывается системой автоматически, средства языка предос-та#ляют возможность непосредственного доступа к методам последовательностей. 0се объявленные в конфигураторе последовательности принадлежат глобальному кортексту конфигурации. Доступ к методам возможен в любом программном мо-ду/te. Во всех текстах программных модулей вызовы методов последовательностей мо? кно записывать просто через точку после имени последовательности.
Например, применив метод Проверить {) можно определить, является ли по-сл^довательность проведенных документов непрерывной и, в случае ее нарушения, запретить проведение документа. Текст подобной проверки в модуле документа «Расходная накладная» может выглядеть следующим образом:
Последовательность. ДляРасходныхНакладных. Проверить( ТекущийДокумент())=0 Тогда
// если последовательность нарушена, запретим проведение документа Сообщить("Нарушена последовательность проведения документов!"); СтатусВозврата (0); Возврат;
Упражнение №3.6
Если в информационной базе не существует ни одного документа «Расходная накладная» создайте и проведите такой документ в режиме работы «1 (^Предприятия».
2. |
Сформируйте отчет «Остатки товаров на ТА». Обратите внимание на количество оставшегося товара и цену его списания.
3. |
Оприходуйте дополнительно «задним числом» некоторое количество товара, уже имеющегося на складе, по цене, отличной от цены принимаемой «по умолчанию». Проследите, чтобы приходуемый документ был расположен на оси времени ранее хотя бы одного документа «Расходная накладная». Сформируйте отчет «Остатки товаров на та», проверив количество и цену списания ос-
тавшегося товара.____ _______________________________________
Методические материалы обучения партнеров
59 |
Глава 3. Особенности проведения документов
4. Создайте еще один новый документ «Расходная накладная». Убедитесь в не
возможности проведения его с текущим датой и временем.
5. Откройте окно «Проведение документов», выбрав последовательно пункты
меню: «Операции», «Проведение документов...». В данном окне выберите за
кладку «Последовательности». В списке последовательностей поставьте «V» в
квадрате слева от последовательности «ДляРасходныхНакладных». Для запус
ка режима перепроведения необходимых документов нажмите на кнопку «Вы
полнить». Еще раз сформируйте отчет «Остатки товаров на ТА». Обратите
внимание, что теперь цена списания товара определена правильно. Проведите
не проведенный документ «Расходная накладная».
3.3.3. Предварительное проведение
При работе в сети одновременно большого количества пользователей в системе часто возникает следующая ситуация. Кто-либо из их вводит в табличную часть расходной накладной товар, а это же самое время другой пользователь успевает продать этот же товар, т. е. провести документ, содержащий этот же товар, пока первый еще заполняет табличную часть документа. И на складе больше не окажется требуемого первому пользователю нужного количества данного товара. Эта ситуация возможна потому, что учет проданных товаров в системе «1С:Предприятие» наступает только после проведения документа вместе с записью в регистр «ОстаткиТоваров». Чтобы избежать подобной ситуации, в типовой конфигурации предусмотрен механизм предварительной продажи товаров. Идея реализации этого механизма заключается в том, что при предварительном проведении, документ осуществляет движения только по регистру «Остатки товаров».
Предварительное проведение накладной выполняется по времени гораздо быстрее полного проведения, кроме того, в процессе оформления документа можно несколько раз выполнять предварительное проведение, при этом накладная каждый раз перепроводится сдвигая, ТА вперед по времени, записывая за собой набранные в документ товары.
Движения в остальных регистрах будут произведены в момент окончательного проведения документа.
Для определения того, является ли документ полностью или частично проведенным, добавим в шапку документа «Расходная накладная» новый реквизит:
Идентификатор | РежимПроведения |
Синоним | Режим проведения |
Комментарий | НЕ проведен, Полностью=0; Частичной |
Тип значения | Число |
Вид | |
Длина | 1 |
Точность | 0 |
Не отрицательный | V |
Разделять Триады |
апрель 2004 г.
60 |
1C предприятие 7.7. Компонента Оперативный учет
А в Диалог формы - текстовое поле: | |
Заголовок | |
Идентификатор | |
Формула | ? (РежимПроведения=1, "Проведен предварительно", "") |
Положение | Прижать влево |
Шрифт | MS Sans Serif, 6, красный, жирный, подчеркнутый |
и кнопку:
Заголовок | Предв. пров. |
Идентификатор | |
Формула | ЧастичноПровестм ( ) |
Пропускать при вводе | V |
Остальные свойства у всех новых элементов можно не заполнять.
В Модуль формы документа добавим процедуру ЧастичноПровести {). Вызов процедуры может быть осуществлен только для накладной, дата которой, не меньше даты ТА. Кроме того, данный режим доступен только для новых, не проведенных или предварительно проведенных накладных.
//делает движения только в регистре "Остатки товаров" Процедура ЧастичноПровести()
Если ДатаДок<ПолучитьДатуТА() Тогда
Предупреждение("Режим предварительного проведения запрещен!"
+РазделительСтрок+"Дата документа < даты ТА."); Иначе
Если Проведен()=1 Тогда
Если РежимПроведения=0 Тогда
• Предупреждение("Документ уже был полностью
(проведен. Частичное перепроведение запрещено.™)?
Возврат; :
КонецЕсли; КонецЕсли; Провести(3,1)
//параметры: 3 - проводить документ
реальным временем (со сдвигом ТА)
1 - признак частичного проведения,
передается в ОбработкуПроведения()
КонецЕсли; КонецПроцедуры
Глава 3. Особенности проведения документов
Если Последовательность. ДляРасходныхНакладных. Проверить( ТекущийДокумент())-0 Тогда
// если последовательность нарушена, запретим проведение // документа
Сообщить("Нарушена последовательность проведения документов!"); СтатусВозврата(0); Возврат; КонецЕсли;
//Использование временного расчета //Используем объект Регистр (новое в 7.7) //Разрешает дублирование строк ОбщРег=СоздатьОбъект("Регистры");
//будем поддерживать итоги в актуальном состоянии ОбщРег. Актуальность(1) ; Рег=ОбщРег. ОстаткиТоваров; Если ИтогиАктуальны()=0 Тогда // если проводим "задним числом" Per. ВременныйРасчет(1);
ОбщРег. РассчитатьРегистрыПо(ТекущийДокумент()); КонецЕсли; ВыбратьСтроки() ; Пока ПолучитьСтроку()=1 Цикл
// если-услуга, то в регистр "Остатки товаров" движения // записывать не надо Если Товар. Родитель. ВидНоменклатуры= Перечисление. ВидНоменклатуры. Товар Тогда ОстКол^Рег. Остаток(Товар, Склад,"Количество"); Если ОстКол>0 Тогда Если ОстКол<Количество Тогда Сообщить("В строке №"+НомерСтроки+
11 не хватило товара "+Товар+". Реально есть "+ОстКол+и !"); СтатусВозврата(0); Продолжить; КонецЕсли;
ОстСумУЕ=Рег. Остаток(Товар, Склад,"СтоимостьУЕ"); ОстСумРуб=Рег. Остаток(Товар, Склад,"СтоимостьРуб"); //определим суммы списания с учетом "проблемы копеек" СуммаСписУЕ=?(ОстКол^Количество, ОстСумУЕ,
Окр(ОстСумУЕ*Количество/ОстКол,2)); СуммаСписРуб=?(ОстКол=Количество, ОстСумРуб, Окр(ОстСумРуб*Количество/ОстКол,2));
61
С учетом изменений, внесенных для случая предварительного проведения, процедура ОбработкаПроведения () должна быть следующей:
Процедура ОбработкаПроведения(ПараметрПроведения) // ПараметрПроведения=1 при частичном проведении //(только по остаткам)
Методические материалы обучения партнеров
Регйгетр. ОстаткиТоваров Регистр. ОстаткиТоваров Регистр. ОстаткиТоваров Регистр. ОстаткиТоваров Регистр. ОстаткиТоваров Регистр. ОстаткиТоваров
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 |







