Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как использовать данные из регистра сведений 2 страниц V   1 2 >          
martyn Подменю пользователя
сообщение 12.11.14, 12:47
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 0 раз
Рейтинг: 0

Пока Выборка.Следующий() Цикл
       ЧекККМ = Выборка.Ссылка.ПолучитьОбъект();

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


не знаю как это сделать - подскажите??? сам не программист 1С - но приходится влазить.


 ! 

Правила: 3, 12
 


Сообщение отредактировал Vofka - 12.11.14, 14:02

sava1 Подменю пользователя
сообщение 12.11.14, 13:10
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

Если в выборке одна запись, тогда

Товар.Склад = ВыборкаСклад[0].Склад


а если несколько ?

ignsv Подменю пользователя
сообщение 12.11.14, 13:15
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

Цитата(martyn @ 12.11.14, 12:47) *
Если ВыборкаСклад.Количество() > 0 Тогда
Товар.Склад = вот здесь надо присвоить данные из запроса...
КонецЕсли;


Если ВыборкаСклад.Следующий() Тогда
        Товар.Склад =СкладВыборкаДетальныеЗаписи.Склад;
Конецесли;


TipsyKID Подменю пользователя
сообщение 12.11.14, 13:16
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Запрос в цикле ?
Это очень плохо.
Надо переработать сам алгоритм получения Склада, а для этого нужен код который формирует Выборку.
Пока Выборка.Следующий() Цикл

Необходимо знать что написано до этой строки.


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

martyn Подменю пользователя
сообщение 12.11.14, 13:17
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 12.11.14, 14:10) *
Если в выборке одна запись, тогда

Товар.Склад = ВыборкаСклад[0].Склад


а если несколько ?


{Форма.Форма.Форма(39)}: Значение не является значением объектного типа (Склад)
Товар.Склад = ВыборкаСклад[0].Склад;

sava1 Подменю пользователя
сообщение 12.11.14, 13:17
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

И чем №3 отличается от №2 ?

martyn Подменю пользователя
сообщение 12.11.14, 13:18
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(TipsyKID @ 12.11.14, 14:16) *
Запрос в цикле ?
Это очень плохо.
Надо переработать сам алгоритм получения Склада, а для этого нужен код который формирует Выборку.
Пока Выборка.Следующий() Цикл

Необходимо знать что написано до этой строки.


ЗапросЧековККМ = Новый Запрос;

ЗапросЧековККМ.Текст =
"ВЫБРАТЬ
| ЧекККМ.Ссылка как Ссылка
|ИЗ
| Документ.ЧекККМ КАК ЧекККМ
|ГДЕ НЕ ЧекККМ.Проведен";

Выборка=ЗапросЧековККМ.Выполнить().Выбрать();

sava1 Подменю пользователя
сообщение 12.11.14, 13:24
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

Да, запрос надо-бы переписать в один

Что нужно получить в результате?

А что это за хрень - Товар.Склад ?

В документ так просто не впишешься

martyn Подменю пользователя
сообщение 12.11.14, 13:26
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 12.11.14, 14:22) *
Да, запрос надо-бы переписать в один


Да Бог с ним запросом - как мне из РегистраСведений.РаспределениеПродаж складу товара присвоить значение - выбранное запросом?

РаспределениеПродаж

Измерения

- Магазин
- НоменклатурнаяГруппа
- УдалитьКассаККМ
- РабочееМесто

Ресурсы
- Склад

в конфигураторе смотрю, Тип ресурса Склад - СправочникиСссылка.Склады


sava1 Подменю пользователя
сообщение 12.11.14, 13:30
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

РаспределениеПродаж - независимый? непериодический?

alex040269 Подменю пользователя
сообщение 12.11.14, 13:33
Сообщение #11

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(martyn @ 12.11.14, 13:26) *
РегистраСведений.РаспределениеПродаж складу товара присвоить значение

нельзя присвоить значение. можно только записать набор записей с заменой или без.
Набор = РегистрыСведений.Имя.СоздатьНаборЗаписей();
Набор.Отбор.ИмяРеквОтбора.Установить(Значение);
НовСтрока = Набор.Добавть();
НовСтрока.ИмяРевизита = Значние;
Набор.Записать();


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

martyn Подменю пользователя
сообщение 12.11.14, 13:38
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(alex040269 @ 12.11.14, 14:33) *
нельзя присвоить значение. можно только записать набор записей с заменой или без.
Набор = РегистрыСведений.Имя.СоздатьНаборЗаписей();
Набор.Отбор.ИмяРеквОтбора.Установить(Значение);
НовСтрока = Набор.Добавть();
НовСтрока.ИмяРевизита = Значние;
Набор.Записать();


это я буду записывать в РегистрСведений? правильно я понимаю?

мне надо наоборот, значение из регистра сведений получить и присвоить полю склад

Цитата(sava1 @ 12.11.14, 14:30) *
РаспределениеПродаж - независимый? непериодический?


независимый, непереодический

sava1 Подменю пользователя
сообщение 12.11.14, 13:41
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

Полю Склад чего - документа?

TipsyKID Подменю пользователя
сообщение 12.11.14, 13:43
Сообщение #14

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Перед тестированием , сделайте архивную копию !!!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ЧекККМТовары.*,
|    РаспределениеПродаж.Склад КАК Склад
|ИЗ
|    Документ.ЧекККМ.Товары КАК ЧекККМТовары
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаспределениеПродаж  КАК РаспределениеПродаж
|        ПО ЧекККМТовары.Номенклатура.НоменклатурнаяГруппа = РаспределениеПродаж .НоменклатурнаяГруппа
|ГДЕ
|    НЕ ЧекККМТовары.Ссылка.Проведен";

Выборка = Запрос.Выполнить().выбрать();
МакКвоВТранзакции = 500;
ТекКол = 0;
НачатьТранзакцию();
ТекДок = Неопределено;
пока Выборка.Следующий() цикл
    ТекКол = ТекКол + 1;
    Если ТекКол = МакКвоВТранзакции тогда
        ЗафиксироватьТранзакцию();
        НачатьТранзакцию();
        ТекКол = 0;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(ТекДок) тогда
        ТекДок = Выборка.Ссылка.ПолучитьОбъект();
                ТекДок.Товары.Очистить();
    ИначеЕсли ТекДок <> Выборка.Ссылка тогда
        ТекДок.Записать();
        ТекДок = Выборка.Ссылка.ПолучитьОбъект();
                ТекДок.Товары.Очистить();

    КонецЕсли;
        НоваяСтрока = ТекДок.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка,,"Ссылка,НомерСтроки");

Конеццикла;
ЗафиксироватьТранзакцию();


Сообщение отредактировал TipsyKID - 12.11.14, 13:47


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

martyn Подменю пользователя
сообщение 12.11.14, 13:47
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 12.11.14, 14:41) *
Полю Склад чего - документа?


Товаров в документе - сам принцип объясните, как обрашаться к значению Реквизита в РегистреСведений


sava1 Подменю пользователя
сообщение 12.11.14, 13:49
Сообщение #16

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

(14) Вполне прилично.
Выборку сгруппировать по Документ,строка и перебирать по группировкам - тогда не надо отслеживать ТекДок

Сообщение отредактировал sava1 - 12.11.14, 13:50

TipsyKID Подменю пользователя
сообщение 12.11.14, 13:51
Сообщение #17

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Насколько я понял, Вам необходимо перебрать все не проведенные чекиККМ и для табличной части Товары проставить Склад , такой какой указан для номенклатурной группы из регистра "РаспределениеПродаж".
Если это так, то используйте мой код ( сделав архивную копию )


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

sava1 Подменю пользователя
сообщение 12.11.14, 13:52
Сообщение #18

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

Цитата(martyn @ 12.11.14, 13:47) *
как обрашаться к значению Реквизита в РегистреСведений


К регистру - прочитать - запросом, записать - набор записей/менеджер ....
К документу - для изменения нужно иметь обЪект, а не выборку

TipsyKID Подменю пользователя
сообщение 12.11.14, 13:53
Сообщение #19

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Цитата(sava1 @ 12.11.14, 13:49) *
(14) Вполне прилично.
Выборку сгруппировать по Документ,строка и перебирать по группировкам - тогда не надо отслеживать ТекДок

Уже понял , что надо было сделать группировку на этапе когда переписал запрос под не существующий у меня регистр , лень было, если честно, вручную запрос править, легче отловить документ, но Вы правы, так было - бы правильней.


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

sava1 Подменю пользователя
сообщение 12.11.14, 13:57
Сообщение #20

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

Цитата(TipsyKID @ 12.11.14, 13:43) *
|    ЧекККМТовары.*,
|    РаспределениеПродаж.Склад КАК Склад


Там не получиться два поля Склад ?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 31.05.24, 9:57
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!