Имя: Пароль:
1C
1С v8
Как из общего модуля запустить обработку передав ей параметры
0 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
Хотя предполагаю, что нужно из справочника внешних обработок
4 sidalexsandr
 
22.03.18
11:40
(3) Обработка не внешняя и входит в состав конфигурации
5 hhhh
 
22.03.18
11:41
(4) тогда выкинь слово "Внешние"
6 sidalexsandr
 
22.03.18
11:49
(5) То есть так
Обработка = Создать(имяФайла)
Обработка.МойМетод(Параметры)

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

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


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

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

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

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

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

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

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

Процедура ВыполнитьВыгрузку() Экспорт
//Здесь пишешь код выгрузки
КонецПроцедуры
74 Lexey_
 
22.03.18
16:22
(72) обычные формы же
75 Lexey_
 
22.03.18
16:22
(67) ну, а говоришь "нет возможности указать процедуру", указал же
76 sidalexsandr
 
22.03.18
16:23
(74) Формы обычные
77 Evgenchik
 
22.03.18
16:23
Значит еще легче
78 sidalexsandr
 
22.03.18
16:24
(75) Это указание в общем модуле. А надо вручную из формы обработки вызвать процедуру модуля обработки и такое как я понимаю не возможно
79 Evgenchik
 
22.03.18
16:25
(78) Тебе и 20 много на испытательный, если читать не умеешь
80 Lexey_
 
22.03.18
16:25
(78) то есть, всё это время, ты не слушал, что тебе тут говорили?
81 Kondarat
 
22.03.18
16:29
(78) Еще раз: как в модуле обработки ВыгрузкаДляСайта_csv определена процедура, которая осуществляет выгрузку?
82 sidalexsandr
 
22.03.18
16:38
(81) Да
83 Kondarat
 
22.03.18
16:39
(82) Что "Да". Я спросил КАК, а не ГДЕ.
84 Lexey_
 
22.03.18
16:39
(82) вот те жестишь)))похлеще Ливингстара
85 Evgenchik
 
22.03.18
16:47
Покажи КОД модуля обработки ВыгрузкаДляСайта_csv
86 sidalexsandr
 
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.ЗаписатьСтроку(СтрокаТекста);
                    
                    СтарыйКод = Выборка.Номенклатура.Код;
                    
                    ВыгружаемаяНомРа = Выборка.Номенклатура.ссылка.ПолучитьОбъект();
                    ВыгружаемаяНомРа.ЧЕЧ_ВыгруженоНаСайт = Истина;
                    ВыгружаемаяНомРа.Записать();
                КонецЕсли;
            Иначе
                Продолжить;
            КонецЕсли;    
        КонецЦикла;
        // выгрузили картинки
    КонецЕсли;
    Сообщить("Выгрузка завершена!");
    
КонецПроцедуры
87 Evgenchik
 
22.03.18
17:18
у модуля, откуда создается вызов обработки, какие галочки стоят?
88 Cyberhawk
 
22.03.18
19:03
Судя по (53), *овнокода там хватает
Ошибка? Это не ошибка, это системная функция.