Приложение А

Модули формирования документов

1.  Модуль формы документа «Заказ»

Процедура ВводНаОсновании(ДокОснование)

//{{ВВОД_НА_ОСНОВАНИИ

//Данный фрагмент построен конструктором.

//При повторном использовании конструктора, внесенные вручную изменения будут потеряны!!!

Если ДокОснование. Вид() = "Поставщики" Тогда

ИначеЕсли ДокОснование. Вид() = "Заявки" Тогда

ДокОснование. ВыбратьСтроки();

Пока ДокОснование. ПолучитьСтроку() = 1 Цикл

НоваяСтрока();

НомерСтроки = ДокОснование. НомерСтроки;

Номенклатура = ДокОснование. Номенклатура;

Количество = ДокОснование. Количество;

КонецЦикла;

ИначеЕсли ДокОснование. Вид() = "Заказ" Тогда

ИначеЕсли ДокОснование. Вид() = "ВедомостьМатериалов" Тогда

ИначеЕсли ДокОснование. Вид() = "ПриходнаяНакладная" Тогда

ИначеЕсли ДокОснование. Вид() = "РасходнаяНакладная" Тогда

КонецЕсли;

//}}ВВОД_НА_ОСНОВАНИИ

КонецПроцедуры

Процедура ОбработкаПроведения()

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

Регистр. ЗаказПоставщику. Номенклатура = Номенклатура;

Регистр. ЗаказПоставщику. Поставщик = Поставщик;

Регистр. ЗаказПоставщику. Количество = Количество;

Регистр. ЗаказПоставщику. ДвижениеПриходВыполнить();

КонецЦикла;

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

Процедура ОбработкаПроведения()

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

Регистр. ОстаткиНоменклатурыМатериалов. НоменклатураМатериалов = Номенклатура;

Регистр. ОстаткиНоменклатурыМатериалов. Склад = Склад;

НЕ нашли? Не то? Что вы ищете?

Регистр. ОстаткиНоменклатурыМатериалов. Количество = Количество;

Регистр. ОстаткиНоменклатурыМатериалов. ДвижениеПриходВыполнить();

регистр. ЗаказПоставщику. Номенклатура = Номенклатура;

Регистр. ЗаказПоставщику. Поставщик = Поставщик;

Регистр. ЗаказПоставщику. Количество = Количество;

Регистр. ЗаказПоставщику. ДвижениеРасходВыполнить();

КонецЦикла;

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

//Здесь следует написать алгоритм проведения документа

КонецПроцедуры

Процедура ОбработкаПроведения()

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

Регистр. ОстаткиНоменклатурыМатериалов. НоменклатураМатериалов = Номенклатура;

Регистр. ОстаткиНоменклатурыМатериалов. Склад = Склад;

Регистр. ОстаткиНоменклатурыМатериалов. Количество = Количество;

Регистр. ОстаткиНоменклатурыМатериалов. ДвижениеРасходВыполнить();

КонецЦикла;

2.  Модуль формы документа «Заявка»

Процедура ВводНаОсновании(ДокОснование)

Если ДокОснование. Вид() = "Доверенности" Тогда

ИначеЕсли ДокОснование. Вид() = "Заявки" Тогда

ИначеЕсли ДокОснование. Вид() = "Заказ" Тогда

ИначеЕсли ДокОснование. Вид() = "ВедомостьМатериалов" Тогда

ДокОснование. ВыбратьСтроки();

Пока ДокОснование. ПолучитьСтроку() = 1 Цикл

НоваяСтрока();

Номенклатура = ДокОснование. Номенклатура;

Количество = ДокОснование. КолЗаказа;

КонецЦикла;

ИначеЕсли ДокОснование. Вид() = "ПриходнаяНакладная" Тогда

ИначеЕсли ДокОснование. Вид() = "РасходнаяНакладная" Тогда

КонецЕсли;

//}}ВВОД_НА_ОСНОВАНИИ

КонецПроцедуры

//****

// Процедура генерации запроса Сформировать.

//

3.  Модуль формы документа «Ведомости материалов»

Процедура Сформировать()

Перем Запрос, ТекстЗапроса, Таб, Колонка;

ТабСкл=СоздатьОбъект("ТаблицаЗначений");

ТабНом=СоздатьОбъект("ТаблицаЗначений");

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|Без итогов;

|ТекущийЭлемент = Справочник. НоменклатураМатериалов. ТекущийЭлемент;

|КолЗапас = Справочник. НоменклатураМатериалов. МинЗапас;

|Функция КолЗапасКонОст = КонОст(КолЗапас);

|Группировка ТекущийЭлемент без групп;

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос. Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

Запрос. Выгрузить(ТабНом,0,1);

//Создание объекта типа Запрос

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|Без итогов;

|Номенклатура = Регистр. ОстаткиНоменклатурыМатериалов. НоменклатураМатериалов;

|КолНаСкладе = Регистр. ОстаткиНоменклатурыМатериалов. Количество;

|Функция КолНаСкладеКонОст = КонОст(КолНаСкладе);

|Группировка Номенклатура упорядочить по Номенклатура. Наименование без групп;

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос. Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

Запрос. выгрузить(ТабСкл,0,1);

ТабНом. ВыбратьСтроки();

ТабСкл. ВыбратьСтроки();

Таб = СоздатьОбъект("ТаблицаЗначений");

Таб. НоваяКолонка("Номенклатура",,,,,,,);

Таб. НоваяКолонка("КолНаСкладе",,,,,,,);

Таб. НоваяКолонка("КолЗаказа",,,,,,,);

Таб. ВыбратьСтроки();

// Подготовка к заполнению выходных форм данными запроса

Пока ТабСкл. ПолучитьСтроку() = 1 Цикл

номер = 0;

ТабНом. НайтиЗначение(ТабСкл. Номенклатура, номер, Колонка);

табНом. ТекущаяСтрока(Номер);

Значение = ТабНом. ПолучитьЗначение(номер,1);

КолЗапасаМин= ТабНом. ПолучитьЗначение(номер,2);

Номенклатура= ТабСкл. Номенклатура;

КолНаСкладеРеал= ТабСкл. КолНаСкладеКонОст;

Зн= КолНаСкладеРеал-КолЗапасаМин;

Если Зн >=0 Тогда

КолЗаказа=0;

продолжить;

Иначе

КолЗаказаРеал= КолЗапасаМин-КолНаСкладеРеал;

конецЕсли;

Таб. НоваяСтрока();

Таб. Номенклатура = ТабСкл. Номенклатура;

Таб. КолНаСкладе = КолНаСкладеРеал;

Таб. КолЗаказа = КолЗаказаРеал;

КонецЦикла;

ЗагрузитьТабличнуюЧасть(Таб);

КонецПроцедуры

4.  Модуль формы документа «Приходная накладная»

Процедура Пересчет()

Сумма = Количество* Стоимость;

КонецПроцедуры

Процедура Стоимость()

Стоимость = Номенклатура. Стоимость;

КонецПроцедуры

Процедура ОбновитьНадписи()

Форма. ТекстФирмы. Заголовок(глСтрокаФирмы (Контекст));

Форма. ТекстКлиента. Заголовок(глСтрокаКонтрагента (Контекст));

Форма. ТекстДоговора. Заголовок(глСтрокаДоговора (Контекст));

Форма. ТекстЛица. Заголовок(ДоверенноеЛицо. Наименование);

КонецПроцедуры //ОбновитьНадписи()

// ЗаголовокФормы()

// Формирует название операции и заголовок формы диалога

Функция ЗаголовокФормы()

Перем Заголовок, Название;

Заголовок = глНазваниеДокументаВЖурнале(Контекст);

Название = Заголовок+" №";

Если Выбран() = 1 Тогда

Если Проведен() = 1 Тогда

Заголовок = Заголовок + ". Проведен";

Иначе

Заголовок = Заголовок + ". Не проведен";

КонецЕсли;

Иначе

Заголовок = Заголовок + ". Новый";

КонецЕсли;

Форма. Заголовок(Заголовок);

Возврат Название;

КонецФункции //ЗаголовокФормы

// ИнформацияОНоменклатуре()

// Строка информации о Номенклатуре в документе

// Формирует строку, включающую название, артикул Номенклатуры, реквизиты партии

Функция ИнформацияОНоменклатуре()

ИнфоТекст="";

Если Номенклатура. Выбран()=0 Тогда

Возврат(ИнфоТекст);

КонецЕсли;

ИнфоТекст=ИнфоТекст+СокрЛП(Номенклатура. Наименование);

Если ПустоеЗначение(Номенклатура. Артикул)=0 Тогда

ИнфоТекст=?(ИнфоТекст="","",ИнфоТекст+",");

ИнфоТекст=ИнфоТекст+" арт. "+СокрЛП(Номенклатура. Артикул);

КонецЕсли;

Возврат(ИнфоТекст);

КонецФункции //ИнформацияОНоменклатуре()

Процедура ПриИзмененииФирмы()

Если СтараяФирма <> Фирма Тогда

// только если изменили

глПриИзмененииФирмы(Контекст);

СтараяФирма = Фирма;

КонецЕсли;

КонецПроцедуры // ПриИзмененииФирмы()

5.  Модуль формы документа «Приходная накладная»

Процедура пересчет()

Сумма= Количество*Стоимость;

КонецПРоцедуры

Процедура Стоимость()

Стоимость= Номенклатура. Стоимость;

КонецПРоцедуры

Процедура ПоКнопкеОснование()

Перем Основание;

// если документ основание уже есть, откроем его

Если ПустоеЗначение(ДокОснование) = 0 Тогда

ОткрытьФорму(ДокОснование);

Возврат;

КонецЕсли;

// если документа - основания нет, позволяем выбрать его

Основание = глВыбратьОснование(Контекст);

Если ПустоеЗначение(Основание) = 0 Тогда

// Выбрали основание

глЗаполнитьШапкуНаОсн(Контекст, Основание);

ПриИзмененииКонтрагента();

Если ПустоеЗначение(ПоДокументу) = 1 Тогда

ПоДокументу = глПредставлениеДокумента(Основание);

КонецЕсли;

ТекстВопроса = "Заполнить по документу основанию?";

Если КоличествоСтрок() <> 0 Тогда

ТекстВопроса = ТекстВопроса + РазделительСтрок +" (перед заполнением табличная часть будет очищена)";

КонецЕсли;

Если Вопрос(ТекстВопроса, "Да+Нет", 60) <> "Да" Тогда

Возврат;

КонецЕсли;

УдалитьСтроки();

Результат = ЗаполнениеПоДокументуОснованию();

Если ПустоеЗначение(Результат) = 0 Тогда

Предупреждение(Результат, 60);

КонецЕсли;

СтарыйКонтрагент = Контрагент;

СтарыйДоговор = Договор;

КонецЕсли;

КонецПроцедуры //ПоКнопкеОснование()

//************

// ПоКнопкеЗаполнить()

//

// Параметры:

// Нет

// Возвращаемое значение:

// Нет

// Описание:

// Вызывается по кнопке "Заполнить".

// Производит выбор способа заполнения и непосредственно заполнение документа

//

Процедура ПоКнопкеЗаполнить()

Если КоличествоСтрок() <> 0 Тогда

Если Вопрос(ВопросПередЗаполнением, "Да+Нет", 60) <> "Да" Тогда

Возврат;

КонецЕсли;

КонецЕсли;

Результат = ЗаполнениеПоДокументуОснованию();

Если ПустоеЗначение(Результат) = 0 Тогда

Сообщить(Результат);

СтатусВозврата(0);

КонецЕсли;

КонецПроцедуры //ПоКнопкеЗаполнить()

//

// ПоКнопкеПодбор()

// Параметры:

// Нет

// Возвращаемое значение:

// Нет

// Описание:

Процедура ПоКнопкеПодбор()

Параметры = СоздатьОбъект("СписокЗначений");

Параметры. ДобавитьЗначение(Фирма, "Фирма");

//Параметры. ДобавитьЗначение(Склад, "Склад");

//Параметры. ДобавитьЗначение(ТипЦен, "ТипЦен");

//Параметры. ДобавитьЗначение(Валюта, "Валюта");

//Параметры. ДобавитьЗначение(Курс, "Курс");

Если Выбран() = 0 Тогда

Параметры. ДобавитьЗначение("Дата", "ТипГраницы");

Параметры. ДобавитьЗначение(ДатаДок, "ЗначениеГраницы");

Иначе

Параметры. ДобавитьЗначение("Позиция", "ТипГраницы");

Параметры. ДобавитьЗначение(ПолучитьПозицию(), "ЗначениеГраницы");

КонецЕсли;

Параметры. ДобавитьЗначение("Подбор номенклатуры в документ " + ПредставлениеВида() + " № " + НомерДок, "Заголовок");

глПодбор(Контекст, Параметры);

КонецПроцедуры // ПоКнопкеПодбор()

Процедура Печать(Вид, СразуНаПринтер = 0,КолЭкз = 1)

Если Вид = 1 Тогда

НомерФормы = "Типовая межотраслевая форма № М-2";

ОКУД = "0315001";

Иначе

НомерФормы = "Типовая межотраслевая форма № М-2а";

ОКУД = "0315002";

КонецЕсли;

ОргПлательщик = "";

БанкРекв="";

глДобавитьРеквизит(ОргПлательщик, "", Фирма. ЮрЛицо. ПолнНаименование);

глДобавитьРеквизит(ОргПлательщик, "", ?(ПустоеЗначение(Фирма. ЮрЛицо. ИНН)=0, ", ИНН " + СокрЛП(Фирма. ЮрЛицо. ИНН), ""));

глДобавитьРеквизит(ОргПлательщик, ", ", глПредставлениеАдреса(Фирма. ЮрЛицо. ЮрАдрес) );

РС = БанковскийСчет;

Банк = "";НомерСчета = "";БИКБанка = "";СчетБанка = "";

глПлатежныеРеквизиты(БанковскийСчет, , Банк, НомерСчета, БИКБанка, СчетБанка);

глДобавитьРеквизит(БанкРекв, "Счет № ", НомерСчета);

глДобавитьРеквизит(БанкРекв," в ",Банк);

глДобавитьРеквизит(БанкРекв,", БИК ",БИКБанка);

глДобавитьРеквизит(БанкРекв,", корр. сч. ",СчетБанка);

Список = глРазложитьДокУдостоверяющийЛичность(ДоверенноеЛицо. ДокументУдЛичность);

ДокументВид = ?(0 < Список. РазмерСписка(), Список. ПолучитьЗначение(1), "");

ДокументСерия = ?(1 < Список. РазмерСписка(), Список. ПолучитьЗначение(2), "");

ДокументНомер = ?(2 < Список. РазмерСписка(), Список. ПолучитьЗначение(3), "");

ДокументДатаВыдачи = ?(3 < Список. РазмерСписка(), СокрЛ(Список. ПолучитьЗначение(4)), "");

ДокументКемВыдан = ?(4 < Список. РазмерСписка(), Список. ПолучитьЗначение(5), "");

// контрагент

Если ПустоеЗначение(Контрагент) = 0 Тогда

Если Контрагент. ЮрФизЛицо. Выбран() = 1 Тогда

ПоставщикНаим = Контрагент. ЮрФизЛицо. ПолнНаименование;

КонецЕсли;

Иначе

ПоставщикНаим = "";

КонецЕсли;

Таб = СоздатьОбъект("Таблица");

Если Вид = 1 Тогда

Таб. ВывестиСекцию("ШапкаМ2");

КонецЕсли;

Таб. ВывестиСекцию("Шапка");

ВыбратьСтроки();

Ном=0;

Пока ПолучитьСтроку() = 1 Цикл

Ном=Ном+1;

Таб. ВывестиСекцию("Строка");

КонецЦикла;

Таб. ВывестиСекцию("Подвал");

Если СразуНаПринтер = 0 Тогда

Таб. Опции(0,0,0,0,"ОпцииПечатиДоверенности"+Вид,"ОпцииПечатиДоверенности"+Вид);

Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда

Таб. Защита(1);

Иначе

Таб. Защита(0);

КонецЕсли;

Таб. ТолькоПросмотр(1);

Таб. Показать(глНазваниеДокументаВжурнале(Контекст),"");

Иначе

Таб. ПараметрыСтраницы(,,,,,,,,,1,,);

Таб. КоличествоЭкземпляров(КолЭкз);

Таб. Напечатать(0);

КонецЕсли;

КонецПроцедуры // Печать()

// ПоКнопкеПечать()

// Параметры:

// Нет

// Описание:

// Вызывается по кнопке "Печать"

Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)

Если ПустоеЗначение(НомерТекущейФормы) = 1 Тогда

Форма. кнПечать. Заголовок(ТаблицаПечФорм. ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));

НомерТекущейФормы = 1;

КонецЕсли;

Если НомерТекущейФормы = 1 Тогда

Печать(1, СразуНаПринтер, КолЭкз);

ИначеЕсли НомерТекущейФормы = 2 Тогда

Печать(2, СразуНаПринтер, КолЭкз);

Иначе

Параметры = СоздатьОбъект("СписокЗначений");

Параметры. ДобавитьЗначение(глВзятьКонтекст(Контекст), "Контекст");

Параметры. ДобавитьЗначение(СразуНаПринтер, "Устройство");

Параметры. ДобавитьЗначение(КолЭкз, "КоличествоКопий");

ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм. ПолучитьЗначение(НомерТекущейФормы,"Файл"));

КонецЕсли;

КонецПроцедуры // ПоКнопкеПечать()

// ПоКнопкеВыборПечатнойФормы()

// Параметры:

// нет.

// Возвращаемое значение:

// нет.

// Описание:

// - открывает список для выбора способа печати.

Процедура ПоКнопкеВыборПечатнойФормы()

ВыбНомер = глВыборПечатнойФормы("Документ." + Вид(), ТаблицаПечФорм);

Если ВыбНомер > 0 Тогда

НомерТекущейФормы = ВыбНомер;

Форма. кнПечать. Заголовок(ТаблицаПечФорм. ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));

ПоКнопкеПечать();

КонецЕсли;

КонецПроцедуры // ПоКнопкеВыборПечатнойФормы()

Процедура ВводНового(Скопирован)

глЗаполнитьШапку(Контекст, Скопирован, "Покупка");

ДатаДействия = ДатаДок + 10;

КонецПроцедуры //ВводНового()

// предопределенная процедура

Процедура ПриОткрытии()

// Заполним таблицу для выбора печатной формы

НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм);

Парам = Форма. Параметр;

Если ТипЗначенияСтр(Парам)="СписокЗначений" Тогда

Если ПустоеЗначение(Парам. Получить("Команда"))=1 Тогда

Сообщить("В форму документа "+Вид()+" передан неверный параметр!","I");

СтатусВозврата(0);Возврат;

КонецЕсли;

Если Парам. Получить("Команда") = "ПечатьНаПринтер" Тогда

КолЭкз = Макс(Число(Парам. Получить("КолЭкз")),1);

ПоКнопкеПечать(1, КолЭкз);

СтатусВозврата(0);Возврат;

ИначеЕсли Парам. Получить("Команда") = "ПечатьНаЭкран" Тогда

ПоКнопкеПечать(0);

СтатусВозврата(0);Возврат;

Иначе

Сообщить("В форму документа "+Вид()+" передана неверная команда "+Парам. Получить("Команда")+"!","I");

СтатусВозврата(0);Возврат;

КонецЕсли;

КонецЕсли;

// инициализация модульных переменных, контролирующих выполнение

// пересчетов и обновление надписей в форме

СтараяФирма = Фирма;

СтарыйКонтрагент = Контрагент;

СтарыйДоговор = Договор;

НачальнаяДатаДокумента = ДатаДок;

Форма. Количество. ВыполнятьФормулуТолькоПриИзменении(1);

глПроверкаРазрешенияРедактирования(Контекст);

// если дата проведенного документа больше ТА, то открываем только на просмотр,

// так как его все равно не удастся сохранить после редактирования.

Если (Проведен() = 1) И (ДатаДок > ПолучитьДатуТА()) Тогда

Форма. ТолькоПросмотр(1);

КонецЕсли;

//Инициализирум список действий по кнопке "Действия"

СписокДействий = СоздатьОбъект("СписокЗначений");

СписокДействий. ДобавитьЗначение("Структура подчиненности");

// Если открыли только на просмотр, то надо кнопки сделать недоступными

Если Форма. ТолькоПросмотр()=1 Тогда

// СДЕЛАТЬ НЕДОСТУПНЫМИ КНОПКИ МОДИФИКАЦИИ ДОКУМЕНТА

Форма. кнОК. Доступность(0);

Форма. кнХОснование. Доступность(0);

Форма. кнХПроект. Доступность(0);

Форма. кнЗаписать. Доступность(0);

Форма. кнЗаполнить. Доступность(0);

Форма. кнПодбор. Доступность(0);

Если ПустоеЗначение(ДокОснование) = 1 Тогда

// только если документ основание отсутствует

Форма. кнОснование. Доступность(0);

КонецЕсли;

Иначе

СписокДействий. ДобавитьЗначение("Добавить из документа");

КонецЕсли;

СписокДействий. ДобавитьЗначение("Перейти в журнал");

// кнопка по умолчанию

Если (Форма. ТолькоПросмотр() = 1) ИЛИ ((ДатаДок < Макс(РабочаяДата(), ПолучитьДатуТА()) ) И (Выбран() = 1)) Тогда

Форма. КнопкаПоУмолчанию("кнЗакрыть");

Иначе

Форма. КнопкаПоУмолчанию("кнОК");

КонецЕсли;

Форма. ИспользоватьЗакладки(1);

Форма. Закладки. ДобавитьЗначение("Шапка");

Форма. Закладки. ДобавитьЗначение("Табличная часть");

Если Выбран() = 0 Тогда

глАктивизироватьРеквизит(Контекст);

Форма. Закладки. ТекущаяСтрока(1);

Форма. ИспользоватьСлой("Шапка, Основной, Подвал");

Иначе

// введенный документ открываем на второй закладке

Форма. Закладки. ТекущаяСтрока(2);

Форма. ИспользоватьСлой("Шапка, ТабличнаяЧасть, Подвал");

КонецЕсли;

ОбновитьНадписи();

КонецПроцедуры //ПриОткрытии()

//

// предопределенная процедура

Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)

Если НомерЗакладки=1 Тогда

Форма. ИспользоватьСлой("Шапка, Основной, Подвал");

Иначе

ОбновитьНадписи();

Форма. ИспользоватьСлой("Шапка, ТабличнаяЧасть, Подвал");

КонецЕсли;

КонецПроцедуры

//

// Предопределенная процедура

//

Процедура ПриНачалеВыбораЗначения(ЭлементДиалога, ФлагСтандОбр)

Если ЭлементДиалога="БанковскийСчет" Тогда

ЮрФизЛицо = Фирма. ЮрЛицо;

ОткрытьФорму("Справочник. БанковскиеСчета. ФормаСписка", ЮрФизЛицо);

ФлагСтандОбр = 0;

ИначеЕсли ЭлементДиалога="НаименованиеТМЦ" Тогда

ФлагСтандОбр = 0;

ОткрытьПодбор("Справочник. Номенклатура", , 0);

КонецЕсли;

КонецПроцедуры // ПриНачалеВыбораЗначения()

//

// Предопределенная процедура.

//

Процедура ОбработкаВыбораЗначения(ВыбЗнач, ЭлементДиалога, ФлагСтандОбр)

Если ЭлементДиалога="НаименованиеТМЦ" Тогда

ФлагСтандОбр = 0;

НаименованиеТМЦ = ВыбЗнач. ПолнНаименование+ " " + ?(Константа. ПоказыватьАртикул = 1, ВыбЗнач. Артикул,"");

ОКЕИ = ВыбЗнач. ОсновнаяЕдиница. ОКЕИ;

КонецЕсли;

КонецПроцедуры // ОбработкаВыбораЗначения()

Процедура ПриЗаписи()

Если глМожноЗаписатьДокумент(Контекст)=0 Тогда

СтатусВозврата(0);

ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента)=1 Тогда

СтатусВозврата(0);

КонецЕсли;

КонецПроцедуры //ПриЗаписи()

Процедура ОбработкаПодбора(ВыбЗнач, КонтФормыПодбора)

Перем ТаблЧасть, ТаблицаПодбора;

ТипЗнач = ТипЗначенияСтр(ВыбЗнач);

Если ТипЗнач = "СписокЗначений" Тогда

ТаблицаПодбора = ВыбЗнач. Получить("ТаблицаПодбора");

Иначе

// если не список ничего не делаем

Возврат;

КонецЕсли;

Если ТипЗначенияСтр(ТаблицаПодбора) = "ТаблицаЗначений" Тогда

ВыгрузитьТабличнуюЧасть(ТаблЧасть, "НаименованиеТМЦ, НомерСтроки");

ТаблицаПодбора. ВыбратьСтроки();

Пока ТаблицаПодбора. ПолучитьСтроку() = 1 Цикл

НаимТМЦ = СокрЛП(ТаблицаПодбора. Номенклатура. ПолнНаименование)+ " " + ?(Константа. ПоказыватьАртикул = 1, ТаблицаПодбора. Номенклатура. Артикул ,"");

НомерСтрокиДокумента = 0;

ТаблЧасть. ВыбратьСтроки();

Пока ТаблЧасть. ПолучитьСтроку() = 1 Цикл

Если НаимТМЦ = СокрЛП(ТаблЧасть. НаименованиеТМЦ) Тогда

НомерСтрокиДокумента = ТаблЧасть. НомерСтрокиДокумента;

Прервать;

КонецЕсли;

КонецЦикла;

Если НомерСтрокиДокумента <> 0 Тогда

// есть такой товар. увеличим количество

ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента);

Количество = Количество + ТаблицаПодбора. Количество;

Иначе

// нет выбранного товара. добавим строку.

НоваяСтрока();

НаименованиеТМЦ = НаимТМЦ;

ОКЕИ = ТаблицаПодбора. Единица. ОКЕИ;

Количество = ТаблицаПодбора. Количество;

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры // ОбработкаПодбора()

////////////////////////////////////////////////////////////////////////////////

// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ

//

// формируем таблицу печатных форм

НомерТекущейФормы = 0;

ТаблицаПечФорм = СоздатьОбъект("ТаблицаЗначений");

ТаблицаПечФорм. НоваяКолонка("Название","Строка",,,,30);

ТаблицаПечФорм. НоваяКолонка("Файл","Строка",,,"Файл",10);

ТаблицаПечФорм. НоваяКолонка("Кнопка","Строка",,,,10);

ТаблицаПечФорм. НоваяКолонка("ФайлОписания","Строка");

ТаблицаПечФорм. НоваяСтрока();

ТаблицаПечФорм. Название = "Печатная форма М-2";

ТаблицаПечФорм. Кнопка = "М-2";

ТаблицаПечФорм. НоваяСтрока();

ТаблицаПечФорм. Название = "Печатная форма М-2а";

ТаблицаПечФорм. Кнопка = "М-2а";

ВопросПередЗаполнением = "Заполнить по дукументу - основанию (перед заполнением табличная часть будет очищена)?";
Приложение B

Модули формирования отчетов

6. Процедура формирования Материального отчета

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4