Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как из общего модуля запустить обработку передав ей параметры

Как из общего модуля запустить обработку передав ей параметры
Я
   sidalexsandr
 
22.03.18 - 11:36
Как из общего модуля запустить обработку передав ей необходимые параметры?
 
 
   Ненавижу 1С
 
1 - 22.03.18 - 11:38
1. создать экземпляр обработки
2. заполнить ее реквизиты параметрами
3. вызвать метод экземпляра
   Вафель
 
2 - 22.03.18 - 11:38
Обработка = ВнешниеОбработка.Создать(имяФайла)
Обработка.МойМетод(Параметры)
   Вафель
 
3 - 22.03.18 - 11:39
Хотя предполагаю, что нужно из справочника внешних обработок
   sidalexsandr
 
4 - 22.03.18 - 11:40
(3) Обработка не внешняя и входит в состав конфигурации
   hhhh
 
5 - 22.03.18 - 11:41
(4) тогда выкинь слово "Внешние"
   sidalexsandr
 
6 - 22.03.18 - 11:49
(5) То есть так
Обработка = Создать(имяФайла)
Обработка.МойМетод(Параметры)

Файл обработки после выгрузки сам удалится или его надо удалять?
   sidalexsandr
 
7 - 22.03.18 - 12:08
И какое имя файла нужно дать? И ещё раз повторюсь: после завершения обработки нужно удалить файл?
   Cyberhawk
 
8 - 22.03.18 - 12:11
Да
   sidalexsandr
 
9 - 22.03.18 - 12:13
(8) А какое имя файла дать и как удалить файл?
   Ненавижу 1С
 
10 - 22.03.18 - 12:15
>>Обработка не внешняя и входит в состав конфигурации

Какой файл?
 
 Рекламное место пустует
   Cyberhawk
 
11 - 22.03.18 - 12:15
Напиши в коде Обработки. и подумай
   sidalexsandr
 
12 - 22.03.18 - 12:16
(10) Вот этот Обработка = Создать(имяФайла)
   sidalexsandr
 
13 - 22.03.18 - 12:17
(2) МойМетод - это экспортная или обычная Процедура Обработки?
   Ненавижу 1С
 
14 - 22.03.18 - 12:18
(13) а подумать?
   igorPetrov
 
15 - 22.03.18 - 12:23
(14) А, зачем?
   sidalexsandr
 
16 - 22.03.18 - 12:45
(14) Мне кажется экспортная
   Evgenchik
 
17 - 22.03.18 - 12:47
(16) экспортная в модуле обработки
   sidalexsandr
 
18 - 22.03.18 - 12:54
(17) Сделал экспортной, пробую.
   sidalexsandr
 
19 - 22.03.18 - 13:00
(18) Не помогло.
   sidalexsandr
 
20 - 22.03.18 - 13:01
Вот текст общего модуля из которого запускаю обработку:
ОбрабСайт = Обработки.ВыгрузкаДляСайта_csv.Создать();
    ОбрабСайт.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничные");
    ОбрабСайт.Каталог = "\\server01\Common_Folder\КОММЕРЧЕСКАЯ СЛУЖБА\МАРКЕТИНГ\ВыгрузкаДляСайта";
    ОбрабСайт.РазделительЗ = Истина;
    ОбрабСайт.ВключитьЗаголовки = Истина;
    ОбрабСайт.КнопкаВыполнитьНажатие("ОсновныеДействияФормыВыполнить");


Вызов Экспортной процедуры обработки вот: КнопкаВыполнитьНажатие("ОсновныеДействияФормыВыполнить") 

Вопрос: почему обработка не запустилась?
   Вафель
 
21 - 22.03.18 - 13:04
На форме кнопки так нельзя нажимать
   Mankubus
 
22 - 22.03.18 - 13:06
(20) смотри внимательно (17)
   drcrasher
 
23 - 22.03.18 - 13:07
(22) а между тем - 12 лет как в 1с
   Малыш Джон
 
24 - 22.03.18 - 13:08
(23) не в 1с, а на форуме
   Evgenchik
 
25 - 22.03.18 - 13:52
Экспортная процедура должна быть не в модуле формы, а модуле обработки.
Нажатие кнопки  - тоже вызывает основную процедуру в модуле обработки.
Тогда ты вызовешь эту основную процедуру и из общего модуля.
   sidalexsandr
 
26 - 22.03.18 - 14:16
(25) Спасибо. Запихал процедуру выгрузки в модуль обработки. Теперь процедура автоматически подставляется в общем модуле, но выгрузки не происходит.

Вопросы:
1) почему не происходит выгрузки
2) как проверить что процедура выгрузки запускается из общего модуля?
   Lexey_
 
27 - 22.03.18 - 14:18
(26) 1.100 причин
2. отладчик
   Базис
 
28 - 22.03.18 - 14:19
У вас там нет программиста?
   sidalexsandr
 
29 - 22.03.18 - 14:25
(28) Есть удаленный программист 1с, но его консультация платна для фирмы. А так я программист 1с. Сильно не пинайте меня я перешел с 1с 7.7 на 8.3. На 8.3 начался 9 месяц программирования, поэтому я ещё новичёк на 8.3
   Вафель
 
30 - 22.03.18 - 14:26
скорее всего от имени сервера нет доступа к нужному каталогу
   silent person
 
31 - 22.03.18 - 14:26
(26) процедура вызывается на сервере ? у пользователя под которым запущен сервер 1С есть доступ к каталогу выгрузки ?
   Evgenchik
 
32 - 22.03.18 - 14:26
(26) Перепиши обработку так, чтобы выгрузка по нажатию кнопки переходила в экспортную процедуру модуля. Когда все проверишь и выгрузка будет работать через кнопку, тогда и запускай через общий модуль.

А так конечно бери отладчик и проверяй
   Любопытная
 
33 - 22.03.18 - 14:30
(29) а в 7.7 без отладчика работал?
 
 
   Вафель
 
34 - 22.03.18 - 14:31
(33) В 77 проще было без отладчика через сообщить
   Cool_Profi
 
35 - 22.03.18 - 14:32
(29) "я перешел с 1с 7.7 на 8.3. На 8.3 начался 9 месяц программирования, поэтому я ещё новичёк на 8.3"
Я на 9й месяц работы на 8ке уже упп запускал )))
А ты с отладкой обработки всё возишься...
   Любопытная
 
36 - 22.03.18 - 14:32
(34) ну вот еще сообщалки лепить какие-то. Там конечно было не так удобно как в 8, но тоже вполне ничего себе, когда непонятно что происходит
   sidalexsandr
 
37 - 22.03.18 - 14:53
(34) Вот и я с помощью Сообщить() жил.
Подскажите как использовать отладчик в регламентном задании?
   Вафель
 
38 - 22.03.18 - 14:54
(36) ну не знаю, он тормозила как пипец знает что и тз не отлаживались толком
   Вафель
 
39 - 22.03.18 - 14:55
(37) запусти его без задания вначале
   sidalexsandr
 
40 - 22.03.18 - 15:05
Поставил точку останова в начале Процедуры и задал время регламентного задания в результате программа не дошла до точки останова.
   sidalexsandr
 
41 - 22.03.18 - 15:06
Куда дальше смотреть?
   Cyberhawk
 
42 - 22.03.18 - 15:07
"Есть удаленный программист 1с, но его консультация платна для фирмы" // Сколько платят?
   sidalexsandr
 
43 - 22.03.18 - 15:07
(42) Не знаю
   Cyberhawk
 
44 - 22.03.18 - 15:13
(43) А тебе?
   Любопытная
 
45 - 22.03.18 - 15:14
(40) запусти принудительно этот код. Например, напиши обработку, которая вызывает этот метод. Или принудительно стартани рег.задание. Не забудь, что рег.задания выполняются в фоне, а значит в отладке надо отладку фоновых заданий тоже включить.
   sidalexsandr
 
46 - 22.03.18 - 15:17
(44) на испытательном сроке 40 далее 50
   sidalexsandr
 
47 - 22.03.18 - 15:18
(45) Где включить отладку фоновых заданий?
   Любопытная
 
48 - 22.03.18 - 15:19
Отладка - Подключение - Автоматическое подключение - Фоновые задания
   sidalexsandr
 
49 - 22.03.18 - 15:38
(48) Спасибо. А как принудительно запустить фоновое задание?
 
 Рекламное место пустует
   Buster007
 
50 - 22.03.18 - 15:45
мне кажется появляется новый уровень в кодинге: пишу с интернетом
типа как читаю со словарем
   Любопытная
 
51 - 22.03.18 - 15:46
(49) есть же консоль рег. заданий. Запусти из нее
   sidalexsandr
 
52 - 22.03.18 - 15:47
(51) Консоль в обработках?
   sidalexsandr
 
53 - 22.03.18 - 15:49
(51) Спасибо нашел консоль. Там:
Ошибка инициализации модуля: Обработка.ВыгрузкаДляСайта_csv.МодульОбъекта

Как узнать подробнее что за ошибка?
   Evgenchik
 
54 - 22.03.18 - 15:49
Обработки.ВыгрузкаДляСайта_csv
Вот ее открой вручную и запусти выгрузку
   sidalexsandr
 
55 - 22.03.18 - 15:51
(54) У меня написано в модуле обработки процедура. То есть я не могу вручную запустить обработку
   Evgenchik
 
56 - 22.03.18 - 15:52
ты издеваешься?
Операции - обработки - ВыгрузкаДляСайта_csv
   Любопытная
 
57 - 22.03.18 - 15:53
(53) там дальше в ошибке должно быть "По причине..." и конкретная причина ошибки.
Процедура точно экспортная?
   sidalexsandr
 
58 - 22.03.18 - 15:56
(57) Процедура экспортная
   sidalexsandr
 
59 - 22.03.18 - 15:57
(57) там дальше в ошибке должно быть "По причине..."
такого нет.

Вопрос: где дальше искать?
   Evgenchik
 
60 - 22.03.18 - 16:01
Ты (32) можешь сделать?
   sidalexsandr
 
61 - 22.03.18 - 16:02
(60) Я запускал отладчик и ставил точку останова. В результате не доходит даже до 1-ой строчке процедуры
   Evgenchik
 
62 - 22.03.18 - 16:05
тогда у тебя должна вываливаться подробная ошибка из-за которой не инициализируется модуль
   sidalexsandr
 
63 - 22.03.18 - 16:09
(60) А можно нажатием кнопки запускать процедуру в модуле обработки?
   Kondarat
 
64 - 22.03.18 - 16:10
(63) Можно, если сделать (32)
   sidalexsandr
 
65 - 22.03.18 - 16:15
(64) Добавил кнопку на форму и в ней нет возможности указать процедуру из модуля обработки.
   Kondarat
 
66 - 22.03.18 - 16:16
(65) Покажи код, где указываешь процедуру.
   sidalexsandr
 
67 - 22.03.18 - 16:18
(66) Процедура ВыгрузитьВСайт() Экспорт
    
    ОбрабСайт = Обработки.ВыгрузкаДляСайта_csv.Создать();
    ОбрабСайт.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничные");
    ОбрабСайт.Каталог = "\\server01\Common_Folder\КОММЕРЧЕСКАЯ СЛУЖБА\МАРКЕТИНГ\ВыгрузкаДляСайта";
    ОбрабСайт.РазделительЗ = Истина;
    ОбрабСайт.ВключитьЗаголовки = Истина;
    ОбрабСайт.КВыполнитьНажатие("ОсновныеДействияФормыВыполнить");
              
    
    
КонецПроцедуры
   Kondarat
 
68 - 22.03.18 - 16:19
(67) Процедура в модуле обработки как определена?
   sidalexsandr
 
69 - 22.03.18 - 16:20
Процедура КВыполнитьНажатие(Кнопка) Экспорт
   Kondarat
 
70 - 22.03.18 - 16:20
+ 68 в обработке ВыгрузкаДляСайта_csv
   Evgenchik
 
71 - 22.03.18 - 16:21
На форме обработки:
   Evgenchik
 
72 - 22.03.18 - 16:21
&НаСервере
Процедура ЗапуститьВручнуюНаСервере()
    ОбъектОбработки = РеквизитФормыВЗначение("Объект");
    ОбъектОбработки.ВыполнитьВыгрузку();
КонецПроцедуры

&НаКлиенте
Процедура ЗапуститьВручную(Команда)
    ЗапуститьВручнуюНаСервере();
КонецПроцедуры
   Evgenchik
 
73 - 22.03.18 - 16:21
В модуле обработки ВыгрузкаДляСайта_csv

Процедура ВыполнитьВыгрузку() Экспорт
//Здесь пишешь код выгрузки

КонецПроцедуры
   Lexey_
 
74 - 22.03.18 - 16:22
(72) обычные формы же
   Lexey_
 
75 - 22.03.18 - 16:22
(67) ну, а говоришь "нет возможности указать процедуру", указал же
   sidalexsandr
 
76 - 22.03.18 - 16:23
(74) Формы обычные
   Evgenchik
 
77 - 22.03.18 - 16:23
Значит еще легче
   sidalexsandr
 
78 - 22.03.18 - 16:24
(75) Это указание в общем модуле. А надо вручную из формы обработки вызвать процедуру модуля обработки и такое как я понимаю не возможно
   Evgenchik
 
79 - 22.03.18 - 16:25
(78) Тебе и 20 много на испытательный, если читать не умеешь
   Lexey_
 
80 - 22.03.18 - 16:25
(78) то есть, всё это время, ты не слушал, что тебе тут говорили?
   Kondarat
 
81 - 22.03.18 - 16:29
(78) Еще раз: как в модуле обработки ВыгрузкаДляСайта_csv определена процедура, которая осуществляет выгрузку?
   sidalexsandr
 
82 - 22.03.18 - 16:38
(81) Да
   Kondarat
 
83 - 22.03.18 - 16:39
(82) Что "Да". Я спросил КАК, а не ГДЕ.
   Lexey_
 
84 - 22.03.18 - 16:39
(82) вот те жестишь)))похлеще Ливингстара
   Evgenchik
 
85 - 22.03.18 - 16:47
Покажи КОД модуля обработки ВыгрузкаДляСайта_csv
   sidalexsandr
 
