Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 04:55

Объединить 2 обработки в одну, 2 формы или одна общая?

Автор Yuliya_Den, 18 апр 2016, 16:00

0 Пользователей и 1 гость просматривают эту тему.

Yuliya_Den

У меня есть 2 обработки. Функционал одинаковый - загрузка цен из файла cvs и создание док-та «Установка цен номенклатуры». Но для каждой из обработок в файлах загрузки отличаются реквизиты. Реквизиты «1,2,3» - одинаковые в обоих случаях, но в одном случае добавляются реквизиты «4,5,6», а в другом «7,8».
Обработки необходимо объединить в одну, с возможностью выбора типа загрузки (по «4,5,6» либо по «7,8»).

Вот я думаю, как сделать легче и быстрее (очень срочно надо):

Можно сделать 3 формы в одной обработке: 1 форму выбора условия, и 2 отдельные формы для «4,5,6» либо по «7,8», условно ф1 и ф2 (по-сути перетащить существующие в 2 обработках + создать 1 новую). «Форму выбора условия» установить, как Основную. И вызывать по условию либо ту, либо другую  форму «по наименованию» из кода в «форме выбора условия».

Либо вариант 2:  форму сделать 1, и по условию добавлять и заполнять те, либо другие колонки.

Rasty

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Yuliya_Den

Ну это понятно. Вопрос, как легче/быстрее/правильнее. Я  все равно и то, и то смутно представляю.

vitasw


Yuliya_Den

Но в этом случае надо переписывать механизм заполнения и форму переделывать. А если взять 2 существующие формы, то надо только сделать третью.

Rasty

зачем переписывать то? у вас есть код, который можно выполнять при определенных условиях
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

wise

(4) сделай одну форму, заодно и код оптимизируешь...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Yuliya_Den

Вот легче сказать, чем сделать))).
А не напомните, какие методы гуглить для того, чтобы
Если ХХХ Тогда ДобавитьКолонки1_2_3 Иначе ДобавитьКолонки4_5_6 ?

Rasty

Таблица.Колонки.Добавить("Имя")?
Добавлено: 18 апр 2016, 16:55


а можно еще видимость устанавливать...
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Yuliya_Den

получилось следующее:

&НаКлиенте
Процедура ИмпортXLS(Команда)
Если ИмяФайла="" Тогда
Предупреждение("Не выбран файл для загрузки!",30);
Возврат;
КонецЕсли;

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

НомерСтроки=2;
КолВоСтрок = ЗагружаемыйФайл.КоличествоСтрок();
ТЗ_Данные.Очистить();
Для НомерСтроки=2 по КолВоСтрок Цикл
Состояние("Обработано: " + НомерСтроки + " из " + КолВоСтрок + " "  +Строка(Формат(?(ЗагружаемыйФайл.КоличествоСтрок()=0,0,((100*НомерСтроки)/ЗагружаемыйФайл.КоличествоСтрок())),"ЧЦ=3; ЧДЦ=0"))+" %");
ОбработкаПрерыванияПользователя();
Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
Разделитель = ";";
МассивКол = РазложитьСтрокуВМассивПодстрок(Строка,Разделитель);

Если Элементы.Группа_Модель_Номер = Истина Тогда

Группа = МассивКол[0];
Модель = МассивКол[1];
Номер = МассивКол[2];

Если ПустаяСтрока(Группа) ИЛИ ПустаяСтрока(Модель) Тогда
Прервать;
КонецЕсли;
ЦенаРозница =  МассивКол[3];
ВалРозница =  МассивКол[4];
ЦенаОпт =  МассивКол[5];
ВалОпт =  МассивКол[6];
ЦенаОпт1 =  МассивКол[7];
ВалОпт1 =  МассивКол[8];
ЦенаОбл =  МассивКол[9];
ВалОбл =  МассивКол[10];
ЦенаОпт0 =  МассивКол[11];
ВалОпт0 =  МассивКол[12];

Если ЦенаРозница = "" Тогда ЦенаРозница = 0; КонецЕсли;
Если ЦенаОпт = "" Тогда ЦенаОпт = 0; КонецЕсли;
Если ЦенаОпт1 = "" Тогда ЦенаОпт1 = 0; КонецЕсли;
Если ЦенаОбл = "" Тогда ЦенаОбл = 0; КонецЕсли;
Если ЦенаОпт0 = "" Тогда ЦенаОпт0 = 0; КонецЕсли;

Если Число(ЦенаРозница) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Группа = Группа;
НоваяСтрока.Модель = Модель;
НоваяСтрока.Номер = Номер;

НоваяСтрока.Цена = Число(ЦенаРозница);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Розница" + ВалРозница);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуГруппеМоделиИНомеру(Группа, Модель, Номер);
Иначе
КонецЕсли;
Если Число(ЦенаОпт) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Группа = Группа;
НоваяСтрока.Модель = Модель;
НоваяСтрока.Номер = Номер;

            НоваяСтрока.Цена = Число(ЦенаОпт);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Опт" + ВалОпт);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуГруппеМоделиИНомеру(Группа, Модель, Номер);
Иначе
КонецЕсли;
Если Число(ЦенаОпт1) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Группа = Группа;
НоваяСтрока.Модель = Модель;
НоваяСтрока.Номер = Номер;

НоваяСтрока.Цена = Число(ЦенаОпт1);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Опт1" + ВалОпт1);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуГруппеМоделиИНомеру(Группа, Модель, Номер);
Иначе
КонецЕсли;
Если Число(ЦенаОбл) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Группа = Группа;
НоваяСтрока.Модель = Модель;
НоваяСтрока.Номер = Номер;

НоваяСтрока.Цена = Число(ЦенаОбл);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Область" + ВалОбл);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуГруппеМоделиИНомеру(Группа, Модель, Номер); 
Иначе
КонецЕсли;
Если Число(ЦенаОпт0) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Группа = Группа;
НоваяСтрока.Модель = Модель;
НоваяСтрока.Номер = Номер;

НоваяСтрока.Цена = Число(ЦенаОпт0);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Опт0" + ВалОпт0);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуГруппеМоделиИНомеру(Группа, Модель, Номер); 
Иначе
КонецЕсли;

Иначе

    Артикул = МассивКол[0];
Производитель = МассивКол[1];

Если ПустаяСтрока(Артикул) ИЛИ ПустаяСтрока(Производитель) Тогда
Прервать;
КонецЕсли;

ЦенаРозница =  МассивКол[2];
ВалРозница =  МассивКол[3];
ЦенаОпт =  МассивКол[4];
ВалОпт =  МассивКол[5];
ЦенаОпт1 =  МассивКол[6];
ВалОпт1 =  МассивКол[7];
ЦенаОбл =  МассивКол[8];
ВалОбл =  МассивКол[9];
ЦенаОпт0 =  МассивКол[10];
ВалОпт0 =  МассивКол[11];

Если ЦенаРозница = "" Тогда ЦенаРозница = 0; КонецЕсли;
Если ЦенаОпт = "" Тогда ЦенаОпт = 0; КонецЕсли;
Если ЦенаОпт1 = "" Тогда ЦенаОпт1 = 0; КонецЕсли;
Если ЦенаОбл = "" Тогда ЦенаОбл = 0; КонецЕсли;
Если ЦенаОпт0 = "" Тогда ЦенаОпт0 = 0; КонецЕсли;


Если Число(ЦенаРозница) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Артикул = Артикул;
НоваяСтрока.Производитель= Производитель;
НоваяСтрока.Цена = Число(ЦенаРозница);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Розница" + ВалРозница);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуПроизводителю(Артикул, Производитель);
Иначе
КонецЕсли;
Если Число(ЦенаОпт) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Артикул = Артикул;
НоваяСтрока.Производитель= Производитель;
            НоваяСтрока.Цена = Число(ЦенаОпт);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Опт" + ВалОпт);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуПроизводителю(Артикул, Производитель);
Иначе
КонецЕсли;
Если Число(ЦенаОпт1) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Артикул = Артикул;
НоваяСтрока.Производитель= Производитель;
НоваяСтрока.Цена = Число(ЦенаОпт1);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Опт1" + ВалОпт1);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуПроизводителю(Артикул, Производитель);
Иначе
КонецЕсли;
Если Число(ЦенаОбл) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Артикул = Артикул;
НоваяСтрока.Производитель= Производитель;
НоваяСтрока.Цена = Число(ЦенаОбл);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Область" + ВалОбл);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуПроизводителю(Артикул, Производитель); 
Иначе
КонецЕсли;
Если Число(ЦенаОпт0) > 0 Тогда
НоваяСтрока = ТЗ_Данные.Добавить();
НоваяСтрока.Артикул = Артикул;
НоваяСтрока.Производитель= Производитель;
НоваяСтрока.Цена = Число(ЦенаОпт0);
НоваяСтрока.ВидЦены     = ВозвратВидЦены("Опт0" + ВалОпт0);
НоваяСтрока.Номенклатура = ВозвратНоменклатурыПоАртикулуПроизводителю(Артикул, Производитель); 
Иначе
КонецЕсли;

КонецЕсли;
КонецЦикла;

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


Буду тестировать...
Добавлено: 19 апр 2016, 09:12


Ребята, а чтобы при условии «х» колонки с 1 по 3 добавлялись и заполнялись, а с «4 по 5» - наоборот сворачивались, использовать ТаблицаЗначений.Свернуть ?


Добавлено: 19 апр 2016, 10:40


Это "Видимость", а не "Свернуть". Вот так в итоге работает:


Элементы.ТЗ_ДанныеАртикул.Видимость = Истина;
Элементы.ТЗ_ДанныеПроизводитель.Видимость = Истина;

Элементы.ТЗ_ДанныеВидЦены.Видимость = Ложь;
Элементы.ТЗ_ДанныеГруппа.Видимость = Ложь;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск