Адаптация автоматизированной системы "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") =Неопределено Тогда
Подобные документы
Разработка автоматизированной системы учета успеваемости студентов факультета компьютерных наук и телекоммуникаций НИУ "БелГУ". Проектирование структуры конфигурации на платформе "1С: Предприятие 8". Рекомендации по обучению работе с конфигурацией.
курсовая работа [4,4 M], добавлен 05.01.2015Современные программные продукты для автоматизации ведения бухгалтерского учета. Описание автоматизированной системы для учета выбранного вида деятельности на предприятии в среде 1С. Технология инсталляции, запуска и работы с программным изделием.
курсовая работа [3,4 M], добавлен 14.01.2013Общая характеристика и организационная структура ОАО "Каравай". Комплексное проектирование автоматизированной системы учета готовой продукции для исследуемой организации в программной среде Borland Delphi 9.0. Оценка экономической эффективности проекта.
курсовая работа [1,9 M], добавлен 14.09.2012Анализ имеющихся систем для управления учебным заведением. Запросы и потребности автоматизации управления учебным процессом в филиале КГПУ им. В.П.Астафьева. Оценка эффективности внедрения новой адаптированной автоматизированной системы управления.
дипломная работа [1,1 M], добавлен 19.06.2013Разработан комплекс задач "Учет клиентов на предприятие" для автоматизации работы предприятия. Описано техническое проектирование системы, описание алгоритма комплексного учета клиентов на предприятии. Процесс обслуживания автоматизированной системы.
курсовая работа [3,0 M], добавлен 13.08.2019Обзор медицинских информационных систем. Анализ и моделирование автоматизированной системы "Регистратура". Требования к составу и параметрам вычислительной системы. Обоснование выбора системы управления базами данных. Разработка инструкции пользователя.
дипломная работа [1,2 M], добавлен 14.10.2012Разработка автоматизированной системы с использованием программных продуктов: 1С: Предприятие 8.2 (для создания автоматизированной системы) и CASE средство BPwin (для проектирования структуры системы). Обучение пользователей работе с конфигурацией.
курсовая работа [3,6 M], добавлен 04.11.2014Система "1С:Предприятие 8.0 Управление бухгалтерией" предназначена для автоматизации ведения: бухгалтерского, налогового, управленческого учета и учета заработной платы сотрудников. Меры по устранению угроз безопасности сети при работе с ситемой.
курсовая работа [1,2 M], добавлен 29.11.2008Разработка проекта автоматизированной системы обработки экономической информации для малого рекламного предприятия. Назначение и основные функции проектируемой системы, требования к ней. Технология обработки и защиты экономической информации предприятия.
контрольная работа [27,8 K], добавлен 10.07.2009Требования к функциональным характеристикам информационной системы "Подписка". Функциональное проектирование автоматизированной системы ведения учета основных средств на предприятии. Проектирование базы данных автоматизированной системы ведения учета.
курсовая работа [753,0 K], добавлен 16.01.2015