Адаптация автоматизированной системы "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
Подобные документы
Разработка автоматизированной системы учета успеваемости студентов факультета компьютерных наук и телекоммуникаций НИУ "БелГУ". Проектирование структуры конфигурации на платформе "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