
- •Ростовский институт сервиса
- •Введение
- •Глава 1. План счетов
- •Глава 2. Ввод в план счетов нового субсчета
- •Глава 3. Создание нового счета в Конфигураторе
- •Глава 4. Организация аналитического учета
- •Глава 5. Новые виды документов
- •Глава 6. Описание структуры документа и создание формы ввода
- •Глава 7. Настройка журнала документов
- •Глава 8. Редактирование меню конфигурации
- •Глава 9. Создание печатной формы документа
- •Глава 10. Описание алгоритма печати документа
- •Глава 11. Открытие субсчета к счету
- •Глава 12. Корректировка документа «Списание материалов»
- •Глава 13. Создание документа без использования режима Конструктора «от проводки»
- •Глава 14. Создание алгоритма формирования проводок
- •Глава 15. Создание отчета
- •Глава 16. Как получать итоги по счетам
- •Глава 17. Получение итогов по аналитике
Глава 12. Корректировка документа «Списание материалов»
Ранее мы создали документ «СписаниеМатериалов», который при проведении формирует проводки по счету 23. Поскольку структура счета 23 существенно изменилась — счет преобразован в группу и к нему открыты субсчета — нам необходимо внести, во-первых, коррективы в процедуру проведения документа, что, скорее всего, повлечет за собой изменение как формы диалога, так и структуры документа.
Алгоритм формирования проводок документом «Списание материалов» был создан Конструктором Документов. Мы убедились в правильности формирования проводок этим документом, а сейчас рассмотрим сам алгоритм и внесем в него необходимые изменения.
Документы в «1С:Предприятии» могут формировать проводки только в процессе проведения. Алгоритм проведения описывается в специальном модуле, называемом модулем документа. До этого мы редактировали модуль формы документа. Теперь окно формы документа можно закрыть. Закроем сеанс работы в режиме запуска «1С:Предприятие» и вернемся в Конфигуратор. Закроем окно плана счетов, найдем в дереве метаданных документ «СписаниеМатериалов» и откроем окно редактирования документа. Для этого, установив курсор на названии документа, дважды щелкнем мышкой. В окне редактирования документа нажмем на кнопку «Модуль документа».
Будет открыто окно для редактирования модуля документа. Это окно — не что иное, как текстовый редактор, такой же, как мы использовали при создании модуля печатной формы документа. Поэтому, надеемся, вам уже знакомы приемы работы с ним.
Итак, в окне текстового редактора появится следующий текст:
Процедура ОбработкаПроведения()
//{{ ФОРМИРОВАНИЕ_ОПЕРАЦИИ
//Данный фрагмент построен конструктором.
//Приповторном использовании конструктора,
//внесенные вручную изменения бюудут потеряны!!!
Выбрать Строки();
Пока ПолучитьСтроку() = 1 Цикл
Операция.НоваяПроводка();
Операция.Дебет.Счет=СчетПоКоду("23",ПланыСчетов.Основной);
Операция.Дебет.Затраты=Затраты;
Операция.Кредит.Счет=СчетПоКоду("10.1",Планы Счетов.Основной);
Операция.Кредит.Материалы=Материалы;
Операция.Кредит.МестаХранения =МестаХранения;
Операция.Кредит.Количество=Количество;
Операция.Кредит.Сумма=Сумма;
КонецЦикла;
Операция.СуммаОперации=Итог("Сумма");
Операция.Записать ();
//}} ФОРМИРОВАНИЕ_ОПЕРАЦИИ
КонецПроцедуры
В модуле документа процедура ОбработкаПроведения была сформирована Конструктором документов, о чем сообщают комментарии, следующие непосредственно за текстом заголовка процедуры.
Документ формирует проводки по каждой строке документа, поэтому в процедуре ОбработкаПроведения организован перебор всех строк документа. Вы, наверное, помните, что точно такой же прием мы использовали при формировании печатной формы документа в процедуре Печать.
Для тех, кто уже хорошо владеет приемами редактирования текстов: в дальнейшем при необходимости организации цикла по строкам документа, можно будет скопировать этот фрагмент текста из модуля документа и, удалив в нем лишние строки, оставить только цикл обхода строк документа:
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
……….
КонецЦикла;
Теперь рассмотрим собственно алгоритм формирования проводок. Как мы уже говорили, во встроенном языке «IС:Предприятия» многие возможности сгруппированы в объекты различных типов. Для формирования проводок в модуле документа существует специальный объект типа «Операция». Он имеет имя «Операция». В отличие от уже знакомого нам объекта «Таблица», которых у одного документа может быть несколько, бухгалтерская операция у документа всегда только одна. Поэтому такой объект не надо создавать функцией СоздатьОбъект() , и имя этого объекта четко определено.
Алгоритм записи проводок размещен внутри цикла обработки строй (между строками «Пока...» и «КонецЦикла»), так как он должен вы подняться для каждой строки документа.
Прежде всего, мы должны указать системе, что начинается ввод новой проводки. Для этого мы воспользуемся методе НоваяПроводка (). Обращение к методам объекта «Операция» выполняется через точку:
Операция.НоваяПроводка();
Теперь мы должны заполнить различные данные проводки. У многих объектов, кроме методов, существуют еще и атрибуты. Атрибут отличается от метода тем, что его можно не только вызывать, но еще ему можно присваивать значение, так же, как и реквизиту документа и переменной. При обращении к атрибуту не пишутся круглые скобки и не используются параметры.
Заполнение значений проводки выполняется через атрибуты. Обращение к атрибутам выполняется также через точку.
У проводки есть два специальных атрибута: Дебет и Кредит, которые позволяют обращаться к атрибутам дебетовой и кредитовой части проводки тоже через точку. Для заполнения счета дебета проводки записана строка:
Операция.Дебет.Счет=СчетПоКоду ("23",ПланыСчетов.Основной);
В этой строке конструкция Операция.Дебет.Счет обозначает счет дебета проводки, а конструкция СчетПоКоду(«23»,ПланыСчетов.Основной) выдает счет 23 «Вспомогательные производства» из плана счетов, имеющего в конфигурации идентификатор «Основной». Поскольку в данной фигурации используется единственный план счетов, указание плана счетов в конструкции СчетПоКоду можно опустить, тогда эта строка будет записана так:
Операция.Дебет.Счет=СчетПоКоду("23");
Использование функции СчетПоКоду()является необходимым из-за того, что строка «23», не является собственно счетом, а содержит только его код. К такой записи нужно привыкнуть и использовать ее для обращения к счету.
Если счет частот используется в модуле, то можно запомнить его в некоторой переменной, а затем использовать уже эту переменную. Например:
Сч 23=СчетПоКоду("23");
Операция.Дебет.Счет=Сч23;
Теперь рассмотрим, как заполняется значение субконто дебета проводки. В большинстве случаев, для дебета и кредита проводки должны заполняться все субконто, которые определены для данного счета в плане счетов (план счетов можно посмотреть и в 1С:Бухгалтерии, и в дереве метаданных Конфигуратора — на ветви «Планы счетов - Основной»).
Значения субконто нельзя присваивать раньше счета, так как еще не известно, какие субконто можно использовать. После заполнения счета можно заполнять субконто только тех видов, которые назначены для данного счета в плане счетов.
Открыв план счетов, мы увидим, что нам нужно заполнить для счета «23» субконто «Затраты». Для заполнения субконто дебета также используется атрибут Дебет, а для уточнения через точку указывается вид субконто, так как в дебете проводки (как, впрочем, и в кредите) могут одновременно быть значения субконто разных видов. Следующая строка заполняет значение субконто дебета:
Операция.Дебет.Затраты=Затраты;
В левой части конструкция Операция.Дебет.Затраты обозначает субконто вида «Затраты» дебета проводки.
В правой части оператора присваивания размещается слово «Затраты», которое является идентификатором реквизита документа. То есть данное значение будет заполнено в проводке из реквизита «Затраты» текущей строки документа. Аналогично формируются значения атрибутов кредита текущей проводки:
Операция.Кредит.Счет=СчетПоКоду ("10.1", ПланыСчетов.Основной);
В кредит проводки записывается субсчет 10.1 «Сырье материалы». Указание плана счетов в данном сучае можно опустить, так как в типовой конфигурации имеется только один план счетов. Далее заполняются субконто кредита:
Операция.Кредит.Материалы=Материалы;
Операция.Кредит.МестаХранения=МестаХранения;
В левой части конструкция Операция.Дебет.Материалы обозначает субконто вида «Материалы» дебета проводки.
В правой части оператора присваивания размещается слово «Материалы», которое является идентификатором реквизита документа. То есть данное значение будет заполнено в проводке из реквизита «Материал» текущей строки документа.
Аналогично формируется и строка для заполнения субконто МестаХранения.
Операция.Дебет.Места Хранения=МестаХранения;
Обратите внимание, что в качестве вида субконто мы указали слово МестаХранения в левой части оператора присваивания, поскольку именно так называется вид субконто, назначенный для счета 10.1, а правой части мы написали «МестаХранения», поскольку именно та идентификатор мы присвоили реквизиту документа.
Как вы помните, для реквизита «МестаХранения» мы выбрали тип «Справочник.МестаХранения». Однако то, что вид субконто называется «МестаХранения», также не является основанием для правомерности присвоения ему значения реквизита «МестаХранения» — необходимо, чтобы тип вида субконто и тип реквизита документа совпадали.
В нашем случае вид субконто «МестаХранения» также имеет тип «Справочник.МестаХранения». В этом легко убедиться, найдя этот вид субконто в дереве метаданных (ветвь «Виды субконто» - «МестаХранения») и открыв свойства данного вида субконто (необходимо убрать пункт «Свойства» из меню «Действия» главного меню Конфигуратора). В свойствах вида субконто «МестаХранения» указан тип «МестаХранения». То есть у вида субконто и у реквизита документа типы совпадают.
На этом мы закончили описание заполнения дебета и кредита проводки, и теперь рассмотрим заполнение значения суммы и количества:
Операция.Количество=Количество;
Операция.Сумма=Сумма;
Здесь уже не используются в левой части промежуточные атрибуты Дебет или Кредит, так как значения суммы и количества относятся к проводке в целом, а не отдельно к дебету или кредиту проводки. Поясним подробнее смысл некоторых из написанных строк.
Операция.Количество=Количество;
Так как один из счетов данной проводки (а именно счет 10.1) имеет в плане счетов признак количественного учета, необходимо заполнить атрибут проводки «Количество». Разумеется, он заполняется из реквизита документа «Количество».
Кроме вышеперечисленных атрибутов, в проводке может быть указано ее содержание и номер журнала (это атрибуты «СодержаниеПроводки» и «НомерЖурнала»).
Атрибут «СодержаниеПроводки» предназначен для записи пояснения к проводке.
Использование атрибута «НомерЖурнала» позволяет разделить все многообразие проводок на группы, в зависимости от их принадлежности — проводки, относящиеся к только расчету заработной платы, проводки, относящиеся к учету основных средств, и т.д.
В процедуре, сформированной Конструктором документов, нет строк, обеспечивающих заполнение этих атрибутов, поэтому нам следует дописать строки заполнения этих атрибутов. В содержании проводки укажем, что выполняется списание материалов, а в качестве номера журнала запишем принятое в типовой конфигурации обозначение журнала учета материалов.
Добавим эти строки в процедуру:
ПроцедураОбработкаПроведения ()
//{{ФОРМИРОВАНИЕ- ОПЕРАЦИИ
//Данный Фрагмент построен конструктором.
//При повторном использовании конструктора,
//внесенные вручную изменения будут потеряны !!!
Выбрать Строки( );
ПокаПолучитьСтроку()=1 Цикл
Операция.НоваяПроводка();
Операция.Дебет.Счет=СчетПоКоду("23");
Операция.Дебет.Затраты=Затраты;
Операция. Кредит.Счет=СчетПоКоду("10.1");
Операция.Кредит.Материалы=Материалы;
Операция.Кредит.МестаХранения =МестаХранения;
Операция.Количество=Количество;
Операция.Сумма=Сумма;
Операция.СодержаниеПроводки="Списание материалов";
Операция.НомерЖурнала="МТ";
КонецЦикла;
Операция.СуммаОперации=Итог("Сумма");
Операция.Записать();
//}} ФОРМИРОВАНИЕ_ОПЕРАЦИИ
КонецПроцедуры
Для заполнения дополнительных реквизитов «СодержаниеПроводки» и «НомерЖурнала» мы указываем непосредственно строковые значения в двойных кавычках.
Некоторые атрибуты объекта «Операция», которые мы использовали, имеют фиксированное название, то есть они всегда будут именно такими («Счет», «Сумма», «Количество»), а другие атрибуты имеют имена, соответствующие идентификаторам введенных метаданных. К ним относятся названия (идентификаторы) видов субконто («Материалы», «Места Хранения», «Затраты») и названия дополнительных реквизтов проводки («СодержаниеПроводки», «НомерЖурнала»).
При заполнении дополнительных реквизитов следует соблюсти тип. Тип реквизитов проводки можно посмотреть, обратившись к ветке «Проводка» метаданных. В ней можно двойным щелчком мыши открыть свойства конкретного реквизита. Так, например, реквизит «НомерЖурнала» имеет тип «Строка» и длину 2 символа. Это значит, что в него не имеет смысла вносить строку, состоящую более чем из двух символов.
На этом формирование проводки по строке документа (то есть указанному в этой строке материалу) окончено. Если при обработке строки документа одной проводки недостаточно, следует в этом же цикле снова вызвать метод НоваяПроводка() объекта «Операция» и заполнить атрибуты этой новой проводки.
В завершение формирования операции мы заполняем реквизиты, относящиеся к операции в целом, а затем выполняем сохранение (запись) только что созданной операции:
Операция.Сумма.Операции =Итог("Сумма");
Операция.Записать();
Реквизит «СуммаОперации» не отражается в бухгалтерских итогах, а служит, скорее, дополнительной справочной информацией. Например, по этой сумме будет удобно искать документ в журнале операций (см. главу «Настройка журнала операций»). Поэтому перед записью операции Конструктор сформировал строку заполнения этого реквизита итоговой суммой документа.
Мы уже говорили, что в правой части оператора присваивания может указываться выражение. То, что в предыдущих проводках мы указывали просто реквизит документа, было простейшим случаем выражения: выражения из одного реквизита. В данном случае для заполнения суммы операции использован метод Итог объекта «Документ», позволяющий просуммировать значения реквизита «Сумма» по всем строкам табличной части документа.
Для записи сформированной операции вызван метод Записать(); объекта «Операция»:
Операция.Записать();
Данный метод нужно вызывать в самом конце — после формирования всех проводок. То есть, его необходимо размещать после строк, формирующих проводку но, разумеется, до строки «КонецПроцедуры».
Счет 23 теперь стал группой, поэтому в дебете проводки должен присутствовать не сам счет, а его субсчета (23.1 «Ремонт основных средств» или 23.2 «Транспортное обслуживание»).
Будем считать, что одним документом мы оформляем операцию списания материалов по одному виду деятельности вспомогательного производства, другими словами, один документ отражает изменения на выбранном субсчете. Следовательно, перед проведением документа нам следует знать, по какому субсчету счета 23 формировать проводки. Поэтому в документе должна быть возможность выбрать субсчет счетеа 23, то есть в документ требуется ввести дополнительный реквизит для ввода этого субсчета.
В окне редактирования документа введем новый реквизит шапки документа, нажав кнопку "Новый".
Дадим новому реквизиту идентификатор "КоррСчет", синоним "Вид производства" и установим его тип как "Счет.Основной". Значение этого реквизита будет устанавливаться в диалоге ввода документа. Чтобы данный реквизит можно было указывать при вводе документа, необходимо внести его еще и в диалог документа.
Откроем окно редактирования диалога документа. Для этого щелкнем мышью "Форма". Перед нами открылся уже знакомый нам диалог формы.
Для размещения в диалоге формы нового реквизита будем использовать те же приемы, который мы применяли ранее при создании диалога. Чтобы вкдючить новый реквизит снова воспользуемся пунктом "Реквизиты" из меню "Вставить" главное меню Конфигуратора. В появившемся диалоге нужно щелкнуть мышкой в идентификатор реквизита "КоррСчет", чтобы его активизировать и включить флажок "Вставлять имя". После чего следует нажать кнопку "Вставить".
В некоторых случаях только что введенный в документ реквизит не показывается в списке реквизитов для вставки в диалог формы. Это бывает, когда формы была открыта до вставки реквизита в документ, и еще «не знает» о новых реквизитах. В этом случае нужно отказаться от выбора реквизита (кнопка «Отмена»), закрыть окно формы, вновь его открыть и вновь начать вставку реквизита.
После выбора вставляемого реквизита нужно мышью очертить отведенное для него место в диалоге. После отпускания кнопки мыши новый реквизит появится в диалоге. Текст «КоррСчет» желательно заменить на «Вид производства».
Диалог будет иметь аккуратный вид, если новые реквизиты сделать одной высоты с реквизитом «Затраты» выровнять по его верху. Предлагаем вам сделать это самостоятельно.
Редактирование диалога на этом можно считать законченным, давайте посмотрим на результат наших последних изменений, запустив программу в режиме «1С:Предприятие».
Откроем наш документ (меню «Документы» пункт «Списание материалов»). Нажав кнопку выбора в поле ввода корреспондирующего счета, мы можем выбрать счет из плана счетов. Причем, можно выбрать любой счет, не являющийся группой.
Мы уже добились положительного результата, потому что имеем возможность выбрать требуемый субсчет счета 23. Но если документ будет вводить кто-либо незнакомый с работой документа «СписаниеМатериалов», он может выбрать другой счет, и это приведет к формированию неправильных проводок.
Чтобы такой ситуации избежать, необходимо снабдить документ хотя бы минимальными средствами контроля вводимой информации.
Давайте закроем программу, запущенную в режиме «1С:Предприятие», и продолжим редактирование документа в Конфигураторе.
Нам нужно после ввода счета в реквизит «КоррСчет» проверять, является ли введенный счет субсчетом счета 23, и если нет, будем выдавать предупреждение, что следует ввести субсчет счета 23. Эти действия мы опишем в процедуре, которую будем вызывать при вводе информации в реквизит «КоррСчет».
Похожие действия мы выполняли, когда организовывали автоматический ввод реквизитов в табличную часть документа и пересчет суммы после ввода цены и количества. Тогда мы вводили формулы на закладке «Дополнительно» палитры свойств реквизитов, чтобы ввод данных в эти реквизиты приводил к пересчету других параметров. Сейчас задача усложнилась, так как после выбора счета из плана счетов нам следует выполнить проверку кода счета и сделать предупреждение, если счет введен неверно. Эти действия мы оформим в виде процедуры модуля формы.
Двойным щелчком мыши на реквизите «КоррСчет» откроем палитру свойств этого реквизита, выберем закладку «Дополнительно» и в поле «Формула» запишем вызов процедуры:
ПриВыбореСчета();
Этой процедуры пока еще нет, но мы создадим ее в модуле формы документа. Нажмем кнопку «ОК» в палитре свойств реквизита «КоррСчет», чтобы сохранить изменения, и перейдем к созданию процедуры.
В окне редактирования формы документа щелкнем мышкой по закладке «Модуль», в окне текстового редактора вы видите модуль формы документа. В этом модуле сейчас есть две процедуры: ПриОткрытии() и Печать().
Вставим пустую строку перед процедурой «Печать». Затем в ветви «Шаблоны» Синтакс-Помощника откроем ветвь «Управление», а в ней установим курсор на объекте «Процедура (Проц)», щелкнем правой кнопкой мышки и в контекстном меню выберем пункт «Выбрать».
В диалоге запроса имени процедуры наберем ПриВыбореСчета и нажмем кнопку ОК. В модуле формы получим следующую «заготовку» для новой процедуры:
Процедура ПриВыбореСчета( )
Конец Процедуры //ПриВыбореСчета
Установите курсор в пустой строке в теле новой процедуры. Далее нам нужно проверить условие «Выбранный счет являетеся субсчетом счета 23?» и, если нет, вывести на экран предупреждение. То есть в теле процедуры должен присутствовать условный оператор. Выберем из ветви «Шаблоны» Синтакс-Помощника объект «Еесли Тогда») и вставим его в текст, не задавая пока условия. Теперь наша процедура будет выглядеть так:
Процедура ПриВыбореСчета()
Если Тогда
Конец Если;
Конец Процедуры //ПриВыбореСчета
Курсор поставим между словами Если и Тогда. Следующий шаг — записать условие, является ли выбранный счет субсчетом счета 23, другими словами, принадлежит ли выбранный счет группе счетов с кодом 23. В «1С:Предприятии» для работы существует метод ПринадлежитГруппе(), позволяющий определить принадлежность субсчета группе счетов. Это один из методов работы с объектами типа «Счет». Давайте найдем его в Синтакс-Помощнике. Для этого откроем ветвь «Встроенный язык», в ней — «Счета», далее ветвь «Методы», в которой примерно в середине списка объектов находится метод ПринадлежитГруппе. Так же, как мы вставляли конструкции языка ранее, вставим и этот объект в текст модуля. Он должен быть записан в строке между словами «Если» и «Тогда»:
Процедура ПриВыбореСчета( )
Если ПринадлежитГруппе() Тогда
КонецЕсли;
Конец Процедуры // ПриВыбореСчета
Выбранный нами метод применяется к объекту метаданных типа «Счет», а его параметром должен быть счет-группа. Метод ПринадлежитГруппе возвращает значение «1», если счет принадлежит указанной группе, и «0», если нет. Все это вы можете прочесть в Синтакс-Помощнике, если дважды щелкнете мышкой по объекту ПринадлежитГруппе.
В документе для ввода счета предназначен реквизит «КоррСчет», имеющий тип счет, поэтому метод ПринадлежитГруппе будем применять к нему. То есть, в строке условия «Если» непосредсственно перед названием метода напишем:
КоррСчет.ПринадлежитГруппе()
Также запишем значение параметра метода в круглых скобках. Поскольку мы проверяем счет на принадлежность группе с кодом 23, нам следует записать:
СчетПоКоду("23")
Итак, теперь у нас получилось:
Процедура ПриВыбореСчета()
Если КоррСчет.ПринадлежитГруппе(СчетПоКоду("23")) Тогда
КонецЕсли;
Конец Процедуры //ПриВыбореСчета
Если выбранный нами счет является субсчетом счета 23, то счет выбран правильно, и делать нам ничего не нужно. Но если это не так, мы должны предупредить о том, что выбирать счет следует из субсчетов счета 23. Поэтому дальнейшие действия в процедуре будут возможны, если метод ПринадлежитГруппе возвращает значение «0», это мы и запишем, после чего строка условия будет такой:
Если КоррСчет.ПринадлежитГруппе(СчетПоКоду("23")=0 Тогда
Во встроенном языке «1С:Предприятия» имеется системная процедура «Предупреждение», которой в качестве параметра мы передадим текст «Выберите субсчет счета 23!». Вызов этой процедуры следует записать в теле условного оператора. Окончательно процедура будет выглядеть так:
Процедура ПриВыбореСчета()
Если КоррСчет.ПринадлежитГруппе(СчетПоКоду("23")=0 Тогда
Предупреждение ("Выберите субсчет счета 23!")
КонецЕсли;
Конец Процедуры //ПриВыбореСчета
Ошибок вводе счета будет меньше, если при вводе нового документа реквизиту «КоррСчет» будет заранее присвоено допустимое значение. Покажем, как это можно сделать.
В системе «1С:Предприятие» имеется набор предопределена процедур, которые выполняются при тех или иных условиях работы системы. С одной из них мы познакомились, это процедура ПриОткрытии, которая помещена в модуль формы документа Конструктором Документов и выполняется каждый раз, как только откроется существующий документ.
Откроем ветвь «Шаблоны» в Синтакс-Помощнике, затем ветвь «Предопределенные процедуры» и выберем в ней oбъект «ВводНового()». Это именно та процедура, которую мы вставим в модуль формы. (Только сначала вставьте пустую строку перед процедурой ПриОткрытии и поставьте в нее курсор.)
Мы видим, что в модуле формы нашего документа процедура «ВводНового()» отсутствует. Для вставки этой процедуры будем использовать Синтакс-Помощник.
Итак, вставим процедуру ВводНового в модуль формы:
Процедура ВводНового (Копирование)//предопределенная
Если Копирование = 1 Тогда
Возврат;
Конец Если;
Конец Прооцедуры / ВводНового
В этой процедуре сделана обработка режима копирования документа, мы не будем углубляться в разбор данного кода. Обратите внимание, курсор уже установлен именно в той строке, в которой мы зададим начальное значение реквизиту «КоррСчет»:
КоррСчет=СчетПоКоду("23.1");
То есть вся процедура будет выглядеть так:
Процедура ВводНового (Копирование)//предопределенная
Если Копирование=1 Тогда
Возврат;
Конец Если;
КоррСчет=Счет По Коду ("23");
Конец Процедуры //ВводНового
Теперь при вводе новогго документа реквизиту "КоррСчет" будет присвоено правильное значение, а если потребуется задать другой субсчет, то план счетов будет открыт для выбора как раз на списке субсчетов счета 23. Редактирование модуля формы закончено. Теперь завершим редактирование модуля документа.
Сейчас наша задача – подправить алгоритм формирования проводок, чтобы в дебет проводки записывался счет, введенный в реквизите "КоррСчет". Счет в дебете проводки определялся строкой:
Операция. Дебет.Счет=СчетПоКоду("23");
В правой части этой строки выражение СчетПоКоду(«23») заменим идентификатором реквизита КоррСчет:
Операция. Дебет. Счет = КоррСчет;
Тогда процедура ОбработкаПроведения будет следующей:
Процедура ОбработкиПроведения()
//{{ ФОРМИРОВАНИЕ_ОПЕРАЦИИ
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора,
//внесенные вручную изменения бюудут потеряны!!!
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Операция.НоваяПроводка();
Операция.Дебет.Счет=КоррСчет;
Операция.Дебет.Затраты=Затраты;
Операция.Кредит.Счет=СчетПоКоду("10.1");
Операция.Кредит.Материалы=Материалы;
Операция.Кредит.МестаХранения =МестаХранения;
Операция.Количество=Количество;
Операция.Сумма=Сумма;
КонецЦикла;
Операция.СуммаОперации=Итог("Сумма");
Операция.Записать();
//}} ФОРМИРОВАНИЕ_ОПЕРАЦИИ
Конец Процедуры
И, наконец, нам осталось убедиться в том, что документ работает так, как мы того хотели. Запустим программу в режиме «1С:Предприятие», сохранив сделанные изменения.