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

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

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

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

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

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

Рез = Ложь;

КонецЕсли;

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

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

Рез = Ложь;

КонецЕсли;

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

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

Рез = Ложь;

КонецЕсли;

Возврат Рез;

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

Функция НайтиГруппу (ИмяГруппы)

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

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

|Номенклатура. Ссылка

|ИЗ

|Справочник. Номенклатура КАК Номенклатура

|ГДЕ

|Номенклатура. ЭтоГруппа = ИСТИНА

|И Номенклатура. ПометкаУдаления = ЛОЖЬ

|И Номенклатура. Наименование = &ИмяГруппы

|И Номенклатура. Родитель = &Родитель";

Запрос. УстановитьПараметр ("ИмяГруппы", ИмяГруппы);

Запрос. УстановитьПараметр ("Родитель", ГруппаДляЗагрузки);

Выборка = Запрос. Выполнить (). Выбрать ();

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

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

Иначе

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

КонецЕсли;

КонецФункции // НайтиГруппу ()

Функция ЗагрузитьГруппы ()

ТабГрупп = Новый ТаблицаЗначений;

ТабГрупп. Колонки. Добавить ("Код");

ТабГрупп. Колонки. Добавить ("Наименование");

ТабГрупп. Колонки. Добавить ("Группа1С");

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

Возврат ТабГрупп;

КонецЕсли;

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

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

КонецЕсли;

Попытка

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

Исключение

Сообщить ("Не получилось открыть "+ФайлГрупп+": "+ ОписаниеОшибки ());

Возврат ТабГрупп;

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

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

Сообщить ("Не получилось открыть "+ФайлГрупп+": "+ ОписаниеОшибки ());

Возврат ТабГрупп;

КонецЕсли;

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

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

Возврат ТабГрупп;

КонецЕсли;

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

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

СтрТаб = ТабГрупп. Добавить ();

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

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

Группа1С = НайтиГруппу (Имя);

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

СтрТаб. Группа1С = Группа1С;

Иначе // попытаемся создать группу

НовГруппа = Справочники. Номенклатура. СоздатьГруппу ();

НовГруппа. Родитель = ГруппаДляЗагрузки;

НовГруппа. Наименование = Имя;

Попытка

НовГруппа. Записать ();

СтрТаб. Группа1С = НовГруппа. Ссылка;

Исключение

Сообщить ("Не получилось создать группу "+Имя+": "+ ОписаниеОшибки ());

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

КонецЕсли;

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

Прервать;

КонецЕсли;

КонецЦикла;

Возврат ТабГрупп;

КонецФункции // ЗагрузитьГруппы ()

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

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

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

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

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

КонецЕсли;

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

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

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

КонецЕсли;

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

Ответ = Вопрос ("Не выбран файл групп номенклатуры. Загрузить все позиции в группу " + ГруппаДляЗагрузки + "?", РежимДиалогаВопрос. ДаНет);

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

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

Иначе

мЗагрузкаПоГруппам = Ложь;

КонецЕсли;

КонецЕсли;

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

Сообщить ("Не выбрана Ставка НДС по умолчанию");

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

КонецЕсли;

Если ЕдиницаПоУмолчанию. Пустая () Тогда

Сообщить ("Не выбрана единица измерения по умолчанию");

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

КонецЕсли;

Если ЗагружаемТовары=1 Тогда

ПрефиксКода = "Т";

ИначеЕсли ЗагружаемТовары=2 Тогда

ПрефиксКода = "М";

ИначеЕсли ЗагружаемТовары=3 Тогда

ПрефиксКода = "У";

Иначе

Сообщить ("Не установлен вид загружаемых данных");

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

КонецЕсли;

Если Перезаписывать=1 Тогда

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

ИначеЕсли Перезаписывать=2 Тогда

мПерезаписывать = Ложь;

Иначе

Сообщить ("Не выбрано действие при нахождении элемента");

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

КонецЕсли;

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

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

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

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

мЗагрузкаПоГруппам = Истина;

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

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

Возврат;

КонецЕсли;

Если мЗагрузкаПоГруппам Тогда

ТаблицаГрупп = ЗагрузитьГруппы ();

Если ТаблицаГрупп. Количество () =0 Тогда

Ответ = Вопрос ("Не удалось загрузить таблицу групп. Загрузить все данные в группу " + ГруппаДляЗагрузки +"?", РежимДиалогаВопрос. ДаНет);

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

Возврат;

Иначе

мЗагрузкаПоГруппам = Ложь;

КонецЕсли;

КонецЕсли;

КонецЕсли;

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

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

КонецЕсли;

Попытка

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

Исключение

Сообщить ("Не получилось открыть "+ВыбФайл+": "+ ОписаниеОшибки ());

Возврат;

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

ПоляБазы = ТаблДБФ. Поля;

Если не ЕстьВсеПоля (ПоляБазы) Тогда

Сообщить ("Структура выбранного файла неверна!", СтатусСообщения. ОченьВажное);

Возврат;

КонецЕсли;

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

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

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

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

Возврат;

КонецЕсли;

Счетчик = 1;

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

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

ЕдБЭСТ = ВРег (СокрЛП (ТаблДБФ. ED));

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

Протокол. ДобавитьСтроку ("Не выбрана единица измерения для " + Имя +". используем " + ЕдиницаПоУмолчанию);

Ед1С = ЕдиницаПоУмолчанию;

Иначе

СтрЕд1С = СоответствиеЕдиниц. Найти (ЕдБЭСТ, "ЕдиницаБЭСТ");

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

Протокол. ДобавитьСтроку ("Не найдено соответствие единицы измерения " + ЕдБЭСТ + " для " + Имя +". используем " + ЕдиницаПоУмолчанию);

Ед1С = ЕдиницаПоУмолчанию;

Иначе

Ед1С = СтрЕд1С. Единица1С;

КонецЕсли;

КонецЕсли;

КодБЭСТ = ПрефиксКода +"." + СокрЛП (ТаблДБФ. GRUP) +"." + СокрЛП (ТаблДБФ. NNUM);

НоваяСтрока = ТаблицаПросмотра. Добавить ();

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

// НоваяСтрока. Код1С = Имя;

НоваяСтрока. КодБЭСТ = КодБЭСТ;

НоваяСтрока. Единица = Ед1С;

СтрГруппы = ТаблицаГрупп. Найти (ТаблДБФ. GRUP, "Код");

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

Если мЗагрузкаПоГруппам Тогда

Протокол. ДобавитьСтроку ("Не найдена группа " + ТаблДБФ. GRUP + " для " + Имя);

КонецЕсли;

НоваяСтрока. Группа = ГруппаДляЗагрузки. Наименование;

Группа1С = Справочники. Номенклатура. ПустаяСсылка ();

// Группа1С = ГруппаДляЗагрузки;

Иначе

НоваяСтрока. Группа = СтрГруппы. Наименование;

Группа1С = СтрГруппы. Группа1С;

КонецЕсли;

// поищем элемент по коду БЭСТ

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

Если Элемент. Пустая () Тогда // не нашли

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

Если Группа1С. Пустая () Тогда

Если мЗагрузкаПоГруппам Тогда // такое пропускаем - ошибочная ситуация

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

Иначе // загрузка без иерархии (не мЗагрузкаПоГруппам)

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

КонецЕсли;

Иначе

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

КонецЕсли;

Иначе // Нашли, перезапишем существующий

Объект = Элемент. ПолучитьОбъект ();

КонецЕсли;

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

Объект. НаименованиеПолное = Имя;

Объект. БазоваяЕдиницаИзмерения = Ед1С;

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

Объект. СтавкаНДС = СтавкаНДС;

Если ЗагружаемТовары=3 Тогда

Объект. Услуга = Истина;

КонецЕсли;

Попытка

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

НоваяСтрока. Код1С = Объект. Код;

Исключение

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

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

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

Прервать;

КонецЕсли;

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

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

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

КонецЕсли;

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

КонецЦикла;

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

Процедура КоманднаяПанель3Действие1 (Кнопка)

ЗначениеВФайл (ИмяФайлаСохранения, СоответствиеЕдиниц);

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

Процедура КоманднаяПанель3Действие (Кнопка)

СоответствиеЕдиниц = ЗначениеИзФайла (ИмяФайлаСохранения);

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

Процедура КоманднаяПанель2ЗагрузитьЕдиницы (Кнопка)

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

Ответ = Вопрос ("Таблица соответствия не пуста. Очистить?", РежимДиалогаВопрос. ДаНет);

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

Возврат;

Иначе

СоответствиеЕдиниц. Очистить ();