86 - 22.03.18 - 16:55
(85) Вот:
Процедура КВыполнитьНажатие(Кнопка) Экспорт
    Каталог = "\\server01\Common_Folder\КОММЕРЧЕСКАЯ СЛУЖБА\МАРКЕТИНГ\ВыгрузкаДляСайта";
    ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничные");
    РазделительТСЗ = Ложь;
    РазделительЗ = Истина;
    ВключитьЗаголовки = Истина;
    КаталогИзображений = "";
    ГруппаТоваров = "";
    СинхронизацияИзображенийКод = Ложь;

    Если Не(ЗначениеЗаполнено(ГруппаТоваров)) Тогда
        спТипыСкидок = Новый Массив;
        спТипыСкидок.Добавить(Справочники.ТипыСкидокНаценок.НайтиПоНаименованию("TradeIn"));
        спТипыСкидок.Добавить(Справочники.ТипыСкидокНаценок.НайтиПоНаименованию("Акция"));
        ТолькоВНаличии = Ложь;
        //

        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
                       |    ЦеныНоменклатурыСрезПоследних.Цена,
                       |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
                       |    ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, 0) КАК ПроцентСкидкиНаценки,
                       |    ХранилищеДополнительнойИнформации.Объект,
                       |    ХранилищеДополнительнойИнформации.Хранилище,
                       |    ХранилищеДополнительнойИнформации.Объект.Артикул КАК Артикул,
                       |    ХранилищеДополнительнойИнформации.Объект.Код КАК Код,
                       |    СкидкиНаценкиНоменклатурыСрезПоследних.Регистратор.ТипСкидкиНаценки КАК ТипСкидки
                       |ПОМЕСТИТЬ Товары
                       |ИЗ
                       |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
                       |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&ПериодСкидки, Регистратор.ТипСкидкиНаценки В (&спТипыСкидок)) КАК СкидкиНаценкиНоменклатурыСрезПоследних
                       |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура
                       |            И ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры = СкидкиНаценкиНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
                       |        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
                       |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ХранилищеДополнительнойИнформации.Объект.Ссылка
                       |ГДЕ
                       |    ЦеныНоменклатурыСрезПоследних.Номенклатура.ЧЕЧ_ГруппаДляСайта <> ЗНАЧЕНИЕ(Справочник.ЧЕЧ_ИерархияТоваровДляСайта.ПустаяСсылка)
                       |    И ЦеныНоменклатурыСрезПоследних.Валюта = &Валюта
                       |;
                       |
                       ////////////////////////////////////////////////////////////////////////////////

                       |ВЫБРАТЬ
                       |    Товары.Номенклатура,
                       |    Товары.Цена,
                       |    Товары.ЕдиницаИзмерения,
                       |    Товары.ПроцентСкидкиНаценки,
                       |    Товары.Объект,
                       |    Товары.Хранилище,
                       |    Товары.Артикул,
                       |    Товары.Код,
                       |    Товары.ТипСкидки,
                       |    ВЫБОР
                       |        КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
                       |            ТОГДА ЛОЖЬ
                       |        ИНАЧЕ ИСТИНА
                       |    КОНЕЦ КАК ЕстьНаСкладе
                       |ИЗ
                       |    Товары КАК Товары
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
                       |                ,
                       |                Номенклатура В
                       |                    (ВЫБРАТЬ
                       |                        Товары.Номенклатура
                       |                    ИЗ
                       |                        Товары КАК Товары)) КАК ТоварыНаСкладахОстатки
                       |        ПО Товары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура";
        
        Если ТолькоВНаличии Тогда
            Запрос.Текст = СтрЗаменить(Запрос.Текст, "ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(", "ПРАВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(");
        КонецЕсли;
        Запрос.УстановитьПараметр("ТипЦен"        ,    ЭтотОбъект.ТипЦен);
        Запрос.УстановитьПараметр("ДатаСреза"    ,     ТекущаяДата());
        Запрос.УстановитьПараметр("ПериодСкидки",     ТекущаяДата());
        Запрос.УстановитьПараметр("спТипыСкидок", спТипыСкидок);
        Запрос.УстановитьПараметр("Валюта",     Справочники.Валюты.НайтиПоКоду("978"));
        //

        тз=Запрос.Выполнить().Выгрузить();
        Выборка = Запрос.Выполнить().Выбрать();    
        Если (ЭтотОбъект.РазделительТСЗ = Истина) Тогда
            Разделитель = ";" ;
        ИначеЕсли (ЭтотОбъект.РазделительЗ = Истина)  Тогда
            Разделитель = "^";
        Иначе
            Разделитель = "^";
        КонецЕсли;
        ГСЧ = Новый ГенераторСлучайныхЧисел;
        Префикс=ГСЧ.СлучайноеЧисло(1,9);
        //

        ИмяФайла = "products_import" + Префикс;
        ТекстCSV = Новый ЗаписьТекста(ЭтотОбъект.Каталог + "/" + ИмяФайла + ".csv" ,КодировкаТекста.UTF8);
        // заголовки

        Если ЭтотОбъект.ВключитьЗаголовки = Истина Тогда
            СтрокаТекста = Строка("Gruppa" + Разделитель+ "Kod" +Разделитель+ "Artikul" + Разделитель + "VigrArt" + Разделитель + "Naimen" +Разделитель+ "PolnNaimen" +Разделитель+ "Edinica" +Разделитель+ "Opisanie" + Разделитель + "NeVigrOpisanie" + Разделитель + "TradeIn" + Разделитель+"CenaUE"+Разделитель + "CenaRUB" + Разделитель+"SkidkaPoAkcii" +Разделитель+"NDS" +Разделитель+ "Kurs" + Разделитель + "Nalichie");
            ТекстCSV.ЗаписатьСтроку(СтрокаТекста);
        КонецЕсли;
        // записали данные в текст

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

                    Отбор = Новый Структура("Валюта", Справочники.Валюты.НайтиПоКоду("978") );// Евро

                    ТЗКурс = РегистрыСведений.КурсыВалют.СрезПоследних(ТекущаяДата(), Отбор);
                    Если ТЗКурс.Количество() > 0 Тогда
                        Курс = Строка(ТЗКурс[0].Курс);
                    КонецЕсли;
                    
                    ЦенаРуб = Строка(Формат(Выборка.Цена*ТЗКурс[0].Курс, "ЧДЦ=2"));
                    Img = "";
                                    
                    //  TradeIn

                    Если  Строка(Выборка.ТипСкидки) = "Акция"  Тогда
                        SkidkaAkciya = Строка(Формат(ЦенаРуб - ЦенаРуб*Выборка.ПроцентСкидкиНаценки/100, "ЧДЦ=2"));    
                    ИначеЕсли Строка(Выборка.ТипСкидки) = "TradeIn"  Тогда
                        TradeIn = Строка(Формат(ЦенаРуб- ЦенаРуб*Выборка.ПроцентСкидкиНаценки/100, "ЧДЦ=2"));
                    Иначе
                        SkidkaAkciya = "0";
                        TradeIn = "0";
                    КонецЕсли;
                    
                    Если Выборка.Номенклатура.ЧЕЧ_ВыгруженоНаСайт = Истина Тогда                    
                        НеВыгружатьОписаниеНаСайт = 1;                    
                    Иначе                     
                        НеВыгружатьОписаниеНаСайт = 0;
                    КонецЕсли;

                    
                    СтрокаТекста = Строка(Родитель+Разделитель+Код+Разделитель+Артикул+Разделитель+ВыгружатьАртикул+Разделитель+Наименование+Разделитель+НаименованиеПолное+Разделитель+ЕдИзм+Разделитель+Описание+Разделитель+НеВыгружатьОписаниеНаСайт+Разделитель+TradeIn+Разделитель+ЦенаУЕ+Разделитель+ЦенаРуб+Разделитель+SkidkaAkciya+Разделитель+НДС+Разделитель+Курс+Разделитель+Выборка.ЕстьНаСкладе);
                    ТекстCSV.ЗаписатьСтроку(СтрокаТекста);
                    
                    СтарыйКод = Выборка.Номенклатура.Код;
                    
                    ВыгружаемаяНомРа = Выборка.Номенклатура.ссылка.ПолучитьОбъект();
                    ВыгружаемаяНомРа.ЧЕЧ_ВыгруженоНаСайт = Истина;
                    ВыгружаемаяНомРа.Записать();    
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
                
        //И excel добавляет Символы.ВК+Символы.ПС в конец строки.

    Иначе
        //

        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        //                                                 По выбранной группе

        спТипыСкидок = Новый Массив;
        спТипыСкидок.Добавить(Справочники.ТипыСкидокНаценок.НайтиПоНаименованию("TradeIn"));
        спТипыСкидок.Добавить(Справочники.ТипыСкидокНаценок.НайтиПоНаименованию("Акция"));
        //

        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
                       |    ЦеныНоменклатурыСрезПоследних.Цена,
                       |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
                       |    ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, 0) КАК ПроцентСкидкиНаценки,
                       |    ХранилищеДополнительнойИнформации.Объект,
                       |    ХранилищеДополнительнойИнформации.Хранилище,
                       |    ХранилищеДополнительнойИнформации.Объект.Артикул КАК Артикул,
                       |    ХранилищеДополнительнойИнформации.Объект.Код КАК Код,
                       |    СкидкиНаценкиНоменклатурыСрезПоследних.Регистратор.ТипСкидкиНаценки КАК ТипСкидки
                       |ПОМЕСТИТЬ Товары
                       |ИЗ
                       |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
                       |        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
                       |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ХранилищеДополнительнойИнформации.Объект.Ссылка
                       |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&ПериодСкидки, Регистратор.ТипСкидкиНаценки В (&спТипыСкидки)) КАК СкидкиНаценкиНоменклатурыСрезПоследних
                       |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура
                       |            И ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры = СкидкиНаценкиНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
                       |ГДЕ
                       |    ЦеныНоменклатурыСрезПоследних.Номенклатура В ИЕРАРХИИ(&Группа)
                       |    И ЦеныНоменклатурыСрезПоследних.Номенклатура.ЧЕЧ_ГруппаДляСайта <> ЗНАЧЕНИЕ(Справочник.ЧЕЧ_ИерархияТоваровДляСайта.ПустаяСсылка)
                       |    И ЦеныНоменклатурыСрезПоследних.Валюта = &Валюта
                       |
                       |ИНДЕКСИРОВАТЬ ПО
                       |    Номенклатура
                       |;
                       |
                       ////////////////////////////////////////////////////////////////////////////////

                       |ВЫБРАТЬ
                       |    Товары.Номенклатура,
                       |    Товары.Цена,
                       |    Товары.ЕдиницаИзмерения,
                       |    Товары.ПроцентСкидкиНаценки,
                       |    Товары.Объект,
                       |    Товары.Хранилище,
                       |    Товары.Артикул,
                       |    Товары.Код,
                       |    Товары.ТипСкидки,
                       |    ВЫБОР
                       |        КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
                       |            ТОГДА ЛОЖЬ
                       |        ИНАЧЕ ИСТИНА
                       |    КОНЕЦ КАК ЕстьНаСкладе
                       |ИЗ
                       |    Товары КАК Товары
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
                       |                ,
                       |                Номенклатура В
                       |                    (ВЫБРАТЬ
                       |                        Товары.Номенклатура
                       |                    ИЗ
                       |                        Товары КАК Товары)) КАК ТоварыНаСкладахОстатки
                       |        ПО Товары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура";
        
        Если ТолькоВНаличии Тогда
            Запрос.Текст = СтрЗаменить(Запрос.Текст, "ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(", "ПРАВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(");
        КонецЕсли;
        Запрос.УстановитьПараметр("ТипЦен"        ,    ЭтотОбъект.ТипЦен);
        Запрос.УстановитьПараметр("ДатаСреза"    ,     ТекущаяДата()    );
        Запрос.УстановитьПараметр("ПериодСкидки",     ТекущаяДата()    );
        Запрос.УстановитьПараметр("спТипыСкидки",     спТипыСкидок    )//ЭтотОбъект.ТипСкидки);

        Запрос.УстановитьПараметр("Группа"        ,   ГруппаТоваров);
        Запрос.УстановитьПараметр("Валюта",     Справочники.Валюты.НайтиПоКоду("978"));
        //

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

        Если (ЭтотОбъект.РазделительТСЗ = Истина) Тогда
            Разделитель = ";" ;
        ИначеЕсли (ЭтотОбъект.РазделительЗ = Истина)  Тогда
            Разделитель = "^";
        Иначе
            Разделитель = "^";
        КонецЕсли;
        ГСЧ = Новый ГенераторСлучайныхЧисел;
        Префикс=ГСЧ.СлучайноеЧисло(1,9);
        //

        ИмяФайла = "products_import" + Префикс;
        ТекстCSV = Новый ЗаписьТекста(ЭтотОбъект.Каталог + "/" + ИмяФайла + ".csv" ,КодировкаТекста.UTF8);
        // Заголовки

        Если ЭтотОбъект.ВключитьЗаголовки = Истина Тогда
            СтрокаТекста = Строка("Gruppa" + Разделитель+ "Kod" +Разделитель+ "Artikul" + Разделитель + "VigrArt" + Разделитель + "Naimen" +Разделитель+ "PolnNaimen" +Разделитель+ "Edinica" +Разделитель+ "Opisanie" + Разделитель + "NeVigrOpisanie" + Разделитель + "TradeIn" + Разделитель+"CenaUE"+Разделитель + "CenaRUB" + Разделитель+"SkidkaPoAkcii" +Разделитель+"NDS" +Разделитель+ "Kurs" + Разделитель + "Nalichie");
            ТекстCSV.ЗаписатьСтроку(СтрокаТекста);
        КонецЕсли;
        // Запись текста

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

                    /////////// Курсы Валют

                    //

                    Отбор = Новый Структура("Валюта", Справочники.Валюты.НайтиПоКоду("978") );// Евро

                    ТЗКурс = РегистрыСведений.КурсыВалют.СрезПоследних(ТекущаяДата(), Отбор);
                    Если ТЗКурс.Количество() > 0 Тогда
                        Курс = Строка(ТЗКурс[0].Курс);
                    КонецЕсли;
                    
                    ЦенаРубли = Строка(Формат(Выборка.Цена*ТЗКурс[0].Курс, "ЧДЦ=2"));
                    Img = "";
                    Если  Строка(Выборка.ТипСкидки) = "Акция"  Тогда
                        SkidkaAkciya = Строка(Формат(ЦенаРубли - ЦенаРубли*Выборка.ПроцентСкидкиНаценки/100, "ЧДЦ=2"));    
                    ИначеЕсли Строка(Выборка.ТипСкидки) = "TradeIn"  Тогда
                        TradeIn = Строка(Формат(ЦенаРубли - ЦенаРубли*Выборка.ПроцентСкидкиНаценки/100, "ЧДЦ=2"));
                    Иначе
                        SkidkaAkciya = "0";
                        TradeIn = "0";
                    КонецЕсли;
                    //

                    
                    Если Выборка.Номенклатура.ЧЕЧ_ВыгруженоНаСайт = Истина Тогда                    
                        НеВыгружатьОписаниеНаСайт = 1;                    
                    Иначе                    
                        НеВыгружатьОписаниеНаСайт = 0;
                    КонецЕсли;
                    
                    СтрокаТекста = Строка(Родитель+Разделитель+Код+Разделитель+Артикул+Разделитель+ВыгружатьАртикул+Разделитель+Наименование+Разделитель+НаименованиеПолное+Разделитель+ЕдИзм+Разделитель+Описание+Разделитель+НеВыгружатьОписаниеНаСайт+Разделитель+TradeIn+Разделитель+ЦенаУЕ+Разделитель+ЦенаРуб+Разделитель+SkidkaAkciya+Разделитель+НДС+Разделитель+Курс+Разделитель+Выборка.ЕстьНаСкладе);
                    ТекстCSV.ЗаписатьСтроку(СтрокаТекста);
                    
                    СтарыйКод = Выборка.Номенклатура.Код;
                    
                    ВыгружаемаяНомРа = Выборка.Номенклатура.ссылка.ПолучитьОбъект();
                    ВыгружаемаяНомРа.ЧЕЧ_ВыгруженоНаСайт = Истина;
                    ВыгружаемаяНомРа.Записать();
                КонецЕсли;
            Иначе
                Продолжить;
            КонецЕсли;    
        КонецЦикла;
        // выгрузили картинки

    КонецЕсли;
    Сообщить("Выгрузка завершена!");
    
КонецПроцедуры
   Evgenchik
 
87 - 22.03.18 - 17:18
у модуля, откуда создается вызов обработки, какие галочки стоят?
   Cyberhawk
 
88 - 22.03.18 - 19:03
Судя по (53), *овнокода там хватает


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует