|
Выгрузка прайса 1с8.2 | ☑ | ||
---|---|---|---|---|
0
Relander
13.02.12
✎
20:45
|
Всем привет.
Я создаю новую конфу, подскажите, как настроить автоматическую выгрузку прайса товаров в текстовый файл (используя регламентное задание), на 1с8.2? Там вроде отдельно отчет нужно создавать и сохранить как внешнюю обработку. |
|||
1
Amra
13.02.12
✎
20:46
|
Не рановато за суперпупермега поделку взялся?
|
|||
2
Maniac
13.02.12
✎
20:51
|
(0) пиши модуль.
|
|||
3
Relander
13.02.12
✎
21:21
|
Взялся сделать это через обработку (в управляемом режиме). В форме создал кнопку и прописал параметры:
&НаСервере Процедура ВыполнитьПриНажатии(Команда) Текст = Новый ТекстовыйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Номенклатура.Наименование, | ЦеныСрезПоследних.Цена |ИЗ | РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000003")); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ДобавитьСтроку(Выборка.Номенклатура + Символы.Таб + Выборка.Цена); КонецЦикла; Текст.Записать("G:\1.txt"); КонецПроцедуры Но никаких действий в пользовательской части не происходит, ни какой ошибки не выдает. Подскажите в чем может быть причина? |
|||
4
Amra
13.02.12
✎
22:36
|
Точно рано ты за свою конфу засел. Даже не знаю с чего начать "помогать"
|
|||
5
Maniac
13.02.12
✎
22:43
|
УТ11? ща как раз занимаюсь подобным. в купе до автоматической рассылки по почте клиентам.
Плюс вполне возможно формирование на каждого клиента своего прайса исходя из соглашений. гемморойная работенка... |
|||
6
Maniac
13.02.12
✎
22:45
|
(3) сделай для проверки ТЗ в которую выгружай запрос и проверяй что у тебя.
|
|||
7
Maniac
13.02.12
✎
22:46
|
Текст.ДобавитьСтроку(Выборка.Номенклатура + Символы.Таб + Выборка.Цена);
где у тебя в запросе есть Выборка.Номенклатура в упор не вижу. Наименование да. и то без указания псевдонима. |
|||
8
Maniac
13.02.12
✎
22:48
|
Выводи еще код, артикул, группу, категорию и прочее. а то из за таких чудо прайсов потом клиенты волосы рвут часами херачась над тем чтобы прайс загрузить.
|
|||
9
Relander
13.02.12
✎
23:04
|
Да с УТ11
)) В (обычном режиме) выгружается только цена, с наименованием задолбался биться) |
|||
10
Maniac
13.02.12
✎
23:12
|
так ты тормозишь и все. код не читаешь свой в котором ошибки.
|
|||
11
Maniac
13.02.12
✎
23:12
|
82 такая штука что иошибки не будет выдавать...
|
|||
12
Relander
13.02.12
✎
23:18
|
Так все выгружает, только каряво
Процедура КнопкаВыполнитьНажатие(Кнопка) Текст = Новый ТекстовыйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Номенклатура, | ЦеныСрезПоследних.Номенклатура.Наименование, | ЦеныСрезПоследних.Цена |ИЗ | РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен", РегистрыСведений.Цены); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ДобавитьСтроку(Выборка.Номенклатура.Наименование + Символы.Таб + Выборка.Цена); КонецЦикла; Текст.Записать("G:\1.txt"); КонецПроцедуры Получается : Хлеб 20 Булка 13 Бисквит 12 Овсяное 80 С орехами 120 Конфеты 150 Торты 350 |
|||
13
Ayvengo
13.02.12
✎
23:19
|
(3) | ЦеныСрезПоследних.Номенклатура.Наименование,
сделай так | ЦеныСрезПоследних.Номенклатура.Наименование КАК Номенклатура, и будет тебе счастье :) |
|||
14
Ayvengo
13.02.12
✎
23:20
|
>> Текст.ДобавитьСтроку(Выборка.Номенклатура.Наименование + Символы.Таб + Выборка.Цена);
Так не стоит делать :) можно просто сделать Текст.ДобавитьСтроку(Выборка.Наименование + Символы.Таб + Выборка.Цена); |
|||
15
Ayvengo
13.02.12
✎
23:21
|
Запрос.УстановитьПараметр("НаДату", ТекущаяДата());
Запрос.УстановитьПараметр("ТипЦен", РегистрыСведений.Цены); И еще у тебя эти параметры не работают в запросе :) |
|||
16
Relander
13.02.12
✎
23:45
|
Пусть даже с ошибками, но выгружает, а в управляемом режиме у меня ничего не работает
&НаСервере Процедура ПриОткрытии(Отказ) Текст = Новый ТекстовыйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Номенклатура, | ЦеныСрезПоследних.Номенклатура.Наименование, | ЦеныСрезПоследних.Цена |ИЗ | РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен", РегистрыСведений.Цены); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ДобавитьСтроку(Выборка.Номенклатура.Наименование + Символы.Таб + Выборка.Цена); КонецЦикла; Текст.Записать("G:\1.txt"); КонецПроцедуры |
|||
17
Ayvengo
13.02.12
✎
23:51
|
&НаСервере
Процедура ПриОткрытии(Отказ) Текст = Новый ТекстовыйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.Цены.СрезПоследних(&НаДату,&ТипЦен) КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоКоду(УКАЖИ СВОЙ КОД)); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ДобавитьСтроку("" + Выборка.Номенклатура + Символы.Таб + Выборка.Цена); КонецЦикла; Текст.Записать("G:\1.txt"); КонецПроцедуры Так должно работать без ошибок, правда не помню правильно ли запятые поставил в СрезПоследних(&НаДату,&ТипЦен) |
|||
18
Relander
14.02.12
✎
00:00
|
(УКАЖИ СВОЙ КОД) наверно звучит глупо, но где этот код взять?
|
|||
19
Ayvengo
14.02.12
✎
00:01
|
(18) открываешь справочник "Типы цен номенклатуры" и там есть колонка "Код" от туда и берешь, к примеру "000000003" (в кавычках, не забываем) :)
|
|||
20
Relander
14.02.12
✎
00:12
|
мда звучало глупо), все же в управляемом приложении у меня не хочет работать (вообще ничего не выдает), причем ни при ПриОткрытии(Отказ), ни через кнопку созданную мной Процедура ВыполнитьПриНажатии(Команда)
|
|||
21
Ayvengo
14.02.12
✎
00:23
|
&НаКлиенте
Процедура ВыполнитьПриНажатии(Команда) ЗаписатьНаДиск(); КонецПроцедуры &НаСервере Процедура ЗаписатьНаДиск() Текст = Новый ТекстовыйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.Цены.СрезПоследних(&НаДату,&ТипЦен) КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоКоду(УКАЖИ СВОЙ КОД)); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ДобавитьСтроку("" + Выборка.Номенклатура + Символы.Таб + Выборка.Цена); КонецЦикла; Текст.Записать("G:\1.txt"); КонецПроцедуры --- Первое - процедура ПриОткрытии выполняется НаКлиенте. Второе - кнопка нажимается НаКлиенте Третье - запрос выполняется НаСервере Тебе нужно понять что где можно делать в управляемом приложении :) |
|||
22
Relander
14.02.12
✎
10:27
|
Разобрался, спасибо. Пробую установить связь с регламентым заданием и обработкой, через общий модуль (в управляемом режиме)
&;НаКлиенте Процедура ВыполнитьПриНажатии(Команда) ЗаписатьНаДиск(); ОбщийМодуль.ВыполнитьНажатие(); КонецПроцедуры ОбщийМодуль Процедура ВыполнитьНажатие() Экспорт Обработки.Прайс.ПолучитьФорму(Форма.КомандыФормы.Выполнить); КонецПроцедуры но выходит ошибка: {ОбщийМодуль.ОбщийМодуль.Модуль(3,31)}: Переменная не определена (Форма) Обработки.Прайс.ПолучитьФорму(<<?>>Форма.КомандыФормы.Выполнить); (Проверка: Сервер) |
|||
23
Ayvengo
14.02.12
✎
10:33
|
(22) не разобрался :P
регламентные задания выполняются на сервере, соответственно форме там не место ;) В регламентном задании выполняй только &НаСервере Процедура ЗаписатьНаДиск() Текст = Новый ТекстовыйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.Цены.СрезПоследних(&НаДату,&ТипЦен) КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоКоду(УКАЖИ СВОЙ КОД)); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ДобавитьСтроку("" + Выборка.Номенклатура + Символы.Таб + Выборка.Цена); КонецЦикла; Текст.Записать("G:\1.txt"); КонецПроцедуры Советую добавить общим модуль, модуль должен иметь флажок - вызов сервера. И еще, у тебя режим файловый или серверный? |
|||
24
Relander
14.02.12
✎
10:41
|
файловый
|
|||
25
Relander
14.02.12
✎
10:53
|
В Радченко показан пример только через общий модуль, флажок - вызов сервера в общем модуле я поставил, а вот "В регламентном задании выполняй только" это как?
|
|||
26
Ayvengo
14.02.12
✎
11:03
|
(24) в файловом варианте тебе придется всегда держать запущенный клиент 1Ски, чтобы задания выполнялись.
(25) Добавляешь регламентное задание и указываешь там имя метода (удобно лупой добавлять, 3 точки мне не удобно) он тебе сразу откроет модуль, который ты выбрал и создаст там процедуру с названием твоего регламентного задания, вот туда и можешь засунуть текст из процедуры либо ссылку на эту процедуру |
|||
27
Relander
14.02.12
✎
13:36
|
Отлично, работает только все равно каряво
Процедура ЗаписатьНаДиск() Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Запуск регламентного задания Выгрузка прайс - листа " + ТекущаяДата(); Сообщение.Сообщить(); Текст = Новый ТекстовыйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Номенклатура, | ЦеныСрезПоследних.Номенклатура.Наименование, | ЦеныСрезПоследних.Цена |ИЗ | РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); Запрос.УстановитьПараметр("Цены", Справочники.Номенклатура.НайтиПоКоду("000000003")); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ДобавитьСтроку(" " + Выборка.Номенклатура + Символы.Таб + Выборка.Цена); КонецЦикла; Текст.Записать("G:\1.txt"); КонецПроцедуры цены не друг под другом |
|||
28
Ayvengo
14.02.12
✎
13:38
|
поменяй
Текст.ДобавитьСтроку(" " + Выборка.Номенклатура + Символы.Таб + Выборка.Цена); на Текст.ДобавитьСтроку(" " + Выборка.Номенклатура + Символы.Таб + Выборка.Цена + Символы.ПС); |
|||
29
Ayvengo
14.02.12
✎
13:39
|
Хотя, что-то фигня какая-то, добавить строку должен вставлять символ ПС автоматом
|
|||
30
Ayvengo
14.02.12
✎
13:49
|
Аль ты хочешь таблицу типа Excel? :)
|
|||
31
Relander
14.02.12
✎
17:07
|
Да нет в txt
Текст.ДобавитьСтроку(" " + Выборка.Номенклатура + Символы.Таб + Выборка.Цена + Символы.ПС); цифры прилепляются к Наименованию и увеличивается интервал |
|||
32
Ayvengo
14.02.12
✎
17:26
|
(31) >> цифры прилепляются к Наименованию и увеличивается интервал
не понятно |
|||
33
155153144627
14.02.12
✎
17:29
|
Так вычисляй длину наименования добавляй пробелов до определенной длины, например 15 и потом добавляй цену.
Или вычисляй длину наименования и в зависимости от длины добавляй количестов Табов, если длина наименования меньше 8 то два Таба, если больше 8 то один. При условии что наименование не длинее 16. Если больше, то с тремя табами. |
|||
34
Relander
14.02.12
✎
18:39
|
Добавление пробелов результата не дает, все цифры перемещаются одновременно
Получается : Хлеб 20 Булка 13 Бисквит 12 Овсяное 80 С орехами 120 Конфеты 150 Торты 350 |
|||
35
Relander
14.02.12
✎
18:41
|
(32) имел ввиду что расстояние между наименованиями увеличивается
|
|||
36
Ayvengo
14.02.12
✎
18:56
|
(35) само собой :) а не проще в таблицу выводить?
|
|||
37
n koretsky
14.02.12
✎
20:04
|
(36) а зачем?
|
|||
38
Ayvengo
14.02.12
✎
20:33
|
(37) что бы красиво было, не?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |