Адаптация автоматизированной системы "1С Предприятие 8"

Технология выполнения работ по автоматизации систем управления. Адаптация автоматизированной системы "1С: Предприятие 8" для ООО "СтройРемонтПодряд". Обследование ведения учета заработной платы и кадров. Оценка экономической эффективности проекта.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 15.02.2017
Размер файла 2,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Если Начисления. Количество () > 0 Тогда

ТекстВопроса = "Перед заполнением табличные части будут очищены. Заполнить?";

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

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

Возврат;

КонецЕсли;

Начисления. Очистить ();

КонецЕсли;

Если Кнопка. Имя = "СписокРаботников" Тогда

ПроцедурыУправленияПерсоналом. ОткрытьФормуОтбораСпискаРаботников (ЭтаФорма, ПериодРегистрации,, Организация,,,,"ПремииРаботниковОрганизаций", Новый Структура ("Размер",100));

ИначеЕсли Кнопка. Имя = "ПоПерерассчитываемомуДокументу" Тогда

Если Не ЗаполнитьПоПерерассчитываемомуДокументу () Тогда

Сообщить ("Нет необходимости перерассчитывать заданный документ. Для получения списка документов, подлежащих перерасчету, необходимо использовать: пункт Перерасчет зарплаты меню Расчет зарплаты");

КонецЕсли;

КонецЕсли;

УстановитьТекущуюСтрокуТабличнойЧасти ();

КонецПроцедуры // ДействияФормыЗаполнить ()

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

Док = Документы. ЗарплатаКВыплатеОрганизаций. СоздатьДокумент ();

Док. Заполнить (Новый Структура ("Ссылка, СпособРасчета", Ссылка,"ЗаВычетомНалога"));

Док. ПолучитьФорму (). Открыть ();

КонецПроцедуры // ДействияФормыБезНалогов ()

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

Док = Документы. ЗарплатаКВыплатеОрганизаций. СоздатьДокумент ();

Док. Заполнить (Новый Структура ("Ссылка, СпособРасчета", Ссылка,"ВсяНачисленнаяСумма"));

Док. ПолучитьФорму (). Открыть ();

КонецПроцедуры // ДействияФормыСНалогами ()

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

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

РаботаСДиалогами. ОткрытьСвойстваДокумента (ЭтотОбъект, ЭтаФорма);

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

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

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

РаботаСДиалогами. ОткрытьКатегорииДокумента (ЭтотОбъект, ЭтаФорма);

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

// Процедура вызова структуры подчиненности документа

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

РаботаСДиалогами. ПоказатьСтруктуруПодчиненностиДокумента (Ссылка);

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

// Процедура - обработчик нажатия на любую из дополнительных кнопок по заполнению ТЧ

Процедура НажатиеНаДополнительнуюКнопкуЗаполненияТЧ (Кнопка)

РаботаСДиалогами. ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ (мКнопкиЗаполненияТЧ. Строки. Найти (Кнопка. Имя,"Имя", Истина), ЭтотОбъект);

КонецПроцедуры // НажатиеНаДополнительнуюКнопкуЗаполненияТЧ ()

// Процедура - обработчик нажатия на кнопку "Печать по умолчанию"

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

РаботаСДиалогами. ПечатьПоДополнительнойКнопке (мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка. Текст);

КонецПроцедуры // ОсновныеДействияФормыПечатьПоУмолчанию ()

// Процедура - обработчик нажатия на кнопку "Печать"

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

РаботаСДиалогами. ПечатьПоДополнительнойКнопке (мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка. Текст);

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

// Процедура - обработчик нажатия на кнопку "Установить печать по умолчанию"

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

Если РаботаСДиалогами. НазначитьКнопкуПечатиПоУмолчанию (мДеревоМакетов, Метаданные (). Имя) Тогда

УстановитьКнопкиПечати ();

КонецЕсли;

КонецПроцедуры // ОсновныеДействияФормыУстановитьПечатьПоУмолчанию ()

// Процедура - вызывается при нажатии на кнопку "Подбор"

Процедура КоманднаяПанельНачисленияПодбор (Кнопка)

ПроцедурыУправленияПерсоналом. ОткрытьФормуВыбораСотрудникаОрганизации (ЭлементыФормы. Начисления, Ссылка, Ложь, Дата, мГоловнаяОрганизация, 1);

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

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

// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ РЕКВИЗИТОВ ШАПКИ

// Процедура - обработчик события "ПриИзменении" поля ввода даты документа.

Процедура ДатаПриИзменении (Элемент)

РаботаСДиалогами. ПроверитьНомерДокумента (ЭтотОбъект, мТекущаяДатаДокумента);

РаботаСДиалогами. ОбновитьПодсказкуКодНомерОбъекта (ЭтотОбъект. Метаданные (), ЭлементыФормы. ДействияФормы. Кнопки. Подменю1, ЭлементыФормы. Номер);

мТекущаяДатаДокумента = Дата;

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

// Процедура - обработчик события "ПриИзменении" поля ввода организации.

Процедура ОрганизацияПриИзменении (Элемент)

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

РаботаСДиалогами. СброситьУстановленныйКодНомерОбъекта (ЭтотОбъект, "Номер", ЭлементыФормы. ДействияФормы. Кнопки. Подменю1, ЭлементыФормы. Номер);

КонецЕсли;

// Получим и запомним ссылку на головную организацию

мГоловнаяОрганизация = ОбщегоНазначения. ГоловнаяОрганизация (Организация);

РаботаСДиалогами. УстановитьВидимостьЭУПоУчетнойПолитикеПоПерсоналу (мМассивЭУ, глЗначениеПеременной ("глУчетнаяПолитикаПоПерсоналуОрганизации"), Организация);

УстановитьТекстИтого ();

КонецПроцедуры // ОрганизацияПриИзменении ()

// Процедура - обработчик события "ПриИзменении" поля ввода периода регистрации.

Процедура ПериодРегистрацииПриИзменении (Элемент)

РаботаСДиалогами. ДатаКакМесяцПодобратьДатуПоТексту (Элемент. Значение, ПериодРегистрации);

Элемент. Значение = РаботаСДиалогами. ДатаКакМесяцПредставление (ПериодРегистрации);

// премия за текущий месяц

ПриСменеПериодаРегистрации ();

КонецПроцедуры // ПериодРегистрацииПриИзменении ()

// Процедура - обработчик события "Регулирование" поля ввода периода регистрации.

Процедура ПериодРегистрацииРегулирование (Элемент, Направление, СтандартнаяОбработка)

ПериодРегистрации = ДобавитьМесяц (ПериодРегистрации, Направление);

Элемент. Значение = РаботаСДиалогами. ДатаКакМесяцПредставление (ПериодРегистрации);

ПриСменеПериодаРегистрации ();

КонецПроцедуры // ПериодРегистрацииРегулирование ()

// Процедура - обработчик события "Очистка" поля ввода периода регистрации.

Процедура ПериодРегистрацииОчистка (Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

КонецПроцедуры // ПериодРегистрацииОчистка ()

// Процедура - обработчик события "НачалоВыбораИзСписка" поля ввода периода регистрации.

Процедура ПериодРегистрацииНачалоВыбораИзСписка (Элемент, СтандартнаяОбработка)

РаботаСДиалогами. НачалоВыбораИзСпискаПредставленияПериодаРегистрации (Элемент, СтандартнаяОбработка, ПериодРегистрации, ЭтаФорма);

ПриСменеПериодаРегистрации ();

КонецПроцедуры // ПериодРегистрацииНачалоВыбораИзСписка ()

// Процедура - обработчик события "АвтоПодборТекста" поля ввода периода регистрации.

Процедура ПериодРегистрацииАвтоПодборТекста (Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)

РаботаСДиалогами. ДатаКакМесяцАвтоПодборТекста (Текст, ТекстАвтоПодбора, СтандартнаяОбработка);

КонецПроцедуры // ПериодРегистрацииАвтоПодборТекста ()

// Процедура - обработчик события "ОкончаниеВводаТекста" поля ввода периода регистрации.

Процедура ПериодРегистрацииОкончаниеВводаТекста (Элемент, Текст, Значение, СтандартнаяОбработка)

РаботаСДиалогами. ДатаКакМесяцОкончаниеВводаТекста (Текст, Значение, СтандартнаяОбработка);

КонецПроцедуры // ПериодРегистрацииОкончаниеВводаТекста ()

Процедура ВидРасчетаПриИзменении (Элемент)

УправлениеВнешнимВидомФормы ();

ЧислоМесяцев = ВидРасчета. ЧислоМесяцев;

КонецПроцедуры // ВидРасчетаПриИзменении ()

Процедура ВидРасчетаНачалоВыбора (Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

// Предложим для выбора список расчетов, относящихся только к премиям.

ФормаВыбораВидаРасчета = ПланыВидовРасчета. ДополнительныеНачисленияОрганизаций. ПолучитьФормуВыбора ("ФормаВыбора", Элемент, "дляДокументаПриемНаРаботуВОрганизацию");

ФормаВыбораВидаРасчета. Отбор. ВидПремии. Значение= Перечисления. ВидыПремии. НеПремия;

ФормаВыбораВидаРасчета. Отбор. ВидПремии. ВидСравнения= ВидСравнения. НеРавно;

ФормаВыбораВидаРасчета. Отбор. ВидПремии. Использование= ИСТИНА;

ФормаВыбораВидаРасчета. Отбор. ЧислоМесяцев. Значение= 1; // за 1 месяц

ФормаВыбораВидаРасчета. Отбор. ЧислоМесяцев. ВидСравнения= ВидСравнения. Равно;

ФормаВыбораВидаРасчета. Отбор. ЧислоМесяцев. Использование= ИСТИНА;

ФормаВыбораВидаРасчета. НачальноеЗначениеВыбора = Элемент. Значение;

ФормаВыбораВидаРасчета. Открыть ();

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

// Процедура - обработчик события "ПриИзменении" поля ввода перерассчитываемого документа.

Процедура ПерерассчитываемыйДокументПриИзменении (Элемент)

ОбновитьВидимостьПоПерерассчитываемомуДокументу ();

КонецПроцедуры // ПерерассчитываемыйДокументПриИзменении ()

// Процедура - обработчик события "НачалоВыбора" поля ввода перерассчитываемого документа.

Процедура ПерерассчитываемыйДокументНачалоВыбора (Элемент, СтандартнаяОбработка)

ПроцедурыУправленияПерсоналом. ОткрытьФормуВыбораПерерассчитываемогоДокумента (Элемент, СтандартнаяОбработка, ДокументОбъект);

КонецПроцедуры // ПерерассчитываемыйДокументНачалоВыбора ()

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

// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЧНОГО ПОЛЯ Начисления

// Процедура - обработчик оповещения о выборе, присланного формой рег-ра сведений

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

Если ТипЗнч (ВыбранноеЗначение) <> Тип ("СправочникСсылка. СотрудникиОрганизаций") Тогда

Возврат;

КонецЕсли;

СтандартнаяОбработка = Ложь;

Если Начисления. НайтиСтроки (Новый Структура ("Сотрудник", ВыбранноеЗначение)). Количество () = 0 Тогда

СтрокаТабличнойЧасти = Начисления. Добавить ();

СтрокаТабличнойЧасти. Сотрудник = ВыбранноеЗначение;

СтрокаТабличнойЧасти. Физлицо = ВыбранноеЗначение. Физлицо;

СтрокаТабличнойЧасти. Авторасчет = Истина;

// АБС

СтрокаТабличнойЧасти. КТУ = 1;

// -АБС

КонецЕсли;

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

// Процедура - обработчик события "ПриВыводеСтроки" ТЧ

Процедура НачисленияПриВыводеСтроки (Элемент, ОформлениеСтроки, ДанныеСтроки)

Если ДанныеСтроки. Сторно Тогда

ОформлениеСтроки. ЦветТекста = Новый Цвет (255, 0, 0);

КонецЕсли;

ЯчейкаСКартинкой = ОформлениеСтроки. Ячейки. Картинка;

ЯчейкаСКартинкой. ОтображатьКартинку = Истина;

ЯчейкаСКартинкой. ИндексКартинки = Число (ДанныеСтроки. Авторасчет);

КонецПроцедуры // НачисленияПриВыводеСтроки ()

// Процедура - обработчик события "ПриПолученииДанных"

Процедура НачисленияПриПолученииДанных (Элемент, ОформленияСтрок)

РаботаСДиалогами. УстановитьЗначенияКолонкиТабельныйНомерСтрока (ЭлементыФормы. Начисления, ОформленияСтрок);

КонецПроцедуры // НачисленияПриПолученииДанных ()

// Процедура - обработчик события "ПриНачалеРедактирования" ТЧ

Процедура НачисленияПриНачалеРедактирования (Элемент, НоваяСтрока, Копирование)

Если НоваяСтрока И Не Копирование Тогда

Элемент. ТекущиеДанные. Авторасчет = Истина;

// АБС

Элемент. ТекущиеДанные. КТУ = 1;

// -АБС

КонецЕсли;

КонецПроцедуры // НачисленияПриНачалеРедактирования ()

// Процедура - обработчик события "ПриАктивизацииСтроки"

Процедура НачисленияПриАктивизацииСтроки (Элемент)

ДанныеСтроки = Элемент. ТекущиеДанные;

// запомним текущее физлицо

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

мСтароеФизлицо = Справочники. ФизическиеЛица. ПустаяСсылка ();

Иначе

мСтароеФизлицо = ДанныеСтроки. Сотрудник. Физлицо;

КонецЕсли;

ТекущаяСтрока = Элемент. ТекущаяСтрока;

Если Элемент. ТекущаяСтрока <> Неопределено Тогда

мСтарыйРезультат = Элемент. ТекущаяСтрока. Результат;

КонецЕсли;

КонецПроцедуры // НачисленияПриАктивизацииСтроки ()

// Процедура - обработчик события "ПриОкончанииРедактирования"

Процедура НачисленияПриОкончанииРедактирования (Элемент, НоваяСтрока, ОтменаРедактирования)

Если НЕ ОтменаРедактирования Тогда

мСтароеФизлицо = Элемент. ТекущиеДанные. Сотрудник. Физлицо;

КонецЕсли;

КонецПроцедуры // НачисленияПриОкончанииРедактирования ()

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

// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ РЕКВИЗИТОВ ТАБЛИЧНОГО ПОЛЯ

Процедура НачисленияСотрудникПриИзменении (Элемент)

ЭлементыФормы. Начисления. ТекущиеДанные. Физлицо = Элемент. Значение. Физлицо;

ЭлементыФормы. Начисления. ТекущиеДанные. Авторасчет = Истина;

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

// Процедура - обработчик события "НачалоВыбора" поля ввода физлица

// переопеределим выбор физлица на выбор из списка регистра сведений

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

ПроцедурыУправленияПерсоналом. ОткрытьФормуВыбораСотрудникаОрганизации (Элемент, Ссылка, Истина, Дата, мГоловнаяОрганизация, 1, СтандартнаяОбработка, Элемент. Значение);

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

// Процедура - обработчик события "АвтоПодборТекста" поля ввода физлица

// переопеределим выбор физлица на выбор из списка регистра сведений

Процедура НачисленияСотрудникАвтоПодборТекста (Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)

ТекстАвтоПодбора = ПроцедурыУправленияПерсоналом. ПодобратьФИОРаботникаКандидата (СтандартнаяОбработка, "РаботникиОрганизации", Текст, Организация);

КонецПроцедуры // НачисленияСотрудникАвтоПодборТекста ()

// Процедура - обработчик события "АвтоПодборТекста" поля ввода физлица

// переопеределим выбор физлица на выбор из списка регистра сведений

Процедура НачисленияСотрудникОкончаниеВводаТекста (Элемент, Текст, Значение, СтандартнаяОбработка)

Значение = ПроцедурыУправленияПерсоналом. ПодобратьСписокРаботниковКандидатов (СтандартнаяОбработка, "РаботникиОрганизации", Текст, Элемент. Значение, Организация);

КонецПроцедуры // НачисленияСотрудникОкончаниеВводаТекста ()

// Процедура - обработчик события "ПриИзменении" поля "Результат"

Процедура НачисленияРезультатПриИзменении (Элемент)

Если Элемент. Значение <> мСтарыйРезультат Тогда

ЭлементыФормы. Начисления. ТекущиеДанные. Авторасчет = Ложь;

мСтарыйРезультат = Элемент. Значение;

КонецЕсли;

// АБС.

ПроверитьСумму ();

// -АБС

КонецПроцедуры // НачисленияРезультатПриИзменении ()

// Процедура разрешения/запрещения редактирования номера документа

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

РаботаСДиалогами. ИзменениеВозможностиРедактированияНомера (ЭтотОбъект. Метаданные (), ЭтаФорма, ЭлементыФормы. ДействияФормы. Кнопки. Подменю1, ЭлементыФормы. Номер);

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

// АБС

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

Если СуммаКРаспределению>0 и Начисления. Итог ("Результат") <>СуммаКРаспределению Тогда

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

КонецЕсли;

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

Процедура НачисленияКТУПриИзменении (Элемент)

ТекСтрока = ЭлементыФормы. Начисления. ТекущаяСтрока;

ТекСтрока. Результат = Окр (ТекСтрока. Результат*ТекСтрока. КТУ,2);

ПроверитьСумму ();

// ТекСтрока. Авторасчет = Ложь;

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

// -АБС

Приложение Ж

Листинг обработки "Загрузка контрагентов и связанной информации"

Перем ТаблДБФ;

Перем ВыборФайла;

Перем ПротоколОшибок;

Перем ТаблицаБанков;

Функция ВсеРеквизитыЗаполнены ()

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

Если ПустаяСтрока (ФайлКонтрагентов) Тогда

Сообщить ("Не выбран файл Контрагентов");

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

КонецЕсли;

Если ПустаяСтрока (ФайлБанкСчетов) Тогда

Сообщить ("Не выбран файл банковских счетов");

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

КонецЕсли;

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

Сообщить ("Не выбран файл адресов");

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

КонецЕсли;

Если ПустаяСтрока (ФайлБанков) Тогда

Сообщить ("Не выбран файл банков");

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

КонецЕсли;

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

КонецФункции // ВсеРеквизитыЗаполнены ()

Функция НайтиСчетКонтрагента (Контрагент, Банк, НомерСчета)

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

Запрос. Текст = "ВЫБРАТЬ

|БанковскиеСчета. Ссылка

|ИЗ

|Справочник. БанковскиеСчета КАК БанковскиеСчета

|ГДЕ

|БанковскиеСчета. ПометкаУдаления = ЛОЖЬ

|И БанковскиеСчета. Владелец = &Контрагент

|И БанковскиеСчета. Банк = &Банк

|И БанковскиеСчета. НомерСчета = &НомерСчета";

Запрос. УстановитьПараметр ("Контрагент", Контрагент);

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

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

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

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

Если Выборка. Следующий () Тогда

Возврат Выборка. Ссылка;

Иначе

Возврат Справочники. БанковскиеСчета. ПустаяСсылка ();

КонецЕсли;

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

Процедура ЗагрузкаБанков ()

Если ТаблДБФ. Открыта () Тогда

ТаблДБФ. ЗакрытьФайл ();

КонецЕсли;

ТаблДБФ. ОткрытьФайл (ФайлБанков,, Истина);

Если не ТаблДБФ. Открыта () Тогда

Сообщить ("Не удалось открыть " + ФайлБанков);

Возврат;

КонецЕсли;

ВсегоЗаписей = ТаблДБФ. КоличествоЗаписей ();

// обработка таблицы

Если не ТаблДБФ. Первая () Тогда

Сообщить ("Выбранная таблица пуста!");

Возврат;

КонецЕсли;

Счетчик = 1;

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

Код = СокрЛП (ТаблДБФ. BNK_ID);

БИК = СокрЛП (ТаблДБФ. BNK_CODE);

Имя = СокрЛП (ТаблДБФ. BNK_NAME);

КоррСчет = СокрЛП (ТаблДБФ. ACNT_KORR);

Адрес = СокрЛП (ТаблДБФ. ADDR);

Если ПустаяСтрока (БИК) Тогда

ПротоколОшибок. ДобавитьСтроку ("Не указан БИК у элемента " + Имя +". пропускаем. ");

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

СтрТаб = ТаблицаБанков. Добавить ();

СтрТаб. Код = Код;

СтрТаб. БИК = БИК;

СтрТаб. Имя = Имя;

СтрТаб. КоррСчет = КоррСчет;

СтрТаб. Адрес = Адрес;

Если не ТаблДБФ. Следующая () Тогда

Прервать;

КонецЕсли;

Счетчик = Счетчик+1;

Если Цел (Счетчик/100) =Счетчик/100 Тогда

Состояние ("Загрузка банков. Обработано " + Счетчик + " зап. из " + ВсегоЗаписей);

КонецЕсли;

ОбработкаПрерыванияПользователя ();

КонецЦикла;

ТаблДБФ. ЗакрытьФайл ();

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

Процедура ЗагрузкаКонтрагентов ()

Если ТаблДБФ. Открыта () Тогда

ТаблДБФ. ЗакрытьФайл ();

КонецЕсли;

ТаблДБФ. ОткрытьФайл (ФайлКонтрагентов,, Истина);

Если не ТаблДБФ. Открыта () Тогда

Сообщить ("Не удалось открыть " + ФайлКонтрагентов);

Возврат;

КонецЕсли;

ВсегоЗаписей = ТаблДБФ. КоличествоЗаписей ();

// обработка таблицы

Если не ТаблДБФ. Первая () Тогда

Сообщить ("Выбранная таблица пуста!");

Возврат;

КонецЕсли;

Счетчик = 1;

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

Имя = СокрЛП (ТаблДБФ. SHORTNAME);

КодБЭСТ = СокрЛП (ТаблДБФ. PART_ID);

Наименование = СокрЛП (ТаблДБФ.orgNAME);

ИНН = СокрЛП (ТаблДБФ. CODE_INN);

КПП = СокрЛП (ТаблДБФ. CODE_KPP);

ОКПО = СокрЛП (ТаблДБФ. CODE_OKPO);

Если ПустаяСтрока (ИНН) и не ЗагрузкаБезИНН Тогда

ПротоколОшибок. ДобавитьСтроку ("Не указан ИНН у элемента " + Имя + " (" + КодБЭСТ + "). пропускаем. ");

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

Попытка

ТипЛица = Число (СокрЛП (ТаблДБФ. STATUS));

Исключение

ТипЛица = 0;

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

ЮрФизЛицо =? (ТипЛица = 0, Перечисления. ЮрФизЛицо. ЮрЛицо, Перечисления. ЮрФизЛицо. ФизЛицо);

СпрСсылка = Справочники. Контрагенты. НайтиПоРеквизиту ("КодБЭСТ", КодБЭСТ);

Если СпрСсылка. Пустая () Тогда // еще нет - попробуем создать

Если не ПустаяСтрока (ИНН) Тогда // загрузка пустых ИНН разрешена, иначе мы сюда не попадем. Пустые на дубли не проверяем

// проверим существование контрагента с данным ИНН

СпрОшибка = Справочники. Контрагенты. НайтиПоРеквизиту ("ИНН", ИНН);

Если не СпрОшибка. Пустая () Тогда // контрагент с таким ИНН есть - это ошибка

ПротоколОшибок. ДобавитьСтроку ("Элемент справочника с ИНН " + ИНН + " уже существует. Код БЭСТ=" +

КодБЭСТ +". пропускаем. ");

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

КонецЕсли;

СпрОбъект = Справочники. Контрагенты. СоздатьЭлемент ();

Если не ГруппаЗагрузки. Пустая () Тогда

СпрОбъект. Родитель = ГруппаЗагрузки;

КонецЕсли;

Иначе // есть - перепишем данные

СпрОбъект = СпрСсылка. ПолучитьОбъект ();

КонецЕсли;

СпрОбъект. ИНН = ИНН;

СпрОбъект. КодБЭСТ = КодБЭСТ;

СпрОбъект. КодПоОКПО = ОКПО;

СпрОбъект. КПП = КПП;

СпрОбъект. Наименование = Имя;

СпрОбъект. НаименованиеПолное = Наименование;

СпрОбъект. ЮрФизЛицо = ЮрФизЛицо;

Попытка

СпрОбъект. Записать ();

СпрОбъект. ГоловнойКонтрагент = СпрОбъект. Ссылка;

СпрОбъект. Записать ();

Исключение

ПротоколОшибок. ДобавитьСтроку ("Не удалось записать элемент справочника " + Имя +

": " + ОписаниеОшибки ());

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

Если не ТаблДБФ. Следующая () Тогда

Прервать;

КонецЕсли;

Счетчик = Счетчик+1;

Если Цел (Счетчик/100) =Счетчик/100 Тогда

Состояние ("Загрузка контрагентов. Обработано " + Счетчик + " зап. из " + ВсегоЗаписей);

КонецЕсли;

ОбработкаПрерыванияПользователя ();

КонецЦикла;

ТаблДБФ. ЗакрытьФайл ();

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

Процедура ЗагрузкаАдресов ()

Если ТаблДБФ. Открыта () Тогда

ТаблДБФ. ЗакрытьФайл ();

КонецЕсли;

ТаблДБФ. ОткрытьФайл (ФайлАдресов,, Истина);

Если не ТаблДБФ. Открыта () Тогда

Сообщить ("Не удалось открыть " + ФайлАдресов);

Возврат;

КонецЕсли;

ВсегоЗаписей = ТаблДБФ. КоличествоЗаписей ();

// обработка таблицы

Если не ТаблДБФ. Первая () Тогда

Сообщить ("Таблица адресов пуста!");

Возврат;

КонецЕсли;

Счетчик = 1;

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

КодБЭСТ = СокрЛП (ТаблДБФ. PART_ID);

ВидАдресаСтр = СокрЛП (ТаблДБФ. ADR_TYPE); // 1 - "фактический", 2 - "Юридический" остальные типы адресов не переносить

Адрес = СокрЛП (ТаблДБФ. ADDRESS);

Если ПустаяСтрока (Адрес) Тогда

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

ХозяинАдреса = Справочники. Контрагенты. НайтиПоРеквизиту ("КодБЭСТ", КодБЭСТ);

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

ПротоколОшибок. ДобавитьСтроку ("Не найден контрагент с кодом " + КодБЭСТ + "). пропускаем. ");

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

Если ВидАдресаСтр = "1" Тогда

Если ХозяинАдреса. ЮрФизЛицо = Перечисления. ЮрФизЛицо. ЮрЛицо Тогда

ВидАдреса = Справочники. ВидыКонтактнойИнформации. ФактАдресОрганизации;

Иначе

ВидАдреса = Справочники. ВидыКонтактнойИнформации. ФактАдресФизЛица;

КонецЕсли;

ИначеЕсли ВидАдресаСтр = "2" Тогда

Если ХозяинАдреса. ЮрФизЛицо = Перечисления. ЮрФизЛицо. ЮрЛицо Тогда

ВидАдреса = Справочники. ВидыКонтактнойИнформации. ЮрАдресОрганизации;

Иначе

ВидАдреса = Справочники. ВидыКонтактнойИнформации. ЮрАдресФизЛица;

КонецЕсли;

Иначе // неизвестный тип адреса

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

ЗаписьАдреса = РегистрыСведений. КонтактнаяИнформация. СоздатьМенеджерЗаписи ();

ЗаписьАдреса. Объект = ХозяинАдреса;

ЗаписьАдреса. Вид = ВидАдреса;

ЗаписьАдреса. Тип = Перечисления. ТипыКонтактнойИнформации. Адрес;

ЗаписьАдреса. Представление = Адрес;

ЗаписьАдреса. Записать (Истина);

Счетчик = Счетчик+1;

Если не ТаблДБФ. Следующая () Тогда

Прервать;

КонецЕсли;

Если Цел (Счетчик/100) =Счетчик/100 Тогда

Состояние ("Загрузка адресов контрагентов. Обработано " + Счетчик + " зап. из " + ВсегоЗаписей);

КонецЕсли;

ОбработкаПрерыванияПользователя ();

КонецЦикла;

ТаблДБФ. ЗакрытьФайл ();

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

Процедура ЗагрузкаСчетов ()

Если ТаблДБФ. Открыта () Тогда

ТаблДБФ. ЗакрытьФайл ();

КонецЕсли;

ТаблДБФ. ОткрытьФайл (ФайлБанкСчетов,, Истина);

Если не ТаблДБФ. Открыта () Тогда

Сообщить ("Не удалось открыть " + ФайлБанкСчетов);

Возврат;

КонецЕсли;

ВсегоЗаписей = ТаблДБФ. КоличествоЗаписей ();

// обработка таблицы

Если не ТаблДБФ. Первая () Тогда

Сообщить ("Таблица счетов пуста!");

Возврат;

КонецЕсли;

Счетчик = 1;

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

КодБЭСТ = СокрЛП (ТаблДБФ. PART_ID); // контрагент

НомерСчета = СокрЛП (ТаблДБФ. ACCNT);

КодБанка = СокрЛП (ТаблДБФ. BNK_ID);

ВидСчетаСтр = СокрЛП (ТаблДБФ. ACC_TP);

ВидСчетаСтр =? (ВидСчетаСтр = "1", "Расчетный", "Другой");

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

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

Хозяин = Справочники. Контрагенты. НайтиПоРеквизиту ("КодБЭСТ", КодБЭСТ);

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

ПротоколОшибок. ДобавитьСтроку ("Не найден контрагент с кодом " + КодБЭСТ +". пропускаем. ");

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

// найдем банк

СтрТабБанк = ТаблицаБанков. Найти (КодБанка, "Код");

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

ПротоколОшибок. ДобавитьСтроку ("Не найден банк с кодом " + КодБанка +". пропускаем. ");

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

Банк1С = Справочники. Банки. НайтиПоКоду (СтрТабБанк. БИК);

Если Банк1С. Пустая () Тогда // надо создавать новый банк

БанкОбъект = Справочники. Банки. СоздатьЭлемент ();

БанкОбъект. Адрес = СтрТабБанк. Адрес;

БанкОбъект. Код = СтрТабБанк. БИК;

БанкОбъект. КоррСчет = СтрТабБанк. КоррСчет;

БанкОбъект. Наименование = СтрТабБанк. Имя;

Попытка

БанкОбъект. Записать ();

Исключение

ПротоколОшибок. ДобавитьСтроку ("Не удалось записать банк " + СтрТабБанк. Имя + " с кодом " + СтрТабБанк. БИК +"." + ОписаниеОшибки ());

Если ТаблДБФ. Следующая () Тогда

Продолжить;

Иначе

Прервать;

КонецЕсли;

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

Банк1С = БанкОбъект. Ссылка;

КонецЕсли;

НайденныйСчет = НайтиСчетКонтрагента (Хозяин, Банк1С, НомерСчета);

Если НайденныйСчет. Пустая () Тогда

НовыйСчет = Справочники. БанковскиеСчета. СоздатьЭлемент ();

Иначе

НовыйСчет = НайденныйСчет. ПолучитьОбъект ();

КонецЕсли;

НовыйСчет. Банк = Банк1С;

НовыйСчет. ВалютаДенежныхСредств = Константы. ВалютаРегламентированногоУчета. Получить ();

НовыйСчет. ВидСчета = ВидСчетаСтр;

НовыйСчет. Владелец = Хозяин;

НовыйСчет. ВсегдаУказыватьКПП = Истина;

НовыйСчет. НомерСчета = НомерСчета;

НовыйСчет. Наименование = "Счет № " + НомерСчета + " в банке " + Банк1С. Наименование;

Попытка

НовыйСчет. Записать ();

Исключение

ПротоколОшибок. ДобавитьСтроку ("Не удалось записать счет № " + НомерСчета + " в банке " + Банк1С. Наименование + " для " + Хозяин. Наименование +"." + ОписаниеОшибки ());

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

Счетчик = Счетчик+1;

Если не ТаблДБФ. Следующая () Тогда

Прервать;

КонецЕсли;

Если Цел (Счетчик/100) =Счетчик/100 Тогда

Состояние ("Загрузка счетов контрагентов. Обработано " + Счетчик + " зап. из " + ВсегоЗаписей);

КонецЕсли;

ОбработкаПрерыванияПользователя ();

КонецЦикла;

ТаблДБФ. ЗакрытьФайл ();

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

Процедура КнопкаВыполнитьНажатие (Кнопка)

Если не ВсеРеквизитыЗаполнены () Тогда

Предупреждение ("Заполните все нужные реквизиты формы!", 20);

Возврат;

КонецЕсли;

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка контрагентов начата ***");

ЗагрузкаКонтрагентов ();

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка контрагентов завершена ***");

ПротоколОшибок. ДобавитьСтроку ("********************************************");

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка адресов контрагентов начата ***");

ЗагрузкаАдресов ();

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка адресов контрагентов завершена ***");

ПротоколОшибок. ДобавитьСтроку ("********************************************");

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка банков начата ***");

ЗагрузкаБанков ();

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка банков завершена ***");

ПротоколОшибок. ДобавитьСтроку ("********************************************");

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка счетов начата ***");

ЗагрузкаСчетов ();

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка счетов завершена ***");

Если Вопрос ("Загрузка завершена. Показать протолок ошибок", РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда

ПротоколОшибок. Показать ("Протокол ошибок переноса данных");

КонецЕсли;

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

Процедура ФайлКонтрагентовНачалоВыбора (Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

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

Элемент. Значение = ВыборФайла. ПолноеИмяФайла;

КонецЕсли;

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

Процедура КоманднаяПанель2Вывод (Кнопка)

ПротоколОшибок. Показать ("Протокол ошибок переноса данных");

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

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

ВыборФайла. Фильтр = "Таблица dbf (*. dbf) |*. dbf";

ТаблДБФ = Новый xBase ();

ПротоколОшибок = Новый ТекстовыйДокумент;

ТаблицаБанков = Новый ТаблицаЗначений;

ТаблицаБанков. Колонки. Добавить ("Код");

ТаблицаБанков. Колонки. Добавить ("БИК");

ТаблицаБанков. Колонки. Добавить ("Имя");

ТаблицаБанков. Колонки. Добавить ("КоррСчет");

ТаблицаБанков. Колонки. Добавить ("Адрес");

Приложение З

Листинг обработки "ЗагрузкаОстатковВзаиморасчетов"

Перем ТаблДБФ;

Перем ВыборФайла, ВыборФайлаExcel;

Перем ПротоколОшибок;

Перем ТаблицаКонтрагентов;

Перем ТаблицаОстатков;

Процедура МанипуляцииСВидомДоговора ()

КодСчета = "";

Если не СчетДляДебета. Пустая () Тогда

КодСчета = Лев (СчетДляДебета. Код,2);

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

КодСчета = Лев (СчетДляКредита. Код,2);

КонецЕсли;

Если КодСчета = "60" Тогда

ВидДоговора = Перечисления. ВидыДоговоровКонтрагентов. СПоставщиком;

ЭлементыФормы. ВидДоговора. Доступность = Ложь;

ИначеЕсли КодСчета = "62" Тогда

ВидДоговора = Перечисления. ВидыДоговоровКонтрагентов. СПокупателем;

ЭлементыФормы. ВидДоговора. Доступность = Ложь;

Иначе

ЭлементыФормы. ВидДоговора. Доступность = Истина;

КонецЕсли;

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

Функция ВсеРеквизитыЗаполнены ()

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

Если ПустаяСтрока (ФайлКонтрагентов) Тогда

Сообщить ("Не выбран файл Контрагентов");

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

КонецЕсли;

Если ПустаяСтрока (ФайлОстатков) Тогда

Сообщить ("Не выбран файл остатков");

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

КонецЕсли;

Если (ПерваяСтрока=0) или (КолонкаКодаКонтрагента=0) или (КолонкаДебет=0) или (КолонкаКредит=0) Тогда

Сообщить ("Не полностью описана структура входной таблицы");

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

КонецЕсли;

Если (СчетДляДебета. Пустая ()) или (СчетДляКредита. Пустая ()) Тогда

Сообщить ("Не заполнены счета отнесения остатков");

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

КонецЕсли;

Если СчетДляДебета. Родитель<>СчетДляКредита. Родитель Тогда

Сообщить ("Cубсчета отнесения остатков по дебету и кредиту принадлежат к разным счетам. ");

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

КонецЕсли;

Если не ЗначениеЗаполнено (ДатаОперации) Тогда

Сообщить ("Не указана дата формирования операции переноса остатков");

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

КонецЕсли;

Если Организация. Пустая () Тогда

Сообщить ("Не указана организация формирования операции переноса остатков");

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

КонецЕсли;

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

КонецФункции // ВсеРеквизитыЗаполнены ()

Процедура УдалитьСтарыеОперации ()

ТекстКомментария = "Ввод начальных остатков взаиморасчетов по счету " + СчетДляДебета. Родитель. Код;

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

Запрос. Текст = "ВЫБРАТЬ

|ОперацияБух. Ссылка

|ИЗ

|Документ. ОперацияБух КАК ОперацияБух

|ГДЕ

|ОперацияБух. Содержание ПОДОБНО &ТекстПереносТМЦ";

Запрос. УстановитьПараметр ("ТекстПереносТМЦ", "<Фирма ЛИСТ> " + ТекстКомментария);

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

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

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

ДокОбъект = Выборка. Ссылка. ПолучитьОбъект ();

Сообщить ("Удаляем " + ДокОбъект);

ДокОбъект. Удалить ();

КонецЦикла;

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

Функция НайтиИлиСоздатьДоговор (Контрагент)

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

Запрос. Текст = "ВЫБРАТЬ ПЕРВЫЕ 1

|ДоговорыКонтрагентов. Ссылка

|ИЗ

|Справочник. ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

|ГДЕ

|ДоговорыКонтрагентов. Владелец = &Контрагент

|И ДоговорыКонтрагентов. ВидДоговора = &НужныйВид";

Если не ВидВзаиморасчетов. Пустая () Тогда

Запрос. Текст = Запрос. Текст + "И ДоговорыКонтрагентов. ВидВзаиморасчетов = &Взаиморасчеты";

Запрос. УстановитьПараметр ("Взаиморасчеты", ВидВзаиморасчетов);

КонецЕсли;

Запрос. УстановитьПараметр ("Контрагент", Контрагент);

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

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

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

Если Выборка. Следующий () Тогда

Возврат Выборка. Ссылка;

Иначе // не нашли - надо создать

НовыйДоговор = Справочники. ДоговорыКонтрагентов. СоздатьЭлемент ();

НовыйДоговор. ВалютаВзаиморасчетов = Константы. ВалютаРегламентированногоУчета. Получить ();

НовыйДоговор. ВидДоговора = ВидДоговора;

НовыйДоговор. ВедениеВзаиморасчетов = Перечисления. ВедениеВзаиморасчетовПоДоговорам. ПоДоговоруВЦелом;

НовыйДоговор. Владелец = Контрагент;

НовыйДоговор. Наименование = "Договор вида """ + ВидДоговора + """"; НовыйДоговор. Организация = Организация;

НовыйДоговор. ВидВзаиморасчетов = ВидВзаиморасчетов;

Попытка

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

Возврат НовыйДоговор. Ссылка;

Исключение

Возврат Справочники. ДоговорыКонтрагентов. ПустаяСсылка ();

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

КонецЕсли;

КонецФункции // НайтиИлиСоздатьДоговор

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

Операция = Документы. ОперацияБух. СоздатьДокумент ();

Операция. Организация = Организация;

Операция. Дата = ДатаОперации;

// Заполнить реквизиты значениями по умолчанию.

ОбщегоНазначения. ЗаполнитьШапкуДокумента (Операция, глЗначениеПеременной ("глТекущийПользователь"),, "Продажа");

// счет переноса и нужный вид договора.

ПланСчетов = ПланыСчетов. Хозрасчетный;

СчетПереноса = СчетДляДебета. Родитель;

Если СчетПереноса. ПринадлежитЭлементу (ПланСчетов. РасчетыСПоставщикамиИПодрядчиками) или СчетПереноса=ПланСчетов. РасчетыСПоставщикамиИПодрядчиками Тогда // 60

НужныйВидДоговора = Перечисления. ВидыДоговоровКонтрагентов. СПоставщиком;

ИначеЕсли СчетПереноса. ПринадлежитЭлементу (ПланСчетов. РасчетыСПокупателямиИЗаказчиками) или СчетПереноса=ПланСчетов. РасчетыСПокупателямиИЗаказчиками Тогда // 62

НужныйВидДоговора = Перечисления. ВидыДоговоровКонтрагентов. СПокупателем;

Иначе

НужныйВидДоговора = Перечисления. ВидыДоговоровКонтрагентов. Прочее;

КонецЕсли;

ТекстКомментария = "Ввод начальных остатков взаиморасчетов по счету " + СчетПереноса. Код;

Операция. Комментарий = ТекстКомментария;

Операция. Ответственный = глЗначениеПеременной ("глТекущийПользователь");

Операция. Содержание = "<Фирма ЛИСТ> " + ТекстКомментария;

Для каждого СтрТЧ Из ТаблицаОстатков Цикл

Договор = НайтиИлиСоздатьДоговор (СтрТЧ. Контрагент);

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

ПротоколОшибок. ДобавитьСтроку ("Для контрагента " + СтрТЧ. Контрагент + " не удалось найти или создать договор " + НужныйВидДоговора);

Продолжить;

КонецЕсли;

// теоретически возможны остатки и по дебету и по кредиту, поэтому возможны 2 проводки

Если СтрТЧ. СальдоДебет>0 Тогда

Проводка = Операция. Движения. Хозрасчетный. Добавить ();

Проводка. Период = ДатаОперации;

Проводка. СчетКт = ПланСчетов. Вспомогательный;

Проводка. СчетДт = СчетДляДебета;

Проводка. Сумма =? (СчетДляДебета. Вид=ВидСчета. Активный, СтрТЧ. СальдоДебет, - СтрТЧ. СальдоДебет);

ОбщегоНазначения. УстановитьСубконто (Проводка. СчетДт, Проводка. СубконтоДт,"Контрагенты", СтрТЧ. Контрагент, Истина);

ОбщегоНазначения. УстановитьСубконто (Проводка. СчетДт, Проводка. СубконтоДт,"Договоры", Договор, Истина);

КонецЕсли;

Если СтрТЧ. СальдоКредит>0 Тогда

Проводка = Операция. Движения. Хозрасчетный. Добавить ();

Проводка. Период = ДатаОперации;

Проводка. СчетДт = ПланСчетов. Вспомогательный;

Проводка. СчетКт = СчетДляКредита;

Проводка. Сумма =? (СчетДляКредита. Вид=ВидСчета. Пассивный, СтрТЧ. СальдоКредит, - СтрТЧ. СальдоКредит);

ОбщегоНазначения. УстановитьСубконто (Проводка. СчетКт, Проводка. СубконтоКт,"Контрагенты", СтрТЧ. Контрагент, Истина);

ОбщегоНазначения. УстановитьСубконто (Проводка. СчетКт, Проводка. СубконтоКт,"Договоры", Договор, Истина);

КонецЕсли;

КонецЦикла;

Операция. Записать ();

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

Процедура ЗагрузкаКонтрагентов ()

ТаблицаКонтрагентов. Очистить ();

Если ТаблДБФ. Открыта () Тогда

ТаблДБФ. ЗакрытьФайл ();

КонецЕсли;

ТаблДБФ. ОткрытьФайл (ФайлКонтрагентов,, Истина);

Если не ТаблДБФ. Открыта () Тогда

Сообщить ("Не удалось открыть " + ФайлКонтрагентов);

Возврат;

КонецЕсли;

ВсегоЗаписей = ТаблДБФ. КоличествоЗаписей ();

// обработка таблицы

Если не ТаблДБФ. Первая () Тогда

Сообщить ("Выбранная таблица пуста!");

Возврат;

КонецЕсли;

Счетчик = 1;

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

СтрТаб = ТаблицаКонтрагентов. Добавить ();

СтрТаб. Имя = СокрЛП (ТаблДБФ. SHORTNAME);

СтрТаб. КодБЭСТ = СокрЛП (ТаблДБФ. CODE);

СтрТаб. ВнутрКод = СокрЛП (ТаблДБФ. PART_ID);

Счетчик = Счетчик+1;

Если Цел (Счетчик/100) =Счетчик/100 Тогда

Состояние ("Загрузка контрагентов. Обработано " + Счетчик + " зап. из " + ВсегоЗаписей);

КонецЕсли;

Если не ТаблДБФ. Следующая () Тогда

Прервать;

КонецЕсли;

ОбработкаПрерыванияПользователя ();

КонецЦикла;

ТаблДБФ. ЗакрытьФайл ();

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

Процедура ЗагрузкаОстатков ()

ТаблицаОстатков. Очистить ();

Екзель = Новый COMObject ("Excel. Application");

Попытка

Екзель. WorkBooks. Open (ФайлОстатков);

Исключение

Предупреждение ("Excel не удалось открыть файл " + ФайлОстатков);

Возврат;

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

НомерСтрокиСДанными = ПерваяСтрока;

Лист = Екзель. Sheets (1);

КолВоКолонок = Лист. Cells (1,1). SpecialCells (11). Column;

КолВоСтрок = Лист. Cells (1,1). SpecialCells (11). Row;

Счетчик = 1;

Для индС = (НомерСтрокиСДанными + 1) По КолВоСтрок Цикл

КодКонтрБЭСТ = СокрЛП (Лист. Cells (индС, КолонкаКодаКонтрагента). Value);

СтрТабКонтр = ТаблицаКонтрагентов. Найти (КодКонтрБЭСТ, "КодБЭСТ");

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

ПротоколОшибок. ДобавитьСтроку ("Неизвестный контрагент с кодом " + КодКонтрБЭСТ);

Продолжить;

КонецЕсли;

ВнутрКод = СтрТабКонтр. ВнутрКод;

Контрагент1С = Справочники. Контрагенты. НайтиПоРеквизиту ("КодБЭСТ", ВнутрКод);

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

ПротоколОшибок. ДобавитьСтроку ("Контрагент " + СтрТабКонтр. Имя + " с внутр. кодом " + ВнутрКод + " не найден в справочнике. ");

Продолжить;

КонецЕсли;

СодержимоеЯчейки = Лист. Cells (индС, КолонкаДебет). Value;

СальдоДебет =? (ЗначениеЗаполнено (СодержимоеЯчейки), Число (СодержимоеЯчейки), 0);

СодержимоеЯчейки = Лист. Cells (индС, КолонкаКредит). Value;

СальдоКредит =? (ЗначениеЗаполнено (СодержимоеЯчейки), Число (СодержимоеЯчейки), 0);

Если (СальдоДебет=0) и (СальдоКредит=0) Тогда

ПротоколОшибок. ДобавитьСтроку ("По контрагенту " + СтрТабКонтр. Имя + " с внутр. кодом " + ВнутрКод + " нет остатков. ");

Продолжить;

КонецЕсли;

НовыйОстаток = ТаблицаОстатков. Добавить ();

НовыйОстаток. Контрагент = Контрагент1С;

НовыйОстаток. СальдоДебет = СальдоДебет;

НовыйОстаток. СальдоКредит = СальдоКредит;

Счетчик = Счетчик+1;

Если Цел (Счетчик/100) =Счетчик/100 Тогда

Состояние ("Загрузка контрагентов. Обработано " + Счетчик + " зап. из " + КолВоСтрок);

КонецЕсли;

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

СформироватьОперацию ();

ТаблицаОстатков. Очистить ();

КонецЕсли;

ОбработкаПрерыванияПользователя ();

КонецЦикла;

Если ТаблицаОстатков. Количество () Тогда

СформироватьОперацию ();

КонецЕсли;

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

Процедура КнопкаВыполнитьНажатие (Кнопка)

Если не ВсеРеквизитыЗаполнены () Тогда

Предупреждение ("Заполните все нужные реквизиты формы!", 20);

Возврат;

КонецЕсли;

Если УдалятьСтарое Тогда

УдалитьСтарыеОперации ();

КонецЕсли;

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка контрагентов начата ***");

ЗагрузкаКонтрагентов ();

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка контрагентов завершена ***");

ПротоколОшибок. ДобавитьСтроку ("********************************************");

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка остатков начата ***");

ЗагрузкаОстатков ();

ПротоколОшибок. ДобавитьСтроку ("*** Загрузка остатков завершена ***");

ПротоколОшибок. ДобавитьСтроку ("********************************************");

Если Вопрос ("Загрузка завершена. Показать протолок ошибок?", РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда

ПротоколОшибок. Показать ("Протокол ошибок переноса данных");

КонецЕсли;

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

Процедура ФайлКонтрагентовНачалоВыбора (Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

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

Элемент. Значение = ВыборФайла. ПолноеИмяФайла;

КонецЕсли;

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

Процедура КоманднаяПанель2Вывод (Кнопка)

ПротоколОшибок. Показать ("Протокол ошибок переноса данных");

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

Процедура ФайлОстатковНачалоВыбора (Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

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

Элемент. Значение = ВыборФайлаExcel. ПолноеИмяФайла;

КонецЕсли;

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

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

МанипуляцииСВидомДоговора ();

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

Процедура СчетДляДебетаПриИзменении (Элемент)

Если СчетДляКредита. Родитель <> СчетДляДебета. Родитель Тогда

СчетДляКредита = СчетДляДебета;

КонецЕсли;

МанипуляцииСВидомДоговора ();

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

Процедура СчетДляКредитаПриИзменении (Элемент)

Если СчетДляКредита. Родитель <> СчетДляДебета. Родитель Тогда

СчетДляДебета = СчетДляКредита;

КонецЕсли;

МанипуляцииСВидомДоговора ();

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

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

ВыборФайла. Фильтр = "Таблица dbf (*. dbf) |*. dbf";

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

ВыборФайлаExcel. Фильтр = "Таблица Excel (*. xls) |*. xls";

ТаблДБФ = Новый xBase ();

ПротоколОшибок = Новый ТекстовыйДокумент;

ТаблицаКонтрагентов = Новый ТаблицаЗначений;

ТаблицаКонтрагентов. Колонки. Добавить ("КодБЭСТ");

ТаблицаКонтрагентов. Колонки. Добавить ("ВнутрКод");

ТаблицаКонтрагентов. Колонки. Добавить ("Имя");

ТаблицаОстатков = Новый ТаблицаЗначений;

ТаблицаОстатков. Колонки. Добавить ("Контрагент");

ТаблицаОстатков. Колонки. Добавить ("СальдоДебет");

ТаблицаОстатков. Колонки. Добавить ("СальдоКредит");

Приложение И

Листинг обработки "Загрузка номенклатуры"

Перем ТаблДБФ;

Перем ВыбранныйФайл;

Перем ВыбранныйФайлГрупп;

Перем ФайлСохранения;

Перем мПерезаписывать;

Перем ТаблицаЕдиниц;

Перем ПрефиксКода;

Перем Протокол;

Функция ЕстьВсеПоля (Поля)

Рез = Истина;

Если Поля. Найти ("NNUM") =Неопределено Тогда

Сообщить ("Отсутствует поле NNUM", СтатусСообщения. Важное);

Рез = Ложь;

КонецЕсли;

Если Поля. Найти ("GRUP") =Неопределено Тогда


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.