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 |
|