КонецЕсли;

КонецЕсли;

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

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

КонецЕсли;

Попытка

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

Исключение

Сообщить ("Не получилось открыть "+ВыбФайл+": "+ ОписаниеОшибки ());

Возврат;

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

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

ПоляБазы = ТаблДБФ. Поля;

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

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

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

КонецЕсли;

Счетчик = 1;

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

ЕдБЭСТ = ВРег (СокрЛП (ТаблДБФ. ED));

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

Сообщить ("Не задана единица измерения для " + СокрЛП (ТаблДБФ. NAME), СтатусСообщения. Внимание);

Ед1С = ЕдиницаПоУмолчанию;

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

СтрокаЕд = СоответствиеЕдиниц. Найти (ЕдБЭСТ, "ЕдиницаБЭСТ");

Если СтрокаЕд = Неопределено Тогда // такой ед. еще нет!

СтрТаб = СоответствиеЕдиниц. Добавить ();

СтрТаб. ЕдиницаБЭСТ = ЕдБЭСТ;

ЕдИзСправочника = Справочники. КлассификаторЕдиницИзмерения. НайтиПоНаименованию (ЕдБЭСТ);

Если не ЕдИзСправочника. Пустая () Тогда

СтрТаб. Единица1С = ЕдИзСправочника;

КонецЕсли;

Иначе // уже есть - ничего не делаем!

КонецЕсли;

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

Прервать;

КонецЕсли;

КонецЦикла;

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

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

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

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

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

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

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

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

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

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

ФайлСохранения. Фильтр = "Внутренняя таблица (*. tbl) |*. tbl";

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

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

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

Приложение К

Листинг обработки "ЗагрузкаОстатковНоменклатурыБЭСТ"

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

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

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

Перем ВыбранныйФайлНоменклатуры;

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

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

Перем ТаблицаСчетов;

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

Перем ВестиПартионныйУчетБУ, ВестиСкладскойУчетБУ, ВестиСуммовойУчетПоСкладамБУ;

Перем ВестиПартионныйУчетНУ, ВестиСкладскойУчетНУ, ВестиСуммовойУчетПоСкладамНУ;

Функция ЗагрузитьСклады ()

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

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

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

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

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

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

КонецЕсли;

Попытка

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

Исключение

Сообщить ("Не получилось открыть "+ФайлГрупп+": "+ ОписаниеОшибки ());

Возврат ТабСкладов;

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

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

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

Возврат ТабСкладов;

КонецЕсли;

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

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

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

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

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

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

Склад1С = Справочники. Склады. НайтиПоКоду (Код);

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

СтрТаб. Склад1С = Склад1С;

Иначе // попытаемся создать склад

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

НовСклад. Наименование = Имя;

НовСклад. Код = Код;

НовСклад. ВидСклада = Перечисления. ВидыСкладов. Оптовый;

Попытка

НовСклад. Записать ();

СтрТаб. Склад1С = НовСклад. Ссылка;

Исключение

Сообщить ("Не получилось создать склад "+Имя+": "+ ОписаниеОшибки ());

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

КонецЕсли;

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

Прервать;

КонецЕсли;

КонецЦикла;

Возврат ТабСкладов;

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

Функция ПолучитьСчет1С (Знач СчетБЭСТ)

ОригСчетБЭСТ = СчетБЭСТ;

КодСчета = Лев (СчетБЭСТ,2);

СчетБЭСТ = Сред (СчетБЭСТ,3);

Длина = СтрДлина (СчетБЭСТ);

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

КолСимв = Мин (Длина,2);

КодСчета = КодСчета +"." + Формат (Число (Лев (СчетБЭСТ, Длина)),"ЧЦ=2; ЧВН=");

СчетБЭСТ = Сред (СчетБЭСТ, Длина+1);

Длина = СтрДлина (СчетБЭСТ);

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

КолСимв = Мин (Длина,2);

КодСчета = КодСчета +"." + Формат (Число (Лев (СчетБЭСТ, Длина)),"ЧЦ=2; ЧВН=");

СчетБЭСТ = Сред (СчетБЭСТ, Длина+1);

Длина = СтрДлина (СчетБЭСТ);

КонецЕсли; // ну больше уж вряд ли будет

КонецЕсли;

НашлиСчет = ПланыСчетов. Хозрасчетный. НайтиПоКоду (КодСчета);

Возврат НашлиСчет;

КонецФункции // ПолучитьСчет1С ()

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

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

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

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

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

КонецЕсли;

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

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

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

КонецЕсли;

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

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

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

КонецЕсли;

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

Сообщить ("Не выбран счет по умолчанию");

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

КонецЕсли;

Если ЗагружаемТовары=1 Тогда

ПрефиксКода = "Т";

ИначеЕсли ЗагружаемТовары=2 Тогда

ПрефиксКода = "М";

Иначе

Сообщить ("Не установлен вид загружаемых данных");

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

КонецЕсли;

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

Сообщить ("Не выбрана организация");

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

КонецЕсли;

Если ВестиПартионныйУчетБУ и Партия. Пустая () Тогда

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

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

КонецЕсли;

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

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

Функция ЗагрузитьНоменклатуру ()

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

Таб. Колонки. Добавить ("КодНоменклатуры");

Таб. Колонки. Добавить ("КодГруппы");

Таб. Колонки. Добавить ("ЦенаБух");

Таб. Колонки. Добавить ("ЦенаНал");

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

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

КонецЕсли;

Попытка

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

Исключение

Сообщить ("Не получилось открыть "+ФайлНоменклатуры+": "+ ОписаниеОшибки ());

Возврат Таб;

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

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

Сообщить ("Таблица номенклатуры пуста!");

Возврат Таб;

КонецЕсли;

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

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

Группа = Врег (СокрЛП (ТаблДБФ. GRUP));

СтрТаб = Таб. Добавить ();

СтрТаб. КодГруппы = Группа;

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

СтрТаб. ЦенаБух = ТаблДБФ. CENA;

СтрТаб. ЦенаНал = ТаблДБФ. CENAN;

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

Прервать;

КонецЕсли;

КонецЦикла;

Возврат Таб;

КонецФункции // ЗагрузитьНоменклатуру ()

Функция НайтиСчетНУПоБУ (СчетБУ)

Результат = ПланыСчетов. Налоговый. ПустаяСсылка ();

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

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

|СоответствиеСчетовБУиНУ. СчетНУ КАК СчетНУ

|ИЗ

|РегистрСведений. СоответствиеСчетовБУиНУ КАК СоответствиеСчетовБУиНУ

|ГДЕ

|СоответствиеСчетовБУиНУ. СчетБУ = &СчетБУ";

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

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

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

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

Результат = Выборка. СчетНУ;

КонецЕсли;

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

КонецФункции // НайтиСчетНУПоБУ ()

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

ТекстКомментария = "<Фирма ЛИСТ> Ввод начальных остатков ТМЦ" +? (ЗагружаемТовары=1, " (товары)", " (материалы)");

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

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

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

|ИЗ

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

|ГДЕ

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

Если не (ВестиСкладскойУчетБУ или ВестиСкладскойУчетНУ) Тогда

Остатки. Свернуть ("Номенклатура, СчетУчета", "Количество, СуммаБух, СуммаНал"); // уберем склад

КонецЕсли;

ТекстКомментария = "Ввод начальных остатков ТМЦ" +? (ЗагружаемТовары=1, " (товары)", " (материалы)");

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

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

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

ВводОстатков. Комментарий = ТекстКомментария;

ВводОстатков. Организация = Организация;

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

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

ВводОстатков. СуммаОперации = Остатки. Итог ("СуммаБух");

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

СчетБУ = СтрТЧ. СчетУчета;

СтрокаСчетаНУ = ТабСоотвСчетов. Найти (СчетБУ, "СчетБУ");

Если СтрокаСчетаНУ = Неопределено Тогда // счета нет в таблице - заполним

СчетНУ = НайтиСчетНУПоБУ (СчетБУ);

Строчка = ТабСоотвСчетов. Добавить ();

Строчка. СчетБУ = СчетБУ;

Строчка. СчетНУ = СчетНУ;

Иначе

СчетНУ = СтрокаСчетаНУ. СчетНУ;

КонецЕсли;

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

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

ПроводкаБУ. Организация = Организация;

ПроводкаБУ. Содержание = ТекстКомментария;

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

ПроводкаБУ. СчетДт = СчетБУ;

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

Если ВестиСкладскойУчетБУ Тогда

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

КонецЕсли;

Если ВестиПартионныйУчетБУ Тогда

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

КонецЕсли;

ПроводкаБУ. КоличествоДт = СтрТЧ. Количество;

ПроводкаБУ. Сумма = СтрТЧ. СуммаБух;

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

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

КонецЦикла; // по строкам таб. остатков

ВводОстатков. Записать ();

Сообщить ("Сформирован документ: " + ВводОстатков);

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

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

Ошибки = Ложь;

Фильтр = Новый Структура ("КодНоменклатуры, КодГруппы");

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

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

Возврат;

КонецЕсли;

ТабСкладов = ЗагрузитьСклады ();

ТабНоменклатуры = ЗагрузитьНоменклатуру ();

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

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

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

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

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

ТабОстатков. Колонки. Добавить ("СуммаБух");

ТабОстатков. Колонки. Добавить ("СуммаНал");

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

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

КонецЕсли;

Попытка

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

Исключение

Сообщить ("Не получилось открыть "+ВыбФайл+": "+ ОписаниеОшибки ());

Возврат;

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

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

Сообщить ("Не получилось открыть "+ВыбФайл+": "+ ОписаниеОшибки ());

Возврат;

КонецЕсли;

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

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

КонецЕсли;

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

ПоляБазы = ТаблДБФ. Поля;

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

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

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

КонецЕсли;

Счетчик = 1;

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

Если ПустаяСтрока (ТаблДБФ. NNUM) Тогда

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

Количество = ТаблДБФ. KOLTEK;

Если Количество = 0 Тогда

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

ВсегоЗаписей = ВсегоЗаписей-1;

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли; // нечего переносить

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

КодБЭСТ = ПрефиксКода +"." + ТаблДБФ. GRUP +"." + ТаблДБФ. NNUM;

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

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

Сообщить ("Не найдено соответствие для " + Имя + " с кодом БЭСТ: " + КодБЭСТ +". Пропускаем", СтатусСообщения. Внимание);

Ошибки = Истина;

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

Если Номенклатура1С. Услуга Тогда // остатков по услугам не бывает

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

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

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

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

Сообщить ("Не найден склад с кодом БЭСТ: " + КодСклада +". Пропускаем", СтатусСообщения. Внимание);

Ошибки = Истина;

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

Склад1С = СтрокаСклад. Склад1С;

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

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

Сообщить ("Счет учета не заполнен, используем счет по умолчанию.", СтатусСообщения. Внимание);

Счет1С = СчетПоУмолчанию;

Иначе

СтрокаСчета = СоответствиеСчетов. Найти (СчетБЭСТ, "СчетБЭСТ");

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

Сообщить ("Счет учета " + СчетБЭСТ + " не имеет соответственного счета 1С. Запись будет пропущена", СтатусСообщения. Внимание);

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

Иначе

Счет1С = СтрокаСчета. Счет1СБух;

КонецЕсли;

КонецЕсли;

Если не Счет1С. ВидыСубконто [0]. ВидСубконто. ТипЗначения. СодержитТип (Тип ("СправочникСсылка. Номенклатура")) Тогда

Сообщить ("Счет " + Счет1С + " не имеет аналитики по номенклатуре. Запись будет пропущена", СтатусСообщения. Внимание);

Ошибки = Истина;

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

Продолжить;

Иначе

Прервать;

КонецЕсли;

КонецЕсли;

СтрТаб = ТабОстатков. Добавить ();

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

СтрТаб. Склад = Склад1С;

СтрТаб. СчетУчета = Счет1С;

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

Фильтр. КодНоменклатуры = СокрЛП (ТаблДБФ. NNUM);

Фильтр. КодГруппы = СокрЛП (ТаблДБФ. GRUP);

МасНомен = ТабНоменклатуры. НайтиСтроки (Фильтр);

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

СтрТабНом = МасНомен [0];

СтрТаб. СуммаБух = СтрТабНом. ЦенаБух * Количество;

СтрТаб. СуммаНал = СтрТабНом. ЦенаНал * Количество;

Иначе

Сообщить ("Не найдена строка номенклатуры "+Имя+" ("+ТаблДБФ. NNUM+". "+ТаблДБФ. GRUP+"). Сумма не будет перенесена");

СтрТаб. СуммаБух = 0;

СтрТаб. СуммаНал = 0;

КонецЕсли;

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

Прервать;

КонецЕсли;

Если ЗаписейНаОперацию>0 Тогда

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

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

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

КонецЕсли;

КонецЕсли;

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

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

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

КонецЕсли;

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

КонецЦикла;

ЭлементыФормы. ТаблицаПросмотра. Колонки. Очистить ();

ТаблицаПросмотра = ТабОстатков. Скопировать ();

ЭлементыФормы. ТаблицаПросмотра. СоздатьКолонки ();

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

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

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

ДатаОперации = НачалоГода (ТекущаяДата ()) - 1;

КонецЕсли;

// определим параметры учетной политики

БУ = ПланыСчетов. Хозрасчетный. Товары. ПолучитьОбъект ();

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

ВестиПартионныйУчетБУ = НЕ (БУ. ВидыСубконто. Найти (ПланыВидовХарактеристик. ВидыСубконтоХозрасчетные. Партии, "ВидСубконто") = Неопределено);

ВестиСкладскойУчетБУ = НЕ (БУ. ВидыСубконто. Найти (ПланыВидовХарактеристик. ВидыСубконтоХозрасчетные. Склады, "ВидСубконто") = Неопределено);

Если ВестиСкладскойУчетБУ Тогда

ВестиСуммовойУчетПоСкладамБУ = БУ. ВидыСубконто. Найти (ПланыВидовХарактеристик. ВидыСубконтоХозрасчетные. Склады, "ВидСубконто"). Суммовой;

Иначе

ВестиСуммовойУчетПоСкладамБУ = Ложь;

КонецЕсли;

ВестиСкладскойУчетНУ = НЕ (НУ. ВидыСубконто. Найти (ПланыВидовХарактеристик. ВидыСубконтоХозрасчетные. Склады, "ВидСубконто") = Неопределено);

Если ВестиСкладскойУчетНУ Тогда

ВестиСуммовойУчетПоСкладамНУ = НУ. ВидыСубконто. Найти (ПланыВидовХарактеристик. ВидыСубконтоХозрасчетные. Склады, "ВидСубконто"). Суммовой;

Иначе

ВестиСуммовойУчетПоСкладамНУ = Ложь;

КонецЕсли;

ЭлементыФормы. Партия. Доступность = ВестиПартионныйУчетБУ;

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

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

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

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

КонецЕсли;

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

Процедура КоманднаяПанель3Действие1 (Кнопка)

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

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

Процедура КоманднаяПанель3Действие (Кнопка)

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

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

Процедура КоманднаяПанель2ЗагрузитьСчета (Кнопка)

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

Ответ = Вопрос ("Таблица соответствия не пуста. Очистить?", РежимДиалогаВопрос. ДаНет);

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

Возврат;

Иначе

СоответствиеСчетов. Очистить ();

КонецЕсли;

КонецЕсли;

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

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

КонецЕсли;

Попытка

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

Исключение

Сообщить ("Не получилось открыть "+ВыбФайл+": "+ ОписаниеОшибки ());

Возврат;

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

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

ПоляБазы = ТаблДБФ. Поля;

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

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

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

КонецЕсли;

Счетчик = 1;

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

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

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

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

Прервать;

КонецЕсли;

Продолжить;

КонецЕсли;

СтрокаСчета = СоответствиеСчетов. Найти (СчетБЭСТ, "СчетБЭСТ");

Если СтрокаСчета = Неопределено Тогда // такого счета еще нет!

Счет1СБ = ПолучитьСчет1С (СчетБЭСТ);

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

Счет1СН = НайтиСчетНУПоБУ (Счет1СБ);

Иначе

Счет1СН = ПланыСчетов. Налоговый. ПустаяСсылка ();

КонецЕсли;

СтрТаб = СоответствиеСчетов. Добавить ();

СтрТаб. СчетБЭСТ = СчетБЭСТ;

СтрТаб. Счет1СБух = Счет1СБ;

СтрТаб. Счет1СНал = Счет1СН;

Иначе // уже есть - ничего не делаем!

КонецЕсли;

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

Прервать;

КонецЕсли;

КонецЦикла;

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

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

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

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

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

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

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

ВыбранныйФайлНоменклатуры. Фильтр = "Таблица dbf (*. dbf) |*. dbf";

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

ФайлСохранения. Фильтр = "Внутренняя таблица (*. tbl) |*. tbl";

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

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

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

Размещено на Allbest.ru


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

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