Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
намсарай_диплом_.docx
Скачиваний:
83
Добавлен:
11.04.2015
Размер:
1.83 Mб
Скачать

Список использованных источников

  1. Митичкин С.А. Разработка в системе 1С:Предприятие 8.1, - М.: ООО «1С-Паблишинг», 2003. – 413 с.: ил.

  2. Габец А.П., Гончаров Д.И., Козырев Д.В., Кухлевский Д.С., Радченко М.Г. Профессиональная разработка в системе 1С:Предприятие 8 (+CD) / Под ред. Радченко М.Г. – М.: «1С-Паблишинг»; СПб.: Питер, 2007. – 808 с .:ил.

  3. Радченко М.Г. 1С:Предприятие 8.1 Практическое пособие разработчика

  4. Митичкин С.А. Разработка в системе 1С:Предприятие 8.1, - М.: ООО «1С-Паблишинг», 2003. – 413 с.: ил.

  5. 1С:Предприятие 8.1 Описание встроенного языка часть 1, - Москва, Фирма «1С», 2003

  6. 1С:Предприятие 8.1 Описание встроенного языка часть 2, - Москва, Фирма «1С», 2003

  7. 1С:Предприятие 8.1 Конфигурирование и администрирование, - Москва, Фирма «1С», 2003

  8. Вендров А.М. CASE технологии Современные методы и средства проектирования информационных систем  М.: Финансы и статистика, 1998. - 176 с.: ил.;

  9. Методология функционального моделирования IDEF0, Руководящий документ, Госстандарт России.;

  10. Диго С.М. Проектирование и использование баз данных  Учебник. М.: Финансы и статистика. 1995 г;

  11. Основы построения баз данных  под ред. А.Д. Хомоненко Санкт-Петербург, 2004;

  12. ГОСТ Р ИСО/МЭК 12207-99, Руководящий документ, Госстандарт России,  Москва, 2004;

Приложение а. Листинг программного кода

Документ.ПКО.МодульОбъекта

Процедура ОбработкаПроведения(Отказ, Режим)

Если Фирма.Пустая() Тогда

Предупреждение("Заполните фирму!", 60, "Проведение.");

Отказ = истина;

Возврат;

КонецЕсли;

Если Контрагент.Пустая() Тогда

Предупреждение("Заполните контрагента!", 60, "Проведение.");

Отказ = истина;

Возврат;

КонецЕсли;

Если Касса.Пустая() Тогда

Предупреждение("Заполните кассу!", 60, "Проведение.");

Отказ = истина;

Возврат;

КонецЕсли;

// регистр Взаиморасчеты Приход

Движение = Движения.Взаиморасчеты.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Фирма = Фирма;

Движение.Контрагент = Контрагент;

Движение.Сделка = ЭтотОбъект.Ссылка;

Движение.Сумма = ЭтотОбъект.Сумма;

Движение = Движения.Касса.Добавить();

Движение.ВидДвижения= ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Фирма = Фирма;

Движение.Касса = Касса;

Движение.Сумма = ЭтотОбъект.Сумма;

Движение.КодОперации= Перечисления.КодыОпераций.ПКО;

// регистр Основной

//Движение = Движения.Основной.Добавить();

//Движение.СчетДт = ПланыСчетов.Основной.ТоварыНаСкладах;

//Движение.СчетКт = ПланыСчетов.Основной.РасчетыСПоставщикамиВРублях;

//Движение.Период = Дата;

//Движение.Сумма = ТекСтрокаНоменклатура.Сумма;

//Движение.КоличествоДт = ТекСтрокаНоменклатура.Количество;

//Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаНоменклатура.Номенклатура;

//Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Контрагент;

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

Документ.ПКО.Форма.ФормаДокумента.Форма.Модуль

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

Если ЭтотОбъект.ЭтоНовый() Тогда

КодОперации = Перечисления.КодыОпераций.ПКО;

КонецЕсли;

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

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

ТабДок = Новый ТабличныйДокумент;

Макет = Документы.ПКО.ПолучитьМакет("МакетПКО");

// Заголовок

Область = Макет.ПолучитьОбласть("Заголовок");

Область.Параметры.ПКОСтрока = "ПКО № " + ЭтотОбъект.Номер +

Формат(ЭтотОбъект.Дата, "ДФ='дд ММММ гггг'");

Область.Параметры.Фирма = ЭтотОбъект.Фирма.Наименование;

Область.Параметры.РеквизитыФирмы= "ИНН " + ЭтотОбъект.Фирма.ИНН +

" КПП " + ЭтотОбъект.Фирма.КПП +

" Юр.адрес " + ЭтотОбъект.Фирма.ЮридическийАдрес;

Область.Параметры.Касса = ЭтотОбъект.Касса.Наименование;

Область.Параметры.Контрагент = ЭтотОбъект.Контрагент.Наименование;

Область.Параметры.РеквизитыКонтрагента = "ИНН " + ЭтотОбъект.Контрагент.ИНН +

" КПП " + ЭтотОбъект.Контрагент.КПП;

Область.Параметры.Сумма = Формат(ЭтотОбъект.Сумма, "ЧЦ=15;ЧДЦ=2") + " ( "

+ ЧислоПрописью(ЭтотОбъект.Сумма, "L=ru_RU") + " ) руб.";;

ТабДок.Вывести(Область);

ТабДок.ОтображатьСетку = Ложь;

ТабДок.Защита = Ложь;

ТабДок.ТолькоПросмотр = Ложь;

ТабДок.ОтображатьЗаголовки = Ложь;

ТабДок.Показать();

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

Документ.ПриходПоБанку.Форма.ФормаДокумента.Форма.Модуль

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

Если ЭтотОбъект.ЭтоНовый() Тогда

КодОперации = Перечисления.КодыОпераций.ПриходПоБанку;

КонецЕсли;

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

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

ТабДок = Новый ТабличныйДокумент;

Макет = Документы.ПриходПоБанку.ПолучитьМакет("МакетПриходПоБанку");

// Заголовок

Область = Макет.ПолучитьОбласть("Заголовок");

Область.Параметры.ПриходПоБанкуСтрока = "Приход по банку № " + ЭтотОбъект.Номер +

Формат(ЭтотОбъект.Дата, "ДФ='дд ММММ гггг'");

Область.Параметры.Фирма = ЭтотОбъект.Фирма.Наименование;

Область.Параметры.РеквизитыФирмы= "ИНН " + ЭтотОбъект.Фирма.ИНН +

" КПП " + ЭтотОбъект.Фирма.КПП +

" Юр.адрес " + ЭтотОбъект.Фирма.ЮридическийАдрес;

Область.Параметры.БСФирма = ЭтотОбъект.Фирма.БанковскийСчет;

Область.Параметры.Контрагент = ЭтотОбъект.Контрагент.Наименование;

Область.Параметры.РеквизитыКонтрагента = "ИНН " + ЭтотОбъект.Контрагент.ИНН + " КПП " + ЭтотОбъект.Контрагент.КПП;

Область.Параметры.БСКонтрагент = ЭтотОбъект.Контрагент.БанковскийСчет;

Область.Параметры.Сумма = Формат(ЭтотОбъект.Сумма, "ЧЦ=15;ЧДЦ=2") + " ( "

+ ЧислоПрописью(ЭтотОбъект.Сумма, "L=ru_RU") + " ) руб.";;

ТабДок.Вывести(Область);

ТабДок.ОтображатьСетку = Ложь;

ТабДок.Защита = Ложь;

ТабДок.ТолькоПросмотр = Ложь;

ТабДок.ОтображатьЗаголовки = Ложь;

ТабДок.Показать();

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

Конфигурация.МодульПриложения

Перем глТекущийПользователь Экспорт;

Процедура ПриНачалеРаботыСистемы()

глТекущийПользователь = ИмяПользователя()

КонецПроцедуры // ПриНачалеРаботыСистемы()

ОбщаяФорма.РедактированиеДокументаУдостоверяющегоЛичность.Форма.Модуль

Процедура ЗаписатьИзменения()

ЗаписьИзНабора = НаборЗаписей[0];

// Если что-то поменяли тогда запишем

Если ДокументВидПриОткрытии <> ДокументВид ИЛИ

ДокументДатаВыдачиПриОткрытии <> ДокументДатаВыдачи ИЛИ

ДокументКемВыданПриОткрытии <> ДокументКемВыдан ИЛИ

ДокументКодПодразделенияПриОткрытии <> ДокументКодПодразделения ИЛИ

ДокументНомерПриОткрытии <> ДокументНомер ИЛИ

ДатаРегистрацииПоМестуЖительства <> ДатаРегистрацииПоМестуЖительстваПриОткрытии ИЛИ

Период <> ПериодПриОткрытии ИЛИ

ДокументСерияПриОткрытии <> ДокументСерия Тогда

ЗаписьИзНабора.ДокументВид = ДокументВид;

ЗаписьИзНабора.ДокументДатаВыдачи = ДокументДатаВыдачи;

ЗаписьИзНабора.ДокументКемВыдан = ДокументКемВыдан;

ЗаписьИзНабора.ДокументКодПодразделения = ДокументКодПодразделения;

ЗаписьИзНабора.ДокументНомер = ДокументНомер;

ЗаписьИзНабора.ДокументСерия = ДокументСерия;

ЗаписьИзНабора.ДатаРегистрацииПоМестуЖительства = ДатаРегистрацииПоМестуЖительства;

ЗаписьИзНабора.Период = Период;

КонецЕсли;

Модифицированность = Ложь;

Оповестить("ОбновитьУдостоверениеЛичности");

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

Процедура ПодтвердитьИзменения(Кнопка)

ЗаписатьИзменения();

Закрыть();

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

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

Если НаборЗаписей.Количество() = 0 тогда

НаборЗаписей.Добавить();

ЗаписьИзНабора = НаборЗаписей[0];

ЗаписьИзНабора.ФизЛицо = ФизЛицоПриОткрытии;

ЗаписьИзНабора.Период = ПериодПриОткрытии;

КонецЕсли;

ЗаписьИзНабора = НаборЗаписей[0];

ДокументВид = ЗаписьИзНабора.ДокументВид;

ДокументДатаВыдачи = ЗаписьИзНабора.ДокументДатаВыдачи;

ДокументКемВыдан = ЗаписьИзНабора.ДокументКемВыдан;

ДокументКодПодразделения = ЗаписьИзНабора.ДокументКодПодразделения;

ДокументНомер = ЗаписьИзНабора.ДокументНомер;

ДокументСерия = ЗаписьИзНабора.ДокументСерия;

ДатаРегистрацииПоМестуЖительства = ЗаписьИзНабора.ДатаРегистрацииПоМестуЖительства;

Период = ?(НЕ ЗначениеЗаполнено(ЗаписьИзНабора.Период), '19000101', ЗаписьИзНабора.Период);

ФизЛицо = ЗаписьИзНабора.Физлицо;

Если НЕ ЗначениеЗаполнено(ФизЛицо) тогда

ИндКнопки = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Индекс(ЭлементыФормы.ОсновныеДействияФормы.Кнопки.КнопкаИстория);

ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Удалить(ИндКнопки);

ИндКнопки = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Индекс(ЭлементыФормы.ОсновныеДействияФормы.Кнопки.РазделительИстория);

ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Удалить(ИндКнопки);

КонецЕсли;

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

Процедура КнопкаИсторияНажатие(Элемент)

ФормаРегистра = РегистрыСведений.ПаспортныеДанныеФизЛиц.ПолучитьФормуСписка();

ФормаРегистра.РегистрСведенийСписок.Отбор.ФизЛицо.Значение = ФизЛицо;

ФормаРегистра.РегистрСведенийСписок.Отбор.ФизЛицо.ВидСравнения = ВидСравнения.Равно;

ФормаРегистра.РегистрСведенийСписок.Отбор.ФизЛицо.Использование = Истина;

ФормаРегистра.ЭлементыФормы.РегистрСведенийСписок.НачальноеОтображениеСписка = НачальноеОтображениеСписка.Конец;

ФормаРегистра.Открыть();

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

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)

Если Модифицированность Тогда

ОтветНаВопрос = Вопрос("Данные были изменены. Сохранить изменения?", РежимДиалогаВопрос.ДаНетОтмена);

Если ОтветНаВопрос = КодВозвратаДиалога.Да Тогда

ЗаписатьИзменения();

ИначеЕсли ОтветНаВопрос = КодВозвратаДиалога.Отмена Тогда

Отказ = Истина;

КонецЕсли;

КонецЕсли;

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

ОбщаяФорма.РедактированиеСемейногоПоложения.Форма.Модуль

Процедура ЗаписатьИзменения()

ЗаписьИзНабора = НаборЗаписей[0];

// Если что-то поменяли тогда запишем

Если СемейноеПоложениеПриОткрытии <> СемейноеПоложение ИЛИ

Период <> ПериодПриОткрытии Тогда

ЗаписьИзНабора.СемейноеПоложение= СемейноеПоложение;

ЗаписьИзНабора.Период = Период;

КонецЕсли;

Модифицированность = Ложь;

Оповестить("ОбновитьСемейноеПоложение");

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

Процедура ПодтвердитьИзменения(Кнопка)

ЗаписатьИзменения();

Закрыть();

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

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

Если НаборЗаписей.Количество() = 0 тогда

НаборЗаписей.Добавить();

ЗаписьИзНабора = НаборЗаписей[0];

ЗаписьИзНабора.ФизЛицо = ФизЛицоПриОткрытии;

ЗаписьИзНабора.Период = ПериодПриОткрытии;

КонецЕсли;

ЗаписьИзНабора = НаборЗаписей[0];

СемейноеПоложение = ЗаписьИзНабора.СемейноеПоложение;

Период = ?(НЕ ЗначениеЗаполнено(ЗаписьИзНабора.Период), '19000101', ЗаписьИзНабора.Период);

ФизЛицо = ЗаписьИзНабора.Физлицо;

Если НЕ ЗначениеЗаполнено(ФизЛицо) тогда

ИндКнопки = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Индекс(ЭлементыФормы.ОсновныеДействияФормы.Кнопки.КнопкаИстория);

ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Удалить(ИндКнопки);

ИндКнопки = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Индекс(ЭлементыФормы.ОсновныеДействияФормы.Кнопки.РазделительИстория);

ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Удалить(ИндКнопки);

КонецЕсли;

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

Процедура КнопкаИсторияНажатие(Элемент)

ФормаРегистра = РегистрыСведений.СемейноеПоложение.ПолучитьФормуСписка();

ФормаРегистра.РегистрСведенийСписок.Отбор.ФизЛицо.Значение = ФизЛицо;

ФормаРегистра.РегистрСведенийСписок.Отбор.ФизЛицо.ВидСравнения = ВидСравнения.Равно;

ФормаРегистра.РегистрСведенийСписок.Отбор.ФизЛицо.Использование = Истина;

ФормаРегистра.ЭлементыФормы.РегистрСведенийСписок.НачальноеОтображениеСписка = НачальноеОтображениеСписка.Конец;

ФормаРегистра.Открыть();

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

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)

Если Модифицированность Тогда

ОтветНаВопрос = Вопрос("Данные были изменены. Сохранить изменения?", РежимДиалогаВопрос.ДаНетОтмена);

Если ОтветНаВопрос = КодВозвратаДиалога.Да Тогда

ЗаписатьИзменения();

ИначеЕсли ОтветНаВопрос = КодВозвратаДиалога.Отмена Тогда

Отказ = Истина;

КонецЕсли;

КонецЕсли;

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

ОбщаяФорма.ФормаРедактированияТекста.Форма.Модуль

Процедура ОсновныеДействияФормыОК(Кнопка)

Закрыть(Истина);

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

Процедура УстановитьРедактируемыйТекст(ИсходныйТекст) Экспорт

Если ТипЗнч("ИсходныйТекст") = Тип("Строка") Тогда

ЭлементыФормы.ПолеТекстовогоДокументаДляРедактирования.УстановитьТекст(ИсходныйТекст);

Иначе

ЭлементыФормы.ПолеТекстовогоДокументаДляРедактирования.УстановитьТекст("");

КонецЕсли;

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

Функция ПолучитьРедактируемыйТекст() Экспорт

Возврат

ЭлементыФормы.ПолеТекстовогоДокументаДляРедактирования.ПолучитьТекст();

КонецФункции

ОбщийМодуль.ОбщийМодуль1.Модуль

Функция обПолучитьСписокСотрудников(СписокСостояний, НаДату) Экспорт

// подготовить запрос на выботку тех которые по основному месту работы и временно не работающих

Запрос = Новый Запрос;

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

"ВЫБРАТЬ

| Сотрудники.ФизЛицо КАК ФизЛицо,

| Сотрудники.Состояние КАК Состояние

|ИЗ

| РегистрСведений.Сотрудники.СрезПоследних(&ВыбДата) КАК Сотрудники

|ГДЕ

| Состояние В (&СписокСостояний)

|

|";

Запрос.УстановитьПараметр("СписокСостояний", СписокСостояний);

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

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

сзРаботающие = Новый СписокЗначений; // сформировать список значений работающих

Пока Выборка.Следующий() Цикл

сзРаботающие.Добавить(Выборка.ФизЛицо);

КонецЦикла;

Возврат сзРаботающие;

КонецФункции

Процедура обУстановитьШиринуКолонокОтчета(Макет, ИскСтрока, Ширина, Формат = "") Экспорт

ТекущаяОбласть = Неопределено;

Пока Истина Цикл

ТекущаяОбласть = Макет.НайтиТекст(ИскСтрока, ТекущаяОбласть, Макет.Область(), Истина, Истина, Истина, Истина);

Если ТекущаяОбласть <> Неопределено Тогда

ТекущаяОбласть.ШиринаКолонки = Ширина;

Если ПустаяСтрока(Формат) = 0 Тогда

ТекущаяОбласть.Формат = Формат;

КонецЕсли;

Иначе

Прервать;

КонецЕсли;

КонецЦикла;

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

Процедура обПолучитьИзОтбораПериод(Построитель, ДатаС, ДатаПо) Экспорт

Для Й = 0 По Построитель.Отбор.Количество()-1 Цикл

ПолеОтбора = Построитель.Отбор[Й];

Если Не ПолеОтбора.Использование Тогда

Продолжить;

КонецЕсли;

Если ПолеОтбора.ПутьКДанным = "НачалоПериода" Тогда

ДатаС = ПолеОтбора.Значение;

КонецЕсли;

Если ПолеОтбора.ПутьКДанным = "КонецПериода" Тогда

ДатаПо = ПолеОтбора.Значение;

КонецЕсли;

КонецЦикла;

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

Функция обСохранитьНастройки(Настройки) Экспорт

ИмяФайла = "";

ИмяПути = КаталогВременныхФайлов();

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);

Диалог.ПолноеИмяФайла = ИмяФайла;

Диалог.Каталог = ИмяПути;

Диалог.Заголовок = "Укажите файл для хранения настроек";

Диалог.Фильтр = "Файлы настроек (*.lst)|*.lst|Все файлы (*.*)|*.*";

Диалог.Расширение = "lst";

Если Диалог.Выбрать() Тогда

ИмяФайла = Диалог.ПолноеИмяФайла;

ИмяПути = Диалог.Каталог;

ЗначениеВФайл(ИмяФайла, Настройки);

КонецЕсли;

Возврат ИмяФайла;

КонецФункции

// получить настройки построителя отчета из файла

Функция обВосстановитьНастройки() Экспорт

Перем Настройки;

Настройки = Неопределено;

ИмяФайла = "";

ИмяПути = КаталогВременныхФайлов();

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

Диалог.ПроверятьСуществованиеФайла = Истина;

Диалог.ПолноеИмяФайла = ИмяФайла;

Диалог.Каталог = ИмяПути;

Диалог.Заголовок = "Укажите файл для хранения настроек";

Диалог.Фильтр = "Файлы настроек (*.lst)|*.lst|Все файлы (*.*)|*.*";

Диалог.Расширение = "lst";

Если Диалог.Выбрать() Тогда

ИмяФайла = Диалог.ПолноеИмяФайла;

ИмяПути = Диалог.Каталог;

Настройки = ЗначениеИзФайла(ИмяФайла);

КонецЕсли;

Возврат Настройки;

КонецФункции

ОбщийМодуль.УниверсальныеМеханизмы.Модуль

// Выводит сообщение об ошибке и выставляет параметр Отказ в "Истина".

// В случае работы на клиенте или на сервере выводит в окно сообщений,

// в случае внешнего соединения вызывает исключение.

//

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

// ТекстСообщения - строка, текст сообщения.

// Отказ - булево, признак отказа (необязательный).

//

Процедура СообщитьОбОшибке(ТекстСообщения, Отказ = Ложь, Заголовок = "", Статус = Неопределено) Экспорт

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

Статус = СтатусСообщения.Важное;

КонецЕсли;

НачалоСлужебногоСообщения = Найти(ТекстСообщения, "{");

ОкончаниеСлужебногоСообщения = Найти(ТекстСообщения, "}:");

Если ОкончаниеСлужебногоСообщения > 0 И НачалоСлужебногоСообщения > 0 Тогда

ТекстСообщения = Лев(ТекстСообщения, (НачалоСлужебногоСообщения - 1)) +

Сред(ТекстСообщения, (ОкончаниеСлужебногоСообщения + 2));

КонецЕсли;

Отказ = Истина;

#Если ВнешнееСоединение Тогда

Если ЗначениеЗаполнено(Заголовок) Тогда

ТекстСообщения = Заголовок + Символы.ПС + ТекстСообщения;

Заголовок = "";

КонецЕсли;

ВызватьИсключение (ТекстСообщения);

#Иначе

Если ЗначениеЗаполнено(Заголовок) Тогда

Сообщить(Заголовок);

Заголовок = "";

КонецЕсли;

Сообщить(ТекстСообщения, Статус);

#КонецЕсли

КонецПроцедуры // СообщитьОбОшибке()

// Формирует имя каталога для сохранения/чтения файлов. Для различных типов объектов возможны

// различные алгоритмы определения каталога.

//

// Параметры

// ОбъектФайла – Ссылка на объект данных, для которого прикрепляются файлы.

//

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

// Строка – каталог файлов для указанного объекта и пользователя.

Функция ПолучитьИмяКаталога() Экспорт

РабочийКаталог = КаталогВременныхФайлов();

// Так как при различных указаниях рабочего каталога возможно наличие или отсутствие

// последнего слеша, приведем строку каталога к унифицированному виду - без слеша на конце.

Если Прав(РабочийКаталог, 1) = "\" Тогда

РабочийКаталог = Лев(РабочийКаталог, СтрДлина(РабочийКаталог) - 1);

КонецЕсли;

Возврат РабочийКаталог;

КонецФункции // ПолучитьИмяКаталога()

// Проверяет наличие каталога на диске и предлагает создать, если каталога не существует.

//

// Параметры

// ИмяКаталога – Строка, содержащая путь к каталогу файла на диске.

//

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

// Булево – Истина, если каталог существует или создан, Ложь, если каталога нет.

//

Функция ПроверитьСуществованиеКаталога(ИмяКаталога) Экспорт

КаталогНаДиске = Новый Файл(ИмяКаталога);

Если КаталогНаДиске.Существует() Тогда

Возврат Истина;

Иначе

Ответ = Вопрос("Указанный каталог не существует. Создать каталог?", РежимДиалогаВопрос.ДаНет);

Если Ответ = КодВозвратаДиалога.Да Тогда

СоздатьКаталог(ИмяКаталога);

Возврат Истина;

Иначе

Возврат Ложь;

КонецЕсли;

КонецЕсли;

КонецФункции // ПроверитьСуществованиеКаталога()

// Формирует строку фильтра для диалога выбора картинки с типами файлов.

// Параметры

// Нет.

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

// Строка – фильтр по типам файлов для диалога выбора картинки.

// функция возвращает часть строки после последнего встреченного символа в строке

Функция ПолучитьЧастьСтрокиОтделеннойСимволом(Знач ИсходнаяСтрока, Знач СимволПоиска)

ПозицияСимвола = СтрДлина(ИсходнаяСтрока);

Пока ПозицияСимвола >= 1 Цикл

Если Сред(ИсходнаяСтрока, ПозицияСимвола, 1) = СимволПоиска Тогда

Возврат Сред(ИсходнаяСтрока, ПозицияСимвола + 1);

КонецЕсли;

ПозицияСимвола = ПозицияСимвола - 1;

КонецЦикла;

Возврат "";

КонецФункции

// Выделяет из имени файла его расширение (набор символов после последней точки).

//

// Параметры

// ИмяФайла – Строка, содержащая имя файла, неважно с именем каталога или без.

//

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

// Строка – расширение файла.

//

Функция ПолучитьРасширениеФайла(Знач ИмяФайла) Экспорт

Расширение = ПолучитьЧастьСтрокиОтделеннойСимволом(ИмяФайла, ".");

Возврат Расширение;

КонецФункции

Функция ЗначениеНеЗаполнено(Значение) Экспорт

Результат = Ложь;

ТипЗначения = ТипЗнч(Значение);

// Сначала примитивные типы

Если Значение = Неопределено Тогда

Результат = Истина;

ИначеЕсли Значение = NULL Тогда

Результат = Истина;

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

Если СокрЛП(Значение) = "" Тогда

Результат = Истина;

КонецЕсли;

ИначеЕсли ТипЗначения = Тип("Число") Тогда

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

Результат = Истина;

КонецЕсли;

ИначеЕсли ТипЗначения = Тип("Дата") Тогда

Если Значение = Дата('00010101') Тогда

Результат = Истина;

КонецЕсли;

ИначеЕсли ТипЗначения = Тип("Булево") Тогда

Результат = Ложь; // Булево будем считать не пустым

//Отдельное определение, так как конструкторов данного типа не существует

ИначеЕсли ТипЗначения = Тип("РежимПроведенияДокумента") Тогда

Если Значение = РежимПроведенияДокумента.Неоперативный или Значение = РежимПроведенияДокумента.Оперативный тогда

Результат = Ложь;

КонецЕсли;

// Для остальных будем считать значение пустым, если оно равно

// дефолтному значению своего типа

Иначе

Попытка

Если Значение = Новый(ТипЗначения) Тогда

Результат = Истина;

КонецЕсли;

Исключение

Результат = Ложь;

КонецПопытки;

КонецЕсли;

Возврат Результат;

КонецФункции // ЗначениеНеЗаполнено()

// Функция спрашивает пользователя записать ли объект, или нет, если он новый

// Параметры

// ФормаОбъекта - Форма объекта, из которой пытаются произвести действия

//

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

// Булево - Объект записан или нет

//

Функция ЗаписатьНовыйОбъектВФорме(ФормаОбъекта) Экспорт

Если ФормаОбъекта.ЭтоНовый() Тогда

Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(ФормаОбъекта.ЭтотОбъект.Ссылка)) Тогда

ТекстВопроса = "Для выполнения данной операции необходимо записать документ. Записать?";

Иначе // Справочник

ТекстВопроса = "Для выполнения данной операции необходимо записать элемент. Записать?";

КонецЕсли;

Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);

Если Ответ <> КодВозвратаДиалога.Да Тогда

Возврат Ложь;

Иначе

Попытка

Возврат ФормаОбъекта.ЗаписатьВФорме();

Исключение

Сообщить(СформироватьТекстСообщения(ОписаниеОшибки()));

Возврат Ложь;

КонецПопытки;

КонецЕсли;

Иначе

Возврат Истина;

КонецЕсли;

КонецФункции // ЗаписатьНовыйОбъектВФорме()

// Функция убирает из текста сообщения слущебную информацию

// Параметры

// ТекстСообщения, Строка, исходный текст сообщения//

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

// Строка

Функция СформироватьТекстСообщения(Знач ТекстСообщения) Экспорт

НачалоСлужебногоСообщения = Найти(ТекстСообщения, "{");

ОкончаниеСлужебногоСообщения = Найти(ТекстСообщения, "}:");

Если ОкончаниеСлужебногоСообщения > 0

И НачалоСлужебногоСообщения > 0

И НачалоСлужебногоСообщения < ОкончаниеСлужебногоСообщения Тогда

ТекстСообщения = Лев(ТекстСообщения, (НачалоСлужебногоСообщения - 1)) +

Сред(ТекстСообщения, (ОкончаниеСлужебногоСообщения + 2));

КонецЕсли;

Возврат СокрЛП(ТекстСообщения);

КонецФункции // ()

// Функция определяет, есть ли у объекта элементы в хранилище дополнительной информации

//

// Параметры

// Объект - СправочникСсылка, ДокументСсылка, объект для которого определяем наличие файлов

//

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

// Булево

//

Функция ЕстьДополнительнаяИнформация(Объект, ИмяСправочника = "ХранилищеДополнительнойИнформации") Экспорт

ЗначениеНайдено = Ложь;

Если ЗначениеЗаполнено(Объект) Тогда

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Объект", Объект);

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

|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1

| ХранилищеДополнительнойИнформации.Ссылка,

| ХранилищеДополнительнойИнформации.Объект

|ИЗ

| Справочник." + ИмяСправочника + " КАК ХранилищеДополнительнойИнформации

|ГДЕ

| ХранилищеДополнительнойИнформации.Объект = &Объект

|";

ЗначениеНайдено = НЕ Запрос.Выполнить().Пустой();

КонецЕсли;

Возврат ЗначениеНайдено;

КонецФункции

// Изменяет картинку у кнопки открытия формы списка файлов и изображений.

//

// Параметры

// ОбъектФайла - Ссылка на объект данных, для которого прикрепляются файлы.

// КнопкаОткрытияФайлов - Кнопка тулбара, по нажатию которой открывается

// форма списка файлов и изображений.

//

Процедура ПолучитьКартинкуКнопкиОткрытияФайлов(ОбъектФайла, СписокКнопокОткрытияФайлов) Экспорт

КартинкаКнопки = ?(ЕстьДополнительнаяИнформация(ОбъектФайла), БиблиотекаКартинок.ТолькоСкрепка, БиблиотекаКартинок.НевидимаяСкрепка);

Для каждого КнопкаОткрытияФайлов Из СписокКнопокОткрытияФайлов Цикл

КнопкаОткрытияФайлов.Значение.Отображение = ОтображениеКнопкиКоманднойПанели.НадписьКартинка;

КнопкаОткрытияФайлов.Значение.Картинка = КартинкаКнопки;

КонецЦикла;

КонецПроцедуры // ПолучитьКартинкуКнопкиОткрытияФайлов()

// Процедура открывает форму файлов и изображений по объекту отбора

//

Процедура ОткрытьФормуСпискаФайловИИзображений(СтруктураДляСпискаИзображений, СтруктураДляСпискаДополнительныхФайлов, ОбязательныеОтборы, ФормаВладелец, ИмяСправочника = "ХранилищеДополнительнойИнформации") Экспорт

ФормаФайлов = Справочники[ИмяСправочника].ПолучитьФорму("ФормаСпискаФайловИИзображений", ФормаВладелец);

// Изображения

Если СтруктураДляСпискаИзображений.Свойство("ОтборОбъектИспользование") Тогда

ФормаФайлов.Изображения.Отбор.Объект.Использование = СтруктураДляСпискаИзображений.ОтборОбъектИспользование;

ФормаФайлов.Изображения.Отбор.Объект.Значение = СтруктураДляСпискаИзображений.ОтборОбъектЗначение;

КонецЕсли;

Если СтруктураДляСпискаИзображений.Свойство("ДоступностьОтбораОбъекта") Тогда

ФормаФайлов.ЭлементыФормы.Изображения.НастройкаОтбора.Объект.Доступность = СтруктураДляСпискаИзображений.ДоступностьОтбораОбъекта;

КонецЕсли;

Если СтруктураДляСпискаИзображений.Свойство("ВидимостьКолонкиОбъекта") Тогда

ФормаФайлов.ЭлементыФормы.Изображения.Колонки.Объект.Видимость = СтруктураДляСпискаИзображений.ВидимостьКолонкиОбъекта;

КонецЕсли;

// Дополнительные файлы

Если СтруктураДляСпискаДополнительныхФайлов.Свойство("ОтборОбъектИспользование") Тогда

ФормаФайлов.ДополнительныеФайлы.Отбор.Объект.Использование = СтруктураДляСпискаДополнительныхФайлов.ОтборОбъектИспользование;

ФормаФайлов.ДополнительныеФайлы.Отбор.Объект.Значение = СтруктураДляСпискаДополнительныхФайлов.ОтборОбъектЗначение;

КонецЕсли;

Если СтруктураДляСпискаДополнительныхФайлов.Свойство("ДоступностьОтбораОбъекта") Тогда

ФормаФайлов.ЭлементыФормы.ДополнительныеФайлы.НастройкаОтбора.Объект.Доступность = СтруктураДляСпискаДополнительныхФайлов.ДоступностьОтбораОбъекта;

КонецЕсли;

Если СтруктураДляСпискаДополнительныхФайлов.Свойство("ВидимостьКолонкиОбъекта") Тогда

ФормаФайлов.ЭлементыФормы.ДополнительныеФайлы.Колонки.Объект.Видимость = СтруктураДляСпискаДополнительныхФайлов.ВидимостьКолонкиОбъекта;

КонецЕсли;

ФормаФайлов.ОбязательныеОтборы = ОбязательныеОтборы;

Если СтруктураДляСпискаИзображений.Свойство("ОтборОбъектИспользование") И СтруктураДляСпискаИзображений.Свойство("ОтборОбъектИспользование") Тогда

Если СтруктураДляСпискаИзображений.ОтборОбъектЗначение = СтруктураДляСпискаДополнительныхФайлов.ОтборОбъектЗначение Тогда

ФормаФайлов.Заголовок = "Хранилище дополнительной информации (" + СокрЛП(СтруктураДляСпискаИзображений.ОтборОбъектЗначение) + ")";

КонецЕсли;

КонецЕсли;

ФормаФайлов.Открыть();

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

// Сохранение на диск отмеченных файлов объекта.

//

// Параметры

// ОбъектФайла - Ссылка на объект данных, для которого прикрепляются файлы.

// ВыделенныеСтроки - ВыделенныеСтроки табличного поля со справочником дополнительной

// информации.

//

Процедура СохранитьФайлы(ОбъектФайла, ВыделенныеСтроки, ИмяКаталога = Неопределено, ИмяСправочника = "ХранилищеДополнительнойИнформации") Экспорт

Если ВыделенныеСтроки.Количество() = 0 Тогда

Возврат;

КонецЕсли;

ФормаСохраненияФайлов = Справочники[ИмяСправочника].ПолучитьФорму("ФормаСохраненияФайлов");

ФормаСохраненияФайлов.ИмяКаталога = ИмяКаталога;

ФормаСохраненияФайлов.ТолькоЧтение = Ложь;

Если ИмяКаталога = Неопределено Тогда

ИмяКаталога = ПолучитьИмяКаталога();

ФормаСохраненияФайлов.ОткрытьКаталог = Истина;

Иначе

ФормаСохраненияФайлов.ОткрытьКаталог = Ложь;

КонецЕсли;

СтруктураПараметров = ФормаСохраненияФайлов.ОткрытьМодально();

Если СтруктураПараметров = Неопределено Тогда

Возврат;

КонецЕсли;

Если Не ПроверитьСуществованиеКаталога(СтруктураПараметров.ИмяКаталога) Тогда

Возврат;

КонецЕсли;

СпособПерезаписи = "";

Для каждого СсылкаФайл из ВыделенныеСтроки Цикл

Состояние("Сохраняется файл: " + СсылкаФайл.ИмяФайла);

ИмяФайла = ПолучитьИмяФайла(СтруктураПараметров.ИмяКаталога, СсылкаФайл.ИмяФайла);

СохранитьФайлНаДиске(СсылкаФайл.Хранилище, ИмяФайла, СтруктураПараметров.ТолькоЧтение, СпособПерезаписи);

Если СпособПерезаписи = Неопределено Тогда

Прервать;

КонецЕсли;

КонецЦикла;

Если СтруктураПараметров.ОткрытьКаталог Тогда

ЗапуститьПриложение(СтруктураПараметров.ИмяКаталога);

КонецЕсли;

КонецПроцедуры // СохранитьФайлы()

// Сохраняет файл на диске.

//

// Параметры

// Хранилище – ХранилищеЗначения, которое содержит объект типа

// ДвоичныеДанные с файлом для записи на диск.

// ИмяФайла – Строка, содержащая полное имя файла.

// ТолькоЧтение – Булево, признак установки записываемому файлу атрибута ТолькоЧтение.

// СпособПерезаписи – Строка. Параметр определеляет способ перезаписи существующих

// файлов на диске. В зависимости от пришедшего параметра выдается или

// не выдается запрос на перезапись файлов. Может устанавливаться в теле

// функции, если это необходимо. Принимаемые значения:

// "" (пустая строка) - это означает, что диалог еще ни разу не задавался

// и при наличии существующего файла будет выдан диалог запроса перезаписи.

// ДА - предыдущий файл был перезаписан, но перезапись текущего надо

// запросить снова

// НЕТ - предыдущий файл не был перезаписан, но перезапись текущего надо

// запросить снова

// ДАДЛЯВСЕХ - предыдущий файл был перезаписан, и все последующие тоже

// надо перезаписывать.

// НЕТДЛЯВСЕХ - предыдущий файл не был перезаписан, и все последующие тоже

// не надо перезаписывать.

//

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

// Булево – Истина, если каталог выбран, Ложь, если нет.

//

Функция СохранитьФайлНаДиске(Хранилище, ИмяФайла, ТолькоЧтение, СпособПерезаписи, ВопросОПерезаписи = Истина, ИмяСправочника = "ХранилищеДополнительнойИнформации") Экспорт

Попытка

ФайлНаДиске = Новый Файл(ИмяФайла);

КаталогНаДиске = Новый Файл(ФайлНаДиске.Путь);

Если Не КаталогНаДиске.Существует() Тогда

СоздатьКаталог(ФайлНаДиске.Путь);

КонецЕсли;

Если ФайлНаДиске.Существует() И ВопросОПерезаписи = Истина Тогда

Если СпособПерезаписи = ""

ИЛИ Врег(СпособПерезаписи) = "ДА"

ИЛИ Врег(СпособПерезаписи) = "НЕТ" Тогда

ФормаЗапросаПерезаписиФайлов = Справочники[ИмяСправочника].ПолучитьФорму("ФормаЗапросаПерезаписиФайлов");

ФормаЗапросаПерезаписиФайлов.ТекстПредупреждения =

"На локальном диске уже существует файл:

|" + ИмяФайла + "

|Перезаписать имеющийся файл?";

СпособПерезаписи = ФормаЗапросаПерезаписиФайлов.ОткрытьМодально();

Если СпособПерезаписи = Неопределено

ИЛИ Врег(СпособПерезаписи) = "НЕТ"

ИЛИ Врег(СпособПерезаписи) = "НЕТДЛЯВСЕХ" Тогда

Возврат Ложь;

КонецЕсли;

ИначеЕсли Врег(СпособПерезаписи) = "НЕТДЛЯВСЕХ" Тогда

Возврат Ложь;

КонецЕсли;

// Если существующему файлу установлено ТолькоЧтение, отменим эту установку.

Если ФайлНаДиске.ПолучитьТолькоЧтение() Тогда

ФайлНаДиске.УстановитьТолькоЧтение(Ложь);

КонецЕсли;

КонецЕсли;

// Остались случаи когда:

// - пользователь ответил Да или ДаДляВсех в текущем диалоге

// - способ перезаписи уже пришел со значением ДаДляВсех

Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда

ДвоичныеДанные = Хранилище.Получить();

Иначе

ДвоичныеДанные = Хранилище;

КонецЕсли;

ДвоичныеДанные.Записать(ИмяФайла);

ФайлНаДиске.УстановитьТолькоЧтение(ТолькоЧтение);

Исключение

Предупреждение(ОписаниеОшибки());

Возврат Ложь;

КонецПопытки;

Возврат Истина;

КонецФункции // СохранитьФайлНаДиске()

// Сохранение на диск отмеченных файлов объекта и их открытие.

//

// Параметры

// ОбъектФайла - Ссылка на объект данных, для которого прикрепляются файлы.

// ВыделенныеСтроки - ВыделенныеСтроки табличного поля со справочником дополнительной

// информации.

//

Процедура ОткрытьФайлы(ОбъектФайла, ТекущийПользователь, ВыделенныеСтроки = Неопределено, ВопросОПерезаписи = Истина) Экспорт

Если ВыделенныеСтроки = Неопределено Тогда

ИмяКаталога = ПолучитьИмяКаталога();

ТолькоЧтение = Ложь;

СпособПерезаписи = "";

Состояние("Сохраняется файл: " + ОбъектФайла.ИмяФайла);

ИмяФайла = ПолучитьИмяФайла(ИмяКаталога, ОбъектФайла.ИмяФайла);

СохранитьФайлНаДиске(ОбъектФайла.Хранилище, ИмяФайла, Ложь, СпособПерезаписи, ВопросОПерезаписи);

Если СпособПерезаписи = Неопределено Тогда

Возврат;

КонецЕсли;

ОткрытьФайлДополнительнойИнформации(ИмяКаталога, ОбъектФайла.ИмяФайла);

Иначе

Если ВыделенныеСтроки.Количество() = 0 Тогда

Возврат;

КонецЕсли;

ИмяКаталога = ПолучитьИмяКаталога();

ТолькоЧтение = Ложь;

СпособПерезаписи = "";

Для каждого СсылкаФайл из ВыделенныеСтроки Цикл

Состояние("Сохраняется файл: " + СсылкаФайл.ИмяФайла);

ИмяФайла = ПолучитьИмяФайла(ИмяКаталога, СсылкаФайл.ИмяФайла);

СохранитьФайлНаДиске(СсылкаФайл.Хранилище, ИмяФайла, Ложь, СпособПерезаписи, ВопросОПерезаписи);

Если СпособПерезаписи = Неопределено Тогда

Прервать;

КонецЕсли;

ОткрытьФайлДополнительнойИнформации(ИмяКаталога, СсылкаФайл.ИмяФайла);

КонецЦикла;

КонецЕсли;

КонецПроцедуры // ОткрытьФайлы()

// Выбор файлов пользователем на диске и добавление их объекту.

//

// Параметры

// ОбъектФайла - Ссылка на объект данных, для которого прикрепляются файлы.

// ВидДанных - ПеречислениеСсылка.ВидыДополнительнойИнформацииОбъектов содержащая вид

// дополнительной информации объекта.

//

Процедура ДобавитьФайлы(ОбъектФайла, ТекущийПользователь, ВидДанных = Неопределено, ИмяСправочника = "ХранилищеДополнительнойИнформации") Экспорт

Если Не ОбъектФайла = Неопределено И ОбъектФайла.Пустая() Тогда

Предупреждение("Необходимо записать объект, которому принадлежит файл.");

Возврат;

КонецЕсли;

Диалог = ПолучитьДиалогВыбораФайлов(Истина);

Если Не Диалог.Выбрать() Тогда

Возврат;

КонецЕсли;

Для каждого ПолученноеИмяФайла Из Диалог.ВыбранныеФайлы Цикл

ПолученныйФайл = Новый Файл(ПолученноеИмяФайла);

Состояние("Добавляется файл: " + ПолученныйФайл.Имя);

НачатьТранзакцию();

Отказ = Ложь;

НовыйФайл = Справочники[ИмяСправочника].СоздатьЭлемент();

НовыйФайл.Объект = ОбъектФайла;

НовыйФайл.ИмяФайла = ПолученныйФайл.Имя;

Если ИмяСправочника = "ХранилищеДополнительнойИнформации" Тогда

НовыйФайл.ВидДанных = ВидДанных;

КонецЕсли;

Попытка

НовыйФайл.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПолученныйФайл.ПолноеИмя), Новый СжатиеДанных());

НовыйФайл.Записать();

Исключение

Предупреждение("Файл: " + ПолученныйФайл.ПолноеИмя + Символы.ПС + ОписаниеОшибки() + Символы.ПС + "Файл не добавлен.");

Отказ = Истина;

КонецПопытки;

Если Отказ Тогда

ОтменитьТранзакцию();

Иначе

ЗафиксироватьТранзакцию();

КонецЕсли;

КонецЦикла;

КонецПроцедуры // ДобавитьФайлы()

// Открывает переданный файл на диске с учетом типа файлов. Файлы, с которыми

// может работать 1С:Предприятие открываются в 1С:Предприятии. Остальные файлы

// пытаются открыться зарегистрированным для них в системе приложением.

//

// Параметры

// ИмяКаталога – Строка, содержащая путь к каталогу файла на диске.

// ИмяФайла – Строка, содержащая имя файла, без имени каталога.

//

Процедура ОткрытьФайлДополнительнойИнформации(ИмяКаталога, ИмяФайла) Экспорт

ПолноеИмяФайла = ПолучитьИмяФайла(ИмяКаталога, ИмяФайла);

РасширениеФайла = Врег(ПолучитьРасширениеФайла(ИмяФайла));

Если РасширениеФайла = "MXL" Тогда

ТабличныйДокумент = Новый ТабличныйДокумент;

ТабличныйДокумент.Прочитать(ПолноеИмяФайла);

ТабличныйДокумент.Показать(ИмяФайла, Лев(ИмяФайла, СтрДлина(ИмяФайла) - 4));

ИначеЕсли РасширениеФайла = "TXT" Тогда

ТекстовыйДокумент = Новый ТекстовыйДокумент;

ТекстовыйДокумент.Прочитать(ПолноеИмяФайла);

ТекстовыйДокумент.Показать(ИмяФайла, Лев(ИмяФайла, СтрДлина(ИмяФайла) - 4));

ИначеЕсли РасширениеФайла = "EPF" Тогда

ВнешняяОбработка = ВнешниеОбработки.Создать(ПолноеИмяФайла);

ВнешняяОбработка.ПолучитьФорму().Открыть();

Иначе

ЗапуститьПриложение(ПолноеИмяФайла);

КонецЕсли;

КонецПроцедуры // ОткрытьФайлДополнительнойИнформации()

// Создает и устанавливает реквизиты диалога выбора фала.

//

// Параметры

// МножественныйВыбор – Булево, признак множественного выбора.

// НачальныйКаталог – Строка, содержащая начальный каталог выбора файла.

//

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

// ДиалогВыбораФайлов – созданный диалог.

//

Функция ПолучитьДиалогВыбораФайлов(МножественныйВыбор, НачальныйКаталог = "") Экспорт

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

Диалог.Каталог = НачальныйКаталог;

Диалог.Заголовок = "Выберите файл...";

Диалог.Фильтр = ПолучитьФильтрФайлов();

Диалог.ПредварительныйПросмотр = Истина;

Диалог.ПроверятьСуществованиеФайла = Истина;

Диалог.МножественныйВыбор = МножественныйВыбор;

Возврат Диалог;

КонецФункции // ПолучитьДиалогВыбораФайлов()

// Формирует строку фильтра для диалога выбора файла с типами файлов.

//

// Параметры

// Нет.

//

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

// Строка – фильтр по типам файлов для диалога выбора файла.

//

Функция ПолучитьФильтрФайлов() Экспорт

Возврат "Все файлы (*.*)|*.*|"

+ "Документ Microsoft Word (*.doc)|*.doc|"

+ "Документ Microsoft Excell (*.xls)|*.xls|"

+ "Документ Microsoft PowerPoint (*.ppt)|*.ppt|"

+ "Документ Microsoft Visio (*.vsd)|*.vsd|"

+ "Письмо электронной почты (*.msg)|*.msg|"

+ "Картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|"

+ "Текстовый документ (*.txt)|*.txt|"

+ "Табличный документ (*.mxl)|*.mxl|";

КонецФункции // ПолучитьФильтрФайлов()

// Проверяет возможность измененния расширения в имени файла. Выдает запрос пользователю

// на смену расширения.

//

// Параметры

// ТекущееРасширение – Строка, содержащая текущее расширение файла, до изменения.

// НовоеРасширение – Строка, содержащая новое расширение файла, после изменения.

//

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

// Булево – Истина, если пользователь запретил изменение расширения, Ложь, если разрешил.

//

Функция НельзяИзменятьРасширение(ТекущееРасширение, НовоеРасширение) Экспорт

Если Не ПустаяСтрока(ТекущееРасширение) И Не НовоеРасширение = ТекущееРасширение Тогда

Ответ = Вопрос("Вы действительно хотите измерить расширение", РежимДиалогаВопрос.ДаНет);

Если Ответ = КодВозвратаДиалога.Да Тогда

Возврат Ложь;

Иначе

Возврат Истина;

КонецЕсли;

Иначе

Возврат Ложь;

КонецЕсли;

КонецФункции // НельзяИзменятьРасширение()

// Получает индекс пиктограммы файла из коллекции пиктограмм в зависимости от расширения файла.

//

// Параметры

// РасширениеФайла – Строка, содержащая расширение файла.

//

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

// Число – индекс пиктограммы в коллекции.

//

Функция ПолучитьИндексПиктограммыФайла(РасширениеФайла) Экспорт

РасширениеФайла = Врег(РасширениеФайла);

Если Найти(",1CD,CF,CFU,DT,", "," + РасширениеФайла + ",") > 0 Тогда

Возврат 1;

ИначеЕсли "MXL" = РасширениеФайла Тогда

Возврат 2;

ИначеЕсли "TXT" = РасширениеФайла Тогда

Возврат 3;

ИначеЕсли "EPF" = РасширениеФайла Тогда

Возврат 4;

ИначеЕсли Найти(",BMP,DIB,RLE,JPG,JPEG,TIF,GIF,PNG,ICO,WMF,EMF,", "," + РасширениеФайла + ",") > 0 Тогда

Возврат 5;

ИначеЕсли Найти(",HTM,HTML,MHT,", "," + РасширениеФайла + ",") > 0 Тогда

Возврат 6;

ИначеЕсли "DOC" = РасширениеФайла Тогда

Возврат 7;

ИначеЕсли "XLS" = РасширениеФайла Тогда

Возврат 8;

ИначеЕсли "PPT" = РасширениеФайла Тогда

Возврат 9;

ИначеЕсли "VSD" = РасширениеФайла Тогда

Возврат 10;

ИначеЕсли "MPP" = РасширениеФайла Тогда

Возврат 11;

ИначеЕсли "MDB" = РасширениеФайла Тогда

Возврат 12;

ИначеЕсли "XML" = РасширениеФайла Тогда

Возврат 13;

ИначеЕсли "MSG" = РасширениеФайла Тогда

Возврат 14;

ИначеЕсли Найти(",RAR,ZIP,ARJ,CAB,", "," + РасширениеФайла + ",") > 0 Тогда

Возврат 15;

ИначеЕсли Найти(",EXE,COM,,", "," + РасширениеФайла + ",") > 0 Тогда

Возврат 16;

ИначеЕсли "BAT" = РасширениеФайла Тогда

Возврат 17;

Иначе

Возврат 0;

КонецЕсли;

КонецФункции // ПолучитьИндексПиктограммыФайла()

// Составляет полное имя файла из имени каталога и имени файла.

//

// Параметры

// ИмяКаталога – Строка, содержащая путь к каталогу файла на диске.

// ИмяФайла – Строка, содержащая имя файла, без имени каталога.

//

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

// Строка – полное имя файла с учетом каталога.

//

Функция ПолучитьИмяФайла(ИмяКаталога, ИмяФайла) Экспорт

Если Не ПустаяСтрока(ИмяФайла) Тогда

Возврат ИмяКаталога + ?(Прав(ИмяКаталога, 1) = "\", "", "\") + ИмяФайла;

Иначе

Возврат ИмяКаталога;

КонецЕсли;

КонецФункции // ПолучитьИмяФайла()

// Процедура полное имя файла разбивает на путь в файлу и имя самого файла

//

// Параметры

// ПолноеИмяФайла – Строка, содержащая полное имя файла на диске.

// ИмяКаталога – Строка, содержащая путь к каталогу файла на диске.

// ИмяФайла – Строка, содержащая имя файла, без имени каталога.

//

Процедура ПолучитьКаталогИИмяФайла(Знач ПолноеИмяФайла, ИмяКаталога, ИмяФайла) Экспорт

// находим последний с конца "\" все что до него - это путь, после - имя

НомерПозиции = СтрДлина(ПолноеИмяФайла);

Пока НомерПозиции <> 0 Цикл

Если Сред(ПолноеИмяФайла, НомерПозиции, 1) = "\" Тогда

ИмяКаталога = Сред(ПолноеИмяФайла, 1, НомерПозиции - 1);

ИмяФайла = Сред(ПолноеИмяФайла, НомерПозиции + 1);

Возврат;

КонецЕсли;

НомерПозиции = НомерПозиции - 1;

КонецЦикла;

// так и не нашли слешей, значит все- это имя файла

ИмяФайла = ПолноеИмяФайла;

ИмяКаталога = "";

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

// Функция проверяет наличие в строке только цифр

//

// Параметры

// СтрокаПроверки - Строка для проверки только цифр

//

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

// Булево

Функция ЕстьНеЦифры(Знач СтрокаПроверки) Экспорт

СписокКодовЧисел = Новый СписокЗначений;

Для а = 48 По 57 Цикл

СписокКодовЧисел.Добавить(а);

КонецЦикла;

СтрокаПроверки = СокрЛП(СтрокаПроверки);

Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда

Возврат Истина;

Иначе

Для а = 1 По СтрДлина(СтрокаПроверки) Цикл

Если СписокКодовЧисел.НайтиПоЗначению(КодСимвола(Сред(СтрокаПроверки, а, 1))) = Неопределено Тогда

Возврат Истина;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат Ложь;

КонецФункции

// Функция проверяет наличие в строке только цифр

//

// Параметры

// СтрокаПроверки - Строка для проверки только цифр

//

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

// Булево

Функция ТолькоЦифрыВСтроке(Знач СтрокаПроверки, УчитыватьЛидирующиеНули = Истина, УчитыватьПробелы = Истина) Экспорт

Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда

Возврат Ложь;

КонецЕсли;

Если ЗначениеНеЗаполнено(СтрокаПроверки) Тогда

Возврат Истина;

КонецЕсли;

Если НЕ УчитыватьПробелы Тогда

СтрокаПроверки = СтрЗаменить(СтрокаПроверки, " ", "");

КонецЕсли;

Если НЕ УчитыватьЛидирующиеНули Тогда

НомерПервойЦифры = 0;

Для а = 1 По СтрДлина(СтрокаПроверки) Цикл

НомерПервойЦифры = НомерПервойЦифры + 1;

КодСимвола = КодСимвола(Сред(СтрокаПроверки, а, 1));

Если КодСимвола <> 48 Тогда

Прервать;

КонецЕсли;

КонецЦикла;

СтрокаПроверки = Сред(СтрокаПроверки, НомерПервойЦифры);

КонецЕсли;

Для а = 1 По СтрДлина(СтрокаПроверки) Цикл

КодСимвола = КодСимвола(Сред(СтрокаПроверки, а, 1));

Если НЕ (КодСимвола >= 48 И КодСимвола <= 57) Тогда

Возврат Ложь;

КонецЕсли;

КонецЦикла;

Возврат Истина;

КонецФункции

Отчет.ВедомостьПоБанку.Форма.ФормаОтчета.Форма.Модуль

Процедура ОформитьОтчет()

// установить выбранное пользователет стандартное оформление

Если ЭлементыФормы.ПолеВыбораСтОформление.Значение <> Неопределено Тогда

Построитель.МакетОформления = ПолучитьМакетОформления(ЭлементыФормы.ПолеВыбораСтОформление.Значение);

КонецЕсли;

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

Построитель.Макет = Неопределено;

Макет = Построитель.Макет;

ОбластьЗаголовка = Макет.Область("Заголовок");

Макет.Область("R"+Строка(ОбластьЗаголовка.Верх+0)+"C1").Текст = "Дата и время печати:" + ТекущаяДата();

// вывести в заголовок период

ДатаС = 0; ДатаПо = 0;

обПолучитьИзОтбораПериод(Построитель, ДатаС, ДатаПо);

Макет.Область("R"+Строка(ОбластьЗаголовка.Верх+1)+"C2").Текст = "Ведомость по банку с " + Строка(ДатаС) + " по " + Строка(ДатаПо);

Настройки = "";

Для Й = 0 По Построитель.Отбор.Количество()-1 Цикл

ПолеОтбора = Построитель.Отбор[Й];

Если Не ПолеОтбора.Использование Тогда

Продолжить;

КонецЕсли;

Если ПолеОтбора.ПутьКДанным = "НачалоПериода" Тогда

Продолжить;

КонецЕсли;

Если ПолеОтбора.ПутьКДанным = "КонецПериода" Тогда

Продолжить

КонецЕсли;

Настройка = ПолеОтбора.Представление + " " + ПолеОтбора.ВидСравнения + " " + ПолеОтбора.Значение;

Настройки = Настройки + Настройка + "; ";

КонецЦикла;

Если Не ПустаяСтрока(Настройки) Тогда

Макет.Область("R"+Строка(ОбластьЗаголовка.Верх+2)+"C2").Текст = "Настройки: "+Настройки;

КонецЕсли;

// установить ширину колонок

обУстановитьШиринуКолонокОтчета(Макет, "НачОст", 12);

обУстановитьШиринуКолонокОтчета(Макет, "Приход", 12);

обУстановитьШиринуКолонокОтчета(Макет, "Расход", 12);

обУстановитьШиринуКолонокОтчета(Макет, "КонОст", 12);

обУстановитьШиринуКолонокОтчета(Макет, "Фирма", 20);

обУстановитьШиринуКолонокОтчета(Макет, "Склад", 20);

обУстановитьШиринуКолонокОтчета(Макет, "Номенклатура", 25);

обУстановитьШиринуКолонокОтчета(Макет, "Регистратор", 30);

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

Построитель.Макет = Макет;

// тип расмещения измерений-строк

Если ТипРпазмещенияСтрок = 0 Тогда

Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Отдельно;

ИначеЕсли ТипРпазмещенияСтрок = 1 Тогда

Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Вместе;

ИначеЕсли ТипРпазмещенияСтрок = 2 Тогда

Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.ОтдельноИТолькоВИтогах;

КонецЕсли;

// тип размещения измерений-колонок

Если ТипРпазмещенияКолонок = 0 Тогда

Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Отдельно;

ИначеЕсли ТипРпазмещенияКолонок = 1 Тогда

Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе;

ИначеЕсли ТипРпазмещенияКолонок = 2 Тогда

Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.ОтдельноИТолькоВИтогах;

КонецЕсли;

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

Процедура КнопкаСформироватьНажатие(Кнопка)

Построитель.ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.ЗначенияГруппировок;

ОформитьОтчет(); // все оформление построителя

Построитель.Выполнить(); // выполнить запрос

// выводим в ТАБ.ДОКУМЕНТ

ТабДок = ЭлементыФормы.ПолеТабличногоДокументаРезультат;

ТабДок.Очистить();

Построитель.Вывести(ТабДок);

ТабДок.ТолькоПросмотр = Истина;

// выводим в ТАБ.ДОКУМЕНТ

Элементыформы.Панель1.ТекущаяСтраница = Элементыформы.Панель1.Страницы[1]; // открыть закладку с отчетом

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

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

СформироватьТекстПостроителя();

обЗаполнитьВариантыСтандартногоОформления(ЭлементыФормы.ПолеВыбораСтОформление.СписокВыбора); // заполнить варианты стандартного оформления

ПолеВыбораСтОформление = СтандартноеОформление.Камень; // стандартное оформление по умолчанию

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

Процедура СформироватьТекстПостроителя()

Текст =

"ВЫБРАТЬ

| БанкОстаткиИОбороты.Фирма КАК Фирма,

| БанкОстаткиИОбороты.БанковскийСчет КАК Счет,

| БанкОстаткиИОбороты.Регистратор КАК Регистратор,

| НачалоПериода(Регистратор.Дата, Неделя) КАК Неделя,

| НачалоПериода(Регистратор.Дата, Месяц) КАК Месяц,

| НачалоПериода(Регистратор.Дата, Квартал) КАК Квартал,

| НачалоПериода(Регистратор.Дата, Год) КАК Год,

| БанкОстаткиИОбороты.СуммаНачальныйОстаток КАК НачОст,

| БанкОстаткиИОбороты.СуммаПриход КАК Приход,

| БанкОстаткиИОбороты.СуммаРасход КАК Расход,

| БанкОстаткиИОбороты.СуммаКонечныйОстаток КАК КонОст

|ИЗ

| РегистрНакопления.Банк.ОстаткиИОбороты(,,Регистратор) КАК БанкОстаткиИОбороты

|

|{ИТОГИ ПО Фирма, Счет, Регистратор, Неделя, Месяц, Квартал, Год}

|

|ИТОГИ

| СУММА(СуммаНачальныйОстаток),

| СУММА(СуммаПриход),

| СУММА(СуммаКонечныйОстаток)

|ПО

| ОБЩИЕ

|";

Построитель.Текст = Текст;

Построитель.ЗаполнитьНастройки(); // автоматически заполнить настройки

// заполняем отбор

Отбор = Построитель.Отбор;

ДоступноеПоле = Построитель.ДоступныеПоля.Найти("НачалоПериода");

Если ДоступноеПоле <> Неопределено Тогда

Если Отбор.Найти(ДоступноеПоле.Имя) = Неопределено Тогда

Отбор.Добавить(ДоступноеПоле.Имя);

КонецЕсли;

Отбор[ДоступноеПоле.Имя].Использование = Истина;

Отбор[ДоступноеПоле.Имя].Значение = НачалоМесяца(ТекущаяДата());

Отбор[ДоступноеПоле.Имя].ВидСравнения = ВидСравнения.Равно;

КонецЕсли;

ДоступноеПоле = Построитель.ДоступныеПоля.Найти("КонецПериода");

Если ДоступноеПоле <> Неопределено Тогда

Если Отбор.Найти(ДоступноеПоле.Имя) = Неопределено Тогда

Отбор.Добавить(ДоступноеПоле.Имя);

КонецЕсли;

Отбор[ДоступноеПоле.Имя].Использование = Истина;

Отбор[ДоступноеПоле.Имя].Значение = КонецМесяца(ТекущаяДата());

Отбор[ДоступноеПоле.Имя].ВидСравнения = ВидСравнения.Равно;

КонецЕсли;

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

Процедура ОсновныеДействияФормыСохранить(Кнопка)

Настройки = Построитель.ПолучитьНастройки(Истина,Истина,Истина,Истина);

обСохранитьНастройки(Настройки);

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

Процедура ОсновныеДействияФормыВосстановить(Кнопка)

Настройки = обВосстановитьНастройки();

Если Настройки <> Неопределено Тогда

Построитель.УстановитьНастройки(Настройки);

КонецЕсли;

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

Отчет.ВедомостьПоКассе.Форма.ФормаОтчета.Форма.Модуль

Процедура ОформитьОтчет()

// установить выбранное пользователет стандартное оформление

Если ЭлементыФормы.ПолеВыбораСтОформление.Значение <> Неопределено Тогда

Построитель.МакетОформления = ПолучитьМакетОформления(ЭлементыФормы.ПолеВыбораСтОформление.Значение);

КонецЕсли;

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

Построитель.Макет = Неопределено;

Макет = Построитель.Макет;

ОбластьЗаголовка = Макет.Область("Заголовок");

Макет.Область("R"+Строка(ОбластьЗаголовка.Верх+0)+"C1").Текст = "Дата и время печати:" + ТекущаяДата();

// вывести в заголовок период

ДатаС = 0; ДатаПо = 0;

обПолучитьИзОтбораПериод(Построитель, ДатаС, ДатаПо);

Макет.Область("R"+Строка(ОбластьЗаголовка.Верх+1)+"C2").Текст = "Ведомость по кассе с " + Строка(ДатаС) + " по " + Строка(ДатаПо);

Настройки = "";

Для Й = 0 По Построитель.Отбор.Количество()-1 Цикл

ПолеОтбора = Построитель.Отбор[Й];

Если Не ПолеОтбора.Использование Тогда

Продолжить;

КонецЕсли;

Если ПолеОтбора.ПутьКДанным = "НачалоПериода" Тогда

Продолжить;

КонецЕсли;

Если ПолеОтбора.ПутьКДанным = "КонецПериода" Тогда

Продолжить

КонецЕсли;

Настройка = ПолеОтбора.Представление + " " + ПолеОтбора.ВидСравнения + " " + ПолеОтбора.Значение;

Настройки = Настройки + Настройка + "; ";

КонецЦикла;

Если Не ПустаяСтрока(Настройки) Тогда

Макет.Область("R"+Строка(ОбластьЗаголовка.Верх+2)+"C2").Текст = "Настройки: "+Настройки;

КонецЕсли;

// установить ширину колонок

обУстановитьШиринуКолонокОтчета(Макет, "НачОст", 12);

обУстановитьШиринуКолонокОтчета(Макет, "Приход", 12);

обУстановитьШиринуКолонокОтчета(Макет, "Расход", 12);

обУстановитьШиринуКолонокОтчета(Макет, "КонОст", 12);

обУстановитьШиринуКолонокОтчета(Макет, "Фирма", 20);

обУстановитьШиринуКолонокОтчета(Макет, "Склад", 20);

обУстановитьШиринуКолонокОтчета(Макет, "Номенклатура", 25);

обУстановитьШиринуКолонокОтчета(Макет, "Регистратор", 30);

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

Построитель.Макет = Макет;

// тип расмещения измерений-строк

Если ТипРпазмещенияСтрок = 0 Тогда

Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Отдельно;

ИначеЕсли ТипРпазмещенияСтрок = 1 Тогда

Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Вместе;

ИначеЕсли ТипРпазмещенияСтрок = 2 Тогда

Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.ОтдельноИТолькоВИтогах;

КонецЕсли;

// тип размещения измерений-колонок

Если ТипРпазмещенияКолонок = 0 Тогда

Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Отдельно;

ИначеЕсли ТипРпазмещенияКолонок = 1 Тогда

Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе;

ИначеЕсли ТипРпазмещенияКолонок = 2 Тогда

Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.ОтдельноИТолькоВИтогах;

КонецЕсли;

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

Процедура КнопкаСформироватьНажатие(Кнопка)

Построитель.ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.ЗначенияГруппировок;

ОформитьОтчет(); // все оформление построителя

Построитель.Выполнить(); // выполнить запрос

// выводим в ТАБ.ДОКУМЕНТ

ТабДок = ЭлементыФормы.ПолеТабличногоДокументаРезультат;

ТабДок.Очистить();

Построитель.Вывести(ТабДок);

ТабДок.ТолькоПросмотр = Истина;

// выводим в ТАБ.ДОКУМЕНТ

Элементыформы.Панель1.ТекущаяСтраница = Элементыформы.Панель1.Страницы[1]; // открыть закладку с отчетом

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

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

СформироватьТекстПостроителя();

обЗаполнитьВариантыСтандартногоОформления(ЭлементыФормы.ПолеВыбораСтОформление.СписокВыбора); // заполнить варианты стандартного оформления

ПолеВыбораСтОформление = СтандартноеОформление.Камень; // стандартное оформление по умолчанию

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

Процедура СформироватьТекстПостроителя()

Текст =

"ВЫБРАТЬ

| КассаОстаткиИОбороты.Фирма КАК Фирма,

| КассаОстаткиИОбороты.Касса КАК Касса,

| КассаОстаткиИОбороты.Регистратор КАК Регистратор,

| НачалоПериода(Регистратор.Дата, Неделя) КАК Неделя,

| НачалоПериода(Регистратор.Дата, Месяц) КАК Месяц,

| НачалоПериода(Регистратор.Дата, Квартал) КАК Квартал,

| НачалоПериода(Регистратор.Дата, Год) КАК Год,

| КассаОстаткиИОбороты.СуммаНачальныйОстаток КАК НачОст,

| КассаОстаткиИОбороты.СуммаПриход КАК Приход,

| КассаОстаткиИОбороты.СуммаРасход КАК Расход,

| КассаОстаткиИОбороты.СуммаКонечныйОстаток КАК КонОст

|ИЗ

| РегистрНакопления.Касса.ОстаткиИОбороты(,,Регистратор) КАК КассаОстаткиИОбороты

|

|{ИТОГИ ПО Фирма, Касса, Регистратор, Неделя, Месяц, Квартал, Год}

|

|ИТОГИ

| СУММА(СуммаНачальныйОстаток),

| СУММА(СуммаПриход),

| СУММА(СуммаРасход),

| СУММА(СуммаКонечныйОстаток)

|ПО

| ОБЩИЕ

|";

Построитель.Текст = Текст;

Построитель.ЗаполнитьНастройки(); // автоматически заполнить настройки

// заполняем отбор

Отбор = Построитель.Отбор;

ДоступноеПоле = Построитель.ДоступныеПоля.Найти("НачалоПериода");

Если ДоступноеПоле <> Неопределено Тогда

Если Отбор.Найти(ДоступноеПоле.Имя) = Неопределено Тогда

Отбор.Добавить(ДоступноеПоле.Имя);

КонецЕсли;

Отбор[ДоступноеПоле.Имя].Использование = Истина;

Отбор[ДоступноеПоле.Имя].Значение = НачалоМесяца(ТекущаяДата());

Отбор[ДоступноеПоле.Имя].ВидСравнения = ВидСравнения.Равно;

КонецЕсли;

ДоступноеПоле = Построитель.ДоступныеПоля.Найти("КонецПериода");

Если ДоступноеПоле <> Неопределено Тогда

Если Отбор.Найти(ДоступноеПоле.Имя) = Неопределено Тогда

Отбор.Добавить(ДоступноеПоле.Имя);

КонецЕсли;

Отбор[ДоступноеПоле.Имя].Использование = Истина;

Отбор[ДоступноеПоле.Имя].Значение = КонецМесяца(ТекущаяДата());

Отбор[ДоступноеПоле.Имя].ВидСравнения = ВидСравнения.Равно;

КонецЕсли;

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

Процедура ОсновныеДействияФормыСохранить(Кнопка)

Настройки = Построитель.ПолучитьНастройки(Истина,Истина,Истина,Истина);

обСохранитьНастройки(Настройки);

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

Процедура ОсновныеДействияФормыВосстановить(Кнопка)

Настройки = обВосстановитьНастройки();

Если Настройки <> Неопределено Тогда

Построитель.УстановитьНастройки(Настройки);

КонецЕсли;

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Обработчик события ПриОткрытии формы.

//

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

Макет = Справочники.КлассификаторЕдиницИзмерения.ПолучитьМакет("КлассификаторЕдиницИзмерения");

Макет.Параметры.Расшифровка = Истина; // чтобы работала расшифровка

ТабличныйДокумент = ЭлементыФормы.ПолеТабличногоДокумента;

ТабличныйДокумент.Очистить();

ТабличныйДокумент.Вывести(Макет);

// пользователю не показываем весовая это или нет единица измерения

ТабличныйДокумент.Области.ВесоваяЕдиница.Очистить();

ТабличныйДокумент.ФиксацияСверху = ТабличныйДокумент.Области.ОбластьРасшифровки.Верх - 1;

ТабличныйДокумент.ОтображатьЗаголовки = Ложь;

ТабличныйДокумент.ОтображатьСетку = Ложь;

ТабличныйДокумент.ТолькоПросмотр = Истина;

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