Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1С Программирование и поддержка (1C)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

StBender



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
Док = ПолучитьCOMОбъект(ФайлЗагрузки);  
КоличествоСтраниц = КолЛистов; //указывается количество обрабатываемых листов в экселе
ном=0;
     
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура,
                          |    ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК КоличествоОстаток,
                          |    ОстаткиТоваровКомпанииОстатки.СуммаРознОстаток КАК СуммаРознОстаток
                          |ИЗ
                          |    РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстаткиТоваровКомпанииОстатки
                          |ГДЕ
                          |    ОстаткиТоваровКомпанииОстатки.Номенклатура = &Товар");
ТабличнаяЧасть= Новый ТаблицаЗначений;  
ТабличнаяЧасть.Колонки.Добавить("Номенклатура",                Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТабличнаяЧасть.Колонки.Добавить("Цена",                Новый ОписаниеТипов("Число"));
 
Для ТекНомер = 1 По КоличествоСтраниц Цикл  
    счСтроки = 1;  //c какой строки начинать
    Если Цены.Код="ЦБ000002" тогда   //розничная
        счСтроки = 1;
        Цена = 0;
        Пока счстроки<КолвоЯчеек Цикл  
            ЦенаТекущая=0;
            счстроки = счстроки+1;
            ном=ном+1;
            Если ТипЗнч(Док.Sheets(ТекНомер).Cells(СчСтроки,5).Value) = Тип("Число") тогда
                Товар = Док.Sheets(ТекНомер).Cells(СчСтроки,1).Value;  
                РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Товар);
                Запрос.УстановитьПараметр("Товар",РезультатПоиска);
                Остаток = Запрос.Выполнить().Выбрать();
                ЦенаТ=окр((Док.Sheets(ТекНомер).Cells(СчСтроки,5).Value),0);
                 
                ЦенаТекущая =0;    
                ОбработкаПрерыванияПользователя();
                ЦенаТекущая = обПолучитьЦену(Справочники.ТипыЦен.НайтиПоКоду("ЦБ000002"),РезультатПоиска);
 
                Ост=0;
                Если число(ЦенаТекущая)<>число(ЦенаТ) Тогда  
                    Пока Остаток.Следующий() цикл
                        Ост = Остаток.КоличествоОстаток;
                    Конеццикла;
                                                     
                    Если (РезультатПоиска.Пустая()=ложь) и (Ост<=0) тогда
                            Если РезультатПоиска.Родитель<>Справочники.Номенклатура.НайтиПоКоду("ЦБ069868") тогда
                         
                        //заполнение таблицы
                        тзНоваяСтрока = ТабличнаяЧасть.Добавить();
                        тзНоваяСтрока.Номенклатура = РезультатПоиска;
                        тзНоваяСтрока.Цена = ЦенаТ;
                            конецесли;
                         
                    КонецЕсли;
                конецесли;
                КонецЕсли;
            Состояние(ном);    
        КонецЦикла;
         
    иначе
         Пока счстроки<КолвоЯчеек Цикл  
            счстроки = счстроки+1;
            ном=ном+1;
                Товар = Док.Sheets(ТекНомер).Cells(СчСтроки,1).Value;  
                ЦенаО=Док.Sheets(ТекНомер).Cells(СчСтроки,4).Value;
                РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Товар);
                Запрос.УстановитьПараметр("Товар",РезультатПоиска);
                Остаток = Запрос.Выполнить().Выбрать();
                ЦенаО=окр((Док.Sheets(ТекНомер).Cells(СчСтроки,5).Value),0);
                                ОбработкаПрерыванияПользователя();
                ЦенаТекущая = 0;
                ЦенаТекущая = обПолучитьЦену(Цены,РезультатПоиска);
 
                Ост=0;
                Если число(ЦенаТекущая)<>число(ЦенаО) Тогда  
                    Пока Остаток.Следующий() цикл
                        Ост = Остаток.КоличествоОстаток;
                    Конеццикла;
                    Если (РезультатПоиска.Пустая()=ложь) и (Ост<=0) тогда
                    //заполнение таблицы
                        тзНоваяСтрока = ТабличнаяЧасть.Добавить();
                        тзНоваяСтрока.Номенклатура = РезультатПоиска;
                        тзНоваяСтрока.Цена = ЦенаО;
 
                    КонецЕсли;    
                    Состояние(строка(ном)+"   "+Строка(РезультатПоиска));    
                конецесли;  
             КонецЦикла;
     
     КонецЕсли;
КонецЦикла;  
Состояние(ном);
НовыйДокумент = Документы.ИзменениеЦен.СоздатьДокумент();  
НовыйДокумент.Дата = ТекущаяДата();  
НовыйДокумент.Автор=АвторДок;
НовыйДокумент.ДатаНачалаДействия=ДатаВступления;
НовыйДокумент.Организация=Организация;
НовыйДокумент.ПодразделениеКомпании=Подразделение;
НовыйДокумент.ВалютаДокумента=Валюта;
НовыйДокумент.КурсДокумента=1;
НовыйДокумент.ТипЦен=Цены;
НовыйДокумент.БазовыйТипЦен=Цены;
НовыйДокумент.ПодразделениеКомпанииПолучатель = Подразделение;
НовыйДокумент.Комментарий="Загружен из прайса";
 
НовыйДокумент.Комментарий="Загружен из прайса";
сообщить("Производится формирование документа установки цен №"+Новыйдокумент.Номер);
Для каждого СтрокаТаблицы из ТабличнаяЧасть цикл
    НоваяСтрока = НовыйДокумент.Товары.Добавить();
    НоваяСтрока.Номенклатура=СтрокаТаблицы.Номенклатура;
    НоваяСтрока.ЕдиницаИзмерения=СтрокаТаблицы.Номенклатура.ОсновнаяЕдиницаИзмерения;
    НоваяСтрока.Коэффициент=1;
    НоваяСтрока.ЦенаБазовая = СтрокаТаблицы.Цена;
    НоваяСтрока.Цена=СтрокаТаблицы.Цена;
конеццикла;
Форма = НовыйДокумент.ПолучитьФорму(Форма);
Форма.Открыть();
//НовыйДокумент.Записать();
Док.Application.Quit();
Сообщить("Документ № "+Новыйдокумент.Номер+" от"+Новыйдокумент.Дата+" Создан без ошибок. Требуется проведение!");
Скр

Всего записей: 250 | Зарегистр. 18-06-2008 | Отправлено: 13:48 18-06-2014 | Исправлено: StBender, 11:33 19-06-2014
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1С Программирование и поддержка (1C)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru