Имя: Пароль:
1C
 
Обработка переноса данных из ТЧ справочника в независимый регистр сведений
,
0 malex18
 
11.08.17
16:12
Подскажите как сделать обработку переноса данных
1 rudnitskij
 
11.08.17
16:16
Файл - Новый - Внешняя обработка...
2 rudnitskij
 
11.08.17
16:17
Регистр создали хоть уже?
3 Nolan
 
11.08.17
16:18
(0) в цикле для каждой строки ТЧ делай новую запись регистра
4 ДядяМитяй
 
11.08.17
16:23
Переходите с 3.0 на 2.0? Регистр Контактная информация? ))))
Если разовая операция - однозначно проще через табличный документ.
5 malex18
 
11.08.17
16:26
Старший Товарищ скопировал этот код и сказал"попробуй"
в итоге код записывает в регистр только менеджеров.а суму продажи процент вознараждения не пишет


Процедура ОборотСуммаПриИзмененииНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Менеджеры.Ссылка КАК Ссылка,
        |    ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) КАК СуммаОборот
        |    ПОМЕСТИТЬ ОборотыМенеджеровВЗаданномПериоде
        |ИЗ
        |    Справочник.Менеджеры КАК Менеджеры
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПродажиОбороты
        |        ПО (ПродажиОбороты.Менеджер = Менеджеры.Ссылка);
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ЕСТЬNULL(ТабМенеджеры.ПроцентВознаграждения, 0) КАК ПроцентВознаграждения,
        |    ОборотыМенеджеровВЗаданномПериоде.Ссылка КАК Ссылка,
        |    ОборотыМенеджеровВЗаданномПериоде.СуммаОборот * ЕСТЬNULL(ТабМенеджеры.ПроцентВознаграждения,0) / 100 КАК Вознаграждение
        |ПОМЕСТИТЬ НастройкиВознагражденияНижеСуммыОборота
        |ИЗ
        |    ОборотыМенеджеровВЗаданномПериоде КАК ОборотыМенеджеровВЗаданномПериоде
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Менеджеры.НастройкаВознаграждения КАК ТабМенеджеры
        |        ПО (ОборотыМенеджеровВЗаданномПериоде.Ссылка = ТабМенеджеры.Ссылка
        |            И ОборотыМенеджеровВЗаданномПериоде.СуммаОборот >= ЕСТЬNULL(ТабМенеджеры.СуммаПродажЗаМесяц, 0));
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    НастройкиВознагражденияНижеСуммыОборота.Ссылка КАК Ссылка,
        |    МАКСИМУМ(НастройкиВознагражденияНижеСуммыОборота.ПроцентВознаграждения) КАК ПроцентВознаграждения,
        |    МАКСИМУМ(НастройкиВознагражденияНижеСуммыОборота.Вознаграждение) КАК Вознаграждение
        |ИЗ
        |    НастройкиВознагражденияНижеСуммыОборота КАК НастройкиВознагражденияНижеСуммыОборота
        |
        |СГРУППИРОВАТЬ ПО
        |    НастройкиВознагражденияНижеСуммыОборота.Ссылка";
    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.Период));
    Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца(Объект.Период));
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НаборЗаписей = РегистрыСведений.НастройкаВознаграждения.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Менеджеры.Установить(ВыборкаДетальныеЗаписи.Ссылка);
        НаборЗаписей.Отбор.Период.Установить(НачалоМесяца(Объект.Период));
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.Период =  НачалоМесяца(Объект.Период);
        НоваяЗапись.Менеджеры = ВыборкаДетальныеЗаписи.Ссылка;
        НоваяЗапись.СуммаПродаж = ВыборкаДетальныеЗаписи.Вознаграждение;
        НоваяЗапись.ПроцентВознаграждения = ВыборкаДетальныеЗаписи.ПроцентВознаграждения;
        НаборЗаписей.Записать();
    КонецЦикла;
6 malex18
 
11.08.17
16:26
*сумму
7 rudnitskij
 
11.08.17
16:29
(6) попробуйте использовать менеджер записей
8 rudnitskij
 
11.08.17
16:30
МенеджерЗаписей = РегистрыСведений.НастройкаВознаграждения.СоздатьМенеджерЗаписей();
МенеджерЗаписей.Измерение = Измерение;
МенеджерЗаписей.Ресурс = Ресурс;
МенеджерЗаписей.Записать();
9 malex18
 
11.08.17
16:45
Не выходит.Может запрос неправильный сделал?что там может быть не так?
10 rudnitskij
 
11.08.17
16:45
(9) вы мой код так и вставили? без изменений?
11 malex18
 
11.08.17
16:46
Нет, изменил)
12 welwel
 
11.08.17
16:47
Если уж о всех вариантах говорить, то КД 2
13 malex18
 
11.08.17
16:49
что такое "КД2"?
14 rudnitskij
 
11.08.17
16:53
(11) можно ваш код посмотреть? Без текста запроса
15 Ёпрст
 
11.08.17
16:54
(9) проверь, что сюда устанавливаешь:
    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.Период));
    Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца(Объект.Период));
16 malex18
 
11.08.17
16:57
Это все,что есть в форме обработки

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

