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