|
Как из общего модуля запустить обработку передав ей параметры | ☑ | ||
---|---|---|---|---|
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), *овнокода там хватает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |