Приложение А
Модули формирования документов
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 |