&НаКлиенте
Процедура Перенести(Команда)
        ОборотСуммаПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Объект.Период = ТекущаяДата();
КонецПроцедуры
17 rudnitskij
 
11.08.17
16:58
(16) как выглядит код, который я предлагал и вы изменили под себя? Вы скрываете его чтоле?
18 rudnitskij
 
11.08.17
16:59
как мы найдем ошибку в коде который не видим?
19 malex18
 
11.08.17
17:00
Результат же не изменился.вернулся к набору записей.так указали.через набор делать.значит в запросе видимо что-то не так
20 rudnitskij
 
11.08.17
17:02
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписей = РегистрыСведений.НастройкаВознаграждения.СоздатьМенеджерЗаписей();
        МенеджерЗаписей.Период = НачалоМесяца(Объект.Период);
        МенеджерЗаписей.Менеджеры = ВыборкаДетальныеЗаписи.Ссылка;
        МенеджерЗаписей.СуммаПродаж = ВыборкаДетальныеЗаписи.Вознаграждение;
        МенеджерЗаписей.ПроцентВознаграждения = ВыборкаДетальныеЗаписи.ПроцентВознаграждения;
        МенеджерЗаписей.Записать();
    КонецЦикла;

вот это вот не работает?
21 malex18
 
11.08.17
17:08
{Обработка.ПереносДанных.Форма.Форма.Форма(42)}: Метод объекта не обнаружен (СоздатьМенеджерЗаписей)
        МенеджерЗаписей = РегистрыСведений.НастройкаВознаграждения.СоздатьМенеджерЗаписей();
22 malex18
 
11.08.17
17:08
|    НастройкиВознагражденияНижеСуммыОборота.Ссылка";
    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.Период));
    Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца(Объект.Период));
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписей = РегистрыСведений.НастройкаВознаграждения.СоздатьМенеджерЗаписей();
        МенеджерЗаписей.Период = НачалоМесяца(Объект.Период);
        МенеджерЗаписей.Менеджеры = ВыборкаДетальныеЗаписи.Ссылка;
        МенеджерЗаписей.СуммаПродаж = ВыборкаДетальныеЗаписи.Вознаграждение;
        МенеджерЗаписей.ПроцентВознаграждения = ВыборкаДетальныеЗаписи.ПроцентВознаграждения;
        МенеджерЗаписей.Записать();
    КонецЦикла;
23 rudnitskij
 
11.08.17
17:09
у вас какое приложение?
24 rudnitskij
 
11.08.17
17:09
упр или обычное?
25 malex18
 
11.08.17
17:09
Простите, не силен...)
разницу не понимаю пока что
26 rudnitskij
 
11.08.17
17:10
(25) в модуле формы есть слова &НаКлиенте, &НаСервере ?
27 rudnitskij
 
11.08.17
17:11
в справочниках, документах...
28 malex18
 
11.08.17
17:11
у товарища код взял весь.у товарища работает все правильно.
значит в запросе что-то не так скорее всего.может названия там не совпадают.но ошибок не выдает.странно
29 malex18
 
11.08.17
17:12
да есть эти слова)
30 rudnitskij
 
11.08.17
17:12
тогда процедура заполнения регистра должна выполняться на сервере
31 rudnitskij
 
11.08.17
17:13
(30) может у вас регистр не независимый, тогда менеджер записи не сработает
32 malex18
 
11.08.17
17:13
ну да. это все на сервере
33 rudnitskij
 
11.08.17
17:14
нажмите в предприятии Справка - О программе
Что там у вас написано?
34 malex18
 
11.08.17
17:14
регистр независимый точно
35 malex18
 
11.08.17
17:15
1С:Предприятие 8.3 (8.3.8.2137)
36 malex18
 
11.08.17
17:15
я же говорю,у товарища работает данный код.скопировал к себе.не работает
37 rudnitskij
 
11.08.17
17:16
(35) больше ничего не написано? ни одной букві?
38 malex18
 
11.08.17
17:17
Стажировка 1
Файловый (без сжатия)
C:\Users\1\Documents\Стажировка 1
Тонкий клиент
Информационная база: русский (Россия), Сеанс: русский
Текущая:
Локальный HASP4 ORGL8 10, получило клиентское приложение
39 malex18
 
11.08.17
17:17
Больше ничегО)
40 malex18
 
11.08.17
17:17
Платформа: 1С:Предприятие 8.3 (8.3.8.2137)
Конфигурация: Конфигурация
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский
Вариант интерфейса: Такси
41 rudnitskij
 
11.08.17
17:21
(40) попробуйте вариант из (5), но без отбора по периоду
42 malex18
 
11.08.17
17:23
Снова ничего не изменилось.
В регистр уходят все менеджеры,которые у меня есть.а сумма продажи процент вознаграждения им не записывается
43 Ёпрст
 
11.08.17
17:25
(42) нету продаж по менеджерам за период
44 h-sp
 
11.08.17
17:28
(42) может

     |            И ОборотыМенеджеровВЗаданномПериоде.СуммаОборот >= ЕСТЬNULL(ТабМенеджеры.СуммаПродажЗаМесяц, 0));

не выполняется.

ОборотыМенеджеровВЗаданномПериоде.СуммаОборот маленькая, поэтому вознаграждение не положено. не заработали.